自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

密码小仙女

小仙女带你学密码

  • 博客(16)
  • 收藏
  • 关注

原创 c++自制Redis 数据库(十四)阶段性小结

这次的自制数据库基本结构已经完成了,数据库模块,持久化模块,网络模块,按照大范围来说其实也就这三个大模块,其中的许多子系统我之前也已经说过了,这里不再废话,网络模块的数据收发已经测试完成了,但是还有很多不尽人意的地方,比如说分包功能其实没有做。就剩下信息的发送和接收的信息解析状态机了。 好在,我马上就会着手重构这个项目了,相信在V1.2它定会脱胎换骨,总的来说这次寒假...

2016-02-29 21:06:50 368

原创 C++ 自制Redis数据库(十三) 持久化AOF日志模块测试完毕

持久化AOF部分测试完毕废话不多说,一般写日志,很多人就直接write 了,但是效率很低,这里就不详细解释了。我AOF模块的设计我是在为我的数据库写这个日志模块所以我需要考虑如下几个指标:1.并发量不敢说很巨大。但是多个线程同时需要写日志这种可能性还是有的,一个连接给一个线程池中的线程干活,当业务很多的时候,好几个线程同时需要写日志是很可能的,所以需要来考虑。

2016-02-24 21:33:54 720

原创 C++自制Redis 数据库(十二) 初级存储引擎已经测试完毕

简单数据库存储引擎基础测试,非压力测试,压力测试结果并不作为初级版本的性能衡量指标。第一级测试:1.独立元素测试成功2.链表元素测试成功第二级测试开始1.链表添加元素测试 链表结合字符串 成功 链表结合整数 成功2.整数类集合元素测试 整数类集合 成功3.哈希表添加元素测试 整数类哈希表 成功 字符串类哈希表 成功4.伪哈希表添加元素测试 整数类伪哈希表 成功 字符串类伪...

2016-02-21 20:38:06 646

原创 C++ 自制Redis 数据库(十一)哈希类与数据库类

总结下这一周的东西,开始写的时候真心头大,C++这语言确实不容易被驯服,我承认我现在还无法完全掌控它,曾一度我怀疑我的C++ 是体育老师教的,无奈阿。只好硬着头皮写,有问题就查,实在头大了就问学长。现在数据结构类的东西基本稳定,下来就是逐渐补充。这里贴上几个类就好啦,我还要不断的补充东西,数据库存储引擎总算有个demo 了,Redis 哈希表的类设计(部分主体),这里只说类,函数体没有写上来

2016-02-18 23:23:39 592

原创 C++自制Redis 数据库(十)数据结构类

随着项目的缓慢进行,整个项目的结构逐渐清晰,看来我之前的设计架构是相对合理的,至今在大结构上未见致命及影响扩展性的错误,但是相信以后还是会出现的,毕竟工程实践中错误一定会出现,并且有些错误肯定会重复出现。我逐渐发现C 和 C++的区别还是很大的,即使原作者使用C写出了面向过程的思想,但是我用C++直接写起来还是有点不适应,可能是之前C用的比较多,JAVA还没好好学吧,但是这并不能成为我的绊脚石...

2016-02-13 00:56:59 460

原创 C++自制Redis 数据库(九) 详细数据库存储结构,线程相关已解决

昨天看了下C++的线程相关东西,决定使用线程池来作为任务完成实体,并且已经学习了欢神的C++ 线程池,学到不少东西,今天开始搞数据库存储设计。数据库模型我详细的画了出来。...

2016-02-10 15:35:45 545

原创 C++自制Redis数据库(八)基本数据结构--String

说起数据结构,真是没办法,C/C++这两个C++的数据结构转换起来还是有点麻烦。我重新实现String 的本意是使用自己写的内存管理函数,但是我发现还是有很多不好解决的问题,比如线程安全,比如线程安全,比如线程安全,自己实现的特定的内存管理程序一定比通用的好用这是必须的肯定的一定的,但是new 可以调用构造函数,析构函数,而自己实现的内存是直接的内存分配,这对于我初学C++确实是一大难题,索性这个

2016-02-09 10:30:01 454

原创 C++自制Redis数据库(七) 决战架构设计--从数据的角度贯通始终

前言今天都大年初一了,项目的设计也该结束了,我一直相信着只有设计的时候理清思路,把设计的每一个角度都理清这个项目就成功了一大半,首先我不可能使用不可能达到的技术,其次当设计完成,每一个环节思路都清晰的时候,我想就剩下编码了,其实编码是最简单的事情,因为编码的时候只需要对语言的熟练,都是局部的编程,很容易调试代码,即使错了重写函数就好了,但是如果设计上出现重大失误,我指的是和设计目标的背离,这将...

2016-02-08 17:14:40 535

原创 C++自制Redis数据库(四) 设计开始 敲定各模块架构--网络模块

网络模块这次的网络模块主要使用I/O多路复用,就是reactor 模型,结合线程池来实现服务器的主体逻辑。注册三个事件,读事件,写事件,连接事件。都是经典的网络编程范式,在这里不做过多的介绍。不过在包的数据结构设计方面肯定需要设计一番,但是这个数据关系到数据库的设计,所以我们后边再设计数据结构。现在有两种情况,使用epoll 还是用libevent 函数库,还要研究一下。大体结构如...

2016-02-07 23:42:27 382

原创 C++自制Redis数据库(五) 设计开始 敲定各模块架构--数据库模块

数据库模块服务器中的数据库存储方式:关于这个数据库的东西我在说说吧。首先这是一个缓存数据库,这就导致它必然是在内存中的,并且是常驻内存,存在于服务器之中,首先在全局有数据库的一个结构是用来保存数据库的,一个服务器上会有很多个数据库实体,就像上边的数据库0,一般一个redis 服务器开16个数据库实体,应用层的程序需要写清楚它要给哪一个数据库发送数据。下面来说说具体是怎样...

2016-02-07 23:29:51 448

原创 C++自制Redis数据库(三)设计开始敲定各模块架构-简单集群设计

要开始正式设计了,前边的只是写假设。首先我们把项目分成四个大的模块,(网络编程模块,集群模块,数据库系统存储模块,持久化模块)结构图如下: 现在我们就各个模块再做整体的设计:集群模块:集群功能没有考虑太多的东西。设计目标:1.能够增删节点。2.有数据复制迁移功能。3.负载均衡,能够使数据基本均匀的散列到多个节点上。4.有简单容错处理。策略:整体采用一致性哈希环的方式,给

2016-02-07 16:19:32 650

原创 c++自制Redis数据库(三)初步基础框架设计

节点基础框架 简单集群框架设计客户端——服务器初步模型服务器框架 查看原文:http://zmrlinux.com/2016/02/05/c%e8%87%aa%e5%88%b6redis%e6%95%b0%e6%8d%ae%e5%ba%93%e4%b8%89%ef%bc%89%e5%88%9d%e6%ad%a5%e5%9f%ba%e7%a1%80%e6%a1%86%e6%9e%

2016-02-05 21:03:53 507

原创 C++自制Redis数据库(二)部分设计前置问题

单机设计前置问题1.各种数据结构如何设计,以适应所有功能。2.服务器如何保存数据库。3。服务器如何保存具体的数据,多少在内存。4.如何对待依靠时间戳来判定数据的可靠性。5.接着是如何应用时间来清除老的键值对。6.如何设计内存管理模块7.过期的键如何删除8.日志如何处理会更高效9.AOF RDB持久化如何实现10.如何从文件中恢复数据到内存11.事务极多的情况下,是否需要队列

2016-02-05 20:23:40 427

原创 数据库初级(一)

分布式存储:分布式存储系统是大量普通PC服务器通过互联连接,对外作为一个整体提供存储服务。分布式存储的特性:可扩展,整个系统可扩展;低成本,分布式存储系统的自动容错,自动负载均衡,可布置成本低;高性能,无论是整个集群还是单台服务器,都要求分布式存储系统有较高性能;易用性,分布式存储系统需要能狗提供易用的对外接口,并且有相应的工具。分布式存储系统的挑战性:数据状态信息的持久化,要求在自动迁

2016-02-03 16:23:26 513

原创 C++ 通用编程

标准模板auto_ptr 是一个模板类,用于管理动态内存分配的方法。auto_ptr 模板定义了类似指针的对象,可以把new 获得的地址赋给这种对象。当对象auto_ptr 过期时,其中的析构函数会释放这个指针的内容。例如:auto_ptr pd;double *p_reg = new double;pd = auto_ptr (p_reg);auto_ptrpauto (p_reg

2016-02-02 22:21:56 514

原创 C++自制Redis数据库 (一)

前言最近在学C++,想写个什么小项目来练练手,一般就是造轮子嘛,所以我也是准备使用C++来写一个Redis 非关系型数据库。这就开始准备了,但是这毕将是一个逐渐庞大的工程,所以我想要一步一步的开展。这次主要是分三个阶段,最终的代码和文档都会在github上。但是文档的部分,博客也会有,这就是。三个部分:是什么为什么怎么做非关系型数据库的应用1. BerkeleyDB是一种极为流行的开

2016-02-02 22:16:02 1057

空空如也

空空如也

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

TA关注的人

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