
java进阶之路
文章平均质量分 91
进阶学习java底层原理、常见面试题
wu@55555
软考高级系统架构师、Elastic认证工程师、CSDN后端领域博客专家、阿里云专家博主、华为云·云享专家博主、51CTO专家博主、掘金社区认证优秀作者
——致力于家乡互联网技术建设
展开
-
java进阶:seata分布式事务未生效问题排查纪实|主事务回滚成功,分支事务未回滚
近期在做公司老项目和新系统的模块打通时出现了一个分布式事务不生效的问题,主要表现为主事务中出现报错,主事务回滚成功了,但是分支事务未回滚。特此记录,以供后续参考。原创 2025-01-02 18:30:00 · 2148 阅读 · 0 评论 -
JVM:记录一次因为查询量过大导致的OOM问题(四)
其实整个分析过程是比较顺利的,一是因为该问题埋的不深,二是因为本身对业务有一定了解,大概会猜测出现问题的点,所以在排查时顺着怀疑方向会快速很多。后续大家在排查此类OOM问题时,也可以先了解有风险的业务点,有一定的预估后进行排查会顺利很多。原创 2024-12-28 22:26:50 · 1013 阅读 · 0 评论 -
java进阶:p7签名实现文件来源追溯和完整性校验
PKCS#1主要定义了基于RSA公钥密码体制的数字签名和加密机制。在数字签名方面,PKCS#1签名通常指的是使用RSA算法对信息进行签名的过程,其基本步骤如下:消息摘要:首先,对需要签名的数据进行哈希处理,生成一个固定长度的摘要(如使用SHA-256算法)。签名生成:然后,使用发送方的私钥对哈希摘要进行加密,生成的加密数据即为数字签名。签名验证:接收方使用发送方的公钥对数字签名进行解密,得到哈希摘要,并对接收到的原始数据进行同样的哈希处理,比较两个哈希摘要是否一致,以验证签名的有效性。原创 2024-12-11 08:00:00 · 893 阅读 · 0 评论 -
java进阶:还在用明文传输前后端参数?等保3级认证不过啦?|前后端参数加解密
前段时间公司老系统做等保三级认证,在前后端参数传输中被检测有重大漏洞,原因是原系统中使用的参数加密是对称加密,而密钥被明晃晃的存储在前端js代码中,相当于明文传输,后续结合非对称加密做了优化,今天特意整理下思路和实现方法,供大家参考原创 2024-12-10 20:30:00 · 1247 阅读 · 0 评论 -
java进阶:利用trueLicense实现项目离线证书授权
我们要实现的离线校验,实际上就是通过公私钥+证书的形式来实现的,首先生成公私钥,然后利用私钥生成证书,比如x509证书格式,x509证书由用户公共密钥和用户标识符组成。此外还包括版本号、证书序列号、CA标识符、签名算法标识、签发者名称、证书有效期等信息我们的核心目的就是要生成的证书中包含有效期,即可实现授权有效期,然后通过接口拦截器,每次访问接口时利用公钥对证书进行校验,查看证书是否合法、是否在有效期内,即可实现我们进行离线控制的目的。原创 2024-11-18 20:30:00 · 1639 阅读 · 2 评论 -
后端常用技能:基于easy-poi实现excel一对多、多对多导入导出【附带源码】
easy-poi是一个基于Apache POI的Java端Excel 操作工具库,目的是为了简化java程序对excel文件的操作。该库提供了简单的API接口,支持excel的读写、格式化等,以及excel数据导出到pdf、word等文件。easypoi-base 是 easypoi的核心模块,提供了基本的 Excel 处理功能,如读取、写入、转换等。它不依赖于 Spring Boot,可以在任何 Java 项目中使用。原创 2024-05-08 18:01:50 · 6299 阅读 · 17 评论 -
后端常用技能:解决java项目前后端传输数据中文出现乱码、问号问题
思路1:后端响应体及前端blob对象声明编码格式为utf8思路2:application.properties中设置全局编码格式思路3:重新编码传输数据思路4:jvm启动脚本中添加-Dfile.encoding=utf-8原创 2024-05-08 18:01:34 · 5222 阅读 · 0 评论 -
maven、springboot项目编译打包本地jar、第三方jar包
一般我们在maven项目中都是通过引入pom坐标的形式来引入第三方jar包,但某些场景下,第三方是直接提供的jar包文件,这就需要我们从本地引入第三方包并进行打包。所以我们今天来看下如何进行本地引入第三方包操作原创 2024-01-02 21:33:08 · 3209 阅读 · 0 评论 -
spring:实现初始化动态bean|获取对象型数组配置文件
近期因为要完成实现中间件的工具包组件,其中涉及要读取对象型的数组配置文件,并且还要将其加载为bean,因为使用了版本,很多springboot的相关特性无法支持,因此特此记录,以方便后续同学有相同情况可以参考。原创 2023-09-19 09:02:24 · 3443 阅读 · 0 评论 -
java:实现用户扫码二维码自动跳转指定链接功能
近来接到要实现链接转二维码的需求,通过提供二维码给用户,让用户扫描后自动访问指定的H5页面,从而实现业务流转,这样的功能其实在其他很多场景也会用到,比如资产管理系统中,扫码资产二维码,从而实现库存盘点、自动入库、自动出库等功能今天就这类需求场景,给大家做一个讲解示例原创 2023-06-17 14:35:32 · 4037 阅读 · 0 评论 -
jetcache:阿里这款多级缓存框架一定要掌握
jetcache是阿里开源的基于java开发的缓存框架,支持多种缓存类型:本地缓存、分布式缓存、多级缓存。能够满足不同业务场景的缓存需求。jetcache具有上手简单、性能高效、拓展性强的特点。支持缓存预热 、缓存key前缀等功能。结合spring-cache使用,可以实现十分优雅的缓存类型切换。原创 2023-05-06 07:45:00 · 3124 阅读 · 0 评论 -
springboot:缓存不止redis,学会使用本地缓存ehcache
ehcache是基于java开发的本地缓存组件,无需单独安装部署,只要引入jar包就可利用它来实现缓存。所谓本地缓存,就是指存储在JVM堆内存中的临时缓存数据,当然ehcache本身也支持Off-Heap Store机制来使用堆外内存,本地缓存相较于redis性能和响应速度更高。Ehcache的本地缓存还支持过期时间、最大容量、持久化等特性,使得它可以适用于各种不同的缓存场景。原创 2023-04-22 02:04:49 · 7507 阅读 · 1 评论 -
JVM:线上服务CPU爆满,如何排查|jstack指令查看堆栈日志(三)
前一段时间出现了一个正则表达式引起的线上CPU爆满的问题,一开始没有在第一时间定位到问题,这里也特此记录一下,同时也系统的梳理下CPU爆满问题的排查思路和方法,为后续的同学提供参考。原创 2023-04-15 20:20:14 · 4780 阅读 · 0 评论 -
JVM:利用jstat查看GC信息及堆内存设置(二)
上一章我们讲解了排查OOM问题的思路和基本操作这一节,我们接着讲解如何解读垃圾回收(GC)频率、效率等信息原创 2023-03-26 19:58:34 · 4794 阅读 · 0 评论 -
JVM:全面理解线上服务器内存溢出(OOM)问题处理方案(一)
OOM问题的实际原因各种各样,就像我们开发时遇到的空指针错误,导致的原因可能有很多,但是排查的思路却差不多,大家之所以对OOM问题避而远之,是因为不能直接看到报错的代码位置,这一点需要我们借助jhatjmapMAT等工具来实现。但只要大家多操作,多积累经验,你会发现这个的排查也没有那么难,那么下期我们将结合实际的线上案例,来一起带大家推导OOM问题解决。原创 2023-03-18 21:42:48 · 7631 阅读 · 0 评论 -
springboot:接手老项目,领导让更新数据库说明文档,如何3分钟完成任务
screw是用来生成数据库表结构说明文档的组件,通过引用jar包,通过简单的配置就可以自动生成文档,相当于数据库中的swagger,支持html, word, md三种格式的文档如上所示,我们的数据库说明文档就做完了,当然我在实际项目中的数据库比上述演示的要大的多,但数据库越大,我们省的时间就越多。原创 2023-01-11 00:14:15 · 3961 阅读 · 6 评论 -
springboot:实现文件上传下载实时进度条功能【附带源码】
记得刚入行的时候,做了一个文件上传的功能,因为上传时间较久,为了用户友好性,想要添加一个实时进度条,显示进度。奈何当时技术有限,查了许久也没用找到解决方案,最后不了了之。近来偶然想到这个问题,于是决定整理一下实现方式,也为和我曾经一样碰壁的同学,提供一些思路。原创 2022-10-23 18:18:43 · 17424 阅读 · 5 评论 -
Java进阶:如何反编译jar包获取源码
某些没有提供源码的历史遗留项目,或者第三方jar包,我们常常需要进行二开,但是又没有源码,这时就需要进行反编译获取到项目源码。当然也不是所有的jar都能反编译的,某些做了防编译处理的则不能,但对于我们历史遗留的项目进行反编译则是完全可行的今天我们就来看看如何进行反编译。原创 2022-10-08 08:49:44 · 31199 阅读 · 0 评论 -
springboot:生成excel并且通过邮件发送
excel的生成以及邮件的发送,都应该尽可能的提取为工具类,如果实现的功能更多的更需要提取的单独的服务,通过pom依赖引入,更大化的实现方法的通用,和业务代码与通用代码之间的解耦。还是那句话,看十遍,不如动手操作一遍。原创 2022-10-06 11:25:27 · 4223 阅读 · 6 评论 -
springboot:java实现邮件及附件发送、HTML正文的三种方式(三)【附带源码】
从代码可以看出spring-boot-starter-mail与javax.mail的实现类似,都是通过类实现的至此我们已经讲解完三种实现邮件发送的方法了,实际上邮件发送功能实现非常简单,毕竟我们只是在前人做好的组件上开发,已经站在了巨人的肩膀上。之前演示的代码大家也可以直接应用到生产中,但一定不要盲目的复制粘贴,理解,自己一行一行的复写一遍代码,这是千万不能省的!原创 2022-10-06 00:05:04 · 2949 阅读 · 0 评论 -
springboot:java实现邮件及附件发送、HTML正文的三种方式(二)【附带源码】
邮件发送是我们日常开发中比较常见的功能,常用于预警信息提醒、统计数据定期发送等需求。一般该方法会由前人封装好,实际开发时只需要调用即可,但具体怎么实现的,如何从零实现邮件发送,这是我们要掌握的。上一次我们讲解了基于javax.mail实现邮件发送,今天我们接着讲解基于commons.mail的实现方式。原创 2022-10-05 11:57:13 · 6618 阅读 · 0 评论 -
springboot:java实现邮件及附件发送、HTML正文的三种方式(一)【附带源码】
邮件发送是我们日常开发中比较常见的功能,常用于预警信息提醒、统计数据定期发送等需求。一般该方法会由前人封装好,实际开发时只需要调用即可,但具体怎么实现的,如何从零实现邮件发送,这是我们要掌握的。所以今天我们就整理一下javax.mail实现邮件发送原创 2022-10-04 12:01:43 · 4867 阅读 · 0 评论 -
JAVA:如何优雅地书写if-else(策略模式、函数式接口、卫语句)
1. 引言在日常开发中我们常常遇到有多个if else的情况,之间书写显得代码冗余难看,对于追求更高质量代码的同学,就会思考如何优雅地处理这种代码,下面我们详细讨论2.原创 2022-08-10 00:47:23 · 3341 阅读 · 0 评论