字符设备的相关函数 主要作用:在/sys/class下创建类对象,方便管理。主要作用:真正意义上的放到内核的管理数组中。主要作用:获的必要的内存空间存储信息。主要作用:设置文件操作函数指针。主要作用:得到设备号。4、注册cdev到内核。2、开辟字符设备空间。
【题记】丑数 class Solution {public: int GetUglyNumber_Solution(int index) { if(index<=0) return 0; int dp[index]; dp[0]=1; //是第一个丑数 int a=0; //权值为2 int b=0; //权值为3 int c=0; //权值为5 for(int i...
引用与指针的区别 概叙 引用是对指针的封装。作用是对变量取别名,访问和修改它的值。1、使用方法注意事项:引用必须直接初始化 形参列表引用没有直接初始化(在函数调用时初始化)引用一旦初始化 不能更改引用对象(不能指向其他对象) 从一而终对引用对象的操作,直接影响其目标对象int a = 10;int& r1 = a,r2;//此处r2是int类型int* p1,p2;int& r = 10;//错误 10是常量const int&r = 10; //可...
new 和 malloc的区别 1、各自的用法new数据类型* 指针变量 = new 数据类型; //自动初始化为"零"数据类型* 指针变量 = new 数据类型(初始值);int * p = new int(10);int * pp = new int[10];删除使用delete/delete[];malloc数据类型* 指针变量=(数据类型*)malloc(大小);2、new/delete是C++标识符 malloc/free是C语言的函数3、new在申请动态内存的时候不需要计算大小..
复用IO epol poll select 池 零拷贝读写 上下文切换 mmap 高性能服务器、网络理论知识 与操作系统文章目录高性能服务器、网络理论知识 与操作系统@[toc]高性能服务器提高服务器的性能1、I/O模型阻塞IO (不合适)非阻塞IOI/O复用SIGIO信号异步I/O2、池 进程池 线程池3、零拷贝读写4、上下下切换和锁5、mmap / munmap函数6、splice7、tee总结:高性能服务器提高服务器的性能1、I/O模型阻塞IO (不合适) 程序阻塞与读写函数 当没有数据可读时 程序一直阻塞到读取数据成功 阻塞的过程:数据从无到有的时间
文件的内核数据结构 dup/dup2 fcntl 1、i节点 通过ls -i可查看文件的i节点号,i节点记录了文件的属性和数据在磁盘上的存储位置。目录也是文件,存放路径和i节点号的映射表。2、dup/dup2函数说明#include <unistd.h>int dup (int oldfd);//用来复制文件描述符 返回最小的文件描述符int dup2 (int oldfd, int newfd);//用来复制文件描述符 将old描述符复制给newfd 如果newfd被占用则覆盖...
文件描述符相关函数总结 dup2 dup 1、什么是文件描述符?1、非负的整数。2、表示一个打开的文件。3、由系统调用(open)返回,被内核空间(后续系统调用)引用。4、内核缺省为每个进程打开三个文件描述符:stdin 0 - 标准输入 stdout 1 - 标准输出 stderr 2 - 标准出错这三个描述符也可以被修改 后面会讲文件描述符的范围介于0到OPEN_MAX之间,传统Unix中OPEN_MAX宏被定义为63,现代Linux使用更大...
文件锁、进程学习笔记 #include <fcntl.h>int fcntl (int fd, int cmd, struct flock* lock);struct flock { short int l_type; // 锁的类型: // F_RDLCK/F_WRLCK/F_UNLCK // (读锁/写锁/解锁) short int l_whence; // 偏移起点: .
【题记】旋转数组的最小数字 思路: 首先我们观察题目要求时间复杂度为logn,又是一个半有序序列此时我们就应该联想到折半查找查找半有序序列。 int minNumberInRotateArray(int* rotateArray, int rotateArrayLen ) { // write code here int left = 0; int right = rotateArrayLen-1; int mid; while(left<ri...
牛客网 重排链表 思路: 首先既然不能改变值,那么只能尝试改变next指向,但我们这个时候要知道链表的单向性,如果尝试访问最后端点,则前面的值无法再访问,重启链表只会浪费时间。 因此想到要使用线性方式进行运算!class Solution {public: void reorderList(ListNode *head) { if(head==NULL || head->next==NULL||head->next->next==NU...
【题记】在两个长度相等的排序数组中找到上中位数 int findMedianinTwoSortedAray(int* arr1, int arr1Len, int* arr2, int arr2Len ) { // write code here int mid; while(1){ if(arr1Len==1){ return *arr1>=*arr2?*arr2:*arr1; }else{ int flag = arr1Len%2; .
KMP简单讲解 首先我们要知道KMP其实不难首先理解next数组的作用 int ss=S.size();//模板长度 int ts=T.size();//文本串长度 int prev = -1; int curr = 0; int res = 0; int next[ss+1]; next[0]=-1;//一定要初始化-1 for(;curr<ss;){//
二维数组的指针访问记录 int arr[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int *p1=&arr[2][2]; int *p2=arr[2]+2; int *p3=*(arr+2)+2; int (*p4)[3]=&arr[2]; int (*p5)[3]=arr+2; int (*p6)[3]=arr; //二维数组名本身即是指向二维数组中第一个一维数组的指针 int (*p7)[4][3]=&arr; //arr与&am...