- 博客(6)
- 问答 (1)
- 收藏
- 关注
原创 编译原理:词法分析概览
词法分析的目的在于对输入的字符串进行扫描并将其中匹配的词素找寻出来转换为词法单元然后将其添加入符号表或者送给语法分析器。比如说有这样一个语句:int x = 1;词法分析器会将其中的{int, x, =, 1}提取出来,每一项都会生成一个词法单元,某些词法单元不仅有词法单元名,也保有属性值,比如说int就只有一个词法单元名,所以它的表示就是<INT,>(这个词法单元名是临时编的,...
2020-04-13 11:25:00 438
原创 Linux网络编程实验——线程池实现服务器
本实验是按照《Linux高性能服务器编程》15.5节实现的。原理很简单,就是利用epoll+多线程对客户请求进行处理。代码已经放在了git仓库,下面记录了几个我遇到的问题。1.异常表现:在进行压测时,服务器会触发许多对-1文件描述符的异常关闭。 这个问题我排查了很久,最后发现原来是因为自己不熟悉多线程编程而导致的。 对于每一个客户连接我都使用一个实体类来表示,其中也包括这个连接的文件...
2020-03-30 14:53:52 322
原创 Linux网络编程实验——进程池实现服务器
这是学习Linux网络编程以来的第一个相对比较长的实验。途中遇到了许多乱七八糟的问题以致感觉自己迷迷糊糊的,所以打算把这些记下来算作梳理。 实验取自《Linux高性能服务器编程》15.3节 代码已经全部上传到我的github仓库,文后附上链接。Something interesting1.不像使用pipe()创建的管道两边只能一个读一个写,socketpair第一个参数选用PF_U...
2020-03-23 15:17:36 216
原创 Linux 0.11实验笔记之基于内核栈切换的进程切换
OS需要为进程切换做的那些东西 在linux 0.11中,进程切换非常简单!只需要一句ljmp就能够做到,因为其中需要做的所有东西intel都已经让cpu帮你做好了,但不幸的是,这一条指令非常耗时,大概需要两百个时钟周期(约0.2秒)。 让我们先弄清楚哪些东西改变了才算是完成了进程切换后再谈谈CPU帮我们做了什么,因为这样子才比较顺理成章。进程切换究竟做了些什么? 先来看看ljmp指...
2020-02-25 22:53:44 414
原创 Linux-0.11实验笔记
操作系统是一个非常复杂的体系,对新手极不友好,其中各个知识的牵连也十分紧密,也许你仅仅想要对进程切换做修改,但是同时还要在全局上非常清楚自己修改的地方处于整体什么位置,和别的模块或者构件有着什么样子的联系。一旦修改,别的与之相关联的地方是否需要改动?或者出现了错误之后你知道应该怎么确定错误?最最可怕的就是,例如对于进程切换的修改,身为新手的我们对于一些实现细节的隐性知识根本不知道,除非自己在全局上...
2020-02-18 09:57:40 156
空空如也
C++ 用于实现链表的类模板、继承、类模板声明问题
2017-10-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人