自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(680)
  • 资源 (43)
  • 收藏
  • 关注

原创 c语言bit位定义--位域的分配是怎样的?

little-endian位域的分配是把最先定义的bit位分到了最低位的bit上, 把最后定义的bit放到了最高位的bit上.编译器认为bit位跟外部包装它的unsigned int 没有半毛钱关系, 你认为有关系,它认为那是强加给它的,它不承认

2024-03-29 14:42:47 505

原创 从fread 到 磁盘驱动

1. linux 内核调用栈 2. 读中断服务程序. 3. 何时计算的柱面,磁头,扇区号? 现代磁盘还有柱面,磁头,扇区概念吗? 4. 固定的dev,block, 是不是每次都能找到固定的buffer缓冲区 bh ?

2024-03-28 16:55:47 891

原创 linux 命令行下的计算器

1. echo 运算器, 推荐 2. bc 计算器, 不推荐 3. dc 计算器, 不推荐 4. awk计算器. 推荐 5. python. 推荐

2024-03-27 15:56:32 501

原创 磁盘文件系统实际操练,解释到bit

0. 为什么需要磁盘文件系统. 1. 磁盘文件系统的任务是什么? 2. 空白磁盘是什么? 空白磁盘数据长什么样? 3. 格式化磁盘都干了什么? 格式化后的磁盘长什么样? 3.1 先找一个空设备 3.2 然后后把这个文件与伪设备关联. (相当于你把磁盘放入了驱动器) 3.3 然后格式化磁盘 , 3.4 格式化后的磁盘长什么样? 如下图:

2024-03-26 09:04:27 999

原创 ftp协议的彻底研究

0. ftp 的简单介绍 1. 安装ftp 服务器, vsftpd, vsftpd 是注重安全性、轻量又高效的 FTP 服务器 2. 安装ftp 客户端. 3. ftp 客户端的使用. 4. ftp 协议进一步研究 5. ftp 协议的高级研究 6. ftp 协议源码研究 6.1 调试: ftp -v -d localhost 6.2 getervb

2024-03-24 11:32:28 781

原创 带semaphore的buffer 应用实例

这是一个项目的缩减版.该项目内容是以一个恒定的码率去发送文件. 项目运行的很好,但是当在文件所在磁盘大量长时间 copy 文件时, 由于有大量磁盘读写操作,干扰了以恒定码率发送文件. 出现码率抖动. 意味着画面可能会卡顿.所以需要在外边包上一个外壳, 让外面的这个线程专门去抢磁盘资源, 放入缓存.则内层可以以恒定码率读取缓存,完成发送.这里对缓存的管理就引入了一个重要概念.gSemBufObj 对象. 带semaphore的缓存的管理对象.经实验效果不错. 分享这个模型代码以飨读者.

2024-03-18 10:25:35 689

原创 线程的通俗解释

1. 什么是线程? 2. 线程函数长得什么样? 3. 为什么要使用线程.4. 线程控制. 4.0 线程的执行和挂起 4.1: 线程中的互斥操作 4.2: 线程中的同步操作 4.3: 为什么不用全局变量作线程间控制变量? 4.4: 全局变量在线程同步或互斥中没有立足只地吗? 4.5: 线程的创建与销毁

2024-03-17 17:33:27 562

原创 ffmpeg 从avio_read 到 file_read

第一层: aviobuf.c中, AVIOContext对象当家, 这就是pReadCtx.第二层: avio.c中, URLContext 当家, 简记为h.第三层: file.c中, FileContext 对象当家,简记为c.

2024-03-13 15:52:49 1038

原创 创建线程时指定线程属性,调整线程优先级

//用attr 来创建thread, 设置线程优先级//查看指定进程各线程优先级$ ps -p 8996 -T -o tid,comm,rtprio//查看所有线程优先级$ ps -e -T -o tid,comm,rtprio | grep -v -

2024-03-12 13:01:05 395

原创 ffmpeg 从avio_write 到 udp_write

1. main 调用avio_write2. avio_write 调用flush_buffer3. flush_buffer 调用的writeout函数4. writeout 函数调用了ffurl_write 函数, 5. ffurl_write 直接调用了retry_transfer_wrapper6. udp_write 函数参数, 有一个内存handle, 数据指针和大小, 是实际传递数据的地方.

2024-03-11 14:20:59 993

原创 玩转centos 下的core 文件

一: 准备一个会产生core 的文件二: 原因查找:三: 设置core size 为unlimited(不限制大小)四: 查看当前core 的生成状态:五: 修改内核参数六: 再次查看:

2024-03-06 12:58:29 449

原创 udp丢包问题研究

//发现udp 有收不到数据包现象.一: 观察丢包1. ifconfig enp8s02. netstat -s -u二: 修改系统缓存参数. recv_buffer_size 修改系统buffer_size sysctl -w net.core.rmem_max=26214400 sysctl -w net.core.rmem_default=26214400三: 应用程序考虑av_dict_set(&m_options, "buffer_size", "1024000", 0);

2024-03-01 18:04:22 396

原创 ts 流中pcr 介绍

1. pcr 能表示的时间范围2. pcr 的内存存储3. pcr 的数值生成4. pcr 应用

2024-03-01 17:56:02 441

原创 获取秒值, 把秒值转换为时分秒, 及把时分秒转换成秒值代码

获取秒值, 把秒值转换为时分秒, 及把时分秒转换成秒值// 使用就这么简单.// 有时候程序输出需要打印时间信息, 就可以这么干了.

2024-03-01 15:36:04 173

原创 将map 按值排序输出

手工构建一个简单的mapmap 不能直接排序,需要导出到vector,再按值排序即可.

2024-02-26 09:59:25 142

原创 字符编码问题

文本文件中,存储的是字符的编码,我们在屏幕上看到的是字符的一种呈现,而其在磁盘上的存储则是以一种编码形式存储.1. GB2312,GBK,GB180302. UNICODE3. UTF4. UTF85. REPLACEMENT CHARACTER6. 乱码的产生.7. BOM (byte order mark 0xFEFF)

2024-02-23 13:42:08 269

原创 QT中QProcess 的使用举例(完整代码)

目的: 用最简单的程序了解QT对象QProcess的使用

2024-02-03 12:19:10 539

原创 QT中QThread, QTimer的使用(完整代码)

目的: 用最简单的程序1. 了解QT编程的框架2. 了解QThread 对象的使用3. 了解QTimer 对象的使用

2024-02-03 11:26:46 559

原创 cmake 脚本解释器

# cmake 可看成是一种脚本解释器# 变量及变量的使用, 变量是字符串或字符串数组# 变量运算# 循环语句# 定义宏# 定义函数# 使用宏和使用函数

2023-12-29 12:58:36 443

原创 用awk从文件中提取时间信息

description: 用awk从文件中提取时间信息现在对于成千上万条文本记录,判断一下EXT 时间信息及文件名称是否是正常的,# 匹配到文件时间# 把匹配到的字符串还能分组放入数组,强!# awk 自动判别参数是字符串还是数据, 棒!# awk 保留数据,参与运算.

2023-12-26 11:35:07 955

原创 用makeself.sh脚本来制作一键发布文件(.run)

用apt 来安装makeself.sh 文件. $apt install makeself查看帮助:$ makeself --helpUsage: /bin/makeself [params] archive_dir file_name label startup_script [args]例如:$makeself ~/work_dir work_dir.run "this is makeself test program" ./main

2023-12-25 17:21:40 440

原创 gnome-control-center 点击喇叭无声(解决过程).

Whoever translated default:LTR did so wrongly.Failed to play sound: No such driverexport CLUTTER_TEXT_DIRECTION='ltr' 重装gnome-control-center, 先强制删除,再重新安装$ sudo apt install gnome-control-center

2023-12-22 13:52:19 547

原创 git 杂项

$ git config --global --https.sslVerify "false"$ git config credential.helper store

2023-12-21 15:43:42 437

原创 c/c++中 qsort 与 bsearch 算法的使用

二进制搜索一个key, 在BASE地址, 元素个数NMEMB, 元素大小SIZE,比较函数__COMPAR。* 由于这个表是我们人类方便查阅的方式给出的,为了编程的需要,先把它按月份名称的ascii顺序排序,bsearch 二分搜索方法,是需要一个排序的数组的,所以先排序数组,然后让bsearch 搜索key。bsearch 在/usr/include/stdlib.h 中定义, 就在qsort 函数的上方。qsort 用来排序,bsearch用来搜索,是这个意思,但具体怎样使用呢?

2023-12-13 17:58:10 599

原创 linux 键盘卡顿及问题的解决.

Dec 12 14:17:01 hjj-u7090 gnome-terminal-[2874]: message repeated 5 times: [ Process Key Event failed: GDBus.Error:org.gtk.GDBus.UnmappedGError.Quark._g_2dio_2derror_2dquark.Code24: 已到超时限制.]ubuntu20 系统,键盘经常 会卡顿一下, 此时鼠标正常, ALT_TAB 键正常,可以切换窗口,从此世界又恢复了美好!

2023-12-13 13:27:59 478

原创 c/c++语言产生正弦波音频数据代码

/每一个数据递进一个角度2*PI/FREQUENCY,此值为角速度。* 产生1s 440hz, S16格式的音频数据,48K hz 采样,单声道,每个frame大小为1024。//产生10秒音频数据。* 这就是数字声音的概念. 采样的数据格式,采样率(每秒采样次数),声道数,frame大小。//每一个frame 的初始角度。

2023-12-12 14:38:19 414

原创 通达信“持续“函数使用.

补充一下FINANCE()函数finance(3) 该函数返回沪深京品种类型, 用此函数可以筛选股票类型0:指数,1:A股主板, 3190 个(59.9%), 包含6字头沪市,0字头深市2:三板市场, 目前233个4字头(三板),8字头(新三板)的股票3:创业板, 1327个(24.9%), 3字头4:科创板, 565个(10.6%) 688开头5:B股,6:债券,7:基金,8:权证,9:其它,10:非沪深品种

2023-12-04 21:34:06 720

原创 c/c++ header_only 头文件实现的关键点

1. 对外声明的函数必需加上inline, 消除连接的歧义2. 在inline 函数内部声明的static 对象, 在多个文件包含时,对象是唯一的

2023-11-28 17:06:37 1261

原创 sizeof 与 strlen 用法的简明解释

1. strlen() 是函数, 程序会根据传入的指针计算字符串的长度,不带尾部0.2. sizeof() 不是函数, 其括着的部分可以是变量或类型或字符串,把它也叫参数吧, gcc 会计算出参数所需占用的内存的大小.

2023-11-15 09:54:27 78

原创 Ubuntu 20.04 DNS解析原理, 解决resolv.conf被覆盖问题

1. 域名解析服务是什么? systemd-resolved.service2. 它起了什么作用? 它将127.0.0.53的请求转发给后端服务请求3. 后端服务请求服务器是哪个文件? /run/systemd/resolve/resolv.conf4. 该文件是如何生成的, 开机时由 /etc/systemd/resolved.conf 形成5. 域名解析的过程? 参考步骤8, 由127.0.0.53转发给后端server6. 域名解析工具resolvectl 的使用

2023-11-09 14:22:26 1133

原创 ff_compute_frame_duration() 代码注释

* 输入参数: s(格式上下文), st(流), pc(分析器上下文), pkt(包) * 输出参数: pnum(分子地址),pden(分母地址) * 描述: 返回 frame 时长,秒值,用分数表达. 得不到时长时返回 0(*pnum=0,*pden=0);

2023-10-26 15:15:08 87

原创 elf 文件信息的用途

1. 检查程序头, 判定重定位信息是否是只读的.2. 检查是否存在符号表3. canary 检测(金丝雀检测), 检查符号表中是否存在__stack_chk_fail函数调用4. 查看执行文件中有多少个函数调用了libc中的函数

2023-10-10 15:25:32 101

原创 怎样判定一个可执行文件是否是PIE 格式的文件

执行文件是PIE 需要两个条件:1. 其文件头类型是 DYN 类型2. 其动态节中有 DEBUG 符号名存在

2023-10-10 11:10:32 229

原创 【 c++ 二元运算符重载,以<<(抽取符)为例,说清为什么它支持hex,endl等操作函数】

// c++2元运算符

2023-09-24 16:59:59 95

原创 c++ 二元运算符重载, 以加法为例

可见,c++2元运算符,取其左侧为函数第一参数,右侧为第二参数

2023-09-24 12:21:18 75

原创 c++实现的一个定时器实例

小结: 所谓的定时器, 当时间到时执行某一个任务,是通过启动一个线程来实现的,等待时是timer线程在等待,执行时是timer线程在执行.调用线程和执行线程是不同的线程

2023-09-23 12:05:47 291

原创 C++11 Lambda函数 入门

小结: lambda 函数存在的意义: lambda 函数可以直接访问父作用域变量(以值方式传递或以引用方式传递) [=]以值传递的方式捕获父作用域变量, 父作用域变量是不能直接修改的 加mutable 修饰符,就可以在函数体里修改, 但退出后值不变 [&]以引用方式捕获父作用域变量,就可以直接修改父作用域变量 于是乎, 当你在写一个函数时,如果你愿意,就可以随便再定义一个lambda函数, 它可以操控该函数的变量. 使得书写函数更灵活了!

2023-09-22 19:50:36 88

原创 avformat_find_stream_info 为什么总是等到超时或超过大小才退出?

avformat_find_stream_info 为什么不能正常退出了?对于 ts 流文件,如果你设置了scan_all_pmts 选项, 则主动退出条件将不会满足,因为它的ctx_flags一直是1而不能清0. 所以find_stream_info 不会主动退出. 只能等超时或超过指定大小才退出了。

2023-09-21 11:11:36 192

原创 emacs从缓冲中获取信息,并执行shell 命令

我现在想把光标放到某一行,然后敲一个按键就能播出该udp码流,如何实现?当然,这需要两步走,第一步: 获取所在行的url信息第二步: 调用ffplay 命令,例如当放在第一行时,它应该调用 ffplay udp://239.3.1.105:8092

2023-09-20 12:21:58 273

原创 linux 下用posix semaphore 解决资源竞争问题实例

让10个线程竞争5个资源,用semaphore 来实现1. sem_init(信号量,num) 初始化资源数2. 每个线程要 sem_wait(信号量) 申请资源,申请不到会等待3. 用完要sem_post(信号量), 归还资源

2023-09-20 09:54:59 241

tr_research.tar.gz

本篇文章帮助你理解如下几个问题: 1. 翻译过程是如何进行的? 2. 翻译的上下文是指的什么? 3. 如何使用QT_TR_NOOP, QT_TRANSLATE_NOOP 4. QObject::tr() 是如何工作的. 5. lupdate 工具是如何工作的. 6. 如何提取宏定义中的字符串? 也就是说宏定义中字符串如何支持国际化? 7. 类中字符串如何支持国际化. 8. 全局变量引用字符串如何支持国际化. 详细请阅读readme.txt 和把玩代码.

2020-08-14

JSON 字符串与C 结构变量互转实例

linux c 下 json 字符串与 c 结构的相互转换, 开源软件,很有参考价值。

2015-03-03

vim73-gdb 工具

最新版vim version 73 gdb vim 和 gdb 的结合 你懂得 用 tar xvf vim73 gdb tar 解开2个压缩包 再分别解压缩 再看readme 再打补丁 编译

2015-02-07

simple encrypt decrypt algrithm

simple encrypt decrypt algrithm use xor to realize

2015-02-05

tiny httpd

微型http 服务器, 还实现了cgi 功能

2014-11-27

bat 的书写范例

bat 的书写范例, 可以学习不少使用的语法,技能

2014-04-23

linux 64位只读文件系统 romfs64

linux 64位只读文件系统 内核 2.6.32, 其它内核可能需要相应调整 扩展:从32位到64位 提高文件读取效率。 优化方式: 文件节点读入内存,采用数组管理,实现对分搜索,hash 搜索 性能不是很完美,仅供参考

2013-11-07

uxfs 文件系统移植

uxfs 源代码是linux2.4 内核的, 将它移植到linux2.6.32内核,并做了少量修改。编译,运行良好

2013-09-04

build external modules

linux 2.6 内核 kbuild 文档。 讲述编译内核模块 makefile编写事项 老外写得,英文版

2013-07-12

windows 版 bochs

bochs 虚拟机 , 可以调试内核。 纯软件模拟dev

2013-06-28

ida pro权威指南中文版

著名的ida pro权威指南, pdf 文档,我给它加了标签

2013-06-03

wget for windows/dos

小巧的wget.exe 文件,单一运行文件。仅253 K bytes wget -h 获取帮助

2010-12-22

.net 中间语言 IL 指令集

Common Language Infrastruction partition I to VI 非常详细的IL 中间语言手册。 stardard ECMA-335 英文首册。备查。

2010-10-29

windos at 命令详解, ntcmds.chm

读完txt 文档,包你会用at. 另附ntcmds.chm, 可进一步扩充查阅其它windows 命令

2010-09-14

javaspript 手册

ecma-262 javascript 手册。 英文原版 能说什么呢? 非常详细,象字典一样

2010-03-07

total tftp solution

完整的tftp 工具集,图形界面程序,控制台程序等。

2009-07-23

arm instruction set(arm 完整指令集)

arm instruction set(arm 完整指令集) chm 格式,比pdf 方便查找

2009-06-12

c++ 模板使用入门

c++ 模板使用入门 c++ 模板使用介绍 pdf

2009-04-09

三十分钟掌握STL.pdf

stl 基础教程。不要相信30分钟能掌握。30分钟有收获就可以了。 pdf 文档并简单增加了标签

2009-04-08

HTML Help workshop 教程.rar

HTML Help workshop 教程.rar chm 格式

2009-03-31

IDA Free8.3 For Linux

是Free 版本, 支持x86, x86_64, 不支持Arm 等 支持反编译成C 语言伪代码, 开放的功能已经非常友好了.. 供学习使用还是非常不错的. linux 下版本, 我喜欢在linux 下操作. 安装: chmod +x idafree83_linux.run ./idafree83_linux.run 即可. enjoy!

2023-10-08

用SDL2.0显示图片实例代码

建议在linux下编译。 1.演示了如何显示背景图(平铺),前景图(居中)及处理键盘事件(退出)等

2022-11-02

将视频存储为一张张jpg 图片源码

利用ffmpeg 来读取视频,解压缩为一个个frame, 再利用ffmpeg 将frame 压缩成jpeg 格式存成图片. 对ffmpeg 的主要调用接口如下: 1. 打开一个文件进行解码的过程: //初始化 avformat_open_input() avformat_find_stream_info() av_find_best_stream() avcodec_find_decoder() avcodec_parameters_to_context() avcodec_open2() //循环执行 av_read_frame() avcodec_send_packet() avcodec_receive_frame() //结尾 avformat_close_input() 2. 打开一个文件进行编码的过程: //初始化 av_guess_format() avio_open(); avformat_new_stream() avcodec_find_encoder() avcodec_parameters_to_context()

2022-06-11

linux 命名管道创建及使用demo程序

1. 在程序中创建命名管道 在程序中创建命名管道,可以使用 mkfifo 函数,其原型如下: #include <sys/types.h> #include <sys/stat.h> int mkfifo(const char *pathname, mode_t mode); 2. 在程序中使用命名管道 pipe_fd = open(FIFO_NAME, open_mode); 3. 编译: make 4. 执行: 先在一个终端中执行生产者: ./namedpipe_produce 然后在另一个终端中执行消费者:./namedpipe_consume 结果是二者完成数据传输后都返回了 5. 删除命名管道 删除命名管道和删除一个普通文件没有什么区别: $ rm /tmp/testp

2022-06-02

监视程序的内存使用(linux c 源代码)

当你面对内存泄露的时候, 该程序时刻监视着你程序的内存使用情况. 你甚至可以用gdb 单步执行你的程序,来观察监视程序所报的内存使用量. 如此便能找到是谁(哪个函数?哪行代码)占用了内存. linux 下的程序, 有源代码, 你可以修改程序成更顺手的工具.

2022-05-04

Qt5 信号与槽研究,线程研究

QT5 信号与槽研究 ---------------------------------------- 一个主窗口给多个工作线程发信号,线程的槽函数是如何工作的? 是并行的还是串行的? 通过研究知道, 它是串行工作的. 而且纵然工作线程没有启动,它也可以工作. 各个槽函数只是signal 依次调用各线程下的槽函数而以. signal-slot 机制跟线程没有关系,只跟对象有关系. 下面贴上我的研究代码,里面还有其它thread 的相关知识. 例如:线程是并行运行的,如何停止线程和重启线程等.可以参考注释.

2022-03-12

OpenSSH for windows (64bits)

1,下载openSSH windows版(注:该版本是64位) 2,解压到C:\Program Files\OpenSSH 不要放在别的路径下,官方这样要求的 3,cmd到openSSH路径下 依次执行 1)安装sshd服务 powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1 2)开放22号端口(如果你在windows关闭了防火墙并配置了入站规则可以不执行如下命令,多执行不影响) netsh advfirewall firewall add rule name=sshd dir=in action=allow p

2020-11-09

buttonTable.zip

QTableWidget 是qt 提供的表格控件, 这里需要一个按键矩阵, 所以将按键作为一个单元塞到表格中,方便管理. 有一张图片显示了运行效果.

2020-07-23

virtualpanel.zip

用qt4 实现的虚拟面版, 上面有几个指示灯,几个按键, 指示灯和按键数量可自己定义, 指示灯可以定义点亮状态为红,绿,蓝, 熄灭固定为灰色.

2020-07-15

qt 在控件上绘制图形

qt 在qlabel 上画一个叉, 用来演示如何在qt 控件上绘制图形,只要重写控件的paintEvent 方法即可!很简单.

2020-05-07

the-23-gang-of-four-design-patterns-with-cplusplus.tar.gz

c++ 23种设计模式参考代码, 帮助理解23种设计模式 源代码整理自 k_eckel 的《设计模式精解-GoF 23 种设计模式解析附 C++实现源码》 内含CMakelist.txt 文件, 方便linux 下编译运行. 我设定的积分是免费,0积分,代码公开,以后下载会不会要积分就不知道了.

2020-03-08

LFS-BOOK-CN.html

首先,你应该知道Linux From Scratch 是干什么的,这篇文档是中文的. 由 Linux 中国 - LCTT - LFS 翻译小组 翻译 无分页,所有文档在一个页面中,方便查找. 还是看中文文档方便操作

2019-12-29

calltree-2.3.tar.gz

makefile 用qmake 生成, 去除了测试文件,已修改了代码文件中需要修改的地方. 在ubuntu14 下已经编译通过

2019-07-02

Qt 4.8 Timer

qt 下简单的timer 使用 和日期,时间的更新显示

2016-09-02

stl-views.gdb

gdb 打印功能扩展 # The following STL containers are currently supported: # # std::vector -- via pvector command # std::list -- via plist or plist_member command # std::map -- via pmap or pmap_member command # std::multimap -- via pmap or pmap_member command # std::set -- via pset command # std::multiset -- via pset command # std::deque -- via pdequeue command # std::stack -- via pstack command # std::queue -- via pqueue command # std::priority_queue -- via ppqueue command # std::bitset -- via pbitset command # std::string -- via pstring command # std::widestring -- via pwstring command

2016-01-23

gcc 函数调用探测功能

收集一个函数调用的踪迹,一种方法是通过在函数的入口处和出口处插入一个打印语句来检测。这个过程非常繁琐,而且很容易出错,通常需要对源代码进行大量的修改。 幸运的是,GNU 编译器工具链(也称为 gcc)提供了一种自动检测应用程序中的各个函数的方法。

2015-09-10

gdbinit-gdb 功能扩展插件

Public repo for gdbinit x86/x86_64 and ARM are supported simultaneously since version 8.0. To make ARM the default CPU set the $ARM var to 1 or use the "arm" command to switch. FEEDBACK: http://reverse.put.as - [email protected] You should read the header of the script for important information regarding some Mac OS X/iOS gdb bugs. Have fun, fG!

2015-07-10

vim plugin

vim plugin, windows 下工具集合,linux 下 plugin 也可以使用。

2015-05-10

webbench 批量web 页请求程序

批量 web 请求 知识点: 客户端程序构建http 请求字符串, 并发请求(用fork完成)。父子进程间信息交换

2015-03-04

http 协议分析代码实例

http 1.1 协议分析代码, linux 下编译,代码紧凑,very good!

2015-03-03

空空如也

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

TA关注的人

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