- 博客(80)
- 资源 (12)
- 收藏
- 关注
原创 C++11 shared_from_this学习
最近学习网络变成发现一些C++源码库中封装对象时会公有继承enable_shared_from_this;用一个案例进行说明,案例代码如下:#include <iostream>#include <memory>#include <stdio.h>using namespace std;class C : public enable_shared_from_this<C>{ public: shared_ptr&
2024-03-29 17:08:38
485
原创 Nginx学习之ngx_cycle_s中的四维指针
好记性不如烂笔头!刚开始看完一遍nginx的源码,由于源码工程量比较大,看完之后理解了,过一段时间再回过头来看又有点遗忘。所以决定做一下记录,以便后续翻阅,如有漏错,欢迎指正。ngx_cycle_s结构体可以说是Nginx中最为重要的结构体,它贯穿着整个进程代码。本节我就该结构中的 void ****conf_ctx 四级指针进行深入学习。Nginx的所有配置结构体全部放在conf_ctx这个四维指针中。下来我们先熟悉一下源码中,ngx_init_cy...
2021-11-09 10:21:46
2571
原创 Nginx学习之内存管理
Nginx内存管理模块中,ngx_align_ptr()函数是用来对指针的设置。具体设置是:将指针按照设定的字节对齐返回对齐设置后的指针。 其实也很简单。通过代码案例来理解比较清楚的理解,代码运行环境为Linux 64位操作系统。具体代码如下:#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <inttypes.h>#defi...
2021-11-04 10:48:21
3828
1
原创 Nginx事件模块学习之定时器
Nginx中的定时器是自己利用红黑树实现的,下来逐步分析一下nginx对定时器的实现。 首先,Nginx的工作进程是一个无限for循环,主要代码如下:static void ngx_worker_process_cycle(ngx_cycle_t *cycle, void *data){ …… // 工作进程初始化调用 ngx_worker_process_init(cycle, worker); …… // 无限循环 for ( ;; )...
2021-10-29 15:21:21
1947
原创 Nginx数据结构学习
在nginx源码中,用了大量的数据结构,现对在nginx源码中对数据结构常用的一种方法进行一些总结。 nginx的事件模块的数据结构中定义了两个变量:timer,queue;结构体如下:struct ngx_event_s { void *data; …… ngx_rbtree_node_t timer; ngx_queue_t queue; ……};其实timer变量是为了将ng...
2021-10-28 12:31:47
796
原创 Nginx事件模块学习之连接
本节主要的最近学习的nginx事件模块做一下学习总结。通过对nginx整体的学习,觉得nginx的事件模块最主要的两个结构 ngx_connection_t,ngx_event_t,ngx_connection_t结构主要存储TCP连接结构, 对应ngx_event_t结构则存储对应位置上连接的读写事件,nginx的事件模块可以配置,linux下默认用内核提供的epoll机制,本节暂不细讨论epoll机制原理。 对上述两个结构进行了简化,如下:struct ngx_c...
2021-10-27 12:14:18
674
原创 透明代理(NAT)
透明代理的实现目前实现的方式有NAT和TPROXY两种方式。此次我们借助iptables的nat表的规则对数据包进行重定向。具体配置及步骤如下。试验环境 将试验环境的配置如下:名称 IP地址 网关设置 客户端 192.168.200.184 192.168.200.111 代理服务器 192.168.200.111 192.168.200.1(内网真实网关IP) 服务器 172.16.9.66 ...
2021-10-15 16:05:31
5233
原创 Qt学习之QFile和QFileInfo
Qt项目中对文件操作是必不可少的。顾名思义:QFile是文件对象类,QFileInfo是文件信息对象类,结合例子我们看一下用法。 读的文件内容如下,以字符 “#” 或者 “;” 开始的为注释行。[Extern_Item1];名称Name=libccgext_cvi_64.so;处理数据的最大线程数,缺省为空:30DealThreads=32;数据库最大线程数,缺省为空:10DBThreads=;心跳间隔,缺省为空:120秒HeartInverva...
2021-10-08 11:16:56
1545
原创 Qt学习之定时器
定时器接口在Qt中一般有两种定时器的使用方法:1、Qt祖先类QObject提供一个虚函数供子类实现,如下:[virtual protected] void QObject::timerEvent(QTimerEvent *event),2、Qt提供一个QTimer定时器类,在类对象里面可以定义一个定时器对象去实现定时功能。实现案例...
2021-09-30 12:09:20
1336
原创 Qt学习之组合套件及鼠标事件
组合套件 本部分实现一个自定义的控件,在主界面里面添加自定义的控件,具体步骤如下。 1、首先在原本的项目中创建一个设计师界面类,如下图2、添加成功之后项目会增加三个文件,如下:3、将在 mydfine.ui 界面编辑类中创建自己的组合套件,创建一个简单的套件如下: 4、将自定义套件嵌在主界面里面,需添先加一个控件,然后提示该控件自定义控件类(注意:提升的类与本体类应该一致才会成功...
2021-09-29 18:29:41
512
原创 Qt学习之QTreeWidget、QTableWidget
1、新建一个空的QWidget类型的项目,按下图添加两个部件如下:2、在Widget类构造函数中添加如下代码: // treeWidget设置 ui->treeWidget->setHeaderLabels(QStringList()<<"陕西前10强公司简介"); QTreeWidgetItem *gsItem = new QTreeWidgetItem(QStringList()<<"陕西JD公司"); ui->..
2021-09-28 13:54:04
701
原创 Qt学习之部件创建及资源添加
1. 菜单栏 最多1个 1.1 创建菜单栏:QMenuBar *bar = MenuBar(); 1.2 设置到窗口中:setMenuBar(bar); 1.3 创建菜单:QMenu *fileMenu = bar->addMenu("文件") 1.4 菜单之间添加分隔符:fileMenu->addSeparator(); 1.5 创建菜单项:QAction *newAct = file->addAc...
2021-09-26 17:13:49
2702
原创 Qt学习之信号和槽
基本概念信号与槽(Signal & Slot)是 Qt 编程的基础,也是 Qt 的一大创新。因为有了信号与槽的编程机制,在 Qt 中处理界面各个组件的交互操作时变得更加直观和简单。信号(Signal)就是在特定情况下被发射的事件,例如PushButton 最常见的信号就是鼠标单击时发射的 clicked() 信号,一个 ComboBox 最常见的信号是选择的列表项变化时发射的 CurrentIndexChanged() 信号。槽(Slot)就...
2021-09-26 15:56:45
181
原创 Linux内核代码学习笔记
数据发送流程处理总结图如下:数据包接收流程处理总结入下图:理解浅谈 对应linux内核协议栈代码1.2.13版本整体上学习了,其实也没有想象中的难理解。谈一下在学习内核代码过程中最深的感受。内核代码是用C写的,但给人更多的还是C++的封装、多态特性。 就封装来说每一层协议中对该层中用到的多个协议都是类似于封装的,对上下各层都提供了对应接收和发送的接口。 其实C++多态本质就是函数指针,而内核实现数据包各层之间的数据解析、发送(尤...
2021-09-09 17:35:13
237
原创 C 指针操作分析
最近学习Linux内核代码,两句指针代码顿时让我感觉自己的指针功底还是欠缺。在此对代码重新做了梳理、分析及记录。 源代码结构也挺简单。如下:static struct rtable *rt_base = NULL;static void rt_del(unsigned long dst, char *devname){ struct rtable *r, **rp; rp = &rt_base; // ………… 省略部分代码 while((...
2021-07-09 15:01:21
157
原创 TCP套接字状态变化梳理
Linux对于数据传输,传输层提供了可靠的TCP协议。该协议的可靠性主要体现在其许多特点,如传输数据时需建立连接、窗口检测、超速重传等。本篇主要就TCP数据传输过程中的套接字状态变化进行分析。 TCP正常的数据连接建立(三次握手)、数据传输、及连接断开(四次挥手)中套接字的状态入下图所示。上图中清晰的描述了TCP协议在连接、数据传输、断开时,客户端、服务端的套接字状态的详细变化。需要注意的有三点如下: 1、客户端的套接字状态的改变是...
2021-07-02 15:41:47
789
原创 ettercap内网DNS劫持实验
ARP(Address Resolution Protocol,地址解析协议)是一个位于TCP/IP协议栈中的网络层,负责将某个IP地址解析成对应的MAC地址。ARP欺骗是一种中间人攻击,攻击者通过毒化受害者的ARP缓存,将网关的MAC替换成攻击者的MAC,于是攻击者的主机实际上就充当了受害主机的网关,之后攻击者就可以截获受害者发出和接到的数据包,从中获取账号密码、银行卡信息等。...
2021-05-11 16:36:48
1497
1
原创 生产环境shell脚本监控
最近有个需求:定时检测某个目录下的文件个数是否超过n个,若超过则清理日期较早的m-1个文件;由于第一个文件可能被有些进程占用,因此删除日期较早的前m个除去最早的一个。具体的shell脚本如下:############################# author : lijd# date : 2021-04-20#############################!/bin/bashmain(){ path=$(date +%Y)"/"$(date +%m)"/"$
2021-04-20 10:03:56
1315
ffmpeg-vlc工具.rar
2020-08-10
Windows搭建服务器压缩包
2018-12-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人