- 博客(39)
- 收藏
- 关注
原创 完全二叉树学习
定义:假设高度为h,那么前h-1层都是满的,最后一层,从左向右,连续集中在最左边;k层的完全二叉树总节点个数最小为2^k-1,最大节点个数为2^(k-1)可以从数组形式存储的方面来考虑,数组形式存储的完全二叉树,如果元素下标为i,那么其左子树在2i+1,右子树在2i+2,父节点在floor((i-1)/2)如下图所示: 1 / \
2014-04-20 07:48:45
1189
原创 mysql 常用命令
mysqldump可以把现有数据库中的表结构以及数据导入到一个文本文件中。./mysqldump -u root --socket "socketname" -p tpch --no-data > tpch.sql如果不加上--no-data选项,那么将把所有表的数据也dump出来。数据库名后边如果不跟表名,将把所有的表dump出来,所以数据库名后可以跟上表名,表示只dump一
2014-01-04 09:28:00
832
转载 MySQL 中 Join 的基本实现原理
http://isky000.com/database/mysql_join_buffer_nested_loop_implementDataBaseDec 3rd,2008作者:Sky.Jian | 可以任意转载, 但转载时务必以超链接形式标明文章原始出处 和 作者信息 及版权声明链接:http://isky000.com/database/mysql
2013-12-15 21:18:38
759
原创 linux中eclipse调试mysql源代码
费了一番牛劲,终于把eclipse中调试mysql源代码搞定了,现把过程记录如下。操作系统,ubuntu,虚拟机1.eclipse直接使用cdt或者给java版本的eclipse安装插件都可以,安装插件的方法如下:1)下载eclipse-cpp-indigo-sr2-incubation-linux-gtk.tar.gz2)解压3)把fetures目录下的东西和pl
2013-12-15 18:28:26
1869
转载 mysql tpch
http://imysql.cn/2012/12/21/tpch-for-mysql-manual.htmltpch是TPC(Transaction Processing PerformanceCouncil)组织提供的工具包。用于进行OLAP测试,以评估商业分析中决策支持系统(DSS)的性能。它包含了一整套面向商业的ad-hoc查询和并发数据修改,强调测试的是数据库、平台
2013-12-15 18:27:34
1471
转载 eclipse 提示框颜色
eclipse提示框的背景颜色使用的是系统的提示框颜色配置,在windows下为黄色,但在Ubuntu12.04(gnome)下却是黑色, 造成提示内容很难看清。在eclipse中我们是无法修改这个颜色的配置的,只能通过修改系统的颜色配置。在ubuntu11.10以前,我们是可以能过 自定义系统外观来修改这一颜色的配置的,但自ubuntu11.10以后,就没有相关的操作界面了,只能通过修改配置文件
2013-12-15 18:19:50
4795
转载 Multi Range Read (MRR) in MySQL 5.6 and MariaDB 5.5
March 21, 2012 ByOvais Tariq10 CommentsTweetinShare3This is the second blog post in the series of blog posts leading up to the talk comparing the optimizer enhancem
2013-12-15 09:59:42
1440
原创 mysql code
sql_select.cc boolmake_join_readinfo(JOIN *join, ulonglong options, uint no_jbuf_after) table->typesql_executor.ccpick_table_access_method()JT_EQ_REFsql_select.cc
2013-12-10 22:45:05
747
转载 for_each的各种使用方法
http://www.cnblogs.com/Purple_Xiapei/category/378741.htmlAbstract之前在(原創) 如何使用for_each() algorithm? (C/C++) (STL) 曾經討論過for_each(),不過當時功力尚淺,只談到了皮毛而已,這次看了effective STL的item 41、43後,對for_each()
2013-06-16 10:15:33
893
原创 Effective stl
第一章 容器 条款4:调用empty而不是检查size()是否为0条款7:如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉第二章 vector和string条款13:vector和string优先于动态分配的数组条款14:使用reserve来避免不必要的重新分配条款16:了解如何把vector和strin
2013-06-16 08:26:09
860
转载 static lib and dynamic lib
http://www.cnblogs.com/feisky/archive/2010/03/09/1681996.html库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 静态库和动态库的区别1. 静态函数库 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被
2013-06-04 22:30:05
1981
原创 cassandra hector使用方法
1.hector jar包下载 如果不想自己编译,那么可以直接从这个地址下载jar包:https://github.com/hector-client/hector/downloads(也可以下载源码自己编译,后续测试成功后加上来)2.在eclipse中新建一个空的java工程,导入下载打的jar包3.下载一个例子工程:https://github.com/zznate/h
2013-05-01 10:17:28
2902
原创 lvm学习
通用线程: 学习 Linux LVM,第 1 部分通用线程:学习 Linux LVM,第 2部分lvm逻辑卷管理器。最近做性能测试时把数据目录挂在到普通物理分区和lv,速度居然降低了70%多,df查看之后,发现使用默认的home目录,其实是一个逻辑卷。于是研究了一番lvmlvm简单的解释:一个磁盘、磁盘分区或者raid设备,都叫做物理卷,但是又不是真正意义的物理卷,等会解释
2012-11-03 16:39:45
726
原创 linux mdadm raid
一 磁盘分区1 fdisk /dev/sda2 n 新建一个分区3 m 查看命令二 格式化磁盘 mkfs mkfs.ext3 mkfs.ext4三 软raid管理1 创建raid1 mdadm --create --verbose /dev/md0 --level=raid1 --raid-devices=3 /dev/sdb1 /
2012-10-28 19:52:10
1161
原创 virtualbox ubuntu虚拟机不能上网问题解决
1.如果是物理机是通过有线上网,那么需要使用NAT网络连接方式,如果是无线网络,那么需要使用桥接方式上网对于桥接方式,需要把虚拟机的网关设置为物理机的网关:1)vi /etc/network/interfaces2)重启网络 /etc/init.d/networking restart如果还是不行,比如ping www.baidu.com ,报:ping: un
2012-10-28 10:37:10
17724
1
转载 9 个开始使用 C++11 的理由
如果你的代码工作正常并且表现良好,你可能会想知道为什么还要使用C++ 11。当然了,使用用最新的技术感觉很好,但是事实上它是否值得呢? 在我看来,答案毫无疑问是肯定的。我在下面给出了9个理由,它们分为两类:性能优势和开发效率。获得性能优势理由1:move语义(move semantics)。简单的说,它是优化复制的一种方式。有时候复制很显然是浪费的。如果你从一个临时的s
2012-06-24 10:08:33
1262
原创 C++11带来的lambda表达式
C++11带来了lambda表达式,可以简化程序的编写,使代码更加清晰。现在按照步骤来介绍lambda表达式:1.函数对象又叫仿函数,如果一个类或者结构体重载了operator()操作符,那么该类产生的对象就是一个函数对象,例如,有这样一个student结构体:struct Student { unsigned ID; string name; Student(unsig
2012-06-23 15:24:45
7546
原创 c++ type traits
使用C++的template时,有时需要确定一个模板类是不是一个特定类型的,有时因为不用的类型需要不同的处理方式,这是可以考虑使用type traits1.全特化:即所偶#includetemplateclass is_int{public: static const bool value = false;};template<>class is_int{p
2012-06-22 22:26:46
1124
原创 C++11带来的move语义
C++ 11带来了move语义,可以有效的提高STL的效率,这篇文章写的非常好,可以参考,这里对原文进行翻译,加入我自己的理解原文:http://www.cprogramming.com/c++11/rvalue-references-and-move-semantics-in-c++11.html先看看这个例子:#include using namespace std;
2012-06-15 23:53:28
28522
10
转载 boost::serialization
转自:http://www.cnblogs.com/edwardlost/archive/2011/03/16/1984623.htmlboost::serialization 基于 boost::archive 来完成任意复杂数据结构的序列化,boost::archive提供两个实现类来完成序列化、反序列化操作:boost::archive::text_oarchive
2012-06-10 18:18:57
4284
原创 Effective C++读书笔记16
条款51:编写new和delete时需固守常规(对这个条款体会不深)请记住:1.operator new应该内含一个无穷循环,并在其中尝试分配内存,如果它无法满足内存需求,就该调用new-handler。它也应该有能力处理0 byte申请。类专属版本则还应该处理比正确大小更大的错误申请。2.operator delete应该在收到null指针时不做任何事。类专属版本则还应该处理比正确大
2012-06-07 23:32:11
519
原创 Effective C++读书笔记15
8 定制new和delete条款49:了解new-handler的行为当operator new无法满足某一内存分配需求时,它会抛出异常。以前她会返回一个null指针,某些旧式编译器目前也还那么做。当new抛出异常以反映一个未获满足的内存需求之前,它会先调用一个客户指定的错误处理函数:new-handler,为了指定这个用以处理内存不足的函数,客户必须调用set_new_handler,在中:na
2012-06-06 23:55:05
618
原创 Effective C++ 读书笔记13(43~47)
条款43:学习处理模板化基类内的名称条款44:将与参数无关的代码抽离templates条款45:运用成员函数模板接受所有兼容类型条款46:需要类型转换时请为模板定义非成员函数条款47:请使用traits class表现类型信息STL主要由“用以表现容器、迭代器和算法”的template构成,但也覆盖若干工具性的template,例如advance,用来将某个迭代器移动某个给
2012-06-05 23:52:23
611
原创 Effective C++ 读书笔记12(41~42)
7 模板和泛型编程条款41:了解隐式接口和编译器多态面向对象编程世界总是以显式接口和运行期多态解决问题:class Widget{public: Widget(); virtual ~Widget(); virutal std::size_t size() const; virtual void normalize(); void swap(Widget& other)
2012-06-05 00:13:03
10272
原创 Effective C++读书笔记11(37~40)
条款37:绝不重新定义继承而来的缺省参数值本条款成立的理由非常明确:virutal函数系动态绑定,而缺省参数值却是静态绑定。对象的静态类型,就是他在程序被声明时所采用的类型。考虑以下的class继承体系:class Shape{public: enum ShapeColor{Red, Green, Blue}; virtual void draw(ShapeColor col
2012-06-02 23:38:38
689
原创 Effective C++读书笔记10(35~36)
条款35:考虑virtual函数以外的其他选择设计一款游戏,为不同的人物设计不同的计算健康指数的函数,那么使用virutal函数很自然:class GameCharacter{ public: virtual int healthValue() const; //...};现在来考虑virtual函数的替代方案。1.藉由Non-virtual interface手法实现Tem
2012-06-02 15:28:48
743
原创 Effective C++ 读书笔记9(32~34)
6 继承与面向对象设计条款32:确定你的public集成塑模出is-a关系请记住:public继承意味is-a,适用于base classes深证的每一件事情也一定适用于derived classes身上,因为每一个derived class对象也都是一个base class对象条款33:避免遮掩继承而来的名称class Base{private: in
2012-06-02 11:56:09
641
原创 Effective C++读书笔记8
条款28:避免返回handles指向对象内部成分class Point{ public: Point(int x, int y); //... void setX(int newVal); void setY(int newVal); //...};struct RectData{ Point ulhc; Point lrhc;};class Rectangle{
2012-05-30 23:25:41
927
原创 Effective C++ 读书笔记7
条款23:宁以non-member,non-friend替换member函数请记住:宁可拿non-member non-friend函数替换member函数,这样做可以增加封装性,包裹弹性和机能扩展性条款24:若所有参数皆需类型转换,请为此采用non-member函数请记住:如果你需要为某个函数的所有参数(包括this指针所指的那个隐喻参数)进行类型转换,那么这个函数必
2012-05-27 21:40:38
638
原创 Effective C++ 读书笔记6
4 设计与声明条款18:让接口容易被正确使用,不易被误用条款19:设计class犹如设计type条款20:宁以pass-by-reference-to-const替换pass-by-valueby value方式比by reference方式成本大,因为会调用类的拷贝构造函数,销毁时会调用析构函数,如果类内还有类,对应的类的拷贝构造函数和析构函数都会被调用,
2012-05-25 22:53:52
527
原创 Effective C++读书笔记5
条款15:在资源管理类中提供对原始资源的访问资源管理类很好,但是有许多API 直接指涉资源管理类所管理的资源,那么只能绕过资源管理对象直接访问原始资源。条款13:使用智能指针保存工厂函数如CreateInvestment的调用结果:std::tr1::shared_ptr pInv(CreateInvestment());假设你希望以某个函数处理Investment对象,像这样:i
2012-05-24 22:17:02
770
原创 Effective C++ 读书笔记4
条款12:复制对象时勿忘其每一个成分如果你声明自己的拷贝函数,意思是告诉编译器你不喜欢缺省实现中的某些行为。编译器仿佛被冒犯似得,会以一种奇怪的方式回敬:当你的实现代码几乎必然出错时却不告诉你:void logCall(const std::string& funcName);class Customer{ public: //... Customer(const Custo
2012-05-21 23:51:37
510
原创 Effective C++读书笔记3
条款8: 别让异常逃离析构函数C++并不禁止析构函数吐出异常,但不鼓励这样做。但如果你的析构函数必须执行一个动作,而该动作可能会在失败时抛出异常,该怎么办?两个办法解决:一是 如果抛出异常程序就结束,通常通过调用abort函数完成:DBConn::~DBConn(){ try{ db.close(); }catch(){ std::abort();
2012-05-20 13:34:21
507
原创 Effective C++读书笔记2
条款4 确定对象被使用前已被初始化 读取未初始化的值会导致不明确的行为,在某些平台上,仅仅只是读取未初始化的值,就可能让你的程序终止运行。对象的初始化动作何时一定发生,何时不一定发生的规则很复杂,,最佳解决办法就是:永远在使用对象之前先将它初始化:对于内置类型,手动完成,对于非内置类型,由构造函数来完成。这个规则容易奉行,重要的是不要混淆赋值和初始化:class PhoneNu
2012-05-19 23:41:59
556
原创 Effective C++ 读书笔记1
条款1 视C++为一个语言联邦 今天的C++已经是个多重范型编程语言,一个支持过程形式、面向对象形式、函数形式、泛型形式、元编程形式的语言。为了理解C++,必须认识其主要的次语言,总共4个:1.C2.Object-Oriented C++3.Template C++4.STL条款2 尽量以const, enum, inline替换#define(即宁可以编译
2012-05-19 14:14:27
697
原创 mmap测试
#include "mmap_fstream.h"#include "log.h"#include #include #include #include #include #include #include #include using namespace std;using namespace log4cplus;using namespace log4cplus::h
2012-05-07 23:32:30
737
原创 linux下cdt使用技巧总结
1.在cdt中,build时默认的命令是make,但是也可以修改,在工程配置中,点击C/C++ Build,有个builder settings,去掉 use default build command,就可以修改build的命令了,至于可以修改成其他什么命令,我不知道,呵呵,但是可以给make命令后边添加一些选项;下边还有一个Generate Makefiles automatically,如果
2012-05-06 17:13:52
2628
原创 thrift例程编译报错原因和解决方法总结
thrift里自带的turoral,使用make编译时经常会报错,总结如下:1.如果出现如下错误: error: ‘uint8_t’ does not name a type error: ‘uint32_t’ does not name a type编译时需要加上:-DHAVE_NETINET_IN_H如果是在cdt
2012-05-06 15:51:14
9510
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人