- 博客(36)
- 收藏
- 关注
原创 bridge
最低优先级的bridge被选为root bridge, root bridge 在spanning tree中是central bridge.在bridge中的接口拥有不同的速率,这个值被用来决策哪一个链路被使用,faster interfaces 需要拥更低的优先级。bridge的功能现在在kernel 2.4以上的都支持,用户层可以通过bridge-utils 是控制。添加到bridge种的设备都可以认为是一个大的网络,一个设备不能同时添加到多个bridge种。
2024-01-28 13:21:44
689
原创 gdb+coredump
有一类程序我们是我们办法去设置断点调试的,特别是应用层网络收发报文出现segmentation fault这种情况,这个时候使用gdb+coredump是一个比较好的定位该问题的方法。1、 编译可执行程序添加符号表在编译可执行程序的时候需要添加-g选项。如果可执行程序链接动态库或者静态库,动态库和静态库的编译也需要添加-g选项。可以通过file a.out 或者readelf -S a.out | grep debug查看可执行程序时候带有调试信息。注: 带有stripped则是不带有可调试
2022-05-14 12:14:34
647
原创 Wi-Fi6
802.11ax也就是下一代WiFi技术,现在已经改名为Wi-Fi6, 也就是第6代Wi-Fi技术。Wi-Fi6带来了更高的速率和用户体验。Wi-Fi6使用MU-MIMO技术,同一时间可以同时与多个(8)设备交互数据。使用OFDMA技术,两者的作用分别提高效率和网络容量。Wi-Fi 6还可以提高电池续航Wi-Fi 6中的另一项新技术允许设备规划与路由器的通信,减少了保持天线通电以传输和搜索信号所需的时间,这就意味着减少电池消耗并改善电池续航表现。Target Wake Time(目标唤醒时间)
2022-05-13 23:35:29
258
原创 strtok和strtok_r函数
函数定义//extract tokens from strings#include <string.h>char *strtok(char *str, const char *delim);char *strtok_r(char *str, const char *delim, char **saveptr);使用strtok解析提取字符串;如aaa,bbb,ccc,ddd, delim=",", 一次分割出字符串"aaa", “bbb”, “ccc”, “ddd”,使用的时候第
2022-03-22 22:59:56
232
原创 fgets函数
今天再使用fgets读文件配置的时候,使用fgetes读取br=br-lan使用fgets读取一行并进行分割得到ifname=br-lan, 但是由于fgets在读取行的时候也会把换行符\n读取,导致读取到的ifname=br-lan\n\0.这个时候,如果使用拼接文件路径,如/sys/class/net/%s/beidge的时候,就会出现错误,使用stat判断文件是否存在就会出错。原因就是带有换行符,导致出现的问题。正确的解决方法是把换行符换成\0之后再进行字符串的处理。//br=br-lan
2022-03-22 22:33:17
264
原创 内核双向循环链表
1.内核链表介绍在Linux内核中提供了一种通用的双向循环链表来组织数据,这种链表方便使用,且只有一个头文件,方便移植。文件路径:include\linux\list.h。头结点表示:/** * The linkage struct for list nodes. This struct must be part of your * to-be-linked struct. struct list_head is required for both the head of the * list
2022-03-05 16:44:25
385
原创 动态库与静态库
在打包函数工具的时候,我们一般有两种方式,生成静态库或者动态库的方式。静态库和动态库都是以lib开头命名。静态库以.a结尾,动态库以.so结尾。如libhello.so, hello是库的名称。生成静态库(libhello.a):gcc -c hello.car cr libhello.a hello.ogcc -o main main.c -L. -lhello生成动态库(libhello.so)gcc -c hello.cgcc -shared -fPIC -o libhel
2022-03-01 11:20:22
158
原创 unix socket抽象路径名
在使用AF_UNIX编写本地套接字进行进程间通信的时候,我们需要对struct sockaddr_un中的sun_path域填充一个文件名,在bind的时候会自动创建一个S_IFSOCK类型的文件。如果文件存在就会报错。所以每次创建之前需要先把存在同名的文件删除。但是删除一个文件,可能是别的程序需要的,就会导致很多其他的问题。Linux引入了一种称为抽象路径名的机制,这种方式不会真的创建一个文件,只会在虚拟文件系统中创建一个标识,可以很好的避免名字冲突,当套接字关闭的时候,会自动删除一个路径对应的标识,不
2022-01-16 21:20:10
1425
原创 命名UNIX域套接字
在网络上进行通信的时候,我们一般会使用socket进行通信,实际上socket也可以用于同一台主机上的两个进程间的通信,称为本地套接字。本地套接字具有如下的优势:UNIX域套接字仅仅复制数据,不执行协议处理,不需要添加或删除网络报头,无需计算校验和。UNIX域数据报服务是可靠的,不会丢失也不会传递出错。UNIX套接字的地址有struct sockaddr_un结构体表示。#include <sys/un.h>struct sockaddr_un { sa_family_t su
2022-01-14 22:18:03
513
原创 Gitee推送本地仓库问题
问题描述使用Gitee推送代码的时候出现下面问题:git push -u origin master[session-abcd1234] Auth error: Access deined: authorize failure.fatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.这是因为Gitee针对
2021-12-18 00:02:49
1942
原创 GNU C扩展之语句表达式
语句表达式GNU C对C语言标准作了扩展,允许在一个表达式里内嵌语句,允许在表达式内部使用局部变量、for循环和goto跳转语句。({表达式1; 表达式2; 表达式3})表达式最外面使用(),里面使用{}括起来代码块。#include <stdio.h>int main(){ int sum = 0; sum = ({ int s = 0; for(
2021-12-11 23:18:23
268
原创 编译busybos 1.30.0 stime链接错误
编译busybos 1.30.0 stime链接错误补丁https://git.busybox.net/busybox/commit/?id=d3539be8f27b8cbfdfee460fe08299158f08bcd9
2021-08-19 23:52:54
279
原创 libevent简介
libevent介绍libevent是一个事件通知的库。The libevent API provides a mechanism to execute a callback function when a specific event occurs on a file descriptor or after a timeout has been reached. Furthermore, libevent also support callbacks due to signals or regula
2021-06-22 21:59:25
594
原创 C++类型初始化总结
C++中各种初始化方式:默认初始化、值初始化、直接初始化、拷贝初始化、列表初始化。1、默认初始化默认初始化时定义变量的时候没有指定初值进行的初始化操作。对于内置类型//全局变量默认初始化为特定的值int a; // 默认初始化为0double d; //默认初始化为0.0int *ptr; //默认初始化为NULL//局部变量则是未定义的{ int a; //未定义的}类类型的变量不论定义在什么地方都会被初始化,调用默认的构造函数。class
2021-04-09 19:49:41
1143
原创 js代码在html中是什么时候执行
JS代码在html中的执行顺序最近看前端的代码,一直很疑惑js代码在html中的执行顺序,也看了不少网上写的东西,加上自己的理解,顺便记录一下,方便以后查看。js代码<html><head> <script> //这里可以放语句或者函数 </script></head><body> <script> //这里可以放语句或者函数 </script></body><
2020-06-02 23:33:51
1718
原创 strtok()函数
#include<string.h>char * strtok ( char * str, const char * delimiters );strtok在切割字符串的时候,实际上就是将分割符的字符delimiter替换为’\0’并且返回首地址。str:在第一次被调用的时间str是传入需要被切割字符串的首地址;在后面调用的时间传入NULL。delimiters:表示切割字...
2019-08-20 16:25:52
164
原创 soket编程的函数总结
最近在学习socket编程是看到一篇总结比较好的博客:https://www.cnblogs.com/straight/articles/7660889.html
2019-08-19 20:27:28
112
原创 listen()的第二个参数
函数原型:int listen(int sockfd, int backlog);作用数用来监听服务器创建的socket的。第二个参数backlog代表的是相应的socket可以排队的最大连接数。由于客户端client 发起connect()连接时。需要建立TCP三次握手连接需要时间,所有会有一个队列来存储客户端对服务器发起的connect连接。当客户端完成连接后。连接被放到端口的s...
2019-08-19 20:23:09
2964
原创 20个常用Linux命令
20条Linux命令ls : list的缩写 list directory contents Usage: ls [OPTION]... [FILE]...Options:-a 列出指定目录下的所有文件包括. 和…, 以及以.开头的隐藏文件。-A 同上,但是不包括. 和 …。–full-time 列出详细的文件修改时间类似于:...
2019-08-12 20:16:09
509
原创 RecyclerView(一)
初识RecyclerViewRecyclerView是android5.0之后推出的用于展示大量数据的空间,可以用来代替传统的ListView空间,功能强大且灵活。首先我们需要在build.gradle(app)中添加依赖包:dependencies { implementation 'com.android.support:recyclerview-v7:24.2.0'}...
2019-08-07 11:51:50
164
原创 C语言的文件操作
在进行数据处理的时候,我们难免会遇到需要对文件中的数据进行处理,这时候就需要对文件进行操作。fopen()FILE *fopen(const char *filename, const char *mode);fiiename参数是需要打开的文件的名称。mode是指以什么的方式打开文件。如只读®, 只写(w)等。返回值: 是一个文件指针, 如果文件不能打开或者错误则会返回NULL。所以...
2019-08-06 20:33:17
99
原创 Andriod控件之RadioButton
RadioButtonRadioButton是android控件中的一种单选按钮,默认是圆形的,不过你也可以自定义。<RadioButton android:id="@+id/radio_1" android:layout_width="wrap_content" android:layout_height="wrap_content" ...
2019-08-03 18:23:09
218
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人