- 博客(46)
- 收藏
- 关注
原创 va_list 可变参数
#include <stdarg.h> //头文件#include <stdio.h>void PrintNumbers(int v, ...){ va_list va; va_start(va, v); while (v > 0) { printf("%d\t", va_arg(va, int)); --v; } printf("\n"); va_end(va);}int main(int argc, char* ar
2020-10-27 01:23:06
166
翻译 Operating Systems: Three Easy Pieces 读书笔记之目录篇
Operating Systems: Three Easy Pieces英文原版电子书:http://pages.cs.wisc.edu/~remzi/OSTEP/作者主页:https://github.com/remzi-arpacidusseau (其中包含中文翻译版书籍、homework 等)读完这本书将收获什么?(TOC)对操作系统的整体介绍,虚拟化 CPU虚拟化内存并发性...
2020-01-10 12:10:09
535
原创 coredump
设置 coreulimit -c 查看 core 文件限制,如果为 0,说明 core 开关关闭;ulimit -c 1024 设置 core 为 1024 个 block(一般 1 block = 512 bytes,也可以 ulimit -a 查看);ulimit -c unlimited 设置当前的 core 为无限制。或者设置为永久生效,方式是:修改 /etc/security/l...
2019-12-25 22:41:04
291
原创 守护进程
编写一个守护进程本文主要参考自:https://blog.youkuaiyun.com/zzyoucan/article/details/9105385fork() 一个子进程,并让父进程退出,从而让子进程变为孤儿进程,被 init 进程托管;但此时子进程依然复制了它父进程的进程组、会话、终端、工作目录、文件权限掩码(1)^{(1)}(1) 和文件描述符。setsid() 创建新会话期,从而:1)...
2019-12-25 17:15:44
179
原创 gcov 代码覆盖率
gcovgcov 随 gcc 直接安装,无须另外安装。使用方式:示例代码:// hello.c#include <stdio.h>int main(int argc, char* argv[]){ if (argc > 1) { printf("Number of arguments: %d\n", argc); for ...
2019-12-24 22:10:14
266
原创 ulimit 命令
常用选项-a:显示当前所有的 limit 信息-H:设置 hard 资源限制,如 ulimit -Hn 64-S:设置 soft 资源限制,如 ulimit -Sn 32-c:core file size,最大的 core 文件的大小,以 blocks 为单位,一般 1block=512bytes;-d:data seg size,进程最大的数据段的大小,以 kbytes 为单位;...
2019-12-24 14:50:35
798
1
原创 使用 gtest (Google Test) 进行 C++ 单元测试
环境我使用的 cmake 版本:2.8.11编译 Google Test下载 googletest:git clone https://github.com/google/googletest.git进入 googletest 目录:cd googletest创建 build 文件夹并进入:mkdir yybuildcd yybuild执行 cmake:cmake .....
2019-12-23 20:59:42
953
原创 gcc/g++ & gdb调试
gcc -g code1.cpp -o code1 (-g 用来 gdb 调试)gdb ./code1 (开始 gdb 调试)l (list 出代码)b 8 (在第 8 行处 break 设置断点)r (run 运行到断点处)p i (print 出变量 i 的当前值)backtrace(当发生错误时追溯错误,会以 #1、#2 …… 的形式列出错误)frame 3 (显示 back...
2019-12-18 11:00:26
258
原创 vim
快速移动到文件的第一行::0 或 gg快速移动到文件的最后一行::$ 或 G快速移动到当前行的行首:Home 键 或 0 或 ^ (home 和 0 移动到行首,^ 移动到该行的第一个字符)快速移动到当前行的行尾:End 键 或 $ (可以加上数字 —>1$:当前行尾,2$:当前行下一行的行尾)...
2019-12-17 18:18:05
113
原创 __BEGIN_DECLS 和 __END_DECLS
为了支持重载,C++ 在编译的时候会为函数加上参数类型(名字修饰),在链接的时候在符号表中查找类似 _func_i_i 的函数(void func(int, int)),而 C 语言并无重载,因此符号表中的函数就是函数名本身。为了让 C++ 编译的文件也能链接到由 C 语言编译的模块,需要加上 extern “C” 关键字,用来告诉 C++ 编译器,此 extern “C” {} 包含的代码需要...
2019-12-10 14:08:29
487
原创 Linux tar 命令:归档、压缩与解压缩
tar:作用是将多个文件归档为一个文件gzip, bzip2, compress:作用是压缩压缩文件的扩展名压缩程序解压程序在 tar 中对应的参数.gzgzipgunzip-z.bz2bzip2bunzip2-j.Zcompressuncompress-Ztar 命令:tar <参数> <压缩文件的文件名>...
2019-12-09 11:05:57
347
原创 进程前后台转换 and /proc/PID/status 查看进程状态
进程前后台转换进程后台运行:命令后面加上 & command &进程后台运行并将输出写入 nohup.out:nohup command &前台进程调入后台:ctrl+z 暂停后 bg %1后台进程调入前台:fg %1查看当前终端正在后台运行的进程:jobs -l查看进程状态cat /proc/PID/status部分字段解释:Name:进程名称...
2019-12-06 14:53:12
371
原创 Git
查看是否安装了 git: git安装 sudo apt-get install git创建版本库文件夹 mkdir yy_git进入文件夹 cd yy_git初始化,将该目录变成 git 可以管理的仓库 git init这时出现了 .git 目录,这个目录是 git 用来跟踪管理版本库的,不要随便修改git 只能跟踪文本文件的改动,不包括图片、视频以及 word 类型的文档等将文件...
2019-12-06 14:21:42
125
原创 TCP 连接中的 keepalive
TCP 连接中的 keepalive记一次InfluxDB写入抖动问题的排查和思考聊聊 TCP 中的 KeepAlive 机制tcp keepalive 解决半连接造成的占用服务器资源问题。$cat /proc/sys/net/ipv4/tcp_keepalive_time7200(一个 tcp 连接两小时没有数据传输则启动 keepalive 检测)$cat /proc/sys/...
2019-12-05 15:12:31
327
原创 操作系统 2 进程的引入 、组成、组织、特征、状态、状态转换、进程控制
进程的引入 、组成、组织、特征、状态、状态转换、进程控制状态转换:进程控制:
2019-10-15 21:33:41
170
原创 操作系统 1 操作系统概念、功能、特征、发展阶段、运行机制、内核、内核态与用户态的切换、中断
操作系统概念、功能、特征、发展阶段、运行机制、内核内核态与用户态的切换、中断
2019-10-15 18:32:04
356
原创 HTTP
1 请求/响应报文结构1.1 请求报文1.2 响应报文与请求报文的区分在于 请求行 和 状态行。2 请求方法 Method幂等性:多次请求资源 和一次请求资源应该具有同样的副作用(除非在服务器端手动修改)。注意理解幂等性。幂等性的不同造成 GET&POST,PUT&PATCH 的适用性不同。为什么 PATCH 是非幂等的,为什么 PUT 是幂等的?—— PA...
2019-10-14 23:01:58
153
原创 Effective C++ 条款 18 - 25【设计与声明】
Effective C++ 条款 18 - 25【设计与声明】条款 18:让接口容易被正确使用,不易被误用1. 如何让接口容易被正确使用?接口一致性 原则,即不要让用户需要努力记住他们应该做什么,例如 STL 中所有容器类型取大小的接口都是 size(),而没有 lenth(),count() 这些乱七八糟的。自定义的接口要尽量与内置类型保持一致,例如 operator= 重载应该返回...
2019-10-09 13:12:52
370
原创 Effective C++ 条款 13 - 17【资源管理】
Effective C++ 条款 13-17资源:内存 —— new 之后忘记 delete文件描述符 —— opendir() 之后忘记 closedir()互斥锁 —— lock() 之后忘记 unlock()数据库连接socket —— socket() 之后忘记 close()条款 13:以对象管理资源1. 不以对象管理资源会出现什么问题?看下面的代码:void ...
2019-10-08 23:04:16
192
原创 Effective C++ 条款 05 - 12【构造/析构/赋值运算】
Effective C++ 条款 05 - 12(注:08 还没看呢)条款 05:了解 C++ 默默编写并调用哪些函数如果并且只有当你自己没声明的时候,编译器会为类自动 声明 一个 构造函数、一个 拷贝构造函数、一个 拷贝赋值运算符、一个 析构函数;这些函数只有真正需要被调用的时候才会被自动 定义;这些函数都是 public 和 inline 的;只有基类的析构是非 private ...
2019-09-27 16:32:12
204
原创 Effective C++ 条款 02 - 04【让自己习惯 C++】
Effective C++ 条款 02 - 04条款 02:尽量以 const enum inline 代替 #define1. #define 的一些毛病#define 定义的内容不出现符号表中,编译器看不见,报错时难以追踪(用 const 就没有这个问题);#define 定义变量有可能会导致代码膨胀(用 const 就没有这个问题);#define 没有作用域的概念,自然也没有...
2019-09-27 12:10:35
300
原创 设计模式总结(持续更新……)
创建型模式简单工厂模式工厂方法模式抽象工厂模式建造者模式单例模式结构型模式适配器模式桥接模式(柄体模式、接口模式)动机:将实体和实现脱耦。实现:实体都继承自一个抽象的实体类,实现都继承自一个抽象的实现类。将实体和实现在抽象层面上关联起来。例子:用不同颜色绘制不同形状的图形,如圆形、矩形、三角形。这些图形继承自一个抽象的 Shape 类,是实体;用不同颜色进行绘制继承自一个...
2019-09-22 02:04:24
123
原创 抽象工厂方法
抽象工厂方法解释简单工厂方法:一个工厂,根据传给它的不同的标识(参数)来生产继承自同一个抽象产品类的不同的具体产品。工厂方法:每一个具体产品都用一个具体工厂来生产,这些具体工厂继承自一个抽象工厂,解决了简单工厂方法中工厂类不易扩展的问题。抽象工厂方法:在工厂方法上又引入了 “产品等级结构” 和 “产品族” 两个概念。也就是说,在工厂方法中,一个工厂生产一种产品,而在抽象工厂方法中,每个...
2019-09-04 15:45:04
188
原创 工厂方法模式
工厂方法模式解释:简单工厂模式是用不同的标识符来告诉同一个工厂应该创建继承自同一个抽象产品的哪一种具体产品。工厂方法将工厂也抽象出来,即,一种具体的产品对应于一种具体的工厂,这些具体产品继承自同一个抽象产品类,这些具体的工厂也继承自同一个抽象工厂类。当有新的产品加入时,只需要为这个产品再创建一个具体工厂。而当简单工厂方法中有新的产品加入时,需要修改工厂中的方法的具体实现,这破坏了设计模式...
2019-09-04 15:01:59
90
原创 安装 MySQL时 3306 端口被占用
解决方法:-> cmd-> netstat -ano|findstr 3306出现进程号-> tasklist在出现的列表中看是哪个进程占用了此端口-> 任务管理器找到这个进程,杀了他
2019-09-04 14:38:02
966
原创 简单工厂模式
简单工厂模式解释一个工厂类,根据获得的参数来构造不同的具体类,这些具体类继承自同一个抽象类。图形表示代码实现#include <iostream>#include <string>using namespace std;class Product {public: virtual void use() = 0;};class Concrete...
2019-09-04 14:01:07
93
原创 360笔试题:Bittttttts
360笔试题:Bittttttts题目:分析:题目起得真随意啊,是在暗示什么吗?然而我并没有用于位运算。如下图(实际中用的是 deque,因为需要在前面插入)代码:#include <iostream>#include <deque>using namespace std;int main() { int q = 0; cin >...
2019-08-29 14:42:53
286
原创 圈地运动
圈地运动题目分析:这道题的关键:能组成多边形的条件是:最长边的长度小于其它所有边的长度和。代码:#include <iostream>#include <algorithm>using namespace std;int main() { size_t nb = 0; while (cin >> nb) { ...
2019-08-29 10:38:42
341
原创 素数对
素数对题目我的解法:思路:得到所有素数:一个素数向量 primes,如果数 k 不能被 primes 中的所有数整除,那么 k 也是一个 prime,把它加进去。(这个就很笨)判断有多少对素数对的和为 n :首尾指针 p q,如果对应的素数的和 < n,p 往前走;如果对应的素数的和 > n,q 往后退;如果对应的素数对的和等于 n,p 往前同时 q 也往后,计数结果增...
2019-08-25 22:22:58
363
原创 OOP 设计模式的六大原则
OOP 设计模式的六个基本原则设计模式的类别分为 结构型模式、创建型模式、行为型模式顾名思义即可(比如说创建型模式意思就是说应该按什么样的方式创建……)。设计模式的六大原则开闭原则(Open Close Principle)1)对扩展开放,对修改关闭。2)open:模块的行为必须是开放的、支持扩展的**,而不是僵化的。3)close:在对模块的功能进行扩展时,不应该影响或...
2019-08-24 18:33:02
1562
原创 剑指Offer:数组中只出现一次的数字
剑指Offer:数组中只出现一次的数字题目:我的解法我的愚蠢蠢蠢蠢解法:先快速排序,然后用栈找只出现一次的数字。class Solution {public: void FindNumsAppearOnce(vector<int> data, int* num1, int *num2) { if (data.empty()) return; ...
2019-08-24 15:08:06
213
原创 剑指Offer:平衡二叉树
剑指Offer:平衡二叉树题目:分析平衡二叉树:它是一棵空树,或者它的左右子树的高度差的绝对值不超过 1,并且它的左右子树也是平衡二叉树。解法一我能想到的最直接的递归解法如下:class Solution {public: map<TreeNode*, int> node_deepth; bool IsBalanced_Solution(TreeNod...
2019-08-24 11:19:12
119
原创 剑指Offer:二叉树的深度
剑指Offer:二叉树的深度题目分析简单的递归代码/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public:...
2019-08-24 09:39:56
141
原创 剑指Offer:数组中的逆序对
剑指Offer:数组中的逆序对题目插入排序解法(复杂度过高)这个方法不能 AC,运行结果是:运行超时:您的程序未能在规定时间内运行结束,请检查是否循环有错或算法复杂度过大。case通过率为75.00%什么还是写在这里吧...代码如下:class Solution {public: int InversePairs(vector<int> data) {...
2019-08-23 21:23:29
170
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人