Zjgsu-CheckIn技术总结博客

本博客仅记录Zjgsu-CheckIn在开发中遇到的各类问题与对应解决方法。

一:如何根据给定的json数据生成对应的二维码?

解决方案:利用zxing(Java实现的多种格式的1D/2D条码图像处理库)先将对应的json数据转化为BufferedImage流,再将其根据一定尺寸生成base64的字符串,供前后台使用。
在这里插入图片描述

在这里插入图片描述

二:如何在网页端导出表格供用户下载?

解决方案:采用poi-ooxml(基于java的Excel处理软件)可以将对应的数据生成一个.xls的表格文件并提供给用户下载。
在这里插入图片描述

三:管理员端连接后端出现CROS跨域错误

解决方案:在每个接口处添加语句:**@CrossOrigin(origins = “*”)**即任何IP都可以访问。

四:管理员端如何将密码加密:

解决方案:采用jbcrypt算法加密,与传统的加密算法,如RSA算法相比,jbcrypt算法不需要将密码转化为明文再判断,而是直接与密文进行一个类似按位或的操作即可。在生成密文的同时绑定一个随机大小的盐值,实现加密,如:
明文:123456
密文:$2a$11$RLF0yV0uEoHY9fHO8vddt.gBmzRqPVeGTYG.XmcWdPBDt1fU9MvKi

五:网页向后台发送post请求时出现Error 500,get则正常。

解决方案:将post的数据外加上Json.stringfy(),将json类转化为字符串,从而使后端能成功接收并转化为json。
同理,对于不变的json类可以通过加双引号使其变为字符串。

六:驼峰转换导致的请求无效的bug

解决方案:采用guava内置的CaseFormat来完成快速的驼峰转换,节省代码量与开发时间。
在这里插入图片描述

七:使用Mybatis向数据库中添加记录时获取主键的问题

在对应Mapper的方法上添加**@Options(useGeneratedKeys = true, keyProperty = “XXX”, keyColumn = “XXX”)**,将创建完的记录的主键直接注入对应的类中。
在这里插入图片描述

八:后台网页数据需要分页显示

采用PageHelper支持多字段排序与分页,减小开发难度与花费时间。
另外,为了保证接口的可复用性,对于所有返回列表的接口,都采用分页采用非必要传入的方法。即
对于current(当前页),pageSize(页大小),sorter(排序规则)三个参数而言,
前两个必须
同时为空或同时不为空
同时为空时current=1,pageSize=回传的列表大小
sorter可以为空,也可以支持多字段查询,格式为
“字段1:ascend(升序)/descend(降序),字段2:ascend(升序)/descend(降序)…”
在这里插入图片描述
同时,为了避免过多重复的机械劳动,编写了工具类ListPageUtil,内置分页和封装两个方法。使用时仅需调用即可,非常便利。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

九:小程序上线后出现无法连接后端的情况

解决方案:后端服务器需要有域名,因此购买域名并备案即可。

十:实现用户无法多地同时登陆与异地登录时下线的功能

解决方案:采用Redis,通过完成对用户名、用户身份(微信小程序用户/管理员)和Token的映射来完成登录时的安全性,可以有效防止CSRF攻击
**Token采用随机生成的uuid,重复率极低。保证每个用户的Token都不相同。**因此,Token是用户的唯一身份标识,因此部分需要用户信息的接口不需要传用户id、用户名等敏感数据,更加方便与安全。
同时,为了保证用户不能在多地同时登陆,在上述基础上增加反映射,即token和用户名、用户身份的映射。
例如用户A登录某账号,获得TokenA,那么此时TokenA->账号和账号->TokenA的映射就会建立,如果此时用户B登录了同一账号,那么该映射会变为TokenB->账号和账号->TokenB,那么用户A在使用该账号时就会因为他持有的TokenA没有对应的账号而失去权限。

在这里插入图片描述
在这里插入图片描述

十一、Jenkins 创建Maven项目时没有webHook选项

选择freestyle的自定义项目即可

十二、构建Jenkins出现大量maven-compiler-plugin缺失问题

调整maven-compiler-plugin的版本号

十三、打包时出现程序包com.sun.istack.internal不存在

排查后发现@NotNull 导入的包是错误的,应是org.jetbrains.annotations.NotNull

十四、Jenkins使用sudo命令移动时显示没有权限

sudo vi /etc/sudoers
jenkins ALL=(ALL) NOPASSWD: ALL//设置无需密码即可操作
systemctl restart jenkins

十五、 如何在微信小程序端发送multipart/form-data的数据?

分析multipart/form-data的数据格式,并利用字符串的拼凑完成数据的封装
在这里插入图片描述

十六、出现PageHelper排序失效的bug

经过多方排查,发现初始PageSize过大,当设置如INT_MAX等值时会失效,现已修改为100000。
在这里插入图片描述

十七、小程序端出现必须要让wx.request同步的场景

添加Promise,Async,Await
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值