- 博客(131)
- 收藏
- 关注
转载 指针和内存
C程序编译后,三种形式使用内存@静态/全局内存静态声明的变量和全局变量使用的内存都在这部分,所有函数能访问全局变量,静态变量的作用域则局限在定义他们的函数内部@自动内存这些变量在函数内部声明,并且在函数被调用时才创建。@动态内存内存分配在堆上作用域生命周期全局内存整个
2017-02-22 22:24:52
361
原创 面向过程与面向对象——c语言与c++
C语言的特点:C语言实在实践中逐步完善起来的没有深思熟虑的设计过程使用时存在很多“灰色地带”残留了过多低级语言的特征直接利用指针进行内存操作C语言的目的是高效:最终执行效率的高效面向过程程序设计:数据结构+算法主要解决科学计算问题,用户需要简单而固定特点:分析解决问题所需要的步骤利用函数实现各个步骤一次调用函数解决问题问题:
2017-02-21 20:00:38
1011
原创 c++中的static关键字
static:static修饰的成员函数没有this指针(因为其属于类,不属于某个具有对象的,不会分配空间)静态成员函数不可以访问非静态成员非静态成员函数可以访问静态成员static的优点:static成员的名字是在类的作用域中,因此可以避免与其他类成员或全局对象名字冲突可以实施封装,static成员可以是私有的,而全局对象不可以阅读程序容易看出static成员
2017-02-13 20:08:35
331
原创 关键字const
const的作用:const修饰的变量的值不能被改变。例如:consi int i= 10;i的值就固定为10 了,如果试图改变i的值,程序将会报错。编译过程中会将用到i的地方替换成10。const的初始化:因为const对象一旦创建就不能再改变,所以const对象必须初始化。如果利用一个对象去初始化另外一个对象,则它们是不是const都无关紧要:int i =
2017-02-11 11:27:04
310
转载 IO多路复用适用场合
IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。
2017-01-19 22:01:01
1313
原创 c++(一)
类和结构体类型的不同:在c++中,class和struct都可以用来声明一个类,但是它们有不同的地方。用struct声明的类,如果对其成员不作private或public的声明,系统将默认定为public;相反的,用class声明的类,如果对其成员不作private或public的声明,系统将默认定为private。成员函数可以被指定为private,public,protecte
2017-01-14 22:31:52
275
原创 C++一些初步知识
函数的重载:C++允许在同一作用域中用同一个函数名定义多个函数,这些函数的参数个数和参数类型不同,这些同名的函数用来实现不同的功能,这就是函数的重载,即一个函数名多用。例:int max(int a,int b,int c);float max(float a,float b,float c);long max(long a,long b,long c);上述三个函数函数名一样,但
2017-01-13 20:31:13
261
原创 合并两个递增链表
struct node{int num;struct node *next;};typedef struct node Node;typedef Node * Link; Link Merge(Link head1, Link head2){If(head1 == NULL) return head2;If(head2 == NULL) return head1;Link
2017-01-04 22:36:55
253
原创 strcpy sprintf memcpy 区别
strcpy 函数操作的对象是字符串,完成 从 源字符串 到 目的字符串 的 拷贝 功能。 sprintf 函数操作的对象 不限于字符串:虽然目的对象是字符串,但是源对象可以是字符串、也可以是任意基本类型的数据。这个函数主要用来实现 (字符串或基本数据类型)向 字符串 的转换 功能。如果源对象是字符串,并且指定 %s 格式符,也可实现字符串拷贝功能。 memcpy 函数顾名思义就是 内存拷
2016-12-28 22:14:06
229
转载 指令周期、机器周期、’时钟周期
指令周期 :取出并执行一条指令的时间。 机器周期 :又称CPU周期,CPU访问一次内存所花的时间较长,因此用从内存读取一条指令字的最短时间来定义。//机器周期=1/12·振荡周期时钟周期: 通常称为节拍脉冲或T周期。处理操作的最基本单位,即CPU主频。 三者的关系:指令周期通常用若干个机器周期表示,而机器周期又包含若干个时钟周期。
2016-12-25 20:42:37
400
原创 操作系统课设——页面置换算法的模拟
本课设主要实现FIFO算法和LRU算法,虽然实现了功能,但是个人感觉代码可以优化,而且采用的主存块数是3,如果主存块数修改了,那么代码也需要修改,这是我课设不足之处,望大神来指教!下面是我的代码#include #include #define PAGE_NUM 3 //主存块数#define SERIAL_NUM 12 //访问序列的次数int serial[SERI
2016-12-24 22:58:28
2440
原创 约瑟夫环
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后结果+1即为原问题的解。#include #include #include struct node{
2016-12-22 22:17:16
237
原创 给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。
给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。 #define BIT3 (0x1 << 3)static int a;void set_bit3(void){ a |= BIT3;}void clear_bit3(void){ a &= ~BIT3;}
2016-12-21 22:21:59
8969
3
原创 c语言==判断一个数是否为2的整数次方【不使用循环】
对于判断一个数是否为2的N次方问题,通常想到的最为直接的办法就是对这个数不断对2取余,为0就将该数变为该数除以2,直到最后该数为1为止。void judge(int n) { while(!(n % 2)) { n = n / 2; if(n == 1) { pri
2016-12-20 22:25:30
3519
原创 一只青蛙一次可以跳上1—n级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法?(递归)
int jump(int number){ int count = 0; if(number < 2) { return 1; } for(int i = number; i >= 0; i--) { count += junp(i); } return count;}
2016-12-19 22:44:04
544
转载 并发服务器,分布式服务器(结构)
什么是分布式系统架构 分布式系统架构简单的说是运行在多个处理器上的软件构架设计。 分布式系统是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。 网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。 架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于
2016-12-17 22:33:26
522
原创 子网掩码及其作用
子网掩码(subnet mask)是每个使用互联网的人必须要掌握的基础知识,只有掌握它,才能够真正理解TCP/IP协议的设置。子网掩码——屏蔽一个IP地址的网络部分的“全1”比特模式。对于A类地址来说,默认的子网掩码是255.0.0.0;对于B类地址来说默认的子网掩码是255.255.0.0;对于C类地址来说默认的子网掩码是255.255.255.0。利用子网掩码可以把大的网络划分
2016-12-16 09:08:17
496
转载 DNS
DNS是域名系统的缩写,是因特网的一项核心服务,DN是一个分布式的数据库,主要用来把主机名转换为IP地址。 即www.baidu.com 转化为 61.135.169.121 它允许服务器改变IP,但是名字不变,这就大大增加了服务器的灵活性与动态性DNS服务器工作的具体过程:1、在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映
2016-12-14 23:18:29
224
转载 http协议
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。HTTP协议的主要特点可概括如下:1.支持客户/服务器模
2016-12-13 21:28:30
270
原创 strstr函数
字符串函数strstr(char *s1,char *s2)是返回字符串s1中首次出现s2的地址函数实现:[cpp] view plain copy char *my_strstr( char *s1, char *s2) { if(*s2 == '\0') { retur
2016-12-12 22:39:29
241
转载 如何让UDP实现可靠传输
如何让UDP实现可靠传输自定义通讯协议,在应用层定义一些可靠的协议,比如检测包的顺序,重复包等问题,如果没有收到对方的ACK,重新发包UDP没有Delievery Garuantee,也没有顺序保证,所以如果你要求你的数据发送与接受既要高效,又要保证有序,收包确认等,你就需要在UDP协议上构建自己的协议。比如RTCP,RTP协议就是在UPD协议之上专门为H.323协议簇上的IP电话
2016-12-11 17:36:07
406
原创 C/S和B/S的区别以及用法
C/S和B/S结构概念1.什么是C/S结构C/S (Client/Server)结构,即客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。C/S结构可以看做是胖客户端架构。客户端实现绝大多数的业务逻辑处理和界面展示,作为客户端的部分需要承受很大的压力,从分利用客户端的资源,对客
2016-12-10 17:44:49
1081
转载 TCP和UDP的区别,如何选择使用
TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。UDP(User Datagram Protocol) UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立刻按照原样发送到网络上的一种机制。 即使是出现网络拥堵的情况下,UDP也无法进行流
2016-12-09 21:54:41
743
原创 三次握手,四次挥手
TCP三次握手所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。第一次握手: 客户端发送一个TCP的SYN标志位置1的包指明
2016-12-08 22:16:39
519
转载 函数变相做到返回多个值的方法
2方法1:利用全局变量 分析:全局变量作为C语言的一个知识点,虽然我们都了解它的特点,但在实际教学过程中应用得并不是很多。由于全局变量的作用域是从定义变量开始直到程序结束,而对于编写有多个返回值的C语言函数,我们可以考虑把要返回的多个值定义成全局变量。当函数被调用时,全局变量被更改,我们再把更改后的全局变量值应用于主调函数中。函数被调用后被更改后的全局变量值即为函数的数个返回值。
2016-12-07 23:02:23
322
转载 五类IP地址范围及作用
P地址分为A,B,C,D,E五类。网络号:用于识别主机所在的网络; 主机号:用于识别该网络中的主机。其中A类分配给政府机关使用,B类地址给大中型企业使用,C类地址给个人使用。这三种是主要的。IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同。其中A类、B类、和C类这三类地址
2016-12-06 22:16:53
1683
原创 I/O多路转接
#include #include #include #include #include #include #include #include #include #include #include /* 宏定义端口号 */ #define portnumber 8000 #define MAX_LINE 80
2016-12-05 22:27:02
200
原创 操作系统实验2
#include #include struct node { int pid;//进程id号 int prio;//进程优先级 int runtime;//进程运行的时间 int alltime;//进程还需运行的时间 char state;//进程的状态 运行r,就绪j,阻塞b。 struc
2016-12-04 22:55:45
394
原创 两道程序题
1.编写一个函数,字符串逆序:#include#include#include void reverse(char *str,int len){ int i; char temp[100]; for(i = 0;i < len;i++) { temp[i] = str[i]; } temp[len] = '\0'; for(i = 0;i<len;i++) {
2016-12-04 00:39:57
360
原创 c语言编程题
问题描述 小于10的自然数中有四个数字能除尽3或5(3, 5, 6, 9),它们的和为23。 请计算所有小于1000的自然数中能除尽3或5的数字的合。然后使用标准输出cout,输出你的结果。 输入格式 无。 输出格式 一行一个整数,表示你的结果。#include int judge(int x) { if(x%3==0||x%5==0
2016-12-02 23:27:28
614
转载 malloc和free的理解
malloc()和free()的基本概念以及基本用法1. 函数原型及说明:void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。关于分配失败的原因,应该有多种,比如说空间不足就是一种。void free(void *FirstByte): 该函数是将之前用m
2016-12-02 23:25:50
248
原创 一些测试题的思路与答案
1.下面程序的输出结果是()#include #include int main() { char a[1000]; int i; for(i=0;i<1000;i++) { a[i]=-1-i; } printf("%d",strlen(a)); return 0;}答案是255。因为char的数范围是-1
2016-11-30 21:51:45
342
原创 数据结构(十一)——二叉树的遍历和建立
二叉树的遍历是指从根节点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。其中关键词是访问和次序。二叉树的遍历方法1.前序遍历规则:若二叉树为空,则 空操作返回,否则先访问根结点,然后前序遍历左子树,在前序遍历右子树。下图的遍历顺序为ABDGHCEIF。2.中序遍历规则:若树为空,则空操作返回,否则从根结点开始,中序遍历根
2016-11-29 22:36:13
375
原创 c的一个小注意点
下面举个例子,判断回文的:#include#include#define MAX_SIZE 100int main(){ char src[MAX_SIZE]; int i = 0; int len; //① printf("请输入字符串:"); scanf("%s",src); len = strlen(src); //② while(i <= (
2016-11-28 22:52:45
398
原创 数据结构(十)——二叉树
二叉树的定义:二叉树是n个结点的有限集合,该集合或者为空集,或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。如下图:二叉树的特点:1.每个结点最多有两棵子树,所以二叉树中不存在度大于2的结点。2.左子树和右子树是有顺序的,次序不能任意颠倒。3.即使树中某结点只有一棵树,也要区分它是左子树还是右子树。二叉树的五种基本形态:1.空二
2016-11-27 19:15:48
620
原创 Linux下常用命令详解
gedit 显示行数在菜单栏的编辑->首选项 中有个显示行号的checkbox,选中即可。 根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录也与开机/还原/系统修复等动作有关。 linux绝对路径和相对路径绝对路径是从/(也被称为根目录)开始的,比如/usr、/etc/X11。相对路径是以 .
2016-11-26 21:43:55
351
转载 条件编译
这几个宏是为了进行条件编译。一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段2
2016-11-25 23:26:47
258
原创 数据结构(9)——树
树的定义:树是n个结点的有限集。n=0时称为空树。在任意一棵非空树中:1.有且仅有一个特定的称为根结点2.n > 1时,其余结点可分为m个互不相交的有限集T1、T2、......Tm,其中每个集合本身有时一棵树,并且称为根的子树。如下图:子树T1,T2是上面的子树关于树的定义要注意以下两点:1.n>0时根结点是唯一的。2.m>0时,子树的个数没有限制
2016-11-24 21:31:37
403
原创 数据结构(八)—— 串
串的定义:串是由零个或者多个字符组成的有限队列,又名叫字符串。一般记为s = "a1a2......an"(n >= 0),其中s是串的名称,n是串的长度。子串与主串,串中任意个数的连续字符组成的子序列称为该串的子串,相应地,包含子串的串称为主串。子串在主串中的位置就是子串的第一个字符在主串的序号.串的比较:给定两个串:s=“a1a2......an”,t=“b1b2...
2016-11-23 18:17:34
298
转载 进程和线程间的联系和区别
进程概念 进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。在Mac、Windows NT等采用微内核结构的操作系统中,进程的功能发生了
2016-11-22 21:54:44
284
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人