OWenT's blog
  • Introduction
  • About Me
  • 2020
    • 近期对libatapp的一些优化调整(增加服务发现和连接管理,支持yaml等)
    • xresloader转表工具链增加了一些新功能(map,oneof支持,输出矩阵,基于模板引擎的加载代码生成等)
    • 在游戏服务器中使用分布式事务
    • libcopp接入C++20 Coroutine和一些过渡期的设计
    • libatbus 的大幅优化
    • nftables初体验
    • 容器配置开发环境小计
  • 2019
    • PALM Tree - 适合多核并发架构的B+树 - 论文阅读小记
    • 跨平台协程库 - libcopp 简介
    • C++20 Coroutine 性能测试 (附带和libcopp/libco/libgo/goroutine/linux ucontext对比)
    • 尝鲜Github Action
    • 一些xresloader(转表工具)的改进
    • protobuf、flatbuffer、msgpack 针对小数据包的简单对比
    • 协程框架(libcopp) 小幅优化
    • Excel转表工具(xresloader) 增加protobuf插件功能和集成 UnrealEngine 支持
    • Anna(支持任意扩展和超高性能的KV数据库系统)阅读笔记
    • C++20 Coroutine
    • libcopp merge boost.context 1.69.0
    • Google去中心化分布式系统论文三件套(Percolator、Spanner、F1)读后感
    • Rust玩具-企业微信机器人通用服务
  • 2018
    • 使用ELK辅助监控开发测试环境服务质量和问题定位
    • Webpack+vue+boostrap+ejs构建Web版GM工具
    • 2018年的新通用伪随机数算法(xoshiro / xoroshiro)的C++(head only)实现
    • Rust的第二次接触-写个小服务器程序
    • 理解和适配AEAD加密套件
    • atsf4g-co的进化:协程框架v2、对象路由系统和一些其他细节优化
    • 协程框架(libcopp)v2优化、自适应栈池和同类库的Benchmark对比
    • 可执行文件压缩
    • 初识Rust
    • 使用restructedtext编写xresloader文档
    • atframework的etcd模块化重构
    • C++的backtrace
  • 2017
    • ECDH椭圆双曲线(比DH快10倍的密钥交换)算法简介和封装
    • protobuf-net的动态Message实现
    • pbc的proto3接入
    • atgateway内置协议流程优化-加密、算法协商和ECDH
    • 整理一波软件源镜像同步工具+DevOps工具
    • Blog切换到Hugo
    • libcopp v2的第一波优化完成
    • libcopp(v2) vs goroutine性能测试
    • libcopp的线程安全、栈池和merge boost.context 1.64.0
    • GCC 7和LLVM+Clang+libc++abi 4.0的构建脚本
    • libatbus的几个藏得很深的bug
    • 用cmake交叉编译到iOS和Android
    • 开源项目得一些小维护
    • atapp的c binding和c#适配
    • 对象路由系统设计
    • 2016年总结
    • 近期的一个协程流程BUG
  • 2016
    • 重写了llvm+clang+libc++和libc++abi的构建脚本
    • atsf4g完整游戏工程示例
    • atframework基本框架已经完成
    • 游戏服务器的不停服更新
    • 对atbus的小数据包的优化
    • Android和IOS的TLS问题
    • pbc的一个陈年老BUG
    • boost.context-1.61版本的设计模型变化
    • 接入letsencrypt+全面启用HTTP/2
    • 理解Raft算法
    • libatbus基本功能及单元测试终于写完啦
    • 博客文章和文档迁移到gitbook
  • 2015
    • 博客文章和文档迁移到gitbook
    • 给客户端写得LRU缓存
    • 近期活动比较零散
    • 关于BUS通信系统的一些思考(三)
    • 针对Java JIT的优化(转表工具:xresloader)
    • libcopp更新 (merge boost 1.59 context)
    • 小记最近踩得两个C++坑
    • Redis全异步(HA)Driver设计稿
    • Vim常用命令
    • 关于firewalld和systemd的一些命令速记
    • Jenkins(hudson)插件记录
    • 我们的Lua类绑定机制
    • LLVM+Clang+Libcxx+Libcxxabi(3.6)工具链编译(完成自举编译)
    • 回顾2014
    • Android NDK undefined reference to ___tls_get_addr 错误
    • gitlab腾讯企业邮箱配置
  • 2014
    • 回顾2013
    • C++11动态模板参数和type_traits
    • C++又一坑:动态链接库中的全局变量
    • tolua++内存释放坑
    • [转]类似github的框架
    • Lua性能分析
    • 集成Qt Webkit 到cocos2d-x
    • Gitlab环境搭建小计
    • 近期研究VPN的一些记录(OpenVPN,pptp,l2tp)
    • LLVM + Clang + Libcxx + Libcxxabi 工具链编译
    • 关于BUS通信系统的一些思考(二)
    • 关于BUS通信系统的一些思考(一)
    • [libiniloader] Project
    • 记录一些在线编辑器
    • [WP Code Highlight.js] Project
    • 再议 C++ 11 Lambda表达式
    • 基于Chrome插件的开发工具链
    • [ACM] HDU 1006 解题报告
    • Linux 编译安装 GCC 4.9
    • 又碰到了这个解谜游戏,顺带记下地址
    • 简单C++单元测试框架(支持一键切到GTest或Boost.Test)
    • 捣鼓一个协程库
  • 2013
    • std和boost的function与bind实现剖析
    • 不知道是哪一年的腾讯马拉松题目 照片评级 解题报告
    • Lua 挺好用的样子
    • VC和GCC成员函数指针实现的研究(三)
    • VC和GCC成员函数指针实现的研究(二)
    • VC和GCC内成员函数指针实现的研究(一)
    • 一个C++关于成员变量偏移地址的小Trick
    • ptmalloc,tcmalloc和jemalloc内存分配策略研究
    • POJ 2192 Zipper HDU 2059 龟兔赛跑
    • 从Javascript到Typescript到Node.js
    • 网络编程小结
    • 试试Boost.Asio
    • Lnmp yum 安装脚本 (for CentOS)
    • ARM 交叉编译环境搭建
    • Linux 编译安装 GCC 4.8
    • [记录]虚拟硬盘的压缩|磁盘写零
  • 2012
    • Boost.Spirit 初体验
    • “C++的90个坑”-阅读笔记
    • AC自动机
    • C++ 标准过渡期
    • 程序员修炼之道 -- 阅读笔记
    • [转载]狼与哈士奇
    • C++ 新特性学习(八) — 原子操作和多线程库[多工内存模型]
    • C++ 新特性学习(七) — 右值引用
    • 理解Protobuf的数据编码规则
    • 忆往昔ECUST的ACM时代
    • Linux编译安装GCC 4.7
    • JSON显示库 -- showJson (Javascript)
    • C++ 新特性学习(六) — 新的字符串编码和伪随机数
    • C++ 新特性学习(五) — 引用包装、元编程的类型属性和计算函数对象返回类型
    • C++ 新特性学习(四) — Bind和Function
  • 2011
    • C++ 新特性学习(三) — Regex库
    • C++ 新特性学习(二) -- Array、Tuple和Hash库
    • C++ 新特性学习(一) -- 概述+智能指针(smart_ptr)
    • Linux 和 Windows PowerShell 常用工具/命令 记录
    • 非常帅气的Linq to sql
    • 2011 Google Code Jam 小记
    • C++总是很神奇
    • 大学生创新项目[国家级]经费使用记录
    • 常用官方文档整理
    • 我们学校的IPV6很不错嘛
  • 2010
    • 线段树相关问题 (引用 PKU POJ题目) 整理
    • 2010 ACM 赛前笔记
    • POJ PKU 2596 Dice Stacking 解题报告
    • POJ PKU 3631 Cuckoo Hashing 解题报告
    • POJ PKU 1065 Wooden Sticks 3636 Nested Dolls 解题报告
    • HDU 3336 Count the string 解题报告
    • Hash模板 个人模板
    • ZOJ 3309 Search New Posts 解题报告
    • POJ PKU Let's Go to the Movies 解题报告
    • 注册表常用键值意义
    • PKU POJ 1724 ROADS 解题报告
    • 《神奇古今秘方集锦》&《民间秘术大全》
    • PKU POJ 1720 SQUARES 解题报告
    • POJ PKU 2155 Matrix 解题报告
    • PKU POJ 1141 Brackets Sequence 解题报告
    • PKU POJ 2728 Desert King 解题报告
    • PKU POJ 2976 Dropping tests 解题报告
    • PKU POJ 3757 Simple Distributed storage system 解题报告
    • GCD Determinant 解题报告
    • Southeastern European 2008 Sky Code 解题报告
    • HDU HDOJ 3400 Line belt 解题报告
    • 线性筛法求质数(素数)表 及其原理
    • HDU HDOJ 3398 String 解题报告
    • 树状数组模块(个人模板)
    • 浙江理工 省赛总结 team62 By OWenT of Coeus
    • POJ PKU 3659 Cell Phone Network 解题报告
    • USACO 2008 March Gold Cow Jogging 解题报告
    • C#格式化输出(记录)
    • 参加有道难题笔记
    • POJ PKU 2446 Chessboard 解题报告
    • POJ PKU 1986 Distance Queries 解题报告
    • 计算几何算法概览[转载]
    • 关于差分约束(转载)
    • POJ PKU 2826 An Easy Problem?! 解题报告
    • 数论模板(个人模板)
    • 简易四则运算(ACM个人模板)
    • Catalan 数
    • The 35th ACM/ICPC Asia Regional Tianjin Site —— Online Contest 1009 Convex 解题报告
    • JQuery扩展插件--提示信息
    • ACM 计算几何 个人模板
    • 解析网站字符串型参数 Javascript QueryString 操作 TQueryString类
    • POJ PKU 1474 Video Surveillance 解题报告
  • 2009
    • 模式匹配(kmp)个人模板
    • 并查集 模板
    • POJ 3267 The Cow Lexicon 解题报告
    • C/C++语言常用排序算法
    • POJ 2606 Rabbit hunt 2780 Linearity 1118 Lining Up 解题报告
    • 打造最快的Hash表(转) [以暴雪的游戏的Hash为例]
    • ECUST 09年 校赛个人赛第六,七场总结
    • ECUST 09年 校赛个人赛第三场部分解题报告(A,D,F,I)
    • 牛顿迭代解方程 ax^3+bX^2+cx+d=0
    • 09年8月9日 ECUST ACM 练习赛总结
    • 连接最多点直线 (OWenT 个人模板)
    • 点到直线距离 和 线段间最短距离 (OWenT 模板)
    • ECUST 09年 校赛个人训练赛第五场总结
    • ECUST 09年 校赛个人赛第八场(最后一场)总结
    • 09年8月14日 ECUST ACM 练习赛总结
    • 矩阵相关 (增强中)
    • Prime最小生成树(个人模板)
    • 最长单调子序列 复杂度nlog(n)
    • POJ PKU 2549 Sumsets 解题报告
    • POJ PKU 3277 City Horizon 解题报告
    • 我的ACM生涯
    • POJ PKU 2528 Mayor's posters 解题报告
    • POJ PKU 2378 Tree Cutting 解题报告
    • POJ PKU 1990 MooFest 解题报告
Powered by GitBook
On this page
  • Native Code 型语言
  • C/C++
  • 脚本 & 托管语言
  • Lua
  • Javascript
  • PHP
  • 工具及其他
  • 新增的开源项目
  • 2014年的规划完成情况
  • 总结
  • 2015年的规划

Was this helpful?

  1. 2015

回顾2014

PreviousLLVM+Clang+Libcxx+Libcxxabi(3.6)工具链编译(完成自举编译)NextAndroid NDK undefined reference to ___tls_get_addr 错误

Last updated 6 years ago

Was this helpful?

例行回顾一下2014年学习和看到的技术、思路、方案总结:

Native Code 型语言

C/C++

  • – 目前最上流C++设计模式就是模板,各种逆天的用法。这个只是冰山一角,也算是个敲门砖

  • – 无论是Boost.Test还是GTest都过于复杂。而且跨平台方面比较有问题,于是就搞了个自己的单元测试框架。然而为了让一些平台下能利用到GTest和Boost.Test里的一些有用的特性,就在设计之初就做了一些适配层,这样可以很容易地切换到GTest或者Boost.Test。

  • – 协程还是蛮上流的,参照微信libco库和微软Task系统的API而写出来的一个协程任务系统。基本功能已经完成。

  • – 稍微深入C++11的lambda表达式和遇到的问题。

  • – 同样是由于现有的ini读取库都过于复杂,而且我这里ini读取主要用于游戏配置,希望接口简单,并且支持像PHP里那种层次关系。所以就有了这个玩意。自己用状态机简单实现的词法分析,并使用模板实现导出数据,还做了对象conf文件用#来注释的支持。最重要的是,所有的实现只有两个文件(一个.cpp和一个.h)。

  • 、 – 主要是堆现有我接触到的一些通信系统的一个小总结,然后试着设计一个能解决一些问题的设想。具体实现仍在缓慢实现过程中。目前比较让自己满意的部分是性能测试和稳定性测试。

  • – 由于项目工具需要,了解了一下Qt。Qt的设计还是比较有意思的。

  • – 写跨平台代码过程中碰到的android的一个奇怪的链接问题而引发的一些小研究。不用不知道,一用吓一跳。

脚本 & 托管语言

Lua

  • – 做这个得原因是lua profile不支持lua5.2。其他好用的工具都不免费。干脆就自己搞个性能分析工具,比较开心的是被拿去改装啦

  • – tolua++的坑真不少,已经发现的已经两个了,没发现的还不知道,所以为了保险起见,自己写了个lua函数绑定机制。等新的机制趋于成熟了再发分享出来

Javascript

PHP

工具及其他

新增的开源项目

2014年的规划完成情况

  • [已完成] 第一是学习下Python,这玩意现在很火,有空得研究下;(目前挺多工具用python写得,但是都是小工具,不成体系所以并没有发布)

  • [已完成] 第二是看看Java的垃圾回收的一些实现,看看能不能用在C++里(java实现在语言层,算法比较多且复杂,c++的话暂时还没想到什么好办法移植)

  • [部分] 第三是继续看一些底层的技术书籍,比如TCP/IP详解等等(这本书没看,其他的倒是不少)

  • [已完成] 第四是基本完成协程框架(功能基本完成)

总结

其实还是有很多平常研究的小东西应为时间原因并没有记上来,比如学习python之余大体看了一下hadoop和spark怎么用,并且试着用python+spark写了个日志分析的工具。

研究vpn的时候顺便把家里的路由器玩了一番。刷了几种开源系统,架设自动翻墙代理,甚至刷坏系统以后,淘宝买了个TTL模块焊接到路由器上,有点玩硬件的感觉。但实际上我也没深入研究,没有交叉编译系统或者软件,都是用得别人弄好的现成的东西。

其他的项目纯粹是项目中碰到一个工具需求,那么写一个工具,这种模式,所以2014年的新开项目比较多。比较开心的是有人开始给我开源的项目推送request啦。

2015年的规划

  1. 整理出通用的cmake模块

  2. 完善并整理出通用的lua模块和目前用的lua绑定机制

其他的肯定有挺多零碎的,等2016年的总结吧。

– 之前在腾讯的时候,跨部门沟通效率太低,所以干脆自己写浏览器插件来做一些自动化和多个工具集成方面的工作。于是研究了一下浏览器插件的编写,实际上后来还研究了Firefox的,总结发到腾讯KM里但是忘记转发一份到blog了。现在离职了拿不到,过两天找人问问看能不能拿回来。

– 迁移blog写作工具的产物,集成highlight.js用得,并且已发布到wordpress的plugin里

– 以前遇到的解谜游戏的地址

– gcc 4.9已发布,在4.8的基础上新增优化了很多功能

– 这是转向使用markdown写作的开始

– 这是主流编译器构建的一个补充,clang的编译系统做的远不如gnu的。编译起来困难重重。

– 研究的VPN搭建流程,主要是作为软件开发。不翻墙没法活啊。工具、很多优秀的开源项目都搞不到

、 – 开始主要版本控制系统转向git的开始

[已完成] 第五是重拾Java,使用Java制作小工具而不是C++,以达到更好地跨平台特性( 这货就是我一直想做没时间做,现在终于做出来的东东,java编写。跨平台,至少我自己这里Linux和Windows下都在用)

总的来说,2014年感觉看得东西都更加深入一些,量少一些。今年没看多少书,大致浏览了下《C++ Primer 第五版》,精读了《深度探索C++对象模型 》,第一遍过了一下《Unix环境高级编程》这本书看一遍果断是不能完全理解的,我看完第一遍的感觉最模糊的地方是终端控制那一块。还有看了一点点的《Linux内核设计艺术》果然如所说,看起来没什么意思,有点教科书的感觉。其他的零零散散的也没什么意思的书也有,比如一个讲类似libevent的事件框架的,一个讲框架的,等等。目前正在抽时间精读《程序员的自我修养—链接、装载与库》,这确实算是国人写得不多得的好书哇。

今年在项目大量使用以后,我也开始编写一些的通用模块,但是现在还没有搞得很成熟,所以也暂时没分享出来。

其实c++方面,之前搞的时候想研究下是怎么做动态栈的,然后加一个最大动态栈限制、然后让老的版本使用的时候也能使用动态栈,甚至vc也能用。逐步看了些源码之后发现和abi有关,挺复杂的就作罢了。

web方面我开始用来写作,主要是找到几个不错的工具,同时向我介绍了,我试了一下发现虽然功能很强大,但是过于复杂了,像我这种写blog又不是写书的,用起来还是不方便。所以最终还是转向,然后wordpress使用代码高亮没有太好的方案,于是 项目就诞生了。但是我以前写的文章都是用来高亮的,我又很懒不愿写工具转已发布的文章内容,所以做了对和的兼容。

是之前一直想做的转表工具,应为之前在公司用得转表工具配置好复杂,并且命令行版本很不好用,GUI版本一般般,还有很多很烦的编码问题,还拿不到源码。所以干脆重写一个。为了跨平台使用了java,效果不错。感觉性能一般,但是关键是跨平台而且开源哇。而且做了c++、lua、和pbc版本的读取器。还是比较爽的,有源码要拓展也是比较简单的。

完善高性能的异步通信框架

《C++11动态模板参数和type_traits》
《简单C++单元测试框架(支持一键切到GTest或Boost.Test)》
《捣鼓一个协程库》
《再议 C++ 11 Lambda表达式》
《[libiniloader] Project》
《关于BUS通信系统的一些思考(一)》
《关于BUS通信系统的一些思考(二)》
《集成Qt Webkit 到cocos2d-x》
《Android NDK undefined reference to ___tls_get_addr 错误》
《Lua性能分析》
gaccob
《tolua++内存释放坑》
《基于Chrome插件的开发工具链》
《[WP Code Highlight.js] Project》
《又碰到了这个解谜游戏,顺带记下地址》
《Linux 编译安装 GCC 4.9》
《记录一些在线编辑器》
《LLVM + Clang + Libcxx + Libcxxabi 工具链编译》
《近期研究VPN的一些记录(OpenVPN,pptp,l2tp)》
《Gitlab环境搭建小计》
《gitlab腾讯企业邮箱配置》
WP Code Highlight.js
libatbus
xresloader
libiniloader
client-debuger
xresloader
gaccob
libuv
cmake
cmake
libcopp
gcc
gcc
libcopp
markdown
gaccob
latex
markdown
markdown
WP Code Highlight.js
SyntaxHighlighter
SyntaxHighlighter
prettify
xresloader
libatbus