- 博客(15)
- 收藏
- 关注
原创 使用mybatis的动态sql解析能力生成sql
背景: 当前项目要引入doris,因为原来的同事采用jdbcTemplate的方式,执行sql查询,所以,也就不修改采用双数据源的方式了,仍旧采用jdbcTemplate的方式执行sql语句。但是在代码中拼接sql语句实在是有点头疼,看代码看的也是云里雾里的。在MyBatis中,通过OGNL表达式可以动态地计算条件是否成立,从而确定是否将SQL片段添加到最终的SQL语句中。OGNL表达式通常嵌入在MyBatis中的动态SQL标签中,例如if、choose、when、otherwise等。
2023-10-26 23:00:08
306
原创 jstack 查询线程状态 定位问题
发现:1:当前迁移的表数量以及表对应的状态均正常,表的数据量均比较大,在千万级别乃至上亿。查看本产品的监控,发现使用的cpu和内存很少,查看日志日志并无异常日志,查看druid监控 页面可看到正在执行中的sql语句。通过ps -ef | grep java 获取到当前的进程为6,于是通过查看线程名进行过滤,发现抽取端均是warting状态,写入端为runnable状态,故而可以得知为写入端比较慢,因为抽取端一直在等待。查看某个线程更详细的信息可以通过命令进行查看,发现jdbc一直在往oracle中写数据。
2023-10-26 22:55:02
91
原创 mysql 函数 concat_ws
concat_ws 函数的作用强于concat,其中最方便的是可以自定义添加分隔符。其中使用到了concat concat_ws 函数,所以在此做一个记录。今天有个需求, 需要对两个字段进行拼接,然后再和其他表进行关联。其中 concat 就是一个字符串的拼接函数,用于拼接不同的字符。
2023-10-26 20:55:42
136
原创 处理java.io.IOException_ Broken pipe 问题
但是通过nginx代理后,就出现了问题,试了两次,发现距离上一次服务端发送信息给浏览器间隔60s。nmap的扫描一个服务器的耗时要在80s左右,于是猜测可能是nginx的某个配置低于nmap的扫描耗时,导致出现了上述问题。背景:最近需要通过nmap扫描服务器的端口,此功能通过websocket 和前端进行交互,当前端出发端口扫描之后,后端通过websocket将扫描到的信息返给前端,完成后,给前端一个关闭的信号。仅在两个连续的读取操作之间设置超时,而不是为整个响应的传输设置超时。
2023-10-25 21:13:34
2019
原创 Java异常日志,但没有完整的堆栈信息
优化之处在于,当第一次发生异常(通常是 NullPointerException)时,会打印完整的堆栈跟踪,并且 JVM 会记住堆栈跟踪(或者可能只是代码的位置)。当该异常发生得足够频繁时,将不再打印堆栈跟踪,这样既可以实现更好的性能,又不会用相同的堆栈跟踪淹没日志。又因为为docker部署,所以通过在docker-compose.yaml文件中增加对应的配置,重启服务,通过查看cmd命令,可知已经增加了对应的配置。在客户现场以及测试环境,有时候会遇到异常堆栈日志不全的情况,从而导致无法准确定位问题。
2023-10-25 21:10:20
686
原创 ThreadLocal学习记录
ThreadLocal的思想是以空间换时间,而锁的思想是以时间换空间,threadLocal的实现就是讲成员变量的副本拷贝到自己的线程内部,其作用域覆盖线程,而不是某个具体任务;其“自然”的生命周期与线程的生命周期“相同”(但在JDK实现中比线程的生命周期更短,减少了内存泄漏的可能)
2023-02-19 18:16:21
87
原创 mysql 函数 concat_ws
concat_ws 函数的作用强于concat,其中最方便的是可以自定义添加分隔符。其中使用到了concat concat_ws 函数,所以在此做一个记录。今天有个需求, 需要对两个字段进行拼接,然后再和其他表进行关联。其中 concat 就是一个字符串的拼接函数,用于拼接不同的字符。
2022-10-09 23:21:37
181
原创 代理
学习spring mybatis 源码,发现其中涉及到了大量的代理,所以就整理了一下自己所理解的代理。首先:代理分为动态代理 和 静态代理,静态代理这里基于接口的代理来做记录被代理的接口:package com.sankuai.web;/**接口 被代理接口@author fanzunying@date 2021/4/25 13:12*/public interface UserService {String getUser(String name);}一个子实现pack
2021-05-14 19:10:46
89
原创 mysql时间相关的函数
mysql时间相关的函数近日因为需要从别人的数据库中获取对应的数据,添加到自己的数据库中,所以涉及到了时间处理这一块,故而在此记录平时工作中用到的以及需要学习的。首先,时间在数据库中的记录方式有多种,有存时间戳、时间不同格式字符串的(如:yyyyMMddHHmmss),也有存储对应的时间数据类型。下面是mysql的时间和日期数据类型:字符串类型描述DATEYYYY-MM-DD格式的日期值TIMEhh:mm:ss格式的时间值DATETIMEYYYY-MM-DD h
2020-07-15 23:59:40
283
原创 sql函数学习--字符串函数学习
mysql字符串操作函数最近工作中需要接入对方数据库中的数据,所以很多地方用到了字符串函数,这里记录下来,以备后续学习。函数名称功能说明ASCII(str)返回字符串 str 中最左边字符的 ASCII 代码值BIN(N)返回字符串 str 中最左边字符的 ASCII 代码值ASCII(str)返回字符串 str 中最左边字符的 ASCII 代码值ASCII(str)返回字符串 str 中最左边字符的 ASCII 代码值ASCII(str)返回字符串
2020-07-12 11:36:58
415
原创 feign的启动异常:The bean 'XXX.FeignClientSpecification', defined in null, could not be registere
今天工作的时候,碰到
2020-01-29 15:00:10
1756
1
原创 spring boot 整合swagger bug1
今天在写了几个接口之后,准备测试的时候,莫名奇妙的发现swagger挂了。然后报下面的莫名其妙的错误信息 There was an unexpected error (type=Method Not Allowed, status=405).Request method 'GET' not supportedorg.springframework.web.HttpRequestMethod...
2020-01-13 20:33:59
635
原创 MyBatis动态传入表名
MyBatis动态传入表名今天碰到一个问题,两个表关联之后需要取表A中不存在的数据,但是之后又新增了一个问题,另外一个方法需要在两个表关联之后取表B中不存在的数据。这个时候不想写重发的sql语句了,于是百度了mysql如何进行动态表名查询。动态表名需要使用${},而非之前常用的#{}。至于两者之间的区别无非一个预编译,一个在编译之前进行sql语句的动态拼接。...
2020-01-08 21:38:28
2060
原创 list集合对象根据属性去重
集合去重list集合对象根据属性去重1级标题新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入list集合对象根...
2020-01-07 21:36:32
2482
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人