分类: 计算机基础

100 篇文章

惊群问题
惊群效应是什么 惊群效应(thundering herd)是指多进程(多线程)在同时阻塞等待同一个事件的时候(休眠状态),如果等待的这个事件发生,那么他就会唤醒等待的所有进程(或者线程),但是最终却只能有一个进程(线程)获得这个时间的“控制权”,对该事件进行处理,而其他进程(线程)获取“控制权”失败…
Kafka简介与架构
概述 Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。 主要应…
IGMP协议
组播IP地址 组播地址是分类编址的IPv4地址中的D类地址,又叫多播地址,他的前四位必须是1110,所以网络地址的取值范围是224~239。 组播地址范围 地址 说明 224.0.0.0-224.0.0.255 为路由协议预留的永久组地址 224.0.1.0-231.255.255.255 /233…
理解I/O多路复用
什么是多路复用 IO多路复用(IO Multiplexing)一种同步IO模型,单个进程/线程就可以同时处理多个IO请求。一个进程/线程可以监视多个文件句柄;一旦某个文件句柄就绪,就能够通知应用程序进行相应的读写操作;没有文件句柄就绪时会阻塞应用程序,交出cpu。多路是指网络连接,复用指的是同一个进…
各种的I/O
什么是I/O IO,Input/Output 简写,是指内存和外设之间的数据复制的过程. 输入是指数据从外设复制到内存中, 输出则是指数据从内存复制到外设。 根据外设种类可以分为磁盘IO和网络IO, 因为外设的数据读写速率较低以及 IO 会涉及到系统调用以及中断,所以通常都会比较耗时。在程序优化时思…
数组指针遍历
一维数组 #include <stdio.h> int main(){ int arr[] = {3,1,2,3,4,5,6,7,8,9,10}; int *pa = (int *) arr; for (int i = 0; i < 10; ++i) { printf("…
Byte和bit的区别
bit:位 (小写b) 也称比特 是英文 binary digit的缩写 二进制数系统中,每个0或1就是一个位(bit) 位是数据存储(计算机中信息)的最小单位 计算机中的CPU位数指的是CPU一次能处理的最大位数。例如32位计算机的CPU一次最多能处理32位数据 Byte:字节(大写B) 8bit…
数据结构之堆
定义 堆就是用数组实现的二叉树,所以它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置。 堆就基于完全二叉树的结构(完全二叉树就是除了最底层,其它层都必须填满,最后一层可以从左到右填满);平时生活中,我们有时会说一堆人,一堆某某东西,其实数据结构里的堆也和生活中的类似…
数据结构之链表
定义 链表就是线性表的链式存储方式。链表的内存是不连续的,前一个元素存储地址的下一个地址中存储的不一定是下一个元素。链表通过一个指向下一个元素地址的引用将链表中的元素串起来。 分类 链表分为单向链表(Singly linked lis)、双向链表(Doubly linked list)、循环链。 单…
数据结构之数组
定义 数组是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 优点 随机访问性强,查找速度快,时间复杂度是O(1)。 缺点 从头部删除、从头部插入的效率低,时间复杂度是O(n),因为需要相应的向前搬移和向后搬移 空间利用率不高 内存空间要求高,必须要有足够的连续的内存空间 …