自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(113)
  • 收藏
  • 关注

原创 synchronized锁升级详细过程

当一个线程访问同步块并获取对象的锁时,会将锁的标记记录在线程的栈帧中,并将对象头中的Thread ID设置为当前线程的ID。2)后来又来了线程b,线程c,说凭什么你占有锁,需要公平的竞争,于是将标识去掉,也就是撤销偏向锁,升级为轻量级锁,三个线程通过CAS自旋进行锁的争抢(其实这个抢锁过程还是偏向于原来的持有偏向锁的线程).锁的升级过程中的第二阶段轻量级锁使用对象头中的一部分位来存储线程ID和锁标记,不需要额外的内存存储锁的状态。需要注意的是,锁的升级是逐级升级的过程,而不会存在降级。

2024-02-22 14:17:06 350

原创 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 345

原创 解决使用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 432

原创 spring三级缓存

这个很好理解,多个bean之间相互依赖,形成了一个闭环。比如:A依赖于B、B依赖于C、C依赖于A。B b;C c;A a;

2024-02-06 09:24:46 839

原创 AI 春联在线生成 挺有意思的,大家可以体验下。输入关键词,就可以生成春联了。 开源地址:GitHub - YunYouJunai-sfc AI 春联 Spring Festival

体验地址:https://ai-sfc.yunyoujun.cn/ 快过年啦,祝大家: 上联:朝九晚五职场忙 下联:副业多元财源广 横批:事业兴旺。AI 春联在线生成 挺有意思的,大家可以体验下。输入关键词,就可以生成春联了。

2024-02-06 09:24:02 744

原创 mysql,es,mongodb,redis区别与应用场景

mysql,es,mongodb,redis区别与应用场景mysql为sql型数据库es,mongodb,redis为nosql型数据库。

2024-02-06 09:14:09 351

原创 解决docker容器内时间与主机不一致问题

解决docker容器内时间与主机不一致问题。在docker文件中增加。

2024-02-06 09:13:38 423

原创 自定义Dockerfile构建运行springboot

编写dockerfile# 基于哪个镜像# 将本地文件夹挂载到当前容器# 拷贝文件到容器,也可以直接写成ADD xxxxx.jar app.jar# 声明需要暴露的端口# 配置容器启动后执行的命令。

2024-02-05 11:12:38 1135

原创 通过dockerfile 生成自定义nginx镜像

通过dockerfile生成自定义nginx镜像。

2024-02-05 11:12:07 975

原创 排查生产环境:MySQLTransactionRollbackException数据库死锁

一. 问题现状。

2024-02-04 11:38:02 1049

原创 多线程例子,通过启动三个线程 等三个线程都跑完后打印结果

一个多线程例子,通过启动三个线程 等三个线程都跑完后打印结果。

2024-02-04 11:37:28 339

原创 多线程实例

【代码】多线程实例。

2024-02-02 14:38:13 359

原创 Jenkins手把手图文教程[基于Jenkins 2.164.1]

本文基于当前最新的LTS版本2.164.1,理论上适应于Jenkins 2.x所有版本。

2024-02-02 14:21:03 857

原创 一个离奇的ArrayIndexOutOfBoundsException异常的排查过程

今天同事遇到了一个离奇的ArrayIndexOutOfBoundsException,找我协助定位,定位的过程很有意思,故而记录一下。

2024-02-02 14:20:29 828

原创 手把手教你如何将项目发布到Maven中央仓库(附步骤及常见问题解决方法)

业余时间写了个轻量级的权限控制框架,并发布到了Maven中央仓库。发布时的操作步骤还挺多,我这个记性是记不住的,所以记录一下,便于以后查阅,也希望对大家有帮助。

2024-02-02 14:19:45 861

原创 跨域访问支持(Spring Boot、Nginx、浏览器)

我们的后端使用Spring Boot。Spring Boot跨域非常简单,只需书写以下代码即可。代码非常简单,不做赘述。该代码在Spring Boot 1.5.4中测试通过。

2024-02-01 09:33:14 642

原创 将应用的log4j换成logback

考虑到log4j很久不更新、性能相对弱,以及一些项目本身的原因,经过较为谨慎的考虑,决定改用logback。迁移还是比较顺利的,花了1个小时左右就搞定了,做个简单的笔记。

2024-02-01 09:32:39 846

原创 Tomcat调优教程

本文基于Tomcat 9.0编写,理论兼容Tomcat 8.x及更高版本。本文来探讨Tomcat的调优。

2024-01-31 17:15:24 1218

原创 Linux调优相关命令汇总

本文基于CentOS 7编写,理论支持所有所有版本Linux发行版,部分命令的个别参数在不同版本中可能存在细微的差异。

2024-01-31 17:14:53 2583

原创 JWT操作工具类分享

库,这是一个Java圈子最流行的。

2024-01-30 17:36:05 421

原创 推荐10款笔者一直在使用的Chrome提效插件

本文推荐的10款插件笔者一直在用,部分插件可能有点冷门,但绝壁是提升效率的好帮手,在我眼里是必备插件。笔者已创建,欢迎分享、讨论。一起打造最强Chrome插件集。

2024-01-30 15:02:30 470

原创 手把手使用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 893

原创 手把手使用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 921

原创 如何在IntelliJ IDEA数据库控制台操作Redis

最近工作中,经常要操作到Redis,尽管市面上的Redis客户端GUI非常多,例如Redis Desktop Manager、AnotherRedisDesktopManager等。但本人是一个IDEA流,更希望能在IDEA控制台上操作Redis,从而获得一致的研发体验,省得在各个窗口切来切去。于是,我尝试寻找有无合适的Redis插件,结果要么收费,要么体验不佳;接着,我又想了解一下官方对Redis支持意向,看到如下的帖子后,新也是凉了半截。

2024-01-26 10:43:47 676

原创 全网最全 MySQL EXPLAIN 完全解读

EXPLAIN作为MySQL的性能分析神器,读懂其结果是很有必要的,然而我在各种搜索引擎上竟然找不到特别完整的解读。都是只有重点,没有细节(例如type的取值不全、Extra缺乏完整的介绍等)。所以,我肝了将近一个星期,整理了一下。这应该是全网最全面、最细致的EXPLAIN解读文章了,下面是全文。本文基于MySQL 8.0编写,理论支持MySQL 5.0及更高版本。

2024-01-26 10:43:11 526

原创 如何生成漂亮的静态文档说明页

最近经常被问 https://t.itmuch.com/doc.html 文档页是怎么制作的,考虑到步骤略复杂,写篇手记总结下吧。https://t.itmuch.com/doc.html 是个人在慕课网视频《》的实战项目配套文档。

2024-01-25 10:09:30 862

原创 常用MQ产品的对比

本文整理了常用MQ之间的对比,旨在帮助大家在实际项目中选择MQ产品。

2024-01-25 10:08:20 848

原创 关于做转账操作的思路

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 329

原创 调优 mybatis saveBatch 25倍性能

稍微总结下我粗略的对比(虽然粗略,但实验结果符合原理层面的理解),如果你想更准确地实验,可以使用JMH,并且测试更多组数(如 5000,10000等)的情况。批量保存方式数据量(条)耗时(ms)单条循环插入1000121011100059927mybatis-plus saveBatch(添加rewtire参数)10002589手动拼接sql10002275100055663jdbc executeBatch(添加rewtire参数)1000324。

2024-01-25 09:59:03 1166

原创 11Docker数据持久化

数据卷是被设计来持久化数据的,因此,删除容器并不会删除数据卷。数据卷是一个可供一个或多个容器使用的特殊目录,可以绕过UFS(Unix File System)。这样既可将宿主机的/host-dir路径加载到容器的/container-dir中。这样,在容器中就只能读取/container-dir中的文件,而不能修改了。:数据卷的使用,类似于 Linux 下对目录或文件进行 mount。如果有数据需要在多个容器之间共享,此时可考虑使用数据卷容器。这样既可在删除容器的同时也将数据卷删除。

2024-01-25 09:58:02 494

原创 10Docker Compose快速入门

本节我们来探讨Compose使用的基本步骤,并编写一个简单示例快速入门。

2024-01-24 14:43:29 580

原创 九安装Docker Compose

本节我们来讨论如何安装Compose。

2024-01-24 14:42:52 341

原创 八Docker Compose简介

Compose是一个用于定义和运行多容器Docker应用程序的工具,前身是Fig。它非常适合用在开发、测试、构建CI工作流等场景。经过前文讲解,我们可使用Dockerfile(或Maven)构建镜像,然后使用docker命令操作容器,例如docker run、docker kill等。本章我们来讨论如何使用Docker Compose来轻松、高效地管理容器。为了简单起见,本章将Docker Compose简称为Compose。然而,使用分布式应用一般包含若干个服务,每个服务一般都会部署多个实例。

2024-01-23 09:59:50 309

原创 七Docker可视化管理工具

本节介绍几款Docker可视化管理工具。

2024-01-23 09:59:17 568

原创 六使用Maven插件构建Docker镜像

我们知道,Maven是一个强大的项目管理与构建工具。如果可以使用Maven构建Docker镜像,那么我们的工作就能得到进一步的简化。经过调研,以下几款Maven的Docker插件进入笔者视野,如表13-1所示。表13-1 Maven的Docker插件列表笔者从各项目的功能性、文档易用性、更新频率、社区活跃度、Stars等几个纬度考虑,选用了第一款。这是一款由Spotify公司开发的Maven插件。下面我们来详细探讨如何使用Maven插件构建Docker镜像。

2024-01-22 11:12:50 1495

原创 五使用Nexus管理Docker镜像

Nexus是一个多功能的仓库管理器,是企业常用的私有仓库服务器软件。目前常被用来作为Maven私服、Docker私服。本文基于版本进行讲解。

2024-01-22 11:12:20 1155

原创 四搭建dockerhub私有仓库

很多场景下,我们需使用私有仓库管理Docker镜像。本节我们来探讨如何搭建、使用私有仓库。可使用docker-registry项目或者Docker Registry 2.0来搭建私有仓库,但docker-registry已被官方标记为过时,并且已有2年不维护了,不建议使用。我们先用Docker Registry 2.0搭建一个私有仓库,然后将Docker镜像推送到私有仓库。

2024-01-15 10:00:01 549

原创 三使用Docker Hub管理镜像

Docker Hub是Docker官方维护的Docker Registry,上面存放着很多优秀的镜像。不仅如此,Docker Hub还提供认证、工作组结构、工作流工具、构建触发器等工具来简化我们的工作。前文已经讲过,我们可使用命令搜索存放在Docker Hub中的镜像。本节我们来详细探讨Docker Hub的使用。

2024-01-15 09:59:30 640

原创 二Dockerfile实战

尽管Docker Hub中已存在基于CentOS 7的镜像,但仍可使用本例的内容学习、巩固Dockerfile的相关知识。:默认Nginx不在官方Yum仓库中,需要先安装RPMS仓库包,这样才能用Yum安装Nginx。基于CentOS 7镜像,在其中安装Nginx,并启动。,请将其制作成Docker镜像,并启动。有一个Java应用,在裸机中的启动命令是。

2024-01-12 14:29:55 625

原创 Dockerfile指令详解

从src目录复制文件到容器的dest。其中src可以是Dockerfile所在目录的相对路径,也可以是一个URL,还可以是一个压缩包这样的命令,因为命令首先会将上下文路径和其子目录发送到docker daemon。② 如果src是一个URL,同时dest不以斜杠结尾,dest将会被视为文件,src对应内容文件将会被下载到dest。③ 如果src是一个URL,同时dest以斜杠结尾,dest将被视为目录,src对应内容将会被下载到dest目录。

2024-01-12 14:29:19 871

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除