哲学家吃饭 and 顺序吃法
不按顺序吃法,将死锁的“循环等待”条件破坏即可,我的做法是奇数先拿左手筷子,偶数先拿右手筷子。 代码如下 #include <iostream> #include <thread> #include <mutex> #include <vector> #include <set> #inc…
Linux的文件和时间操作
Linux时间操作 UNIX操作系统根据计算机产生的年代把1970年1月1日作为UNIX的纪元时间,1970年1月1日是时间的中间点,将从1970年1月1日起经过的秒数用一个整数存放。 time_t time_t用于表示时间类型,它是long类型。表示从1970年1月1日0时0分0秒到现在的秒数。 time() time()用于获取操作系统当前时间…
静态库和动态库
先这样 静态库 然后编译成静态库 静态库的制作和使用流程如下: 1)制作静态库 g++ -c -o lib库名.a 源代码文件清单 2)使用静态库 g++ 选项 源代码文件名清单 -L库文件所在的目录名 -l库名 本例的使用过程如下: [wsm@localhost tools]$ g++ -c -o libpublic.a public.cpp […
学习打卡记录
Q:为什么要这个打卡记录? A:根本原因是我太摆了。原来我还能每天都学,自从进入求职状态后就不太能学得进去了,然后渐渐开始不学新的知识了。眼看着好习惯一步步在往坏的方向发展,着实看不下去自己了。故开一个打卡,让自己每天晚上都打下卡总结当天干了啥。没必要用多好的ui,主要目的是督促自己学;也没必要和谁一起打卡,相信自己能克服孤独。 2月25日 今天来…
一个dfs 拆分数字二进制
小米一面,第一次面试没写出算法题ww 面完后找cfd帮忙写出来了 大于等于2时就往下继续拆分,0、1不用在前面套2 #include <iostream> #include <vector> #include <string> #include <unordered_map> using namesp…
简历 | 6、muduo库
采用Reactor模型。I/O 多路复用监听事件,收到事件后,根据事件类型分配(Dispatch)给某个进程 / 线程。
C++状态机
803 项目里面的subproc用到了状态机。上报平台时终端会切换不同的报文,这里就用上了状态机,很妙!这个插件的整体流程我写在《苏标上报协议流程》里面,这篇文章仔细地写下状态机。 整体流程如下: 为什么用状态机 优雅!其实这个插件的功能用switch也可以,但是这样略显臃肿。状态机用到了C++的继承、虚函数,初次看到有些惊艳,原来代码还能这么写!…
一次关于 fd 的 debug
将代码改成I/O多路复用时出现了一个bug Bad file descriptor 这里是向已关闭的文件描述符写东西。 出问题的地方是 // 登录客户端的登录报文。 if (ClientLogin(TcpServer) == false) ChldEXIT(0); // 出了ClientLogin这个函数后,TcpServer失效。 // 接收文件…
友元
友元有两种:友元函数 和 友元类。 友元的作用是:在类的成员函数外部直接访问对象的私有成员 友元函数 友元函数内部可以访问该类对象的私有成员。既可以是全局函数、又可以是其它类的函数(public的函数)。 #include<iostream> using namespace std; class CCar; //提前声明CCar类,以便…
4、调度模块
两个程序,一个是崩溃后再运行、一个是杀死超时程序。 调度进程 先让1号进程接管,然后由这个被1号进程接管的进程来负责fork子进程,并等待子进程退出。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h&…