- 博客(159)
- 资源 (28)
- 收藏
- 关注
原创 Netty (四) 分隔符和定长解码器的使用
TCP以流的形式进行数据传输,上层的应用协议为了对消息进行划分,往往采用如下的4种方式。(1)消息长度固定,累计读到长度总和为定长len的报文后,就认为读取到了一个完整的消息;然后重新开始读取下一个“完整”的数据包;(2)将回车换行符作为消息结束符,如ftp协议;(3)将特殊的分隔符作为消息的结束标识,回车换行符j是一种特殊的分隔符;(4)通过在消息头中定义的长度字段表示消息的总长
2016-09-30 16:24:26 6392 4
原创 Netty (三) TCP粘包和拆包解决方案
tcp是一个“流”的协议,一个完整的包可能会被TCP拆分成多个包进行发送,也可能把小的封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。粘包、拆包问题说明假设客户端分别发送数据包D1和D2给服务端,由于服务端一次性读取到的字节数是不确定的,所以可能存在以下4种情况。1.服务端分2次读取到了两个独立的包,分别是D1,D2,没有粘包和拆包;2.服务端一次性接收了两个包,D1和
2016-09-30 15:11:01 1416
原创 Netty (二) 入门
在上篇《Netty(一)引题》中,分别对AIO,BIO,PIO,NIO进行了简单的阐述,并写了简单的demo。但是这里说的简单,我也只能呵呵了,特别是NIO、AIO(我全手打的,好麻烦)。在开始netty开发TimeServer之前,先回顾下NIO进行服务端开发的步骤:1.创建ServerSocketChannel,配置它为非阻塞;2.绑定监听,配置TCP参数,如backlog大小;3
2016-09-30 14:01:29 509
原创 Interllij 快速重写父类方法
在Intellij idea中快速重写父类方法鼠标左击以确定代码插入的位置,使用快捷键CTRL+O,会弹出窗口让选择某个方法,例如:双击要override的方法即可。例如双击onPause():
2016-09-30 11:55:58 6457
原创 Netty框架基于UDP实战(一):局域网扫描功能的实现
环境:compile 'io.netty:netty-all:4.1.2.Final'服务端:SearchServer.javapackage nettytest.udp;import io.netty.bootstrap.Bootstrap;import io.netty.buffer.ByteBuf;import io.netty.buffer.Unpoo
2016-09-29 20:39:35 2394 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 already in use: JVM_Bindat java.net.PlainSocketImp
2016-09-29 19:07:43 438
转载 我读过的最好的epoll讲解--转自”知乎“
作者:蓝形参,Geek 伪技术宅 首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。 不管是文件,还是套接字,还是管道,我们都可以把他们看作流。 之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数据,但是流中还没
2016-09-29 18:11:25 361
转载 Linux IO模式及 select、poll、epoll详解
同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。本文讨论的背景是Linux环境下的network IO。一 概念说明在进行解释之前,首先要说明几个概念:- 用户空间和内核空间- 进程切换- 进程的阻塞- 文件描述符- 缓存 I/O用户空间与内核空间现在操作系统都是采
2016-09-29 17:59:45 500
转载 全球同服架构设计
作者:马剑飞链接:https://www.zhihu.com/question/31103751/answer/64631116来源:知乎著作权归作者所有,转载请联系作者获得授权。刚好做过几款类似的全球唯一服的服务器,就简单谈谈,不好莫怪。首先,游戏服务器是IO密集型服务器,它的主要瓶颈在网络IO,而不是CPU,这点要记住了。所以经常服务器问题都会出现在网络IO,带宽,
2016-09-29 17:53:32 2669
转载 关于游戏服务端架构的整理
一个大型的网落游戏服务器应该包含几个模块:网络通讯,业务逻辑,数据存储,守护监控(不是必须),其中业务逻辑可能根据具体需要,又划分为好几个子模块。这里说的模块可以指一个进程,或者一个线程方式存在,本质上就是一些类的封装。 对于服务器的并发性,要么采用单进程多线程,要么采用多进程单线程的方式,说说两种方式的优缺点: 一、单进程多线程的服务器设计模式,只有一个进
2016-09-29 17:44:51 8630
转载 Netty(一) 引题
本文介绍Java BIO(同步阻塞IO),伪异步IO,NIO(非阻塞IO),AIO(异步IO)这四种IO的情况,并对不同IO模型作比较。目录1.BIO2.伪异步IO3.NIO4.AIO5.四种IO比较6.BIO\伪异步IO\NIO\AIO源码下载 1.BIO采用BIO通信模型的服务器,通常由一个独立的Acceptor线程负责监听客户端的连接,它接收到客户端连
2016-09-29 16:46:38 639
转载 最大传输单元MTU
最大传输单元维基百科,自由的百科全书本条目没有列出任何参考或来源。(2015年2月25日)维基百科所有的内容都应该可供查证。请协助添加来自可靠来源的引用以改善这篇条目。无法查证的内容可能被提出异议而移除。最大传输单元(英语:Maximum Transmission Unit,缩写MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小
2016-09-29 16:39:18 1171
转载 Windows Error 0xc0150002 解决方案
http://www.codeground.net/coding/fixing-the-0xc0150002-error/
2016-09-29 10:41:23 539
转载 如何平均得到圆内点的随机分布
问题描述 在半径为1的圆中随机选取一点问题分析 假设圆心所在位置为坐标元点(0, 0)。方法1 在x轴[-1, 1],y轴[-1, 1]的正方形内随机选取一点。 然后判断此点是否在圆内(通过计算此点到圆心的距离)。 如果在圆内,则此点即为所求;如果不在,则重新选取直到找到为止。
2016-09-28 20:45:11 6168
原创 如何用c++ 写String类
class String { public: String(const char *str=NULL); //普通构造函数 String(const String &s); //拷贝构造函数 ~String(); //析构函数 String &operator =(const String &s); //赋值函数 private:
2016-09-28 16:04:52 490
转载 IP头、TCP头、UDP头详解以及定义
一、MAC帧头定义/*数据帧定义,头14个字节,尾4个字节*/typedef struct _MAC_FRAME_HEADER{ char m_cDstMacAddress[6]; //目的mac地址 char m_cSrcMacAddress[6]; //源mac地址 short m_cType; //上一层协议类型,如0x0800代表上
2016-09-28 14:19:51 801
转载 游戏术语 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 7489
转载 Netty线程模型详解
1. 背景1.1. Java线程模型的演进1.1.1. 单线程时间回到十几年前,那时主流的CPU都还是单核(除了商用高性能的小机),CPU的核心频率是机器最重要的指标之一。在Java领域当时比较流行的是单线程编程,对于CPU密集型的应用程序而言,频繁的通过多线程进行协作和抢占时间片反而会降低性能。1.1.2. 多线程随着硬件性能的提升,CPU的核数越来越越多,很多服务器标配
2016-09-27 11:59:35 498
转载 Kafka设计和原理详解
一、Kafka简介本文综合了我之前写的kafka相关文章,可作为一个全面了解学习kafka的培训学习资料。转载请注明出处 : 本文链接1.1 背景历史当今社会各种应用系统诸如商业、社交、搜索、浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战:如何收集这些巨大的信息如何分析它如何及时做到如上两点以上几个挑战形成了一个业务需求模型,即生产者
2016-09-27 11:56:07 741 1
转载 Spring框架的设计理念与设计模式详解
Spring作为现在最优秀的框架之一,已被广泛的使用,本文将从另外一个视角试图剖析出Spring框架的作者设计Spring框架的骨骼架构的设计理念,有那几个核心组件?为什么需要这些组件?它们又是如何结合在一起构成Spring的骨骼架构?Spring的AOP特性又是如何利用这些基础的骨骼架构来工作的?Spring中又使用了那些设计模式来完成它的这种设计的?它的这种 设计理念对对我们以后的软件设计
2016-09-27 11:09:59 496
转载 正确理解线程池
一、问题描述Netty是最近非常流行的高性能异步通讯框架,相对于Java原生的NIO接口,Netty封装后的异步通讯机制要简单很多。但是小K最近发现并不是所有开发人员在使用的过程中都了解其内部实现机制,而是照着葫芦画瓢。网上简单搜索下,在客户端使用Netty建立连接池的文章也是比较少。今天小K给大家简单介绍下使用Netty建立连接池的方法。首先我们来看下Netty官方给出的客户端s
2016-09-27 11:06:42 673
转载 Netty 实现原理
Netty是JBoss出品的高效的Java NIO开发框架,关于其使用,可参考我的另一篇文章 netty使用初步。本文将主要分析Netty实现方面的东西,由于精力有限,本人并没有对其源码做了极细致的研 究。如果下面的内容有错误或不严谨的地方,也请指正和谅解。对于Netty使用者来说,Netty提供了几个典型的example,并有详尽的API doc和guide doc,本文的一些内容及图示也来自于
2016-09-27 11:03:00 607
转载 Java 中自定义枚举(Enum)项的值及int和Enum的互相转换
C++中定义枚举的时候可以直接指定枚举项的值,如:"enum {MAX_LENGTH =255};"。其实Java也可以,今天学到了这种语法。C++的int和枚举互相转换使用强制类型转换即可,但在Java中从int构造Enum需要自己实现(不过如果枚举值从0开始递增就简单了,参考第二段代码)。自定义枚举值代码如下:==============================代码的分割线====
2016-09-26 18:02:02 10168
转载 Java:String、StringBuffer和StringBuilder的区别
1 StringString:字符串常量,字符串长度不可变。Java中String是immutable(不可变)的。String类的包含如下定义:[java] view plain copy /** The value is used for character storage. */ private final char value[]; /*
2016-09-26 15:06:30 501
转载 FastJson---高性能JSON开发包
Fastjson介绍Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发。1、遵循http://json.org标准,为其官方网站收录的参考实现之一。2、功能qiang打,支持JDK的各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型。3、无依赖,不需要例外额外的jar,能够直接跑在JDK上。4、开源,使用Ap
2016-09-26 13:54:11 650
转载 Java transient关键字使用小记
哎,虽然自己最熟的是Java,但很多Java基础知识都不知道,比如transient关键字以前都没用到过,所以不知道它的作用是什么,今天做笔试题时发现有一题是关于这个的,于是花个时间整理下transient关键字的使用,涨下姿势~~~好了,废话不多说,下面开始:1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化
2016-09-26 11:13:18 430
转载 游戏服务器中的数据库异步操作技术和游戏数据的保存机制
http://www.cppblog.com/jaxe/archive/2010/08/30/125258.html在游戏服务器中,处理玩家登陆需要向数据库查询玩家的账号和密码,玩家上线和下线需要对玩家的角色数据从数据库中读取和保存。可以说,相对于游戏逻辑处理来说,数据库操作是一种相对很慢的操作,即便你通过使用多个线程多个数据库连接来提高数据库操作的处理能力,但是,在高并发高负载的服务器应
2016-09-26 10:52:08 1330
转载 svn 上传.a文件
1. 在每个用户主文件夹下有一个名为.subversion的隐藏文件夹,打开里面的config文件。可以打开终端,输出 cd ~ 进入用户主文件夹,cd .subversion , vi config2. 查找 [miscellany] 字段,即可看到下面有个 global-ignores 键名,默认为注释掉了的,这表示SVN已经将它们作为默认值了。3. 取消注释,把
2016-09-24 18:27:26 427
转载 Mac svn如何上传.a文件
首先在mac中svn的安装会去选择Cornerstone如果遇到这个问题肯定是已经安装并准备上传.a 文件了。首先要清楚svn是默认过滤忽略.a文件的上传的,要想可以上传.a 可以通过这个简单的方法做:打开终端,在终端直接输入:open ~/.subversion/config然后会出现好多行 # 开头的句子直接command + F 快速搜索输入 auto-props 找到 [auto-prop
2016-09-24 18:24:25 1326
转载 redis 设置分布式锁
public static boolean acquireLock(String lock) { // 1. 通过SETNX试图获取一个lock boolean success = false; Jedis jedis = pool.getResource(); long value = System.currentTimeMillis() + ex
2016-09-24 17:10:22 516
转载 sentinel搭建redis集群经验总结
一、protected-mode默认情况下,redis node和sentinel的protected-mode都是yes,在搭建集群时,若想从远程连接redis集群,需要将redis node和sentinel的protected-mode修改为no,若只修改redis node,从远程连接sentinel后,依然是无法正常使用的,且sentinel的配置文件中没有protected-mod
2016-09-24 13:52:57 418
转载 MongoDB整合Spring详细讲解
写这篇文章也做了下思考,首先是本人技术欠佳。但就是喜欢研究一些东西。因为在此之前有很多的朋友已经写过类似的,很多我也看过,但是讲解的不够深入。对有些朋友提出的问题不能给出答案。在这里,我根据我目前的能力对其进行整理。并最终运行成功。在测试过程中出现过一下问题:1、org/springframework/data/mapping/context/MappingContextAware
2016-09-24 10:54:04 499
转载 如何让压力测试产生平稳的机器人曲线——压测后台的一次优化历程
http://mp.weixin.qq.com/s?__biz=MzA3NjA3NTI5Mg==&mid=2656329178&idx=1&sn=1801ccb09b1dd8d3661b0eff56d5d883&scene=21#wechat_redirecthttp://blog.csdn.net/wetest_tencent/article/details/52474565
2016-09-22 13:37:06 978
转载 tcp/udp高并发和高吞吐性能测试工具
smark基于mono elasticsearch的内容搜索平台|我的githubtcp/udp高并发和高吐吞性能测试工具 在编写一个网络服务的时候都比较关心这个服务能达到多少并发连接,而在这连接的基础上又能达到一个怎样的交互能力.编写服务已经是一件很花力气的事情,而还要去编写一个能够体现结果的测试工具就更加消耗工作时间.下面介绍一个测试工具只需要简单地设置一下就
2016-09-22 11:22:13 5428
原创 MySQL和Redis 数据同步解决方案整理
现在在中集E栈工作,最近在做一个Redis箱格信息数据同步到数据库Mysql的功能。自己想了想,也有大概方案。1.队列同步,变跟数据2份,使用消息队列,一份给Redis消费,一份给Mysql消费。2.后台定时任务,定时刷新Redis中箱格信息到数据库。网上也到处找了下解决方案,发现这么个问题,居然是天下一大抄,还抄的一字不差,我也抄吧。### 方案一:读: 读redis->
2016-09-21 19:19:32 26363 4
转载 MySQL的binlog日志
MySQL的binlog日志 binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。 一般来说开启二进制日志大概会有1%的性能损耗(参见MySQL官方中文手册 5.1.24版)。二进制有两个最重要
2016-09-21 19:10:28 472
原创 cocos2d-x spine3.0导出2.0
http://download.csdn.net/download/cn_chris/9502259
2016-09-21 09:48:09 725 1
转载 Socket和WebSocket
Socket 与 WebSocket本站文章除注明转载外,均为本站原创或者翻译。本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商;本站部分原创和翻译文章提供markdown格式源码,欢迎使用文章源码进行转载;本博客采用 WPCMD 维护;本文标题:Socket 与 WebSocket本文链接:http://zengrong.net/pos
2016-09-20 17:09:21 661
转载 redis,memcache,mongodb对比
来自:http://caiguangguang.blog.51cto.com/1652935/1331133这段时间对memcache,redis,mongodb 3种nosql进行了熟悉,简单的总结了下。1.从3者的性能来看,memcache性能是最好的,redis次之(redis有单进程限制,会碰到cpu 100%的限制,这个也比较难比较,一个多进程,一个单进程)2.从ha
2016-09-20 16:28:16 365
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人