摘要:
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。本章系Java之美[从菜鸟 阅读全文
摘要:
1.把C++当成一门新的语言学习(和C没啥关系!真的。);2.看《Thinking In C++》,不要看《C++变成死相》;3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;6.会用Visual C++,并不说明你会C++;7.学class并不难,template、STL、g 阅读全文
摘要:
二级指针和二维数组 首先注意一个事实:[]是一个运算符, 称 为 下 标 运 算 符 亦 称 变 址 运 算 符 ,我觉得应该是变址取内容 *(p+n) 恒 等于 p[n]我们不能简单把指针看成地址,不要忽略掉数据类型。也就是说一个指针包含两方面,一个是地址,一个是数据类型。指针是变量,这个变量的值是个地址。变量的类型是指向一个数据类型。可能有两个指针的值一样但是他们其实是不一样的,因为他们指向的数据类型不一样,此时使用取内容符号*取得的东西就会不一样了。比如下面的a[2][3],a是个指针,a[0]也是个指针,而且这两个指针的值是一样的。但是这两个指针指向的数据类型不一样,所以使用取内容符号 阅读全文
摘要:
C++操作符的优先级C++操作符的优先级操作符及其结合性 功能 用法 LLL::::::全局作用域类作用域名字空间作用域::nameclass::namenamespace::nameLLLLL.->[]()()成员选择成员选择下标函数调用类型构造object.memberpointer->membervariable[expr]name(expr_list)type(expr_list)RRRRR++--typeidtypeid显示强制类型转换后自增操作后自减操作类型ID运行时类型ID类型转换lvalue++lvalue--typeid(type)typeid(expr)cast 阅读全文
摘要:
编译器是按照什么样的原则进行对齐的?成员对齐有一个重要的条件:即每个成员按自己的方式对齐。其对齐的规则是,每个成员按其类型的对齐参数(通常是这个类型的大小)和指定对齐参数(这里默认是8字节)中较小的一个对齐。并且结构的长度必须为所用过的所有对齐参数的整数倍,不够就补空字节。每个成员的起始地址%每个成员的自身对齐值=0,否则补空直至满足条件。先让我们看四个重要的基本概念:1.数据类型自身的对齐值:对于char型数据,其自身对齐值为1,对于short型为2,对于int,float,double类型,其自身对齐值为4,单位字节。2.结构体或者类的自身对齐值:其成员中自身对齐值最大的那个值。3.指定对 阅读全文
摘要:
浮点字面值不能带后缀U(u),整数后面不能带后缀F(f)。int ival =ival; 是正确的。通常把一个对象定义在它首次使用的地方是一个很好的方法。头文件用于声明而不是定义。但是头文件可以定义类、值在编译时就已知道的const对象和inline函数。317140两个迭代器不能相加,但是可以相减。很多运行时错误都源于使用了未初始化的指针。因此除非所指向的对象已存在,否则不要先定义指针。一个空指针加0,得到另一个值为0指针(空指针)。两个指针减法操作结果是与机器相关的ptrdiff_t类型数据,size_t 也是与机器相关数据类型。const size_t kArrSize=10; i... 阅读全文
摘要:
(一)SVM的背景简介支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中[10]。支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力[14](或称泛化能力)。以上是经常被有关SVM 的学术文献引用的介绍,有点八股,我来逐一分解并解释一下。 Vapn 阅读全文
摘要:
一、快速排序void qsort(int x,int y) //待排序的数据存放在a[1]..a[n]数组中 {int h=x,r=y; int m=a[(x+y)>>1]; //取中间的那个位置的值 while(hm) r--; //比中间那个位置的值大,循环直到找一个比中间那个值小的 if(hx) qsort(x,r);//注意此处,尾指针跑到前半部分了 if(h=1;j--) //相邻的两两比较 if(a[j]>a;tong[a]++;}//相应的桶号计数器加1 for(int i=1;i0) //当桶中装的树大于0,说明i出现过tong[i]次,否则没出现过i whi 阅读全文
摘要:
提高C语言程序运行稳定性的方法一、前言由于C语言的灵活性,用C语言开发出来的程序容易造成内存泄漏、运行异常、运行结果不可预期等程序质量问题,在用C语言开发程序的过程中,必须高度重视程序质量问题,应当把提高程序稳定性的方法加入到项目管理和开发过程中,最大限度地提高程序的稳定性,保证项目的成功开发。在这里总结多年来的C语言开发经验,拿出来共享以期在这方面能够得到更多的指教。二、影响程序稳定性的因素1、内存泄漏。造成内存泄漏的原因有:1)、程序有多个出口,但不能保证在每一个出口能够完全释放掉所有的动态内存,如函数内有多个“return”,但没有在每一个“return”前释放掉在原已申请但必须释放的动 阅读全文
摘要:
1、确定浮点型变量和表达式是 float 型 为了让编译器产生更好的代码(比如说产生3DNow! 或SSE指令的代码),必须确定浮点型变量和表达式是 float 型的。要特别注意的是,以 ";F"; 或 ";f"; 为后缀(比如:3.14f)的浮点常量才是 float 型,否则默认是 double 型。为了避免 float 型参数自动转化为 double,请在函数声明时使用 float。2、使用32位的数据类型 编译器有很多种,但它们都包含的典型的32位类型是:int,signed,signed int,unsigned,unsigned int,lon 阅读全文