自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分布式唯一ID

一 什么是分布式唯一ID,有些什么需求在分布式系统中,要求某些ID不能重复,必须唯一。他需要满足以下特点:第一:全局唯一,不能重复第二:递增性:下一个ID一定比上一个大第三:安全性:不得暴露与业务相关的信息,防止用户恶意获取二 有哪些分布式唯一主键生成方案,各自优缺点2.1 UUID优点:简单缺点:第一,16字节大小,存储成本高,影响写入速度;第二,最关键是的做主键非常不合适,在因为不是趋势递增,那么在主键索引中就不是连续的,那么插入数据的时候就是离散的存储,导致页分裂.

2021-10-22 15:42:43 1108

原创 MySQL深度剖析之索引专题(2021)

9.1 为什么需要使用索引第一:减少了MySQL需要扫描的数据量,尤其是全表扫描第二:随机IO变成顺序IO,提升查询速度可以快速匹配where子句、排序和分组也可以使用索引,匹配原则最左匹配、特定索引列的min和max计算、9.2 MySQL 使用了哪些索引MySQL 提供了BTree和Hash索引,一般使用的是BTree索引,Hash索引很少使用或者几乎不使用9.3 MySQL使用的BTree索引是基于什么数据结构的,为什么不使用B-Tree而是B+Tree呢?这两者有何相

2021-10-20 07:21:00 441

原创 MySQL深度剖析之事务隔离级别和锁机制(2021)

一 事务隔离级别和锁机制1.1 多个事务并发修改同一条数据或者对同一条数据并发读写存在哪些事务并发问题1.1.1 脏读(未提交读)A事务读取了别的事务还未提交的更新,而B事务是有可能回滚的。1.1.2 虚读(不可重复读)A事务读取了别的事务提交的更新,导致A事务范围内多次查询,返回的结果不一样。一般不是什么大问题,取决于你的业务是否允许在同一个事务内每次查询结果不一样,如果允许,就没啥事,如果不允许则就有问题了。1.1.3 幻读A事务读取了别的事务新增的数据,导致事务内每次查询结

2021-10-20 07:04:19 479

原创 MySQL深度剖析之数据在磁盘上存储(2021)

一 数据在磁盘上存储格式(row format)表中的数据在磁盘上存储是有格式的,可以在创建表的时候通过row_format指定,比如MySQL5.0之前的reduntant,MySQL5.0 之后的compact和dynamic,两个差不多,区别在于页面溢出处理上,还有compressed,在dynamic基础上使用了压缩算法,MySQL5.7 默认就是dynamic,我们这里以compact举例子,它格式如图所示:二 变长字段长度列表MySQL表中有些字段长度不固定,是动态的,.

2021-10-20 06:51:03 526

原创 MySQL深度剖析之Buffer Pool专题(2021)

一 Buffer Pool专题1.1 为什么需要Buffer Pool如果我们每一次查询或者更新都需要到磁盘找到对应数据页,每次的都需要从磁盘加载,那么性能必定是很差的。所以将一些从磁盘加载的数据页,放入到内存缓存起来,而不用每次都从磁盘加载,提升性能。1.2 Buffer Pool数据结构#1 数据库在启动的时候,根据Buffer Pool大小在申请一块内存区域,叫做Buffer Pool,默认大小128MB,可以通过innoddb_buffer_pool_size控制。#2 每一

2021-10-20 06:45:31 136

转载 MySQL深度剖析之undo log & redo log & binlog专题(2021)

因为每次对磁盘随机读写影响性能,尤其是高并发的时候,所以引入了Buffer Pool, 即只要更新Buffer Pool中的记录,则算更新成功,那如果更新完了还没有flush到磁盘则宕机了,此时内存的这些修改后的记录就会丢失。所以引入了redo log,在写入内存的时候,同样写入到redo log。如果在事务期间,需要执行多条SQL,如果更新某一条SQL失败,需要回滚,这时候前面的已经写入到内存了,怎么回滚呢? 所以引入了undo log, 在写入内存之前,记录修改数据之前的记录。一 r

2021-10-19 22:41:02 181

原创 MySQL深度剖析之SQL语句更新流程(2021)

#1 线程开始执行SQL更新请求之前,会创建事务,并且为当前线程分配一块内存空间叫做binlog cache注意:binlog cache 是每一个线程分配一个;binlog cache大小受binlog_cache_size控制;如果binlog cache达到binlog_cache_size则将binlog cache内容移到一个临时文件中保存,但是这个文件不能超过max_binlog_cache_size,如果超过则报错;客户端断开连接,binlog cache释放#2 SQL...

2021-10-19 22:35:31 171

原创 MySQL深度剖析之MySQL架构(2021)

一 为什么需要数据库连接池每一个线程都需要通过JDBC驱动去和数据库建立网络连接,然后执行SQL,SQL执行完毕,线程销毁,如果并发量很大的时候,就需要不同的建立网络连接,然后销毁连接,并且建立网络连接也是需要耗时的,所以效率低下。所以使用数据库连接池,可以循环利用数据库连接。二 数据库MySQL的架构MySQL服务器架构主要分为三层:应用层、逻辑层和物理层。应用层:主要负责和客户端进行交互,建立连接,响应请求逻辑层:主要负责SQL查询、事务管理、恢复等物理层:主要负责写日志

2021-10-19 22:29:46 328

原创 MySQL裸机性能测试(2021)

一 为什么要对新申请的MySQL服务器压测新申请的机器我们是不知道性能的,系统上线之前,我们需要知道数据库的性能,从而在系统部署之后的压测中,判断系统的性能是高于还是低于数据库性能,从而确定瓶颈或者性能问题是在系统还是在数据库。比如数据库的QPS是2000,可能应用系统的QPS才500.二 数据库压测性能指标有哪些2.1 IOPS: 随机IO并发处理能力,比如200IOPS2.2 吞吐量: 磁盘每一秒中可以读写多少字节数据量, 比如redo log受吞吐量影响2.3 延迟:往磁盘写一

2021-10-19 22:26:07 534

原创 网络协议:网络基础

什么是计算机网络?将各个分散的、具有独立功能的计算机系统,通过网络设备(路由器)和线路(光纤)连接起来,然后通过软件实现资源共享和信息传递的系统。一 网络指标1.1 速率速率: 指的是每一秒发送端和接收端传输的比特数量(即8位,二进制表示,1代表高电压,0代表低电压)。或者说每一秒两段之间传输的数据量。常见的单位b/s kb/s, Mb/s Gb/s等1.2 带宽带宽: 表示网络通信线路传输数据的能力,即最高速率。比如100.0 Mbs (百兆带宽)1000.0 Mbs(千兆带宽

2021-10-11 13:55:40 2013 1

原创 网络协议:UDP

一 UDP协议及其特点1.1 什么是UDP协议UDP: User Datagram Protocol, 用户数据报协议,它是一种无连接,不可靠的传输,面向报文的一种协议。在IP协议的基础上提供了简答的功能,比如:复用分用和差错检测功能1.2 UDP协议特点#1 无连接: 和IP协议一样,发送数据报之前不需要建立连接,减少了网络开销和延时,节省了系统资源#2 不可靠: 和IP协议一样,只保证尽最大努力交付,所以不保证可靠交付。因此不需要维护一些复杂的连接状态信息,适合可以接受数据丢失的

2021-10-11 06:53:14 2190

原创 网络协议:TCP拥塞控制

一 什么是网络拥塞和拥塞发生的原因分析当网络中传输的分组数目较多的时候,超过了网络负载,造成网络经常丢包,从而导致传输性能下降的一种现象。如图示:二 拥塞控制方法2.1 慢开始算法 和 拥塞避免算法慢开始算法的核心思想:就是先发送一个较小的报文段,然后后续发送的报文段主键以指数倍数形式增长。但是我们知道这样以指数倍数形式增长会有一个问题,就是可能某一时候需要发送大量的报文段,最后导致网络拥塞,报文段丢失。所以提出来拥塞避免算法。对于慢开始算法,我们设置一个阀值

2021-10-11 06:52:57 312

原创 网络协议:TCP流量控制

一 什么是流量控制就是在接收端拥堵的时候,发送端应减少报文段的发送;在接收端不拥堵的时候,可以恢复到正常的报文段的发送。是通过滑动窗口实现的,通过窗口来控制流量。二 如何进行流量控制的#1 发送端向接收端发送连接请求,接收端对请求进行确认,确认包里会告诉发送端它的接受窗口window是多大(能连续接收多少个字节),发送端后面就会根据这个window设置发送端自己的发送窗口大小#2 当接收窗口来不及处理发送端报文段的时候,则会调整(缩小)window窗口,接收端此时根据接收端确认包里的

2021-10-11 06:52:44 199

原创 网络协议:TCP可靠传输

我们都知道TCP协议是一个传输可靠的协议,那么它是怎么实现传输可靠的呢?它是由改进的停止等待协议和滑动窗口来保证传输可靠的。一 停止等待协议#1 发送端发送一个消息到接收端,就必须等待接收端确认,发送端才会发送下一个消息#2 如果在指定的超时时间内,接收端没有确认,原因可能是数据段还没有到达接收端就丢了,则发送端会重新发送#3如果在指定的超时时间内,接收端确认了,但是接收端的确认包丢了,则发送端也会重新发送,但是这次发送过来之后,接收端因为之前已经确认过,就会把之前的确认的数据丢弃#

2021-10-11 06:52:27 213

原创 网络协议:TCP连接管理

一 连接和断开连接过程中的一些状态术语CLOSED: 表示初始状态LISTEN: 服务器某个SOCKET处于监听状态SYN_SENT: 当客户端socket执行connect的时候,它首先会发送SYN报文,这个时候客户端就进入了SYN_SENT状态,并等待服务器的确认SYN_REVD:这个状态表示服务器端接受到了SYN报文,等待客户端的的确认ESTABLISHED: 表示连接已经建立了FIN_WAIT_1: 表示主动关闭连接方发起关闭连接的FIN报文后,进入这个状态,等到对方的确认

2021-10-11 06:52:16 225

原创 网络协议:TCP滑动窗口

一 什么是窗口以及窗口作用1.1 什么是窗口在TCP协议里,窗口是面向字节流的,一个窗口表示一定长度的字节数据, 窗口就可以用来收发一组连续的数据。TCP连接的两端都是可以收发数据的,收发两端都维护的有一个窗口结构。1.2 窗口作用#1 和停止等待协议使用,提升通信效率#2 可以控制数据传输速率和流量二 发送端和接收端窗口结构2.1 发送端窗口在发送缓冲区中,缓冲区分为4个部分:提供窗口: 指的是已发送但是未确认+即将发送的窗口。这个窗口需要接收端确认之后才能确定

2021-10-11 06:51:58 959

原创 网络协议:超时与重传机制

一 TCP 为什么需要重传因为网络层有可能出现数据包丢失,数据包重复或者无序的情况。为了保证数据传输正确,不重复和有序,所以TCP才提供可靠的数据传输服务。为了保证数据传输的正确性,所以TCP重传它认为已经丢失的包。TCP如何确认呢?TCP根据接收端返回至发送端的一系列确认信息来判断是否出现丢包。当数据段或确认信息信息丢失,则TCP触发重传操作。二 重传机制TCP拥有两套独立机制来完成重传,一是基于时间,而是基于确认信息的构成。2.1 基于计时器的重传一旦TCP发送端获取到了

2021-10-11 06:51:22 1609

原创 网络协议:TCP保活机制和Nagle算法

一 Nagle算法背景有时候,我们可能会遇到一些很小的分组,比如,20字节的IP首部,20字节的TCP首部和1字节的数据,如果很多这样的小分组数据,在局域网一般不会出现拥塞,但是在广域网就可有可能。所以Nagle算法就是为了解决这样的小分组问题二 Nagle算法详解#1 TCP连接上最多只能有一个未被确认的小分组,该分组的确认到达之前不能发送其他的小分组#2 发送端需要收集这些小分组,然后在未被确认的小分组确认的时候,就可以将收集的这些小分组组成一个报文段发送出去#3 但是如果长时间

2021-10-10 09:41:48 521

原创 网络协议:TCP

一 TCP 和 UDP 比较二 TCP协议特点#1 TCP协议是面向连接的传输层协议,即在应用程序在使用TCP协议之前,必须先建立TCP连接,数据传输完毕后还需要释放连接。#2 每一个TCP连接只能由两个端点,每一个TCP连接只能进行一对一传输#3 TCP协议提供数据可靠性,即数据无差错,不丢失,不重复,且按顺序发送(可靠有序、不丢不重)#4 TCP协议是全双工通信。TCP允许通信双方在应用进程任何时候都能发送数据。TCP连接的两端都设有接收缓存和发送缓存,用来临时存放双向通信数

2021-10-10 09:39:23 380

原创 网络协议:IP

一 IP协议的主要功能#1 寻址和路由#2 传递服务#3 数据报分片和重组二 IP协议的特点2.1无连接在发送数据包之前,不会和对方建立会话。即不关心对方时候可以接收到这个数据。2.2不可靠指的是IP协议不能保证IP数据可以准确达到接收端,他只承诺尽最大努力交付。一旦检测到数据发送失败,就会通知上层协议,不是自己尝试重传。三 IP协议数据报格式发送格式:IP数据报的格式主要分为两部分:一部分叫做首部;一部分叫做数据。3.1 版本(v

2021-10-10 09:37:18 553

原创 网络协议:HTTPS

一 什么是HTTPS协议?什么是SSL/TLS协议HTTPS: 就是安全的HTTP协议,由HTTP协议和TLS/SSL协议组成的。SSL: 是Secure Socket Layer的缩写,安全套接字层,位于应用层和传输层之间。是客户端和web服务器之间的安全交换信息的协议,提供两个基本安全的服务: 鉴别与加密。所有主流的浏览器都是支持SSL协议的。TLS: 是Transport Layer Security的缩写,那么他和SSL是什么关系呢?TLS是SSL标准化之后的产物,所以很多时候把

2021-10-10 09:36:08 1089

原创 网络协议:HTTP

一 什么是HTTP协议,有什么特点?HTTP协议是超文本传输协议,即Hypertext Transport Protocol。它具有以下特点:#1 是基于TCP协议的应用层协议#2 是基于客户端-服务器模式或者请求-响应模式的协议#3 是无状态协议。因为标准HTTP协议服务器端不需要维护客户端状态信息#4 默认是短连接。即客户端向服务器发请求,会建立连接,然后服务器端响应客户端之后,连接关闭。但是也可以使得HTTP协议保持长连接特性,通过keep-alive,即再这个时间段内,客户端和服

2021-10-10 09:34:32 462

原创 网络协议:DHCP

一 什么是DHCP协议DHCP协议,是Dynamic Host Configuration Protocol的缩写,动态主机配置协议。主要用于解决IP地址的动态分配问题。#1 它属于应用层协议#2 它是一种客户端和服务器工作模式,客户端和服务器通过广播方式交互,从而使得主机或者设备可以从DHCP服务器获取IP地址、子网掩码、默认网关等#3允许地址重复使用,即A用完了,退出网络后,又可以分配给B#4 支持续租模式。分配的IP地址不是无限制时长,是有时间限制的,如果时间到了就无法继续使用,所

2021-10-10 09:32:26 112

原创 网络协议:ARP协议

一 ARP协议ARP协议: 地址转换协议,即Address Resolution Protocol缩写,主要用于向局域网查找指定IP地址的MAC地址。每一个主机或者路由器都会维护一个ARP高速缓存表,表里面缓存的是IP地址和MAC地址,当需要在链路层封装数据帧的时候,需要知道目标IP的MAC地址,首先会从主机的ARP表查询,没有再向局域网内其他主机广播ARP报文;然后交换机会将ARP报文从其余端口广播出去,因为其余几个主机知道不是找自己则会自动丢弃报文;路由器发现是找自己的,然后将IP地址和MAC地

2021-10-10 09:31:18 800

原创 分布式选举协议:Paxos

一 CAP 理论对于一个分布式系统,不能同时满足以下三点:一致性,可用性和分区容错性一致性:指的是分布式中数据需要保持一致。一致性是指数据在多个副本之间是否能够保持一致的特性。当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致的状态可用性:指的是分布式系统中,可以对外提供服务可用性是指系统提供的服务必须一直处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果分区容错性:即分布式系统在遇到任何网络分区或者分裂故障的时候,仍然需要能够

2021-10-10 09:27:21 405

原创 分布式选举协议:Raft

一 前言分布式系统中,一致性指的是数据在多个副本之间是否能够保持一致性的特性。当一个系统数据在一致性的状态下进行更新后,应该保证系统的数据仍然处于一致性。如何来保证分布式系统中数据的一致性呢?这需要一致性协议来保证。二 Raft协议简介Raft协议:是Replication And Fault Tolerant的缩写,即复制和容错协议,是一种强一致性协议,在RAFT中,有三种类型的节点:# Leader: 处理客户端交互和日志复制操作等,一般只有一个Leader节点# Followe

2021-10-10 09:24:55 481

原创 分布式选举协议:Bully

一 Bully算法Bully算法是一种相对简单的选举算法,他的核心思想就是选举一个ID最大的进程作为Master。它在选举的过程中,主要包括以下三种消息类型:# Election: 表示发起一次选举消息# Answer: 如果该进程处于存活状态,则对选举消息进行响应的消息# Coordinate: 选举胜利者向其他进程发送的选举成功的消息二 选举流程2.1 发生选举的时机# 进程收到Master节点失效的消息(没有Master了需要重新选举Master)#..

2021-10-10 09:21:58 369

原创 消息中间件以及技术选型

一 什么是消息中间件?为什么使用消息中间件或者说消息中间件的使用场景?1.1 什么是消息中间件消息中间件:就是可以介于两个系统之间,用于存储、交换、路由消息的一个平台或者系统,1.2 为什么使用消息中间件1.2.1 异步处理当程序运行的时候,主线程或者说发起线程需要干一些事情,但是并不需要同步等待这件事情的结果,我们可以创建一个异步线程来干这件事情,也可以通过消息中间件来实现,将这个事件或者消息发送到消息中间件,程序继续往下走,消息中间件的消费者消费消息,实现具体的业务逻辑,从而达到

2021-10-03 23:10:35 529

原创 Redis之持久化

Redis在运行中,数据是存储在内存中的,因为存在各种问题导致服务器宕机或者进程死掉,那么重新启动Redis之后数据就没有了,所以我们需要一种持久化机制,将内存中的数据持久化到磁盘,下一次重启就可以从持久化文件恢复数据。Redis提供了2种持久化机制:RDB和AOF一 RDBRDB持久化就是Redis 把当前进程的数据生成快照存储到磁盘的过程,持久化的触发过程中分为:自动触发和手动触发。1.1 自动触发save m n自动触发可以通过配置设置多少秒内存在多少次修改的时候,自动触发。比如配

2021-09-26 22:58:51 117

原创 Redis之key的淘汰策略

Redis中有一些Key到期了,需要一些策略来处理这些过期的key, 设置到期时间的key会放入一个单独的字典中,以后会定时遍历这个这个字典来删除到期的key,除了定时遍历以外,还会使用惰性策略来删除过期的key,当客户端访问这个的key时候会检查到期时间,到期了就立即删除。而定时删除是集中式处理。一 Redis定时扫描策略Redis是单线程,如果某一段时间过期的key很多,删除的时候会不会出现卡顿情况。Redis有一个定时扫描策略:#1 Redis默认1秒扫描10次有到期时间的字典,即差不

2021-09-26 20:15:14 710

原创 Redis之数据结构和底层编码

一 字符串(string)在Redis的世界里,数据类型没有什么整数、浮点数、布尔值等,只有一种类型来代替他们,那就是字符串。字符串无论是否加引号,redis可以自动识别它是否是整数或者浮点数,亦或是普通的字符串。如果是整数,那我们还可以进行自增自减等操作,如果是浮点数,则会被检查出来不是整数,所以不能自增,只能够增加指定的浮点类型的数据。#1 Redis的字符串是动态的可以修改的字符串,内部结构类似于Java的ArrayList,采用预分配内存来减少频繁的内存分配,如果内存小于1M的,则成倍扩

2021-09-26 11:29:30 525

原创 设计模式之桥接模式

一 模式背景在很多时候,继承足以解决很多问题了,但是有的还不是更优秀的解决方案。比如有时候可能会遇到那种组合式的类,有2个维度可以变化,进行不同的组合,然后完成不同的功能。比如开发报表功能的时候,可选则的报表工具是一个维度,要构建什么类型的报表又是一个维度,我们可以通过不同的报表工具完成这些报表的产生。如图示:如果我们定一个抽象基类ReportTools, 然后要实现以XML,CVS格式输出形成报表,我们使用JasperReport,则需要创建2个类:JasperXMLReportTools

2021-09-15 11:46:43 87

原创 设计模式之装饰器模式

一 模式背景有些时候,我们希望在原有类的基础上,对功能进行增强或者减少,并且还要能够动态组合功能。我们抛开设计模式首先考虑到的是添加功能函数,或者是直接继承。很明显第一种方式是最low的,不符合开闭原则;第二种方式呢,如果使用继承,我们也肯定可以完成功能,而且效果比直接修改以前代码好很多,但是扩展性,灵活性还是差一些,如果有很多不同的组合或者搭配,整个继承体系变得臃肿。二 装饰者模式(Decorator)装饰者模式:就是可以动态给一个对象添加或者删除功能,而对于原对象来说是透明的,即原对象是

2021-09-15 09:54:18 92

原创 设计模式之代理模式

一 Proxy 代理代理:字面上讲,在别人的授权范围内,代别人处理。也就是说,不直接和你要访问的人或者对象打交道,而是和他的代理人或者代理对象打交道。比如说常见的代理服务器和微商代理。用代理服务器举例,你访问代理服务器,代理服务器再从真实服务器获取数据或者资源返给你。这期间,你是不知道代理服务器背后的真实服务器的,所以你也不会真实服务器进行交互。这样做的好处有利于保护真实服务器的安全。代理模式:为真实对象提供一个代理,然后外部通过访问代理对象,从而实现对真实对象的访问。代理分类...

2021-09-15 07:54:16 102

原创 设计模式之模板方法模式

一 模式背景有时候,我们可能会遇到这么一种情况,不同的场景下,执行的业务算法的流程或者是骨架是一样的,但是在这些算法中,有一些是可以复用的,而且扩展起来也不是很方便。二 模板方法模式2.1 什么是模板方法模式模板方法模式:固定算法骨架(流程),将一些步骤延迟到子类实现。这样既方便扩展,而且我们可以将一些公共的算法、提取出来。2.2 优缺点优点:1 可以封装不变部分,扩展可变部分2 提取出公共部分代码,便于维护,也避免代码重复缺点:算法骨架如果要修改,则

2021-09-14 21:53:23 75

原创 设计模式之单例模式

一 单例模式1.1 单例模式单例模式:保证一个类在全局只有一个实例,并对外提供一个访问接口。1.2 使用场景1 需要统计全局数据2 创建一个对象需要耗费资源过多,比如IO或者数据库资源3 一般工具类都会单例模式二 优点和缺点优点:内存只有一个或者极少实例,减少了频繁创建对象的开销,节省内存等资源,有利于提升性能缺点:单例模式扩展比较困难,一般都需要修改代码三 代码实例单例模式的七种实现方式:3.1饥汉式public class S

2021-09-13 23:10:32 77

原创 设计模式之工厂模式

一 简单工厂(静态工厂)1.1 什么是简单工厂就是一个可以根据客户端或者配置文件提供参数,从而选择创建不同对象的工厂模式。本质在于选择不同产品的实现。特点: 不符合开闭原则;简单场景: 适合明确知道未来产品类型很少变化的场景,平常使用的较多。一般简单工厂我们都不需要实例化,我们可以把它实现成工具类,直接使用静态方法,所以简单工厂的方法通常都是静态的,也被称为静态工厂。1.2 代码示例public interface CPU { public void des...

2021-09-13 23:05:51 138

原创 2021-06-01 深入分析锁的基础知识

一 对象在内存中的布局? 创建一个Object对象占用多少内存?1.1 对象在内存中的布局?SHAPE \* MERGEFORMAT ​我们知道,对象是放在堆中的,那么对象是怎么构成的?只包括实例数据吗?堆中的对象主要由三部分组成:对象头(object header)、实例数据(instance data)和对齐填充(padding)。SHAPE \* MERGEFORMAT ​SHAPE \* MERGEFORMAT ​对象头:主要由三部分组成,包括m...

2021-06-01 08:49:09 189

原创 2021-06-01 深入分析偏向锁、轻量级锁和重量级锁

一 重量级锁1.1 什么是重量级锁?重量级是怎么体现的?第一:执行同步代码块的时候或者执行同步方法的时候,需要为锁对象创建监视器,监视器用于关联锁对象、以及锁对象的原始头信息、重入次数、竞争失败队列、竞争队列和阻塞队列等信息,所以保存的东西占用的内存量很多,尤其是线程并发量大的时候。第二:另外线程竞争失败的队列需要进入队列挂起或者线程阻塞也需要挂起,当挂起的时间到期又需要唤醒线程,等待和唤醒是属于系统调用,会涉及到CPU在用户态和内核态切换,线程太多就会频繁切换。第三:内核线程需要操作系统进

2021-06-01 08:28:21 572 1

原创 2021-06-01 深入分析锁升级流程的基础

一 对象在内存中的布局? 创建一个Object对象占用多少内存?1.1 对象在内存中的布局?我们知道,对象是放在堆中的,那么对象是怎么构成的?只包括实例数据吗?堆中的对象主要由三部分组成:对象头(object header)、实例数据(instance data)和对齐填充(padding)。对象头:主要由三部分组成,包括mark word(关于hashcode、锁或者GC分代信息的记录), class pointer(指向方法区class的指针)、数组长度。其...

2021-06-01 08:00:15 299

mysqld_exporter-0.10.0.linux-amd64.tar.gz

mysqld_exporter-0.10.0.linux-amd64.tar.gz

2021-04-19

zabbix-3.0.10.tar.gz

zabbix-3.0.10.tar.gz

2021-04-19

ngrok-stable-linux-amd64.zip

ngrok-stable-linux-amd64.zip

2021-04-19

curl-7.63.0.tar.gz

curl-7.63.0.tar.gz

2021-04-19

apollo-1.4.0.tar.gz

apollo-1.4.0.tar.gz

2021-04-19

jemalloc-4.4.0.tar.bz2

jemalloc-4.4.0.tar.bz2

2021-04-19

datax.tar.gz

datax.tar.gz

2021-04-19

maxwell-1.28.0.tar.gz

maxwell-1.28.0.tar.gz

2021-04-19

esrally-dist-1.0.4.tar.gz

esrally-dist-1.0.4.tar.gz

2021-04-19

Percona-XtraBackup-2.4.9-ra467167cdd4-el7-x86_64-bundle.tar

Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁)。XtraBackup支持所有的Percona Server、MySQL、MariaDB和Drizzle

2017-12-31

Lucene pdf download

Lucene pdf download

2014-09-06

tomcat6.x服务器

这是我用过的最稳定的tomcat服务器,虽然现在7.x都升级到了30,但是这款仍是最爱

2012-11-23

空空如也

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

TA关注的人

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