Netty (四) 分隔符和定长解码器的使用

TCP以流的形式进行数据传输,上层的应用协议为了对消息进行划分,往往采用如下的4种方式。 (1)消息长度固定,累计读到长度总和为定长len的报文后,就认为读取到了一个完整的消息;然后重新开始读取下一个“完整”的数据包; (2)将回车换行符作为消息结束符,如ftp协议; (3)将特殊的分隔符作...

2016-09-30 16:24:26

阅读数 5364

评论数 4

Netty (三) TCP粘包和拆包解决方案

tcp是一个“流”的协议,一个完整的包可能会被TCP拆分成多个包进行发送,也可能把小的封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。 粘包、拆包问题说明 假设客户端分别发送数据包D1和D2给服务端,由于服务端一次性读取到的字节数是不确定的,所以可能存在以下4种情况。 1.服务端分2...

2016-09-30 15:11:01

阅读数 1127

评论数 0

Netty (二) 入门

在上篇《Netty(一)引题》中,分别对AIO,BIO,PIO,NIO进行了简单的阐述,并写了简单的demo。但是这里说的简单,我也只能呵呵了,特别是NIO、AIO(我全手打的,好麻烦)。 在开始netty开发TimeServer之前,先回顾下NIO进行服务端开发的步骤: 1.创建ServerS...

2016-09-30 14:01:29

阅读数 348

评论数 0

Interllij 快速重写父类方法

在Intellij idea中快速重写父类方法 鼠标左击以确定代码插入的位置,使用快捷键CTRL+O,会弹出窗口让选择某个方法,例如: 双击要override的方法即可。例如双击onPause():

2016-09-30 11:55:58

阅读数 3210

评论数 0

Netty框架基于UDP实战(一):局域网扫描功能的实现

环境: compile 'io.netty:netty-all:4.1.2.Final' 服务端:SearchServer.java package nettytest.udp; import io.netty.bootstrap.Bootstrap; import io...

2016-09-29 20:39:35

阅读数 1735

评论数 1

Address already in use: JVM_Bind(端口冲突)

1.错误描述 2011-7-20 11:05:18 org.apache.catalina.core.StandardServer await 严重: StandardServer.await: create[8005]:  Java.net.BindException: Address a...

2016-09-29 19:07:43

阅读数 286

评论数 0

我读过的最好的epoll讲解--转自”知乎“

作者:蓝形参,Geek 伪技术宅     首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。     不管是文件,还是套接字,还是管道,我们都可以把他们看作流。     之后我们来讨论I/O的操作,通过read,我们可以从流...

2016-09-29 18:11:25

阅读数 227

评论数 0

Linux IO模式及 select、poll、epoll详解

同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。 本文讨论的背景是Linux环境下的network IO。 一 概念说明 在进行解释之前,首先要说明几个概念: - 用户空间和内核空间 - 进程切...

2016-09-29 17:59:45

阅读数 350

评论数 0

全球同服架构设计

作者:马剑飞 链接:https://www.zhihu.com/question/31103751/answer/64631116 来源:知乎 著作权归作者所有,转载请联系作者获得授权。 刚好做过几款类似的全球唯一服的服务器,就简单谈谈,不好莫怪。 首先,游戏服务器是IO密集型服务器,它的主要...

2016-09-29 17:53:32

阅读数 2093

评论数 0

关于游戏服务端架构的整理

一个大型的网落游戏服务器应该包含几个模块:网络通讯,业务逻辑,数据存储,守护监控(不是必须),其中业务逻辑可能根据具体需要,又划分为好几个子模块。 这里说的模块可以指一个进程,或者一个线程方式存在,本质上就是一些类的封装。   对于服务器的并发性,要么采用单进程多线程,要么采用多...

2016-09-29 17:44:51

阅读数 7763

评论数 1

Netty(一) 引题

本文介绍Java BIO(同步阻塞IO),伪异步IO,NIO(非阻塞IO),AIO(异步IO)这四种IO的情况,并对不同IO模型作比较。 目录 1.BIO 2.伪异步IO 3.NIO 4.AIO 5.四种IO比较 6.BIO\伪异步IO\NIO\AIO源码下载   1.BIO ...

2016-09-29 16:46:38

阅读数 413

评论数 0

最大传输单元MTU

最大传输单元 维基百科,自由的百科全书 本条目没有列出任何参考或来源。(2015年2月25日) 维基百科所有的内容都应该可供查证。请协助添加来自可靠来源的引用以改善这篇条目。无法查证的内容可能被提出异议而移除。 最大传输单元(英语:Maximum...

2016-09-29 16:39:18

阅读数 687

评论数 0

UML建模

一.建模概述   建模的重要性: 建模是开发优秀软件的所有活动中的核心部分,其目的是把所要设计的结构和系统的行为沟通起来.并对系统的体系结构进行可视化和控制。建模是为了更好地理解正在构造的系统,并经常提供简化和复用的机会,同时建模还可以管理风险。   不成功的软件项目失败败原因各不相同,...

2016-09-29 11:39:53

阅读数 731

评论数 0

Windows Error 0xc0150002 解决方案

http://www.codeground.net/coding/fixing-the-0xc0150002-error/

2016-09-29 10:41:23

阅读数 302

评论数 0

如何平均得到圆内点的随机分布

问题描述     在半径为1的圆中随机选取一点 问题分析     假设圆心所在位置为坐标元点(0, 0)。 方法1     在x轴[-1, 1],y轴[-1, 1]的正方形内随机选取一点。     然后判断此点是否在圆内(通过计算此点到圆心的距离)。     如果在圆内,则...

2016-09-28 20:45:11

阅读数 4545

评论数 0

如何用c++ 写String类

class String { public: String(const char *str=NULL); //普通构造函数 String(const String &s); //拷贝构造函数 ~String(); //析构函数 String ...

2016-09-28 16:04:52

阅读数 286

评论数 0

2016 年最受欢迎的编程语言是什么?

这两天 GitHub 对其官网进行了改版,紧接着又发布了一年一度的开源报告,我们程序员比较关心之后的趋势是什么,而 GitHub 毫无疑问代表了全世界编程领域的趋势,我们不妨先来解读下这份报告,然后再解答下你们关注的标题的答案。 事先声明,本篇文章的一些数据完全来自这份报告,地址在这里: ht...

2016-09-28 14:50:06

阅读数 380

评论数 0

IP头、TCP头、UDP头详解以及定义

一、MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/ typedef struct _MAC_FRAME_HEADER {  char m_cDstMacAddress[6];    //目的mac地址  char m_cSrcMacAddress[6];    //源mac...

2016-09-28 14:19:51

阅读数 569

评论数 0

游戏术语 DAU APA ACU PCU

每日活跃用户(DAU)Active Dialy Users 活跃付费账户(APA) Active Paid Account 平均同时在线人数(ACU)Average concurrent users 最高同时在线人数(PCU) Peak concurrent users

2016-09-28 14:15:41

阅读数 4016

评论数 0

Netty线程模型详解

1. 背景 1.1. Java线程模型的演进 1.1.1. 单线程 时间回到十几年前,那时主流的CPU都还是单核(除了商用高性能的小机),CPU的核心频率是机器最重要的指标之一。 在Java领域当时比较流行的是单线程编程,对于CPU密集型的应用程序而言,频繁的通过多线程进行协作和抢占时间片...

2016-09-27 11:59:35

阅读数 351

评论数 0

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