共享内存方式 最快的IPC形式,这样的内存区域映射到共享它的进程的地址空间,这些进程的数据传输就不再涉及内核(进程不再通过任何进入内核的系统调用来彼此传递数据,内核必须允许各个进程共享内存区域的内存映射关系然后一直处理该内存区域),但是在共享内存中存放或读取信息需要进程间的同步方式。 客户——服务器
connect是客户端向zk服务器发起链接函数;client向zk zerver发起链接时分为两步:1.tcp三次握手;2.握手成功后与zk server进行atuh认证维持的状态 StateUnknown State = -1//未使用 StateDisconnected State = 0//c
事务有 ACID 四个基本属性:原子性(Atomicity)、一
oversser在go中创建可监控、重启、自升级二进制文件的包。分为master模式和slave模式;master为父进程,创建监听套接字、设置isSlave标记等一些初始化工作,之后调用forkExec创建slave子进程来执行bin类型的二进制可执行文件;热升级时发送SIGUSR2信号给mast
服务器并发模型通常可分为单线程和多线程模型,这里的线程通常是指“I/O线程”,即负责I/O操作,协调分配任务的“管理线程”,而实际的请求和任务通常交由所谓“工作者线程”处理。通常多线程模型下,每个线程既是I/O线程又是工作者线程。所以这里讨论的是,单I/O线程+多工作者线程的模型,这也是最常用的一种
内存屏障 问题产生原因: cpu0执行写操作,若CPU本地cache没有此变量,须发一个invalidate到总线,其他CPU收到invalidate消息后将此变量从自己的本地cache中清除,并且发送ack给CPU0,CPU0收到其他CPU发送的ack后将变量值写入到本地cache,但是CPU0在等待其他CPU回复ack时是出于停滞状态,大部分时间都是在等待消息,为了解决此问题引入C
const_cast 函数原型: const_cast < type-id > ( expression ) 去掉const属性:const_cast<int*> (&num),常用,因为不能把一个const变量直接赋给一个非const变量,必须要转换。 加上const属性:const int* k = const_cast<const i
epoll详解 epoll在内核中维护一个事件表,提供一个独立的系统调用poll_ctl来控制往其中添加删除修改事件,epoll_wait可从内核事件表中直接取得用户注册事件,无需反复从用户空间读这些事件,无需扫描整个文件描述符集合来检测哪些是就绪事件,其参数events仅用来返回就绪的事件,使得索引的就绪文件描述符时间复杂度达到了O(1)。 使用了三个函数实现select要做的事
思路:字符串的练习
假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是 O
unique_ptr独享被管理对象,同一时刻只能有一个unique_ptr拥有对象的所有权,当其被赋值时对象的所有权也发生转移,当其被销毁时被管理对象也自动被销毁 shared_ptr共享被管理对象,同一时刻可以有多个shared_ptr拥有对象的所有权,当最后一个shared_ptr对象销毁时,被
并发编程的目的是让程序“同时”执行多个任务,如果程序是计算密集型的,并发编程就没有优势,反而由于任务的频繁切换导致效率降低。如果程序是I/O密集型的,如经常读写文件,访问数据库,那就另当别论:由于I/O操作没有CPU计算的速度快,所以让程序阻塞与I/O操作将浪费cpu时间,如果程序有多个线程执行,则
口令文件 UNIX口令文件包含了如下图所示的个字段,这些字段包含在<pwd.h>中定义的passwd结构中。 口令文件是/etc/passwd,而且是一个ASCII文件。每一行包含如下图所示的各字段,用冒号分隔,一般结构是 关于这些登录项,注意下面各点: 提供finger(l)命令的某些支持注释字段
1、直接插入排序 最好O(n),最坏时间O(n^2),较稳定 基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。 #include <iostream> using n
二分搜索的的使用不一定是在有序数组中查找使用,只要是一次条件筛选之后能过滤掉一半数据之后都可以使用 完全二叉树增加结点在树的最后一层从左到右依次添加,删除结点从右到左依次删除 找根节点的右子树的最左子树出现的位置,是否和左子树中的最左子节点出现在同一层
先看一段代码 class X {}; class Y : public virtual X {}; class Z : public virtual X {}; class A : public Y, public Z {}; // sizeof(X)的结果为1 // sizeof(Y)的结果为8
概率的一些练习
在本书中有两个地方都对这个函数进行了介绍,其实还有很多地方需要这个函数。ioclt函数传统上一直作为纳西而不适合归入其他精细定义类别的特性的系统接口。网络程序(特别是服务器程序)经常在程序启动执行后使用ioctl获取所在主机全部网络接口的信心,包括:接口地址、是否支持广播、是否支持多播。
c语言中,“数据”和“处理数据的操作(函数)” 是分开声明的,将这种程序方法称为程序性(procedural),比如声明一个struct Point3d: struct Point3d { float x; float y; folat z; }; 而操作该数据数据的函数例如打印函数,只能另外定义成
排列组合的一些练习
广播和多播仅应用于UDP,TCP是一个面向连接的协议,它意味着分别运行于两主机(由IP地址确定)内的两进程(由端口号确定)间存在一条连接。 主机对由信道传送过来帧的过滤过程: 首先,网卡查看由信道传送过来的帧,确定是否接收该帧,若接收后就将它传往设备驱动程序。通常网卡仅接收那些目的地址为网卡物理地址
进程标识 每一个进程都有一个非负整形表示的唯一进程ID。因为进程ID标识符总是唯一的,常将其用来作其他标识符的一部分以保证其唯一性。例如,应用程序有时就把进程ID作为名字的一部分来创建一个唯一的文件名。 虽然是唯一的,但是进程ID是可以复用的。当一个进程终止后,其进程ID就成为复用的候选者。大多数U
虚拟内存的三个能力: 它将主存看成磁盘上的地址空间的高速缓存,在主存中只保持活动区域,并根据需要在磁盘和主存之间来回传送数据。 为每个进程提供一致地址空间 保护了每个进程的地址空间不被其他进程破坏 物理和虚拟地址 计算机的主存可以看做是一个由 M 个连续的字节大小的单元组成的数组。每个字节都有一个唯
单生产者 初始位置:生产者的头和尾指向相同的位置;并只有生产者的头和尾被修改 1.生产者的头和消费者的尾指向临时变量,prond_next指向表的下一位置,如果没有足够的空间,返回错误 2.prod_head(原变量而非临时变量)指向prod_next,新元素入队 3.修改prod_tail指向pr
题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。比如输入下图中左边的二叉搜索树,则输出转换之后的排序双向链表 思路 每个结点都有两个指向子结点的指针。在双向链表中,每个结点也有两个指针,它们分别指向前一个结点和后一个结点。 由于
在创建套接字时,可以通过指定参数 AF_ROUTE 域创建路由套接字(它只能支持原始套接字,只有超级用户才能创建这个套接字),路由套接字可以访问内核中路由子系统的接口信息。 进程通过写到路由套接字向内核发送消息(路径的增加和删除采用这种方式实现) 进程通过读入路由套接字接收来自内核的消息(内核采用这
对于标准I/O都是围绕流进行操作,当用标准I/O库打开一个文件时,使一个流与一个文件相关联。 流的定向决定了所读写的字符是单个字节还是多字节。当流创建时并没有定向,若在未定向的流上使用一个多字节I/O函数,则流设置为宽定向,若使用单字节函数,流定向为字节定向。 FILE通常是一个结构,它包含了标准I
思路: 前序遍历的第一个节点就是树的根节点,所以我们先根据前序遍历序列的第一个数字创建根结点,接下来在中序遍历序列中找到根结点的位置,根节点的左边就是左子树,右边就是右子树,这样就能确定左、右子树结点的数量。在前序遍历和中序遍历的序列中划分了左、右子树结点的值之后,就可以递归地去分别构建它的左右子树
带外数据比普通数据具有更高的优先级,应该会立即被发送,不论发送缓冲区中是否有排队等候发送的普通数据,他的传输可以使用一条单独的链路传输也可以映射到普通数据传输的链接中。 如果有多个带外数据,则每个TCP头部都设置URG,他们的紧急指针指向同一位置(数据流中带外数据的下一位置,)只有一个TCP报文段真
在第一行我们写上一个 0。接下来的每一行,将前一行中的0替换为01,1替换为10。 给定行数 N 和序数 K,返回第 N 行中第 K个字符。(K从1开始) 例子: 输入: N = 1, K = 1输出: 0 输入: N = 2, K = 1输出: 0 输入: N = 2, K = 2输出: 1 输入
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号