
后端开发
文章平均质量分 86
MR_Peach07
这个作者很懒,什么都没留下…
展开
-
slf4j,log4j,logback的区别和相关用法
slf4j,log4j,logback的区别和相关用法0.背景最近出现了log4j2.x低版本漏洞导致JNDI注入问题,于是趁此机会,研究了下目前市面上主要的一些日志框架。其中一些优秀的代码设计思想及在日志系统中的实践值得深入学习,下面是我的一些浅见。1.JAVA日志体系System.out,System.err: JAVA自身类库log4j1.x,JUL: 在Apache的时候,Ceki参与设计的日志实现框架。Java Util Logging 借鉴log4j1.x JDK1.4推出的JAVA原创 2021-12-30 20:45:00 · 1479 阅读 · 1 评论 -
Java中多层嵌套if-else代码重构
Java中多层嵌套if-else代码重构1.背景相信大伙儿都见过这样的代码: if (true) { // do something if (true) { // do something if (true) { // do something if (true) { // do something原创 2021-11-28 14:21:54 · 2909 阅读 · 0 评论 -
SpringBoot处理CORS问题
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2021-11-10 21:00:00 · 2642 阅读 · 0 评论 -
MyBatis+MySQL8.0存取Json字段之TypeHandler
MyBatis+MySQL8.0存取Json字段之TypeHandler一丶背景二丶解决方案1.自定义转换2.继承BaseTypeHandler实现对JSON类型的转换三丶反思,继续扩张认知边界一丶背景在业务开发过程中,为了实现一个在线编辑器功能,存取了一些CSS样式在MySQL里面,就像这样:"css": { "id": "3", "width": 11, "height": 12,原创 2021-10-18 23:31:06 · 5229 阅读 · 1 评论 -
Spring Boot JPA-Repository方法名查询推导
Spring Boot JPA-Repository方法名查询推导Repository的默认实现初始化Repository核心的PartTreeJpaQueryRepository的默认实现1.Repository接口的默认实现是 SimpleJpaRepository ,以及他的扩展实现 QueryDslJpaRepository 其中,QueryDslJpaRepository不在我们这篇文章讨论范围内。重点关注SimpleJpaRepository,它实现了 JpaRepo原创 2021-05-08 18:31:30 · 926 阅读 · 0 评论 -
JPA原理分析
零.背景和题外话工作中经常用到JPA去做CURD。出于对某事物全部或部分属性空白时,本能的想添加此事物的属性的内在心理,正好手上有在搭一个新的练手项目,于是开启了Debug分析之旅。读完这篇文章,你将从源码层面明白JPA是如何工作的。值得注意的是:**JPA是一个规范,而非像Hibernate一样是一个解决方案。**这一点在后文也将有所体现。目录零.背景和题外话一.Dao的接口分析二.调用过程分析三.完整过程总结一.Dao的接口分析这是一个基本的Dao接口。如图:重点就在JpaRep原创 2021-03-02 07:56:57 · 2014 阅读 · 1 评论 -
一次坏代码优化引起的对数据库关键字in和‘=’的思考
对数据库关键字in和where的思考一·背景是这样测试同学讲有个界面反应太慢了,什么程度呢,大概是100多条数据得花接近一秒的时间,确实影响用户体验,于是我就来动手改造了。二·排查过程1.先看了日志。好家伙,就查104条数据,执行了416条SQL,刚好是4n倍,原因也很明显,因为表中的考试成绩字段和身份证号字段都是通过联表查询获得,然后拼接回去的。2.原因找到了,开始追代码。因为系统比较小巧,通过代码review很快找到了出问题的代码段,本来想接着这个机会学习下javaagent的使用方法,这下原创 2020-10-02 08:22:22 · 267 阅读 · 0 评论 -
BlockingQueue Interface In Java学习
一.从“生产者”和”消费者“模型谈起生产者消费者问题,也称有限缓冲问题(Bounded-buffer problem),是一个多进程同步问题的经典案例。通过队列能够容易的实现多线程环境下的数据共享.生产者线程把准备好的数据从队尾插入,消费者线程从队头消费数据,以此解决其数据共享.但这是「柏拉图的理想国」,现实不尽是如此.有个前提是,队列长度是有限的.对于若干个生产者和消费者线程,其数据处理速率是不一致的,当生产者生产数据的速率大于消费者消费数据的速率,且经过一段时间,数据积累到快要挤满队列长度时,生产者线原创 2020-07-22 23:06:12 · 221 阅读 · 0 评论 -
琢磨琢磨java序列化与反序列化
琢磨琢磨java序列化与反序列化1.遇到一个问题最近做了一个文件导出的业务,在对导出前需要对导出对象做些数据处理,处理过程中遇到了一个复制对象报错的情况,直接上错误截图:可以看到是NotSerializableException,就是和序列化有关了.于是定位到是复制的哪个对象,查看它没有是否实现了Serialable接口,显然没有.最后,我实现了Serialable接口,解决了这个问题.2.问题涉及到的知识点序列化是一种将对象的状态转换为字节流的机制。而反序列化顾名思义,则是其相反的过程,其中字原创 2020-05-30 14:47:34 · 281 阅读 · 0 评论 -
TCP/IP协议中的三次握手和四次分手
哲学上的认知事物阐述。相信大家会去搜这方面内容,说明大家已经知道了这个协议的重要性。因此直接进入正题,哲学中的认识论里面对人类认知事物过程的阐述是这样的。含义:客观事物在人脑中的反映特点:认识是不断变化发展的根本任务:经过感性认识上升到理性认识,透过现象抓住事物的本质和规律 实现前提:占有丰富的感性材料,运用科学的思维方式。感性上认知三次握手和四次分手。那么我先从感性上对三次握手和四次分手作分原创 2017-11-27 17:26:56 · 602 阅读 · 0 评论 -
spring boot security默认配置启动导致的权限错误
spring boot security未配置导致的权限错误 在写验证码登录环节的接口时,遇到一个401错误,以前没有遇到过,错误如图: { “timestamp”: 1507689421067, “status”: 401, “error”: “Unauthorized”, “message”: “Full authentication is requi原创 2017-10-11 10:47:07 · 5397 阅读 · 0 评论 -
Cookie的setPath(),和setDomain()方法
“Cookies是一个很少的信息片段,可以自动地在浏览器与Web服务器间进行交互,因此Cookie可存储在多个页面间传递的信息”正常的Cookie只能在一个应用中访问,即cookie只能由创建他的应用访问要实现跨应用访问cookie或者跨域访问cookie就得使用到cookie的setPath()和setDomain()方法。1.同一服务器内的cookie共享方法:setPath() eg:本机的原创 2017-04-22 15:20:46 · 14861 阅读 · 5 评论 -
关于spring boot的一些注解
这里列举一些我刚完成不久的用spring boot实现的一个增删改查网站所用到的注解。注解这个东西,用的时候难以理解,抑或大家的好奇心想明白他的原理,却又碍于目前实力有限无法明白,所以注解在前期学习中是需要一定记忆的。@Value 注入配置信息,实现配置类。 @Component 与@ConfigurationPropertion一起使用,对配置分组信息注入。 @Controller 处理原创 2017-08-18 09:32:28 · 636 阅读 · 0 评论 -
对RESTful架构风格理解
一丶来历 REST这个词是在Roy Thomas Fielding大牛(这个人是HTTP协议1.0版本和1.1版本的主要编写者,也是Apache服务器软件的作者之一)在他的博士论文中提出的,是Representational State Transfer的缩写,即是“表现层状态转换”,需要加一个主语的话,他的主语就是资源(Resources),什么意思呢,就是说描述在web上,资源的表现形式的转换原创 2017-07-12 20:40:30 · 1202 阅读 · 0 评论