自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 C++之智能指针

我们都知道,C和C++常被人诟病的一点就是程序员需要自己来维护对动态内存的申请和释放,具体来说就是malloc/free和new/delete的成对出现。能够保证它们成对出现,是一个良好的编程习惯,但是即使做到这一点,就能够保证万无一失吗?我们看一个例子:    我们先定义一个简单的类A:1class A2

2012-11-28 15:27:58 369

原创 跟我一起学习C++虚函数--第五篇

在前一篇,我们讨论了在多重继承情况下,具有虚函数的类的内存布局情况。本篇将进一步探索在多重虚拟继承情况下的内存布局情况。          在讨论多重虚拟继承前,我们先对《 浅析GCC下C++多重继承 & 虚拟继承的对象内存布局》中的例子进行扩充。先看看带有虚函数的单一虚拟继承情况下类的内存布局。                 先看例子:

2012-07-18 12:51:49 413

原创 跟我一起学习C++虚函数--第四篇

在前一篇,我们讨论了在多继承情况下,具有虚函数的类的内存布局情况。本篇将进一步探索在多重继承,即具有重复继承的情况下的内存布局情况。在阅读本篇和下一篇之前,建议先阅读本博客另一篇博文《浅析GCC下C++多重继承 & 虚拟继承的对象内存布局》。       先说一点题外话,细心的读者可能会发现,我们在探索不同情况下类的内存布局时,总是先通过查看类的大小以及其中各个成员变量的地址来进行分析

2012-07-18 12:51:09 389

原创 跟我一起学习C++虚函数--第三篇

上一篇我们讨论了在单一继承的情况下,具有虚函数的类对象的内存布局情况。本篇主要讨论在多继承情况下,对象的内存布局。    看例子:01#include 02using namespace std;03 0

2012-07-18 12:50:42 444

原创 跟我一起学习C++虚函数--第二篇

上一篇,我们讨论了带有虚函数的对象的内存布局情况。这一篇,主要讨论带有虚函数的类在单一继承情况下的内存布局情况。     还是从例子入手:01#include 02 03using namespace std;

2012-07-18 12:50:12 1565

原创 跟我一起学习C++虚函数--第一篇

我们知道,虚函数作为C++实现多态的方式,具有强大的RTTI(RunTime Type Identification)功能。虚函数使用起来比较简单,但是也很容易出错。本系列将带着你一步一步了解虚函数的内部实现机制,在掌握原理后,我相信你会对虚函数以及C++本身会有进一步的认识和理解。    注:本系列所有的关于C++虚函数的探索都是在GCC平台上进行的。一、

2012-07-18 12:49:39 1007

原创 浅析GCC下C++多重继承 & 虚拟继承的对象内存布局

继承是C++作为OOD程序设计语言的三大特征(封装,继承,多态)之一,单一非多态继承是比较好理解的,本文主要讲解GCC环境下的多重继承和虚拟继承的对象内存布局。一、多重继承      先看几个类的定义:01class Top02 {03pu

2012-07-18 12:48:40 853

原创 MySQL Sharding可扩展设计

一.背景            我们知道,当数据库中的数据量越来越大时,不论是读还是写,压力都会变得越来越大。采用MySQL Replication多master多slave方案,在上层做负载均衡,虽然能够一定程度上缓解压力。但是当一张表中的数据变得非常庞大时,压力还是非常大的。试想,如果一张表中的数据量达到了千万甚至上亿级别的时候,不管是建索引,优化缓存等,都会面临巨大的性能压力

2012-06-26 11:08:16 434

原创 文本去重之SimHash算法

说到文本相似性计算,大家首先想到的应该是使用向量空间模型VSM(Vector Space Model)。使用VSM计算相似度,先对文本进行分词,然后建立文本向量,把相似度的计算转换成某种特征向量距离的计算,比如余弦角、欧式距离、Jaccard相似系数等。这种方法存在很大一个问题:需要对文本两两进行相似度比较,无法扩展到海量文本的处理。想想像Google这种全网搜索引擎,收录了上百亿的网页,爬虫

2012-06-25 21:37:12 1093

原创 MySQL Replication可扩展设计

在实际中,采用单机MySQL数据库的系统可能会随着数据量的不断增长,造成读写压力越来越大,效率越来越低,对外提供的服务也就越来越差。同时,由于没有冗余数据的存在,单机数据库的数据安全性也有潜在的隐患。因此,我们可以采用MySQL提供的replication方案来对系统进行升级改造,在提高数据安全性的同时,使系统具有良好的可扩展性。        在讨论设计方案前,先简要介绍下 re

2012-06-25 16:54:10 460

原创 字符串系列之最长回文子串

问题描述:    给定一个字符串S=A1A2...An,要求找出其最长回文子串(Longest Palindromic Substring)。所谓回文子串就是S的某个子串Ai...Aj为回文。例如,对字符串S=abcdcbeba,它的回文子串有:bcdcb,cdc,beb,满足题目要求的最长回文子串为bcdcb。推理思路:1.由于回文可能由奇数个字符组成,也可能由偶数个字符

2012-06-24 14:06:38 1940

原创 从min & max一窥linux设计

好吧,我承认我标题党了。但是我仍然建议你能够继续往下读,最多花上一分钟时间。当然,如果能够浪费你十分钟以上,我的目的便达到了,而你也会有不一样的体会。    问题:你会怎样实现min & max这两个函数呢?     我想大多数人的做法无非三种:1)定义宏;2)定义函数; 3)定义inline函数。      对于第二种方法,不用多说,功能如此单一的函数效率会有折扣;对于第

2012-06-23 16:40:49 561

原创 isdigit()极品实现

我不得不承认,在编程的世界,无奇不有,码农的创造力是无穷的,也是妙不可言的!只要涉及到效率,永远是没有最快,只有更快!    我们知道,在标准C中,有函数int isdigit(int c)可以用来判断字符c是否为0~9之间的数字。比如:1int a = isdigit('1');    //a == 1

2012-06-23 16:05:43 4796 2

原创 GNU C定义变长结构体

在进入主题之前,这里有一个问题:在C中可以定义长度为0的数组吗?     答案是:标准的C中是不可以的,GNU C中可以。     比如定义这样一个数组:int data[0]; 使用GCC可以编译通过,而在VS下报错“cannot allocate an array of constant size 0”。     OK,下面看看怎样在GNU环境下使用长度为0的数组魔法般

2012-06-22 22:16:09 1084 1

原创 Libnids---编写网络应用程序的利器

一.前言    Libnids是一个用于网络入侵检测开发的专业编程接口,它使用Libpcap进行数据包的捕获。同时,Libnids提供了TCP/IP数据流重组功能,因此省去了应用层自己考虑数据分片、重传等情况的麻烦。它是模仿了Linux 2.0.x的IP协议栈进行数据处理,因此非常稳定可靠。当然,libnids还有一项非常实用的功能,那就是:TCP端口扫描检测和异常数据包的检测功能。

2012-05-11 14:16:13 6460 2

空空如也

空空如也

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

TA关注的人

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