博客园 - Java碎碎念
uuid:6cbd1ba2-f883-4c34-aed1-30dde64a3a3e;id=670047
2020-12-21T00:46:43Z
Java碎碎念
https://www.cnblogs.com/haha12/
feed.cnblogs.com
https://www.cnblogs.com/haha12/p/12605751.html
一次线上升级大规模报错后,我又重新学习了序列化! - Java碎碎念
背景 去年9月份时候fastjson出现过一个漏洞,需要升级到1.2.60,旧版本是1.2.12,测试环境验证完毕后上线,上线几分钟瞬间几百封报错邮件,当时瞬间心里特紧张,但是表面上得装着没事,咱能搞定,哈哈,还好迅速定位并解决了问题。 系统流程 出问题模块流程比较简单,需要查询一些数据,先从Red
2020-03-31T07:55:00Z
2020-03-31T07:55:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】背景 去年9月份时候fastjson出现过一个漏洞,需要升级到1.2.60,旧版本是1.2.12,测试环境验证完毕后上线,上线几分钟瞬间几百封报错邮件,当时瞬间心里特紧张,但是表面上得装着没事,咱能搞定,哈哈,还好迅速定位并解决了问题。 系统流程 出问题模块流程比较简单,需要查询一些数据,先从Red <a href="https://www.cnblogs.com/haha12/p/12605751.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haha12/p/12580673.html
原创 记录一次线上Mysql慢查询问题排查过程 - Java碎碎念
背景 前段时间收到运维反馈,线上Mysql数据库凌晨时候出现慢查询的报警,并把原始sql发了过来: 表数据量200W左右,不是很大,而且是根据主键更新。 问题排查 1. 排查Mysql数据库 我看到sql后第一反应就是是不是数据库出问题了,每个小时都有业务,偏偏白天业务高峰时间段正常,凌晨业务量很少
2020-03-27T05:00:00Z
2020-03-27T05:00:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】背景 前段时间收到运维反馈,线上Mysql数据库凌晨时候出现慢查询的报警,并把原始sql发了过来: 表数据量200W左右,不是很大,而且是根据主键更新。 问题排查 1. 排查Mysql数据库 我看到sql后第一反应就是是不是数据库出问题了,每个小时都有业务,偏偏白天业务高峰时间段正常,凌晨业务量很少 <a href="https://www.cnblogs.com/haha12/p/12580673.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haha12/p/12510867.html
原创 |我是如何解决POI解析Excel出现的OOM问题的? - Java碎碎念
背景 之前接手过一个解析Excel的项目,使用的是Java里的POI组件解析的,但是在解析时候经常出现OOM,后来我从下面几个方面优化了下,解决了99%的问题,对,你没看错,只解决了99%。 解决方案 1.调整JVM的堆内存 我们知道几乎所有的java对象实例都存放在Java堆中,出现OOM肯定是堆
2020-03-17T07:15:00Z
2020-03-17T07:15:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】背景 之前接手过一个解析Excel的项目,使用的是Java里的POI组件解析的,但是在解析时候经常出现OOM,后来我从下面几个方面优化了下,解决了99%的问题,对,你没看错,只解决了99%。 解决方案 1.调整JVM的堆内存 我们知道几乎所有的java对象实例都存放在Java堆中,出现OOM肯定是堆 <a href="https://www.cnblogs.com/haha12/p/12510867.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haha12/p/12201634.html
FastJson序列化时候出现了$ref?还不赶紧学习下 - Java碎碎念
最近在使用fastjson时候遇到一个问题,后台的数据转化为json字符串后发送到前端时候出现了$ref字样的东西,后来明白了这是引用,下面详细介绍下。 一、一个简单的例子 先来上一段代码,运行后打印的结果可能出乎意料,代码如下: @org.junit.Test public void testFa
2020-01-16T07:49:00Z
2020-01-16T07:49:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】最近在使用fastjson时候遇到一个问题,后台的数据转化为json字符串后发送到前端时候出现了$ref字样的东西,后来明白了这是引用,下面详细介绍下。 一、一个简单的例子 先来上一段代码,运行后打印的结果可能出乎意料,代码如下: @org.junit.Test public void testFa <a href="https://www.cnblogs.com/haha12/p/12201634.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haha12/p/11970156.html
fastjson自定义序列化竟然有这么多姿势? - Java碎碎念
本文介绍下fastjson自定义序列化的各种操作。 一、什么是fastjson? fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。 二、如何使用 添加如下maven依赖即
2019-12-02T05:40:00Z
2019-12-02T05:40:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】本文介绍下fastjson自定义序列化的各种操作。 一、什么是fastjson? fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。 二、如何使用 添加如下maven依赖即 <a href="https://www.cnblogs.com/haha12/p/11970156.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haha12/p/11933310.html
SpringBoot2.0整合WebSocket,实现后端数据实时推送! - Java碎碎念
之前公司的某个系统为了实现推送技术,所用的技术都是Ajax轮询,这种方式浏览器需要不断的向服务器发出请求,显然这样会浪费很多的带宽等资源,所以研究了下WebSocket,本文将详细介绍下。 一、什么是WebSocket? WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的
2019-11-26T01:30:00Z
2019-11-26T01:30:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】之前公司的某个系统为了实现推送技术,所用的技术都是Ajax轮询,这种方式浏览器需要不断的向服务器发出请求,显然这样会浪费很多的带宽等资源,所以研究了下WebSocket,本文将详细介绍下。 一、什么是WebSocket? WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的 <a href="https://www.cnblogs.com/haha12/p/11933310.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haha12/p/11926361.html
SpringMVC+Mybatis 如何配置多个数据源并切换? - Java碎碎念
最近公司一个项目需要连接两个数据库(A和B)操作,有的模块查询A库,有的模块查询B库,因此需要改造下,项目后台用的是SpringMVC+Mybatis+MySQL架构,折腾了两天后终于搞定了,在这里记录过改造过程。 使用场景 多数据源的使用的场景一般有: 1. 主从数据库切换 2. 读写分离 3.
2019-11-25T02:41:00Z
2019-11-25T02:41:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】最近公司一个项目需要连接两个数据库(A和B)操作,有的模块查询A库,有的模块查询B库,因此需要改造下,项目后台用的是SpringMVC+Mybatis+MySQL架构,折腾了两天后终于搞定了,在这里记录过改造过程。 使用场景 多数据源的使用的场景一般有: 1. 主从数据库切换 2. 读写分离 3. <a href="https://www.cnblogs.com/haha12/p/11926361.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haha12/p/11912675.html
异常: java.security.InvalidKeyException: Illegal key size - Java碎碎念
今天在做接口测试的时候遇到个异常: java.security.InvalidKeyException: Illegal key size。 异常原因:如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size 异常. 因为密钥
2019-11-22T09:05:00Z
2019-11-22T09:05:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】今天在做接口测试的时候遇到个异常: java.security.InvalidKeyException: Illegal key size。 异常原因:如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size 异常. 因为密钥 <a href="https://www.cnblogs.com/haha12/p/11912675.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haha12/p/11904224.html
一分钟带你了解下MyBatis的动态SQL! - Java碎碎念
MyBatis的强大特性之一便是它的动态SQL,以前拼接的时候需要注意的空格、列表最后的逗号等,现在都可以不用手动处理了,MyBatis采用功能强大的基于OGNL的表达式来实现,下面主要介绍下。 一、if标签 if是最常用的判断语句,主要用于实现某些简单的条件选择。基本使用示例如下: 二、where
2019-11-21T02:58:00Z
2019-11-21T02:58:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】MyBatis的强大特性之一便是它的动态SQL,以前拼接的时候需要注意的空格、列表最后的逗号等,现在都可以不用手动处理了,MyBatis采用功能强大的基于OGNL的表达式来实现,下面主要介绍下。 一、if标签 if是最常用的判断语句,主要用于实现某些简单的条件选择。基本使用示例如下: 二、where <a href="https://www.cnblogs.com/haha12/p/11904224.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haha12/p/11895678.html
一分钟带你了解下Spring Security! - Java碎碎念
一、什么是Spring Security? Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架,它是用于保护基于Spring的应用程序的实际标准。 Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spri
2019-11-20T01:35:00Z
2019-11-20T01:35:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】一、什么是Spring Security? Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架,它是用于保护基于Spring的应用程序的实际标准。 Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spri <a href="https://www.cnblogs.com/haha12/p/11895678.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haha12/p/11867386.html
一分钟带你学会利用mybatis-generator自动生成代码! - Java碎碎念
之前的文章 "《SpringBoot系列 整合Mybatis(XML配置方式)》" 介绍了XML配置方式整合的过程,本文介绍下利用Mybatis generator生成xml、dao、entity的过程。 [TOC] 一、MyBatis Generator简介 MyBatis Generator是M
2019-11-15T08:10:00Z
2019-11-15T08:10:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】之前的文章 "《SpringBoot系列 整合Mybatis(XML配置方式)》" 介绍了XML配置方式整合的过程,本文介绍下利用Mybatis generator生成xml、dao、entity的过程。 [TOC] 一、MyBatis Generator简介 MyBatis Generator是M <a href="https://www.cnblogs.com/haha12/p/11867386.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haha12/p/11855001.html
手把手带你实战下Spring的七种事务传播行为 - Java碎碎念
本文介绍Spring的七种事务传播行为并通过代码演示下。 [TOC] 一、什么是事务传播行为? 事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何运行。 例如:methodA方法调用methodB方法时,methodB是继续在调
2019-11-14T01:53:00Z
2019-11-14T01:53:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】本文介绍Spring的七种事务传播行为并通过代码演示下。 [TOC] 一、什么是事务传播行为? 事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何运行。 例如:methodA方法调用methodB方法时,methodB是继续在调 <a href="https://www.cnblogs.com/haha12/p/11855001.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haha12/p/11847433.html
SpringBoot系列-整合Mybatis(注解方式) - Java碎碎念
上一篇文章 "《SpringBoot系列 整合Mybatis(XML配置方式)》" 介绍了XML配置方式整合的过程,本文介绍下SpringBoot通过注解方式整合Mybatis的过程。 [TOC] 一、常用注解说明 @Mapper 可以给接口自动生成一个实现类,让spring对mapper接口的be
2019-11-13T02:57:00Z
2019-11-13T02:57:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】上一篇文章 "《SpringBoot系列 整合Mybatis(XML配置方式)》" 介绍了XML配置方式整合的过程,本文介绍下SpringBoot通过注解方式整合Mybatis的过程。 [TOC] 一、常用注解说明 @Mapper 可以给接口自动生成一个实现类,让spring对mapper接口的be <a href="https://www.cnblogs.com/haha12/p/11847433.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haha12/p/11839872.html
SpringBoot系列-整合Mybatis(XML配置方式) - Java碎碎念
本文介绍下SpringBoot整合Mybatis(XML配置方式)的过程。 [TOC] 一、什么是 MyBatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以
2019-11-12T01:41:00Z
2019-11-12T01:41:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】本文介绍下SpringBoot整合Mybatis(XML配置方式)的过程。 [TOC] 一、什么是 MyBatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以 <a href="https://www.cnblogs.com/haha12/p/11839872.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haha12/p/11834088.html
Java中打印日志,这4点很重要! - Java碎碎念
打印日志,要注意下面4点。 [TOC] 一、预先判断日志级别 对DEBUG、INFO级别的日志,必须使用条件输出或者使用占位符的方式打印。该约定综合考虑了程序的运行效率和日志打印需求。 先来看一个反例: 如果在某个配置了打印级别为WARN的应用中,按照上面代码打印DEBUG级别的日志,那么该日志不会
2019-11-11T04:26:00Z
2019-11-11T04:26:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】打印日志,要注意下面4点。 [TOC] 一、预先判断日志级别 对DEBUG、INFO级别的日志,必须使用条件输出或者使用占位符的方式打印。该约定综合考虑了程序的运行效率和日志打印需求。 先来看一个反例: 如果在某个配置了打印级别为WARN的应用中,按照上面代码打印DEBUG级别的日志,那么该日志不会 <a href="https://www.cnblogs.com/haha12/p/11834088.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haha12/p/11818095.html
SpringBoot集成JWT实现权限认证 - Java碎碎念
上一篇文章 "《一分钟带你了解JWT认证!》" 介绍了JWT的组成和认证原理,本文将介绍下SpringBoot整合JWT实现认证的过程,带你更深入的了解下JWT。 [TOC] 一、JWT认证流程 认证流程如下: 1. 用户使用账号和密码发出post请求; 2. 服务器使用私钥创建一个jwt; 3.
2019-11-08T01:17:00Z
2019-11-08T01:17:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】上一篇文章 "《一分钟带你了解JWT认证!》" 介绍了JWT的组成和认证原理,本文将介绍下SpringBoot整合JWT实现认证的过程,带你更深入的了解下JWT。 [TOC] 一、JWT认证流程 认证流程如下: 1. 用户使用账号和密码发出post请求; 2. 服务器使用私钥创建一个jwt; 3. <a href="https://www.cnblogs.com/haha12/p/11818095.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haha12/p/11796456.html
一分钟带你了解JWT认证! - Java碎碎念
[TOC] 一、JWT简介 JSON Web Token(JWT)是一个开放的标准(RFC 7519),它定义了一个紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息。由于此信息是经过数字签名的,因此可以被验证和信任。 更多信息可以查看官网:https://jwt.io/introdu
2019-11-05T01:42:00Z
2019-11-05T01:42:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】[TOC] 一、JWT简介 JSON Web Token(JWT)是一个开放的标准(RFC 7519),它定义了一个紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息。由于此信息是经过数字签名的,因此可以被验证和信任。 更多信息可以查看官网:https://jwt.io/introdu <a href="https://www.cnblogs.com/haha12/p/11796456.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haha12/p/11770526.html
利用SpringBoot+Logback手写一个简单的链路追踪 - Java碎碎念
最近线上排查问题时候,发现请求太多导致日志错综复杂,没办法把用户在一次或多次请求的日志关联在一起,所以就利用SpringBoot+Logback手写了一个简单的链路追踪,下面详细介绍下。 [TOC] 一、实现原理 Spring Boot默认使用LogBack日志系统,并且已经引入了相关的jar包,所
2019-10-31T04:42:00Z
2019-10-31T04:42:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】最近线上排查问题时候,发现请求太多导致日志错综复杂,没办法把用户在一次或多次请求的日志关联在一起,所以就利用SpringBoot+Logback手写了一个简单的链路追踪,下面详细介绍下。 [TOC] 一、实现原理 Spring Boot默认使用LogBack日志系统,并且已经引入了相关的jar包,所 <a href="https://www.cnblogs.com/haha12/p/11770526.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haha12/p/11762944.html
SpringBoot中如何优雅的读取yml配置文件? - Java碎碎念
YAML是一种简洁的非标记语言,以数据为中心,使用空白、缩进、分行组织数据,从而使得表示更加简洁易读。本文介绍下YAML的语法和SpringBoot读取该类型配置文件的过程。 本文目录 一、YAML基本语法二、YAML支持的数据格式三、读取yml配置文件四、测试 一、YAML基本语法 以缩进代表层级
2019-10-30T01:30:00Z
2019-10-30T01:30:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】YAML是一种简洁的非标记语言,以数据为中心,使用空白、缩进、分行组织数据,从而使得表示更加简洁易读。本文介绍下YAML的语法和SpringBoot读取该类型配置文件的过程。 本文目录 一、YAML基本语法二、YAML支持的数据格式三、读取yml配置文件四、测试 一、YAML基本语法 以缩进代表层级 <a href="https://www.cnblogs.com/haha12/p/11762944.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haha12/p/11750533.html
SpringBoot中如何灵活的实现接口数据的加解密功能? - Java碎碎念
数据是企业的第四张名片,企业级开发中少不了数据的加密传输,所以本文介绍下SpringBoot中接口数据加密、解密的方式。 本文目录 一、加密方案介绍二、实现原理三、实战四、测试五、踩到的坑 一、加密方案介绍 对接口的加密解密操作主要有下面两种方式: 自定义消息转换器 优势:仅需实现接口,配置简单。劣
2019-10-28T01:44:00Z
2019-10-28T01:44:00Z
Java碎碎念
https://www.cnblogs.com/haha12/
【摘要】数据是企业的第四张名片,企业级开发中少不了数据的加密传输,所以本文介绍下SpringBoot中接口数据加密、解密的方式。 本文目录 一、加密方案介绍二、实现原理三、实战四、测试五、踩到的坑 一、加密方案介绍 对接口的加密解密操作主要有下面两种方式: 自定义消息转换器 优势:仅需实现接口,配置简单。劣 <a href="https://www.cnblogs.com/haha12/p/11750533.html" target="_blank">阅读全文</a>