方案:
- redis:
serializertype: json- 在存入缓存之前先用JSON 转一下,取出来在转回来
使用mybatisplus的方法, 最好不要有不是自己写的sql, .one()执行会去找sql, 如果找到就会执行, 具体好像是因为resultMap结果集映射, 被删掉的字段没有被干掉造成的,时间有点久忘记了
方案:
1.GROUP_CONCAT拼接最长是1024,可以通过命令修改GROUP_CONCAT默认长度
2.全部返回到业务层去拼接在当做参数传进去查询
问题: 跳转到后台管理前端把 Cookie 又拼接了一次导致 Cookie太大 413请求的实体太大
解决:最好不要超过15行
解决:内存不够导致项目启动不起来
解决:
因为接口被多个地方调用,问题就在于首页也调用了,首页只需要3条数据,导致在去列表管理页面查看数据时,出现上述情况,用字段区分判断是否缓存或字段拼接缓存名称
方案: 在使用ArrayList的时候,尽量对其进行容量大小的初始化,避免其频繁扩容,造成OOM异常,线上出现该问题真的很恐怖。
ArrayList#add方法每次容量确定:size+1,而ArrayList#addAll每次是size+numNew(要插入的容量)。在ArrayList#add方法插入数据进行扩容时,每次都是扩容器为其1.5倍,并且扩容并不是那么频繁,需要达到临界点,而ArrayList#addAll不确定,需要依赖numNew大小。
1:加分布式锁,只有等上一个线程完成以后在查一次,保证不重复. 缺点:串行化,pqs上来以后响应慢,增加数据库压力.
2:分布式锁加自旋,把生成过的编号当作key来加锁,如果这个这个key被生成了,那么这把锁在一定的时间内不会被释放,通过自选往上加,直到拿到锁. 优势:响应快,通过自旋达到预生成编号.
缺点:key 要保存一段时间
因篇幅问题不能全部显示,请点此查看更多更全内容