自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 iptables基本匹配

当数据包来到的时候先匹配第一条规则,如果符合规则则接受。如果不符合第一条规则,接着匹配第二条规则,如果是tcp包执行DROP动作,丢弃报文。如果不是tcp包执行默认规则ACCEPT。当数据包发出的时候先匹配第一条规则,如果TCP包符合规则则接受发出。如果不符合第一条规则,接着匹配第二条规则,不是tcp包执行DROP动作,丢弃报文。从ens38进来的icmp包全都丢弃,从其他网络接口就来的包不匹配第一条规则,执行默认规则ACCEPT。凡是由本机发出的TCP协议报文都允许出去,其他的协议不允许;

2023-06-04 21:51:20 896

原创 iptables的四表五链

对数据包做路由选择之后,将应用此链中的规则,然后将进行路由选择,确认数据包的目标地址是否是防火墙本机,结合内核传送给。当数据包到达防火墙时,如果对应的链内有规则存在,将按照顺序依次从。:出流量,其实就是防火墙本机向外的地址发送数据包,首先被。链做处理,确认通过之后,便可以交给服务器端来进行响应。来进行处理是否需要通过或直接丢弃,最后将交给。:如果是外边的数据包到达防火墙后,要先通过。:如果是外边的数据包到达防火墙后,要先通过。,其表内包括五个链:prerouting。做相关处理,随后进行路由选择,

2023-06-04 21:51:16 1636

原创 C++ 线程池

本文使用C++11实现实现线程池,涉及的技术如下:可变参数decltypebind支持可变参数列表支持获取任务返回值。

2023-03-07 20:52:46 856

原创 C++单例模式实现

要控制类的对象数目,

2023-03-06 20:20:18 672 2

原创 affinity -- CPU的亲缘性

亲缘性的作用就是把线程或者进程与CPU做黏合,亲缘性的线程或进程,只会在这一个CPU核上运行,只在这一个CPU核上被调度,且不会切换到其他的CPU核上运行。sched_setaffinity(self_id, sizeof(mask), &mask):将对应进程或线程绑定到置1的这个CPU核上。CPU_SET(self_id % num, &mask):将位图的某一位置1。cpu_set_t mask:创建CPU核位图。CPU_ZERO(&mask):将位图置空。

2023-02-07 21:41:17 493

原创 linux下原子操作指令

所谓原子操作是指不会被线程调度机制打断的操作,当某次操作一旦开始,就一直运行到结束,中间不会有任何中断。举个例子:A想要从自己的帐户中转1000块钱到B的帐户里。那个从A开始转帐,到转帐结束的这一个过程,称之为一个事务。如果在A的帐户已经减去了1000块钱的时候,忽然发生了意外,比如停电什么的,导致转帐事务意外终止了,而此时B的帐户里还没有增加1000块钱。那么,我们称这个操作失败了,要进行回滚。回滚就是回到事务开始之前的状态,也就是回到A的帐户还没减1000块的状态,B的帐户的原来的状态。

2023-02-07 21:27:35 618

原创 互斥锁、读写锁、自旋锁

变量的自增可以分解为三条汇编指令,第一步将寄存器的值mov到临时变量,第二步将临时变量的值加一,第三步将临时变量的值mov会寄存器。当多个线程对变量进行操作时,汇编指令执行顺序可能会嵌套执行,似的最终结果小于期望值保证在任一时刻,只能有一个线程访问该对象,同一线程多次加锁操作会造成死锁同样用来标记只能有一个线程访问该对象,在同一线程多次加锁操作会造成死锁;使用硬件提供的swap指令或test_and_set指令实现;

2023-02-07 21:23:20 459

原创 Linux系统运行时参数命令--网络IO性能监控

Linux系统运行时参数命令--网络IO性能监控

2022-12-28 21:13:38 4145 1

原创 Linux系统运行时参数命令--文件IO性能监控

Linux系统运行时参数命令--文件IO性能监控

2022-12-27 22:15:45 2010

原创 Linux系统运行时参数命令--内存性能监控

Linux系统运行时参数命令--内存性能监控

2022-12-27 22:12:20 225

原创 Linux系统运行时参数命令--CPU性能监控

Linux系统运行时参数命令--CPU性能监控

2022-12-27 22:10:15 4843

原创 Linux系统运行时参数命令--Linux基础命令和工具

Linux系统运行时参数命令--Linux基础命令和工具

2022-12-26 22:27:21 1093

原创 C++11 thread

C++11 thread

2022-11-17 21:50:09 1124

原创 linux 内核链表详解

linux 内核链表详解

2022-11-13 17:08:05 727

原创 shell小项目 -- 找出占用CPU内存过高的进程

shell小项目 -- 找出占用CPU内存过高的进程

2022-09-20 21:30:23 657

原创 内存池的实现与场景分析

内存池的实现与场景分析

2022-09-20 21:09:30 560

原创 C++lambda表达式

C++lambda表达式

2022-09-17 20:12:06 4485

原创 C++左值右值、左值引用&右值引用&&、移动语义move

C++左值右值、左值引用&右值引用&&、移动语义move 同样的,a可以通过 & 取地址,位于等号左边,所以a是左值。 A()是个临时值,没法通过 & 取地址,位于等号右边,所以A()是个右值。可见左右值的概念很清晰,有地址的变量就是左值,没有地址的字面值、临时值就是右值。引用本质是别名,可以通过引用修改变量的值,传参时传引用可以避免拷贝。左值引用:能指向左值,不能指向右值的就是左值引用:引用是变量的别名,由于右值没有地址,没法被修改,所以左值引用无法指向右值。但是,const左值

2022-09-17 20:01:53 983 1

原创 C++智能指针

weak_ptr是一种不控制对象生命周期的智能指针, 它指向一个 shared_ptr 管理的对象. 进行该对象的内存管理的是那个强引用的shared_ptr, weak_ptr只是提供了对管理对象的一个访问手段。

2022-09-13 22:32:55 1352

原创 tcpdump抓包分析

tcpdump抓包分析

2022-09-07 23:28:41 757

原创 Wireshark网络抓包分析

Wireshark网络抓包分析

2022-09-07 22:02:47 23042 1

原创 TCP三次握手和四次挥手详解

TCP三次握手和四次挥手详解

2022-08-15 22:27:51 1091 1

原创 TCP状态转换

TCP的11种状态

2022-08-15 21:58:09 2121 2

原创 socket -- epoll模型

I/O多路有select和epoll。

2022-08-03 23:53:28 361

原创 select并发服务器实现

select()函数监视多个文件描述符,等待所监视的一个或者多个文件描述符变为“准备好”的事件状态。”准备好“状态是指:文件描述符不再是阻塞状态,可以用于某类IO操作了,包括可读,可写,发生异常三种。......

2022-07-31 13:50:05 913

原创 线程池原理与实现

线程池由一个阻塞任务队列加上多个线程实现,线程池中的线程可以从阻塞任务队列中获取任务然后进行任务处理,当线程都处于繁忙状态时可以将任务加入阻塞队列中,等到其它的线程空闲后进行处理。.........

2022-07-28 10:04:51 1950

原创 线程同步和条件变量生产者消费者模型

线程同步和条件变量生产者消费者模型

2022-07-27 15:05:19 451

原创 运算符重载-字符串封装

目录myString.hmyString.cppmain.cppmyString.h#pragma once#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;class MyString { //左移运算符友元 friend ostream& operator<<(ostream& cout, MyString& str); //右移

2021-10-02 11:39:51 121

原创 多线程并发服务器实现--pthread

目录1. 多线程服务器分析2. 多线程实现代码:3. 优化多线程实现代码:1. 多线程服务器分析在使用线程模型开发服务器时需考虑以下问题:调整进程内最大文件描述符上限 线程如有共享数据,考虑线程同步 服务于客户端线程退出时,退出处理。(退出值,分离态) 系统负载,随着链接客户端增加,导致其它线程不能及时得到CPU1. Socket(); 创建 监听套接字 lfd2. Bind() 绑定地址结构 Strcut scokaddr_in addr;3. Listen();

2021-08-02 17:22:06 341

原创 多进程并发服务器实现--process

目录多进程并发服务器思路分析第一个版本的代码如下:完成代码:多进程并发服务器思路分析使用多进程并发服务器时要考虑以下几点:父进程最大文件描述个数(父进程中需要close关闭accept返回的新文件描述符) 系统内创建进程个数(与内存大小相关) 进程创建过多是否降低整体服务性能(进程调度)0.注册信号捕捉函数: SIGCHLD 1. Socket(); 创建 监听套接字 lfd2. Bind() 绑定地址结构 Strcut scokaddr_in addr;3...

2021-08-02 16:13:11 522

原创 Socket编程

1.建立连接(1)socket函数:建立一个套接口,类似于open,用来打开一个网络连接,如果成功则返回一个网络文件描述符(int),之后我们操作这个网络连接都通过这个网络文件描述符。(2)bind函数:将socket建立的套接口与一个本地地址捆绑(主机地址/端口号)。(3)listen函数:把一个未连接的套接字转换成一个被动套接字,指示内核应该接受指向该套接字的连接请求。(4)accept函数:开始接收从客户端发来的请求信息。(5)connect函数:发起对服务器的连接请求,三次握手在

2021-08-01 15:58:39 696

原创 makefile文件管理基本操作

1. makefile基础规则makefile: 管理项目。 命名:makefile Makefile --- make 命令 1 个规则: 目标:依赖条件 (一个tab缩进)命令 1. 目标的时间必须晚于依赖条件的时间,否则,更新目标 2. 依赖条件如果不存在,找寻新的规则去产生依赖条件。 ALL:指定 makefile 的终极目标。 2 个函数: src = $(w...

2021-07-19 15:30:30 3288 1

原创 gdb调试

使用gdb之前,要求对文件进行编译时增加-g参数,加了这个参数过后生成的编译文件会大一些,这是因为增加了gdb调试内容。gdb调试工具:大前提:程序是你自己写的。 ---逻辑错误基础指令: -g:使用该参数编译可以执行文件,得到调试表。 gdb ./a.out list: list 1 列出源码。根据源码指定 行号设置断点。 b/break: b 20 在20行位置设置断点。 run/r: 运行程序...

2021-07-19 15:06:46 505

原创 动态库和静态库制作和使用

目录1.1 静态库制作1.2 静态库使用及头文件对应2.1 动态库制作-生成与位置无关代码2.2 动态库制作3.3 动态库加载错误原因及解决方式静态库在文件中静态展开,所以有多少文件就展开多少次,非常吃内存,100M展开100次,就是1G,但是这样的好处就是静态加载的速度快。使用动态库会将动态库加载到内存,10个文件也只需要加载一次,然后这些文件用到库的时候临时去加载,速度慢一些,但是很省内存。动态库和静态库各有优劣,根据实际情况合理选用即可。...

2021-07-19 14:59:24 860

原创 vim编辑器

目录vim的三种工作模式vim基本操作-跳转和删字符vim基本操作-查找和替换vim基本操作-删除vim基本操作-复制粘贴vim基本操作-其他vim的三种工作模式vim基本操作-跳转和删字符命令模式:i 进入编辑模式,光标前插入字符a 进入编辑模式,光标后插入字符o 进入编辑模式,光标所在行的下一行插入I 进入编辑模式,光标所在行的行首插入A 进入编辑模式,光标所在行的行末插入字符O 进入编辑模式,光标所在行的上一行插入字符s 删除光

2021-07-16 20:57:05 136

原创 压缩命令gzip和bzip2

两者都是配合tar打包命令使用这两个压缩的缺陷都是只能对单个文件进行压缩,一来不能压目录,二来不能打包第一种压缩方式:gziptar zcvf 要生成的压缩包名 压缩材料,这里压缩包名一般以.tar.gz结尾所以tar zcvf 是两条指令的结合版本对zcvf进行解释:z:zip,压缩c:create,创建v:vision,显示压缩过程,可以去掉,直接用zcf,但这样不显示压缩过程f:file,文件file filename 查看文件来源.

2021-07-13 17:13:54 881

原创 rar压缩和zip压缩

rar压缩rar压缩,需要安装rarrar a -r newdir dir打包,把dir压缩成newdir.rar,如果压缩材料里没有目录,-r参数可以省去unrar x newdir.rar 解压rar文件sudo aptitude show softname 查看软件安装信息zip压缩zip压缩:zip -r dir.zip dir zip解压unzip dir.zipzip文件在windows和linux下通用..

2021-07-13 17:12:42 223

原创 软件包安装

sudo apt-get update 更新软件列表更换软件源:系统设置->软件和更新->下载自…换软件源过后要更新软件列表安装软件sudo apt-get install softname卸载软件sudo apt-get remove softname软件安装: 1. 联网 2. 更新软件资源列表到本地。 sudo apt-get update 3. 安装 sudo apt-get install 软件名...

2021-07-13 17:10:29 123

原创 find命令

find命令:找文件-type 按文件类型搜索 d/p/s/c/b/l/ f:文件-name 按文件名搜索 find ./ -name ‘* jpg’-maxdepth 指定搜索深度。应作为第一个参数出现。 find ./ -maxdepth 1 -type d-size 按文件大小搜索. 单位:c、k、M、G find /home/itcast -size +20M -size -50M大于20M,小于50M...

2021-07-13 17:06:02 118

原创 Linux创建修改用户和用户组

whoami 查看当前用户chmod 修改文件权限操作数字设定法:三个组的权限都用二进制编号,比如要设置当前用户对文件的读写和执行权限,则当前用户的操作权限为4(读)+ 2(写)+ 1(执行) = 7,用户组和其他用户的权限设置也是一样的对于file2.h的权限我们设置如下:-rwxrw-r—所有者 rwx = 7所有者所在组 rw = 6其他用户 r = 4操作码就是764sudo adduser newusername 添...

2021-07-13 17:03:59 385

MySQL Workbench软件

MySQL Workbench软件

2022-08-21

MySQL 中文完全参考手册5.1

MySQL 中文完全参考手册5.1

2022-08-21

空空如也

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

TA关注的人

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