- 博客(118)
- 收藏
- 关注
原创 synchronized 锁升级过程
synchronized 锁升级过程Java中的synchronized锁升级过程是JVM为了提高并发性能而引入的一种优化策略,它在JDK 1.6及更高版本中得到了显著的改进。
2024-04-10 16:39:15 363
原创 jenkins gradle 编译时jvm不足情况
开启线程守护,第一次编译时开线程,之后就不会再开了。gradle 编译时jvm不足情况。#开启并行编译,相当于多条线程再走。#配置编译时的虚拟机大小。
2024-03-20 16:17:36 451
原创 阿里云效flow流水线构建时内存不足
打开流水线,只有管理员和拥有者才能看到这个菜单。咨询阿里云后建议自己搭建私有化集群。云效flow流水线构建时内存不足。
2024-03-20 16:16:59 680
原创 es NotSerializableExceptionWrapper[too_many_clauses maxClauseCount is set to 1024];
用了es的in查询,in中id大于1024个,导致es报错,es默认支持元素数量为1024个。
2024-03-09 11:28:28 410
原创 synchronized锁升级详细过程
当一个线程访问同步块并获取对象的锁时,会将锁的标记记录在线程的栈帧中,并将对象头中的Thread ID设置为当前线程的ID。2)后来又来了线程b,线程c,说凭什么你占有锁,需要公平的竞争,于是将标识去掉,也就是撤销偏向锁,升级为轻量级锁,三个线程通过CAS自旋进行锁的争抢(其实这个抢锁过程还是偏向于原来的持有偏向锁的线程).锁的升级过程中的第二阶段轻量级锁使用对象头中的一部分位来存储线程ID和锁标记,不需要额外的内存存储锁的状态。需要注意的是,锁的升级是逐级升级的过程,而不会存在降级。
2024-02-22 14:17:06 407
原创 Integer超过-128-127比较问题
也就是说int a1 = 127时,在范围之内,这个时候就存放在缓存中,当再创建a2时,java发现缓存中存在127这个数了,就直接取出来赋值给a2,所以a1 == a2的。查看Integer源码发现,Integer内部有一个静态变量缓存池IntegerCache,里面声明了一个Integer[]数组,范围-128——127,Jvm在运行时创建了一 个缓存区域并创建了一个integer的数组。这个数组存储了-128至127的值。5、6 看起来是一模一样的为什么一个是true,一个是false。
2024-02-06 16:23:40 370
原创 解决使用Springboot jpa update数据时报错Executing an update:delete query
解决org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query;遇到如上情况“执行一个更新/删除查询”后面报错“javax的持久类的事务需求异常”通常情况下讲,是没有书写事务,就是在Service层或者Repository层上必须加@Transactional,来代表这是一个事务级别的操作,增删改查除了查都是事务级别的,就当这是一个规范也是ok的。
2024-02-06 09:25:17 929
原创 AI 春联在线生成 挺有意思的,大家可以体验下。输入关键词,就可以生成春联了。 开源地址:GitHub - YunYouJunai-sfc AI 春联 Spring Festival
体验地址:https://ai-sfc.yunyoujun.cn/ 快过年啦,祝大家: 上联:朝九晚五职场忙 下联:副业多元财源广 横批:事业兴旺。AI 春联在线生成 挺有意思的,大家可以体验下。输入关键词,就可以生成春联了。
2024-02-06 09:24:02 764
原创 mysql,es,mongodb,redis区别与应用场景
mysql,es,mongodb,redis区别与应用场景mysql为sql型数据库es,mongodb,redis为nosql型数据库。
2024-02-06 09:14:09 457
原创 自定义Dockerfile构建运行springboot
编写dockerfile# 基于哪个镜像# 将本地文件夹挂载到当前容器# 拷贝文件到容器,也可以直接写成ADD xxxxx.jar app.jar# 声明需要暴露的端口# 配置容器启动后执行的命令。
2024-02-05 11:12:38 1158
原创 Jenkins手把手图文教程[基于Jenkins 2.164.1]
本文基于当前最新的LTS版本2.164.1,理论上适应于Jenkins 2.x所有版本。
2024-02-02 14:21:03 923 1
原创 一个离奇的ArrayIndexOutOfBoundsException异常的排查过程
今天同事遇到了一个离奇的ArrayIndexOutOfBoundsException,找我协助定位,定位的过程很有意思,故而记录一下。
2024-02-02 14:20:29 863
原创 手把手教你如何将项目发布到Maven中央仓库(附步骤及常见问题解决方法)
业余时间写了个轻量级的权限控制框架,并发布到了Maven中央仓库。发布时的操作步骤还挺多,我这个记性是记不住的,所以记录一下,便于以后查阅,也希望对大家有帮助。
2024-02-02 14:19:45 1358 1
原创 跨域访问支持(Spring Boot、Nginx、浏览器)
我们的后端使用Spring Boot。Spring Boot跨域非常简单,只需书写以下代码即可。代码非常简单,不做赘述。该代码在Spring Boot 1.5.4中测试通过。
2024-02-01 09:33:14 673
原创 将应用的log4j换成logback
考虑到log4j很久不更新、性能相对弱,以及一些项目本身的原因,经过较为谨慎的考虑,决定改用logback。迁移还是比较顺利的,花了1个小时左右就搞定了,做个简单的笔记。
2024-02-01 09:32:39 922
原创 Linux调优相关命令汇总
本文基于CentOS 7编写,理论支持所有所有版本Linux发行版,部分命令的个别参数在不同版本中可能存在细微的差异。
2024-01-31 17:14:53 2625
原创 推荐10款笔者一直在使用的Chrome提效插件
本文推荐的10款插件笔者一直在用,部分插件可能有点冷门,但绝壁是提升效率的好帮手,在我眼里是必备插件。笔者已创建,欢迎分享、讨论。一起打造最强Chrome插件集。
2024-01-30 15:02:30 524
原创 手把手使用SonarQube分析、改善项目代码质量(基于SnarQube 8.9.0)
本文基于SonarQube 8.9.0,理论支持6.0及更高版本。SonarQube是一个开源的代码质量管理系统,可用来快速定位代码中的Bug、漏洞以及不优雅的代码。它支持几乎所有的常见编程语言,例如Java、JavaScript、TypeScript、Kotlin、Ruby、Go, Scala等。并且还有插件机制,利用插件,可以让SonarQube更加强大,例如可以整合Findbugs、PMD、Checkstyle等。可以说,SonarQube是一款提升项目代码质量必备的根据。
2024-01-29 10:35:09 992
原创 手把手使用SonarQube分析、改善项目代码质量
本文基于SonarQube 7.9.1,理论支持6.0及更高版本。SonarQube是一个开源的代码质量管理系统,可用来快速定位代码中的Bug、漏洞以及不优雅的代码。它支持几乎所有的常见编程语言,例如Java、JavaScript、TypeScript、Kotlin、Ruby、Go, Scala等。并且还有插件机制,利用插件,可以让SonarQube更加强大,例如可以整合Findbugs、PMD、Checkstyle等。可以说,SonarQube是一款提升项目代码质量必备的根据。
2024-01-29 10:34:25 1140
原创 如何在IntelliJ IDEA数据库控制台操作Redis
最近工作中,经常要操作到Redis,尽管市面上的Redis客户端GUI非常多,例如Redis Desktop Manager、AnotherRedisDesktopManager等。但本人是一个IDEA流,更希望能在IDEA控制台上操作Redis,从而获得一致的研发体验,省得在各个窗口切来切去。于是,我尝试寻找有无合适的Redis插件,结果要么收费,要么体验不佳;接着,我又想了解一下官方对Redis支持意向,看到如下的帖子后,新也是凉了半截。
2024-01-26 10:43:47 825
原创 全网最全 MySQL EXPLAIN 完全解读
EXPLAIN作为MySQL的性能分析神器,读懂其结果是很有必要的,然而我在各种搜索引擎上竟然找不到特别完整的解读。都是只有重点,没有细节(例如type的取值不全、Extra缺乏完整的介绍等)。所以,我肝了将近一个星期,整理了一下。这应该是全网最全面、最细致的EXPLAIN解读文章了,下面是全文。本文基于MySQL 8.0编写,理论支持MySQL 5.0及更高版本。
2024-01-26 10:43:11 543
原创 如何生成漂亮的静态文档说明页
最近经常被问 https://t.itmuch.com/doc.html 文档页是怎么制作的,考虑到步骤略复杂,写篇手记总结下吧。https://t.itmuch.com/doc.html 是个人在慕课网视频《》的实战项目配套文档。
2024-01-25 10:09:30 870
原创 关于做转账操作的思路
3.然后 生成一条提现记录wx_pay_record,总金额40 三条提现明细wx_pay_record_detail 金额是10,20,10,每条wx_pay_record_detail记录中关联上账明细up_account_detail的id。利用上账明细去计算金额转账,对比直接用客户余额进行转账,可以防止高并发上账时客户余额加减错误,导致余额不正常;此时余额就算计算错误也可以通过上账和转账明细去重新计算。建议通过查询关联上账的明细up_account_detail去计算转账金额,
2024-01-25 10:07:33 339
原创 调优 mybatis saveBatch 25倍性能
稍微总结下我粗略的对比(虽然粗略,但实验结果符合原理层面的理解),如果你想更准确地实验,可以使用JMH,并且测试更多组数(如 5000,10000等)的情况。批量保存方式数据量(条)耗时(ms)单条循环插入1000121011100059927mybatis-plus saveBatch(添加rewtire参数)10002589手动拼接sql10002275100055663jdbc executeBatch(添加rewtire参数)1000324。
2024-01-25 09:59:03 1187
原创 11Docker数据持久化
数据卷是被设计来持久化数据的,因此,删除容器并不会删除数据卷。数据卷是一个可供一个或多个容器使用的特殊目录,可以绕过UFS(Unix File System)。这样既可将宿主机的/host-dir路径加载到容器的/container-dir中。这样,在容器中就只能读取/container-dir中的文件,而不能修改了。:数据卷的使用,类似于 Linux 下对目录或文件进行 mount。如果有数据需要在多个容器之间共享,此时可考虑使用数据卷容器。这样既可在删除容器的同时也将数据卷删除。
2024-01-25 09:58:02 502
原创 八Docker Compose简介
Compose是一个用于定义和运行多容器Docker应用程序的工具,前身是Fig。它非常适合用在开发、测试、构建CI工作流等场景。经过前文讲解,我们可使用Dockerfile(或Maven)构建镜像,然后使用docker命令操作容器,例如docker run、docker kill等。本章我们来讨论如何使用Docker Compose来轻松、高效地管理容器。为了简单起见,本章将Docker Compose简称为Compose。然而,使用分布式应用一般包含若干个服务,每个服务一般都会部署多个实例。
2024-01-23 09:59:50 321
原创 六使用Maven插件构建Docker镜像
我们知道,Maven是一个强大的项目管理与构建工具。如果可以使用Maven构建Docker镜像,那么我们的工作就能得到进一步的简化。经过调研,以下几款Maven的Docker插件进入笔者视野,如表13-1所示。表13-1 Maven的Docker插件列表笔者从各项目的功能性、文档易用性、更新频率、社区活跃度、Stars等几个纬度考虑,选用了第一款。这是一款由Spotify公司开发的Maven插件。下面我们来详细探讨如何使用Maven插件构建Docker镜像。
2024-01-22 11:12:50 1630
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人