自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (29)
  • 收藏
  • 关注

原创 What‘s new in PikiwiDB(Pika) v3.5.3(正式版)

随着 Redis 宣布采用双协议以维护其商业利益,PikiwiDB(Pika) 社区非常荣幸地宣布之际,我们的最新 v3.5.3 正式生产可用版本现已发布。v3.5.3 版本不仅修复了长期存在的 Bug,还引入了一系列新特性。这些新特性包括 Pika 对 ACL 的支持、移除了 Sharing 模式的残留 Slot 代码、命令执行的快慢分离、Redis Stream 支持、大 key 分析工具、以及 Pika 分布式集群的全自动化 failover 等。

2024-03-28 14:12:27 1442

原创 What‘s new in PikiwiDB (Pika) v3.5.3 (正式版)

随着 Redis 宣布采用双协议以维护其商业利益,PikiwiDB (Pika) 社区非常荣幸地宣布之际,我们的最新 v3.5.3 正式生产可用版本现已发布。

2024-03-27 20:51:13 616

原创 Farewell to Pika, Embracing the Arrival of PikiwiDB in 2024

磁盘型 Redis 项目鼻祖 Pika 改名 PikiwiDB 了

2024-01-02 14:46:16 907

原创 What‘s new in Pika v3.5.2

Pika 社区近期发布了备受期待的 v3.5.2 版本,不仅解决了历史遗留的 Bug 问题,还引入了多项新特性。这些新特性主要包括 Pika 支持 Redis 事务、Pika 上层增加缓存层实现冷热数据分离、提升读性能、Codis-Proxy 支持动态修改配置参数等等,无疑将会让用户感受到更为高效和稳定的使用体验。

2023-12-04 16:55:30 87

原创 What‘s new in Arana v0.2.0

经过两年发展一年建设,Arana v0.2 支持了全新的可视化的 admin dashboard,对数据库表的 sharding 能力进一步增强,支持更丰富的 DDL 语句,并支持影子表特性,方便进行数据库压测工作。

2023-10-21 15:07:08 163

原创 What‘s new in Pika v3.5.1

Pika 社区很高兴宣布,我们今天发布已经过我们生产环境验证 v3.5.1 版本。

2023-09-28 18:02:22 150

原创 喜马拉雅 Redis 与 Pika 缓存使用军规

缓存不是万金油,更不是垃圾桶!!!

2023-09-08 15:55:53 4968

原创 使用C++11改造muduo

上周拿到了订购的《Linux多线程服务端编程:使用muduo C++网络库》一书,花费一天时间浏览了一遍,并细读了其中感兴趣的一些章节。阅毕,决定用C++11改造其相应源码muduo。        muduo依赖boost这个庞大的库,而且还使用cmake才能进行编译,我当时的目标也就只有两个:1 删除muduo代码中boost相关的代码;2 自己添加makefile编译文件,去除与cmak

2015-05-20 13:29:14 12928 5

原创 protobuf v3测试

谷歌最近发布了v3版本的protobuf,以前的protobuf被称之为v2,二者之间的区别其特点见我上一篇blog《protobuf一些注意事项》。    个人以为v3要比v2好处就在于:简洁,且二者的新版本都共同支持了新的数据类型:map。相比v2,它去掉了required等选项,只保留了repeated选项,还添加了时间等比较常用的数据类型(当然暂时还没有实现)等等。唯一的缺点就是,v3

2015-02-07 16:54:55 17980 3

原创 protobuf一些注意事项

读完protobuf一些文档,写点东西,权作记忆。https://github.com/google/protobuf/blob/master/CHANGES.txt:google发布了protobuf v3,为了pb更好用,更跨语言,他对protobuf v2做了以下change:      1. Removal of field presence logic for p

2015-02-07 13:46:31 73735 3

原创 golang中method的传值与传地址

golang中,struct的method的形式如下:    func (r ReceiverType) funcName(parameters) (results)    如果想要修改struct的成员的值,method被定义时候其ReceiverType必须是struct*形式。如果ReceiverType是struct,则无法改变struct成员的值。    废话少说,代码验证:

2015-01-23 15:16:10 5474

原创 golang中的use-a和has-a

type Person struct { Name string Address Address}type Address struct { Number string Street string City string State string Zip string}func (p *Person) Talk(

2015-01-23 14:35:16 1378

原创 分布式散记

对分布式系统有一些粗浅理解,记录下一些要点,以备记忆。 1 EC纠删码 & Reed-Solomon 算法 分布式存储要讲究效益。正常情况下系统对一个数据会通过备份数据以保证数据安全,例如把数据存储为两份或者三份,这个方法的优点是简单,CPU没有计算量,但是存储成本高。 一些公司未来节约成本会使用EC纠删码算法,如七牛公司,其具体的算法我不清楚,其大

2015-01-20 21:16:52 1166

原创 golang中MD5值计算问题

朋友发来一个一段用golang写的计算MD5值的codes:package mainimport ( "crypto/md5" "fmt")func main() { hash := md5.New() b := []byte("test") hash.Write(b) fmt.Printf("%x %x\n", hash.Sum(nil), md5.Sum(b))}

2015-01-15 16:15:07 5570 1

原创 七牛的存储算法猜测

个人浏览网页的时候,有打标签的习惯。最近整理以往的标签的时候,发现积累了一些有关七牛公司存储方案的网页,遂决定整理一篇文章处理,以备记忆。当然,也希望对他人有用。引言:何为纠删码数据的爆炸式增长使得存储系统的规模不断增加,存储设备的可靠性却一直没有得到显著提高(SSD 从SLC 到MLC 和TLC 可靠性不断下降,磁盘随着单位面积写入数据更多导致可靠性无法提升),从而给数据的持

2014-12-13 20:48:09 4479

原创 关于gc

目前成熟的工业语言java和c#都有非常成熟的垃圾回收机制。    另外一个成熟的oop语言c++和c发展到目前都没有gc机制,以前非常不解。只到最近看了go语言,才粗略地明白一些原因 。    go语言有自己的gc机制,也有指针技术,但是go语言中不允许对指针进行加减法等数学运算,即一个指针只能指向某个地址,类似于C中的type * const ptr类型的固定地址指针。    而在

2014-12-02 13:47:05 1887

原创 C++11中lock_guard和unique_lock的区别

C++11中有一个区域锁lock_guard,其

2014-11-10 20:20:59 28963 3

原创 多线程下写日志

鄙人最近遇到了一个奇特的线上事故,记录一下,以备记忆。        鄙人所在的部门负责给公司提供各种基础库,即基础架构部门。最近某别的部门用本部门提供的支持多线程版本的日志库后,出现这样一个奇特的现象:当磁盘被日志写满以后,他们的数据文件的头部被写上了最新的日志!就是说,别的部门的程序的数据文件被日志数据给污染了。        这里先不介绍这个事故的原因。先说下这个日志库的写日志过程,

2014-10-31 17:00:21 13624 4

原创 docker粗浅理解

容器这个概念确实好。如果是用虚拟机,一上来他们就把资源吃完了,没有弹性。而容器创建的时候只分配了很少的资源,一旦需要更多的资源,再向os要这个确实好。stocks(362110134) 11:20:11 容器的创建和销毁几乎没有啥成本。stocks(362110134) 11:21:20 打个不恰当的比方,就类似于进程的.bss空间,说是逻辑空间需要那么多,但是物理内存并不存在

2014-10-13 11:49:25 1149

原创 bloom filter与dawgdic(一种trie树)

恶意网址搜索与搜索热词提示

2014-09-04 19:58:40 2231

原创 多个线程如何操作同一个epoll fd

自己以前做一个接口服务器时候,这种场景下我的设计是多个线程操作同一个epoll fd。彼时,我的理由是epoll的系列函数是线程安全的。       当然有人不理解为什么会有多个线程操作同一个epoll fd的情形,这里稍微铺陈一下接口服务器的场景。epoll fd有线程1维护,监听服务端端口的socket的accept出来的acceptor(即新的socket fd)也放在这个epoll

2014-08-31 13:20:17 12704 1

原创 如何快速的把日志输出到磁盘上

不管是做客户端业务,还是做服务端业务,日志子系统都是非常重要的一个组件。    日志系统的输出目的地可以是disk,也可以是tty,更可以是network。    我的日志系统可以输出到tty,不同log level可以有不同的color,这样看日志非常的醒目,当然这里着重谈的是如何快速的把log内容写到磁盘上。        其实,如何快速的把log内容写到磁盘上,网上文章已经汗

2014-08-09 21:57:51 2383 1

转载 Cap'n Proto, FlatBuffers, and SBE

Yesterday, some engineers at Google released FlatBuffers, a new serialization protocol and library with similar design principles to Cap’n Proto. Also, a few months back, Real Logic released Simple

2014-06-25 15:02:29 5447

原创 FlatBuffers与protobuf性能比较

FlatBuffers发布时,顺便也公布了它的性能数据,具体数据请见Benchmark。    它的测试用例由以下数据构成"a set of about 10 objects containing an array, 4 strings, and a large variety of int/float scalar values of all sizes, meant to be rep

2014-06-25 08:35:43 51156 9

原创 定制一个FlatBuffers编译器

个人并不喜欢FlatBuffers编译器生成的代码,原因是我已经习惯了unix风格的代码。    不喜欢之处大致有以下:    1 命名法使用了Pascal命名法,而我个人习惯了小写字母加下划线式的unix式命名法;    2 Create类的函数参数列表的所有参数都堆在一行,非常惨不忍睹,我自己习惯于每行一个参数式的风格;    3 生成的头文件连个预防文件被重复

2014-06-25 07:52:12 3673

原创 FlatBuffers要点

FlatBuffers发布出来一周多,周末便抽时间先研究下它的使用方法。Flatbuffers的idl的语法主要参考[http://google.github.io/flatbuffers/md__schemas.html ]。本文主要介绍几个它的monster.fbs没有给出说明的几个语法点和相关的注意事项。1 comment它的注释中介绍了”///",说明是可以生成do

2014-06-21 18:29:29 8723

原创 在C语言环境下使用google protobuf

本文写给经常使用C编程且不喜欢C++而又要经常使用google protobuf的人。经常写通讯程序的人对数据进行序列化或者反序列化时,可能进程使用google的protobuf(PB),其优点多多,不用我在这里赘述。PB可以跨语言使用,唯独缺了C语言。礼失求诸野,我在网上找到了一个非官方的protobuf-c,其官方网址是http://code.google.com/p/protobuf

2013-11-14 02:32:20 16577

原创 使用vim分割窗口时如何改变窗口的尺寸

使用vim编程时候,不可避免的要分割屏幕。         如果要水平的平分屏幕,可以使用”:split“命令,如果要改变屏幕尺寸,可以用ctrl + w + +\- 来改变屏幕尺寸,这个操作方式等同于命令” :+  "或者” :- ",如果一次要增加3个char或者减少3个char,则命令是” :+ 3"或” :-3",其实这两个命令也不是真正的命令,仅仅是替代了操作方式而已,下面会给出真正

2013-10-22 17:56:15 30632 2

原创 关于调用函数gettid的错误提示

在OpenSuse 64 v12.3上调用gettid函数(已经加上头文件sys/types.h),但是gcc -Werror给出如下错误提示:     error: implicit declaration of function 'gettid' [-Werror=implicit-function-declaration]     而man 2 gettid结果如下:     N

2013-06-08 10:51:34 10556 2

原创 C语言关键字const再理解

以往对C语言关键字const的理解是一个const类型的常量指针被赋值为某一块内存区域的首地址时,这块内存区域中的数据不可修改。        如代码const char* string = “abcdefg",此时常量指针string指向一块内存区域,其中数据为"abcdefg",其中的数据不可修改。        但是若遇到以下代码:         char

2013-05-03 20:08:56 1276

原创 多级hash

我在以前的博客《sdk的windows版本》点击打开链接 中稍微的介绍了一些多级hash的信息,现在尽自己所知详尽地予以介绍。现在的服务器网络数据收发与存储没有不做缓存的,不做缓存不能发挥机器的高性能。一般地,公司内部都有集中固定型号的服务器,每种都有其性能极限,一般包括但不限于CPU计算能力、网卡收发包能力、内存容量以及磁盘容量和他的读写速度。多级hash即与内存容量有关。假设一台del

2013-04-26 22:33:15 4782

原创 sdk的windows版本

之所以叫作sdk的windows版本,是因为我有一个linux版本的linux版本。windows版本的sdk有以下数据结构:1 可伸缩性hashtable2 由红黑树实现的map3 多级hash(tencent非常常用的一种数据结构),可以参考一下文章:http://ahfuzhang.blogspot.com/2012/09/hash.html《多阶hash表 》h

2013-02-27 12:14:50 3837 2

原创 C语言运算时的参数符号自动转换

一个简单的问题?C语言中int和unsigned int二者谁的数值范围大?提示一下,数值0在int中有+0和-0之分,unsigned int中0只有一个+0,所以unsigned int的数值范围比int大。有C语言运算代码如下:#include int main(int argc, char** argv) {    int  val = -15;    un

2013-01-30 09:13:58 1136

原创 C程序中函数名与宏名称同名

C语言中,函数名称和宏名称可以相同。可以参考下面的示例程序。///////////////////////////////////////////test.cpp#include void print(int value) {    printf("%d\n", value);}#define print(x)  printf("hello"

2012-12-25 17:34:19 9103

原创 计算今天的凌晨时间

鄙人在SuSE linux 64位服务器编程,今天有一个功能跟客户端同事联调,其中一步骤是关于今天的凌晨时间的判断,两边一直差异较大。与他沟通之后,才知道是凌晨时间计算方法的差异。客户端(windows)的同事的计算方法如下:time_t cur_time = time(NULL);time_t morning = cur_time - cur_time % 86400;//864

2012-12-05 13:18:26 2005

原创 显示dos命令ping和tracert等输出结果中的ip对应的地域名称

公司老大今天使用了dos命令ping,他想看到其中ip地址对应的地域名称。如dos下命令ping www.qq.com的输出结果是:正在 Ping www.qq.com [113.108.20.50] 具有 32 字节的数据:正在 Ping www.qq.com [113.108.20.50] 具有 32 字节的数据:来自 113.108.20.50 的回复: 字节=32 时间

2012-11-26 21:24:18 2596

原创 select的效率一定比epoll低吗?

一般以为epoll的效率比select高,当然有人知道这个前提是网络环境较差且存在大连接(超过10k)的情况下。网络上>一文中列出了下列因素:     select/poll的缺点在于:     1.每次调用时要重复地从用户态读入参数。2.每次调用时要重复地扫描文件描述符。     3.每次在调用开始时,要把当前进程放入各个文件描述符的等待队列。在调用结束后,又把进

2012-10-30 01:03:18 6021 2

原创 opensuse12.2的gdb不能自动加载.gdbinit的解决方法

个人使用gdb调试程序的时候,喜欢在当前目录下先写一个.gdbinit,直接运行一个"/home/huang/sdk> gdb"命令,就可以快速调试了。        最新的opensuse12.2的gdb版本是GNU gdb (GDB) SUSE (7.4.50.20120603-2.1.2),安装以往的老习惯,写完.gdbinit文件,来一个gdb命令,回车之后,却给我这样一个提示:war

2012-10-26 13:23:10 6618

原创 怎样安全的使用可变参数宏__VA_ARGS__

今天遇到一个关于可变参数的问题,下面先给出一个示例程序说明我遇到的问题。0 #include 1 2 #define print(fmt, ...)     out(fmt, __VA_ARGS__)3 #define out(fmt, ...)       printf(fmt, __VA_ARGS__)4 5 int main(int argc, char** argv

2012-10-11 20:09:40 5594

原创 关于宏的两个bug

个人用define定义宏的时候,有个习惯,进行宏拓展时候,习惯于把外面传进来的参数加上小括号使用。例如: #definesum(x, y)((x) + (y))如果要定义宏对结构体进行操作,以前也是使用其指针形式进行操作,所以亦无碍。如:#defineget_num(N)((N)->num)但是今天无意,使用了结构体本身,固有的六年多的习惯栽了跟头。有结构体NUM:ty

2012-09-17 19:47:16 1294

libxml2 2.9.3

libxml2 v2.9.3. tar -Jxf libxml2-2.9.3.tar.xz.

2016-01-06

ngx_openresty-1.9.3.2

ngx_openresty-1.9.3.2.

2015-12-31

Git-2.6.4-64-bit

Git-2.6.4-64-bit,windows版本

2015-12-25

ruby redis3.0 gem

command:gem

2015-03-10

rubygem_v1.8.2

install command:ruby setup.rb && bin/gem /usr/local/bin

2015-03-10

redis-2.8.19

redis 2.8.19 stable package

2015-02-01

php-5.6.3 source code package

php-5.6.3 source code package

2014-12-03

newest bzip2 source code

bzip2的源码,零分下载,希望你喜欢。

2014-11-22

redis-2.8.8

redis最新稳定版2.8.8,零分下载,希望你喜欢。

2014-04-16

protobuf-c测试用例

protobuf-c的测试用例,具体介绍请看我的blog: http://blog.csdn.net/menggucaoyuan/article/details/16107201

2013-11-14

protobuf-c

protobuf-c原来的实现在http://code.google.com/p/protobuf-c/,这是我修改的版本。详细地址介绍请看我的blog: http://blog.csdn.net/menggucaoyuan/article/details/16107201

2013-11-14

lisk_v0.2.1

lisk分别由以下构件: 定时器 lisk_clock 词典 lisk_dict key-value(string-string类型,可读取配置文件) hashtable lisk_hashtable list lisk_list log lisk_log map lisk_map 多级hash lisk_mul_hash 网络库 lisk_network string lisk_string vector lisk_vector 目录结构是 lisk---./mk.sh ---mak ---inc ---src ---exam 基于linux,lisk全部用C语言实现,没用用到一句我讨厌的C++(虽然以前也使用了近四年多)。除了linux的基本库函数,没有依赖任何第三方库。 本人编程环境是opensuse12.3 64。

2013-04-23

windows sdk

个人的sdk,有以下数据结构:hashtable 红黑树 多级hash

2013-02-27

open bloom filter

open bloom filter是我见过的bloom filter之中写的比较好的一个,但是其中的数值范围过大,获取hash函数时测试次数过多。希望对你有所裨益,使用的时候请遵守原作者的权益。见过csdn上好多不要脸的人,别人写的东西,自己上传一下,还要那么多资源分,谴责一下。

2012-11-19

可以在windows上运行linux命令的批处理文件之扩充

配合博文《win7下的cmd窗口可以全屏显示吗》的资源。在windows上运行一些类似linux的命令。

2012-09-13

可以在windows上运行linux命令的批处理文件

可以在windows上运行linux命令的批处理文件,极为方便。

2012-07-15

可在ubuntu上安装erlang的deb包

余辛苦六天,方才找到,欲得两分,望汝不骂吾才是。若两分亦无,亦可邮来email(to:[email protected])索要。 使用说明: 1,把文件拷贝到ubuntu任意位置; 2,双击之; 3,出现ubuntu software对话框后,点击中间的install button,其自动安装; 4,不同机器安装速度不一样,耐心等待; 5,安装成功,你谢谢deb包的开发者,然后代开ubuntu的terminal,输入erl命令即可运行。 6,安装失败,你骂我好了,并把你的ubunt版本、是否是在虚拟机和其下的虚拟机软件名称和版本与再其下的os名称和版本、硬件(cpu、memory、Mainboard、disk)等信息email给我,我帮你找能用的版本。 软件相关信息: This package contains the Erlang/OTP runtime implementation, which is configured and built with HiPE support (allows compiling to native code), and minimal set of Erlang applications: compiler - compiles Erlang code to byte-code; erts - the Erlang runtime system application; kernel - code necessary to run the Erlang runtime system itself; sasl - the system architecture support libraries application; stdlib - modules for manipulating lists, strings, files etc.

2012-07-05

矩阵运算库 blitz-0.9

一个用于矩阵运算的库,来自于sourceforge,不要分,希望大家使用,c++的东东。

2012-03-11

intersection of parametric surfaces and plane

Randy B. Lee & David A. Fredricks的intersection of parametric surfaces and plane

2011-08-11

freedos32的0.05版本源代码

和dos兼容的操作系统。比较老的东东了。

2011-08-11

嵌入式linux平台下的bootloader

很好的一个嵌入式linux平台下的bootloader,主要适用于mips体系结构,适合嵌入式linux的学习和项目开发.不知道啥时候收集的,贡献给各位了,因为是别人的,就不要分了。

2011-08-11

改变MFC应用程序主窗口的类名

我的翻译的文章<<如何改变MFC应用程序主窗口的类名>>一文的资源。原资源有两个,我压缩为一个文件包后上传上来。源码时codeproject上的,我收取一分作为辛苦费,不要骂我哈^^

2011-05-26

多屏显示实例(dual-screen\large-screen)

本例有一个文档,两个编程实例,两个实例有各自的说明文档。介绍如果实现了多屏编程。

2011-03-18

MFC多线程编程示例

有文档说明,还有代码示例,乃MFC多线程编程的很好参考。 补充,CCriticalSectionTest有如下错误,原来想删除后再上传一遍,但是不知道怎么删除,十分抱歉。做如下更正: (1) g_cStrArray[i] = 'W'; pEdit->SetWindowText(g_Array); 更改为: g_cStrArray[i] = 'W'; pEdit->SetWindowText(g_cStrArray); (2) g_cStrArray[i]=''D''; pEdit->SetWindowText(g_Array); 更改为: g_cStrArray[i]='D'; pEdit->SetWindowText(g_cStrArray); (3) void CCCriticalSectionTest0Dlg::OnBtnD()的函数实体如下: { CWinThread *pWriteD=AfxBeginThread(WriteD, &m_ctrlBtnD, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED); pWriteD->ResumeThread(); } (4) 还有两个控件显示位置有误,但无伤大雅,就不再赘述了。 因为以上错误,给你添加的麻烦,再次抱歉。以后再上传资源时,万分谨慎,确保无误后再上传。

2011-01-09

整合ACE和ATL(多线程编程)

翻译了一篇文章,顺便把其相关的资源也上传上来,文章请参考我的博客,题目是“整合ACE和ATL”。

2011-01-08

一个关机和闹钟示例程序

程序是从codeproject.com网站上下载下来的,我把相关的程序说明也翻译过来了,网址是:http://writeblog.csdn.net/PostList.aspx

2011-01-07

一个简单的对注册表进行操作的示例

首先声明,这个资源的代码不是我写的。来源是:http://www.codeproject.com/KB/MFC/registry_key.aspx,我是小人,掠君子之美了。它对ATL的CRegKey类进行了封装,所以对注册表的操作极为简便。另外,我对这个资源的有关文章也翻译了,放在我的博客里,文章名字是《一个基于ATL的类CRegKey的可以读写注册表的模板头文件》。

2010-12-26

一个简单的MFC程序

这个简单的程序展示了GDI的PEN和BRUSH的使用,配合我翻译的文章http://blog.csdn.net/menggucaoyuan/archive/2010/12/04/6055225.aspx.高手就不要看了,浪费时间.

2010-12-04

C++ STL 开发技术导引配套源代码

《C++ STL 开发技术导引》书不错,内容简练,源码简洁(共12章),实在是学习STL的家居必备好书^_^

2010-01-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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