常见小问题
我叫白小猿
这个作者很懒,什么都没留下…
展开
-
【踩坑系列-JS】iframe中的url参数获取
将主页面的url参数拼接到<iframe>的src属性的url上,之后便可通过window.location.search来访问,该方案更为通用;故iframe网页内通过window.location.search获取的是嵌入页面url参数,而非主页面的url参数。:嵌入的页面通过window.parent.location.search来获取主页的url参数,但需要注意跨域限制;系统A的页面中以iframe的方式嵌入了系统B的页面,并需要将A页面url中的参数传递给B页面。原创 2024-07-24 15:57:13 · 1214 阅读 · 0 评论 -
【日常记录-JS】获取URL参数
实际项目中经常有些落地页会携带参数,并要求在发起请求时将携带的参数一并传递至后台服务。例如两个独立系统A和B,从A系统页面跳转至B系统页面,若需要在两个系统间传递部分信息,便可以通过在跳转url中拼接传递的信息来实现。原创 2024-07-24 15:14:00 · 290 阅读 · 0 评论 -
【日常记录】Jackson如何支持org.joda.time.DateTime
Jackson默认不支持时间串与org.joda.time.DateTime之间的转换;原创 2024-06-12 11:21:10 · 233 阅读 · 0 评论 -
【日常记录】EasyExcel支持时间字符串同org.joda.time.DateTime转化
默认情况下,EasyExcel不支持时间字符串到org.joda.time.DateTime的转化。原创 2024-06-11 16:13:14 · 526 阅读 · 0 评论 -
[日常踩坑]--(14)异步任务与事务
Author:赵志乾Date:2020-08-14Declaration:All Right Reserved!!!踩坑:场景:数据库事务执行完,需要执行异步任务;例如向Redis发布消息;做法:事务的最后一步执行消息发布;代码如下:@Transactional(rollbackFor = Exception.class)public void doMyTransaction(Object param) { // step1: 执行事务操作 // step2: 发布Re.原创 2020-08-14 15:13:31 · 862 阅读 · 0 评论 -
[日常踩坑]--(13)MySQL大表变更
Author:赵志乾Date:2020-08-14Declaration:All Right Reserved!!!踩坑:场景:MySQL数据库单表行数将近400万,多张表加和约千万行。需要对这几张表进行字段添加和字段更新;做法:使用数据客户端连接数据库,直接执行变更命令;现象:此系列命令的执行极其占用数据库资源,使得数据库性能大幅下降。导致线上应用中的其他表单条记录更新操作耗时将近30秒,并发锁过期失效,出现数据更新错乱。解决方案:上述问题是由于单表过大,导致更新占用过..原创 2020-08-14 14:35:29 · 289 阅读 · 0 评论 -
[日常踩坑]--(12)Redis锁释放
Author:赵志乾Date:2020-07-28Declaration:All Right Reserved!!!踩坑:场景:获取Redis锁,完成业务逻辑后释放锁做法:try语句中获取Redis锁,finally语句中释放锁,代码如下:try{ // step1: 获取锁--默认过期时间15秒 boolean result = jedisTemplate.getLock(lockKey); if(!result){ // 抢锁失败 .原创 2020-07-28 13:35:34 · 2435 阅读 · 0 评论 -
[日常踩坑]--(11)随机业务id重复问题
Author:赵志乾Date:2020-06-05Declaration:All Right Reserved!!!踩坑:场景:业务记录需要唯一标识,也就是我们使用的业务id。做法:本地通过时间戳+业务串+随机数的规则生成业务id,当在循环中使用该方法是会产生重复的业务id。代码如下:public class ServiceIdGenerator { private static DateFormat dateFormat = new SimpleDateFormat("yy.原创 2020-06-05 18:42:03 · 1415 阅读 · 0 评论 -
[日常踩坑]--(8)工具类封装和使用
Author:赵志乾Date:2019-11-09Declaration:All Right Reserved!!!踩坑:场景:项目中经常会封装一些工具类,方便通用流程的处理。做法:封装工具类时,注意事项标注不全或命名不规范。使用工具类时,未充分了解工具类方法的特性。曾经踩过这样一个坑,使用工具类方法获取给定时间戳对应当日的凌晨0点时间戳。代码如下:public stat...原创 2019-11-09 11:11:42 · 276 阅读 · 0 评论 -
[通用解决方案]--(3)统一系统对接的字段别名与格式
Author:赵志乾Date:2019-09-28Declaration:All Right Reserved!!!场景实际项目中,经常会遇到调用第三方服务接口的情景。第三方通常只提供一份接口文档,且字段命名规则、格式需求与自己项目不一致。解决方案方案1:单独做一层转换按照第三方的要求写一层Vo,然后将Vo转换成自己项目中的字段格式和命名规则。此方案在实现过程中会...原创 2019-09-28 14:42:41 · 857 阅读 · 0 评论 -
[通用解决方案]--(2)Post请求发送Json格式的body体工具类
Author:赵志乾Date:2019-08-29Declaration:All Right Reserved!!!场景当前服务需要调用其他服务提供的基于http的接口。要求使用Post操作,Content-Type为application/json,字符集编码为UTF-8解决方案引用的jar包<dependency> <groupId>...原创 2019-08-29 15:14:11 · 1211 阅读 · 0 评论 -
[日常踩坑]--(7)不同jar包中JSONObject的区别
Author:赵志乾Date:2019-08-29Declaration:All Right Reserved!!!踩坑场景:HttpPost使用StringEntity配置请求体。做法:使用json-lib包中的JSONObject设置参数,并通过JSONObject的toString方法获取的json串构建StringEntity。发送端实际发送数据和期望发送数据不一致。如...原创 2019-08-29 11:50:59 · 401 阅读 · 0 评论 -
[日常踩坑]--(1)MySql数据库时间戳精度
Author:赵志乾Date:2019-06-05Declaration:All Right Reserved!!!踩坑:前提:数据库中TIMESTAMP采用默认精度(秒),Java应用中Timestamp精度为毫秒。场景:需要将数据库中时间戳设置为当日00:00:00之前。做法:如下代码,存库后依然是当日00:00:00。Long todayBegin = 当日00...原创 2019-06-05 20:05:46 · 5605 阅读 · 0 评论 -
[日常踩坑]--(2)切面未做异常处理
Author:赵志乾Date:2019-06-12Declaration:All Right Reserved!!!踩坑:前提:切面逻辑和业务代码均未做异常处理。场景:项目采用多数据源配置,在切面中完成数据源的动态切换。当业务代码抛异常后,没有自动切回默认数据源。做法:public Object around(ProceedingJoinPoint point, Ch...原创 2019-06-12 14:35:11 · 559 阅读 · 0 评论 -
[日常踩坑]--(3)多服务访问同一图片的跨域问题
Author:赵志乾Date:2019-07-04Declaration:All Right Reserved!!!踩坑:前提:ftp服务器存放图片,图片的url存放在数据库表中。场景:服务A前端负责图片的增删改查,服务B和服务C的前端代码通过url查询图片时,报跨域访问问题。做法:数据库表中存放图片的完整url(即包含域名)解决方案:上述问题是由图片url强关联服...原创 2019-07-04 19:41:28 · 494 阅读 · 0 评论 -
[日常踩坑]--(3)MySQL存储emoji表情产生乱码
Author:赵志乾Date:2019-06-14Declaration:All Right Reserved!!!踩坑:前提:mysql-connector-java版本为5.1.30,mysql版本为5.7.17。场景:数据库指定字段类型为varchar,使用的字符集为utf8mb4,将emoji表情通过JDBC存储时产生乱码。做法:jdbcUrl中使用charac...原创 2019-06-14 10:15:39 · 1084 阅读 · 0 评论 -
[日常踩坑]--(4)混淆显示文本和编码文本
Author:赵志乾Date:2019-07-08Declaration:All Right Reserved!!!踩坑:场景:将代码中写死的文本信息调整到界面可配置。做法:使用数据库存放要配置的文本内容。将代码中的文本信息复制粘贴到输入文本框,结果存储到数据库中的文本多转义了一次。// 代码中的配置--内容是一个向右指的手势原创 2019-07-08 19:53:38 · 786 阅读 · 0 评论 -
[日常操作]--(1)日志文件查看
Author:赵志乾Date:2019-07-04Declaration:All Right Reserved!!!背景:线上项目出现问题时,通常需要通过日志文件进行定位。操作:使用下面3条指令可以很方便地进行日志查看。// 进入日志文件所在目录cd 日志文件所在目录// 过滤文件中带关键字的行,并且显示行号.cat -n 日志文件名 | grep 关键字...原创 2019-07-04 19:38:22 · 404 阅读 · 0 评论 -
[日常踩坑]--(5)MyBatis分页查询带嵌套集合的结果集
Author:赵志乾Date:2019-07-24Declaration:All Right Reserved!!!踩坑:场景:分页查询带嵌套结果集合的Vo,如下:// 结果记录package com.zhaozhiqian;import java.util.List;public class NodeVo { private String id; ...原创 2019-07-24 13:59:59 · 1459 阅读 · 3 评论 -
[通用方案]--(1)图片压缩
Author:赵志乾Date:2019-07-25Declaration:All Right Reserved!!!场景上传到服务器的图片偏大时,会导致前端图片的加载过程变慢。解决方案用户上传的图片在服务器端落盘前进行压缩。1、引入依赖包thumbnailator(google开源的压缩工具)<!-- https://mvnrepository.com/ar...原创 2019-07-25 13:40:34 · 262 阅读 · 0 评论 -
[日常踩坑]--(6)部分@Transactional没有生效
Author:赵志乾Date:2019-07-25Declaration:All Right Reserved!!!踩坑场景:Service层的某个方法需要事务,且该方法在本类内部被调用。(其他场景下事务都能生效)做法:直接在方法上添加注解@Transactional。结果事务未生效。解决方案该问题的原因是字节码增强未生效导致的。使用@Transactional注解后,...原创 2019-07-25 14:14:38 · 425 阅读 · 0 评论 -
[基础知识点扫盲]---(1)zookeeper的4种使用场景
Author:赵志乾Date:2019-04-13Declaration:All Right Reserved!!!zookeeper作为分布式系统的一种基础组件,有着广泛的应用场景。今天我们一起来看一下最常用的4种场景:·分布式锁·元数据/配置信息管理·分布式协调·高可用1、分布式锁分布式系统中,各服务大多都是多实例部署,即多个服务实例操作同一数据源,为...原创 2019-04-13 22:48:49 · 359 阅读 · 0 评论