自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (20)
  • 收藏
  • 关注

原创 InnoDB基于MVCC和next-key锁解决幻读问题

MySQL多版本并发控制事务的ACID事务的隔离级别锁锁粒度多版本并发控制(MVCC)SELECTINSERTDELETEUPDATE可重复读下,MVCC的幻读问题读操作不会出现幻读更新操作会出现幻读问题这种现象的原因快照读当前读如何解决当前读导致的幻读问题使用可串行化的隔离级别使用next-key锁,即更新时基于非唯一索引更新数据事务的ACID原子性:整个事务中的所有操作要么全部提交成功,要么全部失败回滚;一致性:总是从一个一致性的状态转换到另外一个一致性的状态,无中间状态;隔离性:一个事务所做

2020-06-27 16:30:45 3472 6

原创 JVM类加载机制-类是如何被加载的?

JVM把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被JVM直接使用的Java类型,这就是JVM的类加载机制类的生命周期JVM规范中初始化的条件被动引用不会触发初始化类加载的过程加载:非数组类:数组类:验证文件格式验证元数据验证字节码验证符号引用验证准备解析初始化类的生命周期加载、验证、准备、初始化和卸载5个阶段的顺序是确认的,类加载过程必须按照这种顺序按部就班的开始,在动态绑定中解析可以在初始化后完成JVM规范中初始化的条件使用new关键字实例化对象

2020-06-21 22:00:41 453

原创 JVM相关知识简单总结

JVM内存区域1,程序计数器:当前线程执行的字节码的行号指示器,线程私有,唯一一个虚拟机规范中没有规定任何OOM的区域2,虚拟机栈:用于存储局部变量,操作数栈,动态链接,方法出口信息等3,本地方法栈:执行Native方法服务使用的的内存4,堆:1个Eden区+2个survivor区+老年代,垃圾回收器管理的主要区域5,方法区:存储类信息,常量,静态变量,也叫永久代JVM常见参数-Xms 初始堆大小-Xmx 最大堆大小-Xmn 新生代大小(一般为整个堆的1/3或1/4.

2020-06-16 13:33:59 361

原创 基于okhttp3和CompletableFuture异步调用RESTful接口

基于okhttp3和CompletableFuture异步调用RESTful接口

2023-09-14 15:04:47 429

原创 乐观锁和悲观锁在实际开发中的应用

业务开发中更新操作引发的一点思考背景新增操作常见错误处理优化处理更新处理常见错误处理优化处理乐观锁方案悲观锁方案 update悲观锁方案 select for update背景在系统开发中,新增数据和更新数据是很常见的业务行为,有时更新数据还会附带新增数据的行为,面对这些业务行为,系统必须做到接口的幂等性和关联数据的一致性,下面先针对两种业务的常见错误写法和正确写法。新增操作常见业务场景:A系统给B系统同步业务数据,业务数据中有一个唯一字段businessCode作为幂等字段。常见错误处理先根

2021-03-13 13:41:24 410 1

原创 从本地事务到分布式事务

从本地事务到分布式事务本地事务本地事务的ACIDSpring代理本地事务Spring代理本地事务提供的属性传播属性隔离级别本地事务和Spring代理事务之间的关系Spring代理事务失效分布式事务分布式事务理论CAP理论BASE理论刚性事务2PC方案XA实现Seata实现TCC方案柔性事务可靠消息最终一致性本地消息表事务性消息最大努力通知四种方案比较本地事务当一个事务被提交给了数据库,则数据库需要确保该事务中的所有操作都成功完成且其结果被永久保存在数据库中,如果事务中有的操作没有成功完成,则事务中的所有

2020-10-14 12:28:47 221

原创 Java中的内部类

普通内部类外部类不能访问普通内部类属性和方法普通内部类可以访问外部类属性和方法创建普通内部类的时候必须创建外部类静态内部类静态内部类可以访问外部类静态属性和方法静态内部类不能访问外部类非静态属性和方法外部类不能访问静态内部类的属性和方法示例代码:public class A { private Integer a; private static Integer s = 10; public A() { } public A(Intege

2020-09-30 22:49:29 1838

原创 8种排序算法简单总结

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入时间复杂度空间复杂度稳定性选择选择选择选择冒泡选择选择选择插入选择选择

2020-07-25 12:32:49 900

原创 Redis中的Bitmap和HyperLogLog

Redis中Bitmap的妙用 Bitmap存储结构Bitmap上的统计bitcount count [start end]bitop operation destkey key [key ...]Bitmap的妙用用户在线状态用户签到统计活跃用户Bitmap存储结构在Redis中以位为单位存储字符串,这种存储结构称为Bitmap,也叫位图。每个字节存储结构如下:offset01234567value00000000setbit key 0 1

2020-07-23 17:46:46 792

原创 MySQL表设计和高性能索引

MySQL表设计和高性能索引MySQL数据类型整数类型实数类型VARCHAR 和 CHARBLOB和TEXT日期类型位数据类型MySQL表结构设计表设计的一些原则范式设计优点和缺点混用范式化和反范式化缓存表和汇总表计数器表高性能索引索引的优点B-Tree索引可以使用B-Tree索引的查询类型B-Tree索引的限制哈希索引哈希索引的限制高性能的索引策略聚簇索引和非聚簇索引InnoDB中使用聚簇索引插入行MySQL数据类型整数类型类型TINYINTSMALLINTMEDIUMINTINT

2020-07-12 15:53:05 295

原创 微服务架构模型和进程间通信

微服务架构微服务的扩展模型X轴扩展在多个相同实例之间实现请求的负载均衡Y轴扩展根据功能将应用程序拆分为服务Z轴扩展根据请求的属性路由请求微服务架构与SOA的异同微服务架构的好处微服务架构的弊端微服务进程间通信基于同步远程过程调用模式的通信:REST API开发可靠的远程过程调用代理:基于异步消息模式的通信:消息中间件处理重复消息使用异步消息提高可用性:消除同步交互微服务的扩展模型X轴扩展在多个相同实例之间实现请求的负载均衡Y轴扩展根据功能将应用程序拆分为服务Z轴扩展根据请求的属性路由请求微

2020-07-11 16:30:51 341 1

原创 SpringBoot中基于AOP打印接口日志和全局异常处理

SpringBoot项目中基于AOP特性打印接口日志新建SpringBoot项目引入web、aop和log4j2依赖包新增log4j2配置文件自定义切入点自定义切面测试代码运行效果新建SpringBoot项目import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic

2020-06-23 14:28:04 684

原创 JVM垃圾回收器-如何正确选择垃圾回收器?

JVM垃圾回收器回收的空间包括新生代和老年代,基于标记-清除,复制,标记-整理等算法实现,自动回收JVM堆内存垃圾回收期分类垃圾回收器介绍并发与并行内存分配与回收策略垃圾回收期分类连线表示两款垃圾回收器可配合使用,目前JDK8最多的搭配是PS+PO垃圾回收器介绍Serial:多个用户线程运行之后达到“安全点”,垃圾回收线程单线程回收新生代,采用复制算法实现,主要用于单CPU环境;ParNew:多个用户线程运行之后达到“安全点”,垃圾回收线程多线程并行回收新生代,采用复制算法实现,主要用于多CP

2020-06-20 16:46:52 1039

原创 synchronized实现原理总结

synchronized用于多线程同步访问临界区,保证线程安全实现原理锁升级synchronized的特性synchronized的用法实现原理基于对象头的MarkWord存储锁状态,实现获取锁,释放锁以及锁升级所以首先要了解对象头,在未开启指针压缩情况下:对象头 = 8byte的MarkWord + 8byte的ClassPointer开启指针压缩后:对象头 = 8byte的MarkWord + 4byte的ClassPointer + 4byte的对齐数据对齐是因为64位的JVM寻址空间是

2020-06-17 18:12:40 1708

原创 JVM垃圾回收算法-对象已死吗?

1,判断对象是否已死引用计数法:实现:给对象添加一个引用计数器,每当有一个地方引用到它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的缺点:无法解决循环引用的问题可达性分析算法实现:从GC Roots对象为起点,往下搜索,形成一条引用链,当对象与任何引用链没有相连的时候,证明该对象是不可用的GC Roots对象: 虚拟机栈引用的对象 方法区中类静态属性和常量引用的对象 本地方法栈中JNI引用的对象...

2020-06-16 16:31:34 292

原创 安装Linux虚拟机网络设置

virtual box安装Linux虚拟机网络设置:1,桥接方式:虚拟机内部自动分配ip,虚拟机对于宿主机是透明的,可根据ip地址ssh直连2,NAT方式:虚拟机内部也会分配ip,但是虚拟机对于宿主机是不可见的,不能使用ip直连,必须配置网络接口映射,如下图:3,使用NAT方式配置虚拟机网络时,安装docker容器后,如果需要容器对宿主机可见,也必须配置网络接口映射,如mysql,nginx等...

2020-06-16 13:27:00 254

原创 git提交和撤销

提交1,提交到暂存区 git add -A2,提交到本地仓库 git commit -m ‘refactor[dev]:备注’3,推送到远程 git ps origin dev撤销1,没有add的文件撤销git checkout -- filename 单个git chechout -- . 多个2,已经add的文件撤销git reset HEAD filename 撤销至没有add的状态3,已经push远程的撤销git revert 提交版本号 ..

2020-06-16 13:19:21 204

原创 Linux环境下yum安装docker

1,卸载docker历史信息yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine2,安装系统工具yum install -y yum-utils device-mapper

2020-06-16 13:16:25 421

原创 常用开发组件构建docker镜像命令

关系型数据库mysqldocker run -d -p 3306:3306 --name mysql \ -e MYSQL_ROOT_PASSWORD=root \ -v /map/mysql/data/:/var/lib/mysql/ \ -v /etc/localtime:/etc/localtime:ro \ mysql:5.7.20 \ --character-set-server=utf8mb4 \ --collation-server=utf8mb4_general_ci \ --max_c.

2020-06-16 13:14:38 176

原创 DDL语句规范

#例子一:创建库CREATE DATABASE DBORDER CHARACTER SET utf8 ;USE DBORDER;#例子二:创建表CREATE TABLE PAGE (id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增id',url VARCHAR(255) NOT NULL COMMENT '页面地址',description VARCHAR(255) DEFAULT NULL COMMENT '页面...

2020-06-16 13:10:07 417

[1080P]1920x1080官方壁纸4张.zip

超高清1920*1080(楼主点了要1920的,其他那些分辨率低的我就不上图了) 4张图,本人用了6年的壁纸

2020-06-16

esdk-obs-java-3.20.3.zip

对象存储服务 OBS 对象存储服务(Object Storage Service)是一款稳定、安全、高效、易用的云存储服务,具备标准Restful API接口,可存储任意数量和形式的非结构化数据

2020-06-16

dcm4che-linux-x86_64.zip

dcm4chee是dcm4che开源项目中的一部分,是一款符合IHE规定的影像管理/归档应用。dcm4chee遵循DICOM、HL7标准,实现了图像存储、图像提取、及健康领域的工作流程管理。

2020-06-16

wechat_devtools_1.02.1904090_x64.exe

小程序提供了一个简单、高效的应用开发框架和丰富的组件及API,帮助开发者在微信中开发具有原生 APP 体验的服务。 本章分主题的介绍了小程序的开发语言、框架、能力、调试等内容,帮助开发者快速全面的了解小程序开发的方方面面。

2020-06-16

xjar-master.zip

Spring Boot JAR 安全加密运行工具, 同时支持的原生JAR. 基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动, 动态解密运行的方案, 避免源码泄露以及反编译.

2020-06-16

arthas-idea-plugin.zip

当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的运行状况? 有什么办法可以监控到JVM的实时运行状态? 怎么快速定位应用的热点,生成火焰图?

2020-06-16

idea-jmh-plugin.jar

IDEA JMH基准测试插件 微基准测试,他是测的某一个方法的性能到底是好或者不好,换了方法的实现之后他的性能到底好还是不好。

2020-06-16

系统反病毒补丁

永恒之蓝补丁

2017-05-15

非常好用的卸载工具

卸载软件非常干净,删除一切垃圾文件

2017-05-05

oracle-jdbc-driver-11.2.0.2.0.jar

Java开发者经常用到的Oracle数据库连接工具

2017-02-20

mysql-connector-java-5.1.40.jar

Java开发者经常用到的工具类

2017-02-20

lucene基础jar包

lucene基础jar包

2017-01-22

Junit测试jar包

Junit测试jar包

2017-01-22

汉字转拼音工具jar包

汉字转拼音工具jar包

2017-01-22

hadoop-1.2.1

大数据

2016-12-12

源码查看工具

可看jar包的源码,非常好用,直接拖拽jar包即可

2016-11-07

javascript原型DEMO

javascript原型DEMO,想深入学习js的同学可以入手

2016-11-07

代码自动生成器

好用的代码生成器,可选择Struts或SpringMVC架构,增删改查一键生成

2016-11-07

Brackets.Release.1.8

轻量级前端开发工具,方便调试,随时可运行可查看结果

2016-11-07

jdk-6u45-windows-x64

jdk6初学者可入手

2016-11-07

空空如也

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

TA关注的人

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