自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 问答 (1)
  • 收藏
  • 关注

原创 redis源码剖析 | 跳表与压缩列表剖析

6、每次随机一个0-1之间的数,如果这个数小于0.25(25%概率),那就给这个元素加一层指针,持续随机直到大于0.25结束,最终确定这个元素的层数(层数越高,概率越低,且限制最多64层,详见t_zset.c的zslRandomLevel函数)这样一来,当新插入一个结点时,只需要修改前后结点的指针,而其他结点的层数就不需要随之改变了,这就降低了插入操作的复杂度。b跳表是在链表的基础上增加了多级索引,通过索引的几次跳转,实现数据快速定位,跳表的查找复杂度就是O(logN)。...

2022-07-17 20:13:26 945 1

原创 redis | 哨兵机制

同样,如果主库也没有在规定时间内响应哨兵的PING命令,哨兵就会判定主库下线,然后开始自动切换主库的流程。在选主时,哨兵会给优先级高的从库打高分,如果有一个从库优先级最高,那么它就是新主库了。所有从库中,有从库的slave_repl_offset最接近master_repl_offset,那么它的得分就最高,可以作为新主库。主库挂了以后,哨兵就需要从很多个从库里,按照一定的规则选择一个从库实例,把它作为新的主库。在优先级和复制进度都相同的情况下,ID号最小的从库得分最高,会被选为新主库。...

2022-07-15 20:44:40 324

原创 linux源码剖析 | 进程(task)数据结构 上

目录任务 ID信号处理任务状态进程调度标题写进程主要是为了引流吧。在 Linux 里面,无论是进程,还是线程,到了内核里面,我们统一都叫任务(Task)。由一个统一的结构 task_struct 进行管理。 Linux 内核有一个链表,将所有的 task_struct 串起来。struct list_head tasks;task_struct 里面涉及任务 ID:pid 是 process idtgid 是 thread group ID。如果只有主线程: pid 是自己,tgid 是自己,grou

2022-07-14 10:28:11 361

原创 linux源码剖析 | 系统调用过程简介

Linux 提供了 glibc 这个中介。它更熟悉系统调用的细节,并且可以封装成更加友好的接口,用户可以直接用。通过 push 和 SAVE_ALL 将当前用户态的寄存器,保存在 pt_regs 结构里面 ds,cs与ip,ss与sp寄存器(1)ds (Data Segment) 数据段寄存器当我们想读取一个指定的内存单元上的数据时,我们可以通过把数据所在的内存段地址放入到ds寄存器中去,然后读取或者写入数据时就可以通过该ds寄存器内的段地址偏移得到我们的数据,或者偏移后写入数据(2)cs(代码段寄存器)与

2022-07-14 10:14:34 183

原创 linux源码剖析 | linux内核初始化相关系统调用与功能

内核的启动从入口函数 start_kernel() 开始。在 init/main.c 文件中,start_kernel 相当于内核的 main 函数,内部有很多init函数:首先:创建0号进程init_task定义是 struct task_struct init_task = INIT_TASK(init_task)。它是系统创建的第一个进程,我们称为 0 号进程。这是唯一一个没有通过 fork 或者 kernel_thread 产生的进程,是进程列表的第一个。该进程就是后续其他项目复制的根。里面设置了很

2022-07-12 17:19:46 184

原创 mysql里innodb的changeBuffer有关要点

change buffer的前身是insert buffer,只能对insert 操作优化;后来升级了,增加了update/delete的支持,名字也改叫change buffer.Change buffer其实和pageCache 有一些像,但是又有一些根本的区别,但是他们都能加速,修改后短期在此访问时,的磁盘io情况。change buffer。当需要更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在内存中的话,在不影响数据一致性的前提下,InnoDB 会将这些更新操作缓存在 ch

2022-07-08 21:10:57 534

原创 MySQL的事务隔离

简单来讲事务是为了保证一组数据库操作要么全部成功,要么全部失败,将一个或多个操作尽可能编程一个原子操作,隔离的引入就是为了克服多个事务同时运行,并且同时处理相同的表或者行时,为了保持数据一致性,不产生相互干扰而使用的措施。首先考虑可能出现的问题脏读、不可重复读、幻读**脏读:**读到另一个事务中正在处理中的数据**不可重复读:**就是在事务进行的不同阶段对数据进行读取会读取到不同的数据**幻读:**在一个事务中,相同范围内读取到的数据量不同。幻读在“当前读”下才会出现。幻读是针对insert

2022-04-08 20:12:59 343

原创 c++从代码到可执行文件的过程

c++从代码到可执行文件的过程

2022-03-21 11:03:17 2593

原创 有关Qt插件的讲解(Plugin)——底层插件API 扩展Qt应用程序(工厂模式)--1书写插件

这篇是接上一篇的下文,来讲解Qt Plugin系统的另一部分,低等级插件(其实叫低等插件就会感觉这个插件有些低级,但是我用起来感觉并不低级哈,或者翻译成底层插件更合适一个吼,所以我还是把他称作程序扩展插件或插件(本文提到的插件都是低等插件)吧。),这可能是用的更广泛的一种?Maybe。如果是在工程领域的话应该这种用的比较常见,作为应用程序的补充动态库来用。虽然说是低等级插件,我觉得他用起来比高等级插件更难一些,不像高等级插件很多东西Qt已经写好了,低等级插件工厂模式还要自己去写。先介绍一下我们项目吧项

2021-12-30 09:55:04 1177 2

原创 操作系统导论相关名词缩写记录

TLB我们要增加所谓的(由于历史原因[CP78])地址转换旁路缓冲存储器(translation-lookasidebuffer,TLB[CG68,C95]),它就是频繁发生的虚拟到物理地址转换的硬件缓存(cache)。因此,更好的名称应该是地址转换缓存(address-translation cache)。VPN虚拟页面号(virtual page number,VPN)和页内的偏移量(offset)PFN物理帧号(PFN)(有时也称为物理页号,physical page number 或

2021-12-29 19:38:00 200

原创 有关Qt插件的讲解(Plugin)——高等级API扩展Qt自身

有关Qt 插件Plugin讲解的上部分,高等级API扩展Qt自身的部分。

2021-12-28 11:26:08 1061 1

转载 shared_ptr的实现

shared_ptr的实现。名为shared_pointer

2021-11-30 22:43:18 114

转载 unique_ptr的实现

转自github 值得看的unique_ptr实现,没有源码那么多条条框框,更适合阅读。DebugDelete是c++primer中认为定义的删除器,可以当作delete使用。

2021-11-30 22:41:15 217

原创 关于c++派生访问权限的解释

派生访问说明符只影响父类成员在子类应处的访问类型(private/public/protect)不影响父类成员在子类的访问权限。真正影响子类访问权限的时父类成员所处的访问类型。要认真理解这句话。比如:父类的private成员,子类public,protect,private继承都不能访问。(子类也都拥有这个成员,就是不可以访问)父类的protect成员,子类public,protect,private继承都能访问,只是继承后在子类的访问类型不一样:public继承的 protect成员,子类视

2021-11-27 21:26:14 356

转载 c++虚函数的存在意义---多态

在百度知道看到的解答,讲的非常好一:继承中的指针问题。1. 指向基类的指针可以指向派生类对象,当基类指针指向派生类对象时,这种指针只能访问派生对象从基类继承而来的那些成员,不能访问子类特有的元素,除非应用强类型转换,例如有基类B和从B派生的子类D,则B *p;D dd; p=ⅆ是可以的,指针p只能访问从基类派生而来的成员,不能访问派生类D特有的成员.因为基类不知道派生类中的这些成员。2. 不能使派生类指针指向基类对象.3. 如果派生类中覆盖了基类中的成员变量或函数,则当声明一个基类指针指向派生类对象

2021-11-27 18:36:18 202

原创 Windows下安装boost库并引入Qt的方法

Windows下安装boost库并引入Qt的方法下载boost库安装boostQt引入boost最近项目用到boost数学库,我在网上找了一些说的要么太麻烦要么太简单,所以就来总结一个比较靠谱的windows平台下Qt使用boost库的方法。下载boost库链接: https://boostorg.jfrog.io/ui/native/main/release/1.77.0/source/点开链接是这个样子官方推荐是下载后缀为7z的版本,因为7z版本的压缩率比较高,我下载的是zip版本。也可以

2021-09-06 10:59:39 830 1

原创 Qt事件系统概述event system

在Qt里,事件都是派生自QEvent类,它表示在应用程序内部发生的事情,如定时器事件,或者作为应用程序需要了解的外部活动的结果。比如鼠标点击,键盘输入,等:QResizeEvent, QPaintEvent, QMouseEvent, QKeyEvent, 和 QCloseEvent等。事件可以由QObject子类的任何实例接收和处理,但与widget尤其相关。本文档描述如何在典型应用程序中传递和处理事件事件是怎样传递的当事件发生时,Qt通过构造相应的QEvent子类的实例来创建一个事件对象来表示它,并

2021-06-05 18:21:14 258

原创 Qt学习方法/过程总结

这几个月跟着导师做一个QT相关的软件开发项目(项目还没完成),感觉自己进步很明显,这里说的是短时间内熟悉一个陌生工具的方式。从最初的widget简单编程到后来使用model数据库,再到后来用qml打乱重做,又到tcp 网口 串口与实物通讯挂钩,一直在学习新东西,收获很多。看了好几本书,看了好多文档,看英文手册和帮助,最初会觉得很难受,熟悉以后发现这样做效率才是比较高的。最开始我是看知乎上高赞推荐的《C++ GUI Qt 4 编程》,他们说这本书是QT的开发者写,是属于半个官方教程。我就拿来看了一段时间,

2021-06-05 11:25:03 906 2

原创 Qt再Windows平台上下载安装的方法

Qt安装包离线下载网址:https://download.qt.io/archive/qt/Qt官方公告上讲,未来的版本不提供离线安装包,下面的图片也能看到,5.15及以后的版本没有.exe文件了,需要用户自行编译才能安装,比较麻烦,下载安装旧版本还是比较方便的。现在Qt把安装文件安装整合到一起,提供在线安装,下载地址如下:http://download.qt.io/official_releases/online_installers/这个方式下载会比较慢 还会弹出网络错误信息。可以利用

2021-05-06 10:58:58 331

原创 Qt QMap迭代器的问题

Qt QMap只读迭代器的问题#include <QCoreApplication>#include <QDebug>int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); QMap<QString,QString>map; map.insert("beijing","111"); map.insert("shanghai","021"); map

2021-04-02 09:43:51 1020

原创 E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)的解决方法

E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?我用ubuntu18.04 apt-get install命令安装的时候出现了如下:E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-

2020-12-07 11:04:34 336

原创 C++实现pi/π/圆周率的计算方法

C++实现pi/π/圆周率的计算方法π在本程序的逼近计算公式如下:π=16arctan(1/5)-4arctan(1/239)arctan用如下形式的级数计算:直到级数某项绝对值不大于10-15为止;π和x均为double型。运行程序:#include <iostream>using namespace std;double arctan(double x){ double sqr = x * x; double e = x; double r = 0; int i

2020-11-20 00:29:00 5530 2

空空如也

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

TA关注的人

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