
网络编程
文章平均质量分 82
cdai
这个作者很懒,什么都没留下…
展开
-
Java Socket编程(一)TCP/IP简介
以下是对《Java TCP/IP Socket编程》中重要知识的摘录。一、TCP/IP简介TCP/IP协议族是互联网使用的协议,也可以用在独立的专用网络中。TCP/IP协议族包括了IP协议、TCP协议和UDP协议。IP协议使用IP地址来分发报文,但它是尽力而为的服务,报文可能丢失、乱序或者重复发送。TCP和UDP协议在IP协议基础上增加了端口号,从而在两原创 2012-08-04 21:44:21 · 2652 阅读 · 0 评论 -
用Netty开发中间件:网络编程基础
跟Netty 4学网络编程《Netty权威指南》在网上的评价不是很高,尤其是第一版,第二版能稍好些?入手后快速翻看了大半本,不免还是想对《Netty权威指南(第二版)》吐槽一下:前半本的代码排版太糟糕了,简直就是直接打印Word的版式似的。源码解析部分的条理性和代码排版好多了,感觉比其他部分的质量高多了。如果你是初学者可能会感觉很详细,几乎每部分都会来一套客户端和服务端的Demo,如果你不是入门原创 2015-08-23 22:24:48 · 7608 阅读 · 4 评论 -
用Netty开发中间件:高并发性能优化
用Netty开发中间件:高并发性能优化最近在写一个后台中间件的原型,主要是做消息的分发和透传。因为要用Java实现,所以网络通信框架的第一选择当然就是Netty了,使用的是Netty 4版本。Netty果然效率很高,不用做太多努力就能达到一个比较高的tps。但使用过程中也碰到了一些问题,个人觉得都是比较经典而在网上又不太容易查找到相关资料的问题,所以在此总结一下。1.Context Switch过高原创 2015-10-08 20:52:23 · 71460 阅读 · 28 评论 -
Netty 4源码解析:服务端启动
Netty 4源码解析:服务端启动1.基础知识1.1 Netty 4示例因为Netty 5还处于测试版,所以选择了目前比较稳定的Netty 4作为学习对象。而且5.0的变化也不像4.0这么大,好多网上的例子都已经过时了。 <dependency> <groupId>io.netty</groupId> <artifactId>netty-原创 2015-08-22 11:29:12 · 12463 阅读 · 1 评论 -
Netty 4源码解析:请求处理
Netty 4源码解析:请求处理通��之前《Netty 4源码解析:服务端启动》的分析,我们知道在最前端“扛压力”的是NioEventLoop.run()方法。我们指定创建出的NioServerSocketChannel就是注册到了NioEventLoop中的Selector上。所以我们继续顺藤摸瓜,看看服务端启动完成后,Netty是如何处理每个请求的。1.MainReactor1.1 事件轮询之前我原创 2015-08-29 08:14:51 · 9213 阅读 · 3 评论 -
六星经典CSAPP-笔记(12)并发编程(上)
六星经典CSAPP-笔记(12)并发编程(上)1.并发(Concurrency)我们经常在不知不觉间就说到或使用并发,但从未深入思考并发。我们经常能“遇见”并发,因为并发不仅仅是操作系统内核的“绝招”,它也是应用开发中必不可少的技巧:访问慢I/O设备:就像当应用程序等待I/O中的数据时内核会切换运行其他进程一样,我们的应用也可以用类似的方式,将I/O请求与其他工作重叠从而挖掘并发的潜能。推迟工作原创 2015-07-18 14:19:02 · 3009 阅读 · 0 评论 -
序列化战争:主流序列化框架Benchmark
序列化战争:主流序列化框架BenchmarkGitHub上有这样一个关于序列化的Benchmark,被好多文章引用。但这个项目考虑到完整性,代码有些复杂。为了个人学习,自己实现了个简单的Benchmark测试类,也算是总结一下当今主流序列化框架的用法。1.序列化的战争按照序列化后的数据格式,主流的序列化框架主要可以分为四大类:JSON、二进制、XML、RPC。从更高层次来说,JSON和XML都可以算原创 2015-07-03 21:26:41 · 6439 阅读 · 0 评论 -
用Netty解析Redis网络协议
用Netty解析Redis网络协议根据Redis官方文档的介绍,学习了一下Redis网络通信协议。然后偶然在GitHub上发现了个用Netty实现的Redis服务器,很有趣,于是就动手实现了一下!1.RESP协议Redis的客户端与服务端采用一种叫做 RESP(REdis Serialization Protocol)的网络通信协议交换数据。RESP的设计权衡了实现简单、解析快速、人类可读这三个因素原创 2015-06-19 21:45:40 · 11721 阅读 · 5 评论 -
六星经典CSAPP-笔记(11)网络编程
六星经典CSAPP-笔记(11)网络编程参照《深入理解计算机系统》简单学习了下Unix/Linux的网络编程基础知识,进一步深入学习Linux网络编程和TCP/IP协议还得参考Stevens的书。1.网络基础(略过,待补充)2.IP地址2.1 IP地址的表示IP地址是一个无符号的32位整数。Linux网络程序使用下面这种IP地址结构存储IP地址:/* Internet address structu原创 2015-05-15 21:48:54 · 4243 阅读 · 0 评论 -
Java Socket编程(五)NIO
一、服务器端的处理模式1.迭代服务器服务器只有处理完了当前用户的请求后,才会处理下一请求,因此是迭代式的,在同一线程内处理。ServerSocket serverSocket = new ServerSocket(port);while(true) { Socket clientSocket = serverSocket.accept();原创 2012-08-06 21:13:22 · 3345 阅读 · 0 评论 -
Java Socket编程(四)Socket进阶
一、多播与广播我们可以向每个接受者单播一个数据副本,但这样做效率可能非常低。只有UDP套接字允许广播和多播,两者的区别是:广播会发送到网络上所有可达的主机,有些操作系统可能不允许普通用户进行广播操作;而多播只发送给感兴趣的主机。具体来说是调用MulticastSocket的joinGroup()加入到多播组的主机。public class MulticastRe原创 2012-08-06 21:10:02 · 3063 阅读 · 0 评论 -
Java Socket编程(三)发送和接收深入
在Java中,我们可以有很多种方法来发送和接收数据。有的方法比较靠近底层,有些问题就需要程序员自己去解决,而有些方法抽象层次比较高,很方便地就可以拿来使用。这些处理数据的方法根据抽象层次由低到高分别有:1.手动编码:使用位运算逐个自己编码和解析。2.利用流来自动编码:组合使用OutputStream和ByteArrayOutputStream。3.序原创 2012-08-05 19:40:11 · 3199 阅读 · 0 评论 -
Java Socket编程(二)Socket基础
二、Socket基础1.地址的获得 public static void main(String[] args) { try { Enumeration interfaces = NetworkInterface.getNetworkInterfaces(); while (interfaces.hasMoreElements()) { NetworkIn原创 2012-08-04 21:51:00 · 3193 阅读 · 0 评论 -
Java程序员的现代RPC指南
Java程序员的现代RPC指南1.前言1.1 RPC框架简介最早接触RPC还是初学Java时,直接用Socket API传东西好麻烦。于是发现了JDK直接支持的RMI,然后就用得不亦乐乎,各种大作业里凡是涉及到分布式通信的都用RMI,真是方便。后来用上了Spring,发现Spring提供了好多Exporter,可以无侵入地将一个POJO暴露为RPC服务。接触了这么多RPC框架后,发现当时公司内部自己原创 2015-12-05 11:37:55 · 5768 阅读 · 0 评论