上一页 1 2 3 4 5 6 7 ··· 18 下一页

2012年10月23日

自己实现memcpy/strcpy/strcmp/strcat/strlen/strstr

摘要: 字节拷贝函数:void * memcpy1(void *dest, const void *src, size_t n){ assert(dest!=NULL&&src!=NULL); //有效性检测 if(dest == src) return dest; else if(dest < src) { const char *c_src = static_cast<const char *>(src); char *c_dest = static_cast<char *>(dest); while (n--) *... 阅读全文

posted @ 2012-10-23 18:10 linzuxin 阅读(266) 评论(0) 推荐(1) 编辑

C++中的空类,默认产生哪些类成员函数?

摘要: class Empty { public: Empty(); // 缺省构造函数 Empty( const Empty& ); // 拷贝构造函数 ~Empty(); // 析构函数 Empty& operator=( const Empty& ); // 赋值运算符 Empty* operator&(); // 取址运算符 const Empty* operator&() const; // 取... 阅读全文

posted @ 2012-10-23 17:44 linzuxin 阅读(171) 评论(0) 推荐(0) 编辑

2012年10月22日

定义一个宏获取结构体中变量相对结构体开始的偏移量

摘要: #include <iostream> using namespace std; struct test{ int a; char b; int c; char d; }; #define find(type, var) (unsigned int)(&(((type *)(0))->var)) int main() { int a = find(test, a); //0 int b = find(test, b); //4 int c = find(test, c); //8 int d = find(test, d); //12 cout << a 阅读全文

posted @ 2012-10-22 14:26 linzuxin 阅读(210) 评论(0) 推荐(0) 编辑

2012年10月21日

继承和组合的区别

摘要: 首先它们都是实现系统功能重用,代码复用的最常用的有效的设计技巧,都是在设计模式中的基础结构。相信大家已了解的,类继承允许我们根据自己的实现来覆盖重写父类的实现细节,父类的实现对于子类是可见的,所以我们一般称之为白盒复用。对象持有(其实就是组合)要求建立一个号的接口,但是整体类和部分类之间不会去关心各自的实现细节,即它们之间的实现细节是不可见的,故成为黑盒复用。 继承是在编译时刻静态定义的,即是静态复用,在编译后子类和父类的关系就已经确定了。而组合这是运用于复杂的设计,它们之间的关系是在运行时候才确定的,即在对对象没有创建运行前,整体类是不会知道自己将持有特定接口下的那个实现类。在扩展方面组合比 阅读全文

posted @ 2012-10-21 22:02 linzuxin 阅读(366) 评论(0) 推荐(0) 编辑

2012年10月18日

RAID详解[RAID0/RAID1/RAID10/RAID5]

摘要: 一.RAID定义RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损 失而开发出一定水平的数据保护技术。RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。RAID可以充分发 挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会 受到损坏硬盘的影响。二、 RAID的几种工作模式(仅讨论 RAI 阅读全文

posted @ 2012-10-18 15:39 linzuxin 阅读(249) 评论(0) 推荐(0) 编辑

2012年10月7日

百度2013校园招聘笔试题(含自己整理的答案)

摘要: 一:简答题(30)1:数据库以及线程发生死锁的原理及必要条件,如何避免死锁答:产生死锁的原因主要是:(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。产生死锁的四个必要条件:(1)互斥条件:一个资源每次只能被一个进程使用。(2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3)不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。避免死锁:死锁的预防是通过破坏产生条件来阻止死锁的产生,但这种方法破坏了系统的并行性和并发性。死锁产生的前三个条件是死锁产生的必要条件, 阅读全文

posted @ 2012-10-07 17:35 linzuxin 阅读(156) 评论(0) 推荐(0) 编辑

2012年9月26日

典型递归算法例子-------Python实现

摘要: #!/usr/bin/python #coding=utf-8 ''' Created on 2012-9-25 @author: linzuxin ''' status = {} def factorial(n): ''' 输入一个数字,求其阶乘。status是一个hash,用来存储中间结果,避免重复计算 @param n: 要求的数字 @return: n的阶乘 ''' if n == 0 or n == 1: status[0] = 1 status[1] = 1 re... 阅读全文

posted @ 2012-09-26 16:56 linzuxin 阅读(266) 评论(0) 推荐(0) 编辑

2012年9月25日

0/1背包问题--Dynamic Programming

摘要: DP问题的特征:重复子问题存在最优子集背包问题属于经典的DP问题,而0/1背包问题是属于最简单的情况。0/1的意思是每种物品只有一件,要么放入背包中,要么不放问题定义:有N个物品,要放入容量为W的背包中,第i件物品重量为w(i),价值为v(i),问要怎样放才能在不超过背包容量的基础上,获得最大的价值。算法描述:需要用到递归的思想,定义A(i, j)为前i个物品中在容量为j的情况下所能达到的最大价值,则A(0,j) = 0,A(i,0) = 0(i <= N and j <= W).如果w(i) > j时,说明第i件物品不能放入背包中,价值不变,所以A(i, j) = A(i 阅读全文

posted @ 2012-09-25 22:28 linzuxin 阅读(181) 评论(0) 推荐(0) 编辑

2012年9月21日

C++运算符优先级

摘要: 优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右()圆括号(表达式)/函数名(形参表).成员选择(对象)对象.成员名->成员选择(指针)对象指针->成员名2-负号运算符-表达式右到左单目运算符(类型)强制类型转换(数据类型)表达式++自增运算符++变量名/变量名++单目运算符--自减运算符--变量名/变量名--单目运算符*取值运算符*指针变量单目运算符&取地址运算符&变量名单目运算符!逻辑非运算符!表达式单目运算符~按位取反运算符~表达式单目运算符sizeof长度运算符sizeof(表达式)3/除表达式/表达式左到右双目运算符*乘表 阅读全文

posted @ 2012-09-21 21:25 linzuxin 阅读(152) 评论(0) 推荐(0) 编辑

模板函数和模板类

摘要: 定义3个参数,第3个参数用于表示返回值类型template <typename T1,typename T2,typename T3> inline T3 const& max (T1 const& a, T2 const& b) { // if a < b then use b else use a return a < b ? b : a; } template <class Type>class TNumber{public:~TNumber(){}void SetItem(Type);Type GetItem();privat 阅读全文

posted @ 2012-09-21 21:01 linzuxin 阅读(112) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 ··· 18 下一页

导航