Simple Binary Encoding

金融系统通过发送大量不同格式的消息进行通信。当人们使用类似“巨量的”这一类术语时,我正常会想 “真的..是多少?” 因此,让我们为金融行业量化“巨大”。……

阅读全文

git 源码学习

Preface 最近趁上一个工作任务刚结束,新的任务还在规划中,难得清闲几天,可以抽点时间来看下 Linus 大神在2005年写的 git,为了简单,理解git 的原理,我们可以 checkout 刚开始的版本 比如hash为 79517a067。 这个版本总代码量只有1491 行。 Compile 依赖包:libssl-dev、zlib 修改编译选项:Makefile中LIBS 增加 -lcrypto 编译完之后会生成可执行文件: update-cache show-diff init-db write-tree read-tree commit-tree cat-file fsck-cache checkout-cache Analysis 1 init-db 初始化工作目录: 在当前路径下创建目录, .dircache └── objects ├── 00 ├── 01 ├── ...(255 dirs) ├── fe └── ff 2 update-cache……

阅读全文

what do you want?

1 你真正想要的是什么?这个问题一直在我身边,挥之不去,甚至在你做一些决策时,还挡在你面前,寸步难行。 摩西奶奶 说:人生只有一次,去做自己喜欢的事。……

阅读全文

Reflection in protobuf (C++/Java)

最近工作中,需要做一些消息动态解析,因为使用的 protobuf,考虑使用protobuf的反射特性。 1 reflection in C++ 在c++中使用protobuf 反射 1 2 3 4 5 6 7 8 9 10 11 package com.sunquan; message Login { optional int64 userid = 1; optional string username = 2; // name optional string password = 3; // passwd optional string email = 4; optional string nickname = 5; // etc ... } C++和Java 不同的是: c++有一个全局的pool,管理了所有定义在 proto 文件里的消息原型, 我们可以通过消息全称,查找到对应的单例的消息原型,然后通过原型构造可变的消息。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /** * 通过消息名称, 获取构造该类型的默认(原型)。 然后你可以……

阅读全文

异步编程之 CPS

1 Preface 后继传递风格(continuation-passing style CPS wiki) 具体解释请阅读wiki。 CPS 最初在1970年代作为一种编程风格出现,主要用于函数式编程; 在1980年代到1990年代期间,其作为高级编程语言的编译器的一种中间表达形式开始崭露头角。 现在,CPS作为非阻塞系统(通常是分布式)的一种编程风格被再次发掘出来。 1.1 CPS in Haskell 我们使用Haskell 实现勾股定理(Pythagorean theorem) 计算斜边的长度。 传统的实现如下: 1 2 3 4 5 6 7 8 square :: Double -> Double square x = x * x add :: Double -> Double -> Double add x y = x + y pythagorean :: Double -> Double -> Double pythagorean x y……

阅读全文

C++ RAII

什么是RAII ? RAII即“Resource Acquisition Is Initialization”,也称为“资源获取即初始化”。是C++语言的一种管理资源、避免泄漏的惯用法。利用的就是C++构造的对象最终会被销毁的原则。 RAII的做法是使用一个对象,在其构造时获取对应的资源,在对象生命期内控制对资源的访问,使之始终保持有效,最后在对象析构的时候,释放构造时获取的资源。……

阅读全文

2018 年会-Plan

plan 1 如果你是CEO或 CTO, 2018你想做什么? 说出你有创意的idea, 可以异想天开。 平行世界,未来已来。 区块链,比特币 1 我们现在在做的 ems2.0 Al 日常运维。 正准备做的 ems3.0 seastar dpdk coroutine… 我想做 : 理财平台 智能投顾 大数据 语言的技巧很重要,很多时候用言语表达出来的都是浅薄的,很多时候说的多反而起不到好的效果。 通过这一次年会,我也发现了一些我不喜欢的……

阅读全文

2018年会

2018-03-09 记于十三陵 1 如果你是CEO或 CTO, 2018你想做什么? 说出你有创意的idea, 可以异想天开。 平行世界,未来已来。 区块链,比特币 1 我们现在在做的 ems2.0 Al 日常运维。 正准备做的 ems3.0 seastar dpdk coroutine… 我想做 : 理财平台 智能投顾 大数据 语言的技巧很重要,很多时候用言语表达出来的都是浅薄的,很多时候说的多反而起不到好的效果。 通过这一次年会,我也发现了一些我不喜欢的。……

阅读全文

公司的成长史

preface 最近Boss 开了例会,谈了下公司的发展史。听着挺有意思,于是决定记录下来。……

阅读全文

Seastar 入门

1 what is Seastar 这篇文章将介绍一下 Seastar : 一个在现在多核机器上编写高效复杂的服务器应用程序的 C++ 库。 有些框架非常高效,但只允许构建简单的应用程序(eg: DPDK 允许单独处理数据包的应用程序), 而其他框架则允许构建极其复杂的应用程序,代价是运行时效率。Seastar 是我们尝试获得两全其美的方法:创建一个允许构建高度复杂的服务器应用程序并实现最佳性能的库。 2 起源 Seastar 的灵感和首例使用案例是ScyllaDB,重写了Apache Cassandra,Cassandra 是一个分厂复杂的应用,同时通过 Seastar,我们能够重新实现……

阅读全文

最近文章

分类

友情链接

标签

其它