摘要: 原帖:http://blog.csdn.net/robinson_0612/article/details/7406672No SQL,No cost. SQL语句是造成数据库开销最大的部分。而不良SQL写法直接导致数据库系统性能下降的情形比比皆是。那么如何才能称得上高效的SQL语句呢?一是查询优化器为当前的SQL语句生成最佳的执行计划,保证数据读写使用最佳路径;二是设置合理的物理存储结构,如表的类型,字段的顺序,字段的数据类型等。本文主要描述如何编写高效的SQL语句并给出示例。下面的描述主要分为三个部分,一是编写高效SQL语句,二是使用索引提高查询性能的部分,三是总结部分。一、编写高效SQL 阅读全文
posted @ 2013-08-20 16:38 绿茵飞狼 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 变量替换: ${variablename} 显示变量名BashShell可以进行变量的条件替换,既只有某种条件发生时才进行替换,替换条件放在{}中.(1)${value:-word}当变量未定义或者值为空时,返回值为word的内容,否则返回变量的值.(2)${value:=word}与前者类似,只是若变量未定义或者值为空时,在返回word的值的同时将word赋值给value(3)${value:?message}若变量以赋值的话,正常替换.否则将消息message送到标准错误输出(若此替换出现在Shell程序中,那么该程序将终止运行)(4)${value:+word}若变量以赋值的话,其值才用 阅读全文
posted @ 2013-07-29 10:16 绿茵飞狼 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 简单而有用的nohup命令在UNIX/LINUX中,普通进程用&符号放到后台运行,如果启动该程序的控制台logout,则该进程随即终止。要实现守护进程,一种方法是按守护进程的规则去编程(本站有文章介绍过),比较麻烦;另一种方法是仍然用普通方法编程,然后用nohup命令启动程序:nohup<程序名>&则控制台logout后,进程仍然继续运行,起到守护进程的作用(虽然它不是严格意义上的守护进程)。使用nohup命令后,原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用,实现了完整的守护进程功能。For example:如何远程启动WebLogic服 阅读全文
posted @ 2013-07-26 11:28 绿茵飞狼 阅读(210) 评论(0) 推荐(0) 编辑
摘要: $0, $1, $2,等等...位置参数,从命令行传递给脚本,或者是传递给函数.或者赋职给一个变量.$0表示当前执行的进程名,script 本身的名字,或者在正则表达式中表示整行输出$#命令行或者是位置参数的个数.$*所有的位置参数,被作为一个单词.注意:"$*"必须被""引用.$@与$*同义,但是每个参数都是一个独立的""引用字串,这就意味着参数被完整地传递,并没有被解释和扩展.这也意味着,每个参数列表中的每个参数都被当成一个独立的单词.注意:"$@"必须被""引用. 其他的特殊参数$-传递给 阅读全文
posted @ 2013-07-17 10:20 绿茵飞狼 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 定义大端 一个Word中的高位的Byte放在内存中这个Word区域的低地址处。 小端 一个Word中的低位的Byte放在内存中这个Word区域的低地址处。判断CPU是大端或小端 1 #include <stdio.h> 2 3 int main() 4 { 5 union w 6 { 7 int a; //4 bytes 8 char b; //1 byte 9 } c;10 11 c.a=1;12 13 if (c.b==1)14 printf("It is Little_endian!\n");... 阅读全文
posted @ 2013-06-06 10:04 绿茵飞狼 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 关联式容器每个元素都有一个键值和一个实值(set键值就是实值),关联式容器没有所谓头尾。一般而言,关联式容器的内部结构是一个平衡二叉树。二叉搜索树:任何节点的键值一定大于其左子树中的每一个节点的键值,并小于其右子树中的每个节点的键值。RB-tree(红黑树)规则:1、 每个节点不是红色就是黑色。2、 根节点为黑色。3、 如果节点为红,其子节点必须为黑。4、 任一节点至NULL的任何路径,所含之黑节点数必须相同。set,所有元素都会根据元素的键值自动被排序。set元素的键值就是实值。set不允许两个元素有相同的键值。不能通过迭代器修改set的元素值,因为set的元素值就是其键值,关系到set元素 阅读全文
posted @ 2013-05-29 14:57 绿茵飞狼 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 所谓序列式容器,其中的元素都可序的,但未必是有序。vector,与array非常相似,唯一的区别是array是静态空间,一旦配置了就不能改变;vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。普通指针可以作为vector的迭代器。为了降低空间配置时的速度成本,vector实际配置的大小可能会比客户端需求量更大一些,以备将来可能的扩充,可通过capacity方法获取容量大小。vector的所谓动态增加大小,并不是在原空间之后接续新空间(因为无法保证原空间之后尚有可供配置的空间),而是以原大小的两倍另外配置一块较大的空间,然后将原来的内容拷贝过来,然后才开始在原内容之 阅读全文
posted @ 2013-05-29 14:25 绿茵飞狼 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 迭代器:提供一种方法,使之能够依序巡访某个容器内所有的元素,而又无需暴露该容器的内部表达方式。Traits编程技法迭代器所指对象的型别,称之为该迭代器的value type。 1 template <class T> 2 struct MyIter 3 { 4 typedef T value_type //内嵌型别声明 5 T *ptr; 6 MyIter(T *p = 0) : ptr(p) { } 7 T& operator*() const {return *ptr} 8 // .... 9 };10 11 12 template <clas... 阅读全文
posted @ 2013-05-28 16:20 绿茵飞狼 阅读(316) 评论(0) 推荐(0) 编辑
摘要: traits相关总结:1.typedef 可以在class或者struct中定义template<T>class CXX{ typedef T value_type;};同样,template可以嵌入template!2.见到template<>多半是在模板特化。特化分全特化、偏特化等。熟记这点,否则有些地方看不懂。3.template其实就是扩展编译器,让代码自动生成。其功能等同于#define之类。说白了,c++的这些东西就是让你的代码可以重用,减少日后不必要的编程量。4.traits就目前我们能用到的东西而言,就是它能统一接口,让你的template可以兼容基本类 阅读全文
posted @ 2013-05-17 10:09 绿茵飞狼 阅读(254) 评论(0) 推荐(0) 编辑
摘要: STL的容器可以分为以下几个大类:一:序列容器, 有vector, list, deque, string.二:关联容器,有set, multiset, map, mulmaphash_set,hash_map, hash_multiset, hash_multimap三:其他的杂项:stack, queue, valarray, bitsetSTL各个容器的实现:(1) vector内部数据结构:数组。随机访问每个元素,所需要的时间为常量。在末尾增加或删除元素所需时间与元素数目无关,在中间或开头增加或删除元素所需时间随元素数目呈线性变化。可动态增加或减少元素,内存管理自动完成,但程序员可以使 阅读全文
posted @ 2013-05-14 16:21 绿茵飞狼 阅读(571) 评论(0) 推荐(0) 编辑