关闭

代码的坏味道

代码坏味道:是指在代码之中潜在问题的警示信号。并非所有的坏味道所指示的确实是问题,但是对于大多数坏味道,均很有必要加以查看,并作出相应的修改。 1. 重复的代码 如果你在一个以上的地点看到相同的程序结构,那么当可肯定:设法将它们合而为一,程序会变得更好。 同一个class内的两个函数中含有重复的代码段两个兄弟class的成员函数中含有重复的代码段两个毫不相关的class内出现...
阅读(619) 评论(0)

Linux的多任务编程-线程

1.线程的基本概念 Linux操作系统很早就具备这些多进程功能了.但有时人们认为用fork()来创建一个新进程的代价还是太大,如在Web服务器中,通常采取的多进程方案是一旦接收到访问请求后,即创建一个新的进程,由该进程执行任务,当任务执行完毕后,该进程退出.如果有大量的请求在很短的时间中频繁的访问该服务器,那么服务器耗费在创建进程,销毁进程中的机时便十分可观.如果能用线程来完成这个工作,则情...
阅读(688) 评论(0)

Linux的多任务编程-进程

Linux的多任务编程-进程 进程的概念 进程是指一个具有独立功能的程序在某个数据集合上的一次动态执行过程,它是系统进行资源分配和调度的基本单元.一次任务的运行可以并发激活多个进程,这些进程相互合作来完成该任务的一个最终目标. 进程的特性:并发性,动态性,交互性,独立性,异步性.  进程的种类:交互式进程,批处理进程,实时进程. 进程和程序是有本质区别的:程序是静态的一段...
阅读(2210) 评论(0)

面向报文(UDP)和面向字节流(TCP)的区别

面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片,降低效率。若太短,会是IP太小。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这也就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。 面向字节流的话,虽然应用程序和TCP的交互是一次一个数据块(...
阅读(1294) 评论(0)

详解大端模式和小端模式

详解大端模式和小端模式 一、大端模式和小端模式的起源         关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下令,命令...
阅读(514) 评论(0)

深入浅出进程与线程的基本概念

http://blog.csdn.net/ce123_zhouwei/article/details/8933251 深入浅出进程与线程的基本概念 进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握.最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂.   1.   计算机的核心是CPU,...
阅读(798) 评论(0)

TFTP协议规范

TFTP协议 1. 目的 TFTP是一个传输文件的简单协议,它其于UDP协议而实现,但是我们也不能确定有些TFTP协议是基于其它传输协议完成的。此协议设计的 时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据。传输中 有三种模式:netascii,这是8位的ASCII码形式,另一种是octet,这是8位源数据...
阅读(492) 评论(0)

Linux 的多线程编程的高效开发经验

转自:http://www.chineselinuxuniversity.net/articles/22615.shtml 本文中我们针对 Linux 上多线程编程的主要特性总结出 5 条经验,用以改善 Linux 多线程编程的习惯和避免其中的开发陷阱。在本文中,我们穿插一些 Windows 的编程用例用以对比 Linux 特性,以加深读者印象。 背景 Linux 平台上的多...
阅读(459) 评论(0)

TCP/IP数据包结构分析

一般来说,网络编程我们只需要调用一些封装好的函数或者组件就能完成大部分的工作,但是一些特殊的情况下,就需要深入的理解 网络数据包的结构,以及协议分析。如:网络监控,故障排查等……   IP包是不安全的,但是它是互联网的基础,在各方面都有广泛的应用。由IP协议衍生的协议族有10数种(据我所知),以后还会出现 更多的基于IP的协议…   先从实际出发吧! 一般...
阅读(722) 评论(0)

STL中list的使用(理论)

STL中的list就是一双向链表,可高效地进行插入删除元素。现总结一下它的操作。 文中所用到两个list对象c1,c2分别有元素c1(10,20,30) c2(40,50,60)。还有一个list::iterator citer用来指向c1或c2元素。 list对象的声明构造(): A.      listc0;                //空链表 B.      l...
阅读(412) 评论(0)

Linux进程间通信(二)---管道通信之无名管道及其基础实验

管道简介    管道是Linux中进程间通信的一种方式,它把一个程序的输出直接连接到另一个程序的输入(其实我更愿意将管道比喻为农村浇地的管子)。Linux的管道主要包括两种:无名管道和有名管道。这一节主要讲无名管道,首先介绍一下这两个管道。(特点很重要啊!) 1、无名管道    无名管道是Linux中管道通信的一种原始方法,如图一(左)所示,它具有以下特点:    ①  它...
阅读(479) 评论(0)

Linux进程间通信(一)---进程间通信概述及其种类

为什么会有进程间通信?    我们应该都知道了,进程是一个程序的一次执行,是系统资源分配的最小单元。这里所说的进程一般是指运行在用户态的进程,而由于处于用户态的不同进程间是彼此隔离的,但是它们很可能需要相互发送一些信息,好让对方知道自己的进度等情况,像这样进程间传递信息就叫进程间通信。 进程间通信方式有几种?   就像处于不同城市的人之间的通信方式有手机、电脑等方式一样,进程间通...
阅读(421) 评论(0)

Linux多任务编程(六)---编写多进程程序及其代码

实验目的    通过编写多进程程序,熟练掌握fork()、exec()、wait()和waitpid()等函数的使用,进一步理解在Linux中多进程编程的步骤。 实验内容    该实验有3个进程,其中一个为父进程,其余两个是该父进程创建的子进程,其中一个子进程运行“ls -l”指令,另一个子进程在暂停5s后异常退出。父进程先用阻塞方式等待第一个进程的结束,然后用非阻塞方式等待另一...
阅读(806) 评论(0)

Linux多任务编程(五)---wait()、waitpid()函数及其基础实验

wait()和waitpid() 函数说明    wait()函数用于使父进程(也就是调用wait()的进程)阻塞,直到一个子进程结束或者该进程接收到了一个指定的信号为止。如果该父进程没有子进程或者它的子进程已经结束,则wait()函数就会立即返回。    waitpid()的作用和wait()一样,但它并不一定要等待第一个终止的子进程(它可以指定需要等待终止的子进程),它还有若...
阅读(696) 评论(0)

Linux多任务编程(四)---exit()函数及其基础实验

exit()和_exit()函数 函数说明    创建进程使用fork()函数,执行进程使用exec函数族,终止进程则使用exit()和_exit()函数。当进程执行到exit()或_exit()函数时,进程会无条件的停止剩下的所有操作,清除各种数据结构,并终止本进程的运行。但是,这两个函数还是有区别的,其调用过程如图1所示:            从图1可以看出,_exi...
阅读(436) 评论(0)

Linux多任务编程(三)---exec函数族及其基础实验

exec函数族 函数族说明   fork() 函数用于创建一个新的子进程,该子进程几乎复制了父进程的全部内容,但是,这个新创建的子进程如何执行呢?exec 函数族就提供了一个在进程中启动另一个程序执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新的进程替换了。另外,这里的可执...
阅读(463) 评论(0)

Linux多任务编程(二)---fork()函数及其基础实验

fork()函数      在 Linux 中创建一个新进程的唯一方法是使用fork()函数。fork()函数是 Linux 系统中一个非常重要的函数,和咱们以前遇到过的函数由一些区别,因为它看起来执行一次却返回两个值,这又作何解释?不着急,慢慢看。 函数说明    fork()函数用于从已存在的一个进程中创建一个新的进程,新进程称为子进程,而原进程称为父进程。使用fork()函...
阅读(453) 评论(0)

Linux多任务编程(一)---任务、进程、线程

Linux下多任务介绍   首先,先简单的介绍一下什么叫多任务系统?任务、进程、线程分别是什么?它们之间的区别是什么?,从而可以宏观的了解一下这三者,然后再针对每一个仔细的讲解。    什么叫多任务系统?多任务系统指可以同一时间内运行多个应用程序,每个应用程序被称作一个任务。    任务定义:任务是一个逻辑概念,指由一个软件完成的任务,或者是一系列共同达到某一目的的操作。...
阅读(455) 评论(0)

Linux多任务编程(七)---Linux守护进程及其基础实验

守护进程概述    守护进程,又叫daemon进程(不知怎的,我突然想起来吸血鬼日记中的达蒙了,很好看的美剧),是Linux中的后台服务进程。他是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或者等待处理某些发生的事件。守护进程常常在系统引导载入时启动,在系统关闭时终止。Linux有很多系统哦服务,大多数服务都是通过守护进程实现的。同时,守护进程还能完成许多系统任务,例如,...
阅读(428) 评论(0)

内 存 编 程

1. 内存分配方式 1.1 内存分配的几种方式 (1)  从静态存储区域分配。 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 (2)  在栈上创建。 在执行函数时,函数的参数值,内局部变量的存储单元都可以在栈上创建。函数执行结束时...
阅读(601) 评论(0)
176条 共9页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:141046次
    • 积分:2024
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:175篇
    • 译文:0篇
    • 评论:8条
    文章分类
    最新评论