Java
文章平均质量分 80
Henry游戏开发
热爱分享的游戏行业程序员
展开
-
【JVM】一文掌握JVM垃圾回收机制
作为Java程序员,除了业务逻辑以外,随着更深入的了解,都无法避免的会接触到JVM以及垃圾回收相关知识。JVM调优是一个听起来很可怕,实际上很简单的事。感到可怕,是因为垃圾回收相关机制都在JVM的C++层实现,我们在Java开发中看不见摸不着;而实际很简单,是因为它说到底,也只是JVM替我们实现的垃圾对象回收机制,也是普通的程序代码,只要理解了垃圾回收器的底层设计思想,掌握JVM调优并非难事!原创 2024-01-01 16:06:38 · 1388 阅读 · 0 评论 -
三分钟了解JVM的垃圾回收和三色标记
垃圾,在我们日常生活中,就是使用过后不再需要的东西。并且随着时间的推移,你产生的垃圾会越来越多。怎么清理垃圾,何时清理垃圾,就显得尤为重要,毕竟你也不希望你的家里充满了垃圾吧?而在计算机的世界里也是一样,不管我给你一块128m,256m,还是4g,8g,16g的内存,它都是一个有限的空间,就像我们的房子,70平,80平,100平就这么大。我们的程序在运行中也会产生垃圾,计算机中有无数的内存对象,每一块逻辑,每一个行为,都有可能产生新的对象,当这些对象不再使用的时候,就变成了垃圾。原创 2022-09-01 22:53:07 · 421 阅读 · 9 评论 -
如何设计一个多人游戏场景
随着游戏行业的兴起,越来越多的游戏出现。游戏中又分各种各样的游戏类型,而基本上在国内的游戏环境中,最受欢迎的还是网络游戏。不知道大家有没有好奇过,游戏中是如何实现你和你的朋友能一起出现在游戏中并一起游玩的,而这背后的机制又是怎么样的?首先看到这个标题大家不要害怕,这篇文章并不想讲无聊的技术,不会研究游戏服务器需要多少核多少内存,设计什么样的架构,能承载多少人,用什么语言,什么网络通信协议。而是想从一个产品的设计的角度,或者游戏框架的设计角度,来探讨一下如何设计一个多人的游戏场景。.........原创 2022-08-30 01:18:08 · 1187 阅读 · 0 评论 -
基于KCP的TCP/UDP多通道开源框架
大概用了一周的时间,我基于这套开源库[1]进行改造,实现了以KCP为应用层,TCP和UDP为底层通信协议的双通道网络层。这样的架构下,消息包的序列,分片,窗口大小,流量控制等,都完全交给KCP去做,而底层网络,想用什么用什么,想起几个起几个原创 2022-01-18 23:41:48 · 5671 阅读 · 0 评论 -
Java中使用KCP协议——性能测试及应用
上一篇文章简单介绍了KCP基本的机制和原理,以及github上的三种java版本。但是上次留了一个小小的坑,缺少了性能测试部分。这几天通过写测试服务器和测试客户端,简单测了一下TCP和KCP分别在内网和外网的延迟。一. Java版KCP上一篇文章介绍的github的三种java版本,对比之下,我最终选择了 这个版本 进行测试。不过当我测完之后,发现这个版本的实现有个小小的缺陷:虽然它底层也是Netty的实现版本,但是它的底层实在封装的太严实了,而对我们设计中以下两点不太友好:由于我们打算根据C原原创 2021-12-30 00:04:41 · 1029 阅读 · 3 评论 -
Java中使用KCP协议
传统游戏项目一般使用TCP协议进行通信,得益于它的稳定和可靠,不过在网络不稳定的情况下,会出现丢包严重。不过近期有不少基于UDP的应用层协议,声称对UDP的不可靠进行了改造,这意味着我们既可以享受网络层提供稳定可靠的服务,又可以享受它的速度。KCP就是这样的一个协议不过网上说的再天花乱坠,我们也得亲自调研,分析源码和它的机制,并测试它的性能,是否满足项目上线要求。本文从C版本的源码入手理解KCP的机制,再研究各种Java版本的实现一、KCP协议原版源码(C代码):https://github..原创 2021-12-21 22:44:26 · 1587 阅读 · 0 评论 -
Java与Lua相互调用
Java与Lua相互调用案例比较少,因此项目使用需要做详细的性能测试,本内容只做粗略测试。目前已完成初版Lua-Java调用框架开发,后期有时间准备把框架进行抽象,并开源出来,感兴趣的小伙伴欢迎关注下。一、方案目前最常见的方案:luaj,纯Java实现的Lua解析器,基于Lua 5.2LuaJ的原理:用Java实现了一套Lua的编译器,本质上是把Lua文件中的Lua语言动态编译成了Java字节码,因此会收到诸多限制(比如第三方库的问题),而LuaJ本质上也只是运行在JVM上的Java字节码,和运原创 2021-12-21 21:48:09 · 2486 阅读 · 3 评论 -
游戏服务器中的Netty应用以及源码浅析
最近因为工作需要,学习了一段时间Netty的源码,并做了一个简单的分享,研究还不是特别深入,继续努力。因为分享也不涉及公司业务,所以这里也把这次对源码的研究成果分享出来以下都是在游戏服务器开发中针对Netty使用需要了解知识点以及相关优化这次分享主要设计以下内容Netty线程模型Netty对TCP相关参数的配置和具体含义Netty对Epoll的封装Netty的优雅关闭Netty相关一、Reactor模式和Netty线程模型客户端连接数的限制内存资源CPU资源端口号资源cat /原创 2021-09-16 22:59:53 · 622 阅读 · 0 评论 -
我的2019
看看这个标题,没错,这又是一篇年终总结,上一次写年终总结还是2017年,而2018年直接就跳过没有写。之前的业余时间的确是很多,现在我连休息时间也变少了,所以一年都很难产出一篇,前段时间闲了一点,才很艰难的挤出了一篇关于我对Python这门语言的理解。其实没有用文字记录下来,并不代表我这两年什么都没有做,相反,我经历了太多的事情,才让我连用文字记录的时间都没有了。那么接下来,我会用一整篇的篇幅来告...原创 2019-12-25 01:14:05 · 421 阅读 · 1 评论 -
《深度解析Java游戏服务器开发》源码
不知什么原因,出售的《深度解析Java游戏服务器开发》一书中,没有给出源码,这里补上,源码已经上传至github: https://github.com/hjcenry/JavaServerBookCode 欢迎给出指导意见原创 2017-11-26 21:42:02 · 9367 阅读 · 6 评论 -
我在创业游戏公司的一年
一、写在前面的话从15年12月入职到前两天离职,我经历了一个创业游戏公司的由盛到衰的整个过程,从16年的下半年开始,每天上班就眼看着公司的状况一天不如一天。从另一方面来说,也算是映射了国内的大部分手游小团队的兴盛到衰落的一个过程。从最初移动端设备的兴起,带动的移动游戏行业的大规模爆发,大量的企业及投资进军手游行业,到如今盛极而衰,大量小团队一个一个的死去,一波又一波的泡沫破灭,手游行业这条路越来越难原创 2017-02-19 14:11:01 · 9700 阅读 · 7 评论 -
Java游戏服务器成长之路——2016随笔总结
写在开头Java游戏服务器成长之路的系列,已经很长时间没写了,不是不想写,而是这一年,基本都是在忙别的了,今天特地挤出时间,对我的2016年,做一个不留遗憾的总结。2016的事件不知不觉,又到了春节抢票的时候了,这两天除了盼着年终能发点奖金以外,就是盼着能买一张合适的火车票,今年是离家最久的一年,幸运的是,我成都的小房子要结房了,必须要我本人到场,这就能给我一个理由多请一周的假提前回去几天,很久没看原创 2017-02-09 15:01:05 · 13823 阅读 · 10 评论 -
Cocos Creator实现的《点我+1》
一、前言在学习Cocos中,需要一些东西来练手,于是前段时间就开发仿照一款公司之前的产品《点我+1》来做,仿照过程中,所有的算法逻辑都是自己研究的,并没有参考公司代码,也没有使用公司的美术资源,所以也就不存在公司机密的内容啦,完全只是学习练习而已。 这是一款消除类游戏,规则和大多数三消类游戏差不多,在一个5x5的格子中,有25个方块,每个方块有一个数字,用户的操作就是点击方块,使方块的数字+1,当原创 2016-09-05 16:13:07 · 7283 阅读 · 1 评论 -
使用Echarts进行可视化的数据线呈现
由于游戏后台需要统计游戏玩家的支付情况,恰好那天看见同学群里聊天说到了Echarts,于是我就看了眼,一看,哟,还是百度的产品,看了文档,示例,确实很屌的样子啊,于是自己就开始试了。原创 2016-01-17 12:35:12 · 2459 阅读 · 0 评论 -
我的Linux病毒追踪记录
第一次自己一个人全权负责做游戏服务器,对于Linux安全并不太懂,所以就在昨天,服务器遭到了攻击,刚开始,只是发现服务器的带宽占满了,以为是带宽不够用,可是想想,弱联网游戏对带宽占用也不高啊而且带宽加大一倍也于事无补,在UCloud控制台看到带宽的波形图,好几次都达到顶峰,于是我在服务器用iftop查看了网络流量监控,发现服务器总往一个ip发送数据包,一发就是1G,这流量,不仅耗带宽,还烧钱啊,网上原创 2016-01-17 12:38:38 · 2587 阅读 · 0 评论 -
Java游戏服务器成长之路——你好,Mongo
关于mongo的思考第一阶段的弱联网游戏已基本完成,截至今天下午,测试也基本差不多了,前端还有一些小bug需要优化,接下来会接入小米,360,百度,腾讯等平台,然后推广一波,年前公司还能赚一笔,而我,也即将准备做下一款SLG。上一次,我第一次尝试了Netty,并且也着实感受到了Nio的魅力,Netty的魅力,在做的过程中也学到了很多有用的东西,这一次,在数据持久化方面,我思考了很久,我越发的觉得,我原创 2016-01-20 00:07:50 · 2543 阅读 · 0 评论 -
Java读取CSV和XML文件方法
游戏开发中,读取策划给的配置表是必不可少的,我在之前公司,策划给的是xml表来读取,现在公司策划给的是CSV表来读取,其实大同小异,也并不是什么难点,我就简单分享下Java如何读取XML文件和CSV文件。以下工具类可随意拿去使用。Java读XML文件如果是Maven项目,则依赖以下包(如果不是,则自己在项目添加配置相应jar包) <!-- dom4j begin -->原创 2016-09-05 15:56:51 · 2347 阅读 · 0 评论 -
JSON-RPC(jsonrpc4j)使用demo
服务端开发,在很多情况下,需要使用到RPC框架,今天发现一款很轻量的RPC框架——JSON-RPC。json rpc 是一种以json为消息格式的远程调用服务,它是一套允许运行在不同操作系统、不同环境的程序实现基于Internet过程调用的规范和一系列的实现。这种远程过程调用可以使用http作为传输协议,也可以使用其它传输协议,传输的内容是json消息体。 json rpc 和xmlrpc相比具有原创 2016-09-05 15:57:57 · 15045 阅读 · 5 评论 -
微博开源框架Motan初体验
前两天,我在开源中国的微信公众号看到新浪微博的轻量Rpc框架——Motan开源了。上网查了下,才得知这个Motan来头不小,支撑着新浪微博的千亿调用,曾经在2014年的春晚中有着千亿次的调用,对抗了春晚的最高峰值。什么是Motan2013 年微博 RPC 框架 Motan 在前辈大师们(福林、fishermen、小麦、王喆等)的精心设计和辛勤工作中诞生,向各位大师们致敬,也得到了微博各个技术团队的鼎原创 2016-09-05 16:04:51 · 5862 阅读 · 0 评论 -
Java游戏服务器成长之路——感悟篇
Java服务器开发的个人感悟原创 2016-01-17 00:07:36 · 17397 阅读 · 17 评论