- 博客(41)
- 资源 (26)
- 收藏
- 关注
转载 iptables用户层实现解析
https://blog.youkuaiyun.com/yandaqijian/article/details/44415519https://blog.youkuaiyun.com/yandaqijian/article/details/44415839
2018-12-14 17:41:15
307
转载 linux 信号量
UNIX/Linux下信号量函数的使用。首先你得知道什么叫信号量,什么时候要用信号量。这个嘛,主要就是用来保护共享资源的,也就是说如果你想限制某个(些)资源在同一时刻只能有一(多)个线程拥有,就可以使用信号量。当然也可以用作让一个线程等待另一个线程完成某项工作。 用下面一组函数(系统调用)来实现。int sem_init(sem_t *sem,int pshared,unsigned int ...
2018-05-02 10:37:41
204
转载 zip文件格式
http://blog.youkuaiyun.com/xiaobing1994/article/details/78367035http://blog.youkuaiyun.com/a200710716/article/details/51644421
2018-03-14 21:13:58
934
转载 zlib用法简单说明
转自:http://blog.youkuaiyun.com/querw/article/details/1452041本文的目的是: 简单说明如何把zlib加入到MFC程序中,提供内存压缩功能.1. 如何获得zlibzlib的主页是:http://www.zlib.net/2. 用VC++6.0打开把下载的源代码解压打开,VC6.0的工程已经建好了,在/projects/visualc6. 双击zlib.ds...
2018-03-13 20:05:51
1408
转载 linux 原子操作
深入分析Volatile的实现原理引言在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上I
2018-01-03 16:43:56
285
转载 linux动态库的查找顺序
1.首先查看程序文件的.dynamic 段是否包含了一个叫DT_RPATH的项(它是一个以冒号分隔的库文件搜索目录列表)。 怎么设置这个选项? 需要在编译连接程序的时候使用-Wl,-rpath选项,假设一个程序test需要使用liblib.so库,如下所示进行编译连接:g++ -o test -L. -llib -Wl,rpath=./ test.cpp
2017-09-30 10:55:45
1455
原创 Android 入门资料汇总
废话不多说,学习Android前,先把学习中可能用到的资料坐下汇总,待用到时有所依据。1.有哪些 Android 大牛的 blog 值得推荐?这个是从知乎上看到的,感觉不错,以此Markhttps://www.zhihu.com/question/197759812.秋风的博客http://blog.youkuaiyun.com/tangcheng_ok3.张兴
2017-07-26 09:12:19
193
原创 cjson使用基础
以下内容转自菜博士的博客,具体博客地址不详。cJSON简介:JSON(JavaScriptObject Notation)是一种轻量级的数据交换格式。它基于JavaScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。cJSON是一个超轻巧,
2017-07-14 17:17:59
318
原创 qt入门教程收集
在工作中接触了一点Qt的东西,打算抽时间系统性的学习一下,目前菜鸟一枚,先收集一下别人的学习笔记,以后学习时拿来参考。我的Qt5学习之路 http://www.cnblogs.com/jingliming/p/4936758.htmlQt学习之路2 https://www.devbean.net/2012/08/qt-study-road-2-catelog/Qt
2017-07-13 16:30:34
268
转载 Libevent源码分析-----bufferevent工作流程探究
转载请注明出处:http://blog.youkuaiyun.com/luotuo44/article/details/39344743 和之前的《Libevent工作流程探究》一样,这里也是用一个例子来探究bufferevent的工作流程。具体的例子可以参考《Libevent使用例子,从简单到复杂》,这里就不列出了。其实要做的例子也就是bufferevent_socket_ne
2017-06-07 09:37:37
459
转载 Libevent源码分析-----更多evbuffer操作函数
转载请注明出处:http://blog.youkuaiyun.com/luotuo44/article/details/39325447锁操作: 在前一篇博文可以看到很多函数在操作前都需要对这个evbuffer进行加锁。同event_base不同,如果evbuffer支持锁的话,要显式地调用函数evbuffer_enable_locking。[cpp]
2017-06-07 09:37:00
318
转载 Libevent源码分析-----evbuffer结构与基本操作
转载请注明出处:http://blog.youkuaiyun.com/luotuo44/article/details/39290721 对于非阻塞IO的网络库来说,buffer几乎是必须的。Libevent在1.0版本之前就提供了buffer功能。现在来看一下Libevent的buffer。buffer相关结构体: Libe
2017-06-07 09:35:58
319
转载 Libevent源码分析-----连接监听器evconnlistener
转载请注明出处:http://blog.youkuaiyun.com/luotuo44/article/details/38800363使用evconnlistener: 基于event和event_base已经可以写一个CS模型了。但是对于服务器端来说,仍然需要用户自行调用socket、bind、listen、accept等步骤。这个过程有点繁琐,为此在2.0.2-al
2017-06-07 09:35:05
321
转载 Libevent源码分析-----通用类型和函数
转载请注明出处:http://blog.youkuaiyun.com/luotuo44/article/details/38780157 Libevent定义了一系列的可移植的兼容类型和函数。这使得在各个系统上都有一致的效果,Libevent一般都会在兼容通用类型和函数的前面加上ev或evutil前缀。 在实现上,Libevent都是使用条件编译+宏定义的方
2017-06-06 21:15:12
347
转载 Libevent源码分析-----与event相关的一些函数和操作
转载请注明出处: http://blog.youkuaiyun.com/luotuo44/article/details/38739549 Libevent提供了一些与event相关的操作函数和操作。本文就重点讲一下这方面的源代码。 在Libevent中,无论是event还是event_base,都是使用指针而不会使用变量。实际上,如果查看Libev
2017-06-06 21:14:05
270
转载 Libevent源码分析-----管理超时event
转载请注明出处: http://blog.youkuaiyun.com/luotuo44/article/details/38678333 前面的博文已经说到,如果要对多个超时event同时进行监听,就要对这些超时event进行集中管理,能够方便地(时间复杂度小)获取、加入、删除一个event。 在之前的Libevent版本,Libevent使用小根堆管理这
2017-06-06 21:12:47
421
转载 Libevent源码分析-----Libevent时间管理
转载请注明出处: http://blog.youkuaiyun.com/luotuo44/article/details/38661787基本时间操作函数: Libevent采用的时间类型是struct timeval,这个类型在很多平台都提供了。此外,Libevent还提供了一系列的时间操作函数。比如两个struct timeval相加、相减、比较大小。有些平台直接提
2017-06-06 21:11:46
302
转载 Libevent源码分析-----超时event的处理
转载请注明出处: http://blog.youkuaiyun.com/luotuo44/article/details/38637671如何成为超时event: Libevent允许创建一个超时event,使用evtimer_new宏。[cpp] view plain copy //event.h文件 #define e
2017-06-06 21:10:54
444
转载 Libevent源码分析-----evthread_notify_base通知主线程
转载请注明出处: http://blog.youkuaiyun.com/luotuo44/article/details/38556059 一般来说,是主线程执行event_base_dispatch函数。本文也是如此,如无特别说明,event_base_dispatch函数是由主线程执行的。notify的理由: 本文要说明的问题是,当主线程在执
2017-06-06 21:09:51
510
转载 Libevent源码分析-----信号event的处理
转载请注明出处:http://blog.youkuaiyun.com/luotuo44/article/details/38538991信号event的工作原理: 前面讲解了Libevent如何监听一个IO事件,现在来讲一下Libevent如何监听信号。Libevent对于信号的处理是采用统一事件源的方式。简单地说,就是把信号也转换成IO事件,集成到Libevent中。
2017-06-06 21:08:30
378
转载 Libevent源码分析-----event优先级设置
转载请注明出处: http://blog.youkuaiyun.com/luotuo44/article/details/38512719 event_base允许用户对它里面的event设置优先级,这样可以使得有些更重要的event能够得到优先处理。 Libevent实现优先级功能的方法是:用一个激活队列数组来存放激活event。即数组的元素是一个激活队列
2017-06-06 21:06:21
303
转载 Libevent源码分析-----Libevent工作流程探究
转载请注明出处:http://blog.youkuaiyun.com/luotuo44/article/details/38501341 之前的博文讲了很多Libevent的基础构件,现在以一个实际例子来初步探究Libevent的基本工作流程。由于还有很多Libevent的细节并没有讲所以,这里的探究还是比较简洁,例子也相当简单。[cpp] view plain
2017-06-06 21:02:08
217
转载 Libevent源码分析-----跨平台Reactor接口的实现
转载请注明出处: http://blog.youkuaiyun.com/luotuo44/article/details/38458469 之前的博文讲了怎么实现线程、锁、内存分配、日志等功能的跨平台。Libevent最重要的跨平台功能还是实现了多路IO接口的跨平台(即Reactor模式)。这使得用户可以在不同的平台使用统一的接口。这篇博文就是来讲解Libevent是怎么实现
2017-06-06 21:00:56
286
转载 Libevent源码分析-----配置event_base
转载请注明出处: http://blog.youkuaiyun.com/luotuo44/article/details/38443569 前面的博文都是讲一些Libevent的一些辅助结构,现在来讲一下关键结构体:event_base。 这里作一个提醒,在阅读Libevent源码时,会经常看到backend这个单词。其直译是“后端”。实际上其指的是L
2017-06-06 21:00:00
205
转载 Libevent源码分析-----event_signal_map
转载请注明出处: http://blog.youkuaiyun.com/luotuo44/article/details/38424173相关结构体: 因为event_signal_map结构体实在太简单了,所以不像event_io_map那样,有一个专门的文件。由于没有专门的文件,那么只能从蛛丝马迹上探索这个event_signal_map结构了。
2017-06-06 20:58:39
205
转载 Libevent源码分析-----event_io_map哈希表
转载请注明出处: http://blog.youkuaiyun.com/luotuo44/article/details/38403241 上一篇博客说到了TAILQ_QUEUE队列,它可以把多个event结构体连在一起。是一种归类方式。本文也将讲解一种将event归类、连在一起的结构:哈希结构。哈希结构体: 哈希结构由下面几个结构体一起配合工作
2017-06-06 20:56:25
272
转载 Libevent源码分析-----TAILQ_QUEUE队列
转载请注明出处: http://blog.youkuaiyun.com/luotuo44/article/details/38374009 Libevent源码中有一个queue.h文件,位于compat/sys目录下。该文件里面定义了5个数据结构,其中TAILQ_QUEUE是使得最广泛的。本文就说一下这个数据结构。队列结构体: TAILQ_QU
2017-06-06 20:55:03
277
转载 Libevent源码分析-----多线程、锁、条件变量(二)
转载请注明出处: http://blog.youkuaiyun.com/luotuo44/article/details/38360525Debug锁操作: Libevent还支持对锁操作的一些检测,进而捕抓一些典型的锁错误。Libevent检查:解锁自己(线程)没有持有的锁在未解锁前,自己(线程)再次锁定一个非递归锁。 L
2017-06-06 20:53:52
302
转载 Libevent源码分析-----多线程、锁、条件变量(一)
转载请注明出处: http://blog.youkuaiyun.com/luotuo44/article/details/38350633 Libevent提供给用户的可见多线程API都在thread.h文件中。在这个文件提供的API并不多。基本上都是一些定制函数,像前面几篇博文说到的,可以为Libevent定制用户自己的多线程函数。开启多线程:
2017-06-06 20:52:53
249
转载 Libevent源码分析-----内存分配
转载请注明出处: http://blog.youkuaiyun.com/luotuo44/article/details/38334979 Libevent的内存分配函数还是比较简单的,并没有定义内存池之类的东西。如同前一篇博客那样,给予Libevent库的使用者充分的设置权(定制),即可以设置用户(Libevent库的使用者)自己的内存分配函数。至于怎么分配,主动权在于用户
2017-06-06 20:51:32
235
转载 Libevent源码分析-----日志和错误处理
转载请注明出处: http://blog.youkuaiyun.com/luotuo44/article/details/38317797日志处理: 在Libevent的源码中,经常会见到形如event_warn、event_msgx、event_err之类的函数。这通常出现在代码中一些值是不合理时。这些函数就是Libevent的日志函数。它能把这些不合理的情况打
2017-06-06 20:50:06
279
转载 Libevent源码分析-----event-config.h指明所在系统的环境
转载请注明出处: http://blog.youkuaiyun.com/luotuo44/article/details/38300965 如果你打开Libevent的一些文件,比如util.h文件。就会发现使用了很多宏定义,并根据一些宏定义而进行条件编译。这些宏定义往往来自event-config.h文件中。 如util.h文件的代码开始处:[
2017-06-06 20:47:53
340
转载 Libevent源码分析-----开篇
转载请注明出处: http://blog.youkuaiyun.com/luotuo44/article/details/38300779 我所分析的Libevent版本是2.0.21版本,是目前最新的稳定版本。看这系列博文中,需要读者有Linux编程的一些基础。因为像POSIX、文件描述符、多线程等等这些概念,我并不会去解释,我默认读者已经熟悉这些概念了。如果读者读过《UN
2017-06-06 20:46:27
241
转载 iptables中DNAT、SNAT和MASQUERADE的原理
DNAT(Destination Network Address Translation,目的地址转换) 通常被叫做目的映谢。而SNAT(Source Network Address Translation,源地址转换)通常被叫做源映谢。这是我们在设置Linux网关或者防火墙时经常要用来的两种方式。以前对这两个都解释得不太清楚,现在我在这里解释一下。首先,我们要了解一下IP包的结构,如下图
2017-05-18 11:27:28
1973
转载 用netlink API与内核通信
原文地址:http://blog.youkuaiyun.com/lovekatherine/article/details/1539267Why and How to Use Netlink Socket作者:Kevin He,2005-01-05原文地址:http://www.linuxjournal.com/article/7356 译者:Love. Katherine,2007-
2017-05-18 11:08:52
744
转载 Wireless tools for Linux介绍
Wireless tools for Linux是一个Linux命令行工具包,用来设置支持Linux Wireless Extension的无线设备。Wireless tools for Linux 和 Linux Wireless Extension 由 Jean Tourrilhes在维护,由Hewlett-Packard(HP惠普)赞助。大多数基于Linux内核的操作系统都包含W
2017-05-18 11:06:26
483
转载 iptables中文man手册
总览用iptables -ADC 来指定链的规则,-A添加 -D删除 -C 修改iptables - [RI] chain rule num rule-specification[option]用iptables - RI 通过规则的顺序指定iptables -D chain rule num[option]删除指定规则iptables -[LFZ] [chain][o
2017-05-18 10:56:09
811
转载 IPtables中SNAT、DNAT和MASQUERADE的含义
IPtables中可以灵活的做各种网络地址转换(NAT),网络地址转换主要有两种:SNAT和DNAT。SNAT是source networkaddress translation的缩写,即源地址目标转换。比如,多个PC机使用ADSL路由器共享上网,每个PC机都配置了内网IP,PC机访问外部网络的时候,路由器将数据包的报头中的源地址替换成路由器的ip,当外部网络的服务器比如网站web服务器接到访
2017-05-18 10:48:43
304
原创 网络协议综述
之前在这方面接触甚少,TCP、UDP 倒是用过一些。 现在工作中难免遇到网络协议相关的东西。在这里建个标签,后续把自己学习各种网络协议的心得贴出来,供大家分享。
2015-09-12 16:30:44
459
原创 二维码原理与生成细节
二维码存在多种编码格式,不同编码格式的原理与生成方式均有差异,本文分别对其进行描述:1.QR二维码 下面这篇文章不错, http://coolshell.cn/articles/10590.html2.其他码制 待续
2015-09-11 09:03:05
597
STM32F10x_AN2594_FW_V3.1.0优化(FLASH模拟EEPROM).zip
2019-10-04
SPI-Interface_AppNote_(UBX-13001919).pdf
2019-10-04
win10_rndis_driver.zip
2019-10-04
ARM_Cortex_M0_instructions.pdf
2019-10-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人