从今天开始在博客里写C++primer的文字.主要以后面的习题作业为主,会有必要的知识点补充. 本人也是菜鸟,可能有不对之处,还望指出. 前期内容可能会比较水. 1.1略 1.2略 1.3 cin和cout分别是istream和ostream的对象. #include<iostream> using namespace std; int main() { cout<<"Hello,world"<<endl; ; } 1.4 #include<i…
7.1.7.2.7.3 #include<iostream> #include<cstdio> #include<vector> #include<string> using namespace std; struct Sales_data { string bookNo;//isbn编号 unsigned units_sold=;//该书的销量 double revenue=0.0;//该书的总销售收入 string isbn()const {return…
6.1 实参是在函数调用处填写的参数.形参是在函数体使用的参数. 实参是形参的初始值. 具体参见:http://blog.163.com/zhengguo_li/blog/static/703014802013423501214/ 6.2 (a)该函数试图返回一个局部变量.当函数调用结束后,s所占内存将会被释放,所以返回s是无效的 (b)该函数缺少返回值 (c)定义了两个同名的形参 (d)后面的语句应该写在{}里 6.3.6.4 using namespace std; int fact(int…
5.1 空语句只有一个";".如果什么也不想做可以使用空语句. 5.2 用花括号{}括起来的叫块,也叫复合语句.有多条语句作用在同一个作用域时,需要用花括号括起来. 5.3 降低了. 5.4 (a)每次迭代时候会初始化iter,但是iter缺少初值,所以这段代码根本不会通过编译.另外这里的括号需要一个bool类型的,而定义迭代器根本不会返回一个bool类型.假如上面那些问题都可以通过,每次迭代都会初始化这个iter,会导致死循环. (b)我试了一下编译未通过是因为没找到适合的find函…
4.1 105 4.2 *vec.begin()=*(vec.begin())//先调用点运算符,再解引用 *vec.begin()+1=(*vec.begin())+1//先解引用,再加一 4.3略? 4.4 (12/3*4)+(5*15)+(24%4/2)=91 4.5 (a)-86(b)-16 (c)0 (d)0 4.6 n%2 4.7 溢出:计算结果超出该数据类型所能表示的范围 2147483647+1 1U-2 ... 4.8 比较低.. 4.9 首先判断cp是否为空指针,若非空指针则…
8.1.8.2 这一章不咋会啊.. istream &read(istream &is) { int a; auto old_state=is.rdstate(); is.clear(); is>>a; is.setstate(old_state); return is; } int main() { read(cin); ; } 8.3 读到eof或错误类型的时候 8.4 #include<fstream> using namespace std; int mai…
本章问题 1.char *p="hello world";与char p[]="hello world"的问题. 简单说前者是一个指向字符串常量的指针,后者是一个分配了相应内存并被初始化的字符数组.前者不可改,后者可改. 详细可参阅这里http://www.cnblogs.com/Logic0/archive/2009/08/01/1850337.html 2.指针数组和数组指针. 指针数组即指针的数组,int *p[3],它包含了p[0],p[1],p[2]这三个…
2.1 int,long long ,short 可表示范围和占用内存空间不同.具体与计算机有关. 无符号类型只能表示0和正数,带符号类型可以表示负数,0,正数. float是单精度,一般占用4个字节,double是双精度,一般占用8个字节,它们可表示的数据范围也不相同. 2.2 利率用double,本金和付款用int 2.3 unsigned u=,u2=; cout<<u2-u<<endl; cout<<u-u2<<endl; ,i2=; cout<…
C++标准库类型包括:string,vector和迭代器,其中string是可变长的字符序列,vector存放的是某种给定类型对象的可变长序列,迭代器是string和vector的配套类型,常被用于访问string中的字符和vector中的元素. 内置类型是C++直接定义的,与硬件密切相关,而标准库类型是一种高级类型,尚未实现到硬件中.如:相较于标准库类型string和vector,数组在灵活性上稍显不足. 3.1 命名空间的using声明 std::cin的理解:"::"表明编译器应…
Chapter 3.1 1. using声明具有如下的形式: using namespace::name; Chapter 3.2 1. C++标准一方面对库类型所提供的操作做了规定,另一方面也对库的实现做出了性能上的要求,所以,在一般的应用场合,标准库类型都有足够的效率. 2. 当用一个字符串字面值初始化string对象时,除了最后那个空字符外其他所有的字符都会被拷贝到新创建的string对象中去. 3. 如果使用等号初始化一个变量,实际上执行的是拷贝初始化.如果不使用等号,则执行的是直接初始…
Chapter 2.1 1. 数据类型决定了程序中数据和操作的意义. 2. C++定义了一套基本数据类型,其中包括算术类型和一个名为void的特殊类型.算术类型包含了字符.整型.布尔值以及浮点数.void无值也无操作,我们不能定义一个void类型的变量. 3. 算术类型的尺寸,也就是该类型所占的比特数,在不同机器上有所差别.下表列出了C++标准规定的最小尺寸,同时允许编译器赋予这些类型更大的尺寸: 由于比特数的不同,一个类型所能表达的最大(最小)值也是不同的. 4. C++语言规定,一个int至…
Chapter 1.1 1. 每个C++程序都必须有且只能有一个main函数,main函数的返回类型必须是int.操作系统通过调用main函数来运行C++程序. 2. 一个函数的定义包含四部分:返回类型.函数名.形参列表以及函数体. 3. 当return语句包含一个值时,此返回值的类型必须与函数的返回类型相兼容. 4. 类型是程序设计最基本的概念之一.一种类型不仅定义了数据元素的内容,还定义了这类数据上可以进行的运算. Chapter 1.2 1. C++包含了一个全面的标准库,标准库就是一个类…
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(1)-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(2)-读书笔记 <TCP/IP详解卷1:协议>第4章 ARP:地址解析协议-读书笔记 <TCP/IP详解卷1:协议>第5章 RARP:逆地址解析协议-读书笔记 <TCP/IP详解卷1:协…
章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(2)-读书笔记 <Effective C++>第3章 资源管理(1)-读书笔记 <Effective C++>第3章 资源管理(2)-读书笔记 <Effective C++>第4章 设计与声明(1)-读书笔记 <Eff…
Pro Git 笔记 第1章 起步 1.文件的三种状态. 已提交:文件已经保存在本地数据库中了.(commit) 已修改:修改了某个文件,但还没有提交保存.(vim) 已暂存:已经把已修改的文件放在下次提交时要保存的清单中.(add) 2.Git安装 yum install git-core apt-get install git 3.Git初始化配置 git config --system:系统级别配置(对所有用户进行统一配置) git config --global:用户级别的配置(对某个用…
13~22章 重要 第2章 传输层: TCP/ UDP / STCP (Stream Control Transmission Protocol) TCP 可靠,有重传机制,SYN队列号 UDP 不可靠 STCP 可靠(还包装了一些其他的) TCP,STCP 协议中 有数据包的序列号SYN,和重传机制, 保证了数据的正确性,可靠性. SYN就是序列号,ACK 是回应 TCP 连接的建立 和终止 2.6.1 TCP建立连接 TCP建立连接有3路分节 ( 容易被攻击,因为server要等待clien…
第13章 守护进程和inetd 超级服务器 syslog() daemon_init() setuid() setgid() 第14章 高级IO 标准I/O函数库,支持3种缓冲 缓冲(读写存储设备(硬盘),或者网络 合并读写,可以大大提高性能, 当然也可以不合并: 每次读写操作就立即 发送到指定输入输出(写进硬盘)) 全缓冲(fully buffering):意味着只在出现下列情况才发生I/O 1.缓冲区满 2.进程显示调用fflush 3.进程调用exit终止自己 标准IO缓冲区的大小 通常为…
文章最开头介绍了 获取时间的C/S 模型的代码, 还用了实现了IPV6的版本 unix 介绍了errno值,以及在多进程/多线程中的问题 多线程中不用全局errno,而是用返回值 处理error 详细见第26章 //可以这么写 int n; if( (n=pthread_mutex_lock(&ndone_mutex)) !=0 ) errno=n,err_sys("ptherad_mutex_lock error");// 逗号分割,不用{} 花括号 //当然我们也可以封装下…
第 14 章 多线程 本章内容: * 什么是线程 * 中断线程 * 线程状态 * 线程属性 * 同步 * 阻塞队列 * 线程安全的集合 * Collable与Future * 执行器 * 同步器 * 线程与Swing 通常,每一个任务称为一个线程(thread),它是线程控制的简称.可以同时运行一个以上线程的程序称为多线程程序(multithreaded). 多进程与多线程有哪些区别呢?本质的区别在于每个进程拥有自己的一整套变量,而线程则共享数据.共享变量使线程之间的通信比进程之间的通信更有效.…
第13章 集合 本章内容: * 集合接口 * 具体的集合 * 集合框架 * 算法 * 遗留的集合 13.1 集合接口 Enumeration接口提供了一种用于访问任意容器中各个元素的抽象机制. 13.1.1 将集合的接口与实现分离 Java集合类库将接口(interface)与实现(implementation)分离. 队列接口指出可以在队列的尾部添加元素,在队列的头部删除元素,并且可以查找队列中元素的个数.当需要收集对象,并按照“先进先出”的规则检索对象时就应该使用队列. 队列通常有两种实现方…
第8章 事件处理 本章内容: * 事件处理基础 * 动作 * 鼠标事件 * AWT事件继承层次 8.1 事件处理基础 在AWT所知的事件范围内,完全可以控制事件从事件源(event source)例如,按钮或滚动条,到事件监听器(event listener)的传递过程,并将任何对象指派给事件监听器.不过事实上,应该选择一个能够便于响应事件的对象.这种事件委托模型(event delegation event)与Visual Basic那种预定义监听器模型比较起来更加灵活. 事件源有一些向其注册…
第5章 继承 本章内容: * 类.超类和子类 * Object:所有类的超类 * 泛型数组列表 * 对象包装器和自动装箱 * 参数数量可变的方法 * 枚举类 * 反射 * 继承设计的技巧 利用继承,人们可以基于已存在的类构造一个新类.继承已存在的类就是复用(继承)这些类的方法和域.在此基础上,还可以添加一些新的方法和域,以满足新的需求. 反射是指在程序运行期间发现更多的类及其属性的能力. 5.1 类.超类和子类 “is-a”关系是继承的一个明显特征. 在Java中,所有的继承都是公有继承,而没有…
基本没讲什么,一点点计算机网络发展史,一点点socket()简单介绍,最重要的是1.3节协议无关性. 协议无关性: 贯穿整本书的一个重要特性,他主要强调的是 socket是网络协议无关的编程接口. socket给出一个struct sockaddr结构,每一种协议都有自己特定的地址结构来记录协议中需要的基本信息,通过强制类型转换成struct sockaddr结构.这样可以屏蔽类型,把所有协议的API抽象成一个统一的接口,即套接字. 还有一个小技巧:包裹函数,就是把socket重新打包,以首字母…
CH1-3:处理数据 1 列表初始化 char c={31325}:不允许缩窄 char c={66}; char c={x}:不能为变量 2 强制类型转换 (typename) value typename (value) static_cast<typename> (value) 更加严格 CH4:复合类型 1 string类 strcpy(charArray, stringStr);//字符串拷贝到字符数组,注意大小 strcat(charArray, stringStr);//字符串添…
CH1-2:概述 链接器:链接库代码.启动代码(start-up code) CH3-5:数据.字符串.运算符 1 数据类型存储方式:整数类型.浮点数类型 2 浮点数存储:小数部分+指数部分 3 int:     3.1 %#o,%#x,%#X 分别是前缀0,0x,0X     3.2  (32位系统,括号中为64位)        4 char:转义字符  5 字符串 string.h 6 printf()作用:断行:换行. printf()有返回值,正确返回打印字符数,错误打印负数. 7 s…
文件夹:http://blog.csdn.net/wide288/article/details/40298693 主要内容: widgets 的组成是什么. 怎么创建 info.plist 文件 怎么打包你的 widgets 一个 widgets 是在基础的 HTML 页面和 HTML 私有的结构的 widgets组成的. 一个 widgets 有图形元素的用户接口.使用 png 图形文件. 这里要打开天气预报的 widgets 来分析一下. 右键单击,打开包 我使用的是 10.9 我们仅仅能…
1.本章内容目录: 概述 运行时数据区域 程序计数器 java虚拟机栈 本地方法栈 java堆 方法区 运行时常量池 直接内存 HotSpot虚拟机对象探秘 对象的创建 对象的内存布局 对象的访问定位 实战:OutOfMemoryError异常 java堆溢出 虚拟机栈和本地方法栈溢出 方法区和运行时常量池溢出 本机直接内存溢出 2.本章具体内容: 2.1 概述: 对于C/C++而言,内存管理具有最高的权利,既拥有每一个对象的“所有权”,又担负着每一个对象生命开始到结束的维护责任. 对于java…
2.1 类型属性 2.1.1 UNSIGNED 数字无符号化, INT的值 -2147483648 ~ 2147483647  INT UNSIGNED的值 0 ~ 4294967295 int a = 1; int b = 2; a-b=-1 unsigned a = 1; unsigned b = 2; a-b=4294967295(Linux) Mac 报错  如果想要得到-1 mysql> SET sql_mode='NO_UNSIGNED_SUBTRACTION'; 2.1.2 ZER…
[git]分支   Git 的分支模型称为“必杀技特性”,而正是因为它,将 Git 从版本控制系统家族里区分出来. Git 有何特别之处呢?Git 的分支可谓是难以置信的轻量级,它的新建操作几乎可以在瞬间完成,并且在不同分支间切换起来也差不多一样快. 和许多其他版本控制系统不同,Git 鼓励在工作流程中频繁使用分支与合并,哪怕一天之内进行许多次都没有关系. 理解分支的概念并熟练运用后,你才会意识到为什么 Git 是一个如此强大而独特的工具,并从此真正改变你的开发方式.   Question1 :…
什么是微服务架构 是系统架构上的一种设计风格,将独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间基于HTTP的RESTful API进行通信协作. 每个小型服务都围绕各自的业务功能进行构建.每个服务都维护自身的数据存储.业务开发.自动化测试案例以及独立部署机制. 注:由于有了轻量级的通信协作基础,所以这些微服务可以使用不同的语言编写. 与单体系统的区别 随着业务增长与开发,单体系统会显得更加臃肿,且由于单体系统往往部署在一个进程中,修改一个小功能,为了部署上线会影响其…