自定义博客皮肤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)
  • 收藏
  • 关注

原创 sql的执行流程

执行过程分成两层,一层是server层,主要进行连接服务,和分析语句,执行sql具体流程是 首先与用户通过连接器建立连接,然后将sql查询语句在查询缓存中查找,如果查找处理过相同的语句将,直接返回数据,给连接器,进而返回给用户,如果没有查到,则将sql语句发送给解析器,解析器中有词法分析和语法分析,通过这两个分析过程,创建对应的sql语法树,然后执行sql查询语句流程,首先经过预处理,优化器,执行计划,最后通过执行器,建立和存储引擎的连接。

2024-07-24 16:48:13 1001

原创 Go的Channel解析

Channel在运行时的内部表示是runtime.hchan,该结构体中包含了用于保护成员变量的互斥锁,从某种程度上说,Channel是一个用于同步和通信的有锁队列,使用了互斥锁解决程序中可能存在的线程竞争问题是很常见的,但是锁导致的休眠和唤醒会带来额外的上下文切换,如果临界区过大,加锁解锁导致的额外开销会成为性能瓶颈.当Channel的sendq队列中包含处于等待状态的Goroutine时,该函数会取出队列头等待的Goroutine,处理的逻辑和发送时一样 ,调用runtime.recv实现接收。

2024-07-23 14:34:05 660

原创 什么是上下文切换

根据CPU切换运行任务的不同,又可以分为进程上下文切换,线程上下文切换,中断上下文切换。

2024-07-18 20:41:49 866

原创 Go语言内存分配设计

程序中的数据和变量都会被分配到程序所在的虚拟内存中,内存空间包含两个重要区域:栈和堆区。

2024-07-16 20:28:18 505

原创 osi五层模型协议和设备

对应的主要协议和作用:HTTP:用于从网络传输超文本到本地浏览器的传输协议HTTPS:HTTP的安全版本,使用SSL/TLS来加密数据传输FTP:用于在网络上的计算机之间传输文件的协议SFTP:FTP的安全版本,使用SSH协议进行加密数据传输Telent:用于远程登录到服务器的协议,没有进行安全加密SSH:用于安全远程登录和其他安全网络服务的协议DNS:用于将域名转换为IP地址的系统DHCP:自动分配IP地址给网络设备的协议SIP:用于建立,修改和终止多媒体会话的协议。

2024-07-13 15:24:11 657

原创 HTTP请求方式

使用 POST 请求方式提交的数据会被包含在请求体中,而不像 GET 请求方式那样包含在 URL 中。上述代码表示向 example.com 的 /api/user 资源发送一个 POST 请求,请求体中包含了一个 JSON 格式的用户信息。上述代码表示向 example.com 的 /api/user 资源发送一个 DELETE 请求,并指定要删除的用户的 ID。上述代码表示向 example.com 的 /api/user 资源发送一个 GET 请求,请求参数中包含了用户的 ID。

2024-06-25 10:23:38 335

原创 redis中bitmap数据结构详解

对于一个有限集合来说,集合元素的排列方式是有限的,并且对于一个有限长度的位数组来说,它能表示的二进制位排列也是有限的。根据这个原理,我们可以创建一个表,表的键为某种排列的位数组,而表的值则是相应位数组中值为1的二进制位的数量。对于8位长的位数组来说,我们可以创建下表,通过这个表格我们可以一次从位数组中读入8位,然后根据这8位的值进行查表,直接知道这个值包含了多少个1。2.检查位数组的长度是否小于len,如果是的话,将sds 的长度扩展为len字节 ,并将所有新扩展空间的二进制设置为0。时间复杂度位O(1)

2024-06-02 20:02:01 420

原创 rabbitmq详解

1.消息生产者将消息放入队列消费者可以有多个,消费者1,消费者2,同时监听同一个队列,c1和c2共同争抢当前的消息队列内容,谁先拿到谁负责消费消息(隐患,高并发情况下,默认会产生一个消息被多个消费者共同使用,可以设置一个开关(syncronize,与同步锁不一样)保证一条消息只能被一个消费者使用。2.消息的消费者监听消息队列,如果消息队列中有消息,就消费掉,消息被拿走后,自动从队列中删除(隐患消息可能没有被消费者正确处理,已经从队列中消失了,造成消息的丢失)应用场景:聊天(中间有一个过度的服务器)

2024-05-26 22:16:56 292 1

原创 mysql中的锁

有的,如果数据库的引擎支持的事务支持可重复读的隔离级别,那么在备份数据库之前先开启事务,会先创建 Read View,然后整个事务执行期间都在用这个 Read View,而且由于 MVCC 的支持,备份期间业务依然可以对数据进行更新操作。当一个事务对一条记录加了X型记录锁后,其他事务即不可以对该记录加s型锁记录(s型与x锁不兼容),也不可以对该记录加x型记录锁(x型与x锁不兼容)当一个事务对一条记录加了S型记录锁后,其他事务也可以继续对该记录加S型锁记录(s型和s锁兼容),但是不可以对该记录加x型记录锁。

2024-05-19 20:57:00 442 1

原创 go库riot详解

RankOpts 定义了排序选项。主协程接到用户请求,将请求短语在主协程内分词,然后通过信道发送给索引器,索引器查找每个搜索键对应的文档然后进行逻辑操作(归并求交集)得到一个精简的文档列表,此列表通过信道传递给排序器,排序器对文档进行评分(scoring)、筛选和排序,然后将排好序的文档通过指定的信道发送给主协程,主协程将结果返回给用户。当一个将文档加入索引的请求进来以后,主协程会通过一个信道(channel)将要分词的文本发送给某个分词协程,该协程将文本分词后通过另一个信道发送给一个索引器协程。

2024-05-04 16:02:15 857

原创 go的垃圾回收设计原理

收集器的行为:收集器有三个工作阶段,必须执行的第一个活动是打开写入屏障。写入屏障的目的是允许收集器在收集期间保持堆上的数据完整性,因为收集器和应用程序 goroutine 将同时运行。为了打开写入屏障,必须停止运行的每个应用程序 goroutine。这种活动通常非常快,平均在 10 到 30 微秒内。也就是说,可以保证应用程序 goroutine 正常运行。

2024-04-28 15:37:29 822 1

原创 Mysql中的BufferPool

MYSQL 中的bufferpool详解

2024-04-20 10:37:24 596 1

原创 MySQL事务的四大特性和实现方式详解

MVCC即多版本并发控制。MVCC是一种并发控制的方法,一般在数据管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存MVCC在MySQL InnoDB中的实现主要是为了提高数据库并发性能,用更好的方式去处理读-写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读数据库隔离级别读已提交,可重复读都是基于MVCC实现。

2024-03-31 09:36:20 1169 1

原创 docker初体验

Docker 是一种开源的应用容器引擎,它允许开发人员将应用及其依赖项打包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app),更重要的是容器性能开销极低。:与传统的虚拟机相比,Docker 容器不需要运行完整的操作系统,因此启动更快,占用资源更少。:Docker 容器可以在任何安装了 Docker 的系统上运行,无论是开发、测试还是生产环境,都能保持一致性。

2024-03-24 10:57:41 833 1

原创 arp简单实现欺骗

ARP:地址解析协议 ,是位于网络层的协议,用于在IPV4 地址和MAC 地址之间进行映射。arp协议是无连接的,没有安全机制来验证响应的真实性,而且arp缓存还是后来者优先,可以被后来的响应更新。所以在局域网中,arp攻击者通过发送伪造的arp响应包或请求,使得局域网内的主机或网关更新其ARP缓存表中的IP地址与MAC地址的映射关系,从而将流量错误地发送到攻击者指定的MAC地址。废话不多说接下来实操前提攻击者和被攻击者处于同一局域网中(通俗讲,就是同一wifi中)获取被攻击者ip。

2024-03-17 10:29:32 428 1

原创 y总的动态规划科学分析法

第二类,是选择第i件物品,1~i,分为两段,第一段,1~i-1,是一个改变的部分从改变的部分求出最大值,不变的部分是 i,所以f[i][j]=max(f[i-1][j],f[i-1][j-vi]+wi) ,前提是 j >= vi。第一个部分是状态表示,因为本题最多只有两个循环变量,所以状态表示的公式也最多两个变量,用f(i,j)表示 ,然后状态表示,又分为两部分,一是集合,集合定义是前i件物品,体积不超过j的选法集合 , 属性是max。最后结果就是输出 f[n][m]来一道经典的题 01背包问题。

2024-03-09 09:56:58 314

原创 对象池技术快速上手和应用场景介绍

对象池设计模式是一种在初始化时创建一组对象放在一个"池"里面进行复用的设计模式。当一个客户端需要一个对象时,它并非直接创建,而是向对象池请求。如果对象池中有闲置的对象,它就会返回一个,否则创建一个新的对象给客户端。同样,当客户端完成了对对象的使用,它不直接销毁这个对象,而是放回对象池中,供下次或其他客户端使用。对象池设计模式的主要目标是性能优化和资源管理。通过对象复用,可以减少创建和销毁对象的开销。同时,通过管理对象的数量,可以有效地控制系统中对象的数量,避免资源过度消耗。

2024-02-18 15:49:38 850 1

原创 JWT详解及使用

JWT通常用于在身份验证和信息交换方面进行安全的传输,例如在用户登录后生成一个JWT作为身份验证凭证,在客户端和服务器之间进行安全的信息交换。access token: 用于验证用户在系统中的身份和权限,并且在用户进行请求时,服务器会使用access token来验证用户的身份和权限,从而决定是否允许用户的请求。总之,JWT作为一种安全的传输方式,可以在各方之间传递信息并验证信息的真实性和完整性,因此在身份验证、授权和信息交换方面得到广泛应用。(主题):用于标识JWT的主体,即JWT所面向的用户。

2024-01-26 19:57:29 977

原创 go语言小游戏

go语言小游戏使用了ebiten引擎

2023-10-23 16:01:00 99

原创 虚拟机中的Linux安装reids

最后如果输入redis-cli无法启动需要切换超级账户权限,将redis/bin/redis-cli 文件导入到/bin文件夹中。/home/xb/redis/bin/redis-cli //是redis-cli 的绝对地址 /bin是bin文件夹的绝对地址。在目录/home/xb/redis 输入下面命令启动redis。cd /home/xb/redis /home/xb/redis 是我的redis文件夹绝对路径。然后输入 cp /home/xb/redis/bin/redis-cli /bin。

2023-09-24 11:43:27 59 2

空空如也

空空如也

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

TA关注的人

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