自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 堆和栈的区别

简单的可以理解为: heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。 预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

2016-12-24 22:31:54 196

原创 Linux下段错误分析

段错误产生的原因 2.1 访问不存在的内存地址 #include #include void main() { int *ptr = NULL; *ptr = 0; }123456712345672.2 访问系统保护的内存地址 #include #include void main() { int ptr = (int )0; *ptr = 100;

2016-12-23 22:10:24 285

原创 linux套接字

一、什么是socket socket,即套接字是一种通信机制,凭借这种机制,客户/服务器(即要进行通信的进程)系统的开发工作既可以在本地单机上进行,也可以跨网络进行。也就是说它可以让不在同一台计算机但通过网络连接计算机上的进程进行通信。也因为这样,套接字明确地将客户端和服务器区分开来。二、套接字的属性套接字的特性由3个属性确定,它们分别是:域、类型和协议。1、套接字的域它指定套

2016-12-22 22:35:29 262

原创 判断一个数是否是2的N次方

对于判断一个数是否为2的N次方问题,通常想到的最为直接的办法就是对这个数不断对2取余,为0就将该数变为该数除以2,直到最后该数为1为止。void judge(int n) { while(!(n % 2)) { n = n / 2; if(n == 1) { pri

2016-12-20 19:55:32 763

原创 堆(heap)和栈(stack)的区别

简单的可以理解为: heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。 预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据

2016-12-19 22:09:28 247

转载 Linux下段错误分析

段错误产生的原因 2.1 访问不存在的内存地址 #include #include void main() { int *ptr = NULL; *ptr = 0; }2.2 访问系统保护的内存地址 #include #include void main() { int ptr = (int )0; *ptr = 100; }2.

2016-12-18 17:58:26 399

原创 enum的相关用法

在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等。以每周七天为例,我们可以使用#define命令来给每天指定一个名字:复制纯文本复制#include  #define Mon 1#define Tues 2#define Wed

2016-12-17 23:19:23 274

原创 sqlite3_get_table()函数

[objc] view plain copy print?{   sqlite3 *db;   charchar *errmsg=NULL;    //用来存储错误信息字符串   char ret=0;   int my_age=0;    //类型根据要提取的数据类型而定   charchar **dbResult;   int nRow=0, nCo

2016-12-16 18:59:00 14591

原创 网络编程5类ip地址范围

1、五类IP的范围IP地址分为A,B,C,D,E五类。网络号:用于识别主机所在的网络; 主机号:用于识别该网络中的主机。其中A类分配给政府机关使用,B类地址给大中型企业使用,C类地址给个人使用。这三种是主要的。IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同。其中A类、B类、

2016-12-15 16:50:14 1723

原创 约瑟夫环问题

一、思路分析    (1)可将人的顺序简单编号,从1到N;    (2)构造一个循环链表,可以解决首位相连的问题,同时如果将人的编号改为人名或者其他比较方便         (3)将人的编号插入到结构体的Data域;         (4)遍历人的编号,输出参与的人的编号;         (5)开始报数,从头报数,报到k的人出局(删除次结点),(输出出局的人更人性化)

2016-12-14 18:33:13 378

原创 socket发送结构体

客套话不说了:socket中的send函数可以发送字符串,不能直接发送结构体,自己理解:结构体即内存中一段连续的内存,这样send中可以发送结构体指针 上代码:代码功能:客户端发送给服务端一个结构体,服务端返回客户端一字符串客户端代码 client.c#include #include #include #include #include #includ

2016-12-13 21:41:25 2208

原创 小程序-利用递归判断数组是否递增

#include "stdafx.h" void Judge(int *a,int n){    if(n == 1){ printf("递增"); }    if(n != 1)    {        if(a[n-1] >= a[n - 2]){ Judge(a, n - 1); }        if(a[n-1] printf("非

2016-12-12 19:48:15 435

原创 网关

网关 网关工作原理图概述网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打

2016-12-11 22:12:42 362

原创 三次握手和四次挥手

一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。 (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1

2016-12-10 19:52:19 214

原创 如何让UDP实现可靠传输

如何让UDP实现可靠传输自定义通讯协议,在应用层定义一些可靠的协议,比如检测包的顺序,重复包等问题,如果没有收到对方的ACK,重新发包UDP没有Delievery Garuantee,也没有顺序保证,所以如果你要求你的数据发送与接受既要高效,又要保证有序,收包确认等,你就需要在UDP协议上构建自己的协议。比如RTCP,RTP协议就是在UPD协议之上专门为H.323协议簇上的IP电话设计的一

2016-12-09 22:14:24 561

原创 操作系统中调度算法

一、磁盘调度主要思想设备的动态分配算法与进程调度相似,也是基于一定的分配策略的。常用的分配策略有先请求先分配、优先级高者先分配等策略。在多道程序系统中,低效率通常是由于磁盘类旋转设备使用不当造成的。操作系统中,对磁盘的访问要求来自多方面,常常需要排队。这时,对众多的访问要求按一定的次序响应,会直接影响磁盘的工作效率,进而影响系统的性能。访问磁盘的时间因子由3部分构成,它们是查找(查找磁

2016-12-08 21:10:27 869

原创 sql删除表操作

说到删除表数据的关键字,大家记得最多的可能就是delete了  然而我们做数据库开发,读取数据库数据.对另外的两兄弟用得就比较少了  现在来介绍另外两个兄弟,都是删除表数据的,其实也是很容易理解的  老大------drop  出没场合:drop table tb --tb表示数据表的名字,下同  绝招:删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据

2016-12-07 21:41:16 8233

转载 堆,栈,内存泄漏和内存溢出

简单的可以理解为:heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中

2016-12-06 16:33:39 468

原创 单链表反序,逆序的两种方法

我先画一个单链表,这个单链表有4个元素。我的思路就是,每次把第二个元素提到最前面来。比如下面是第一次交换,我们先让头结点的next域指向结点a2,再让结点a1的next域指向结点a3,最后将结点a2的next域指向结点a1,就完成了第一次交换。第一次交换然后进行相同的交换将结点a3移动到结点a2的前面,然后再将结点a4移动到结点a3的前面就完成了反转。第

2016-12-05 21:42:36 5076 2

转载 LinuxC select函数详解

Select函数在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、 accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(

2016-12-04 18:14:57 659

原创 scanf函数注意点

scanf函数我曾经在这个函数上犯过不少错误,也看到别人犯过的错误,记下来,提醒自己不要重蹈覆辙了。如果对你有用,那就更好了:)如果你发现文章中有错误,欢迎你不吝赐 教。希望和大家一起学习!曾经错的几个地方:(xpsp2,vc6.0环境下)1.空白符问题[objc] view plain copy print?#include    

2016-12-03 19:12:40 437

原创 管理文件

要求:创建一个新文件,文件内容为本班所有同学的学号、姓名、操作系统课程成绩,要求采用有格式的存储方式;文件建立后,能对文件进行插入、删除、查找等操作。[objc] view plain copy print?#include   #include   #include   //#include   int NUM = 0;    struct

2016-12-02 22:01:51 454

原创 malloc和free用法

malloc()和free()的基本概念以及基本用法1. 函数原型及说明:void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。关于分配失败的原因,应该有多种,比如说空间不足就是一种。void free(void *FirstByte): 该函数是将之前用mallo

2016-12-01 20:05:00 710

空空如也

空空如也

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

TA关注的人

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