- 博客(26)
- 资源 (5)
- 收藏
- 关注

原创 zeromq源代码分析6-3------ROUTER和DEALER
zeromq的zero表明它木有broker,但是并不代表着他不能有broker,而是作为device选项,使用ROUTER socket和DEALER socket就可以模拟一个简单broker。可以从tutorial中看到模拟的代码://// Simple request
2011-07-24 23:52:46
18124
1

原创 zeromq源代码分析6-2------REQ和REP
本文我们讲一下req和rep这对zeromq的socket。这是一个经典的Request-Reply的例子。
2011-07-22 17:19:03
11804
1

原创 zeromq源代码分析6-1------zeromq各种类型的socket之socket_base
我们在zeromq源代码分析6中分析zeromq所有类型的socket,主要集中分析send和recv函数。今天我们先分析一下所有socket中base class------socket_base:先看send(2)函数:int zmq::socket_base_t::send
2011-07-22 16:31:43
9487

原创 zeromq源代码分析5-3------管道相关的数据结构yqueue, ypipe, pipe等
这篇文章我们讲一下pipe, 从前面的博文中你了解了zeromq数据读写是异步的,主要与管道交互。先说一下pipe的基本功能吧:1. 流量控制: 有一个HWM(最高水位), LWM(最低水位)和active标志。2. 通过发送终结符类型的消息来销毁管道。3. swap模式。一个
2011-07-21 17:35:58
6504

原创 zeromq源代码分析5-2------管道相关的数据结构yqueue, ypipe, pipe等
本文我们来讲一下ypipe的实现。其实ypipe就是上一篇文章中提到的yqueue的一个为lock-free的封装加强实现。ypipe主要有写入write(), 读取read(), flush()的功能。当一个元素被写入管道的时候,如果不调用flush()函数,那么是不能从该管道
2011-07-21 15:35:09
8972

原创 zeromq源代码分析5-1------管道相关的数据结构yqueue, ypipe, pipe等
本文主要分析管道相关的数据结构yqueue, ypipe, pipe等。我们一个个来分析,先看yqueue:yqueue是一个高效的队列实现。它主要通过批量的分配/释放数据元素来减少分配/释放的次数来提高效率。而所谓的批量分配的数据结构称之为chunk_t: // Indivi
2011-07-21 12:22:16
7208

原创 zeromq源代码分析4------encoder,decoder,multipart_message
decoder_base中的:unsigned char *read_pos; // 从缓冲区读出的内存区域位置,指向in_progress的数据区域或者tmpbuf size_t to_read; // 从缓冲区读出的大小 step_t ne
2011-07-20 21:12:47
7512

原创 zeromq源代码分析3------zeromq中的消息
本文主要讲zeromq的消息体系zmq_msg_t及其相关的操作函数。因为tcp是一种字节流类型的协议,木有边界,所以把该消息边界的制定留给了应用层。通常有两种方式实现:1. 在传输的数据中添加分隔符。2. 在每条消息中添加size字段。而zeromq可以说选择了第二种方式。先来
2011-07-20 14:10:14
13778
4
原创 谈谈最近的工作、爱好和想法
这两年从有赞出来后专心搞 OLAP,从大应到 SelectDB 搞 Doris,也算是入门 OLAP 数据库内核这个领域了,接下去也会继续深耕这一块。首先还是感恩下一路走过来遇到的人和事,虽然也有很多不如意的,但是终归是自己的选择,结果还算是心满意足的。这两年慢慢做人确实心态最重要,能够真诚地调节到自己舒适的心态就是一种成功,至少是对自身而言。
2023-03-26 13:51:50
687
原创 数据库实现原理学习顺序 (持续更新)
一. 数据库内核杂谈顾仲贤: 数据库内核杂谈二. CMU 15-455Andy Pavlo 数据库实现课程。因为我主要研究 OLAP,所以目前暂时跳过了索引,buffer-pool,事务等章节(没有深入,大概看看)课程相关论文,资料Andy Pavlo: 中英文字幕视频Moody 老师: 中文讲解版本三. CMU 15-721Andy Pavlo 数据库实现高级课程,很多 PPT 的内容出自很多论文,可以先下载 课程相关论文,资料。因为我主要研究 OLAP,所以目前暂时跳过了索引,b
2022-01-03 21:15:48
1376
原创 数据库 Selection Scan 学习笔记
一. SIMD 的 store/ load 指令1.1 selective store将 vector lane(simd 寄存器) 的一部分(根据 mask)写入连续内存4.4 其它一.官方Parquet 编码文档更详细的可以直接看原文。本文只是一些个人的理解和学习笔记。parquet-format/Encodings.md at master · apache/parquet-format · Gi...
2021-12-18 22:11:15
1885
原创 Parquet 嵌套学习笔记
目录一. parquet 嵌套列表示二.Definition levels && Repetition levels2.1定义:2.2例子:2.3生成具有 repetition levels 和 definition levels 的 column strips。三. 参考:一. parquet 嵌套列表示为了编码嵌套列,parquet 使用 group, repeated 来表示一个类似于 struct 和 list 的概念。比如这个 Doc...
2021-12-18 21:46:07
1302
1
原创 LakeHouse 简单总结
目前企业的大数据生态以及痛点:数据湖: 以原生格式存储各种大型原始数据集,其中包含结构化,半结构化,非结构化数据。面向数据科学家和分析师,AdHoc 探索型的灵活查询方式。这种方式会要求在原始数据上进行最灵活的查询,性能实际要求往往没有那么高。(虽然对用户来说,肯定是越快越好。)数据仓库: 会使用 ETL 技术,对表进行转换处理加工,Join,指标计算等,形成多个层次的结构化数据或者指标。面向终端用户,有一定模式的查询方式。其中指标能够加速查询,相当于预计算,使得最终查询转换成 KV 直接查询或者上卷查
2021-12-05 12:04:48
688
原创 一些感悟
真正有才能的人一定是脚踏实地,有工匠精神,同时又敢于突破,不拘泥于自己世界的人。真正NB的人是一个历尽千帆归来仍是少年。真正伟大的人是他拥有了我们平常人看来的一切物质的情况下,仍能保持那份初心的人。真正善良的人是能够设身处地为站在对方的角度去思考,去理解尊重每一个人。每个人出身,环境,被社会所接受的能力都不同。真正有意义的沟通不是华山论剑,各秀各的,而是各抒己见,互相之间又能够理解对方,共同努力,解决问题。我本认为这些都是这个世界的基本常识,但是无奈的是这个世界有时候身不由己,人无完人,更可怕的是还
2021-01-16 14:11:15
5304
16
原创 zeromq一直困扰我的问题和自我反省
今天去zeromq的maillist发信问了两个一直困扰我几天的问题了,结果迅速收到回复,立即想明白了,大牛还是很多的,看来以后自己要把代码再吃得透点,不明白的地方及时问大牛,能节省很多时间:1. zeromq的多个I/O线程之间没有使用同步机制,会不会产生问题?我本来
2011-08-01 23:03:25
39579
2
原创 asio reactor模拟Proactor代码分析笔记
今天看了ASIO的介绍,不太明白asio在POSIX上如何用reactor模拟proactor。所以稍微看了下源代码,此文当作笔记。ASIO Proactor: Proactor design pattern (adapted from [POSA2])
2011-07-25 22:30:56
6647
原创 lwIP源代码分析1-------内存管理模块的分析
memp.c动态内存池管理器, lwip拥有各种不同的内存池来为各个模块的小对象分配内存。一个内存池主要有name,description,number(内存池里的内存节点的数目)和size(内存池里的内存节点的大小)内存节点的struct描述:struct memp { struct memp *next; // 指向下一个内存节点的指针#if MEMP_OVERFLOW_CHECK // 如果进行内存溢出检测, const char *file; // 发生溢出时调用函数的文件名
2011-02-21 21:13:00
17222
1
原创 Ice源码分析笔记1--IceUtils
Ice是Zero C的一个分布式框架, 利用corba的思想,加强和改善了corba。本系列文章主要通过本人对其源码的分析来讲述Ice的工作原理。Ice主要包括以下几个部分: Ice: Ice核心模块 IceUtils: Utils工具模块 IceGrid: Ice节点模块 。。。Ice是利用自己定义的中间语言然后编译成各种常用语言的网络操作方法,然后调用各自语言下层的模块来进行工作的,在这里我主要是以c++代码来学习的。本文主要讲述IceUtils的各个工具类。1. Shared.h Shared
2010-11-16 09:13:00
6731
2
原创 ubuntu fceux成功运行吞食天地2中文版。
最近看linux kernel的源码看到天天做梦梦到代码,于是周日想放松一下,玩会游戏,无奈360已坏,还是逃不过三红的魔爪。PS2实在太画面不能忍,于是倒怀恋起FC的游戏来,最想玩的当然是吞食天地2中文版阿。于是在ubuntu上装了个FCEUX,结果竟然玩不来这个经典的游戏。于是怒了,开始研究fceux源码,又打开台式机的xp分析virtualNes的源码。还查了很多相关资料
2010-05-25 21:15:00
8029
5
原创 iphone开发环境研究
关于iphone开发一. 版本问题iphone目前最新的版本是3.1.2, 但是并不是所有软件都支持这个版本, 这个上面牵涉到破解问题, 所以确定一个版本很重要, 当然只要没用什么新的api, 版本之间的移植也是很容易.二. 官方sdk和开源工具链iPhone有两层不同的框架,分别是底层API和iPhone SDK. 底层API就是我们在iPhone
2010-01-16 01:16:00
4793
1
转载 [转贴]linux下代码阅读 -- 配置vim+ctags+taglist+cscope
本帖转自: http://hi.baidu.com/wstone_h/blog/item/5916a4a910206dfb1e17a207.html009年01月14日 星期三 13:07参考文献1:http://www.lupaworld.com/home/space-131820-do-blog-id-118756.html参考文献2:http://liupi
2009-12-30 20:42:00
2903
原创 libjingle学习笔记(2)--Thread MessageQueue SocketServer...
一. Thread类是libjingle中比较核心的类。 我把他的功能主要分为三块: 1. Thread相关函数: 主要是对不同操作系统Thread的统一接口包装。 其中包括了Start(), Stop(), Join()等线程控制函数, 也包括了优先级控制相关的函数, 还有一个定位查找的功能。关于定位查找的功能主要是由ThreadManager控制的, ThreadManager类主要
2009-11-16 15:39:00
6708
原创 libjingle学习笔记(1)--从Login example开始
libjingle是gtalk客户端所使用的基础库,主要分为以下几个模块:base // 一些网络方面的基础库的封装xmllite // 因为xmpp协议的内容是以xml为基础的,所以这个模块是对xml解析库(expat)的一些封装xmpp // xmpp协议的实现p2p // p2p的实现,包括一些nat和firewall穿越的技术session // gtalk对于声音和文
2009-11-13 16:09:00
8707
2
zthread patch
2011-08-22
zeromq performance test using shared message method 2
2011-08-02
zeromq performance test using shared message method 1
2011-08-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人