1.内存对齐是什么? 对结构体和类来说,让变量不是紧挨着存放,而是通过变量字节倍数的形式存放 2.为什么会有内存对齐? 增加cpu的访问数据的速度 对于cpu来说,数据从内存中读到缓存中去,是通过偏移量(offset)进行读取,也就是常说的通过块来读取,而不是按照字节读取。 读取非内存对齐的数据,会出现一次必须读取offset和offset+1两块数据这种情况,这需要为芯片增加额外的加法器(为了得到offset+1)。为了上述这种可能,而增加额外的设备,并且每一次的增加访问时间,显然是不明智的 还有一点就是读了两次,读到缓存的位置上也需要两次,同样降低效率 方便于不同机器、不同平台进行数...

  6MQbTPsi2fUG   2023年11月02日   65   0   0 C++

设计模式 设计模式是指在软件开发中,经过验证的,⽤于解决在特定环境下,重复出现的,特定问题的解决⽅案; 内存模型 继承Base,和成员变量为Base类型的内存模型 成员变量为Base指针的内存模型-》实际开发常用这种 由于该形式以Base指针的形式存储,展现一种多态的思想 而上一种中Base类型和Subject呈现一种强依赖的关系 父类存在虚函数,子类继承重写虚函数 扩展:c语⾔当中的多态-》通过函数指针 redis nginx 模式设计原则 掌握设计原则,而不是设计模式-》设计模式的使用条件有些时候太苛刻 八个原则 原则1:依赖倒置原则-》变化点必须依赖稳定点 ⾼层...

  6MQbTPsi2fUG   2023年11月01日   152   0   0 设计模式

希尔排序 背景 对N个样本进行排序,顺序为从小至大 步骤 第一步:对样本不断确定分组的间隔gap,确定分组次数X-》对应第一个循环 第一次gap=N/2;第二次gap=gap/2;直至分成一组,即gap=1; 第二步:从头开始遍历这X个组-》对应第二个循环 实际遍历的时候从gap开始依次遍历即可 第三步:对第一步分组的内部M个元素进行排序 从组内的第二个元素开始,与前面元素进行对比插入;直至从组内第M个开始; 代码intshell_sort(vector<int>data){ intgap=0;//分组的跨度 inti=0,j=0; for(gap=dat...

  6MQbTPsi2fUG   2023年11月01日   81   0   0 算法与数据结构

1.布隆过滤器的概念 定义 布隆过滤器:是⼀种概率型数据结构,特点是⾼效的插⼊和查询,能明确告知某个字符串⼀定不存在或者可能存在; 优点和缺点 优点:布隆过滤器相⽐传统的查询结构更加⾼效,占⽤空间更⼩; 例如:hash,set,map等数据结构-》冲突率高的时候,插入和查询效率降低 缺点:是它返回的结果是概率性的,也就是说结果存在误差的(假阳率),虽然这个误差是可控的;同时它不⽀持删除操作; 组成:位图(bit数组)+n个hash函数 工作原理 插入:当⼀个元素加⼊位图时,通过k个hash函数将这个元素映射到位图的k个点,并把它们置为1; 检索:当检索时,再通过k个has...

  6MQbTPsi2fUG   2023年11月01日   57   0   0 算法与数据结构

1.图的概念 基础概念 顶点集合(vex-set):如上图S(vex)= 边集合(arc-set):如上图S(arc)= 度(degree):⽆向图中从⼀个点延伸出去的边数就是该点的度;有向图中包含出度和⼊度; 出度(out-degree):有多少条边指向某点就是该点的出度; ⼊度(in-degree):从某点出发向外指向延伸的边数就是该点的⼊度; 图的分类:有向图,无向图,权重图 有向图 无向图 权重图 图的储存 存储的关键是点集合和边集合; 使用邻接矩阵储存:顶点信息存储在⼀维数组中,边信息存储在⼆维数组中(不常用) 优点和缺点 优点:很容易算出边邻接关系;以及节点...

  6MQbTPsi2fUG   2023年11月01日   44   0   0 算法与数据结构

更详细的可参考基于VirtualBox搭建Linux(CentOS7)虚拟机环境(学习必备技能)码霸霸(lupf.cn) 使用虚拟机的时候,需要自己执行自己不确定操作时,一定要提前进行快照 1.软件 VirtualBox官网下载最新的VirtualBox,地址:https://www.virtualbox.org/ centos系统: https://pan.baidu.com/s/1bEE7ujxxoUqJw69FoP4hmQ提取码:zzzz 2.创建虚拟机 3.网卡设置 4.系统配置 注意:右边的Ctrl键可以切换虚拟机和主机的鼠标 ...

  6MQbTPsi2fUG   2023年11月01日   61   0   0 Linux

1.IO多路复用的概念 IO多路复用形象举例ZqurGy博客园(cnblogs.com) 单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力。 2.为什么出现IO多路复用 服务器需要维护N多个与客户端之间的socketfd;并且在receive之前需要知道数据知否出现---》组件IO多路复用技术出现---》解决检测服务器端N多个fd的状态 Tcp是有连接的,Udp是无连接---》上述情况出现在Tcp连接情况 IO多路复用的三种方案:select/poll/epoll select(fds+1,rds,wds,timeout) poll(fds,nfd,timeout...

  6MQbTPsi2fUG   2023年11月01日   85   0   0 Linux

1.IO的概念 IO简单来讲就是对输入输出设备的简化表达形式 单片机中各种接口,进行数据流的传输 从磁盘中读取数据至内存,又或者从内存中写入磁盘 编程中的IO 此时的IO其应用程序的运行态,即进程---》IO调用 特别强调的是我们的应用程序其实并不存在实质的IO过程,真正的IO过程是操作系统的事情, 这里把应用程序的IO操作分为两种动作:IO调用和IO执行。 因此所有的IO操作算作IO调用,之后由内核进行执行 2.Linux中的5种IO模型 5种IO模型 同步IO:阻塞IO模型、非阻塞IO模型、IO复用模型、信号驱动的IO模型 异步IO 阻塞IO模型--bio---block...

  6MQbTPsi2fUG   2023年11月01日   95   0   0 Linux

signal源码位置:、 信号集合../sched/signal.h 信号结构体:../signal_types.h signal函数:..\kernel\signal.c sigio的概述流程 对于网络IO来说,一旦收到数据,信号机制会发送sigio这个信号 简单使用sigio,udp可以使用,tcp不行 网卡接收到数据帧,并发送给协议栈 网络协议栈处理原生包(rawpackage),再发送给应用程序 应用程序进一步处理 signal的工作流程 signal函数和kill函数属于系统调用 从三个方面进行梳理 对于进程内部,这些信号集合如何保存? 调用signal...

  6MQbTPsi2fUG   2023年11月01日   128   0   0 Linux

定时器详解 引出 定时器是一个比较常见的数据结构,或者说框架,以一个最简单的例子引出,在游戏中,冷却时间使用的就是定时器; 所以说定时器是等待时间过期执行对应时间事件处理(回调函数)的一个框架; 补充:下文中可能会出现定时任务,它和时间事件基本上是一个东西 那么现在有一个就有一个问题,该如何实现定时器这一功能? 首先进行两种分类:随着网络事件处理定时事件;不随着网络事件处理时间事件; 定时器概述 对于一个服务器来说,需要许多客户端进行通信,必然会有网络IO相关的事件(网络IO事件); 除此之外,服务器内部对于一个或N个客户端传输过来的数据进行延时相关的处理,针对不同送达时间,必然会有...

  6MQbTPsi2fUG   2023年11月01日   164   0   0 Linux

协程 线程分为用户级线程,内核级线程和轻量级线程。Linux中使用的是轻量级线程,而协程虽然是运行在线程之上,但是是run在用户空间。并且协程和线程一样,拥有自己的调度器、cpu的上下文切换等。 协程在我个人看来是一种用户级线程; 这是因为对于cpu有上下文的切换,而且是在用户空间的层次进行数据处理;一旦被内核的代码阻塞,是无法进行解除阻塞状态; 协程的功能 首先需要明确一点,协程是干嘛的,针对的事物是什么? 协程针对的是IO处理,可以将多个同步关系的IO处理的性能接近于异步IO的效率; 这样既保证了编写代码的逻辑,又保证了代码执行的效率; 异步IO的效率高,是正常的,因为调用某个...

  6MQbTPsi2fUG   2023年11月01日   116   0   0 Linux
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~