自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis的主从复制

文章目录Redis的主从复制Redis的主从复制模式主从库的同步第一次同步第一阶段:建立连接,协商同步第二阶段第三阶段命令传播增量复制过程如何确定从哪个地方开始发送Redis的主从复制原因:如果数据只是单纯的存在一台服务器器上,那么服务器要是宕机了,虽然有持久化的机制尽可能的保证数据不丢失,但是数据的恢复也是需要一些时间的,所以在此期间是没办法接收用户的请求的,这种情况是不允许存在的,所以需要有多台服务器同时存在Redis的主从复制模式我们可以使用 replicaof(Redis 5.0 之前

2021-07-30 23:44:22 108

原创 Redis持久化-RDB

RDB内存快照概念:就是指内存中的数据某一个时刻中的状态记录,它实现一种把某一个时刻的状态记录到文件中,与AOF不同的是,它记录的是数据而并不是操作的命令快照的使用Redis 提供了两个命令来生成 RDB 文件,分别是 save 和 bgsave,他们的区别就在于是否在「主线程」里执行执行了 save 命令,就会在主线程生成 RDB 文件,由于和执行操作命令在同一个线程,所以如果写入 RDB 文件的时间太长,会阻塞主线程执行了 bgsava 命令,会创建一个子进程来生成 RDB 文件,这样可以

2021-07-30 20:02:12 109

原创 Redis持久化--AOF

AOFAOF的实现定义:与MySQL的redo log(重做日志)不同的是AOF是先写数据后写日志(因为先写数据的话可以先校验写入的redis语句的语法是否是正确的,避免写入语法错误的语句导致出错),AOF是以命令的形式进程存储的,这些命令都是以文本进行保存的先写数据后写日志的优点先让系统执行命令,执行成功之后才将数据写入到日志中,如果语法错误就将错误返回给客户端不会阻塞当前的写操作AOF的风险如果当数据修改之后,Redis就宕机了,这时候还没有来得及将数据记载到日志中,所以无法用日志

2021-07-30 00:37:56 128

原创 零拷贝传输

零拷贝传输零拷贝传输传统的IO传输如何提高文件传输的性能零拷贝的方式mmap+writersendfileLinux之后的零拷贝(真正的零拷贝)零拷贝传输传统的IO传输工作方式:数据的读取和写入是从用户空间到内核空间之间来回复制,而内核空间的数据是通过操作系统层面的IO接入从磁盘读取和写入期间发送了四次的用户态和内核态之间的上下文切换,因为发生了两次的系统调用,还发生了四次的拷贝如何提高文件传输的性能减少用户态和内核态的上下文切换的次数:因为传统的文件传输是需要两次系统调用,发生四次上下

2021-07-27 15:05:07 115

原创 高性能网络模型

高性能网络模型Reactor单Reactor单线程/进程模型Reactor单Reactor单线程/进程模型Reactor对象的作用是监听和分发事件Accept的作用是来获取连接的Handler就是来处理业务的

2021-07-27 14:24:13 164

原创 IO多路复用

IO多路复用IO多路复用selectselect实现IO多路复用的方式select的缺点pollpoll实现IO复用的方式epollepoll的不同epoll的出发方式IO多路复用select定义:select使用固定长度的BitsMap表示文件描述符集合,而且支持的文件描述符的个数也是有限的,默认值是1024select实现IO多路复用的方式将已经连接的Socket都放到一个文件描述符中,然后将select函数将文件描述符拷贝到内核区在内核区对文件描述符集合进行遍历,当有网络事件发送的时候就

2021-07-27 00:22:16 70

原创 进程间的通信方式

进程间的通信方式

2021-07-26 23:04:43 119

原创 TCP可靠性的实现

TCP可靠性的实现超时重传超时重传:在数据发送的时候,设定一个定时器,当在设置的时间内没有收到相应的ACK确认应答报文就会重发该报文超时重传的两种情况数据包丢失确认应答丢失超时时间的设置RTT:就是数据从网络的一端到另一端所需的时间(就是包的往返时间)RTO:就是超时计时器计算的祭时间设置不合理的两种情况流量控制滑动窗口窗口实际上是操作系统开辟的一个缓存空间,发送方主机在确认应答的返回之前,必须在缓冲区中保留已经发送的数据,如果如期收到,此时数据就会从缓冲区中清除

2021-07-21 16:04:32 725 1

原创 TCP的四次挥手

TCP的四次挥手TCP的四次挥手过程和状态迁移当客户端打算断开链接的时候,就会通过TCP的首部(FIN位置为1),之后客户端就进入到了FIN_WAIT_1这个状态服务器端接收到FIN报文之后,就向客户端发送ACK应答报文,并进入到CLOSE_WAIT状态客户端接收到服务器端发送的ACK报文之后,进入到FIN_WAIT_2这个状态等待服务器端处理完数据之后,也向客户端发送FIN报文,服务器进入到LAST_WAIT状态客户端接收到服务器端发送的FIN报文之后,再向服务器端发送ACK报文,并进入到

2021-07-19 14:35:41 105

原创 HTTPS的详解

HTTPS的详解HTTP的缺陷HTTP采用的明文传输的方式,不安全,然后被窃听HTTP存在纂改的风险,比如植入广告等冒充风险(中间人问题),比如冒充京东,返回错误的信息给用户HTTPS解决HTTP存在的问题HTTPS在HTTP和TCP之间加了TSL/SSL解决了HTTP存在的问题TLS是如何解决这些问题的?信息加密:HTTP的信息是加密的,第三方是无法窃取的检验机制:检验信息是否被第三方纂改过,如果纂改过会警告提示身份证书:验证服务器是否是对应的服务器由此可见,有了TLS/

2021-07-13 00:23:10 164 2

原创 HTTP详解

HTTP的演进HTTP1.0到HTTP1.1的优化使用TCP长连接的方式改善了HTTP1.0短连接造成的性能开销支持网络管道传输,只要有一个请求发送,其他的请求不需要等其回来也就可以继续发送请求,减少整体的响应时间HTTP1.1的弊端请求为被压缩就被发送出去,导致头部的信息过大,只能压缩到Body上头部重复字段发送多次造成资源的浪费没有优先级的控制(有一些请求比较急可以优先处理)只能由客户端发送给服务器,服务器只能被动的接收造成队头阻塞fas[外链图片转存失败,源站可能有防盗链机制,

2021-07-11 23:56:00 96 1

原创 TCP的三次握手

基本认识TCP头部格式序列号:在建⽴连接时由计算机⽣成的随机数作为其初始值,通过 SYN 包传给接收端主机,每发送⼀次数据,就「累加」⼀次该「数据字节数」的⼤⼩。⽤来解决⽹络包乱序问题。确认应答号:指下⼀次「期望」收到的数据的序列号,发送端收到这个确认应答以后可以认为在这个序号以前的数据都已经被正常接收。⽤来解决不丢包的问题。控制位:ACK:该位为 1 时,「确认应答」的字段变为有效,TCP 规定除了最初建⽴连接时的 SYN 包之外该位必须设置为RST:该位为 1 时,表示 TCP 连接中

2021-06-13 15:43:04 210 3

原创 B+树、B树

平衡二叉树平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN)。但是频繁旋转会使插入和删除牺牲掉O(logN)左右的时间,不过相对二叉查找树来说,时间上稳定了很多(查找的时间复杂度为log(n))。B-tree定义对于一颗M阶B树具有

2021-05-18 23:49:58 290 1

原创 MySQL日志

MySQL日志一、redo log 日志1.1、基本概念redo log包括两部分:一是内存中的日志缓冲(redo log buffer),该部分日志是易失性的;二是磁盘上的重做日志文件(redo log file),该部分日志是持久的。为了确保每次日志都能写入到事务日志文件中,在每次将log buffer中的日志写入日志文件的过程中都会调用一次操作系统的fsync操作(即fsync()系统调用)。因为 MariaDB/MySQL 是工作在用户空间的,MariaDB/MySQL 的log buffe

2021-05-17 23:08:31 59

原创 MySQL事务

事务概述 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做事务的四大特性原子性:整个事务中的所有操作,要么全部完成,要么全部不完成隔离性:事务内部的操作与其他事务是隔离的,并发执行的各个事务之间不能互相干扰持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏ACID

2021-05-14 23:43:21 52

转载 MVCC原理

一、前提概要MVCC概念MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。快照读和当前读在学习MVCC多版本并发控制之前,我们必须先了解一下,什么是MySQL InnoDB下的当前读和快照读?当前读像select lock in share mode(共享锁), select for update ; update, insert ,de

2021-05-13 23:42:54 366

原创 MySQL中的锁

MySQl中的锁(行锁、表锁)概念  锁是计算机协调多个进程或纯线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂概述MySQL大致可归纳为以下3种锁:表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:开销

2021-05-12 22:43:12 59

原创 基于Java+vue的IM系统

IM系统(代码实现+设计思路)设计思路MVC架构(基于Springmvc实现)代码实现一、数据库表实现1.MySQL数据库2.数据库各类表设计3.SQL文件二、业务逻辑实现1.单点登录功能(JWT+拦截器+redis)代码实现2.集成阿里云oss实现文件上传功能代码实现2.基于netty+websocket网络通信功能主要逻辑处理代码实现3.基于WebRTC的视频通话功能4.个人聊天+群组聊天功能实现5.好友添加+群组添加功能实现6.基于webRTC的实时文件功能实现(待续)三、前端页面实现1.基于vue.

2021-03-30 22:50:03 947 1

原创 个人博客系统

导入jar包<!-- 阿里云oss依赖 --> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>2.8.3</version>

2020-11-01 21:32:17 383

原创 springboot快速集成elaticsearch

导入所需的jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> (没有配置start-parent需要指定版本号) </dependency>配置elaticse

2020-10-31 21:56:46 481

原创 使用springboot快速集成swagger

导入集成swagger-ui所需的jar包 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> &l

2020-10-31 21:24:25 87

空空如也

空空如也

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

TA关注的人

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