Epoll API
epoll1、epoll_create()创建一个新的epoll实例。在内核中创建了一个数据,包含:需要检测的文件描述符的信息(红黑树)+ 就绪列表,存放检测到数据发送改变的文件描述符信息(双向链表)。
原型:int epoll_create(int size) 参数:
size : 目前没有意义了。随便写一个数,必须大于0
返回值:
-1 : 失败; > 0 : 操作epoll实例的文件描述符
1int epfd = epoll_create(100);
2、epoll_ctl()对epoll实例进行管理:添加一个文件描述符信息,删除一个文件描述符信息,修改一个文件描述符信息
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)
参数:
epfd : 操作epoll实例的文件描述符
op : 要进行什么操作
- EPOLL_CTL_ADD: 添加
- EPOLL_CTL_MOD: 修改
...
Socket API
Linux下Socket网络通信头文件:1234#include <netinet/in.h>#include <arpa/inet.h> //包含了<sys/socket.h> <sys/types.h>#include <unistd.h>#include <stdlib.h>
1、创建socket,返回fdSocket 函数的原型:int socket(int domain, int type, int protocol);
domain :协议族
type:通信过程中使用的协议类型 SOCK_STREAM : 流式协议
protocol:具体的一个协议,一般写0
- SOCK_STREAM : 流式协议默认使用 TCP
- SOCK_DGRAM : 报式协议默认使用 UDP
返回值:
- 成功:返回文件描述符。
- 失败:-1
1int fd = socket(AF_INET, SOCK_STREAM, 0);
表明 s ...
Django项目学习笔记
Lesson 2-1
Docker、Git环境搭建1、先从AC Terminal中的/var/lib/acwing/images/下把搭配好Django的镜像scp到自己的服务器上。在自己的云服务器平台上将20000和8000端口开放再在自己服务器上,docker load -i 把镜像放到自己的服务器上。
docker run -p 8000:8000 -p 20000:22 --name django -itd django_lesson:1.0 创建并运行一个容器。(8000:8000 端口是开放Http,20000:22 端口是开放ssh)找一个地方作为开发Django项目的路径,并在ACGit上创建仓库,将这个路径作为git的目录,git clone ******,至此已经完成环境搭建项目开发项目创建
建议开tmux开发和运行项目
创建一个项目django-admin startproject acapp,会创建一个文件夹acapp,树形结构如图(可以先不用看):acappacappinit.pyasgi.pysettings.pyurls.pywsgi.pymanage. ...
Redis 学习笔记
RedisRedis (REmote DIctionary Server) :用 C 语言开发的一个开源的高性能键值对(key-value)数据库。
特征:
数据间没有必然的关联关系,不存关系,只存数据
数据存储在内存,存取速度快,解决了磁盘 IO 速度慢的问题
内部采用单线程机制进行工作
高性能,官方测试数据,50个并发执行100000 个请求,读的速度是110000 次/s,写的速度是81000次/s
多数据类型支持
字符串类型:string(String)
列表类型:list(LinkedList)
散列类型:hash(HashMap)
集合类型:set(HashSet)
有序集合类型:zset/sorted_set(TreeSet)
支持持久化,可以进行数据灾难恢复
应用:
为热点数据加速查询(主要场景),如热点商品、热点新闻、热点资讯、推广类等高访问量信息等
即时信息查询,如排行榜、网站访问统计、公交到站信息、在线人数(聊天室、网站)、设备信号等
时效性信息控制,如验证码控制、投票控制等
分布式数据共享,如分布式集群架构中的 session 分离
消息队列
red ...
Leetcode.76 最小覆盖子串
注:是2020-5-31 字节夏令营第一场笔试中的一道类似题~代码:
1234567891011121314151617181920212223242526272829class Solution {public: string minWindow(string s, string t) { vector<int> map(128); int left = 0, right = 0, need = t.size(), minStart = 0, minLen = INT_MAX; for(char ch : t) ++map[ch]; //统计t中每个字符出现次数 while(right < s.size()) { if(map[s[right]] > 0) --need; //窗口右移,每包含一个t中的字符,need-1 --map[s[right]]; ...
Leetcode.24 接雨水
12345678910111213141516class Solution {public: int trap(vector<int>& height) { int n = height.size(); int res = 0; vector<int> leftMax(n, 0), rightMax(n, 0); for(int i = 1; i < n; i ++) leftMax[i] = max(leftMax[i - 1], height[i - 1]); for(int i = n - 2; i >= 0; i --) rightMax[i] = max(rightMax[i + 1], height[i + 1]); for(int i = 0; i < n; i ++){ int _min = min(leftMax[i], rightMax[i]); if(_ ...
2022.1.15字节后端训练营笔试
862. 和至少为 K 的最短子数组
12345678910111213141516171819202122typedef long long LL;class Solution {public: int shortestSubarray(vector<int>& nums, int k) { int n = nums.size(); vector<LL> s(n + 1); for (int i = 1; i <= n; i ++ ) s[i] = s[i - 1] + nums[i - 1]; deque<int> q; q.push_back(0); int res = INT_MAX; for (int i = 1; i <= n; i ++ ) { while (q.size() && s[q.front()] + k <= s[i]) ...
字节12月双月笔试题解
题目结构:三个单选题、两个多选题、三个编程题,一个天选之题
MIT 6.s081 lab2
实现步骤:
1、添加$U/_trace到Makefile中的UPROGS变量里;
2、添加声明到user/user.h,添加一个entry到user/usys.pl和一个syscall number到kernel/syscall.h中;
3、添加mask值到proc结构体;
proc结构体:
1234567891011121314151617181920212223// Per-process statestruct proc { struct spinlock lock; // p->lock must be held when using these: enum procstate state; // Process state struct proc *parent; // Parent process void *chan; // If non-zero, sleeping on chan int killed; // If non-zero, ha ...
npm不是内部或外部命令
解决问题:在使用cmd查找npm、node版本号时,出现错误“不是内部或外部命令,也不是可运行的程序或批处理文件”。错误原因:未配置好环境变量。提前准备:复制好nodejs的存储路径。
解决方法:
点击“此电脑”,右击“属性”,点击“高级系统设置”
2. 点击“高级”选项卡中的“环境变量”
3. 首先新建一个用户变量,变量名为NODE_PATH,变量值为nodejs的存储路径。
4. 然后点击编辑Path用户变量,新建一个值为**#NODE_PATH#**
最后点击编辑Path系统变量,新建一个值同样为**#NODE_PATH#**
总体已经完成啦,可以正确输出版本号,效果如下:希望这篇文章对你有所帮助!自己之前遇到了这个问题发现大家的文章步骤不是很全,于是就自己动手写了一篇,小白写文,有不对的地方请多指教!

