Java NIO(New IO)是非阻塞的IO,所以NIO也被当成是non-blocking IO的简称,在jdk1.4以后的版本中提供支持。标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。
Continue reading
Monthly Archives: June 2017
JAVA网络编程之基于线程池的多线程服务器端的简单实现
线程池(Thread Pool)对于限制应用程序中同一时刻运行的线程数很有用。因为每启动一个新线程都会有相应的性能开销,每个线程都需要给栈分配一些内存等等。
Continue reading
JAVA网络编程之基于TCP的多线程服务器端的简单实现
在传统的单线程服务器工作模式下,一个线程的阻塞会引起整个服务器被阻塞,最终导致服务器效率的下降,响应时间变长,影响用户体验。为了解决这个问题,我们引进多线程服务器模式。
Continue reading
JAVA网络编程之基于TCP的服务器端和客户端的简单实现
传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。
Continue reading
JAVA网络编程之基于UDP的服务器端和客户端的简单实现
用户数据包协议(英语:User Datagram Protocol,缩写为UDP),又称用户数据报文协议,是一个简单的面向数据报的传输层协议,正式规范为RFC 768。
Continue reading
JAVA编程的单例模式(Singleton Pattern)遇到多线程
单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。
Continue reading
基于java.util.concurrent.Executor框架的JAVA线程池的实现
在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁。如何利用已有对象来服务就是一个需要解决的关键问题,其实这就是一些”池化资源”技术产生的原因。
Continue reading
编程实现C语言strlen()函数的功能,并分析算法优劣
C语言strlen()函数返回的是字符串的长度,不包括’\0’。其实编程思路很简单,很自然想到如下写法:
Continue reading
在CentOS系统中使用sha256sum来校验下载的文件的方法
哈希值用作表示大量数据的固定大小的唯一值。两组数据的哈希值仅在相应数据也匹配时才应当匹配。数据的少量更改会在哈希值中产生不可预知的大量更改。SHA256 算法的哈希值大小为 256 位。
Continue reading