自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(485)
  • 资源 (7)
  • 收藏
  • 关注

原创 C语言宏的妙用

宏定义是 C 语言预处理指令中最常用的一种,它是一种非常重要的预处理功能。通过宏定义,我们可以将一个标识符定义为一个常量或一个表达式,然后在程序中就可以直接使用这个宏定义来代替该常量或表达式。宏定义可以简化程序的编写,提高程序的可读性。宏定义的语法如下:#define 宏名 宏体其中,宏名是宏定义的名称,宏体是宏定义的具体内容。宏定义的名称必须遵循 C 语言标识符的命名规则,宏体的具体内容可以是常量、表达式、函数调用等。在程序中使用宏定义的方法非常简单,只需要直接使用宏定义的名称即可。

2024-02-12 08:23:29 393

原创 meson、ninja编译dpdk

meson编译dpdk debug版。

2024-01-31 23:15:43 323

原创 git删除分支命令

将<remote_name>替换为远程仓库的名称(通常是origin),<branch_name>替换为要删除的分支的名称。这将删除指定的远程分支,并且会自动删除对应的本地分支。注意,使用 -d 选项时,如果尝试删除当前所在的分支,Git 会拒绝删除并显示错误消息。这将从远程仓库获取最新的分支列表,并删除本地不再存在的远程分支。另外,如果想要删除已经合并到当前分支的分支,可以使用 -m 选项。这将删除指定的分支。请确保在执行这些命令之前,你已经切换到正确的分支,并且你解你要删除的分支的名称。

2023-10-08 15:39:41 2183

原创 GitLab多人开发步骤

提交的commit发现不符合规范,git commit --amend -m "新的提交信息"或 git reset --hard HEAD 重新提交一次。这事因为远程仓库没有对应的分支,复制并执行红框中的命令,可以在远程仓库新建对应的分支,并自动上传到远程仓库。refactor:重构代码,既没有新增功能,也没有修复 bug,比如提取某段代码为一个方法、重构某个功能等。chore:不修改 src 或者 test 的其余修改,例如构建过程或辅助工具的变动。ci:与 CI(持续集成服务)有关的改动。

2023-09-20 16:09:55 798

原创 openEuler加载本地yum源

3.更新yum源信息。

2023-08-08 14:23:06 751

原创 deepin 21 升级GLIBC2.29

Linux下对glibc库的操作要格外小心,稍有失误,轻则需要救援模式,重则开启系统重装之路。可恨deepin V21 是基于 Debian 10 的,Debian 10 里目前还是 2.28,Debian 11 里才是 2.31,所以得等 V23 版升级到 Debian 11+ 才可以。好在可以手动升级,虽然麻烦一些,但好歹一些高版本的软件能用了。

2023-07-27 09:29:44 949 2

原创 GmSSL编译静态库

GmSSL是由北京大学自主开发的国产商用密码开源库,实现了对国密算法、标准和安全通信协议的全面功能覆盖,支持包括移动端在内的主流操作系统和处理器,支持密码钥匙、密码卡等典型国产密码硬件,提供功能丰富的命令行工具及多种编译语言编程接口。

2023-07-25 15:58:23 737

原创 python udp收发包示例

【代码】python udp收发包示例。

2023-07-05 16:40:24 517

原创 使用git rebase合并多次commit

记录git rebase使用过程,以及冲突处理,再次提交的流程。

2023-05-31 17:05:01 1254

原创 Linux安装Docker环境

现在,已经在Linux上成功安装了Docker。注意,在某些Linux发行版上,需要使用sudo或将当前用户添加到docker用户组才能运行Docker命令。对于其他Ubuntu版本,请将focal替换为您的Ubuntu版本代号(例如,bionic)。对于其他Linux发行版,请参考Docker官方文档获取相应的软件源。对于其他Linux发行版,请使用相应的包管理器来更新系统。如果安装成功,将显示Docker引擎的版本信息。这将安装Docker引擎及其相关组件。

2023-05-21 18:32:52 609

原创 普罗米修斯统计信息上报结构设计

通过上述的设计,可以将应用程序的各种统计信息发送到普罗米修斯,并且可以利用普罗米修斯提供的丰富功能进行监控和警报。

2023-05-08 09:08:22 853

原创 ubuntu20.04安装微信

这里会有个问题,就是中文字符会变成黑色的小方块,解决方案是装fonts-wqy-microhei。使用下面的命令安装微信。

2023-04-11 18:14:26 386

原创 yum升级gcc版本

在Centos7环境上直接通过yum升级gcc版本。

2023-03-28 11:24:33 2078

原创 BPF bpf_spin_lock 使用排错指南

使用BPF时,多核之间难免会有竞争,为了应对这种情况,BPF引入了BPF自旋锁()的概念,它允许对map元素进行操作时锁定对map元素的访问。自旋锁仅可存储于array、hash和cgroup类型的map中。这里复制下书上的事例。这个访问控制,精度比较细。对每一个元素使用了自旋锁。另外,这样verifier就知道如何解释这个结构。类型格式通过向二进制对象添加调试信息,使内核和其他工具对BPF数据结构有了更丰富的理解。宏很重要,作用是为特定maps添加类型解释,就是使用它为的。如果不执行这个宏,就会报的错

2022-12-06 16:34:38 929

原创 Linux系统tcp连接设置

【代码】Linux系统tcp连接设置。

2022-11-27 09:33:02 2690

原创 解决xdp计算ip头checksum报错

例如,其他18字节计算结果为3FFFD时,按照协议生成的补码应该为 FFFF - ( 3+ FFFD = 10000,1+0000 = 0001) = FFFE,但是xdp函数给出的结果却是FFFF,没有再将溢出的1加进去,导致计算错误。使用 XDP进行UDP报文转发,在计算IP首部的CHECKSUM时出错,每65536包数据会错3个,会生成错误的CHECKSUM,如FFFF,按照协议来说CHECKSUM是不会计算出FFFF这个值的。函数通过while循环使得checksum溢出时可以再次进行计算。

2022-11-26 12:16:06 1118

原创 解决libbpf error: unknown register name ‘r0‘ in asm 报错

= 10, 对于clang版本小于10的,执行#define bpf_tail_call_static bpf_tail_call 语句。报这个问题是clang版本低导致的,才clang 10以上的版本就不会报这个错误了。头文件中增加关于clang版本的判断。

2022-11-08 16:55:05 1087

原创 Linux网卡丢包分类整理(2)——驱动篇

每个CPU核都有一个backlog队列,与Ring Buffer同理,当接收包的速率大于内核协议栈处理的速率时,CPU的backlog队列不断增长,当达到设定的netdev_max_backlog值时,数据包将被丢弃。表示的是 CPU2 和 CPU1,0 号 CPU 的掩码是 0x1 (0001),1 号 CPU 掩码是 0x2 (0010),2 号 CPU 掩码是 0x4 (0100),3 号 CPU 掩码是 0x8 (1000) 依此类推。当 NIC 内部缓冲区写满后,就会丢弃部分数据,引起丢包。

2022-09-22 18:15:00 4732 1

原创 Linux网卡丢包分类整理(1)——网卡篇

​网卡丢包怎么办?或者再具体点,使用ifconfig查看网卡,发现有dropped统计时可以从哪些方面进行调查?要想知道为什么丢包,首先要弄清楚接收数据包的流程。

2022-09-15 14:05:10 1655

原创 Linux网卡丢包分类整理(1)——网卡篇

网卡丢包怎么办?或者再具体点,使用ifconfig查看网卡,发现有dropped统计时可以从哪些方面进行调查?Linux系统从网卡收到数据包到最终上层应用处理之间涉及到多个模块,包括物理硬件、驱动、缓存队列、内核、再到应用程序。其中任何一块出问题都有可能表现为网卡显示丢包。如上图,接收数据包会遵循硬件(device)->内核(kernel)->用户态应用(user)这一处理流程。

2022-09-10 09:00:24 2493

原创 Linux系统奇事【free显示内存95%但是top却看不到谁用】

1 Recv-Q堆积会占用系统内存,这部分内存用top查不出来,需要用netstat查看。2 malloc是不可重入函数, 如果重入了可能会死锁。所以信号处理函数里面不能调用malloc。3 malloc的调用有可能是间接地或者说是隐式的。所以信号处理函数应该尽可能简单, 比如只设置一个flag, 然后让其它处理流程根据这个flag来做其它事情。...

2022-08-05 11:07:03 7007

原创 BTF: .tmp_vmlinux.btf: pahole version v1.9 is too old, need at least v1.13

要升级的内核版本是5.4.188,当前内核版本问4.18.0,直接将/boot/config-4.18.0-394.el8.x86_64拷贝到内核源码目录,执行makemenuconfig后直接保存,再执行make是就报了上面的错误。

2022-07-20 14:13:35 1088 1

原创 内核编译(5.14.188)支持USB Serial Converter

内核裁剪后发现识别不到/dev/ttyUSB0,标准Centos7的系统是可以识别的,初步判断是内核驱动选项不足导致,重新编译驱动。

2022-07-15 12:04:13 443

原创 CentOS 升级内核至5.15.52

CentOS 升级内核至5.15.52详细步骤,物理机升级成功。

2022-07-04 17:28:47 1198

原创 wireshark解析达梦数据库协议

达梦数据库不开源,所以wireshark没有对应的协议解析,可实际工作中又需要抓包验证程序处理流程是否正确,为了校验起来方便,自己手撸一个达梦的解析脚本。

2022-06-29 11:59:29 4298 7

原创 在 Linux 上禁用 TCP 时间戳响应。

数据包转发时遇到“TCP Dup ACK 14#1”的问题。 这是说第14帧的数据包丢了,“#1”表示该帧丢失的次数。会出现这个问题的原因是我伪造回复的数据包时,TCP协议扩展头中的timestamps没有相应更新,导致接收端认为是重传包,直接丢弃了。这里就有了一个比较有趣的问题了,tcp通过seq和ack来判断数据包的丢失和重传,现在又会在timestamps中做重传的判断,如果这里不改,伪造的数据包时不会被接收的。.........

2022-06-21 15:29:09 2513

原创 svn命令行忽略文件版本控制(递归,通配符)

在linux下使用svn命令行忽略某些文件的版本控制,遇到了不少文件,统一整理一下。第一步:创建".svnignore"文件,进入到版本控制的目录,执行如下命令。vim .svnignore添加需要忽略的文件或目录,这里可以使用通配符*.o.d*.o.cmd第二部:使用命令忽略".svnignore"文件中指定的文件。svn propset --recursive svn:ignore -F .svnignore .--recursive表示递归,也可以用-R。-F

2022-05-30 23:36:43 1662 1

原创 内核编译支持bonding模块

内核默认是不支持bonding模块的,需要单独编译:make menuconfigDevice Drivers --->Network device support ---> Bonding driver support使用命令:brctl addbr br0 时会报如下错误add bridge failed: Package not installed解决方法是在内核编译时勾选下面的选项:Networking suppo...

2022-04-08 23:50:09 827

原创 H3C S6520 配置arp static

1. 背景介绍:cline: 9.168.1.40server:9.168.1.41拓扑结构:关键点就是让3口进来的client发往server的报文从5口发到IPS设备上,从server到client也是同样的流程,13口进来的发往client的报文从15口转出。2. 交换机关键配置: 进入系统视图: <H3C>system-view System View: return to User View with Ctrl+Z. 分别创建vlan-

2022-03-20 19:01:52 1521

原创 ipv6ready(Section 4: RFC 8201 - Path MTU Discovery for IPv6)

测试仪发送MTU值小于最新IPv6 PMTU 56字节的Packet Too Big报文,依据RFC8200和8201中规定,此类packet too big需丢弃,测试中被测设备将其pmtu更新为1280,后续响应的报文分片。具体case号是IPv6 Specification 的9、10。修改net\ipv6\icmp.c中的icmpv6_err函数static void icmpv6_err(struct sk_buff *skb, struct inet6_skb_parm *o.

2022-03-08 14:44:09 717

原创 ipv6ready(Section 1: RFC 8200 - IPv6 Specification)

ipv6Ready测试遇到如下问题:测试仪将一个报文分为两个分片,第一个分片报文未包含原报文的所有报头,发送两个分片报文,设备应该丢弃两个分片报文,并回复ICMPv6 error报文,在测试过程中测试仪未收到该错误报文。具体case号是IPv6 Specification 的64-67。修改 net\ipv6\ip6_input.c 文件中的 ip6_input_finish 函数:static int ip6_input_finish(struct net *net, struct.

2022-03-07 21:52:45 809 1

原创 ipv6一致性(packet too big)测试

测试仪表使用老的RFC1981规范,要求在收到ICMPv6“Packet Too Big”消息时,回复的数据包中包含一个片段头,在新内核中,该片段头是被省略掉的。通过netfilter获取请求数据包,将添加了片段头的报文通过收包网卡发送到测试仪表,就可以通过该项测试。关于此问题的解决方法有两种:方法一:修改内核源码,使得回复的数据包符合要求,详细情况请看下面的描述。方法二:直接写个程序构造报文发给测试机,相关资源请见:两种方法我都试了,第一种没通过,不知是不是我内核没改对,第二种方法直接就

2022-02-28 12:57:04 2978

原创 dpdk发送RST报文(一)—— 构建RST包

suricata中阻断报文函数“RejectSendLibnet11IPv4TCP”使用libnet11构造阻断报文。今天试一下自己手动构建RST报文,然后通过dpdk发送出去。

2022-02-25 10:50:14 2996 6

原创 全脑速度心得笔记(4)

1分40秒读完1878字,理解记忆率在70%,能够回忆起故事标题,出现的任务和整个故事线。了解了专业类书籍的速度技巧,其中最重要的是快慢结合,对于重点内容放慢速度精读,其它内容则使用速度方式。要做到3次以内读完一本书,可以对同一本书进行反复阅读。精读内容:1. 章节标题,将标题转化成问题,带入文章阅读。2. 章节主旨,大部分章节的主旨会在头尾出现,读到这些位置可以适当放缓节奏。3. 文章中以特殊格式标记的文字,专业类书籍在排版时会对重点内容进行特殊处理,这些内容也应该精读。速度:做到

2022-01-06 22:46:53 208

原创 全脑速度心得笔记(3)

1分44秒读完1752个字,现在基本上能够维持每分钟1千字的阅读速度,内容为故事或者休闲读物。视幅宽度有待提高,尽量扩展视幅,一次眼停要容纳更多内容。记忆方面了解到两种方法:提纲法和提莲子法。前者是又粗到细逐渐回忆,先回忆文章的整体结构和主要经过,再通过关联回忆丰富细枝末节。后者是通过对一个明确的记忆点入手,将后续相关联的内容逐步牵引出来,就像我们提着链子的一头就能将链子整个拽起来一样。今天阅读的内容为《为尊严站岗》,讲述了在一个刚刚成立的抗战纪念馆门前,一名保安因为禁止宠物入馆,和一对有势力的母子

2022-01-04 20:09:58 189

原创 全脑速度心得笔记(2)

第二天练习,1分28秒读完1571字,对于故事内容有基本的把握。最开始的速读练习一定要把速度提起来。可以将记忆的内容暂时放到一边。

2022-01-04 19:44:03 126

原创 mysql 中文显示乱码解决方案

就说我遇到的这种情况吧,数据库中的字段如果输入中文就会自动变为“?”,看了许多网上的结局方案,个人认为不需要更改my.ini(其实是我在mysql根目录中根本没有找到这个ini文件),下面就介绍一下我的方法吧:第一步:使用 show variables like '%char%'查看系统的字符集和排序方式的设定调用 set names utf8;令character

2021-12-31 13:34:16 875 2

原创 2021年个人年终工作总结

概述时光如白驹过隙,转瞬间又是一年。差不多也是去年的这个时候,我再次回到公司,再次回到熟悉的环境,回到职业生涯开始的地方。回顾这一年,完成了ipv6Ready测评,ipv6一致性测评,光闸部分功能的开发以及TopOS7.9操作系统的开发。下面对这一年的具体工作和学习内容进行详细的阐述。项目/产品参与完成情况汇总A) ipv6Ready测评Ipv6Ready的测评更多的是对于ipv6协议的了解和对操作系统的配置,这期间主要解决的问题有两个:ipv6分片包不会包含原始报文头信息和对于“Pac

2021-12-30 17:22:45 971

原创 全脑速度心得笔记(1)

时隔二十年,我又捡起了全脑速度的练习,从相信、憧憬到怀疑、放弃,现在有回到了起点的附近。之前的书籍已成为压在箱底尘封的回忆,目前也没找到很好的联系工具,今天试着使用块阅读法来进行练习,眼镜酸涩、流泪,似曾相识的兴奋和期盼。找到三本关于速度的书籍《全脑超能阅读力》《快速阅读——速读是人生最好的投资》《快速阅读——如何训练大脑百倍速读》,这次的训练要更多的理解理论,明白原理,之后再结合方法,以便能后持续连理,进而达到之前一直求而不得的速读境界。...

2021-12-28 23:59:13 179 2

原创 系统启动是相关报错修改

Failed to start Collect Read-Ahead Data解决方案:systemctl disable systemd-readahead-collect.serviceFailed to start Crash recovery kernel arming解决方案:systemctl disable kdump.serviceFailed to start Software RAID monitoring and management解决方案:编

2021-12-27 21:34:21 811

jdk-1.8.0_211-linux-x64.tar.gz

国外网站下载太慢,留一份自己用

2021-04-16

vsftpInstall.zip

通过vsftp快速在centos7系统上搭建ftp服务,省去配置过程,一步到位。

2021-02-02

linux-4.19.155.tar.gz

linux 4.19.155版本内核源码

2021-01-18

librdkafka-master

针对c语言封装的kafka接口

2019-10-22

mysql-connector-odbc-noinstall-5.1.13-winx64.zip

64位myodbc。使用方法见本人博客:http://blog.csdn.net/superbfly/article/details/51273808

2016-04-28

mysql-connector-odbc-noinstall-5.1.13-winx64

64位安装包,使用步骤见本人博客。

2016-04-28

空空如也

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

TA关注的人

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