- 博客(111)
- 资源 (27)
- 收藏
- 关注
原创 软件版本号制定方法
1、软件版本号由主版本号,子版本号,修复版本号组成。2、版本号信息由版本号+当日编译的时间组成。3、编写一个获取版本号的函数。
2025-03-23 22:34:45
269
原创 网络丢包定位-TCP/UDP丢包记录(四)
设置合理的连接队列大小,当第三次握手时,当server接收到ACK 报之后, 会进入一个新的叫 accept 的队列,该队列的长度为 min(backlog, somaxconn),默认情况下,somaxconn 的值为 128,表示最多有 129 的 ESTAB 的连接等待 accept(),而 backlog 的值则应该是由 int listen(int sockfd, int backlog) 中的第二个参数指定,listen 里面的 backlog 可以有我们的应用程序去定义的;
2024-09-21 23:23:50
1796
1
原创 网络丢包定位记录(三)
无论,哪种情况导致table变满,满了以后就会丢包,出现外部无法连接服务器的情况。反向路由过滤机制是Linux通过反向路由查询,检查收到的数据包源IP是否可路由(Loose mode)、是否最佳路由(Strict mode),如果没有通过验证,则丢弃数据包,设计的目的是防范IP地址欺骗攻击。这种丢包一般会出现在多IP场景,子机底层配置多ip失败,导致对应ip收不到包而丢包;1 - RFC3704定义的严格模式:对每个收到的数据包,查询反向路由,如果数据包入口和反向路由出口不一致,则不通过。
2024-09-21 23:08:27
1046
原创 网络丢包定位记录(二)
很明显,overruns 的增大意味着数据包没到 Ring Buffer 就被网卡物理层给丢弃了,而 CPU 无法即使的处理中断是造成 Ring Buffer 满的原因之一,上面那台有问题的机器就是因为 interruprs 分布的不均匀(都压在 core0),没有做。每个CPU核都有一个backlog队列,与Ring Buffer同理,当接收包的速率大于内核协议栈处理的速率时,CPU的backlog队列不断增长,当达到设定的netdev_max_backlog值时,数据包将被丢弃。
2024-09-21 23:02:02
1954
原创 Wireshark学习使用记录
Wireshark 的主界面和一般的 Windows 软件很像,也有菜单栏,工具栏,地址栏等。还有一些它自己的像,显示过滤器、封包列表、封包详细信息、十六进制数据显示区等。如下图所示,选择完网卡之后其实就已经开始抓包了。
2024-09-21 22:12:12
779
原创 gdb调试使用记录
使用 GDB(GNU Debugger)进行问题排查是非常有效的。且可以通过core文件进行排查bug,core文件是程序异常崩溃的时候(段错误,非法指令等),系统自动生成的core文件。用户可以通过core文件配合gdb调试命令,调试程序异常崩溃的原因,修复相应的bug。core文件生成需要通过ulimit -c命令来查看和配置,当显示为0时,表示系统不会生成core文件,这个时候我们需要配置相应的环境,使系统可以在程序异常崩溃的时候,生成core文件。可通过如下命令设置core文件大小和输出位置。
2024-09-21 21:22:32
646
原创 动态库的makefile且链接静态库
需要考虑几个关键点:编译源文件、生成动态库、链接静态库、清理操作等。以下是一个简单的示例。编写一个Makefile来编译一个动态库,并链接第三方静态库时,可以按照以下步骤进行。假设有一个动态库需要编译,同时依赖一个名为。的静态库,以及需要编译成动态库的源文件。一个能够生成动态库并链接静态库的。
2024-07-21 14:11:23
1405
原创 IP地址冲突检测(Address Conflict Detect)记录
用于检测IP地址冲突,发送端IP填充为0,填充为0是为了避免对其他设备的ARP cache造成污染(ARP probe报文不会使局域网中的其他设备刷新ARP映射关系,若已经有设备正在使用目标IP地址了,其通信不会受影响)。ARP通告分组:与ARP探测相同,除了其发送方协议地址和目的协议地址字段被填充为候选IPv4地址外。2、ARP协议(地址解析协议)用于局域网中网络设备按IP地址查询对方的MAC地址,提供一种从网络地址(仅ipv4,ipv6用ND协议替代)到硬件地址(各种链路层协议使用的地址)的映射。
2024-06-10 15:12:08
2179
原创 Ethernet/IP 之IO 连接简要记录
设备1发送请求帧数据通过显示消息连接对象到设备2的显示消息连接对象,等到设备2处理完请求数据后,通过发送显示消息响应帧到显示消息连接对象发送给设备1。生产者对象产生IO数据通过生产者IO连接管理者对象将连接ID和数据组帧发送给消费者IO连接管理者对象然后将IO数据发送给消费者对象。在上来就是数据链路层、 IP层、TCP(显示消息)、UDP(IO消息)、封装层(包括了CIP消息等等数据)。EIP的IO连接提供了在一个生产者和多个消费者之间的特定的通信路径,以达到IO数据在IO连接下传输。
2023-12-20 17:30:04
931
原创 Ethernet/IP的开源协议栈
2、OpENer 是一个 EtherNet/IP 协议栈,其用于 I/O 适配卡设备,支持多路 I/O 和明确连接以及EtherNet/IP兼容产品的对象和服务,参考 ODVA 规范。1、开源协议栈在github上地址。
2023-06-18 21:16:50
1822
原创 交叉编译器--笔记
一般我们用PC电脑上的ubuntu的gcc编译器是针对x86架构,而再开发板上的编译是ARM架构的,故需要一个可以在PC上运行的ARM架构的GCC编译器(交叉编译器)。用这个GCC编译ARM架构代码,所编译出来的可执行文件是ARM芯片上运行的。常用的一款交叉编译器的安装步骤:1、下载linaro的交叉编译器。且如果开发板是I.MX6U(cortex-A7内核),则可下载的交叉编译器地址为:https://releases.linaro.org/components/toolchain/binarie
2022-05-04 17:37:35
3391
原创 C++面试知识笔记
7C++面试必备1、C++中如何调用C语言代码可以通过extern关键字进行设置,将.c文件按照编译c文件的方式编译/************************a.c***************************/#ifdef __cplusplusextern "C"{#endif//func1函数定义intfunc1(inta,intb){returna*a+b*b; }//func2函数定义intfunc2(int...
2021-10-07 16:12:53
5342
4
原创 数据库学习资料和视频
数据库博主在公众号后台设置了关键字回复,回复下面的【】里面的内容,可免费获得数据库视频和资料。如回复:数据库 【数据库】【1】oracle介绍和体系结构【2】启动oracle服务和连接oracle数据库【3】表的介绍和sqlplus相关操作【4】简单的select查询、sqlplus和sql的区别【5】select查询-比较运算符、where条件-逻辑表达式【6】where条件-in运算符和...
2021-09-06 22:18:55
7549
6
原创 C语言学习资料和视频
博主在公众号后台设置了关键字回复,回复下面的【】里面的内容,可免费获得C语言学习视频和资料。如回复:C语言基础 【C语言基础】内容:【1】C关键字、GCC环境变量配置、system函数【2】预处理、编译、汇编、链接、GCC编译4步骤【3】printf格式化输出【4】变量总结、变量和内存存储【5】标识符、整型、sizeof求数据类型大小【6】字符类型、实型、进制转换【7】编码和常见数据类型取值...
2021-09-05 13:43:02
7861
1
原创 C++学习资料和视频
博主在公众号后台设置了关键字回复,回复下面的【】里面的内容,可免费获得C++学习视频和资料。如回复:C++基础 【C++】【1】双冒号作用域运算符、namespace命名空间_【2】using声明以及using编译指令、C++对C语言的增强和扩展【3】const连接属性、const分配内存情况【4】用const代替define、引用基本语法【5】参数传递方式以及引用注意事项【6】指针引用、常量引...
2021-09-05 13:41:50
4357
15
原创 C++|项目开发—强制类型转换回顾
强制类型转换 C++四种强制类型转换符:static_cast, reinterpret_cast, const_cast, dynamic_cast。这四种强制类型转换的使用场合:static_cast1、可用于强制隐型转换,如int转换为double、non-const对象转const对象。2、可用于如void*指针转型为有类型的指针,父类指针转换为派生类指针,3、注:它不能将一个const转换为non-const。intnum=666888; do...
2021-08-15 21:54:41
1348
原创 C++|项目开发—智能指针回顾
智能指针 C++的智能指针:auto_ptr, shared_ptr, weak_ptr, unique_ptr,auto_ptr已经被c++11弃用,被更安全的shared_ptr所替代。在C++中使用new关键字开辟的内存必须被手动delete掉,不然就会导致内存的泄漏,为了解决这种因为遗忘或者异常处理而导致内存泄漏的问题,我们就要用智能指针。智能指针的思想是在构建对象时获取我们资源的指针,接着控制对资源的访问使之在对象的生命周期内一直保持有效,在对象析构时释放指针对应的内存块...
2021-08-15 21:45:42
1395
7
原创 makefile全知道
一、makefile概念大型的项目开发一般都有许多头文件、源文件等,其中,其按类型、功能、模块分别放在若干个目录中。这时,就需要用到makefile对这些代码进行编译,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。最后,整个项目通过make命令完成编译等功能。个人对于makefile的命名一般都设定为Makefile_X(X表示项目英文名),不过这个仅个人习惯。使用的时候如下设定:make-fMak...
2021-07-04 21:23:06
3640
19
原创 C、C++、java、Linux和python等资源分享
一、导语 博主打算将自己的一些编程资源分享给每个爱好学习的小伙伴。基本上涵盖当前的IT方面的知识。希望对小伙伴们的编程学习有所帮助。另外,如果喜欢博主的小伙伴,请点击关注博主。在这里和大家说明一点,本公众号资源链接由网友等收集自网络,仅供学习和分享使用,不做任何商用。如有侵权请告知,将第一时间删除资源链接。二、干货分享1、C语言资料后台回复关键字:C语言2、C++资料后台回复关键字:C++3、Linux资料后台回复关键字:Linux...
2021-06-28 23:39:13
2614
42
原创 面试必知的SQL数据库命令
点击蓝字 关注我们1、登录数据库普通用户登陆sqlplus用户名/密码sqlplusscot/ti以管理员身份登陆sqlplus / as sysdbasqlplus sys/sys as sysdba修改用户密码alteruserscotidentifiedby密码2、select语句注意事项selectcol1,col2…fromtable_namewherecondition groupbycol…havingcondtionor...
2021-06-18 13:33:22
3167
2
原创 面试必知的MySQL数据库知识
点击蓝字 关注我们1数据库 数据库是为实现一定的目的按某种规则组织起来的数据的集合,换句话说,数据库就是存储数据的库,其中,MySQL是一种关联数据库管理系统。由于其体积小、速度快、成本低受到了许多企业开发人员和普通用户的喜爱和支持。2数据库CURD2.1、创建数据库创建一个名为mydb1的数据库createdatabasemydb1;创建一个使用utf-8字符集的mydb2数据库createdatabasemydb2set...
2021-06-18 13:31:26
768
4
原创 实用且有效的排序算法
排序概念排序是计算机内经常进行的一种操作,其目的是将一组“无序”的数据元素调整为“有序”的数据元素。 排序是数据元素从无序到有序的过程 排序具有稳定性,是选择排序算法的因素之一 比较和交换是排序的基本操作 排序的时间性能是区分排序算法好坏的主要因素。 排序中的关键环节: 比较:任意两个数据元素通过比较操作确定先后次序 交换:数据元素之间需要交换才能得到预期结果 内排序:整个排序过程不需要访问外存便能完成 外排序:待排序的数据元素
2021-06-18 13:28:35
1103
1
原创 C基础笔记二
、指针踩坑点1、指针指针是一种数据类型,可用来保存内存地址,也占据一定内存。1.1、空指针和野指针NULL指针,它作为一个特殊的指针变量,表示不指向任何东西。注:不允许向NULL和非法地址拷贝内存。char*p=NULL;//给p指向的内存区域拷贝内容strcpy(p,"charles");//error在使用指针时,要避免野指针的出现,野指针指向一个已删除的对象或未申请访问受限内存区域的指针。野指针如何产生呢?n指针变量未初始化任何指针变量刚被...
2021-06-18 13:23:53
3102
6
原创 C基础笔记一
内存分区1、数据类型基本概念类型是对数据的抽象;类型相同的数据具有相同的表示形式、存储格式以及相关操作;数据类型可以理解为创建变量的模具:固定大小内存的别名;1.1、数据类型的别名typedef unsigned int u64;typedef struct _PERSON{ char name[32]; int age;}Person;voidexample(){u64val;//相当于unsignedintval;Personperso...
2021-06-15 01:27:57
1335
原创 C编程面试笔记
01编译步骤gcc、g++编译常用选项: 选项 含义 -o file 指定生成的输出文件名为file -E 只进行预处理 -S 只进行预处理和编译 -c 只进行预处理、编译和汇编 编译成可执行程序经过4步:1、预处理:宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除...
2021-06-06 11:18:05
1323
3
原创 UML需求设计与医院管理系统演示(二)
文章目录一、引言二、医院住、出院管理系统演示(续)1、住、出院系统用例图2、住、出院系统类图3、住、出院系统序列图4、住、出院系统对象图5、住、出院系统状态机图三、总结一、引言UML是软件设计提供统一且可视化的建模语言,其是一种用图形方式表现面向对象系统。它是从需求分析出发的软件设计的全过程。UML统一了各种方法对不同类型的系统、不同开发阶段以及不同概念的不同观点,从而消除了各种建模语言之间不必要的差异。它是一种通用的建模语言,因而被用户广泛地使用。目前UML共有12种图形,分别包括用例图、类图、对
2021-05-14 00:24:30
15681
6
原创 UML需求分析与医院管理系统演示(一)
文章目录一、引言二、UML的作用三、UML类图关系四、医院住、出院管理系统演示五、小结一、引言UML是软件设计提供统一且可视化的建模语言,其是一种用图形方式表现面向对象系统。它是从需求分析出发的软件设计的全过程。UML统一了各种方法对不同类型的系统、不同开发阶段以及不同概念的不同观点,从而消除了各种建模语言之间不必要的差异。它是一种通用的建模语言,因而被用户广泛地使用。目前UML共有12中图形,分别包括用例图、类图、对象图、状态图、活动图、顺序图、协作图、构件图、部署图9种;包图、组合结构图、交互图
2021-05-13 17:37:34
17911
8
原创 记录关于C/C++的自学路线
文章目录一、前言二、C/C++语言学习1.C/C++语言三、编程四大件1.数据结构与算法2.计算机网络3.操作系统4.设计模式与SQL数据库编程四、总结一、前言博主,一名小硕,记录下从化学到机械到计算机的踩坑记录。这篇博文目的其一是为了记录下自己的学习经历,其二是为了与大家分享和交流心得。以下就分享下个人的部分学习过程。二、C/C++语言学习1.C/C++语言C语言的学习,应该学习如下内容:编译四步骤(预处理、编译、汇编、链接)、变量、条件循环、结构体、字符串、函数、指针和内存管理等。其中最.
2021-05-08 00:45:56
8830
6
原创 Git Source Control的代码管理
文章目录一、常用的Git命令二、vim-git命令使用git三、VS code下使用git总结一、常用的Git命令git init:初始化一个Git仓库git status:查看当前Git状态git add:1、将未被Git跟踪的文件纳入Git跟踪;2、将处于修改状态的文件通过add纳入暂存区;3、将merge产生的冲突文件标记为冲突已解决。git commit:将暂存区内容向Git提交记录git restore:取消对某文件的修改git diff:查看文件修改详情git bra.
2021-05-07 02:40:40
5601
12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人