staticnetwind的专栏

Linux开发的学习之旅

Linux下使用ZMQ实践之与libevent结合

1. 前言         最近考虑到一个问题,项目中有同时处理socket、zeromq的逻辑需求,想通过libevent(I/O服用)一块将zmq-socket的事件也放一个线程中处理。   &n...

2019-06-27 00:59:25

阅读数 47

评论数 0

Linux下使用ZMQ实践之监控事件

1. 前言 继续《Linux下使用ZMQ实践“生产者-消费者”模型》 文章之后进一步思考: ZeroMQ通过隐藏了基础的socket操作,达到调用简明易懂的层次; 那么,如果某些场景下,又需要考虑到连接状态的维护,应该如何操作? ZeroMQ给出的解决方案就是zmq_socket_monitor ...

2019-06-26 00:09:23

阅读数 46

评论数 0

Linux下对libevent的evbuffer模块裁剪移植

目录列表1. 背景2. 源码分析2.1 结构体分析2.2 主要接口3.裁剪3.1 兼容性定义3.2 裁剪实现3.1 chain相关操作3.2 evbuffer的操作3.3 运行测试4. 结论 1. 背景 libevent作为一款高效的网络开发库,内部模块也有许多优秀的实现。 evbuffer为li...

2019-06-02 17:24:53

阅读数 14

评论数 0

Linux下使用gtest对接口进行单元测试

目录1. 背景2. gtest 断言2.1 布尔值判断2.2 二进制比较2.3 字符串比较2.4 浮点数比较3. 实践3.1 框架使用3.2 用例编写3.3 编译运行4.结论 1. 背景 工程中涉及基础接口的设计,为了保证接口的质量,所以需要进行单元测试: 单元测试是用来对一个模块、一个函数或者...

2019-06-02 15:15:40

阅读数 24

评论数 0

c语言快速数独生成器

1.准备 继上篇文章《c语言暴力递归实现数独求解》 思路,本章编写一个数独生成器,按照数独的规则生成题目,但不保证题目可解。 2.思路 按照数独的规则: 水平方向的每一横行有九格,每一横行称为行(Row) 垂直方向的每一纵列有九格,每一纵列称为列(Column) 三行与三列相交之处有九格,每一单...

2019-05-23 00:07:01

阅读数 49

评论数 0

c语言暴力递归实现数独求解

数独求解1. 简介1.1 规则介绍1.2 解法介绍2 程序思路2.1 数据的存储表示2.2 数独检查2.2 数独计算2.3 调用3. 调用运行4. 总结 1. 简介 1.1 规则介绍 Wiki-数独 百科-数独 九宫格的定义: 水平方向的每一横行有九格,每一横行称为行(Row) 垂直方向的每...

2019-05-21 01:14:37

阅读数 57

评论数 0

Linux使用ragel进行文本快速解析(下)

1、前言   《Linux使用ragel进行文本快速解析(上)》文中对Ragel进行了初步介绍,并给出了一个atoi的例子,本文接着再给出一个文本行解析的例子 2、思路   awk的主要是对固定列数的文本进行内容解析,若使用 awk命令的话,是进行逐行解析。同样的,使用 Ragel 写的思路也是,...

2019-04-13 23:07:26

阅读数 44

评论数 0

Linux使用ragel进行文本快速解析(上)

Linux使用ragel进行文本快速解析1、前言2、相关知识2.1、简介2.1.1 Ragel 优势2.1.2 Ragel 特性2.2 状态机(mechine)概念2.3 动作(action)的概念2.4 流程设计3、案例实践3.1 源码分析3.2 编译4、结论参考文章: 1、前言   在项目中我...

2019-04-13 20:36:10

阅读数 53

评论数 0

Linux下使用zlib实现文件压缩解压

Linux下使用zlib实现文件压缩解压1.背景2.思路3.实现3.1 函数入口3.2 压缩文件3.3 解压文件4.运行5.结论 1.背景 上篇文章《Linux下使用zlib实现数据压缩解压》对文本数据进行压缩处理,本文再进行zlib的案例进行学习,这次整理出了文件压缩例子。 2.思路 查看 zl...

2019-04-10 23:57:59

阅读数 168

评论数 0

Linux下使用fuse编写自己的文件系统

一、前言 近几天调研了一下fuse编写文件系统的方法,先尝试拿fuse写一套类似tmpfs的简易文件系统,文件信息都保留在内存中。文件系统需要一个数据结构来管理文件节点 inode,正好《c语言实现map-使用内核红黑树》一文将rbtree结构拿出来了可以用上。 目标:支持文件读写操作:ech...

2018-09-28 12:51:38

阅读数 2145

评论数 0

c语言map的实现-使用内核红黑树

一、前言 内核数据结构中,上次讲了一次内核链表的使用《c语言双向循环链表实现-使用内核链表》,这次再接着讲一下内核中常用的<key,value>结构,红黑树(rbtree)。 二、相关知识 2.1 红黑树特点 红黑树为自平衡二叉查找树,具备了以下...

2018-09-27 17:36:41

阅读数 3946

评论数 0

Linux下快速删除大量小文件的方法探索

一、前言 Linux服务器磁盘中存在大量小文件,需要进行删除(文件小于1K,数量50w~100w),发现rm删除速度奇慢无比,甚至出现“argument list too long”的错误。网上资料一搜索基本都是建议rsync方法,所以本文对几种常见的方法进行试验对比。 二、相关知识 2.1...

2018-09-24 08:36:29

阅读数 1240

评论数 0

Linux下使用ZMQ实践“发布-订阅”模型

一、背景    继续ZMQ系列,本期我们看一下“单生产者-多消费者”的编程场景,使用ZMQ_PUB/ZMQ_SUB实践“发布-订阅”模型二、相关知识2.1 ZMQ_PUBZMQ_PUB A socket of type ZMQ_PUB is used by a publisher to d...

2018-06-24 13:37:50

阅读数 756

评论数 0

Linux下使用protobuf-c实现自定义协议

1、背景需求    通信协议设计,考虑了后续跨语言的支持(如Java、Python、C),需求一种序列化、反序列化的库2、相关知识    Google Protocol BUffer 提供了一种适用于RPC系统、持续数据存储系统的混合语言数据标准,可用于通信协议、数据存储等领域的语言无关、平台无关...

2018-05-12 20:37:36

阅读数 3824

评论数 0

Linux下使用ZMQ实践“请求-响应”异步服务器模型

一、背景    上一篇文章《Linux下使用ZMQ实践“请求-响应”服务器模型》中使用的是REP-REQ套件,该套件的特点是必须一个请求对应一个响应,如果在应用中不想使用同步处理的方式呢?ZMQ有没有提供异步处理的方法?答案是使用DEALER-ROUTER套件。    另外如何在多线程中安全传递消...

2018-03-20 00:23:09

阅读数 698

评论数 0

Linux下使用ZMQ实践“生产者-消费者”模型

一、背景    上一篇文章《Linux下使用ZMQ实践“请求-响应”模型》引入了ZMQ的实践案例,本章继续实践编程模型中常用的“生产者-消费者”模型。二、相关知识    ZMQ_PUSH、ZMQ_PULL模型是单发单收的模型,你只能在ZMQ_PUSH套接字上进行send操作,而不能进行recv,反...

2018-03-17 23:02:51

阅读数 323

评论数 0

Linux下使用ZMQ实践“请求-应答”服务模型

一、背景    在C/S编程模式中,经常需要进行进程间消息传递,常用的模式是“请求-应答”方式,客户端通过发起请求,服务端进行处理再进行回复,如果使用socket去实现,难免还要实现消息的分包、连接状态的维护的功能。    ZMQ(ZeroMQ、0MQ)则是一种高性能的异步消息库,接口风格类似于套...

2018-03-17 21:33:06

阅读数 527

评论数 0

Linux下使用hiredis库实现优先级队列

一、背景需求    需求主要为:    1、优先级分为高、中、低(优先级队列);    2、支持多生产者、多消费者模型(解决竞争);    3、期间进程退出,队列内容不会丢失(持久化);    选型方面考虑了第三方工具,先调研了一下Redis,发现其中LIST数据结构非常适用上诉需求;二、相关知识...

2018-03-03 15:27:50

阅读数 271

评论数 0

Linux下使用zlib实现数据压缩解压

本文举例说明了:项目过程中字符串数据传输的场景下(文件名列表),如何使用数据压缩减少带宽的开销; deflate(RFC1951):一种压缩算法,使用LZ77和哈弗曼进行编码; zlib(RFC1950):一种格式,是对deflate进行了简单的封装,他也是一个实现库(delphi中有zlib,z...

2018-01-29 23:11:50

阅读数 3265

评论数 0

Linux下使用bufferevent实现tcp代理功能

bufferevent是libevent网络库的一套接口,内部实现了对socket的封装,对外提供数据读写接口,支持并发编程的场景; 外部使用接口时仅需考虑业务逻辑的处理,无需在意socket的处理细节;

2017-12-10 21:15:26

阅读数 478

评论数 0

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