作为一个程序员,除了让你的程序实现业务逻辑尽量不出BUG外,你的职责是让的程序尽量跑的够快。也许有人会发问,现在CPU每秒处理速率至少是上亿次以上,还有必要考虑这种问题吗?很不幸的告诉你,很有必要。现在的程序日益复杂已经不是简单的做几次加减法运算就可以搞定所有的业务逻辑(乘法和除法是通过位移操作来实现的),你的系统有无数复杂的状态和记录需要寄存到某个地方,不管是程序的运行期还是程序结束之后的序列化存储都需要。
下面我们来看一下这些状态或者数据可以存储的地方:
cpu的L1,L2,L3 cache(速度快,缺点是需要带电存储)
内存(速度快,缺点是需要带电存储)
磁盘(可以存储大容量数据,缺点是速度与前面几种存储相差好几个数量级)
通过网络连接的外部存储系统(oracle,mysql,memcached等)
他们的访问速度: L1 > L2 > memory > disk or network
对于很多系统而言,大多数时候它的业务逻辑实现是对数据的提取并且进行少量cpu计算最后展示结果。这个特点在互联网的应用上特别明显。
由于这个特点,大多数的系统其实cpu的利用率是非常低的,系统处理的大多数时间都花在了io等待的过程中,造成CPU空转,严重浪费CPU资源。
本系列文章旨在分析现在计算机系统运行的特点和实现原理,一步步阐述如何尽量的利用CPU资源,让你的程序高效运行。所有文章的完成可能需要一段时间,中间的实现主要会以C和JAVA程序为例,本人能力有限,希望大家多多批评指正。
下面是一个粗略的大纲:
1.操作系统与IO设备
2.LINUX系统常见IO模型
3.基于阻塞的IO系统实现与测试
4.基于非阻塞的IO系统实现与测试
5.基于信号通知的IO系统实现与测试
6.基于异步调用的IO系统实现与测试
7.基于不同IO模型的TCP/IP服务器实现与测试
8.JAVA IO的实现分析与测试
9.JAVA NIO的实现分析与测试
10.常见服务器程序主程序IO部分分析与测试
...
分享到:
相关推荐
《深入浅出Java语言程序设计》是一本专为Java初学者和进阶者精心编写的教程,旨在帮助读者全面理解并掌握Java编程的核心概念和技术。本书涵盖了从基础语法到高级特性的广泛内容,旨在使读者能够熟练运用Java进行软件...
《深入浅出Java语言程序设计》这本书旨在帮助初学者和有一定经验的程序员深入理解Java语言的核心概念和技术,从而能够熟练地进行Java程序开发。 本书首先会从Java的基础知识入手,包括Java的安装与配置环境,解释...
本教程“深入浅出MFC实例程序”旨在通过一系列实际案例,帮助你深入理解和掌握MFC的核心概念与应用。 1. MFC基本架构 MFC的架构基于事件驱动模型,主要由框架类、文档/视图结构、控件类和应用程序类等组成。框架类...
《深入浅出Java2面向对象程序设计》是一本旨在帮助读者深入理解Java编程语言和面向对象编程概念的书籍。随书附带的光盘包含了源代码、习题解答以及实验工具,为学习者提供了丰富的实践资源,使得理论与实践相结合,...
《深入浅出C#》是一本专为C#初学者设计的编程教程,它以其深入浅出的讲解方式,帮助读者快速掌握C#这门强大的编程语言。C#是由微软公司开发的一种面向对象的编程语言,广泛应用于Windows平台、Web应用、游戏开发等多...
在深入探讨Win32多线程程序设计之前,我们首先要理解什么是多线程以及它的重要性。多线程是指在一个应用程序中同时执行多个独立的执行线程,这些线程可以并行处理不同的任务,提高程序的运行效率和响应速度。在...
《深入浅出Java语言程序设计》是一本专为学习和理解Java编程语言而设计的教材。这本书涵盖了从基础到高级的Java编程概念,旨在帮助读者深入理解Java的各个方面,从而能够熟练地进行软件开发。 首先,Java语言是面向...
《深入浅出Java语言程序设计》是一本专为学习和理解Java编程语言而编写的教材。这本书的内容丰富,涵盖了从基础语法到高级特性的全面解析,旨在帮助读者深入理解Java编程的核心概念和技术。 首先,Java作为一门面向...
《深入浅出NIO》 在Java编程领域,NIO(New Input/Output)是一种用于替代标准IO模型的机制,其核心在于非阻塞的I/O操作和通道(Channel)及缓冲区(Buffer)的使用。传统的IO模型,如描述中的“阻塞I/O”,在读写...
《深入浅出Linux设备驱动编程》是一本专为IT专业人士准备的深度技术指南,它涵盖了Linux设备驱动开发的多个核心领域。这本书旨在帮助读者理解如何有效地编写和优化Linux系统下的设备驱动程序,以实现硬件与操作系统...
### STM32深入浅出(新手必看) #### 一、为什么选择STM32 STM32是一款基于ARM Cortex-M3内核的微控制器,它以其高性能、丰富的外设资源和高性价比在市场上广受欢迎。本章节主要探讨选择STM32作为开发平台的原因。...
《深入浅出C#》是一本面向初学者和进阶者的C#编程教材,由知名技术专家撰写并翻译。本书旨在帮助读者全面理解和掌握C#语言的核心概念、语法特性和高级特性,通过深入浅出的方式讲解,使得学习过程更为轻松易懂。 ...
"深入浅出AVR单片机工程模版"是一个专为初学者设计的教学资源,它提供了标准的工程配置,帮助新手快速理解和上手AVR开发。 首先,我们需要了解AVR单片机的基本结构和工作原理。AVR采用哈佛架构,拥有独立的数据和...
"深入浅出Google Android开发"这个主题涵盖了多个关键知识点,旨在帮助开发者从初级到高级全面理解Android开发流程。 首先,我们要了解Android系统的基本架构。Android是由Linux内核为基础的开源操作系统,它包括...
《Java2深入浅出》是一本旨在帮助读者全面掌握Java编程技术的教材,结合源码进行讲解,适合从初学者到有一定经验的开发者阅读。这本书分为入门、进阶和应用实例三个部分,由人民邮电出版社出版,为学习Java语言提供...