自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小乌龟富兰克林

独木舟之旅

  • 博客(59)
  • 资源 (18)
  • 收藏
  • 关注

原创 记笔记--hadoop的高可靠性

hadoop为什么具有高可靠性,靠的是下面的策略:冗余副本策略、机架感知策略、心跳机制、安全模式、校验和、回收站、元数据保护、快照机制等。

2018-03-13 10:18:54 2387

原创 处理数据报表某些天数据为0的情况的一种方案

数据报表会出现下面一种情况,sql跑出来的数据许多天没有数据,但是报表需要把没有数据填写为0日期新用户数2017-01-0142017-01-0362017-01-0662017-01-073一种方案可以在view端解决,显示的时候遍历日期,没有则加0,但是每一个view都做这种逻辑处理

2017-05-15 10:33:31 833

原创 c++简单问题告知之this指针

this指针对于c++初学者来说有时候总是绕不明白,在这里简单分析一下this指针的特点1. this指针是类内部使用的,this顾名思义就是这个的意思,指针就是地址,这个地址就是当前对象的地址,也就是说有了类的对象才有这个地址,才有这个指针,其实不用this的话,一般默认也是this指针,例如这个类class A{   public:           void fun (

2014-01-30 14:16:45 1089

原创 服务器通信模块示意图

2013-12-11 15:35:51 1276

原创 消息处理引擎讲解

类图结构如上图,数据流程,外部数据流入消息处理管理对象,流入消息队列,分发器从消息队列中取数据,从处理器工厂中取处理器来处理数据,消息处理管理类提供注册处理器接口,具体代码实现见:http://download.csdn.net/detail/zhylei/6498645

2013-11-05 11:59:08 2418

原创 处理64位的十六进制格式化问题%x已经不能用了

可以用%llx,可以把64位数格式化为十六进制数,而%x只能

2013-10-25 11:11:23 16715

转载 hypertable的application queue,非常好

/* -*- c++ -*- * Copyright (C) 2007-2013 Hypertable, Inc. * * This file is part of Hypertable. * * Hypertable is free software; you can redistribute it and/or * modify it under the terms of the

2013-10-24 12:09:06 813

原创 消息处理模型

消息处理模型图:

2013-10-24 11:45:44 758

原创 查看代码发现的问题

发现的问题以后的改进1. 代码注释量比较少新增加的代码坚持加注释,包括文件注释和函数注释2. C++的代码设计模式体现的比较少注意应用设计模式,增加代码的可维护性和扩展性3. 许多文件中的代码太多,有几千行,比较难维护以后避免大文件,想办法把大文件切分成小文件(根据函数和类的特点拆分)

2013-10-19 16:06:58 806

原创 glog编译过程--linux

https://code.google.com/p/google-glog/ 下载glogtar -zxvf   glog-0.3.3.tar.gz进行解压./configuremakemake install编译完成

2013-10-19 15:33:54 5582

原创 log4cxx编译过程--linux

下载安装包http://logging.apache.org/log4cxx/index.html ,从这里下载,目前为0.10.0下载apr, http://apr.apache.org/download.cgi ,从这里下载apr,和apr-util,版本为apr-1.3.8.tar.gz 和apr-util-1.3.9.tar.gz编译安装apr第一步安装apr-1.3.8,

2013-10-19 15:31:06 2935

原创 这种情况下可以用位存储

在涉及到集合中不定个元素的组合问题时,采用位操作还是比较快速的,所以可以考虑位存储,逻辑简单,运算方便。

2013-10-19 14:41:32 783

原创 mysql数据库解决数组不能进行位操作的问题

问题描述:想存个大数组,然后利用位操作进行计算,但是mysql不支持,所以采取了替代方案我需要355位,一共需要45个字节的位操作,mysql支持的位操作最多有64位,所以我选择bigint作为我的数据类型,但是位数不够,所以我选择用5个bigint字段来存储355位,但是5个字段太多了,所以我新开了一张表,专门来存储这5个大整数,然后两个表一关联,搞定了。

2013-10-19 14:38:59 1021

原创 log4cxx配置文件讲解,以及测试程序

先看完整配置文件log4cxx.propertieslog4j.additivity.gather = false log4j.rootLogger= debug, R, stdout//设置子loggerlog4j.logger.Lib_a =debug, ap1, stdoutlog4j.logger.Lib_b =debug, ap2, stdout#设置不继承父L

2013-10-15 18:18:26 4030 3

原创 最简洁的单链表逆序

node * reverse (node * head){node * walk = head;node * pre = NULL; while (walk != NULL){node * next = walk->next;walk->next = pre;pre = walk;walk = next ;}return pre;}

2013-09-12 07:27:30 761

转载 用一种算法来颠倒一个链接表的顺序

Node * reverse(Node * head) {  if (head == NULL) return head;  if (head->next == NULL) return head;  Node * ph = reverse(head->next);  head->next->next = head;  head->next = NULL;  return

2013-08-28 06:45:45 1428

转载 关于读锁和写锁最好的一篇文章

Implementing a Read/Write Mutexby Volker HilsheimerDeveloping threaded software is always a challenge. Breaking a complex application into separate units of execution without compromisin

2013-08-27 07:05:28 1971

转载 微软亚院之编程判断俩个链表是否相交

微软亚院之编程判断俩个链表是否相交给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。为了简化问题,我们假设俩个链表均不带环。问题扩展:1.如果链表可能有环列?2.如果需要求出俩个链表相交的第一个节点列?ANSWER:struct Node {  int data;  int Node *next;};// if there is no c

2013-08-19 06:54:07 1202

转载 查找最小的k 个元素

查找最小的k 个元素题目:输入n 个整数,输出其中最小的k 个。例如输入1,2,3,4,5,6,7 和8 这8 个数字,则最小的4 个数字为1,2,3 和4。ANSWER:This is a very traditional question...O(nlogn): cat I_FILE | sort -n | head -n KO(kn): do insertion so

2013-08-14 07:07:03 663

转载 .在二元树中找出和为某一值的所有路径

题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22 和如下二元树10/ \5 12/ \4 7则打印出两条路径:10, 12 和10, 5, 7。二元树节点的数据结构定义为:struct BinaryTreeNode // a node in the bin

2013-08-13 06:41:17 640

转载 把二元查找树转变成排序的双向链表

1.把二元查找树转变成排序的双向链表题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。10/ \6 14/ \ / \4 8 12 16转换成双向链表4=6=8=10=12=14=16。首先我们定义的二元查找树节点的数据结构如下:struct BSTreeNode{int m_nVa

2013-08-12 06:53:07 690

原创 std::map中迭代器失效的问题

删除std::map m中的元素,如果用迭代器操作:std::map::iterator it = m.begin ();for ( ; it != m.end(); ++it){m.eraser (it);}这样做会出问题,因为被eraser后迭代器失效,再进行++就会down机如果这样std::map::iterator it = m.begin ();

2013-07-22 21:07:19 7383

原创 什么时候用线程池

有时候用线程池处理会比单线程处理速度快许多,但是有时候反而会比单线程还要慢,这主要是抢锁的原因个人总结:如果对数据的处理速度慢,但是数据的接收很快的时候可以用线程池,可以这样处理:把收到的数据放到队列里面,然后做一个数据处理的线程池,在线程池从队列取数据的时候要加锁,把数据取走以后就进入单线程里面,不涉及到锁的问题,这样线程池处理数据的速度要比单线程要快。

2013-06-30 21:13:01 1802

原创 多年来对聚合和组合的误区

以前一直以为组合就是用类的对象直接作为别的类的成员变量,聚合就是指针作为别的类的成员变量,但是当画出类图后生成类后发现,代码都是指针,后来才恍然大悟,原来是组合就是类管理别的类的对象,包括构造和析构,不管是直接的对象还是通过指针管理对象。聚合就是类只拥有别的类的指针,他只用这个指针,但是不管理那个对象。

2013-06-30 11:36:03 909

原创 公共模块尽量不要增加特例处理

公共模块是大家都要用到的模块,都是一些跟业务无关的,耦合性性较小功能性模块,因为大家都要用,如果你增加了特例处理,这样别人用的时候,虽然功能上没有什么区别,但是效率上会降低,更重要的是,设计上会出现一种啰嗦的感觉。如果真遇到这种事情可以再增加一个函数处理,专门用于处理这样特例的。最近遇到一个字符串转换的函数,但是程序中有一种字符串处理是用关于url处理,算是一种特例,所以我们处理的办法是增

2013-06-30 11:28:10 795

原创 增量开发

增量开发就是老的代码不要去动,直接增加新的编码,使老代码保持封闭,这样便于管理。最近遇到一个项目,是系统重构,重构老的存储部分时候,因为存储逻辑有些变化,本打算在老的存储代码上改,但是想想到时候如果代码再有变化,就会整的不伦不类的。最后想到了可以直接写新的,把老代码中有用的部分直接挪到新增加的部分,最后老代码真的没有用处了就去掉,这样可以保证新代码的逻辑清晰,又可以用老代码做参照,如果逻辑再有

2013-06-30 11:17:20 1156

原创 学会了处理项目中那些没有确定方案的东西(使用“策略模式”)

项目中遇到一个问题,有一个文件管理类,但是文件的目录不确定,而其他的文件相关的属性的确定了,如下所示:class FileMgr{public://获取可用目录std::string get_directory ();//其他属性.....}这个让我头疼的问题让我想到了“把容易变化的和不容易变化的分开处理”,我想到了把目录处理分出去,结构图如下因为文

2013-06-06 22:22:52 1113

原创 关于引用计数一点点归纳

大凡大一点的开源程序都会看到用引用计数的相关技术,粗略看一下有两种实现方式:1. 计数器在类的基类中,并提供增加和减少计数的函数,用模板来实现引用计数,看到大部分的常用指针都是使用的继承方式来实现,如下面的代码,这个模板类的T必须要实现ref()和dref(),而且必须包含计数器 (摘的webkit的),T的类比较复杂,没有粘贴过来2. 计数器在模板类中,每声明一个模板类会有一个计数器,有

2013-05-27 21:03:05 839

原创 grass项目c++框架类图

grass项目c++框架类图

2013-05-18 20:24:07 878

原创 c++框架接口图

C++框架图

2013-05-11 18:59:22 922

原创 小教官问题

int getFriend(int nCount, int * data_1){long n,a[50000],d[50000],use[50001],max=0;long i,hy1,hy2;memset(use, 0, sizeof(use));a[0]=1;  use[a[0]]=1;for(i=1;i{hy1=data_1[ (a[i-1]-1) *

2013-04-15 22:43:59 4539

原创 写个快速排序的简单程序c++

快速排序,写了一个函数和测试程序#include int QSort (int * pList, int low, int high){int low_old = low;int high_old = high;while (low {int pivot_value = pList[low];while ( low = pivot_value){

2013-04-13 23:05:05 885

原创 单链表排序

在华为的oj上面看到一道题,单链表排序,一看比较简单就拿来做了,结果搞了半天还是没有调通,这类基础的问题还是挺费脑筋的,回家后又费了半天劲才搞定,题目要求是,一个单链表如果已经排好序或者排序出异常返回空,按输入标识确定排序规则,比如flag为0 为从小到大,flag为1为从大到小数据结构和函数原型如下:struct ListNode {int m_nKey;ListNode * m

2013-04-03 20:31:34 669

原创 hypertable的cellcache

hypertable的cellcache内存缓冲用一个分页的链表,并且在每个页内部还分配一个tinybuffer,做了一个微cache,整体的性能不知道怎么样,不过设计的挺巧妙。

2013-03-25 22:46:16 648

原创 分布式存储hypertable结构概述

master进程负责整体管理,ranggeserver为分布式节点,管理range,rangge包含accessgroup,accessgroup管理cs文件和cellcache,加入数据的时候先加到cache,维护线程将数据从cache存储到cs文件。

2013-03-17 13:23:05 627

原创 在家完成的一个小项目

自己在家做一个小项目,项目的功能为从www.cnbeta.com上面抓取新闻标题列表并存储到本地文件。更新时间为每小时一次,每天的新闻存为一个文件。源代码和可执行文件在   http://download.csdn.net/detail/zhylei/4892203     可以下载,流程图为

2012-12-13 22:34:18 596

原创 双线程锁,peterson锁,1981年就出来了

1. 谁都不让路,都在争锁2.  都在让路,都在让锁3. 较好的双线程锁,著名的Perterson algorithm 锁以上图片来自The.Art.of.Multiprocessor.Programming,一本不错的书

2012-12-06 22:53:55 1494 3

原创 std::stack<T>和std::queue<T>在执行频率比较高的程序中,效率太低

最近优化一个程序,是一个日志处理程序,优化前每秒钟18w/s,优化后29w/s,优化部分就是stack和queuestd::stack默认使用的容器是dequeue,这个容器里面有数组,节点的等等信息,在初始化还有push,pop的时候特别费时间,所以就自己写了一个简单的stack,能够支持功能就可以,结果速度提上去好多。

2012-11-20 22:45:46 4522

原创 缓冲区做key的hash_map

1.  寻找适合的哈希函数当从google搜索hash时,第一个就是wiki百科(英文的),当进入wiki百科后就在讲hash方法,它推荐了几种hash方法,其中有一种就是fnv,还给了链接地址,这个就是源码地址http://www.isthe.com/chongo/tech/comp/fnv/index.html#FNV-source看了以后才知道,原来支持缓冲区的hash2

2012-11-19 22:17:46 878

原创 c++程序大数据量处理性能优化

1. 现在处理的程序为每秒钟处理20w条数据,甚至更多,加快处理速度,总结了一些经验,记录下来程序的数据结构里面尽量避免string,map这样的数据结构,因为string虽然不用自己管理指针,但是在构造和析构的时候很费资源,还有在执行c_str()的时候要new出一块内存来,这样的频繁执行的程序块中,会非常费时间。map在插入的时候,因为要保持rbtree的平衡结构,要进行self_bala

2012-11-17 00:20:18 7667

消息处理引擎11月15日版(c++源码)

一个c++实现的消息处理引擎,已经在项目中使用,效果不错

2013-11-15

消息处理引擎C++源码(11月8日版)

一个已经在项目中使用的消息处理引擎,可用于服务器消息处理机制,提供名称注册访问消息处理引擎

2013-11-08

消息队列模型C++源码和UML类图

c++源码实现的消息队列处理机制,消息注册模型,可编译,有uml类图模型

2013-11-04

消息队列类图11月1日更新版

今天更新了队列中的一部分,代码已经实现了,过几天再上传,还存在一些缺陷

2013-11-01

消息处理类图更新版

上回设计的类图有缺陷,这次修补上回的漏洞,过两天再把代码上传

2013-10-31

消息处理c++类图

消息处理的c++类图流程,是一个比较经典的消息处理模式

2013-10-29

消息处理流程图

消息处理流程图文档,可以帮助处理消息类问题,模型不错,比较通用

2013-10-24

快速排序与堆排序的C++实现

简单实现了快速排序和堆排序,堆排序采用和数据结构上面不同的向上筛选法,可以编译,运行,可供学习

2013-08-17

迷宫求解C++源代码(回溯法)

迷宫求解的一个工程,可编译,c++源码,用回溯法求出所有迷宫路径

2013-07-07

”策略模式“在现实项目中的应用

具体的场景在这个博客上,http://blog.csdn.net/zhylei/article/details/9042749,是现实中遇到的处理有确定方案和没有确定方案的场景问题,具体应用了设计模式中的“策略模式”

2013-06-06

KMP算法C++源码实现(有工程,可编译)

KMP算法的c++实现,根据一篇讲解kmp算法的文档写的,带工程可编译,可以直接作为项目代码使用,也可以作为学习使用,实现简单、灵活

2013-06-02

引用计数的c++源码实现

引用计数的实现,c++源码实现,工程可编译,利用模板实现的,项目中可直接使用。部分代码是从webkit中引用计数直接引用过来的

2013-06-01

C++框架类图--grass项目

一个比较清晰的c++框架,结构明朗,接口简单实用,大家可以下载源代码看看,作为日后做c++工程框架和加载插件之用。

2013-05-18

c++框架visio图

画了一个c++框架接口图,适用于带有插件加载的大程序,和大家分享,希望多多指教

2013-05-11

几种C++框架类

由于最近要用到框架类,所以找了几种c++的框架类,和大家分享一下,都是c++源码接口

2013-05-11

BTree、AVLTree、RBTree、BinarySearchTree和SPlayTree的C++源码实现

红黑树、平衡二叉树、B树、二叉搜索树和SPlay树的C++源码实现,带工程

2013-05-11

新闻获取器--修订版

此软件为新闻获取器,向服务器发送http请求,收到html后用KMP匹配算法进行查找,找到后把新闻标题提取出来,然后存入文件。

2012-12-15

新闻获取器

自己做的一个c++小项目,功能为获取新闻并把新闻存为文件,若是设置开机启动,每次开机会自动加载程序,并获取当天新闻并存存储文件(文件路径可配置,在config/config.txt这个文件中),刚做的第一版,用起来可能不是太方便,如有疑问可以联系我[email protected],可以进行技术上的切磋.

2012-12-13

空空如也

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

TA关注的人

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