[TOC] 基础概念 为什么要区分内核空间和用户空间? 早期是不区分内核和用户的,带来的问题是程序可以访问任意内存空间,如果程序不稳定,容易把系统搞崩溃。 后来按cpu指令的重要程度对指令进行了分级,一共4个级别:Ring0~Ring3,linux只使用了Ring0和Ring3两个级别; 用户态使用Ring3级别运行,只访问用户空间,Ring0运行在内核态,可以访问任何程序空间 内核空间 linux系统内核运行的空间 主要提供进程调度、内存分配、连接硬件资源等 用户空间 提供给应用程序的空间 不具备访问内核空间资源…

2022/08/04 0条评论 25点热度 0人点赞 阅读全文

前段时间给小伙伴分享redis,顺带又把redis撸了一遍了,对其源码,又有了比较深入的了解。(ps: 分享的文章再丰富下再放出来)。 数据结构 我们先看下redis 5.0的代码。本次讲解主要是zset中的跳表。压缩列表不做讲解 /** * 跳跃表节点 */ typedef struct zskiplistNode { //member对象 sds ele; //权重分值 double score; //后退指针 struct zskiplistNode *backward; //层级描述 struct zski…

2022/07/31 0条评论 28点热度 0人点赞 阅读全文

背景 之前学习mysql的时候,了解了到了页,段的概念,页的结构是什么,都简单的了解下了,毕竟都是纸面看到的,也没有深入源码了解。总觉的悬在上面,直接通过数据库文件反编译也比较麻烦。媳妇介绍了一个工具innodb_ruby, 说它可以扒mysql数据的结构。这几天扒拉了下,蛮好用的,好多知识也和之前的对上了。 我的mysql的配置文件如下(本地开发单机环境,没做什么优化,也没开启binlog): [root@localhost data]# cat /etc/my.cnf [client] #客户端默认连接字集集,…

2022/07/28 0条评论 31点热度 0人点赞 阅读全文

背景 为了了解下jvm的JIT的热点探测,想了解下到底怎么判定是热点代码的逻辑,想着翻下jdk的代码,于是就有了这篇文章。 写在前面的几点说明: 在没有编译成功之前,不要使用clion打开,打开的时候,他会自己编译,会出现各种各样的问题; 当编译出现各种问题时,不要较真,换个环境,或虚拟机(同样的操作,一台电脑可以,一台不可以); 使用compiledb编译jdk源码(为了导入clion能识别出来,并链接,通过快捷键打开引用) 环境说明与准备 操作系统:macOs big Sur 11.1 Xcode_12.5.1…

2022/04/02 0条评论 223点热度 0人点赞 阅读全文

redis的发布订阅(pub/sub)是一种消息通信模式,由发布者(pub)发布消息,订阅者订阅(sub)消息。redis通过publish和subscribe等命令实现了发布与订阅模式。 我们先通过一张图了解下工作机制: 我们看下案列 # 客户端1 127.0.0.1:6379> subscribe notice Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "notice" 3) (inte…

2022/03/30 0条评论 232点热度 0人点赞 阅读全文

背景 今天群里有个小伙伴问rehash的事。翻看下源码,解密下rehash。 我们小了解下rehash是什么 rehash有两个目的: (扩容)扩容防止hash冲突后,形成链表带来的性能下降,时间复杂度提升(5倍容量后才扩容); (缩容)大量key被回收后,大量的空闲空间,通过rehash节省空间(1/10以下使用量才缩容); redis为了防止大的dict rehash的时候影响性能,使用了渐进式rehash(并不是一下子执行完,而是通过周期性能任务或访问dict的时候执行搬迁) 我们先把redis的数据结构摆上…

2022/03/27 0条评论 216点热度 1人点赞 阅读全文

aof相关配置 aof-rewrite-incremental-fsync yes # aof 开关,默认是关闭的,改为yes表示开启 appendonly no # aof的文件名,默认 appendfilename "appendonly.aof" # aof刷数据的策略,有no/everysec/aways appendfsync everysec no-appendfsync-on-rewrite no # aof超出配置大小的比例,模式是100%,可以理解为阈值 auto-aof-re…

2022/03/18 0条评论 246点热度 0人点赞 阅读全文

持久化介绍: redis的持久化有两种方式: rdb :可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot) aof : 记录redis执行的所有写操作命令 根据这两种方式,redis可以开启三种模式的持久化 rdb aof rdb+aof rdb rdb 是一个非常紧凑的文件 rdb适合灾难恢复,主从复制 rdb可以最大化redis的性能,rdb操作是会从主进程fork一个子进程; 本章节主要讲解rdb,aof保留到下一章节讲解。 在redis的配置文件 redis.con…

2022/03/16 0条评论 251点热度 0人点赞 阅读全文

在rdb的时候使用了fork()函数来创建子进程,详细了解下相关的知识点。 smaps 凡是程序运行过程中可能需要用到的指令或者数据都必须在虚拟内存空间中,为了让程序在物理机器上运行,必须有得让虚拟内存空间映射到物理内存空间。操作系统中页映射表(page table)就是干的这事。内核为每个一个进程维护一份相互独立的页映射表。 通过top命令我们已经能看出进程的虚拟空间大小(VIRT)、占用的物理内存(RES)以及和其他进程共享的内存(SHR)。 Linux 通过proc文件系统为每个进程都提供一个smaps文件。…

2022/03/15 0条评论 224点热度 0人点赞 阅读全文

这几天翻了下图解TCP/IP,把网络相关的知识整理下。 主要包含以下内容: 网络基础知识 tcp/ip基础知识 tcp与udp http版本演化 http响应码 https OSI参考模型 虽然ISO指定了一个国际标准OSI,对通信系统进行标准化。但是这个标准并没有得到普及,不过它的参考模型却用在了网络协议的制定中。 举一个例子。 tcp/ip 基础知识 TCP与UDP TCP与UDP最大的区别,TCP是有状态,UDP是无状态,TCP是高可靠性通信,UDP主要是及时通信。 这里主要介绍tcp,包括: 特点介绍 首部…

2022/03/04 0条评论 307点热度 1人点赞 阅读全文
1234532
solar movie movies solarmovie movies Watch Against the Ice 2022 Free Online Watch Resident Alien 2021 Free Online Watch 1883 2021 Free Online