自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Nginx --高阶

学习笔记

2022-07-16 16:26:23 1548 1

原创 Nginx -- 基础

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务

2022-07-09 17:20:40 773

原创 JVM -- 垃圾收集

垃圾收集笔记

2022-07-04 08:08:23 315

原创 JVM -- 垃圾收集算法/三色标记/读写屏障

垃圾收集算法笔记

2022-07-04 08:07:58 373

原创 JVM -- 对象内存布局/指针压缩

对象内存布局

2022-07-04 08:07:32 195

原创 JVM --执行引擎

执行引擎

2022-07-03 17:18:41 121

原创 JVM -- 运行时数据区

运行时数据区

2022-07-03 17:10:36 143

原创 JVM -- 类加载子系统

类加载子系统

2022-07-03 16:42:50 269

原创 JVM -- 类加载过程

类加载过程

2022-07-03 16:32:31 275

原创 Tomcat --嵌入启动

tomcat内嵌启动

2022-07-03 16:19:39 306 1

原创 Tomcat --配置文件

tomcat配置

2022-07-03 16:16:13 2041

原创 Tomcat -- 类加载机制

引导类和扩展类加载器作用不变- 系统类加载器正常情况下加载的是classpath下的类,但是tomcat启动脚本并未使用该变量,而是加载tomcat启动类,如bootstrap.jar , 通常在catalina.bat或者catalina.sh中指定,位于catalina_home/bin下- common通用类加载器加载tomcat使用以及应用通用的一些类,位于catalina_home/lib下,如servlet-api.jar- catalinaClassloader用于加载服务器内部可见类,

2022-07-03 16:06:35 201

原创 Tomcat -- 请求处理流程

- 客户端请求会携带Connection: keep-alive- service方法会解析,并使用keepAlive参数记录是否满足长连接条件- 不满足长连接条件则返回的响应头携带Connection: close,表示关闭连接- 满足长连接条件则不返回Connection参数...

2022-07-03 15:49:33 1692

原创 Tomcat -- 整体架构

规定浏览器和服务器之间的数据传输协议,基于TCP/IP协议传递数据,不涉及数据包的传输,主要规范了客户端与服务器端的通信格式其中tomcat主要参与接受连接,解析请求数据,处理请求,发送响应结果...

2022-07-03 15:15:17 1654

原创 Tomcat -- 启动流程

Tomcat核心原理解析

2022-07-03 14:53:15 3343

转载 CPU缓存一致性协议MESI

CPU缓存一致性协议MESI转载文章地址转载文章地址CPU缓存一致性协议MESI

2020-12-13 09:53:59 119

原创 Redis -- Redis独立功能实现

独立功能实现1,发布与订阅1.1 订阅与退订1.2 发送消息2,事务2.1 事务实现2.2 WATCH命令3,排序4,二进制数组1,发布与订阅redis发布与订阅由:PUBLISH、SUBSCRIBE、PSUBSCRIBE命令组成1.1 订阅与退订订阅频道:客户端执行SUBSCRIBE命令订阅某个或某些频道时候,服务器会将客户端与被订阅的频道在pubsub_channels字典中关联起来退订频道:UNSUBSCRIBE命令会将pubsub_channels字典中绑定关系解除订阅模式:客户端执

2020-11-29 13:20:16 242

原创 Redis -- 集群

一个redis集群通常由多个节点(node)组成,组建一个集群,需要将各个独立的节点连接起来,构成一个多节点的集群 通过CLUSTER MEET <ip> <port> 命令,让当前节点与ip、port指定的节点进行握手,将指定节点加入当前节点所在的集群中

2020-11-29 11:39:18 164

原创 Redis -- Sentinel哨兵机制

哨兵机制Sentinel1,Sentinel1.1 启动初始化Sentinel1.2 获取主服务器信息1.3 获取从服务器信息1,SentinelSentinel(哨兵)是redis高可用的解决方案,一个或多个哨兵组成的系统可以监视任意多个主服务器以及下属的从服务器被监视的主服务器下线时,自动将下线的主服务器下的某个从服务器升级为新的主服务器,由新主代替下线的旧主继续处理请求命令1.1 启动初始化Sentinel初始化服务器将普通redis服务器使用的代码替换为Sentinel专用代码初始

2020-11-27 00:05:05 133

原创 Redis -- 主从复制

主从复制1,主从复制1.1 同步1.2 命令传播1.3 PSYNC1.4 部分重同步实现1.5 PSYNC实现1.6 复制实现1.7 心跳检测1,主从复制执行SLAVEOF命令或设置slaveof选项,让一个服务器复制另一个服务器;初次复制:从服务器没有复制过任何服务器,或从服务器当前要复制的主服务器和上次复制的主服务器不同断线后重复制:处于命令传播阶段的主从服务器由于网络原因而中断复制,自动重连后,继续复制主服务器1.1 同步从服务器向主服务器发送SYNC命令收到SYNC命令的主服务器执行

2020-11-26 23:41:17 130

原创 Redis -- 事件

Redis事件1,文件事件2,时间事件3,事件调度与执行1,文件事件reids服务器通过套接字与客户端连接,文件事件是对套接字操作的操作,服务器通过监听与客户端的通信产生的文件事件,处理这些事件来完成一系列网络通信文件事件处理器文件事件处理器由:套接字、I/O多路复用程序、文件事件分派器、事件处理器组成;套接字:每当一个套接字准备好执行链接应答、写入、读取、关闭等操作时,就会产生一个文件事件;文件事件可能会并发出现,因为一个服务器通常会链接多个套接字IO多路复用程序:复制监听多个套接字,将

2020-11-25 23:58:01 107

原创 Redis -- RDB & AOF持久化

RDB & AOF持久化1,RDB持久化1.1 RDB文件的创建和载入1.2 自动间隔性保存1.3 RDB文件结构1,RDB持久化1.1 RDB文件的创建和载入文件创建SAVE和BGSAVE都可用于生成RDB文件 SAVE命令(阻塞式创建文件):阻塞Redis服务进程,直到RDB文件创建完毕,期间不能处理任何命令请求 BGSAVE命令(非阻塞式创建文件):派生一个子进程,由子进程负责创建RDB文件,父进程可继续处理命令请求文件载入服务器载入RDB文件期间,会一直处于阻塞状态,直到载

2020-11-25 00:18:38 90

原创 Redis -- 单机数据库实现

单机实现1,数据库1.1 服务器中的数据库1.2 数据库的切换1.3 数据库键空间1.4 键的生存时间(过期时间)1.5 过期键删除策略1.6 过期键删除实现1.7 AOF/RDB和复制对过期键的处理1.8 数据库通知2,RDB持久化1,数据库1.1 服务器中的数据库redis 服务器的所有数据库都保存在redisServer.db数组中,数组的每个项都是redisDb结构代表一个数据库,数量由redisServer.dbnum属性控制,默认会创建16个数据库(dbnum16)1.2 数据库的切换

2020-11-23 23:39:05 193

原创 Redis -- 数据结构与对象

数据结构与对象1,简单动态字符串2,链表3,字典4,跳跃表5,整数集合6,压缩列表7,对象1,简单动态字符串SDS : redis 没有直接使用C语言的字符串,构建了一种简单动态字符串(simple dynamic string,即SDS)的抽象类型作为redis的默认字符串SDS 用来保存字符串外,还被用作缓冲区,如:AOF缓存区,客户端输入缓冲区C语言字符串 vs SDS对比项C语言字符串SDS获取字符串长度的复杂度O(N)O(1)API安全性不安全,会造成

2020-11-23 21:24:52 108

原创 MySQL -- 读写分离

读写分离1,读写分离方案1.1 客户端直连1.2 proxy代理1.3 直连 vs 代理2,读写分离几个问题2.1 过期读2.2 解决方案对比1,读写分离方案分摊主库的压力1.1 客户端直连由客户端(client)选择后端数据库进行查询,即客户端主动做负载均衡,一般把数据库连接信息放客户端连接层。1.2 proxy代理MySQL 和客户端之间有一个代理层 proxy,客户端只连接 proxy, 由 proxy 根据请求和上下文决定请求的分发路由1.3 直连 vs 代理方案优

2020-11-21 19:33:37 160

原创 MySQL -- 主备复制

备库 B 通过 change master 命令,设置主库 A 的 IP、端口、用户名、密码,以及从哪个位置开始请求 binlog,这个位置包含文件名和日志偏移量 备库 B 执行 start slave 命令,备库会启动两个线程 io_thread 、sql_thread , io_thread 负责与主库建立连接。 主库 A 校验完用户名、密码后,开始按照备库 B 传过来的位置,从本地读取 binlog,发给 B 备库 B 拿到 binlog 后,写到本地文件,即中继日志(relay log)。

2020-11-19 21:05:59 549 1

原创 MySQL -- 排序(order by)

排序(Order By)1,全字段排序rowid 排序3,临时表排序3.1 内存临时表3.2 磁盘临时表1,全字段排序例:select city,name,age from t where city='杭州' order by name limit 1000 ;在 city 字段上创建索引之后,我们用 explain 命令来看看这个语句的执行情况“Using filesort”表示的就是需要排序,MySQL 会给每个线程分配一块内存用于排序,称为 sort_buffer。语句执行流程初始

2020-11-14 21:48:22 338

原创 MySQL -- 数据库各种锁

数据库各种锁1,数据库锁1.1 Two-Phase Locking(2PL)2,加锁过程分析2.1 一条简单SQL的加锁实现分析2.2 一条复杂的sql语句3,死锁3.1 两个Session的两条SQL死锁3.2 两个Session的一条SQL死锁1,数据库锁表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行

2020-11-09 23:17:40 439

原创 MySQL -- 索引作用过程

索引作用过程1,索引1.1 索引数据结构1.2 各种数据结构运用到索引上的优缺点1.3 MySQL存储引擎(引擎基于表作用的)2,索引优化2.1 联合索引2.2 最左前缀原则2.3 未完待续。。。1,索引索引是帮助Mysql高效获取数据的排好序的数据结构1.1 索引数据结构二叉树 : 大的在又节点,小的在左节点红黑树(二叉平衡树) :hash表 : 等式查询效率高,范围查询效率低B-Tree : a. 节点可以存放多个索引,具有相同的深度,叶子节点之间没有指针 b. 所有索

2020-11-09 22:39:07 291

原创 MySQL -- SQL事务

SQL事务1,事务的ACID1.1 事务的创建1.2 常见数据库读错误2,事务的隔离级别3,事务隔离实现4,长事务1,事务的ACID原子性(Atomicity):是指事务是一个不可分割的单元,事务中的操作要么全发生,要么都不发生;一致性(Consistency):事务必须使数据库从一个一致性状态变换到另一个一致性状态;隔离性(Isolation):是指一个事务的执行不能被其他事务干扰,即一个事务的内部操作及使用的数据对并发的其他操作的事务是隔离的,并发执行的各个事务之间不能相互干扰;持久性(Du

2020-11-09 21:59:44 190

原创 MySQL -- 多版本并发控制MVCC

多版本并发控制MVCC1,MVCC实现1.1 读操作1,MVCC实现解决:MySQL读不加锁,读写不冲突1.1 读操作快照读 (snapshot read):快照读,读取的是记录的可见版本 (有可能是历史版本),不用加锁。 简单的select操作,属于快照读,不加锁。(当然,也有例外,下面会分析)当前读 (current read)。当前读,读取的是记录的最新版本,并且,当前读返回的记录,都会加上锁,保证其他事务不会再并发修改这条记录。 特殊的读操作(for update等),插入/更新/删除

2020-11-09 21:58:34 210

原创 MySQL -- SQL日志

SQL日志1,binlog1.1 特点2,redo log2.1 特点2.2 脏数据刷盘(redo log日志擦除)2.3 脏日志刷盘2.4 缓冲池(buffer pool)3,undo log3.1 特点3.2 作用1,binlog1.1 特点二进制日志binlog(服务层的日志),又称归档日志。binlog是逻辑日志,记录的是SQL语句的原始逻辑,比如”给ID=2这一行的a字段加1 ",日志内容是二进制的,根据日记格式参数的不同,可能基于SQL语句、基于数据本身或者二者的混合binlog主要记

2020-11-09 21:19:38 1093

原创 HTTP -- WAF

Http -- WAF1,几种Web攻击2,WAF2.1 WAF功能2.2 WAF实现原理1,几种Web攻击DDoS(洪水攻击):黑客控制许多“僵尸”计算机,向目标服务器发起大量无效请求。服务器无法区分正常用户和黑客,挤占正常用户应有资源。攻击强度大像“洪水”一样对网站的服务能力造成冲击,耗尽带宽、CPU 和内存,导致网站完全无法提供正常服务SQL注入:字符串拼接形成 SQL 语句的漏洞,构造出非正常的 SQL 语句,获取数据库内部的敏感信息。HTTP头注入:在“Host”“User-Agent”

2020-11-07 20:10:04 888

原创 HTTP --Web服务器

Http -- 新版本HTTP1,HTTP21.1 强化性能1.2 强化安全2,HTTP31,HTTP2兼容HTTP/1基础上强化性能1.1 强化性能头部压缩:开发“ HPACK”算法,在客⼾端和服务器两端建⽴“字典”,⽤索引号表⽰重复的字符串,⾤⽤哈夫曼编码来压缩整数和字符串,可以达到50%~90%的⾼压缩率。⼆进制格式:不再⽤⾁眼可⻅的ASCII码,向下层的TCP/IP协议“靠拢”,采⽤⼆进制格式,把TCP协议的部分特性挪到应⽤层,把“Header+Body”形式优化为数个⼩⽚的⼆进制“帧”

2020-11-07 18:12:11 123

原创 HTTP -- 握手连接

Http -- 握手连接1,TLS协议2,TLS版本1.22.1 TLS握手过程2.2 ECDHE握手过程2.3 RSA握手过程2.4 双向认证3,TLS版本1.33.1 TLS握手过程3.2 握手分析4,HTTPS优化1,TLS协议TLS由几个不同职责的模块组成,常用有记录协议、警报协议、握手协议、变更密码规范协议等。记录协议(Record Protocol)规定了TLS收发数据的基本单位:记录(record)。像TCP的segment,其他子协议需通过记录协议发出。但多个记录数据可以在一个TCP

2020-11-07 17:42:35 653 1

原创 HTTP -- http与s

Http -- http与s1,通信安全2,HTTPS3,加密3.1 SSL/TLS3.2 摘要算法3.3 对称加密3.4 非对称加密(公钥加密算法)3.5 混合加密4,数字签名与证书1,通信安全通信过程“安全”的四个特性:机密性、完整性,身份认证和不可否认。机密性(Secrecy/Confidentiality)对数据“保密”,只能由可信的人访问,对其他人是不可见,用的Wireshark ,利用了HTTP的这个特点,捕获了传输过程中的所有数据完整性(Integrity一致性)数据在传输过程中没有

2020-11-07 16:12:13 1146 1

原创 HTTP -- 帮手及能力

Http -- 连接1,短连接2,长连接2,数据类型与编码2.1 MIME type2.2 Encoding type2.3 头字段1,短连接每次发送请求前需要先与服务器建立连接,收到响应报文后会立即关闭连接,客户端不会与服务器保持长时间的连接状态2,长连接1. 优点是简单、灵活和易于扩展;2. 拥有成熟的软硬件环境,应用广泛,成了互联网的基础设施;3. 无状态的,可以轻松实现集群化,扩展性能,也可以用Cookie技术来实现“有状态”;4. 明文传输,数据完全肉眼可见,能够方便地研究分析,也

2020-11-07 14:43:43 126

原创 HTTP -- 特性

Http -- 特性1,特点1.1 优缺点2,数据类型与编码2.1 MIME type2.2 Encoding type2.3 头字段1,特点1. 灵活可扩展,可以任意添加头字段实现任意功能;2. 可靠传输协议,基于TCP/IP协议“尽量”保证数据的送达;3. 应用层协议,比FTP、SSH等更通用功能更多,能够传输任意数据;4. 使用请求-应答模式,客户端主动发起请求,服务器被动回复请求;5. 本质是无状态的,每个请求都是互相独立、毫无关联的,协议不要求客户端或服务器记录请求相关的信息。1.

2020-11-05 22:42:09 137

原创 HTTP -- 报文

Http -- 报文1,报文结构1.1 请求行(请求报文里的起始行)1.2 状态行(响应报文里的起始行)1.3 头部字段1.4 常用头字段2,请求方法2.1 八种方法2.2 安全与幂等1,报文结构HTTP协议的请求报文和响应报文的结构基本相同:1. 起始行(start line):描述请求或响应的基本信息2. 头部字段集合(header):使用key-value形式更详细的说明报文3. 消息正文(entity):实际传输的数据,它不一定是纯文本,可以是图片、视频等二进制数据4. HTTP协议必须

2020-11-04 23:11:41 164

原创 HTTP -- 网络分层

Http -- 网络分层1,网络四层2,网络七层(OSI网络分层模型)3,四VS七4,TCP/IP协议栈的工作方式1,网络四层link layer(链接层):负责在以太网、WiFi这样的底层网络上发送原始数据包,工作在网卡这个层次,使用MAC地址来标记网络上的设备,也叫MAC层 ,传输单位 :帧(frame)internet layer(网络互连层):IP协议就处在这一层。因为IP协议定义了“IP地址”的概念,在“链接层”的基础上,用IP地址取代MAC地址,把局域网、广域网连接成一个虚拟的巨大网络

2020-11-04 22:09:43 5140

空空如也

空空如也

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

TA关注的人

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