一些坑
1. 获取IP时,出现127.0.0.1
在nginx上带上头
location ~
{
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass_header Set-Cookie;
proxy_pass_header P3P;
proxy_pass http://127.0.0.1:8090;
}
2. 异步任务等待回调时,会导致前端超时
解决方案:
- 让前端等待时间长一点
- 弄成两个接口,一个发送,一个查询状态
- 异步任务不管结果
3. 身份证的输入框,不能是number
因为身份证后面有可能出现x
4. 数据库都是小写
windows下大小写不敏感,但linux敏感
5. redis客户端,使用后记得close
6. 退出登录后,axios的header使用的token,不刷新
axios.defaults.headers['Authorization'] = ""
7. Mybatis的if标签判断空字符串 == 0,参数为0时会自动转为空字符串
<if test="goodsStatus!=null and goodsStatus!=''">
and goods_status = #{goodsStatus}
</if>
解决办法
1.当传入的参数有0时,只判断!=null即可。
2.将0转化为String类型,就可以解决这个问题。
8. 传参时,遇到 was expecting double-quote to start field name
请检查最后是否有多余的逗号
9. 设计数据库时,表和表之间的关联字段,最好用主键…
比如 用户表主键为id,但拥有同样是唯一的openid字段,
那么用户收藏的单词表,最好记录user_id,而不是user_openid…
这样方便后期扩展功能
10. pageHelper
sql语句末尾不要带分号
11. js循环字符串
超过两位数,会有bug?
本质上是做比较时候的bug
错误场景:
let start = 9
let end = 10
let bug_start = "9"
let bug_end = "10"
for (let i = start; i <= end; i++) {
console.log(i)
}
本质:
let start = "8"
let end = "9"
let bug_start = "9"
let bug_end = "10"
console.log(start<=end)
console.log(bug_start<=bug_end)
true , false
两个字符串数字做比较为ASCII码比较,依次取每个字符,字符转为ASCII码进行比较:‘5’>‘123’ ==>true
12. vue filter时要注意null
13. mybatis order by失效
select * from pic order by #{sortValue}
会被解析成: select * from pic order by "view_count"
,带了双引号,所以失效了,但是可以防sql注入,解决办法是改成${xxx},但需要控制这个变量。
14. quill加载模块得等到ready以后才行
<QuillEditor @ready="onReady" :modules="modules" />
const modules = ref([])
const onReady = () => {
modules.value = [
{
name: 'blotFormatter',
module: BlotFormatter,
},
];
}
15. 线上和测试环境切换时,出现的缓存问题
A4本地测试时,刷新了缓存,但是线上没有,线上的缓存还是旧的,所以会导致数据不一致
16. new Date().toLocaleTimeString()
该时间的格式为宿主环境的当前区域设置中的缺省格式。因为返回值可能随计算机的不同而不同,所以脚本编写过程中不能依赖此方法的返回值。toLocalTimeString 方法应该仅仅用于格式化显示 – 而绝不要作为计算的一部分。
17. meilisearch filter包含inf 或 infinity
会报错
查看 issues
18. 配置jackson的ObjectMapper时
要小心全局设置会污染其他地方
19. spring的yml中配置redis的index
spring:
redis:
database: 2
这样配置以后,在redis中,应该是select 1
20. 小程序的iOS不支持webp格式的图片
preview接口中可以访问,但是<image src=""/>
不支持
21. mysql中,用 IN 查询,会变成没有顺序
``select id from pic where id IN (32,20,22,31,19,19)```
22. vue和flask中的渲染变量的语法冲突
app.jinja_env.variable_end_string = '}}}'
23. uni-app引入Vant的dropdown选择过后面item后,再选择前边的选项出现点击无效
选完1,再选2,则选不了了。
找到 wxcomponents/vant-weapp/dropdown-item/index.wxml打开后找到after-enter和after-leave这两个事件,并改为驼峰命名:afterEnter和afterLeave即可!有遇到问题的小伙伴可以去试一试,看下是否能够解决!
原文链接:https://blog.csdn.net/qq_33839972/article/details/129771051
24. mysql 8 order by limit问题
如果order by 的字段,出现重复时,加不加limit offset对结果有影响
select t.ERID from xxx order by t.create_time LIMIT 0, 10;
select t.ERID from xxx order by t.create_time LIMIT 10, 10;
这两条会有重复数据
MySQL官方描述: 如果多行在列中具有相同的值ORDER BY,服务器可以自由地以任何顺序返回这些行,并且可能会根据整体执行计划以不同的方式返回。换句话说,这些行的排序顺序相对于未排序的列是不确定的。
影响执行计划的一个因素是 LIMIT,因此ORDER BY 有和没有的查询LIMIT可能会以不同的顺序返回行。
25. SpringSecurity anonymous和permitAll的区别
.antMatchers(“/login”, “/register”, “/captchaImage”).anonymous
anonymous的意思是,仅能匿名访问
26. updateAppMessageShareData
微信的更新分享内容,必须从公众号中打开才行
27. 在Aop中只能抛出的异常必须继承RunTimeException或其子类
28. 元素值必须为常量表达式
检查int 和 Integer之类的