工具
文章平均质量分 57
SeaTalks
别太放肆,保持低调
展开
-
Bazel 创建repository_rule
Bazel的repository_rule一直使用Bazel内建的repository (git_repository, http_archive, etc),但实际上bazel提供了自定义的repository_rule给我们自定义repository的rule,以提高我们定义库的方式。一个例子假如在一个远端git上有一个c++的库A,它是一个预编译过的库。也就是说它包含一个lib目录,里面有.a和.so文件,但是在这个库A的BUILD文件里,它是这么写的:cc_library(原创 2022-03-24 14:31:51 · 895 阅读 · 0 评论 -
线程安全lock-free对象池
对象池对象池(object pool pattern)是一种设计模式。维基百科的解释:Theobject pool patternuses a set of initializedobjectskept ready to use – a "pool" – rather than allocating and destroying them on demand. 对象池的思想是准备好一堆初始化/实例化好的对象,等到使用的时候直接从“池子”里获取一个,从而避免对象的构造与初始化时间。使用对象池的...原创 2021-08-23 11:26:57 · 645 阅读 · 0 评论 -
简单的JsonParser(Java)
用以测试时写的小工具,以备忘。代码in java8import java.util.ArrayList;import java.util.HashMap;import java.util.Map;public class JsonParser { static char bracesOpen = '{'; static char bracesClose = '}'; static char bracketOpen = '['; static char .原创 2021-08-12 09:07:08 · 1203 阅读 · 0 评论 -
一个简单的Json生成工具(c++)
自定义数据结构想转成Json string输出,又不想引入rapidJson,就自己实现一个吧。Caveats (TODO)目前不支持数字类型的value 只提供ToString()方法,具生成的json string没有格式化 接口提供不太友好,使用繁琐代码in c++11#include <algorithm>#include <iostream>#include <list>#include <memory>#includ原创 2021-08-12 08:53:53 · 1007 阅读 · 0 评论 -
C++实现的Base64编码与解码
最近工作需要将二进制保存到hive里,但是很不幸,hive不支持bit字节流的存储,尤其是不定长的字节流。怎么办呢?我们的解决方案是将二进制转成可见的字符再存储字符串。于是使用Base64进行编码。在Java中使用Base64是十分方便的,因为java8自带base64的工具包。但是我们的字节流dump过程是在c++里实现的,而c++的stl中是不会有这个东西的。怎么办?还好我们有boost,但是boost是一个比较庞大复杂的东西,对于我们这个简单的功能实在是大材小用。我不太想引入这个。于是自己造轮子吧。原创 2021-08-11 11:04:51 · 1444 阅读 · 0 评论