Java进阶之路
文章平均质量分 65
雨雨雨就要爆炸了
秃头才会变强!!!
展开
-
Java实现图片转PDF
某w*s图片转PDF还要收费,简直不讲武德!我啪的一下,很快啊,一段代码搞定!原创 2024-01-12 16:08:45 · 984 阅读 · 0 评论 -
Redisson兼容redis多模式部署的配置方式
【代码】Redisson兼容redis多模式部署的配置方式。原创 2024-03-27 13:06:54 · 798 阅读 · 0 评论 -
java使用jdbc操作数据库的工具类
【代码】java使用jdbc操作数据库的工具类。原创 2024-06-28 10:33:51 · 210 阅读 · 0 评论 -
异步任务中传递用户信息的一种优雅写法
在异步任务中,我们通常会遇到子任务获取当前用户的场景。我们可能会采取来存储主线程传递的用户信息。然后在业务开始时set,业务结束时remove,来保证不会出现OOM的场景。原创 2024-07-11 18:43:45 · 370 阅读 · 0 评论 -
springboot配置国际化文件
springboot配置国际化文件转载 2024-07-05 11:33:46 · 93 阅读 · 0 评论 -
记录一次Java中使用P12证书访问https,nginx返回403的问题
成功返回,说明p12证书和密钥是没问题的。java代码就能正常返回了。原创 2024-04-12 15:32:24 · 929 阅读 · 0 评论 -
延迟消息解决方案总结(含源码)
这里的延迟队列并不是指传统意义上的"队列"这种数据结构,而是以时间为权重的一种有序堆结构,这里是指的一种广义上的概念。所以延迟队列的实现,我们首先提取出一个关键词:“有序”。我们只要考虑某种实现方案,满足有序的条件,就可以实现延迟队列。原创 2023-05-12 23:11:50 · 603 阅读 · 1 评论 -
Java异常处理传递规范总结
catch的作用是捕获异常,throw的作用将异常传递给合适的处理程序。阿里巴巴Java开发规范中有15条异常处理的规约,其中下面两条使用的时候是比较困惑的,因为并没有告诉我们应该如何定义异常,如何抛出异常,如何处理异常:。7、不要同时记录和抛出异常,因为异常会打印多次,正确的处理方式要么抛出异常要么记录异常,如果抛出异常,不要原封不动的抛出,可以自定义异常抛出。10、尽可能晚的捕获异常,如非必要,建议所有的异常都不要在下层捕获,而应该由最上层捕获并统一处理这些异常。9、自定义异常尽量不要使用检查异常。原创 2023-05-04 16:14:04 · 814 阅读 · 0 评论 -
Arthas的学习与使用
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。官方学习文档:https://arthas.aliyun.com/doc/原创 2023-02-03 15:06:42 · 553 阅读 · 0 评论 -
使用java生成数据字典
【代码】使用java生成数据库文档。原创 2023-01-29 11:41:59 · 961 阅读 · 0 评论 -
Maven依赖中<option>与<scope> provided的区别
maven在管理依赖时,对于引入包的传递性处理.一般有和两种处理. 但是这两个的区别是什么需要简单梳理下.转载 2022-11-22 13:57:53 · 1739 阅读 · 0 评论 -
记录一次使用@TransactionalEventListener
我们一般在使用spring的监听器,会使用来实现同步监听事件。但是这种存在一个问题,当前事务是没有提交的。如果需要在执行事件之前将事务提交,可以使用来实现监听方式。原创 2022-10-27 16:24:05 · 2130 阅读 · 0 评论 -
Java在Hotspot下Thread.sleep(0) 和 Thread.yield() 的区别
1.sleep()方法给其他线程运行机会的时候,不考虑线程的优先级,因此当高优先级线程sleep()后,低优先级任务有机会运行;但是yield()只会给同优先级或更高优先级线程运行的机会,甚至可能是自己继续运行。Thread.sleep(0) 和 Thread.yield() 主要取决于JVM的实现。这两种方式都可以让出cpu时间片,以允许其他线程获取运行的机会。2.线程调用sleep()后,转入阻塞状态,而调用yield()后转入了就绪状态。根据Hotspot源码可以看出,效果是等价的。原创 2022-09-09 11:37:35 · 758 阅读 · 0 评论 -
SpringBoot关于线程池的配置
springboot关于线程池的参数配置原创 2022-06-10 15:39:04 · 2777 阅读 · 2 评论 -
JVM学习笔记(一)
目录一、 Java从编译到执行1、编译到执行2、 JDK,JRE,JVM的关系二、运行时数据区1、运行时数据区概念2、Java方法和虚拟机栈(1)Java方法的运行(2)问题排查与调优3、Java方法的运行与栈帧(1)栈帧的组成(2)方法运行(对应一个栈帧)4、JVM的运行与对象的创建(1)创建对象的几种方式(2)对象的回收三、JVM运行流程一、 Java从编译到执行1、编译到执行编译类加载执行2、 JDK,JRE,JVM的关系JDK:java开发工具包JRE:ja原创 2022-03-08 11:17:51 · 497 阅读 · 0 评论 -
Redis的两种持久化方式AOF与RDB
目录1、AOF与RDB介绍2、windows开启AOF1、AOF与RDB介绍AOF(append only file):按照操作顺序依次将操作追加到指定的日志文件末尾,即面向操作,实时性高,如果开启默认1s一次。保存默认文件为 appendonly.aof,redis默认关闭。如果与RDB同时开启,默认优先读取AOF文件(如下图所示)。AOF文件相对于RDB文件较大,开启后默认在文件达到64m时,会执行bgrewriteaof命令压缩AOF文件,将里面重复或者过期的操作重写。RDB:RDB原创 2022-02-28 13:03:16 · 673 阅读 · 0 评论 -
简单使用压测工具JMeter
目录一、安装步骤二、配置三、使用四、常见问题及解决一、安装步骤JMeter可以在JMeter的官方网站下载,如下图所示由于JMeter使用java开发,所以启动需要本机有jdk环境,这里使用的是jdk1.8。下载解压后,找到bin目录,运行 jmeter.bat 即可启动。二、配置jmeter.properties个人修改了字体的一些设置,可以参考HTTPResponse.parsers=htmlParser wmlParser cssParserbeanshell原创 2022-01-19 16:21:16 · 592 阅读 · 0 评论 -
springboot中使用aliyun的oss
目录一、对象存储 OSS二、使用方式三、开始使用1、maven依赖2、配置类:AliyunOssConfig3、yml配置4、工具类 AliyunOSSUtil5、OssController一、对象存储 OSS对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。官方学习:https://help.aliyun.com/product/31815.html原创 2021-12-01 11:36:04 · 1854 阅读 · 0 评论 -
springboot使用Jsoup解析html,实现对html的修改
目录一、需求二、解决2.1 简介2.2 Jsoup的主要功能三、入门3.1 maven引用3.2 简单使用一、需求前端传至后端的html数据,后端需要根据html中对应的class或者tag,去替换掉相应的属性值或者修改标签等等。二、解决使用Jsoup官方:https://jsoup.org/2.1 简介jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。原创 2021-11-03 17:44:02 · 3439 阅读 · 0 评论 -
使用外部Tomcat启动springboot子模块项目
排除子模块中的tomcat依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframewor.原创 2021-07-23 11:27:59 · 155 阅读 · 0 评论 -
SpringBoot2.x集成WebSocket实现多客户端共享点单
目录前言思路代码测试前言共享点单一般发生去餐厅共同扫桌面二维码,或者手机点单,发起人分享订单给别人,别人通过链接进入点单页面。自己琢磨了下共享点单的一套流程,然后使用springboot+websocket+redis简单实现了一段拼单逻辑。思路在发起拼单时,首先会创建一个订单号。后面用户共享时,都进入该笔订单的服务连接。可以理解为一个聊天室。使用websocket同步消息。使用redis记录订单下对应的商品。当所有用户关闭与服务器连接后,清除redis中的数据。代码项目已上传至本人原创 2021-06-10 17:15:42 · 1758 阅读 · 0 评论 -
JPA实体标识的自动生成@ SequenceGenerator @GeneratedValue
JPA实体标识的自动生成 数据的唯一性是所有应用程序非常基本的要求,由开发者或者用户来维护这种唯一性存在着较大的风险,因此,由系统自动产生唯一标识是一种常见的做法。OpenJPA 中支持四种不同的实体标识自动生成策略: 容器自动生成的实体标识; 使用数据库的自动增长字段生成实体标识; 根据数据库序列号(Sequence)技术生成实体标识; 使用数据库表的字段生成实体标识; 这四种方式各有优缺点,开发者可以根据实际情况进行选择。 可选择的注释 ...转载 2021-01-07 14:20:54 · 1986 阅读 · 0 评论 -
SpringBoot集成JavaMelody系统监控组件
目录前言代码部分展示前言JavaMelody的目标是监视QA和生产环境中的Java或Java EE应用程序。它不是模拟用户请求的工具,而是根据用户对应用程序的使用情况来测量和计算有关应用程序实际操作的统计信息的工具。github地址链接代码部分pom.xml<!-- https://mvnrepository.com/artifact/net.bull.javamelody/javamelody-core --><!-- javamelody-core -->&l原创 2020-12-07 15:09:35 · 286 阅读 · 0 评论 -
Java通过Jcraft实现基于SFTP的文件上传、下载、删除
目录前言一、什么是SFTP?二、使用工具FileZilla(一)配置(二)使用三、代码部分总结前言最近由于安全监管部门的要求,将系统生成的接口文件存储地址NAS模式更换为符合要求的SFTP模式。所以学习了一下Java如何集成SFTP,然后总结下使用经验。请等米下锅的同学,请直接转到代码部分一、什么是SFTP?安全文件传输协议SFTP(SSH File Transfer Protocol)是文件传输协议(FTP)的安全版本,也是SSH协议的一部分,可通过安全SHELL(SSH)数据流轻松进行数据传输原创 2020-12-04 11:00:34 · 3226 阅读 · 2 评论 -
EasyExcel导出不同表头的Sheet页or分页查询导出
目录前言代码部分结果前言嗯,昨天小伙伴在导出一百多万数据,用动态分多个sheet页。还是很好用的。但是由于本地开发环境垃圾(小声bb公司给配的电脑性能),因为内存有限。在导出几百万数据时,查询映射实体,内存爆掉了。(再次吐槽。。。)提高本地开发环境的JVM大小已经解决不了问题了。然后就想到了分页查询,分页写入的方法。查询一部分数据,写入。再查一部分,再次写入。于是乎,改了改导出的工具类EasyExcelUtil 。代码部分EasyExcelUtilpackage com.sinosoft.se原创 2020-11-18 15:29:17 · 2799 阅读 · 9 评论 -
EasyExcel动态分多个sheet页导出千万级数据
目录前言使用背景参考官方文档代码部分小结前言请等米下锅的同学直接阅读代码部分。使用背景最近项目组小伙伴们在开发使用Apache的Poi导出大批量数据时,总是出现内存溢出的情况。并且在生产环境,如果多个用户都导大批量数据报表时,服务器也很容易宕机。虽然说Poi有SXSSFWorkbook这个类可以帮助我们导出较大批量的数据。其原理是用硬盘空间换内存这个样子。但是Excel2007最大一个sheet页也就支持1048576行。如果超出这个行数就需要去动态分多个sheet页去写入。由于我们是使用的模板去原创 2020-11-16 16:07:15 · 6782 阅读 · 6 评论