自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 CentOS部署RocketMQ

Centos安装RocketMQ最近学弟学妹在做项目的时候,想使用RocketMQ, 但是阿里云的价格实在太高了,因此只能自己去部署下MQ了。后期将rocketMQ-client-cpp的学习笔记也会记录下来。下面为安装流程:安装jdkyum install javayum -y install java-1.8.0-openjdk*安装gityum install git下载源代码包wget ’https://mirrors.tuna.tsinghua.edu.cn/

2020-09-24 13:38:48 377

原创 面试笔记

#c++ 面试知识点总结11-21虚函数表用于多态, 在每个类的内存最开始地方, 都有一个虚函数表, 存放着虚函数指针,[父类虚函数],[子类虚函数]若子类实现了父类虚函数, 则直接替代掉父类虚函数的数据。若没加vitrual, 则要看具体是什么类型进行调用该函数的, 父类指针调用父函数, 子类指针调用子函数#include <iostream>using namespace std;class A { public : virtual void

2020-07-22 08:40:43 478

原创 Linux监控文件读写

前言最近想写deepin编程比赛中的文件管控系统。如何去监测目标文件, 我思考了很久仍没有头绪,翻了翻开发大赛入围名单, 发现马艺诚同学使用了hook方法来监测进程操作目标文件。于是下午试了试, 确实可行(毕竟人家已经做出来了嘛)。下面讲解一下我下午尝试的read检测功能。正文废话不多说, 先贴代码。#include <stdio.h>#include <string...

2019-07-25 17:18:34 5254 6

原创 Muduo源码:Poller类 + EpollPoller类详解

前言最近开始看陈硕大佬的muduo, 在这里记下所学到的知识叭. 第一次写关于阅读源代码的博客, 可能更多的是通过注释的方式来解释作者的思路, 如果有任何的疑问或意见, 欢迎评论.正文Poller介绍eventloop类中有一个成员叫做poller_, 这个poller_负责着所有的IO事件, 在整个eventloop中起到了决定性的作用. std::unique_ptr<Po...

2019-06-02 19:16:01 565

原创 TCP 协议中的窗口管理

交互式通信在网络传输中, 有些数据包中的内容很多, 甚至和MSS的大小相同, 而有些数据包中的内容仅仅只有一字节. 所以数据包大小差异巨大. 若是数据过小的包太过于多的话, 就会造成网络利用率不高, 原因是要花费许多字节来构成TCP等协议头部.在ssh中, 当我们敲下一个字符, 客户端获取输入信号, 马上就会传输给ssh服务器. 这也是网络质量优良时, 我们使用ssh几乎无延迟的原因了. 一个...

2019-05-18 00:15:08 931

原创 TCP 协议中的超时重传以及SACK选项

TCP协议中的超时重传以及SACK选项超时重传RTO发送者发送数据包后, 启动重传定时器, 重传定时器到期时所花费的时间.RTT一个数据包发送并确认所花费的时间.关于计算RTO的算法经典算法首先计算一个平滑的RTT来设置为SRTT, 然后设置一个常量 alpha(称为平滑因子, 通常取值0.8)(alpha *SRTT) + (1 - alpha)*RTT ==> n...

2019-05-14 00:18:03 1292

原创 myshell实现Sudo三部曲 : crypt函数和getpass函数

上一章, 我们讲了如何获取加密密码, 现在我们要做的就是输入密码, 然后验证. 在这一部分, 我们要学习两个函数: crypt()和getpass()crypt()原型: char *crypt(const char *key, const char *salt);key是要加密的信息(最多八字节), salt是加密的算法类型 和 扰动数据. 我们的密码就是用这种方式来加密的,...

2018-08-02 17:24:58 381

原创 myshell实现Sudo三部曲 : 阴影口令

在上篇博客中,我们讲了设置用户位的作用, 有了seteuid这个函数, 我们就可以实现从普通用户权限转变为root权限. 但是我们的shell还需要密码验证模块. 要实现这个模块, 我们必须先得到用户密码.在linux中, 有一个通常称为阴影口令(shadow password)的文件, 这个文件中包含这用户名和加密口令以及其他信息. 注意: 是加密口令, 没有哪个系统会随便到将密码明文存储....

2018-08-01 17:07:47 379

原创 myshell实现Sudo三部曲 : Linux更改用户ID

前言 在Linux系统中,特权和访问控制都是基于用户ID和组ID的. 当程序想要访问当前不允许访问的资源时, 它就需要改变用户ID或组ID. 使得新ID具有合适的特权或访问权限. 在设计程序的时候, 我们应该使用最小特权模型, 最小特权模型表示, 我们程序应该只具有完成目的任务的最小特权.三个用户ID实际用户ID 实际用户ID就是在用户登录时候, login()程序设置的, ...

2018-07-31 11:21:29 776

原创 Valgrind调试代码时的一些错误提示解析

最近在写代码的时候, 发现了极其严重的内存泄漏. 卢神帮我找bug时, 使用了valgrind这个软件. Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具. 下面解析一些常见的错误 : 1. ==3185== Use of uninitialised value of size 8 ==3185== at 0x108602: main ...

2018-07-29 22:46:10 8718

原创 linux 文件操作杂记

文件操作杂记在linux 学习中,文件操作是一个十分重要的模块. 通常, 我们使用open()来打开文件. 其实在open()的背后, 有好多有(fu)趣(za)的事情发生. open()函数背后的系统调用相当复杂, 文章下面有链接, 可以详细理解. 我们主要来讲一下文件描述符和文件之间不可描述的关系.进程级别的文件描述符表系统级别的打开文件表硬件级别的文件系统硬链接...

2018-07-29 14:27:05 242

原创 dup函数被人忽略的特性

在学习进程通信的时候, 有个语句实在让人疑惑/* 使用dup来重定向stdin程序片段 */close(0);dup(fd); // 两行代码完成了对stdin的重定向我们都知道dup函数:int dup(int __fd), 他的返回值是当前可用文件描述符中最小数值. 在上述代码中, 我们关闭了0这个文件描述符, 系统认为此时文件描述符的最小数值为0, 所以他会将dup()参数...

2018-05-26 01:35:12 1038

原创 用C实现Linux shell

学习了进程一章之后, 可以尝试着写一个自己的shell程序目标单个命令: ls带-l到多个参数的命令: ls -l /temp带一个输出重定向的命令: ls -l &amp;gt; a带一个输入重定向的命令: wc -c &amp;lt; a带一个管道命令: ls -l | wc -c后台运行符可以添加到命令的最后面: ls &amp;amp;整个程序逻辑很简单: 输入-&amp;gt;分析...

2018-05-25 01:01:46 2628

原创 Linux僵尸进程和孤儿进程

程序运行到结尾的时候,有两种情况。子进程先退出,或者父进程先退出。 如果父进程先退出的话,那么子进程就会变成孤儿进程,最后被init接管,我们来看一个例子。#include &lt;stdio.h&gt;#include &lt;unistd.h&gt;#include &lt;stdlib.h&gt;int main(void) { pid_t pid;...

2018-03-15 18:22:24 222

原创 C语言静态变量初始化问题

    以前在学习C语言中,看到了这么一行代码: static int arr[100];  这是一行很正常的代码,但是我“细心”的发现作者在使用它的时候并没有初始化。书上的解释是,用static修饰的变量会自动初始化。   为什么会被初始化呢?首先我们看一段话: 可执行程序和内存映像的区别在于:可执行程序位于磁盘上,内存映像位于内存中,可执行程序没有堆栈,可执行程序虽然也有...

2018-02-10 12:45:45 11498 1

原创 va_list简单介绍及初步实现printf函数

VA_LIST 是在C语言中解决变参问题的一组宏,所在头文件:#include ,用于获取不确定个数的参数。C语言中的函数形参是从右向左压栈的,以此来保证栈顶是第一个参数C语言中形参的这种存储结构使得我们可以用指针来寻找参数用法:首先在函数中定义一个va_list型的变量,这个变量指向参数的指针。然后用va_start()初始化刚定义好的va_list变量 

2017-11-20 21:56:18 3356

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除