摘要:作者:deerchao 原文链接在此 说明:正则表达式通常用于两种任务:1.验证,2.搜索/替换。用于验证时,通常需要在前后分别加上^和$,以匹配整个待验证字符串;搜索/替换时是否加上此限定则根据搜索的要求而定,此外,也有可能要在前后加上\b而不是^和$。此表所列的常用正则表达式,除个别外均未在前后加上任何限定,请根据需要,自行处理。说明正则表达式网址(URL)[a-zA-z]+://[^\s]*IP地址(IP Address)((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)电子邮件(Email)\w...
阅读全文
摘要:本文为转载文章,觉得很有意思,原文在这里。 我们知道,计算机中有很多概念并不容易理解,有些时候一个好的比喻能胜过很多句解释。下面两个是我看到的两个很精彩的比喻,拿出来和大家分享一下。 第一比喻是关于吞吐量(throughput)和延迟(latency)的。如果你要搞网络性能优化,这两个概念是你必须要知道的,它们看似简单实则不是。我相信包括我在内的很多人都曾经认为大的吞吐量就意味着低延迟,高延迟就意味着吞吐量变小。下面的比喻可以解释这种观点根本不对。该比喻来自这里,我来做个大体意译(非逐字翻译)。 我们可以把网络发送数据包比喻成去街边的 ATM 取钱。每一个人从开始使用 ATM 到取钱...
阅读全文
摘要:这是一篇来自酷壳的文章,原文在这里。 我们有很多Coding Style 或 代码规范。但这一条可能会经常被我们所遗忘,就是我们经常会在函数的参数里使用bool参数,这会大大地降低代码的可读性。不信?我们先来看看下面的代码。 当你读到下面的代码,你会觉得这个代码是什么意思?widget->repaint(false); 是不要repaint吗?还是别的什么意思?看了文档后,我们才知道这个参数是immediate, 也就是说,false代表不立即重画,true代码立即重画。 Windows API中也有这样一个函数:InvalidateRect,当你看到下面的代码,你会觉得是什么...
阅读全文
摘要:在CSDN偶遇一个帖子。基本描述如下:// a.h#ifndef A_H_INCLUDED#define A_H_INCLUDED class A{private: B b;}; #endif // A_H_INCLUDED // a.cpp 仅仅作为例子, 没什么意义#include "a.h" // b.h#ifndef B_H_INCLUDED#define B_H_INCLUDED class B{private: A a;}; #endif // B_H_INCLUDED // b.cpp#include "b.h" // main.cpp#i
阅读全文
摘要:先来看一个程序:/************************************************************* 函数指针与函数名**************************************************************/#include <iostream>using namespace std;int max(int, int);int main(){ cout<<max(1, 2)<<endl; cout<<(*max)(1, 2)<<endl; cout<&l
阅读全文
摘要:首先引入《C++ Common Knowledge Essential Intermediate Programming》(中文翻译叫《C++必知必会》)中条款29 虚构造函数与Prototype模式中的一个例子: 假如你现在身处一家瑞典餐馆,并且想点菜。不幸的是,你的瑞典水平仅仅局限于技术领域或“粗口”(一般是二者的结合)。菜单是用瑞典文写的,你看不懂,但是你注意到餐馆对面的一位绅士正在享受美餐。于是,你把侍者叫过来,说道: 如果那位先生在吃鱼的话,我就点一份鱼。如果他在吃意大利面条的话,我就要一份意大利面条。如果他在吃鳗鱼的话,我就要一份鳗鱼。如果他在金橘蜜饯的话,我就点一份金橘蜜...
阅读全文
摘要:中国象棋,我的最爱,我在QQ游戏中已是大师级别。 将与帅的走棋规则无需多言,《编程之美》给出一题目:请编写一个程序,输出A、B所有合法位置,要求在代码中只能使用一个变量。 《编程之美》中的实现代码如下:#include <stdio.h>#define HALF_BITS_LENGTH 4 //这个值是记忆存储单元长度的一半,这里为4bit#define FULLMASK 255 //这个数字表示一个全部bit的mask,在二进制表示中,它是11111111#define LMASK (FULLMASK...
阅读全文
摘要:《编程之美》第一章给出了一个面试题: 写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率,程序越精简越好,计算机语言不限。例如,你可以实现下面三种情况: 1.CPU的占用率固定在50%,为一条直线; 2.CPU的占用率为一条直线,但具体占用率由命令行参数决定(参数范围1~100); 3.CPU的占用率状态是一条正弦曲线。 最一般的思路:CPU占用率为一条直线,首先要搞清楚什么是CPU占用率,CPU占用率是你运行的程序占用的CPU资源,表示你的机器在某个时间点的运行程序的情况。其实在某一时间点,CPU要么被占用,要么没被占用,即占用率要么为1...
阅读全文
摘要:在做串口通信,统计解包出错数的项目中,我利用#pragma pack(1)来对齐结构体: #define INFO_LEN 10#pragma pack(1)struct _packet{ unsigned char packet_head; //包头 unsigned int info_length; //消息长度 unsigned char info_content[INFO_LEN]; //消息主体 unsigned ch...
阅读全文
摘要:这是实习工作中遇到的一个问题,其实不能算是一个问题,只能算一个注意点吧。 看程序:unsigned char* read_file(int fd){ unsigned char buffer[256]; memset(buffer, '\0', sizeof(buffer)); read(fd, buffer, sizeof(buffer)); return buffer;} 上面程序是有问题的,unsigned char buffer[256]定义的是一个局部变量,但程序跳出read_file函数时,buffer马上释放掉了,此...
阅读全文
摘要:代理类的引入 为什么需要代理,自然是客户端与服务器端不能正常沟通,需要第三方来进行沟通,这第三方自然成了代理,准确来说,应该是服务器端的代理,用来实现的代理功能的类就叫代理类。 那么什么时候客户端与服务器端不能正常沟通呢?《C++沉思录》有言:C++容器通常只能包含一种类型的对象。那么我们怎样才能设计一个C++容器,使它有能力包含类型不同而彼此相关的对象呢?首先想到的是容器里存储的是不是对象本身,而是指向对象的指针。这虽然看起来好像解决了问题,但存在两个缺点:一是存储的是指向对象的指针,不是对象本身,这样当对象被析构而指针没有被delete掉时,成了野指针。二是存储指针增加了内存分配的额外..
阅读全文
摘要:上周实习做Fcitx输入法时碰到一个字符数组的问题,因基础的不扎实,导致经调试了几分钟才发现问题所在。 字符数组初始化常见有两种格式:char arr_test[10] = { 'h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd'}; 和char arr_test[11] = "helloworld"; 为什么是一样的内容,两个数组的长度不一样,一个是10,一个是11,因为
阅读全文
摘要:这是我见过写的一篇较好的关于Singleton模式的文章,特转过来细研究. 原文地址:http://www.cnblogs.com/loveis715/archive/2012/07/18/2598409.html 引子 “请写一个Singleton。”面试官微笑着和我说。 “这可真简单。”我心里想着,并在白板上写下了下面的Singleton实现: 1 class Singleton 2 { 3 public: 4 static Singleton& Instance() 5 { 6 static Singleton singleton; 7 ...
阅读全文
摘要:char* to std::string std::string has a constructor for this: const char *s = "Hello, world!";std::string str(s); note: Make sure thar your char* isn't NULL, or else the behavior is undefined. if you already know size of the char*, use this insteadchar* data = ...;int size = ...;std::st
阅读全文
摘要:This is a excellent article aboutdestructor, copy constructor and copy assignment operator.Original text ishttp://stackoverflow.com/questions/4172722/what-is-the-rule-of-three.IntroductionC++ treats variables of user-defined types withvalue semantics. This means that objects are implicitly copied ..
阅读全文
摘要:我曾以为老师的话是真的,我曾以为老师会为自己说出的话负责,但事实证明很多时候是照本宣科。 这次在公司做Fcitx输入法时,想到退格删除的字节数的不同,即退格键一按到底删除的是一个字节还是两个字节或者多个。在测试中我发现,中文汉字占了三个字节,竟然占了三个字节,老师不是经常告诉我们汉字是占两个字节,但现在怎么占了三个字节,是老师的错还是程序的错,亦或本都没错,只是没有探其根本罢了。 说汉字占两个字节是从以Unicode的编码方式UCS-2来说的,但实际占三个字节,是从Unicode的实现方式UTF-8来说的。 先介绍下Unicode字符集吧。 什么是字符?什么是字符集? 字符是各种...
阅读全文
摘要:今天在阅读C++ primer时遇到如下一段代码:istream_iterator<int> in_iter(cin);//read ints from cinistream_iterator<int> eof;//istream "end" iterator//read until end of file,storing what read in vecwhile(in_iter != eof){ //increament advances the stream to the nest value //dereferent reads next v
阅读全文
摘要:今天在写了模板函数时出现下面情况:程序如下:#include <iostream>#include <string>using namespace std;template <class T> void swap(T &a,T &b)//swap already exist in STL{ T temp(a); a=b; b=temp;}int main(){ string a("hello"),b("world"); //int a=1,b=2; swap(a,b); cout<<&quo
阅读全文
摘要:this article is about how vptr and virtual table works,and it comes from http://www.dreamincode.net/forums/topic/45816-detail-about-how-vptr-and-virtual-table-works/Assumption: machine is 32-bit .Here I am going to explain How Virtual table, Virtual pointer for Virtual functions are internally worki
阅读全文
摘要:今天意外见识了这个名词是在CSDN帖子里http://topic.csdn.net/u/20120406/03/f59790a9-67b8-479c-9f43-9bc413fae761.html?95101 其实这个困惑早就出现了,记得最早是看到了这篇文章http://www.cnblogs.com/wenzhang/archive/2011/12/30/2308052.html,当时还请教了作者,但始终没有说服自己的理由,今天 再看到确实有种重见老朋友的感觉,所以就上网搜搜这方面的帖子了。 首先来看一个简单的例子吧:#include <iostream>using namespa
阅读全文