- 博客(76)
- 收藏
- 关注
原创 RSA加密---java和node兼容版(可直接复制使用)
本来项目的后端是node,里面登录接口用的是后端生成RSA公钥和私钥,公钥给前端网页用来加密,node后端解密,一切很和谐,突然要我上一个Android应用,结果java和node两边就是无法通配。注意:java代码中的公钥不需要开头和结尾的【-----BEGIN PUBLIC KEY-----】这个,只需要保留中间的密钥就好,且不要留有换行符【\n】。:默认的RSA加解密格式不一样,node默认的是DEFAULT_ENCRYPTION_SCHEME = '', 而java中默认的是。
2024-04-29 20:32:11 384 1
原创 超简单的vue实现生成二维码并下载为图片(可直接复制使用)
因为一些需求需要生成大量的二维码,用于用户核销使用,这里就用了一个比较使用的多的一个组件vue-qr.效果。
2024-04-25 11:38:17 399 1
原创 vue+node使用RSA非对称加密,实现登录接口加密密码
登录接口,密码这种重要信息传输,必须加密处理。这里就可以使用RSA非对称加密,公钥和私钥。:给前端,公钥可以暴露出来,没有影响,因为公钥加密的数据私钥才能解密。:留在后端,用于解密。
2024-04-19 14:37:58 335
原创 java中List数组深度拷贝,修改新数组不影响原数组内容
使用Java 8的Stream API,可以使用。方法将流中的元素收集到新的List中。方法将原数组转换为流,然后使用。
2024-03-29 15:22:23 196
转载 解决Android软键盘在全屏下设置adjustResize无效的问题(转载)
在全屏模式下,即使将activity的。在键盘显示时它未将Activity的Screen向上推动,所以你Activity的view的根树的尺寸是没有变化的。在这种情况下,你也就无法得知键盘的尺寸,对根view的作相应的推移。全屏下的键盘无法Resize的问题从2.1就已经存在了,直到现在google还未给予解决。有人已经封装好了该类,你只需引用就OK了,我们来看下这个类。
2023-12-22 15:20:56 212
原创 Android年份选择器(超简单-可直接复制使用)
通过点击textview触发年份选择器dialog显示,选中年份后,更新到textview。隐藏月份和天数即可(但仍需给一个初始化数据)。
2023-12-20 14:45:42 663
原创 Android通过listview实现输入框自定义提示栏(代替AutoCompleteTextView自动完成文本框)
本人因为一些需求初次接触android,需要实现一个类似android自带的AutoCompleteTextView(自动完成文本框),但和其不同的是通过后端接口直接筛选数据(自己的分词处理规则),然后返回前端直接显示即可。这个listview“提示框”在输入框获得焦点的情况下才显示,并且每次输入框内内容变化时,触发网络请求更新“提示框”显示的内容,在用户点击了“提示框”中的item后,将item的内容替换输入框当前内容,并关闭提示框。让listview定位在edittext输入框的底部,并通过。
2023-12-15 16:03:14 872
原创 Android超简单实现-即时更新Toast(可直接复制)
第一步、封装个工具类ToastUtil.class(可直接复制拿走)第二步、在activity中直接调用即可(就这么简单)
2023-12-01 15:33:02 429
原创 Android中实现RecyclerView,并对item及其多个子控件的点击事件监听
如下图所示,在对RecyclerView中item及其多个子组件都需要不同的点击事件监听处理,需要使用到adapter的OnItemClickListener和OnItemChildClickListener两个对象。
2023-11-29 17:17:56 1859
原创 获取ip属地(ip2region本地离线包-超简单)
结果突然看到了这个【ip2region】开源项目,离线识别ip属地,精度自己测试了好多个国家和地区的ip,效果还可以,有98%的成功率。最近有涉及要显示ip属地,但我想白嫖,结果就是白嫖的api接口太慢了,要延迟3到4秒左右,很影响体验,而且不一定稳定。以下代码可直接复制使用,只需要看一下离线包的地址是否需要更改即可。这里因为我的后端用的是node,就用node的代码做示例。ip2region原作者开源项目地址。
2023-11-23 17:07:33 1162
原创 left join查询耗时太慢,添加索引解决问题
因为最近自己用的小app越用感觉加载越慢,以为是自己app开发逻辑出现问题了,结果才发现是自己很早以前的代码用到的是left join多表联查,以前因为数据少,所以没有感觉,现在数据量稍微一大,耗时就非常严重了。如下图所示,3张表中有一个是日志表,已经有几w条数据了,所以耗时已经达到了2.8s。主键不需要添加索引,除此之外,对使用left join的on进行对比时的两个字段都进行新建索引(如上图的ni.notice_id、n.trace_id、rl.trace_id),而且这些字段的类型要保持一致。
2023-11-22 16:09:53 1872
原创 vue实现聊天栏定位到最底部(超简单、可直接复制使用)
通过watch监听聊天内容的加载,一旦加载完成或者数据更新触发vue的数据监听时,就重新修改【滚动滑钮到滚动条顶部的距离=滚动条的高度】,从而实现定位到底部的效果。这里的messnowList是我的消息储存集合,用于判断数据变化,这个可以根据你实际情况修改,通过id绑定刚才的聊天框div,然后修改实现定位底部。新建一个div(聊天框,如下),给他一个id,一会要用到。
2023-11-21 10:28:00 1016
原创 Android高版本后台开机检测自启动service(解决did not then call Service.startForeground())
1、新建一个Receiver,继承BroadcastRecevier类,用于开机广播,启动service服务。非android工程师,单纯个人临时有需要,赶时间借鉴很多文章做出来的,单纯记录备忘下。
2023-11-08 17:17:16 565
原创 nodejs使用express框架,给每次http请求添加traceId
在Express中,中间件是一个函数,它可以访问请求对象(req)、响应对象(res)和应用程序中的下一个中间件函数(next)。可以使用uuid模块生成唯一标识符(traceid)。
2023-11-02 10:23:33 155
原创 nodejs中将字符串数组转换成mysql语句IN子查询的(数组)格式
【代码】nodejs中将字符串数组转换成mysql语句IN子查询的(数组)格式。
2023-10-21 11:36:08 166
原创 Springboot利用CompletableFuture异步执行线程(有回调和无回调)
项目中总会有需要异步执行来避免浪费时间资源的情况,这就需要异步操作。异步又分两种:1、无回调:有一些执行过程对用户而言不需要反馈回调,只需要自己执行即可,且执行过程时间较长(某些第三方接口,如发送短信验证码、查取ip属地等等),如果同步执行,势必会影响到用户体验,这时候就可以使用CompletableFuture.runAsync()方法了。2、有回调:在执行异步操作结束后,需要获得异步方法返回的值,然后再回调给用户展示,这时候就需要用到CompletableFuture.supplyAsync()
2023-10-12 16:11:37 2627
原创 Springboot给每个接口设置traceId,并添加到返回结果中
这个是可选项,用于生成唯一uid,我人懒,就直接用这个工具,你们要自定义uid格式的,就可以不用导入。的实现,保存在这里的变量会绑定到某个请求线程,于是在该请求的线程里的日志代码都可以使用设入的变量。因为要给每一个请求都利用所以建议利用MDC绑定traceId,所以需要用拦截器拦截每一个请求。slf4j有个MDC的类,是。
2023-10-11 12:00:39 807
原创 Springboot全局异常和自定义异常
super(msg);/*** 如果抛出的的是ServiceException,则调用该方法* @param e 服务异常*/// sql执行判断try{
2023-10-10 18:53:09 218
原创 Springboot使用Aop保存接口请求日志到mysql(及解决Interceptor拦截器中引用mapper和service为null)
但是项目如果需要记录这些被拦截的非法请求的话,目前暂时的解决方法是在Interceptor拦截器所拦截非法的请求之前再使用前面的RequestLogMapper再重新进行保存一次(只针对非法请求,因为合法请求会通过Aop日志拦截)。当我们项目中同时使用Interceptor拦截器和aop日志拦截时,被Interceptor拦截器所拦截的请求不会通过aop日志保存到数据库(防止恶意爬虫)。
2023-10-06 17:19:27 707
原创 Springboot实现websocket(连接前jwt验证token)
二、因为springboot的websocket连接时不会显示header信息,也就无法拿到cookie中的token信息,需要在连接前处理,新建一个WebSocketConfig.class,在连接前做一个jwt的token验证,并获取用户的账号信息添加到session中。(关于jwt的token验证工具类我这里就不详细讲了),用户连接服务器weksocket前,需经过jwt的token验证(token中包含账号信息),验证合法后,才可以于服务器正常交互。一、配置依赖(pom.xml)
2023-09-27 16:42:36 3371 9
原创 springboot实现发送邮箱验证码
在邮箱官网开放SMTP授权,获取相应密钥,才可以进行发送邮件。第二步、在application.yml中配置邮箱连接信息。这里以网易163邮箱为例,登录邮箱后,依次点击“” ,然后开启SMTP服务。第三步、新建一个controller接口类。第一步、在pom.xml中添加邮箱依赖。,一定要记下来,一会会用到。
2023-09-21 18:10:57 927
原创 Springboot部署服务器项目上线
第二种、在右侧点击 Maven选项,选择鼠标左键双击package选项即可。第一种、直接在项目根目录打开终端,输入以下语句即可。jdk 17.0.8;(尽量与本地测试环境jdk版本一致)java -jar 你的jar包的名字.jar。# 查询springboot项目运行日志。CentOS 7.8版本;kill -9 进程号。# 查询进程是否在线。
2023-09-14 14:27:08 919
原创 springboot上传文件到阿里云OSS
第一步,在application.yml做一下配置,预设下载目录。第二步,新建一个Controller。
2023-09-13 15:08:34 202
原创 MySQL中LEFT JOIN的用法
如需根据表(tableA)a的字段id查询,每一条数据在表(tableB)b中对应字段id2相同的数据数有多少条,可用如下方法。其中,tableA和tableB对应表名,id和id2对应字段名,ON后面是条件语句。
2023-07-21 11:26:13 260
原创 解决node+mysql不能保存emoji表情包的问题
Emoji表情是4个字节,而mysql的utf8编码最多3个字节,所以数据插不进去,而utfmb64是支持四个字节的。所以需要将mysql编码从utf8转换成utf8mb4,从【这样就成功实现了nodejs在mysql中对emoji的保存和读取。】都需要修改为utf8mb4,切记!
2023-07-06 11:05:08 488
原创 解决github无法打开问题
第一步,去如下目录复制hosts文件副本到桌面【切记,要复制到其他文件夹下,不要直接改原文件】。第二步,以文本文档形式打开复制的副本文件,添加如下语句保存后【替换】掉原有hosts文件。第三步,按win+r输入cmd打开控制界面,输入以下语句,然后刷新即可访问github。
2023-07-05 10:44:26 643
空空如也
关于#android#的rsa加密和node不互通的问题,如何解决?
2024-04-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人