自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mysql中MVCC原理

MVCC 是啥?MVCC 的英文全称是 Multiversion Concurrency Control ,中文意思是多版本并发控制技术。原理是,通过数据行的多个版本管理来实现数据库的并发控制,简单来说就是保存数据的历史版本。可以通过比较版本号决定数据是否显示出来。读取数据的时候不需要加锁可以保证事务的隔离效果。MVCC 可以解决什么问题?读写之间阻塞的问题,通过 MVCC 可以让读写互相不阻塞,读不相互阻塞,写不阻塞读,这样可以提升数据并发处理能力。 降低了死锁的概率,这个是因为 MV...

2021-04-16 16:41:27 126

原创 jvm知识导图

2021-04-15 19:29:00 110

原创 CPU 100%问题排查

1、top -ctop -c 命令找出当前进程的运行列表按一下 P 可以按照CPU使用率进行排序显示Java进程 PID 为 2609 的java进程消耗最高2、top -Hp pid然后我们需要根据PID 查出CPU里面消耗最高的进程使用命令 top -Hp 2609 找出这个进程下面的线程,继续按P排序可以看到 2854 CPU消耗最高3、printf '%x\n' pid转换为十六进制4、jstack pid |grep 'nid' -C5 –...

2021-04-15 19:27:18 183

原创 零拷贝原理

前言磁盘可以说是计算机系统最慢的硬件之一,读写速度相差内存 10 倍以上,所以针对优化磁盘的技术非常的多,比如零拷贝、直接 I/O、异步 I/O 等等,这些优化的目的就是为了提高系统的吞吐量,另外操作系统内核中的磁盘高速缓存区,可以有效的减少磁盘的访问次数。这次,我们就以「文件传输」作为切入点,来分析 I/O 工作方式,以及如何优化传输文件的性能。正文为什么要有 DMA 技术?在没有 DMA 技术前,I/O 的过程是这样的:CPU 发出对应的指令给磁盘控制器,然后返回; 磁盘...

2021-04-15 19:23:19 186

原创 Hystrix中线程上下文ThreadLocal

ThreadLocal在Java编程语言里ThreadLocal是用来方便开发人员在同一线程上下文中不同类、不同方法中共享信息的,ThreadLocal变量不受其他线程的影响,不同线程间相互隔离,也就是线程安全的。在实际的业务链路中从入口到具体的业务实现有时候需要共享某些通用信息,比如用户唯一标识、链路追踪唯一标识等到,这些信息就可以使用ThreadLocal来存储实现,下面就是一个简单的同一链路中共享traceId的示例代码。 1 2 3

2021-04-12 19:24:24 400

原创 踩坑mysql保存emoji表情报错

表单输入emoji提交报错。查看了后台日志,发现这样的日志:org.springframework.jdbc.UncategorizedSQLException: ### Error updating database. Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x83' for column 'name' at row 1查看mysql表字符编码发现这个表使用的是utf8编码,utf8编码最多只支持3个.

2021-04-09 19:12:03 404

原创 mybatis拦截器使用及原理

使用拦截器Web开发中我们经常会碰到分页操作,一个项目中或许有多处使用到分页,这时如果Java后台使用MyBatis作为持久层,我们就可以使用MyBatis的拦截器功能来完成整个项目中多处的分页操作,减少代码的冗余。拦截器代码//拦截StatementHandler中参数类型为Connection的prepare方法@Intercepts({@Signature(type=StatementHandler.class,method="prepare",args={Connection.cla

2021-04-09 16:42:00 1241

原创 Redis底层数据结构及原理

1、底层数据类型查看OBJECT ENCODING key  该命令是用来显示那五大数据类型的底层数据结构。  比如对于 string 数据类型:    我们可以看到实现string数据类型的数据结构有 embstr 以及 int。再比如 list 数据类型:  2、简单动态字符串SDSSDS定义free:还剩多少空间len:字符串长度buf:存放的字符数组SDS空间预分配为减少修改字符串带来的内存重分配次数,sds采用了“一次管够”...

2021-04-08 17:27:04 232

原创 mysql日志系统

图来自极客时间的mysql实践,该图是描述的是MySQL的逻辑架构。一、binlog什么是binlogbinlog记录了数据库表结构和表数据变更,比如update/delete/insert/truncate/create。它不会记录select(因为这没有对表没有进行变更)binlog长什么样binlog存储着每条变更的SQL语句,如下图binlog作用主要有两个作用:复制和恢复数据MySQL在公司使用的时候往往都是一主多从结构的,从服务器需要与主服务器的数据保持一..

2021-04-08 17:24:54 67

原创 垃圾回收底层原理

一、如何判断对象已成垃圾?1、引用计数--直接回收引用计数其实就是为每一个内存单元设置一个计数器,当被引用的时候计数器加一,当计数器减少为 0 的时候就意味着这个单元再也无法被引用了,所以可以立即释放内存。优点:内存释放的开销平摊到应用的日产运行中,计数为 0时,就可以立马释放内存,对于内存敏感的场景很适用。缺点:循环引用问题--致命缺陷 需要占据额外的存储空间,如果本身的内存单元较小则计数器占用的空间就会变得明显。Python 没有解决引用计数的循环引用问题,只...

2021-04-08 17:13:57 271

空空如也

空空如也

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

TA关注的人

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