自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 将博客搬至CSDN

将博客搬至CSDN 文章地址:https://blog.csdn.net/as3522 将个人博客搬至csdn,主要是一些个人的学习笔记吧,大多数内容都是转载的,算是个人学习的一些记录,没多少原创的文章。 那么有关文章,既然是抄袭过来的,一般底部都会写明出处 ...

2019-10-19 11:13:05 9 0

原创 writev遇到非阻塞IO

这几天在处理一些协议上面的东西,还算简单吧,封装一些字段然后发出去。 问题就出现在了发出去这个地方,发的地方使用的是writev,writev可以发送多个分散的,不连续的内存里面的东西。比方说,我封装了http的头部,放到了一个httpHeadBuf里面,然后又组装了body,放到了sendBu...

2019-08-03 19:32:26 55 0

原创 PF_PACKET

PF_PACKET 瞅代码的时候,看到一个很奇特的socket,sock=socket(PF_PACKET, SOCK_RAW, htons(0x8888)) 那什么是PF_PACKET?我在网上翻了一下,找到了一片不错的文章,详细 sock_raw(注意一定要在root下使用)原始套接字编...

2019-07-28 19:09:36 55 0

原创 SO_BINDTODEVICE

man socket(7)里对该选项的描述: SO_BINDTODEVICE Bind this socket to a particular device like “eth0”, as speci‐ fied in the passed interface ...

2019-07-28 19:07:45 60 0

原创 Socket-filter

看代码的时候突然遇到了一个很奇怪的结构体 struct sock_filter 当时就是一脸茫然,这是什么? 通过百度大概了解了一下皮毛,这个是过滤器,可以配置规则来过滤一些报文,只提取自己感兴趣的报文。 比较详细的介绍可以参考Linux内核工程导论——网络:Filter(LSF、BPF、...

2019-07-28 19:06:46 48 0

原创 sendto和recvfrom

sendto头文件 #include < sys/types.h > #include < sys/socket.h >定义函数int sendto ( int s , const void msg, int len, unsigned int flags, consts...

2019-07-28 19:05:34 21 0

原创 memalign-calloc-malloc-realloc-free-alloca

memalign 在GNU系统中,malloc或realloc返回的内存块地址都是8的倍数(如果是64位系统,则为16的倍数)。如果你需要更大的粒度,请使用memalign或valloc。这些函数在头文件“stdlib.h”中声明。 ​ 在GNU库中,可以使用函数free释放memalign...

2019-07-28 19:04:17 9 0

原创 网络编程设置TTL

最近遇到一个问题,领导让我查一下关于多播的TTL配置的问题,我也是看了diam之后才知道的原来TTL可以通过编程来实现,说起来网络编程能力欠佳啊 TTL TTL是 Time To Live的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。TTL是IPv4包头的一个8 bit字段....

2019-07-28 19:00:55 87 0

原创 开源协议GPL

最近添加了一个功能,需要用到开源库,然后是GPLv2。由于GPL的传染性,所以后面就直接拉了一个进程来添加这个新功能。所以相关的协议还是要去了解的。 GPL 协议 即通用性公开许可证(General Public License,简称GPL)。 GPL同其它的自由软件许可证一样,许可社会公众...

2019-07-28 18:59:52 75 0

转载 linux本地套接字

Linux网络编程——Unix本地套接字 概述   今天给大家讲解网络编程中的一个内容——Unix 本地套接字。   发现很多人不知道或者不太了解 Unix 本地套接字这个概念,这也难怪,socket API 原本就是为多台主机之间网络通信设计的,并且这种网络 socket 同样支持单台主机上...

2019-07-01 11:14:51 14 0

原创 linux-unlink

Linux下unlink函数的使用一、头文件 #include<unistd.h> 二、函数原型int unlink(const char *pathname); 三、函数介绍unlink()函数功能即为删除文件。执行unlink()函数会删除所给参数指定的文件。 注意: 执行unli...

2019-07-01 11:13:05 22 0

原创 popen

popen()可以执行shell命令,并读取此命令的返回值;   popen()函数通过创建一个管道,调用fork()产生一个子进程,执行一个shell以运行命令来开启一个进程。可以通过这个管道执行标准输入输出操作。这个管道必须由pclose()函数关闭,必须由pclose()函数关闭,必须由p...

2019-05-15 15:13:14 13 0

原创 sqlite3 pragma

原文 PRAGMA语句是SQLITE数据的SQL扩展,是它独有的特性,主要用于修改SQLITE库或者内数据查询的操作。它采用与SELECT、INSERT等语句一样的形式来发出请求,但也有几个重要的不同: 特定的PRAGMA语句可能被移走,新的PRAGMA语句可能在新的版本中添加。因此,后向兼容...

2019-05-15 15:11:39 8 0

原创 哈佛和冯诺依曼架构

哈佛结构 哈佛 (英语:Harvard architecture)是一种将程序指令储存和数据储存分开的存储器结构。中央处理器首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作(通常是执行)。程序指令储存和数据储存分开,数据和指令...

2019-05-15 15:09:19 21 0

原创 MarkDown语法

https://blog.csdn.net/qcx321/article/details/53780672 markdown语法实例 [TOC] 1 强调 星号与下划线都可以,单是斜体,双是粗体,符号可跨行,符号可加空格 **一个人来到田纳西** __毫无疑问__ *我做的馅饼...

2019-05-15 14:31:02 9 0

原创 Linux_strace

strace是个功能强大的Linux调试分析诊断工具,可用于跟踪程序执行时进程系统调用(system call)和所接收的信号,尤其是针对源码不可读或源码无法再编译的程序。 在Linux系统中,用户程序运行在一个沙箱(sandbox)里,用户进程不能直接访问计算机硬件设备。当进程需要访问硬件设备...

2019-05-15 14:30:04 10 0

原创 lsof命令

Linux lsof命令详解 简介 lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。如TC和UDP等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件...

2019-05-14 21:25:22 6 0

原创 Windows7上开启ftp服务器功能

Windows7上开启ftp服务器功能 https://www.cnblogs.com/liangxuru/p/6148212.html

2019-04-13 14:43:10 13 0

原创 深入理解strncpy这个函数

https://blog.csdn.net/weibo1230123/article/details/80382614

2019-04-13 14:42:11 29 0

原创 ioctl()分析——从用户空间到设备驱动

ioctl()分析——从用户空间到设备驱动 https://blog.csdn.net/zifehng/article/details/59576539

2019-04-13 14:40:52 12 0

原创 字母对应的ASCII码和CTRL加字母的

对于字母的ASCII码来说。网上已经罗列出来了,这是很容易就获取的,然后对于ctrl+字母的以及shift+字母的却有点小难了。 最近在写脚本的时候,需要用到一些组合键,但是苦于不知道这些组合键对应的键盘码,就很尴尬 CTRL+字母 ASCII码1,2,3…分别依次对应键盘按键的Ctrl+A键,...

2019-04-13 14:22:22 61 0

原创 select一直返回0的问题解决和总结

select是Linux/Unix环境下的高级网络I/O编程接口,它使我们能够进行基于I/O多路转接。I/0多路转接(multiplexing)的核心思想是:先构造一张有关描述符的列表,然后调用一个函数,直到这些描述符中的一个已经准备好进行I/O时,该函数才返回。在返回时,它告诉进程哪些描述符已准...

2019-04-13 14:21:29 93 0

原创 串口清空输入输出缓存

Linux串口编程——清空输入输出缓存 背景 在我们的工作中,串口是一种比较常用的数据传输方式。在某些应用场景下,当程序启动并打开串口后,我们不希望读出串口打开之前的输入缓存数据(即内核驱动已接收但是并未被应用层读出的数据),因此需要对输入缓存数据进行清空(刷清、丢弃)操作。下面以Linux系...

2019-04-13 14:20:29 20 0

原创 linux编程之select

Linux编程之select select系统调用的的用途是:在一段指定的时间内,监听用户感兴趣的文件描述符上可读、可写和异常等事件。 select 机制的优势 为什么会出现select模型? 先看一下下面的这句代码: int iResult = recv(s, buffer,1024...

2019-04-13 14:15:11 10 0

原创 select-poll-epoll的简介和区别

select、poll、epoll简介epoll跟select都能提供多路I/O复用的解决方案。在现在的Linux内核里有都能够支持,其中epoll是Linux所特有,而select则应该是POSIX所规定,一般操作系统均有实现 select:select本质上是通过设置或者检查存放fd标志位的数...

2019-04-13 14:14:21 8 0

原创 Struct tm

时间操作(struct tm、time_t)求指定日期 前n天的日期 #ifndef _TM_DEFINED struct tm { int tm_sec; /* 秒–取值区间为[0,59] */ int tm_min; /* 分 - 取值区间为[0,59] */ int tm_hour; /...

2019-04-13 14:13:28 10 0

原创 谷歌浏览器安装插件

忘记了是由于什么安全的原因,现在chrome无法直接安装插件了 首先下载浏览器插件crx文件,鼠标右键修改文件名后缀由crx改为rar 解压成文件夹,打开浏览器,依次点击浏览器的右上角,更多工具,扩展程序,打开右上角的开发者模式开关。 点击加载已解压的扩展程序,选择之前解压的...

2019-04-13 14:09:23 13 0

原创 makefile '@' '$' '1828' '-' '-n ' ' $^'使用小结

编译代码时,会进程接触makefile,会涉及到一些符号,由于不明白有些意思经常出现问题,在此归纳一下。 ‘@’ 符号的使用 通常makefile会将其执行的命令行在执行前输出到屏幕上。如果将‘@’添加到命令行前,这个命令将不被make回显出来。 例如:@echo –compiling modu...

2019-04-13 14:07:04 27 0

原创 Hexo不显示图片,不需要插件,超简单

当使用Hexo创建文件搭建博客的时候,就会遇到图片插图,以及插入的图片无法显示的问题,差不多网上大多数的解决方案就是第一种(但我本人没使用这个方案) 第一种 1.找到Hexo下的_config.yml里的post_asset_folder,把这个选项从false改成true 2.在Hexo目...

2019-02-20 21:02:42 36 0

原创 vim快速查找

vim有强大的字符串查找功能。 我们通常在vim下要查找字符串的时候, 都是输入 / 或者 ? 加 需要查找的字符串来进行搜索,比如想搜索 super 这个单词, 可以输入 /super 或者 ?super, 两者的区别是前者是从上往下搜索,后者是从下往上搜索。 那么如果我想搜...

2019-02-20 19:40:46 29 0

原创 container_of图文分析

container of()函数分析 简介 Container_of在Linux内核中是一个常用的宏,用于从包含在某个结构中的指针获得结构本身的指针,通俗地讲就是通过结构体变量中某个成员的首地址进而获得整个结构体变量的首地址。 Container_of的定义如下: #define con...

2019-02-20 19:39:45 15 0

原创 同步内核缓冲区 sync,fsync和fdatasync函数

同步内核缓冲区 1.缓冲区简单介绍 人生三大错觉之中的一个:在调用函数write()时,我们觉得该函数一旦返回,数据便已经写到了文件里.可是这样的概念仅仅是宏观上的.实际上。操作系统实现某些文件I/O时(如磁盘文件)。为了保证I/O的效率,在内核一般会用到一片专门的区域(内存或独立的I/O地址...

2019-02-20 19:37:58 11 0

原创 算术移位逻辑移位

unsigned int i = 8; int main() { i = i<<3;//输出结果i = 64 } 请问:上面的变量i是采用逻辑移位还是算术移位呢? 逻辑移位,简单理解就是物理上按位进行的左右移动,两头用0进行补充,不关心数值的符号问题。 算术移位,同样...

2019-02-20 19:31:46 30 0

原创 linux memalign,valloc函数

在GNU系统中,malloc或realloc返回的内存块地址都是8的倍数(如果是64位系统,则为16的倍数)。如果你需要更大的粒度,请使用memalign或valloc。这些函数在头文件“stdlib.h”中声明。 ​ 在GNU库中,可以使用函数free释放memalign和valloc返回...

2019-02-20 19:30:53 20 0

原创 线程属性-pthread_attr_init

我们一般创建线程是这样 pthread_t tid; pthread_create(&tid, NULL, func, NULL); 第二个参数是线程属性设置,一般设置为了NULL,但是可以通过系统API进一步设置第二个参数,细化创建的线程的属性。 大致步骤为: pthread_...

2019-02-20 19:29:40 14 0

原创 AF_INET和PE_INET区别

在写网络程序的时候,建立TCP socket: sock = socket(PF_INET, SOCK_STREAM, 0); 然后在绑定本地地址或连接远程地址时需要初始化sockaddr_in结构,其中指定address family时一般设置为AF_INET,即使用IP。 相关头文件中的定义...

2019-02-20 19:26:24 53 0

原创 va_list,va_start,va_arg,va_end使用说明

在ANSI C中,这些宏的定义位于stdarg.h中,典型的实现如下: typedef char *va_list; va_start宏,获取可变参数列表的第一个参数的地址(list是类型为va_list的指针,param1是可变参数最左边的参数): #define va_start(lis...

2019-02-20 19:22:23 9 0

原创 struct-iovec

struct iovec 结构体定义与使用 1 .struct iovec定义了一个向量元素。通常,这个结构用作一个多元素的数组。对于每一个传输的元素,指针成员iov_base指向一个缓冲区,这个缓冲区是存放的是readv所接收的数据或是writev将要发送的数据。成员iov_len在各种情况下...

2019-02-20 19:20:45 144 0

原创 source_insight的查找功能

source insight的查找功能sourceinsight是一款很好的代码阅读编辑工具,方便对project管理,方便程序的阅读和编辑。查找功能使用十分频繁,选项较多,与其它软件的查找功能也类似,下面对英文版的查找功能,做简单说明: 查找参数:whole wordsonly : ...

2019-02-20 19:19:01 18 0

原创 大小端和结构体位域

大小端和结构体位域 大小端 什么是大小端 Big-Endian和Little-Endian的定义如下: 1) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。 2) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。...

2019-01-30 17:07:32 29 0

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