- 博客(16)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Linux内核收发网络数据包的过程
来源: 码农猿星球Linux 服务器收到网络数据包,需要经过哪些处理,一步步将数据传给应用进程的呢?应用进程发送数据包时,Linux 又是如何操作将数据包发送出去的呢?今天我们就来聊聊这个话题。在准备好接收网络数据包之前,Linux需要做很多准备工作,例如:网络子系统的初始化、协议栈的注册、网卡驱动的初始化、启动网卡等等,只有这些都准备好了之后,才能真正开始接收网络包。
2023-06-02 10:30:11
51
原创 C语言实现链表反转
该代码中,我们首先定义了一个链表节点结构体 Node,包含一个整型数据 data 和一个指向下一个节点的指针 next。该函数使用三个指针 prev、curr 和 next,分别指向当前节点的前一个节点、当前节点和当前节点的下一个节点。最后,我们返回反转后的链表的头节点。然后,我们再次遍历链表并将栈中的元素弹出并赋值给链表中的每个节点。在 main 函数中,我们创建了一个包含三个节点的链表,并打印了原始链表。然后,我们调用 reverseList 函数反转链表,并打印反转后的链表。// 打印反转后的链表。
2023-06-26 16:27:29
110
1
原创 查找单链表的某个节点,并返回该节点的前继指针
在这个例子中,我们定义了一个Node结构体,包含一个整数data和一个指向下一个节点的指针next。我们还定义了一个find_previous函数,它接受一个指向链表头节点的指针head和一个指向目标节点的指针target,并返回目标节点的前继节点的指针。在循环中,我们使用previous指针来记录当前节点的前继节点,然后将current指针移动到下一个节点。我们调用find_previous函数来查找目标节点的前继节点,并将返回的指针赋值给previous变量。
2023-06-25 19:01:48
123
原创 了解eBPF
随着内核的发展,eBPF 逐步从最初的数据包过滤扩展到了网络、内核、安全、跟踪等,而且它的功能特性还在快速发展中,早期的 BPF 被称为经典 BPF,简称cBPF,正是这种功能扩展,使得现在的BPF被称为扩展BPF,简称eBPF。eBPF 技术虽然强大,但是为了保证内核的处理安全和及时响应,内核中的 eBPF 技术也给予了诸多限制,当然随着技术的发展和演进,限制也在逐步放宽或者提供了对应的解决方案。eBPF 程序不允许包含无法到达的指令,防止加载无效代码,延迟程序的终止。
2023-06-08 09:56:55
93
原创 面试问题汇总
3、linux系统最多打开多少个文件(65535)4、poll、epoll、select区别。7、shell脚本中$符号含义。5、linux内核收发包流程。1、static关键字作用。2、宏定义中#、## 含义。8、互斥锁和自旋锁区别。
2023-06-02 20:12:21
42
原创 1到n排序,时间复杂度O(n),空间复杂度O(1)
#include <iostream>using namespace std;void sort(char *a, int len){ int temp; for(int i = 0; i != len; ) { temp = a[a[i] - 1]; a[a[i] - 1] = a[i]; a[i] = temp; if(a[i] == i + 1) i++...
2021-03-19 10:00:39
296
原创 Centos 7 进程守护与监控-systemctrl服务
想给自己开发的程序做进程守护,比如要实现开机时启动某进程或某进程crash后要自动拉起来的功能。通过centos中init进程systemd使用demo启用qkdtest服务,当代理进程crash之后,守护进程会拉起进程。1.将start和shutdown脚本放在和qkd可执行文件同一目录,cd /home/qkd/[root@localhost qkd]# lltotal 204-rwxr-xr-x. 1 root root 23896 Feb 27 14:28 xxx.exe-rw..
2021-03-01 10:33:15
383
原创 linux 下C++使用动态库方式编译运行
静态库.a在程序编译时会被连接到目标代码中,程序运行时不再需要静态库;而动态库.so在程序编译时,不会放到连接的目标代码中,而是在程序运行时被载入,因此在程序运行时还需要动态库的存在。通过动态库方式运行程序时,需要把动态库放在库目录下:1.将动态库放到目录 /usr/loca/libscp -r libqkssdk.so /usr/local/lib/2.向库配置文件中,写入库文件所在目录# vi /etc/ld.so.conf.d/usr-libs.conf/usr/local/li.
2021-02-23 10:25:15
365
原创 git dev开发分支对齐master主分支
开发自己的分支都是从最新的master上拉取,但中间master会有改动,此时需要将最新的master合到自己的分支中。git pull最新代码(dev分支)1. 查看当前的分支,星号标识为当前分支; git branch2.查看该工程所有的分支,星号标识为当前分支; git branch -a3.copy一个master分支(步骤1中,本地没有master分支,需要copy一个); git branch -c master4.切到master分支;...
2021-01-19 19:06:33
1610
原创 Linux C 实现读取配置文件
项目使用了conf配置文件,本文抽取出读取配置文件的代码,由于配置选项和业务密切相关,可参考实际项目使用中做修改。/**读配置文件x.conf注:配置文件必须为unix格式,即\n结尾*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <stdint.h>// 结构体struct my_config..
2021-01-11 14:59:43
609
原创 Linux下同一主机配置多git用户方法
是这样,当我们在linux环境下使用git时,会遇到多人共用一台机器的情况(比如共用的编译机、服务器),这种情况下一个全局的配置是不行的,需要每个用户配置自己的信息。安装好git之后,不需要全局配置,如果有,需要清除掉:git config --global --listgit config --global --unset user.namegit config --global --unset user.email接下来,正常在~/.ssh下生成新的公钥。但要注意,应该其他人可能
2020-12-14 16:21:01
1833
原创 U盘重装Ubuntu系统时启动不了,出现黑屏无信号问题
1 问题描述:Ubuntu使用U盘安装时,U盘启动出现安装界面,点install ubuntu,然后显示器显示没有信息,进行休眠状态。2 原因分析:由于ubuntu对于显卡支持有问题,需要手动添加显卡选项:nomodeset,使其支持Nvidia系列显卡。3 解决方法:1)安装时黑屏:开机后按发f12建,选择安装u盘,光标移动到"install ubuntu",按"e"进入编辑模式,进入命...
2019-01-03 09:55:24
9627
转载 glog库 安装与使用
一、安装配置1、简介 google 出的一个C++轻量级日志库,支持以下功能:◆ 参数设置,以命令行参数的方式设置标志参数来控制日志记录行为;◆ 严重性分级,根据日志严重性分级记录日志;◆ 可有条件地记录日志信息;◆ 条件中止程序。丰富的条件判定宏,可预设程序终止条件;◆ 异常信号处理。程序异常情况,可自定义异常处理过程;◆ 支持debug功能;◆ 自
2017-10-30 10:55:57
2900
原创 设置GPS模块ublox 的波特率和数据输出格式
序:以下介绍的是通过u-blox公司的UBX协议来配合u-center软件来对u-blox公司的GPS模块进行模块的设置参数更改,UBX格式是u-blox公司独家开发且应用于所有自产的模块中的可支持的通信协议,UBX格式具体说明资料可以在本站内进行下载.前言:设置前准备:安装u-center8.1x软件:一块GPS模块一个usb转串口线以及一台电脑以下都是经过亲手确认过。1. 利用u-ce
2017-10-27 16:42:15
18587
2
原创 欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2017-10-26 19:17:54
155
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人