- 博客(24)
- 资源 (3)
- 收藏
- 关注
转载 ACE中的设计模式,入门
最近在整理以前所看文章内容时,发现了几篇2003年程序员合订本里关于 ACE的文章,当年这几篇文章中所谈到的内容就让人非常兴奋,因为在那个国内热火朝天学习设计模式的几年里,这几篇文章因为其内容涉及到了bridge, strategy, adapter, facade等模式在这个网络通信框架中实打实的应用,让我切身体会到了面向对象设计模式的强大火力。同时因为这几篇文章绝不是我
2014-09-14 14:30:46 728
原创 C++指向类的方法的指针与命令模式
#include #include using namespace std;void sar(){}static void rar(){}class Foo{public:typedef void (Foo::*ACTION)(); // Foo空间内指向Foo成员的函数指针类型,可以指foo typedef void (*AC2)();
2014-09-04 00:35:33 801
原创 const
const与指针void foo(){ char sz[] = "Hello World"; char *psz = sz; char *const cpsz = sz; const char *pcsz = sz; const char * const cpcsz = sz; psz[0] = 'J'; // ok// cpsz++;
2014-01-04 11:23:44 646
原创 随机密码
#include #include #include #define CHAR_SMALL_CASE 0#define CHAR_UPPER_CASE 1#define CHAR_DIGIT 2#define CHAR_SPECIAL 3const char c_small_case[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'
2013-07-20 12:19:53 668
原创 一道面试题
#include using namespace std;class Base{public: Base() { cout << "100" << endl; } virtual ~Base() { cout << "110" << endl; }};class Derived_A : public Base{public: Derived_A() { cout << "
2013-03-28 14:42:07 842
原创 用二级指针实现单链表插入操作
假如要在A之前插入一个节点D,那么只需修改1st和5th的值即可。对链表的插入删除的操作其实就是对“橙黄色的变量“里的值得修改,为了顺序访问”橙黄色的变量“,定义一个变量p来遍历他们(橙黄色变量是node*类型,那么p就是node**类型)。// 一般1st这个变量我们会取名叫head,那么p的初始化式就是node ** p = &head;// 遍历操作就是while(p){
2013-03-22 14:38:57 2092
原创 可重入与线程安全(Reentrancy and Thread-Safety)
转自Qt Assistant : Reentrancy and Thread-SafetyThroughout the documentation, the terms reentrant and thread-safe are used to mark classes and functions to indicate how they can be used in multithread
2013-03-21 16:39:28 1606
原创 一个简单的哈希表的实现
//////////////////////////// 用连地址表示的哈希表//////////////////////////#include using namespace std;template class Node{public: Node(T val = 0) : key(val), next(NULL), val(88) { // 为什么这里的赋值通过of
2013-03-19 15:20:27 1614 1
原创 用二级指针删除单链表的一个节点
一般删除方法:node *remove_if(node *head, remove_fn rm){ node *cur = head, *prev = NULL; while(cur) { node *next = cur->next; if( rm(cur) ) { if(prev)
2013-03-15 15:09:51 995
转载 系统引导与启动顺序
转载自:http://www.chinaz.com/server/2007/0828/15133.shtml全世界linuxer都知道grub是什么东西,但对于MBR引导到grub再引导到具体操作系统的这个流程可能有不少朋友就比较迷糊了。这不,cu上一位朋友就发出了这样一个求助贴:假如现在一台电脑上装了WIN2000系统,那么我现在在装上LINUX系统和GRUB,那么假如把GRUB装在主分
2013-01-24 10:04:39 1522
原创 补码
问:补码中谁跟谁互补?补和模的概念息息相关,首先解释什么是互补。计算机中的两个数互补的意思:对于模M,a与(a + n x M)互补,例如对于M=12,1和13互补,2和14互补。而非1和11互补,2和10互补。(计算机跟几何中补角的概念不一样)给出16位,可以表示从0000到ffff,如下表:二进制无符号有符号000000000
2013-01-23 15:16:57 705
原创 printf 和 scanf
int printf(const char *format, ...);format包含: -- ordinary char -- conversion specificationconversion specification形式如下: %【flags】【width】【.precision】【h/l/L】conversion_char【有效的fla
2013-01-17 11:23:51 1048
原创 Windows下Tora连不上Oracle
来自官方解释:Important! Because of legal reasons TOra comes with a stub oci.dll file which makes it possible to use TOra with non Oracle databases even when Oracle client is not installed. If you need to
2013-01-09 14:39:49 1059
原创 Qt Meta Object
在类中用Q_PROPERTY宏声明类的某个属性后,这个属性就具有了Meta-Object的特性了,如:class Person : public QWidget{ Q_OBJECT /* 声明Person类有一个QString类型属性name,此属性可以通过getName读取,通过setName设置 */ /* 这些信息是告知Meta-Object Syste
2013-01-08 20:55:03 649
原创 C语言中的常量和字面值
数据类型 和字面值 的关系:如果有语句int a = 1234;那么int就是数据类型,a是变量,1234是字面值。int的字面值也就是可以用来初始化int类型变量的东西(不要说用其他变量也可以初始化哦!)。同样,char的字面值当然是机器的ASCII字符集了,分为可见的和不可见的字符,表示方法有两种,见下面程序。常量(constant)可以理解为所谓的字面值,常量和用const修
2012-12-11 21:38:23 3264
原创 工厂模式
最初的解决方案:class PizzaStore{public: Pizza *orderPizza(string type){ Pizza *pizza;/* comment_1:由于要不断有新的类型的pizza产生,这段代码要经常修改 */ if (type == aaa) { pizza = new aaa; } else if (type == bbb)
2012-11-22 14:34:52 570
原创 对非递归中序遍历二叉树的理解记忆
给定一颗二叉树,肯定是从根开始访问。可以按照root---->left---->right的顺序进栈(Push),要是中序遍历,就得按照left---->root---->right的顺序出栈(Pop & Visit),所以总的顺序应该是Push(root)---->Push(left)---->Pop & Visit(left)---->Pop & Visit(root)--
2012-11-21 15:40:05 531
原创 c++中的类型转换
一 隐式转换:说明:cpp在计算表达式之前将表达式的操作数转换为统一类型1. bit数小于int的都转换为int,如果int不够会转换为unsigned int(32位系统short都是16bit的,int32bit,所以此情况不发生);2. int向long转换同上,如果long不够宽,转换成unsigned long;3. unsigned int和int一起都会被转为unsi
2012-11-21 11:32:37 671
原创 分段与分页,LDT与GDT
一个进程的地址空间,从用户的角度看,是由若干的段(segment)组成的,这些段可以分为两种:私有段(private)、共享段(shared)。cpu也是按照用户的逻辑进行内存管理的(分段),Intel Pentium规定了每种段最多有8K个,每个segment最大4G。一个cpu对应有一个GDT(global descriptor table),该表详细描述了shared segment,这
2012-11-20 21:01:19 3266
转载 C/C++ 语言中的表达式求值
裘宗燕:C/C++ 语言中的表达式求值-----------------------------------------------------经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?”m = 1; n = m+++m++;最近有位不相识的朋友发email给我,问为什么在某个C++系统里,下面表达式打印出两个4,而不是4和5:a = 4; co
2012-11-18 14:51:57 600
原创 语法小贴士
1. 在stddef.h中可以看到C/C++关于NULL符号的定义,如下:#ifndef NULL#ifdef __cplusplus#define NULL 0#else#define NULL ((void *)0)#endif#endif2. 每个命名空间是一个 作用域,但是可以在多个文件中定义,如下:/* namespace 由下面四个文件组成
2012-11-16 16:39:32 495
原创 你应该知道的C++常识
1. c++构造函数中可以抛出异常,但是应该保证在析构函数中正确区分已经构造和未构造的成员;2. c++析构函数中不应该抛出异常,会造成程序terminate,因为出现异常的时候首先会调用析构对象,此时如果在析构函数中又引发新的异常,将无法处理;3. catch中处理的类型必须是已经定义了类型,只声明的类型不行,catch的形参名可有可无;4. catch形参与异常类型严格匹配,但允许
2012-11-16 10:59:14 575
原创 MinGW和Cygwin的区别
MinGW是GNU提供的基于MSVCRT.DLL(Microsoft C Runtime Library,该文件提供标C函数如printf的实现)的win32程序开发工具集;Cygwin利用windows API重新实现了windows平台的GNU工具,如gdb等,并且提供一个库cygwin.dll,该库提供了基于win32API的posix函数的实现(如fork),这样在windows平台下开发
2012-09-22 19:48:08 662
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人