自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

huaye2007的专栏

将java运用到实际当中 用编程解决实际问题

  • 博客(141)
  • 资源 (11)
  • 收藏
  • 关注

原创 游戏服务器广播消息的优化

游戏服务器里经常有大量的消息需要广播 特别是同屏战斗的时候 释放技能 伤害输出 位置移动 hp变化。想起了之前做第一款游戏的优化,那时候还不知道做地图分线 ,这样可以显著降低同屏用户数,但是缺点也很大,玩家感觉不够热闹。只能硬着头皮做着千人同屏的优化,没想到那时候就是人生的巅峰,因为那个时候确实导量很厉害,很容易几千人在线,现在基本只有爆款游戏才能遇到这种情况了。一开始测试的时候,发现...

2019-09-03 01:31:06 1029

原创 Netty 同一个端口支持Tcp和 websocket

在Netty 实战群里讨论了下能否一个端口支持tcp和websocket . 既然websocket是从http升级到websocket的 Netty能判断http的话 理论上能判断出是http的话,那就应该可以的。服务器监听端口,在最开始添加一个decode 这里判断是tcp还是http 来选择添加对应的编解码器。既然理论上行的通 ,那现在就开始验证下吧。服务器端添加一个SelectDeco...

2018-09-29 11:44:30 6463 8

原创 window bat 版本发布

1:用maven 构建项目jar和copy lib包 2:用bat copy部分其他资源文件<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> ...

2018-06-06 10:01:15 668

原创 idea Gradle 编译可执行jar

之前项目都是ant编译的 感觉ant比较老而且难懂 就选择gradle来学习下。先参考网上资料 安装好gradle的环境 。idea 可以直接选择创建一个简单的gradle项目 自动生成 build.gradle 文件。 上面是项目的一个简单的结构,目标是把引用的jar打包到lib文件夹里 。生成可执行的jarapply plugin: 'java'apply plugin: '...

2018-05-23 20:34:40 2705

原创 Netty 添加 websocket 支持

首先还是在Netty官网找到demo的链接,Netty官网websocket demo 然后就是开始copy 对应的类 拿来测试了。然后就开始分析添加对应的handler了。WebSocketServerInitializer 里配置了@Override public void initChannel(SocketChannel ch) throws Exception {...

2018-05-17 15:08:58 866

原创 Netty nio 数据流入流出分析

要分析流程最直接就是通过源码断点调试分析了,我这里就直接在handler里的channelRead0里抛出异常,查看下执行的堆栈。java.lang.Exception: xxxxxxxxxxxxxxxxxxxxxxxx at com.test.MsgHandler.channelRead0(MsgHandler.java:26) at com.test.MsgHandler.cha

2017-09-29 11:37:09 346

原创 游戏服务器压力测试

游戏项目上线之前,一般需要对项目做个压力测试,从中可以评估项目的性能瓶颈,做出针对性的优化,这样就需要设计一个压力测试工具了。这里主要针对RPG游戏单线程还是多线程。游戏业务逻辑还是要单线程,这样上层业务逻辑不用考虑并发问题,降低编码复杂 度。如果整体只用一个线程支撑2000机器人跑压力测试,如果没有寻路,没有其他一些耗时的操作,还是可 以支撑的。如果整体只用一个线程跑多个机器人,那么可以

2017-09-06 11:52:05 11053 1

原创 java 问题分析工具

一款在线分析代码BUG的利器 https://github.com/oldmanpushcart/greys-anatomy 性能分析 使用jprofile 内存泄漏可以使用mat 线上调用脚本代码使用beanshell 热修复方法级别代码 instrument

2017-07-12 20:06:02 356

原创 游戏上线了,聊聊遇到的坑

游戏上线前,就先要做下压力测试。所以需要写一套自己的客户端程序模拟真实玩家的操作。一般由于项目时间的限制 基本上都只会模拟主要的功能,比如做任务,按照主线任务一直做下去即可。由于做的游戏基本都是RPG,所以模拟玩家一直做主线任务即可。玩家走路的速度 释放技能的间隔 做任务的速度 尽量模拟真实的玩家,这样就能真实模拟出玩家对服务器的压力,这样的测试才最有意义和针对的方案优化。RPG游戏核心的AOI没有

2017-06-16 01:35:23 525

原创 java游戏服务器之网络层Netty 之ChannelPipeline

ChannelPipeline具体的功能在代码里有具体的详细说明 * <h3>Creation of a pipeline</h3> * * Each channel has its own pipeline and it is created automatically when a new channel is created. * * <h3>How an event flows i

2017-05-26 00:37:40 587

原创 java游戏服务器之数据层

先说下缓存数据层,通常在游戏服务器中经常会使用到数据缓存。如果是进程内的缓存,直接点就是HashMap ,List,一般会选择guava,Ehcache这些缓存框架。因为有很多数据都只需要暂时性缓存,不然会浪费太多的内存,而且容易造成内存泄漏选择guava的应该会多些 毕竟很多功能可以方便操作缓存,具体可以看下这个链接学习下google cache。进程外的缓存一般使用redis了,还可以利用

2017-05-14 21:01:35 918

原创 java游戏服务器之网络层Netty 之EventLoop

java游戏服务器网络层越来越流行netty,毕竟版本更新快,支持新的特性,更多的功能支持。相比下来mina慢了好多。现在就开始分析下对应的代码吧。估计这段时间要花的时间有点长

2017-04-27 00:17:09 2337

原创 Java游戏服务器代码热更新

一般碰到这个问题首先想到的解决方案都是考虑new 一个classLoader来加载新的类,这样的解决方式有什么优点和缺点呢。使用ClassLoader的方式加载类就涉及到一些需要知道的知识点。双亲委托模型确保了一个类只会被一个类加载器加载一次,所以要更新旧的类就需要new一个新的类加载器。新的类可以添加字段添加方法还有很多强大的功能。如果仅仅只是一个简单的小程序是可以考虑的,毕竟牵涉到的模块不是很

2017-04-25 09:09:34 8646

原创 JVM相关知识

根据<<深入理解Java虚拟机>>整理 JVM结构:运行时数据区和本地方法区 运行时数据区包括下面: 程序计数器:当前线程执行字节码的行号指示器,根据计数器执行对应的代码 Java 虚拟机栈:也是线程私有 每个方法都会创建一个栈帧,每一个方法调用完成就是在虚拟机栈从一个入栈到出栈的过程 本地方法栈:服务于本地方

2017-02-07 11:48:48 261

原创 Map类的分析

LinkedHashMap 继承HashMap 所以存储,获取数据还是hashmap 只不过使用链表标记了头和尾,所以可以从头和尾开始遍历TreeMap 是有序的,存储使用了红黑树结构,使用的时候对象需要实现Comparator接口。

2017-01-16 18:58:47 252

原创 HashTable源码分析

public synchronized V put(K key, V value) { // Make sure the value is not null if (value == null) { throw new NullPointerException(); } // Makes sure the key

2017-01-13 20:23:50 251

原创 HashSet源码分析

public HashSet(int initialCapacity, float loadFactor) { map = new HashMap<>(initialCapacity, loadFactor); } /** * Constructs a new, empty set; the backing <tt>HashMap</tt> instance

2017-01-13 20:16:48 295

原创 HashMap源码分析

1:hashcode的计算 不同数据类型 hashcode的计算方法是不一样的,归根结底是换算成一个整数便于存储和查找数据 2: public V put(K key, V value) { return putVal(hash(key), key, value, false, true); } /** * Implements Map.put and r

2017-01-13 20:04:13 326

原创 关乎心情

年纪大了,想的太多,总是会失眠。 关于爱情:还是喜欢会代码的妹子,对于结果不知道如何,但是尽心吧。 关于生活:回来都好晚了,好累。下份不想这么累了,为了钱可以考虑下, 还是要经常锻炼下,身体比较瘦。 关于事业:该有的都有了,存点钱干点事。

2016-10-26 02:25:01 310

原创 游戏服务器框架设计

好久没写东西了,慢慢开始整理点东西吧。 服务器架构网上有好多讨论了。这里只讨论一个游戏服务器设计的一些东西1. 网络层框架 一般现在都是用mina netty ,因 netty比mina提供现成的东西比较多,开发起来简单,更新比较快,越来越多的人开始用netty了。2. 逻辑层框架 一个消息从网络层传送过来,逻辑层需要做处理。这样就涉及到一个问题,逻辑并发处理问

2016-05-16 15:16:21 1358

原创 beanshell 线上修复BUG

有时服务器上线了 但是有些代码因为程序原因可能导致没有执行 需要主动调用执行下 或者为了排查线上问题 主动获取某个方法或者变量的返回值 可以使用脚本来做线上的修复处理 javascript 也是可以的 但是编写脚本 有些时候总有字段类型转换的问题 beanshell是java脚本 写起来方便很多 不过 使用这些脚本修复的一个基础是要有一个容器存放所有的对象 如果使用了spr

2016-04-16 17:04:18 719

原创 欢迎使用CSDN-markdown编辑器

也不知道选择是否正确,mark下。还是需要认真做下笔记,感觉要变懒了。

2016-04-15 17:47:14 319

原创 canvas 图片 文字 合成

canvas可以合成文字  图片   这样可以本地预览图片了直接加载本地的图片:先用 引用,然后获取src 赋值到Image对象src的属性值var starSelectImg = $('#starSelect').val(); $('#starImg').attr('src',starSelectImg); var starImg = new Image(); starImg

2015-12-28 18:43:09 4259 1

转载 js 一张图说明了

http://ww2.sinaimg.cn/large/663aa05agw1ewzm76rahij21k23mhqn8.jpg

2015-10-14 08:45:40 437

转载 geohash:用字符串实现附近地点搜索

http://blog.charlee.li/geohash-intro/geohash:用字符串实现附近地点搜索这个不错

2015-09-04 14:59:10 606

转载 json-jackson多子类继承的反序列化

http://wangxinchun.iteye.com/blog/2195210?utm_source=tuicool后面可能会用的上的

2015-08-25 10:09:07 5360

原创 easyui datagrid-detailview.js 子数据表显示BUG

正常情况下是正常的,如果这个数据表又添加单元格编辑功能就会出现子数据表有些时候不显示  渲染行的时候没有渲染子数据表但收缩和展开显示的数据时正常的。在onClickCell函数里if (endEditing()){ $('#dataGrid').datagrid('selectRow', index) .datagrid('editCell', {index:i

2015-03-12 11:38:30 4086

转载 Netty版本升级血泪史之线程篇

http://www.infoq.com/cn/articles/netty-version-upgrade-history-thread-part

2015-02-10 09:46:12 2090

原创 java 资源

http://www.importnew.com/14429.html

2015-01-08 13:14:36 553

原创 java 百度 登录

1:模拟浏览器登录百度前,先把浏览器的所有cookie都清除掉,这样看得比较清楚。2:使用chrome或者火狐浏览器都可以 .打开控制台 ,下面以chrome浏览器来介绍。https://passport.baidu.com/v2/?login   点击控制台的url后面就差不多是分析每个url请求的参数的数据是在哪里来的了。最麻烦的一步就是密码的加密。需要

2014-12-04 18:34:18 4113 1

原创 unity 记事本

Vector3.magnitudeReturns the length of this vector (Read Only).The length of the vector is square root of (x*x+y*y+z*z).

2014-11-12 18:13:56 1096

原创 Servlet 3.0 proxool 配置 数据库连接池

Servlet3.0没有配置web.xml  但要添加数据库

2014-10-23 22:31:30 724

原创 openfire XMPP协议

对于发送的XMPP协议信息  可以在这里看到所有的协议详解

2014-10-11 14:36:43 635

原创 linux 命令

对带有空格的文件 加双引号

2014-05-14 11:40:39 736

原创 mysql 导入大的sql文件

在mysqld下面加入配置max_allowed_packet=500Mwait_timeout=288000interactive_timeout = 288000如果we

2014-05-11 13:16:20 568

原创 linux centos yum 安装 mysql

yum install mysql-server

2014-04-18 11:58:00 578

原创 java 程序的性能分析

有些时候会分析下程序的性能问题,仅根据个人的一些实践来说下。java web的程序的性能  一般都是针对访问多点的地方做个时间标记,模拟压测的打印log也是比较容易发现程序的一些问题的。下面主要介绍java应用程序的性能分析一些方法。1:使用jdk自带的jvisualvm   在window下的cmd直接启动就可以了。xp下因为盘文件格式的问题,可能导致无法访问,需要修改一些配置的路径

2014-03-29 22:18:50 799

原创 java btrace

对于线上项目的分析  有时需要线上的环境的时候 可以使用btrace来查找一些特殊的bughttp://blog.csdn.net/changewang/article/details/12057139先下载btrace 然后开始写btrace的脚本 根据https://kenai.com/projects/btrace/pages/UserGuide#btrace_a

2014-03-22 22:43:48 600

原创 java gc的log分析

最近没什么事,主要是看到程序GC较快  所以想看下程序有没有问题,网上的一篇文章http://book.51cto.com/art/201306/399236.htm在程序启动的时候加上  几个参数-verbose:gc -Xloggc:d:/gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps就会在控制台打印gc的log  上面的链接

2014-03-17 17:32:24 8756

原创 java 缓冲区

基本上都有4个属性1:容量(Capacity) 代表能存储多少:2:上界(Limit)缓冲区不能读或者不能写的位置3:位置(Position)这个position会随着读或者写而改变位置4:mark(Mark)调用mark()来设置mark的位置四个属性的关系如下0

2014-03-02 21:04:22 1489

Netty一个端口支持tcp和websocket

同一个端口支持tcp和websocket 这样就不需要开两个端口了

2018-09-29

canvas 合成 文字 图片

canvas 合成 文字 图片 很简单的一个入门demo

2015-12-28

TestNetty 一个小例子

netty的一个小例子。涉及到简单的编解码。

2012-11-15

socket 与 mina 交互数据

Socket与mina交互,如果熟悉了解码协议,其他的就OK了。

2012-07-30

mina 上传文件和文件名

自己在网上下到别人的一个例子,然后自己也改了很多,最终共享给大家。

2012-07-13

Apache_Mina_Server_2.0中文参考手册V1.0.pdf

对于mina初学者来说,这是一个不错的文档。若要理解mina的编码和解码,则可以多敲代码就知道了。

2012-07-11

C# QQExpressionDemo

C# QQExpressionDemo,C#写的类似QQ皮肤的源码

2012-01-03

ExtJs3.1目前所有例子源代码.rar

这是我从网上自己下下来的,之前人家是免费下载的,前段时间发现那个网站已经关闭了,特此奉上,感谢作者,感谢开源。

2011-08-31

Prototype帮助文档

里面有对Prototype的详细介绍,好好仔细研究吧!

2010-04-20

jQuery帮助文档 看看吧

这是一个很好很详细的介绍,对于jQuery

2010-04-20

XP IIS6.0安装过程所需的一些文件

我也是在最近安装IIS6.0过程中出现需要一些文件,没办法,自己找了来,大家共享下

2010-04-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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