摘要: Java进阶5 面向对象的陷阱 20131103 Java是一门纯粹面向对象的编程语言,Java面向对象是基础,而且面向对象的基本语法非常多,非常的细,需要程序员经过长时间的学习才可以掌握。本章重点介绍的是Java中面向对象中的容易出现的陷阱。1. instanceof 运算符的陷阱 Instanceof运算符前一个操作数通常是一个引用类的变量,后一个操作数是一个类,也可以是接口,用于判断前面的对象是不是后面类或者其子类,如果是的话,则返回true反之则返回false。但是也会有一些陷阱: String str = "yang"; System.out.println( ( 阅读全文
posted @ 2013-11-05 23:21 追梦的飞飞 阅读(310) 评论(0) 推荐(0)
摘要: Java进阶2 数组内存和对象的内存管理知识 20131028前言: 在面试的时候,如果是Java的编程语言,也许你认为没有什么可以问的,只能够说明你对于Java了解的太浅了,几乎就是两个星期的节奏速成,没有在底层掌握Java编程语言。那么面试的时候,你就会发现很多的不会,所以在这个时候切记说你懂Java。 还有有些人面试Java认为就是面试SSH框架,其实个人理解方面,除了那种很小型的公司还有不懂技术的什么什么类型的企业,就会拿SSH器标准你。说一下自己的情况: 我的第一编程语言是C++,同时Java是自己的辅助,可以算的上是本科生中学习Java最好的之一(谦虚点了),但是我自己真的对于SS 阅读全文
posted @ 2013-11-05 23:19 追梦的飞飞 阅读(434) 评论(0) 推荐(0)
摘要: Java进阶4表达式中的陷阱 20131103 表达式是Java中最基本的组成单元,各种表达式是Java程序员最司空见惯的内容,Java中的表达式并不是十分的复杂,但是也有一些陷阱。例如当程序中使用算术表达式的时候,表达式的类型自动提升,复合赋值运算符所隐含的类型转换,给程序带来一些潜在的陷阱。还有就是JDK1.5之后支持泛型也会带来一些陷阱,因为之前的Java版本是不支持泛型的,为了兼容之前的版本,引入了原始类型的概念,而原始类型在泛型编程中存在着极大的陷阱。1.字符串中的陷阱 JVM对于字符串的处理都会在JVM的字符串缓冲池缓冲字符串,而且java中的字符串类型是不可以改变的,如果经常改字 阅读全文
posted @ 2013-11-05 23:18 追梦的飞飞 阅读(251) 评论(0) 推荐(0)
摘要: Java进阶3. 内存回收机制 20131029前言: 学过C++的都知道,C++中内存需要程序员自己维护。说道这里,很多开发的同学就感觉很痛苦,当他转向Java的时候,就会说你看Java多好啊,程序员不用自己管理堆的内存了,我们终于可以尽情挥霍了,但实际上真的是这个样子吗?Java真的有这么好吗?其实Java回收垃圾是考的JVM后台的一条线程来运行的,这条线程会不定时的启动来回收垃圾,这样在表面上看来器省去了我们程序员的很多工作,但是后台启动这样的线程去回收垃圾就不耗时吗?不会占用资源吗?其实JVM的垃圾回收线程是十分的消耗资源的,JVM可以回收垃圾,但是不是允许我们程序员尽情挥霍的。 这里 阅读全文
posted @ 2013-11-05 23:17 追梦的飞飞 阅读(286) 评论(0) 推荐(0)
摘要: Java进阶1. Synchronized 关键字 201310251.关于synchronized的简介: Synchronized 关键字代表对这个方法加锁,相当于不管那一个线程,运行到这个方法的时候,都要检查有没有其他的线程在使用这个方法,如果有的话就要的等待正在使用synchronized方法的线程运行完成之后才可以运行此方法;如果没有的话就直接运行。2.常见的使用方法 Synchronized方法: 使用synchronized关键字声明synchronized方法的形式: public synchronized void accessVal(int newVal); synchro 阅读全文
posted @ 2013-11-05 23:16 追梦的飞飞 阅读(210) 评论(0) 推荐(0)
摘要: Java 复习9网路编程 20131008前言: Java语言在网络通信上面的开发要远远领先于其他编程语言,这是Java开发中最重要的应用,可以基于协议的编程,如Socket,URLConnection等等,之后面的Web开发就是Servlet开发还有各种框架等等,基本上都是基于网络编程的。在上大二的时候,自己学习过Java网络编程的知识,现在好像都忘了,再有就是JSP,Servlet等等这些编程的知识也都忘得差不多了,所以这一段时间回忆一下关于网络编程和Web编程的知识。1.网络通信编程 TCP/IP(Transport Control Protocol / Internet Protoco 阅读全文
posted @ 2013-11-05 23:05 追梦的飞飞 阅读(168) 评论(0) 推荐(0)
摘要: Java复习10. Servlet编程知识 20131008前言: 之前在大三下的时候,学习了一个月的JSP和Servlet知识,但是没有什么项目经验,把JSP Web开发学习实录看了前面几张,后面的框架没有学习。这个期间,我掌握的就是把java代码和html代码杂糅在一起的JSP页面,同时还有就是Servlet的简单的知识,创建Servlet返回响应,这里才明白服务器的大概原理,根据客户端的请求URL类型分发到不同的地方。然后处理,之后在使用response返回信息。还有学习一点关于Java中数据库乱接操作的知识和一些JSTL标签知识,还好自己有这一部分的笔记。 Servlet是一种独立于平 阅读全文
posted @ 2013-11-05 23:04 追梦的飞飞 阅读(244) 评论(0) 推荐(0)
摘要: Java复习8 多线程知识 20131007前言: 在Java中本身就是支持多线程程序的,而不是像C++那样,对于多线程的程序,需要调用操作系统的API 接口去实现多线程的程序,而Java是支持多线程的,具有并发性。 在程序中使用多线程意味着我们可以同时处理多项任务,在实际的开发中,尤其是大型的项目,多线程程序是十分重要的。 同时多线程的程序会带来一定的问题,比如数据的同步、资源的访问等等。在服务器端,使用多线程处理用户的请求等等的知识。1.线程的概念 每一个程序至少运行着一个进程,每一个进程至少包含一个线程。进程可以是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是进程的特殊段 阅读全文
posted @ 2013-11-05 23:04 追梦的飞飞 阅读(267) 评论(0) 推荐(0)
摘要: Java复习6.异常处理 20131005前言: Java中的异常处理机制是非常强大的,相比C++ 来说,更加系统。但是我们开发人员没有很好的使用这一点。一些小的程序是没有什么问题的,但是对于大型项目来说,异常处理机制十分重要。在Java中我们使用的异常处理,一般就是捕获异常,输出堆栈中的异常信息,就没了,这些方法仅仅适合开发环节,便于我们调试错误,但是对于后期发布上下的话,这些就没有用了,需要我们恢复错误等等,甚至要重新启动。 本章的就学习一段代码,通过它来学习Java中的异常处理机制。Connection conn = null;OutputStreamWriter out = null; 阅读全文
posted @ 2013-11-05 23:02 追梦的飞飞 阅读(206) 评论(0) 推荐(0)
摘要: Java复习4.Java中的数组声明方式 201310041.数组声明和初始化, 数组元素和变量一样,可以在定义的时候i进行初始化。数组元素的初始化工作实在编译阶段完成的,可以减少运行时间。 在初始化数组的时候,使用new 关键字创建数组,他只是一个引用,知道将值赋值给引用,初始化的工作才结束。 三种初始化的方法: int a = new int[9]; int a = new int{1,1,1,1}; int a = {1,1,1,1}; 在Java中的数组赋值不能够直接让一个数组等于另一个数组,否则只是简单地数组的引用,Java系统提供了一种数组赋值的方法: System.arrayco 阅读全文
posted @ 2013-11-05 23:01 追梦的飞飞 阅读(248) 评论(0) 推荐(0)
摘要: Java复习7.输入输出流 20131005前言: Java中涉及数据的读写,都是基于流的,这一块的知识相当重要,而且在Java中的数据,char字符是16bit的,所以存在字节流和字符流的区别。如果是字符文件的输入输出,使用字符流(以Reader/Writer为抽象基类),而其他的数据是二进制的,需要使用字节流(以InputStream和OutputStream为抽象基类)。 其实不止文件,网络数据传输也是输入输出流。目录1.字节流和字符流... 21.1字节输入流:... 21.2字节输出流:... 52.字符流... 62.1字符数据流输入:... 62.2字符数据流输出:... 73. 阅读全文
posted @ 2013-11-05 23:00 追梦的飞飞 阅读(305) 评论(2) 推荐(0)
摘要: Java 复习5面向对象知识 20131004前言: 前几天整理了C++中的面向对象的知识,学习Java语言,当然最重要的就是面向对象的知识,因为可以说Java是最正宗的面向对象语言,相比C++,更加严格的面向对象的语言。面向对象是JAVA语言最大的特点。1.基本概念面向对象在程序中开始指的是采用封装、继承、抽象的设计方法,如今以发展到整个软件行业,如OOA(面向对象分析), OOD(面向对象设计), OOP(面向对象的编程)。面向对象的特点:对象的唯一性,每一个对象都会有一个唯一的标识,通过标识,可以找到相应的对象,在对象的整个生命周期内对象的标识不会变化。抽象性:将相同的数据结构和操作方法 阅读全文
posted @ 2013-11-05 22:59 追梦的飞飞 阅读(220) 评论(0) 推荐(0)
摘要: Java 中的变量常量数据类型 20131004前言: 还是国庆节,无聊的很,就没事复习点Java的知识,其实C/C++基本上是现在大型企业面试的语言,但是多学习点Java是没有坏处的,而且,将来工作的话,不可能只会一门C++就不管了,现在的开发工程师都是会使用C++和Java两者都是精通的。话说国庆节结束之后,有一大群公司来招聘,还很多是IT的,那我是去呢,还是去呢?首先声明,我去的话绝对不是篡你们的,可能是考虑到自己的工作地点吧,我想去工作的地方是成都,至于为什么,就是喜欢了,也说不出来为什么(你信吗?)说道正题,本文是关于常见的Java一些知识点总结,重点是Java中的String类的知 阅读全文
posted @ 2013-11-05 22:58 追梦的飞飞 阅读(313) 评论(0) 推荐(0)
摘要: Java 复习程序的内存管理 20131003前言:国庆节的第三天,大家都回家了,一个人在宿舍好无聊。不过这年头与其说是出去玩不如是说出去挤,所以在学校里还是清闲的好。找工作不用担心了,到时候看着你们慢慢忙;插个话题,大学都没有恋爱过,总之各种原因了;大学毕业之后希望可以早点成家立业,不想一个人飘着了,所以看我笔记的人最好的是给我介绍女朋友了,PS非诚勿扰。 开始正题:之前学习了C++的内存管理,对于写程序有很大的帮助。最近在复习Java,虽然Java没有和C++那样复杂的内存操作,但是编写代码的时候还是要关注Java程序的内存管理知识。好的我们结合C/C++和Java的内存管理整理一下程序的 阅读全文
posted @ 2013-11-05 22:57 追梦的飞飞 阅读(238) 评论(2) 推荐(0)
摘要: C++ 进阶5 拷贝构造 深度复制 运算符重载 20131026例子: 运行环境是G++ 编译,/** main.cpp** Created on: 2013年10月26日* Author: yangtfei*/#include #include #include #include using namespace std;class Base{private: int val; char * str;public: Base(const char * str, const int v){ this->val = v; int len = strlen(str); this->str 阅读全文
posted @ 2013-11-05 22:55 追梦的飞飞 阅读(197) 评论(0) 推荐(0)
摘要: Java语言概述 20131003开头语:开发领域,重要的编程语言基本都是C/C++,然后就是Java, C/C++就不用说了,另外掌握Java对你是有很大的帮助的,而且也会扩宽你的择业范围。同时很多网络编程、网站后台开发都是使用java 语言实现,此外Android实际上就是Java编程,所以在C/C++复习基本完成之后,复习一下Java,一起来吧!1.java是一种简单、面向对象、分布式、解释型、健壮安全、可移植、性能优异、多线程的动态语言(在运行期间才将类加载到运行环境中)。 相对C++来说Java抛弃了C++的那些很少使用的难以理解的特性,如运算符重载、多继承、自动的强类型转转。而且J 阅读全文
posted @ 2013-11-05 22:54 追梦的飞飞 阅读(231) 评论(0) 推荐(0)
摘要: 并发编程3. 线程的高级内容 20131031 前面讲解了线程的创建退出知识,但是对于线程的高级内容,比如线程的各种状态、操作系统中线程调度的方式,如何控制线程的执行,等等线程的高级内容没有深入的了解,这一章会重点介绍。1.线程的状态 硬件中栈的起始地址是大于结束地址的,随着线程中使用的空间越来越多,栈指针(位域ESP寄存中)的值也会相应的递减。编译器通常会借助线程栈来实现函数调用以及存储一些无法在存储器中保存的数据。 栈的保留大小与提交大小 线程栈大小包括两个部分,一个是保留大小(Reserve Size ) 一个是提交大小(Commit Size)。程序分配内存的时候,可以预先保留一定数量 阅读全文
posted @ 2013-11-05 22:52 追梦的飞飞 阅读(223) 评论(0) 推荐(0)
摘要: C++知识整理(多益笔试) 20131012前言: 还是关于笔试知识的整理,主要是面向对象的知识还有一些常见的语法知识。1.还是C++内存管理的知识 C++中程序的内存分布如下: 栈:向下增长,可读可写可执行; 堆:向上增长,可读可写可执行; BSS数据段(就是存放未初始化的数据段):向上增长,可读可写不可以执行;如果程序员没有初始化,但是在这一个数据段中的数据会将内存清0,默认初始化是0. .data数据段:向上增长,可读可写不可以执行,就是存放的全局变量、静态变量的(已经初始化); .text 代码段:向上增长,可读可写不可以执行。 分析一下程序中变量: 局部变量、函数参数存放在栈中;静态 阅读全文
posted @ 2013-11-05 22:52 追梦的飞飞 阅读(313) 评论(0) 推荐(0)
摘要: C++进阶3.字节对齐 联合 20131011多益和金山笔试 知识漏洞 20131011前言: 今天下午是多益网络的笔试,整体感觉还好,但是找到很多的知识漏洞。一直笔试到6:00,然后紧张的从会生活区嗑了点饭,然后骑车立马冲到华工参加金山的笔试。(华工没有什么认识的人,微信上认识一个看头像和照片挺漂亮的女生,本来想笔试结束的时候见一下,可惜微信她,直到回到学校才回我,下次吧!)回到正题上,笔试上有很多的知识漏洞,所以整理一下。1.联合的知识 题目是这样的: union { int val; char str[2];} obj; main: obj.str = 10; obj.str = 1; 阅读全文
posted @ 2013-11-05 22:51 追梦的飞飞 阅读(338) 评论(0) 推荐(0)
摘要: C++ 中的typedef用法 20131011Typedef在C++中是一个关键字,他的用法有多重,但是自己又说不全面,所以整理一下:1.用类型的别名 typedef char* PChar; 这里就是使用PChar 代替程序中的char*,在编写程序的时候PChar a 等价于char * a; 不知指针, 如 typedef int INT4;2.为结构体的别名 typedef struct test1{ char a; int b; }Test; 也就是Test 等价于struct test1 使用的时候我们使用 Test a;等价于 struct test1 a; 编程的时候,因为J 阅读全文
posted @ 2013-11-05 22:50 追梦的飞飞 阅读(362) 评论(0) 推荐(0)
摘要: C++进阶1模板的使用 20131010 C++中,我们自己编程虽然不会怎么使用模板,包括函数模板和类模板,但是在大型的项目开发中函数模板和类模板是非常重要的。笔者在**面试的时候忙问道过这个问题,迷迷糊糊的过了,但自己知道不是很清楚,所以整理一下。1.函数模板的声明 函数模板可以用于创建一个通用的函数,用于支持不同类型的参数,避免因为函数的重载重复设计,他最大的特点是把函数使用的数据类型作为参数。 函数模板的声明形式: template (Arguments){} 其中template是定义函数模板的关键字,template之后的不可以省略,而且内部的typename也是关键字可以使用... 阅读全文
posted @ 2013-11-05 22:49 追梦的飞飞 阅读(219) 评论(0) 推荐(0)
摘要: C++ 多线程2 beginthread 启动线程知识 20131021Reference: http://blog.csdn.net/laoyang360/article/details/7720656前言: 之前曾经使用过WINAPI创建线程并且启动的知识,还有线程之间同步的知识,这里讲解一下使用__beginthread的原理和机制。1._beginthread 简单的介绍 如果我们编写的是C++的程序,不应该使用CreateThread WINAPI接口去创建线程,而是应该使用Visual C++运行库函数_beginthread,退出线程的时候应该使用_endthread。因为_be 阅读全文
posted @ 2013-11-05 22:48 追梦的飞飞 阅读(4642) 评论(0) 推荐(0)
摘要: C++ 多线程知识1.多线程入门 CreateThread 201310211.介绍WinAPI中的CreateThread 函数原型: HANDLE WINAPI CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_STACK_ROUTLINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId);参数介绍:第一个参数是指向SECURITY_ATTRIBUTES struc 阅读全文
posted @ 2013-11-05 22:47 追梦的飞飞 阅读(1522) 评论(0) 推荐(0)
摘要: C++高级编程2. 静态动态链接库201310181.动态链接库和静态链接库的区别: 静态链接库就是把lib文件中用到的函数代码直接连接进目标程序,程序运行的时候不在需要其他的库文件;动态链接库是把调用的函数所在文件模块(对应的DLL)和调用函数在文件中的文职等信息链接进目标程序,程序运行的时候再从DLL中寻找相应的函数代码,因此需要响应DLL文件的支持。 静态链接库和动态链接库都是采用共享代码的方式,如果采用静态连接,无论我们愿不愿意,lib中的指令都全部被包含在最终生成的EXE文件中。但是如果我们使用动态链接库DLL的话,改DLL文件不包含在最终的EXE文件中,而是单独的一些文件,和EXE 阅读全文
posted @ 2013-11-05 22:46 追梦的飞飞 阅读(283) 评论(0) 推荐(0)
摘要: 并发编程1. 基本概念131029前言: 这一个领域的学习,主要是C++的多线程编程,同时也会使用C#编程的知识,也就是并发编程,基于Windows编程知识,从系统的内核的底层同步原语,比如线程等等,还有就是.Net的高层同步抽象机制,如线程池、数据同步与控制同步,基本上包括了Windows各种层次的并发概念和机制。还有就是并发编程中的高级主题,比如内存模型与无锁编程、线程、用户图形界面、输入输出等等。 现在在多核的硬件基础之上,软件开发也需要使用并行编程机制。 能耗障碍+内存障碍+ILP障碍 = 限制了串行性能的障碍。 Windows 和.Net 框架对于多线程提供了丰富的支持。Window 阅读全文
posted @ 2013-11-05 22:46 追梦的飞飞 阅读(267) 评论(0) 推荐(0)
摘要: 1.关于构造函数初始化调用顺序的问题。 首先是父类和子类的,首先调用父类的构造函数,然后调用子类的构造函数。但是对于子类中有其他类型的数据成员的时候,会在调用该类的构造函数之前,调用其数据成员的构造函数。class A{public: A(){ cout << "A::A()" << endl; } virtual ~A(){ cout << "A::~A()" <<endl; }};class C{public: C(){ cout << "C::C()" << 阅读全文
posted @ 2013-11-05 22:44 追梦的飞飞 阅读(280) 评论(0) 推荐(0)
摘要: C++高级编程1 C++速成1.常用的预处理指令 #include [file] #define key value 这个是在C中经常使用的,定义常量数值,用于字符串替换的工作。 #ifndef key #ifdef key #define key #endif #pragma once 会因为编译器而有所不同,如果编译器支持的话可以用于代替上面的指令,在预处理阶段会提示警告。 #ifndef KEY #define KEY //code #endif 可以使用#pragma once 代替。2.C++运行程序传递的参数 int main(int argc,char ** argv): 其中a 阅读全文
posted @ 2013-11-05 22:42 追梦的飞飞 阅读(778) 评论(0) 推荐(0)
摘要: C++ 函数的高级特性 20131002C++函数增加了重载(override), inline, const, virtual四种机制,重载和内联机制既可以用于全局函数,也可以用于类的成员函数。const和virtual机制只是可以用于成员函数。1.函数重载的概念 将功能和语义相似的几个函数使用同一个函数名字,便于记忆,同时类的构造函数确实需要使用到重载,但是C++的构造函数只能有一个名字,只能使用重载来实现。 虽然在语言层面上是相同的函数名称,但是在最终的二进制层面上是不允许出现同名函数的,因为所有的函数最终都将转换成一个等效的全局函数,调用语句也会作相应的转换。如何将他们区分开来:根据函 阅读全文
posted @ 2013-11-05 22:41 追梦的飞飞 阅读(464) 评论(0) 推荐(0)
摘要: C++ 虚析构函数 20131010 在C++中的虚函数作用是实现基于继承机制的多态,但是我们好像忽略了一种情况,就是虚析构函数。在C++继承机制中,虽然构造函数是不可以使用虚函数声明,但是析构函数是可以声明为虚函数的。这样做的目的是为了当父类指针指向一个派生类的对象的时候,当删除该指针的时候,可以调用派生类的析构函数,释放资源。如果不是这样的话,那么在C++中的派生类的内存空间是不会被释放掉,会造成内存的浪费,最终导致内存溢出而是程序崩溃。 但是我们不能够随意的使用虚函数声明,因为会增加类的存储空间,当我们声明一个函数式虚函数的时候,编译器会生成一个虚表中的函数指针,这样的话,如果 没有必要 阅读全文
posted @ 2013-11-05 22:40 追梦的飞飞 阅读(236) 评论(0) 推荐(0)
摘要: 程序内存管理 20131006一个程序在运行期间的内存是如何的对编写程序至关重要,之前整理的C++内存管理的知识和Java程序内存管理的知识。今天我们系统的整理一下程序的内存。1.一个程序的内存有BSS segment, data segment, code segment, heap, stack. BSS Segment:通常是指用来存放程序中未初始化的全局的一块内存区域。BSS: Block Started by Symbol的简称,BSS内存分配是属于静态内存分配。 Data Segment: 通常知识的是存放程序中已经初始化的全局变量,数据段也是静态内存分配,存放初始化的全局变量和惊 阅读全文
posted @ 2013-11-05 22:39 追梦的飞飞 阅读(199) 评论(0) 推荐(0)
摘要: C++ 面向对象编程概述 20131001一些基本概念:封装、继承、组合、虚函数、抽象基类、动态绑定、多态性等等1.一个笑话:如果坐在后排聊天的同学能够像中间打牌的同学那样安静的话,那么就不会影响到前排睡觉的同学了。C++的封装机制控制信心的访问,C++中最根本的改变就是把函数放进结构体中,进而产生了C++的类。类可以把数据和函数绑定在一起,其中数据表示类的属性,函数表示类的行为,也就是成员函数。C++中提供public, protected, private 用于控制属性和函数的访问权限。2.类的继承特性 子类会继承父类中的所有成员变量和成员函数,只是根据权限,有些是无法访问的。同时继承可以 阅读全文
posted @ 2013-11-05 22:37 追梦的飞飞 阅读(251) 评论(0) 推荐(0)
摘要: C++ 类的虚表 20130929关键技术:封装、继承、组合、虚函数、抽象基类、动态绑定、多态性等等1.首先整理一下在阿里巴巴面试遇到的函数虚表的问题。 在C++中的Class中的函数式存储在Class数据机构的虚表中。每一个Class对应的所有的函数地址都会在Class的数据结构虚表中,每一个Class的对象在对象开始的地方都会有一个指针(计算机的位数一般是是32位)指向Class的函数虚表,函数虚表中每一个函数地址是按照在Class中声明的顺序。一般也是一个32bit的指针。 C++的多态机制正是基于这种虚标实现的。 首先看一个父类:classBase {public:virtualvoi 阅读全文
posted @ 2013-11-05 22:35 追梦的飞飞 阅读(369) 评论(0) 推荐(0)
摘要: 对象的初始化、拷贝构造和析构函数 20131002构造函数、析构函数、赋值函数是类的基本函数。每一个类只有一个析构函数,但是可以有多个构造函数、多个赋值函数。一般如果类中没有显示的声明和定义上述函数,C++编译器会自动为其生成4个public inline默认函数A(), A(const A&), ~A(), A& operator=(constA& a)1.构造函数和析构函数的起源 C++编译器有更加严格的类型安全检查机制,几乎可以找到程序的所有语法错误。但是很多错误因为变量没有争取的初始化或者清除导致,而初始化和清除的工作经常被遗忘,所以有了类的构造函数用于初始化数 阅读全文
posted @ 2013-11-05 22:35 追梦的飞飞 阅读(432) 评论(0) 推荐(0)
摘要: C/C++高级数据类型1.C语言支持把基本数据类型组合起来形成更加强大的构造数据类型,就是C语言的struct(UDT, User Defined Type). Struct 和class : 在C++中对C语言的struct进行类改造,使其也可以像C++中的struct那样支持成员函数的声明和定义,从而使struct成为了ADT( Abstract Data Type).在C++中如果不声明访问类型,struct默认的是public,class默认的是private,这也就是在C++中struct和class的唯一区别之处。 对象是不可以自己包含自己的,因为无法计算sizeof,这样编译的时 阅读全文
posted @ 2013-11-05 22:34 追梦的飞飞 阅读(346) 评论(0) 推荐(0)
摘要: C/C++ 指针、数组和字符串本次学习指针、数组、字符串、引用的内存映像。1.指针 指针的本质:可以执行的程序是由指令、数据和地址组成的。当CPU访问内存单元的时候,不论是读取还是写入,首先要把内存单元的地址加载到地址总线AB上,同时将内存电路的读写控制设置成有效,然后内存单元中的数据通过数据总线(DB)流向寄存器。或者是结果寄存器中的值流线目标内存单元。这就是一个内存读写周期。 内存单元地址就是我们的指针。指针是一个变量,他和我们使用的整形变量,字符变量等等没有什么本质的差别,不同的是他们的类型和值得含义,即解释方式。在二进制层面上,指针的值就是内存地址的单元,而变量又是引用内存单元值的别名 阅读全文
posted @ 2013-11-05 22:33 追梦的飞飞 阅读(514) 评论(0) 推荐(0)
摘要: C++异常处理和RTTI技术 201309301.异常处理的基本知识C语言中是没有内置运行时错误处理机制,对于错误发生的时候使用的几种处理机制:函数返回彼此协商后统一定义的状态编码来表示操作成功、失败或者是其他类型的错误;使用全局变量来保存错误编码,每一个使用到他的函数在开始的时候都会检查他的值,并且每一个函数的操作结果都会写到这个全局变量中,如使用errno表示任何一个函数调用返回后产生的错误码;出错的时候终止程序的运行。 但是这些传统的方法村下载一些问题:没有形成统一的标准;将正常的代码和错误处理程序紧紧的绑定在一起;有些函数式咩有返回值的;全局的错误变量,不仅在函数的开头检查它,而且有时 阅读全文
posted @ 2013-11-05 22:32 追梦的飞飞 阅读(472) 评论(0) 推荐(0)
摘要: C/C++常量的知识 20130918语言的实现隐含着使用着一些常量,如初始化全局变量静态变量,另外还有一些我们不曾感觉到的变量:函数地址(也就是函数名称), 静态数组的名字,字符串常亮的地址。常量可以分为:字面常量,符号常量,契约性常量,bool常量,枚举常量一、常量的种类1.字面常量是保存在程序的符号表中而不是一般的数据区(实际上是静态存储区而不是栈中),这些符号是只读的,是一种访问保护机制。我们无法获取这些常量的地址。而且对于字符串常量,我们不可以使用字符串的地址修改他们的值 char * p= “yang”’; 相当于 const char *p = “yang”;2.符号常量 使用# 阅读全文
posted @ 2013-11-05 22:31 追梦的飞飞 阅读(372) 评论(0) 推荐(0)
摘要: C/C++ 函数设计基础 20130918函数式程序的基本功能单元,是模块化程序设计的基础,即使函数的功能正确是不够的,因为函数设计的细微缺点很容易导致函数被错用。 了解函数的基本知识,堆栈和堆的相似点和不同点;函数的接口设计和内部实现,断言、const,存储类型,递归函数等等。1.认识函数 函数分为库函数和用户自定义的函数,两者在本质上是一致的,知识前者是预编译好的。对于静态链接的函数库或者类库,如果你调用其中的函数,那么连接器慧聪相应的苦衷调去这些函数实现的源代码并且把它们连接到你的程序中。如果你没有使用库函数,则不会讲他么连接到你的程序中。如果你是用的是动态连接库(DLL),运行的时候需 阅读全文
posted @ 2013-11-05 22:29 追梦的飞飞 阅读(255) 评论(0) 推荐(0)
摘要: 高质量的软件开发1.满足正确性,健壮性,可靠性,性能,易用性,清晰性,安全性,兼容性,扩展性,可移植性等等来评价软件的质量。2.没有错误的程序世间难求,任何一个程序,无论他多么的小,总是存在着错误。3.高质量的编程就是砸干活的时候一次性编写出高质量的程序,而不是等程序处错误的时候再去处理。4.废话大师说过一句:如果我令你很轻松的明白了那你一定是误解了我的意思。还有一种怪现象:如果把文章写的很简洁的,让人很容易明白和理解,往往投稿投不中,只有加上一些玄乎的东西,把本来简单的东西搞的负责的话,才会增加投稿命中率。5.兼容性的商业规则就是:弱者设法于强者兼容,否则无容身之地;强者应当避免被兼容,否则 阅读全文
posted @ 2013-11-05 22:27 追梦的飞飞 阅读(254) 评论(0) 推荐(0)
摘要: C++ 内存管理1.内存分配的方式有三种: 从静态存储区分配:在程序编译期间已经分配好了,这些在程序的生命周期内都是有效的,如全局变量,static变量一个例子: char * p = "absd";这个是存储在静态存储区的,而且是不可以改变的,这种方式声明是const char * p ="asdf";等效的,只是把他给省略了。不可以通过*p去修改他的值,但是p指针是可以指向其他的内存区域。 但是如果是const char * const p = "asdf";就不可修改p指向的地址,也不可以修改p指向的内容。 在栈上分配内存的方式 阅读全文
posted @ 2013-11-05 22:24 追梦的飞飞 阅读(428) 评论(0) 推荐(0)