自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王小东大将军的博客

读书学习笔记+温故知新

  • 博客(35)
  • 资源 (3)
  • 收藏
  • 关注

原创 二叉树的递归遍历与非递归遍历

递归遍历中序遍历中序遍历(LDR)是二叉树遍历的一种,也叫做中根遍历、中序周游。在二叉树中,先左后根再右。巧记:左根右。树中结点结构为typedef struct TreeNode { int data; struct TreeNode *left; struct TreeNode *right; struct TreeNode *p

2017-08-31 16:14:45 503

原创 C++中四种类型转换

转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。1、reinterpret_cast(expression) reinterpret_cast'reinterpret_cast'转换一个指针为其它类型的指针。它也允许从一个指针转换为整数类型。反之亦然。这个操作符能够在非相关的类型之间转换。操作结果只是简单的从一个指针到别的指针的值的二进制拷贝。在类型之间指

2017-08-31 10:51:18 290

原创 数据库与SQL语言 知识点总结

数据库知识数据库系统DBS是实现有组织地、动态地存储大量关联数据,方便多用户访问的计算机软件、硬件和数据资源组成的系统。一个典型的数据库系统包括数据库、硬件、软件(应用程序)和数据库管理员(DBA)4个部分。根据计算机的系统结构,DBS分成集中式、客户/服务式、并行式、分布式。 E-R模型        数据库逻辑结构设计中,将E-R模型转换为关系模型应遵循相关原则。对于3

2017-08-31 09:20:21 925

原创 虚拟存储容量

虚拟存储的容量受到下列哪一个因素的限制影响最大?DA. 磁盘空间大小B. 物理内存大小C. 数据存放的实际地址D. 计算机地址位数分析:这题应该是计算机地址位数才对。从影响上讲:虚存容量= min (2^计算机位数,内存+外存);  根据程序执行的互斥性和局部性两个特点,我们允许作业装入的时候只装入一部分,另一部分放在磁盘上,当需要的时候再装入到主存,这样以来,

2017-08-31 09:10:37 3674

原创 C++学习(66)

1 以下正确的是(B)A在C语言中,逻辑真值和假值分别对应1和0B关系运算符两边的运算对象可以是c语言中任意合法的表达式C对于浮点变量x和y,表达式:x==运算非法的,会出现编译错误D分支结构是根据算式表达式的结果来判断流程走向的分析:A 关系表达式和逻辑表达式的值 是布尔型:真或假(true or false),即0或1,但c语言没有布尔类型,以0为假,非0即真。B是合法

2017-08-31 08:55:36 714

原创 C++学习(65)

1关于new运算符,错误的是DA可以用来动态创建对象和对象数组B使用它创建的对象和对象数组可以使用运算符delete删除C使用它创建对象时要调用构造函数D使用它创建对象数组时必须指定初始值分析:D 可以不指定初始值,调用默认构造函数进行默认初始化。int*x=new int();//不传值,默认初始化为0 2free释放内存之后,指针还指向原来的那块地址,需要我们设

2017-08-31 08:49:02 375

原创 链表

如何实现链表?在C语言中可以使用指针和动态分配内存函数malloc来实现。 指针int a; int *p;指针有什么作用?答案:存储一个地址。确切的说是存储一个内存空间的地址。p=&a;&叫做取地址符。这样p就获得(存储)了整形变量a的地址,可以理解成整形指针p指向了整形变量a。p指向a之后,我们可以用指针p来操作变量a了。#include i

2017-08-31 08:41:47 297

原创

栈的实现只需要一个一维数组和一个指向栈顶的变量top即可。通过top来对栈进行插入和删除操作。 判断一个字符串是否是回文。若一个字符串是回文的,那么它必须是中间对称的,即求出mid。再把mid之前的字符全部入栈,此处的栈是用来存储字符,实现栈的数组类型是字符数组即chars[101];初始化栈很简单,top=0即可。入栈的操作top++;s[top]=x;(假设需要入栈的字符暂存在

2017-08-30 18:28:11 302

原创 时间片轮转法

时间片轮转法(Round-Robin,RR)主要用于分时系统中的进程调度。为了实现轮转调度,系统把所有就绪进程按先入先出的原则排成一个队列。新来的进程加到就绪队列末尾。每当执行进程调度时,进程调度程序总是选出就绪队列的队首进程,让它在CPU上运行一个时间片的时间。时间片是一个小的时间单位,通常为10~100ms数量级。当进程用完分给它的时间片后,系统的计时器发出时钟中断,调度程序便停止该进程的运行

2017-08-30 18:19:17 18832 1

原创 第十五章 套接字和标准I/O

标准I/O函数的优点标准I/O函数的优点标准I/O函数具有良好的移植性Portability、标准I/O函数可以利用缓冲提高性能。 所有函数都具有移植性,为了支持所有操作系统(编译器),这些函数都是按照ANSI C标准定义的。使用标准I/O函数时会得到额外的缓冲支持。(创建套接字时,操作系统将生成用于I/O的缓冲。此缓冲在执行TCP协议时发挥着重要的作用。此时,若使用标

2017-08-30 18:13:39 319

原创 第十四章 多播与广播

《TCP/IP网络编程》 尹圣雨 P230~P237 向大量客户端发送相同的数据时,会对服务器端和网络流量产生负面影响,可以使用多播技术解决该问题。 多播Multicast多播方式的数据传输是基于UDP完成的。与UDP服务器端/客户端的实现方式非常接近。区别在于,UDP数据传输是以单一目标进行的,而多播数据同时传递到加入(注册)特定组的大量主机。即采用多播方式时,可以同时向多个

2017-08-30 18:09:24 295

原创 第十三章 多种I/O复用

《TCP/IP网络编程》尹圣雨 P211-P225send & recv函数Linux中的send & recv#include ssize_t send(int sockfd, const void *buf,size_t nbytes,int flags);成功时返回发送的字节数,失败时返回-1.#include ssize_t recv(int

2017-08-30 17:56:04 299

原创 第十二章 I/O复用

并发服务器的第二种实现方法-基于I/O复用Multi-plexing的服务器端构建。 1基于I/O复用的服务器端多进程服务器端的缺点和解决办法创建进程时需要付出极大代价,需要大量的运算和内存空间,每个进程具有独立的内存空间,所以相互间的数据交换也要求采用相对复杂的方法(IPC属于相对复杂的通信方法)I/O复用能不创建进程的同时向多个客户端提供服务。理解复用在1个通信频道

2017-08-30 17:44:11 358

原创 第3章 揭秘C的语法

3.1 解读C的声明3.1.1 用英语来阅读char *color_name[]={"red","green","blue",};声明一个“指向char的指针的数组”。int *f();//返回指向int指针的函数int (*pf)();//指向返回int的函数的指针此处,因为*是前置运算符,它的优先级低于(),为了让连接正确地进行,有必要加上括号。

2017-08-30 17:16:44 291

原创 (欧) 第16章 操作系统

进程1 解释操作系统中的作业、进程、线程、管程各自定义。作业:用户在一次解题或一个事物处理过程中要求计算机系统所做工作的集合。作业是一系列有序步骤组成的。进程:一个程序在一个数据集合上的一次运行过程。所以一个程序在不同数据集合上运行,乃至一个程序在同样数据集合上的多次运行都是不同的进程。线程:线程是进程的一个实体,是被系统独立调度和执行的基本单位。管程:定义了一个数据结构和在该

2017-08-30 15:49:13 655

原创 (欧)第15章 设计模式与软件测试

软件模式设计模式关注的重点在于通过经验提取的”准则或指导方案“在设计中的应用,因此在不同层面考虑问题的时候形成了不同问题领域上的模式。模式的目标:把共通问题中的不变部分和变化部分分离出来。不变的部分,就构成了模式。因此,模式是个经验提取的准则,并且一次次的实践中得到验证。软件测试是指使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验软件是否满足规定的需求或弄清预期结

2017-08-30 10:02:18 431

原创 第一章 操作系统引论

计算机系统由硬件和软件两部分组成。操作系统(OS,Operating System)是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。1.1 操作系统的目标和作用影响操作系统的主要目标的另一个重要因素是操作系统的应用环境。例如,对于应用在查询系统中的操作系统,应满足用户对响应时间的要求;又如对应用在实时工业控制和武器控制环境下的OS,则要求其OS具有实时性和高度可靠性。

2017-08-29 19:03:42 3254

原创 第4章 数组和指针的常用方法

4.1 基本使用方法4.1.1 以函数返回值之外的方式来返回值大型程序中,经常需要通过返回值返回程序处理的状态(比如是否成功,如果失败,还需要返回失败的原因)。如果将指针作为参数传递给函数,此后在函数内部对指针指向的对象填充内容,就可以从函数返回多个值。#includevoid func(int *a,double *b) { *a=5; *b=3.5;} int ma

2017-08-28 16:22:06 228

原创 计算机网络知识点总结

网络体系结构SAP(访问访问点),OSI参考模型中上层协议实体与下层协议实体之间的逻辑接口叫作服务访问点。两个相邻层间的信息交换,实际上是由两层间的实体通过服务访问点相互作用的。接口以一个或多个服务访问点SAP的形式存在,并通过服务访问点来实现其功能。SAP位于N层和N+1层的逻辑交界面上,是N层实体向N+1层实体提供服务的地方,或者N+1层实体请求N层服务的地

2017-08-24 22:52:34 5607

原创 第十八章 多线程服务器端的实现

线程在windows中的应用比在Liunx平台的应用更广泛。web服务器端协议本身具有的特点,经常需要同时向多个客户端提供服务,开始利用更高效的线程实现WEB服务器端。理解线程的概念引入线程的背景第十章 多进程服务器(下)、 第十章 进程与僵尸进程 (上)介绍了多进程服务器端的实现方法。多进程模型与select或epoll相比具有优势,同时也有缺点。创建进程(复制)的工作本身会

2017-08-08 12:50:15 350

原创 第十七章 优于select的epoll

《TCP/IP网络编程》 尹圣雨 P263~P265实现I/O复用的传统方法有select函数和epoll函数。select函数的使用方法由于各种原因导致无法得到令人满意的性能。因此有了Linux下的epoll、BSD的kqueue、Solaris的/dev/poll 和 Windows的IOCP等复用技术、epoll理解及应用select复用方法,无法同时接入上百个客户端,并不适合以

2017-08-06 22:24:30 433

原创 第十六章 关于I/O流分离的其他内容

P255~P264调用fopen函数打开文件后可以与文件交换数据,说明调用fopen函数后创建了“流”Stream。 此处的流是指“数据流动”,通常可以比喻成“以数据收发为目的的一种桥梁”。即数据收发路径、分离I/O流2次I/O流分离    2种方法分离I/O流:第一种是TCP I/O过程Routine分离(通过调用fork函数复制出1个文件描述符,以区分输入和输出中使用的

2017-08-06 20:56:19 298

原创 爱奇艺2017秋招c++开发工程师笔试卷

1在软件开发中,我们经常要使用测试用例对程序进行检查,一次成功的测试是指运行测试用例后(B)A证明程序正确性B发现了程序错误C改正了程序错误D未发现程序错误 2 下列程序输出多少个1? 16、4 单例模式中,两个基本要点(AD)和单子类自己提供单例A构造函数私有B静态工厂方法C以上都不对D唯一实例a,d构造方法私有不允许直接继承与直接ne

2017-08-05 15:24:04 1192

原创 如何减少访问磁盘的次数,减少访问磁盘的次数

设计文件系统时应尽量减少访问磁盘的次数,以提高文件系统的性能.下列各种措施中,哪些可以减少磁盘服务时间?A. 块高速缓存B. 磁盘驱动调度C. 目录项分解法D. 异步I/O技术 //异步I/O只能提高CPU利用率,但访问磁盘的次数并不改变保护磁盘,减少访问磁盘次数的措施有哪些? 1)既然要减少访问,那最理想的情况就是不访问呗,把所有的数据都丢进缓存中,

2017-08-05 12:41:07 3993

原创 第十一章 进程间通信

《TCP/IP网络编程》 尹圣雨 P183~P193进程间通信的基本概念进程间通信 Inter Process Communication意味着两个不同进程间可以交换数据。只要有2个进程可以同时访问的内存空间,就可以通过此空间交换数据。进程具有完全独立的内存结构。fork()创建的子进程也不会与父进程共享内存空间。通过管道实现进程间通信为完成进程间通信,需要创建管道

2017-08-03 16:14:40 229

原创 第十章 多进程服务器(下)

《TCP/IP网络编程》 尹圣雨 P165~P181信号处理“子进程何时终止?调用waitpid函数后要无休止的等待吗?”向操作系统求助子进程终止的识别主体是操作系统,若操作系统能把如下信息告诉正忙于工作的父进程,将有助于构建高效的程序。引入信号处理Signal Handing机制,此处的信号是特定是在特定事件发生时由操作系统向进程发送的消息。为了响应该消息,执行与消息相关的自

2017-08-03 15:34:52 350

原创 第九章 套接字的多种可选项

《TCP/IP网络编程》 尹圣雨 P140~P152套接字具体多种特性,可通过可选项更改。1 套接字可选项和I/O缓冲大小SOL_LOCKET层是套接字相关的通用可选项IPPROTO_IP层可选项是IP协议相关事项IPPROTO_TCP层可选项是TCP协议相关事项具体见P120~P141可选项的读取和设置通过如下两个函数完成#in

2017-08-02 21:07:31 318

原创 第八章 域名及网络地址

《TCP/IP网络编程》 尹圣雨 P118~P136DNS,Domain Name System,域名系统。DNS是对IP地址和域名进行相互转换的系统,其核心是DNS服务器。域名提供网络服务的服务器端也是通过IP地址区分的,将容易记、易表述的域名分配并取代IP地址、     域名是赋予服务器端的虚拟地址,而非实际地址。因此,需要将虚拟地址转化为实际地址。将域名变为I

2017-08-02 19:03:50 366

原创 第七章 优雅地断开套接字连接

《TCP/IP网络编程》 尹圣雨 P120~P124调用Linux的close函数或者windows的closesocket函数是单方面断开连接,意味着完全断开。完全断开不仅指无法传输数据,也不能接收数据。基于TCP的半关闭 Half-close,即“只关闭一部分数据交换中的使用的流”的方法应运而生。断开一部分连接是指,可以传输数据但无法接收,或可以接收数据但无法传输。

2017-08-02 17:12:29 470

原创 第六章 基于UDP的服务器端/客户端

《TCP/IP网络编程》 尹圣雨P101~P1141 理解UDPUDP提供的是不可靠的数据传输服务。UDP结构上比TCP简洁,不会发送类似ACK的应答消息,不会像SEQ那样给数据包分配序号。因此UDP性能有时会比TCP更高。编程实现UDP也比TCP简单。另外,UDP的可靠性比不上TCP,但也不会像想象中那么频繁地发生数据损毁。UDP作用?为提供可靠的数据传输

2017-08-02 16:18:55 587

原创 第五章 基于TCP的服务器端/客户端(2)

《TCP/IP网络编程》 尹圣雨P82~P90 关于《回声客户端的完美实现》不是特别理解、需要再回过头来再看看。主要学习了第二节部分内容的TCP原理。P91~P96TCP原理TCP套接字中的I/O缓冲write函数调用后并非立即传输数据,read函数调用并非马上接收数据。write函数调用瞬间,数据将转移至输出缓冲池;read函数调用瞬间,从输入缓冲池读取数据。

2017-08-02 15:10:37 339

原创 STL基础学习之vector、stack、deque、list总结

最近又在复习push_back(),push()方法的时候,查阅一些资料把STL中的一些容器方法创新复习总结了一下。C++ push方法与push_back方法 浅析c++ stl栈容器stack的pop(),push()等用法介绍及头文件push_back 方法介绍vector::void push_back (const value_type& va

2017-08-02 12:24:41 459

原创 第四章 基于TCP的服务器端/客户端(1)

《TCP/IP网络编程》 尹圣雨P59~P711.理解TCP和UDP根据数据传输方式不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字。TCP套接字是面向连接的,称为基于流的套接字。  各层通过操作系统等软件实现,也可能通过类型NIC的硬件设备实现。 补充:开放式系统 Opening System(以多个标准为依据设计的系统)路由器用来完成

2017-08-01 15:55:27 404

原创 第三章 地址族与数据序列

《TCP/IP网络编程》 尹圣雨P36~P451分配给套接字的IP地址与端口号IP是为收发网络数据而分配给计算机的值。端口号是为区分程序中创建的套接字而分配给套接字的序号。IP地址分为2类:IPv4和IPv6,主要差别是表示IP地址所用的字节数。IPv4标准的4字节IP地址分为网络地址和主机地址,分为ABCDE类型、 网络地址(网络ID)是为区分网络而设置的一部分I

2017-08-01 14:11:44 315

原创 C++学习(64)

1 分析下列程序:#includeint main() {int i=3;printf("%d,%d\n",++i,++i);int j=3;printf("%d,%d\n",j+=2,j*=3);}分析:函数的参数是从右向左压栈的,输出时从栈顶开始,相当于: int i = 3; ++i; ++i; printf("%d,%d",i,i);所以是 5,5;再举一个例子

2017-08-01 14:07:10 323

MySql必知必会

MySql必知必会·MySql必知必会MySql必知必会MySql必知必会MySql必知必会MySql必知必会MySql必知必会MySql必知必会MySql必知必会MySql必知必会

2017-09-04

快速上手MySql && MySql GUI工具 SQLyog Community

快速上手MySql

2017-06-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除