自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

何小成的成长记录

技术成长记录

  • 博客(31)
  • 资源 (7)
  • 收藏
  • 关注

原创 【力扣算法日记】无重复字符的最长子串

最近刷了很多算法题,这些解题过程也拓展了自己的思路,是个适合记录的素材。所以决定在继技术知识点详解的【一文系列】之后,开启新坑——【力扣算法系列】,来记录力扣刷题过程。

2024-01-06 00:26:36 925

原创 构建健康游戏环境:DFA算法在敏感词过滤的应用

现在的游戏有敏感词检测这一点,相信大家也不陌生了,不管是聊天,起名,签名还是简介,只要是能让玩家手动输入的地方,一定少不了敏感词识别,至于识别之后是拒绝修改还是星号替换,这个就各有各的做法了,但是绕不开的一定是需要高效的敏感词检测机制。

2024-01-04 18:09:49 941

原创 【JVM】一文掌握JVM垃圾回收机制

作为Java程序员,除了业务逻辑以外,随着更深入的了解,都无法避免的会接触到JVM以及垃圾回收相关知识。JVM调优是一个听起来很可怕,实际上很简单的事。感到可怕,是因为垃圾回收相关机制都在JVM的C++层实现,我们在Java开发中看不见摸不着;而实际很简单,是因为它说到底,也只是JVM替我们实现的垃圾对象回收机制,也是普通的程序代码,只要理解了垃圾回收器的底层设计思想,掌握JVM调优并非难事!

2024-01-01 16:06:38 1395

原创 【Java】一文讲解Java类加载机制

Java 类加载机制是 Java 运行时的核心组成部分,负责在程序运行过程中动态加载和连接类文件,并将其转换为可执行代码。理解类加载机制,能更容易理解你一行行敲下的Java代码是如何在JVM虚拟机上运行起来。并且理解类加载机制之后,我们也能掌握如何自定义类加载器,如何做热更新等。

2023-12-30 22:33:25 921

原创 手把手带你入门本地AI绘画(Stable Diffusion)

stable diffusion是一种基于扩散过程的图像生成模型,可以生成高质量、高分辨率的图像。它通过模拟扩散过程,将噪声图像逐渐转化为目标图像。这种模型具有较强的稳定性和可控性,可以生成多样化效果和良好视觉效果的图像。说人话,就是它能稳定生成可控图像。

2023-12-29 16:49:28 1284

原创 【Redis】一文掌握Redis原理及常见问题

Redis是基于内存数据库,操作效率高,提供丰富的数据结构(Redis底层对数据结构还做了优化),可用作数据库,缓存,消息中间件等。如今广泛用于互联网大厂,面试必考点之一,本文从数据结构,到集群,到常见问题逐步深入了解Redis,看完再也不怕面试官提问!

2023-12-26 19:51:49 930

原创 【MySQL】一文看懂MySQL所有常见问题

MySQL作为一款开源关系型数据库,如今绝对是占据关系型数据库的主导地位,不仅是面试中的常客,也是日常工作中最主要接触的数据库。因此,无论是背面试八股,还是工作使用,都是一定要深度掌握的一个知识点。今天就用一篇文章讲清楚MySQL的所有问题

2023-12-26 12:12:17 904

原创 【动画图解】一次理清九大排序算法!面试官问到再也不慌!

其算法原理是将数组分到有限数量的桶里,再对每个桶分别排好序(可以是递归使用桶排序,也可以是使用其他排序算法将每个桶分别排好序),最后一次将每个桶中排好序的数输出。快速排序的思想很简单,就是先把待排序的数组拆成左右两个区间,左边都比中间的基准数小,右边都比基准数大。插入排序是一种简单的排序方法,其基本思想是将一个记录插入到已经排好序的有序表中,使得被插入数的序列同样是有序的。我们需要把一个普通数组转换为大顶堆,调整的起始点是最后一个非叶子结点,然后从左至右,从下至上,继续调整其他非叶子结点,直到根结点为止。

2023-12-22 14:00:03 861

原创 三分钟了解JVM的垃圾回收和三色标记

垃圾,在我们日常生活中,就是使用过后不再需要的东西。并且随着时间的推移,你产生的垃圾会越来越多。怎么清理垃圾,何时清理垃圾,就显得尤为重要,毕竟你也不希望你的家里充满了垃圾吧?而在计算机的世界里也是一样,不管我给你一块128m,256m,还是4g,8g,16g的内存,它都是一个有限的空间,就像我们的房子,70平,80平,100平就这么大。我们的程序在运行中也会产生垃圾,计算机中有无数的内存对象,每一块逻辑,每一个行为,都有可能产生新的对象,当这些对象不再使用的时候,就变成了垃圾。

2022-09-01 22:53:07 434 9

原创 如何设计一个多人游戏场景

随着游戏行业的兴起,越来越多的游戏出现。游戏中又分各种各样的游戏类型,而基本上在国内的游戏环境中,最受欢迎的还是网络游戏。不知道大家有没有好奇过,游戏中是如何实现你和你的朋友能一起出现在游戏中并一起游玩的,而这背后的机制又是怎么样的?首先看到这个标题大家不要害怕,这篇文章并不想讲无聊的技术,不会研究游戏服务器需要多少核多少内存,设计什么样的架构,能承载多少人,用什么语言,什么网络通信协议。而是想从一个产品的设计的角度,或者游戏框架的设计角度,来探讨一下如何设计一个多人的游戏场景。.........

2022-08-30 01:18:08 1268

原创 基于KCP的TCP/UDP多通道开源框架

大概用了一周的时间,我基于这套开源库[1]进行改造,实现了以KCP为应用层,TCP和UDP为底层通信协议的双通道网络层。这样的架构下,消息包的序列,分片,窗口大小,流量控制等,都完全交给KCP去做,而底层网络,想用什么用什么,想起几个起几个

2022-01-18 23:41:48 5751

原创 Java中使用KCP协议——性能测试及应用

上一篇文章简单介绍了KCP基本的机制和原理,以及github上的三种java版本。但是上次留了一个小小的坑,缺少了性能测试部分。这几天通过写测试服务器和测试客户端,简单测了一下TCP和KCP分别在内网和外网的延迟。一. Java版KCP上一篇文章介绍的github的三种java版本,对比之下,我最终选择了 这个版本 进行测试。不过当我测完之后,发现这个版本的实现有个小小的缺陷:虽然它底层也是Netty的实现版本,但是它的底层实在封装的太严实了,而对我们设计中以下两点不太友好:由于我们打算根据C原

2021-12-30 00:04:41 1081 3

原创 Java中使用KCP协议

传统游戏项目一般使用TCP协议进行通信,得益于它的稳定和可靠,不过在网络不稳定的情况下,会出现丢包严重。不过近期有不少基于UDP的应用层协议,声称对UDP的不可靠进行了改造,这意味着我们既可以享受网络层提供稳定可靠的服务,又可以享受它的速度。KCP就是这样的一个协议不过网上说的再天花乱坠,我们也得亲自调研,分析源码和它的机制,并测试它的性能,是否满足项目上线要求。本文从C版本的源码入手理解KCP的机制,再研究各种Java版本的实现一、KCP协议原版源码(C代码):https://github..

2021-12-21 22:44:26 1648

原创 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 2520 3

原创 游戏服务器中的Netty应用以及源码浅析

最近因为工作需要,学习了一段时间Netty的源码,并做了一个简单的分享,研究还不是特别深入,继续努力。因为分享也不涉及公司业务,所以这里也把这次对源码的研究成果分享出来以下都是在游戏服务器开发中针对Netty使用需要了解知识点以及相关优化这次分享主要设计以下内容Netty线程模型Netty对TCP相关参数的配置和具体含义Netty对Epoll的封装Netty的优雅关闭Netty相关一、Reactor模式和Netty线程模型客户端连接数的限制内存资源CPU资源端口号资源cat /

2021-09-16 22:59:53 646

原创 我的2019

看看这个标题,没错,这又是一篇年终总结,上一次写年终总结还是2017年,而2018年直接就跳过没有写。之前的业余时间的确是很多,现在我连休息时间也变少了,所以一年都很难产出一篇,前段时间闲了一点,才很艰难的挤出了一篇关于我对Python这门语言的理解。其实没有用文字记录下来,并不代表我这两年什么都没有做,相反,我经历了太多的事情,才让我连用文字记录的时间都没有了。那么接下来,我会用一整篇的篇幅来告...

2019-12-25 01:14:05 424 1

原创 我的Python之旅

前言工作原因,近两年没写文章了,这里我分享几个我最近学习python的时候写的工具Python之旅最近两年工作上,我真的是很忙,上一次更新文章还是2018-01-08写的年终总结。这接近两年的时间,我一直在忙于公司的项目,关于996我就不在这里吐槽了,了解这个行业的都应该知道这是常事,这个要吐槽能吐槽到地老天荒,而我倒是挺怀念刚毕业参加工作前两年,每天按时上班下班,周末双休,这也能解释为什么...

2019-11-10 23:24:33 361 2

原创 《深度解析Java游戏服务器开发》源码

不知什么原因,出售的《深度解析Java游戏服务器开发》一书中,没有给出源码,这里补上,源码已经上传至github: https://github.com/hjcenry/JavaServerBookCode 欢迎给出指导意见

2017-11-26 21:42:02 9376 6

原创 我在创业游戏公司的一年

一、写在前面的话从15年12月入职到前两天离职,我经历了一个创业游戏公司的由盛到衰的整个过程,从16年的下半年开始,每天上班就眼看着公司的状况一天不如一天。从另一方面来说,也算是映射了国内的大部分手游小团队的兴盛到衰落的一个过程。从最初移动端设备的兴起,带动的移动游戏行业的大规模爆发,大量的企业及投资进军手游行业,到如今盛极而衰,大量小团队一个一个的死去,一波又一波的泡沫破灭,手游行业这条路越来越难

2017-02-19 14:11:01 9718 7

原创 Java游戏服务器成长之路——2016随笔总结

写在开头Java游戏服务器成长之路的系列,已经很长时间没写了,不是不想写,而是这一年,基本都是在忙别的了,今天特地挤出时间,对我的2016年,做一个不留遗憾的总结。2016的事件不知不觉,又到了春节抢票的时候了,这两天除了盼着年终能发点奖金以外,就是盼着能买一张合适的火车票,今年是离家最久的一年,幸运的是,我成都的小房子要结房了,必须要我本人到场,这就能给我一个理由多请一周的假提前回去几天,很久没看

2017-02-09 15:01:05 13844 10

原创 Cocos2d-JS实现的打飞机

一、前言今天我们来讲一个最最最常见的一个小游戏——打飞机!是的,打飞机!还记得小时候在玩儿的雷电,应该是打飞机最早的样子了吧。直到现在,也有微信打飞机,全民飞机大战,全民打飞机等游戏的出现,这些游戏基本都是在我们小时候玩儿的打飞机的原型上增加特效音效以及更多新的玩儿法,在这基础上进行的创新。其实作为开发者来说,仔细看这款游戏,也并不是什么高大上的游戏,其他很多元素、逻辑,都是我们常见的,比如滚动背景

2016-09-05 16:18:58 5397

原创 Cocos Creator实现的《点我+1》

一、前言在学习Cocos中,需要一些东西来练手,于是前段时间就开发仿照一款公司之前的产品《点我+1》来做,仿照过程中,所有的算法逻辑都是自己研究的,并没有参考公司代码,也没有使用公司的美术资源,所以也就不存在公司机密的内容啦,完全只是学习练习而已。 这是一款消除类游戏,规则和大多数三消类游戏差不多,在一个5x5的格子中,有25个方块,每个方块有一个数字,用户的操作就是点击方块,使方块的数字+1,当

2016-09-05 16:13:07 7360 1

原创 Cocos2d-JS实现的2048

一、前言2048是之前火过一段时间的休闲数字消除类游戏,它的玩法很简单,上手很容易,可是想到要得到高分却很难,看似简单的游戏却有着很多得分的技巧,想当初这个游戏也曾是陪伴我大学课堂的游戏之一。虽然在得分上有着很多的技巧,但对于开发来说,这其实是一件相当容易的事情,仔细分析之后就可能大概理清楚这种消除游戏的逻辑。二、游戏分析这款游戏仔细想想就差不多清楚它的大致的思路,游戏中只有方块这一个我们操作的对象

2016-09-05 16:12:40 1657

原创 Cocos2d-JS实现的贪吃蛇

一、前言相信贪吃蛇大家都玩儿过,我对贪吃蛇的印象就是在电子词典上,一只像素蛇在屏幕游走,饥渴难耐,看着豆子就要去吃,吃到豆子就会长一节,当蛇的身体越来越长的时候,它才发现这个世界变了,每走一步,都是寸步难行。当它的蛇头触碰到任意的物体,无论是屏幕边界还是自己的身体,游戏都将结束。这款游戏应该是比较经典的一个童年记忆。刚接触游戏开发的人可能比较喜欢以这款游戏入手,因为贪吃蛇包含了很多游戏开发中的原理,

2016-09-05 16:12:16 1876

原创 微博开源框架Motan初体验

前两天,我在开源中国的微信公众号看到新浪微博的轻量Rpc框架——Motan开源了。上网查了下,才得知这个Motan来头不小,支撑着新浪微博的千亿调用,曾经在2014年的春晚中有着千亿次的调用,对抗了春晚的最高峰值。什么是Motan2013 年微博 RPC 框架 Motan 在前辈大师们(福林、fishermen、小麦、王喆等)的精心设计和辛勤工作中诞生,向各位大师们致敬,也得到了微博各个技术团队的鼎

2016-09-05 16:04:51 5867

原创 JSON-RPC(jsonrpc4j)使用demo

服务端开发,在很多情况下,需要使用到RPC框架,今天发现一款很轻量的RPC框架——JSON-RPC。json rpc 是一种以json为消息格式的远程调用服务,它是一套允许运行在不同操作系统、不同环境的程序实现基于Internet过程调用的规范和一系列的实现。这种远程过程调用可以使用http作为传输协议,也可以使用其它传输协议,传输的内容是json消息体。 json rpc 和xmlrpc相比具有

2016-09-05 15:57:57 15081 5

原创 Java读取CSV和XML文件方法

游戏开发中,读取策划给的配置表是必不可少的,我在之前公司,策划给的是xml表来读取,现在公司策划给的是CSV表来读取,其实大同小异,也并不是什么难点,我就简单分享下Java如何读取XML文件和CSV文件。以下工具类可随意拿去使用。Java读XML文件如果是Maven项目,则依赖以下包(如果不是,则自己在项目添加配置相应jar包) <!-- dom4j begin -->

2016-09-05 15:56:51 2355

原创 Java游戏服务器成长之路——你好,Mongo

关于mongo的思考第一阶段的弱联网游戏已基本完成,截至今天下午,测试也基本差不多了,前端还有一些小bug需要优化,接下来会接入小米,360,百度,腾讯等平台,然后推广一波,年前公司还能赚一笔,而我,也即将准备做下一款SLG。上一次,我第一次尝试了Netty,并且也着实感受到了Nio的魅力,Netty的魅力,在做的过程中也学到了很多有用的东西,这一次,在数据持久化方面,我思考了很久,我越发的觉得,我

2016-01-20 00:07:50 2549

原创 我的Linux病毒追踪记录

第一次自己一个人全权负责做游戏服务器,对于Linux安全并不太懂,所以就在昨天,服务器遭到了攻击,刚开始,只是发现服务器的带宽占满了,以为是带宽不够用,可是想想,弱联网游戏对带宽占用也不高啊而且带宽加大一倍也于事无补,在UCloud控制台看到带宽的波形图,好几次都达到顶峰,于是我在服务器用iftop查看了网络流量监控,发现服务器总往一个ip发送数据包,一发就是1G,这流量,不仅耗带宽,还烧钱啊,网上

2016-01-17 12:38:38 2588

原创 使用Echarts进行可视化的数据线呈现

由于游戏后台需要统计游戏玩家的支付情况,恰好那天看见同学群里聊天说到了Echarts,于是我就看了眼,一看,哟,还是百度的产品,看了文档,示例,确实很屌的样子啊,于是自己就开始试了。

2016-01-17 12:35:12 2462

原创 Java游戏服务器成长之路——感悟篇

Java服务器开发的个人感悟

2016-01-17 00:07:36 17406 17

Linux操作系统

Linux操作系统学习过程的ppt,详细知识解答

2014-08-11

W3Cschool完整版

基础web知识,w3cschool文档,更好的学习html和javascript

2014-08-11

Oracle11g企业版安装图文过程

Oracle11g数据库的安装过程,包含全部过程的截图

2014-08-11

Linux的Tomcat配置

Linux下Tomcat的相关配置,详细的图文解释

2014-08-11

VirtualBox实现文件夹共享

VirtualBox下实现Linux系统与Windows系统之间的文件夹共享

2014-08-11

VMware实现文件夹共享

VMware实现Linux系统与Windows系统之间的文件夹共享

2014-08-11

Java学习笔记(详细)

java学习笔记,企业面试实用知识点,需要的赶紧下载,好东西分享了

2014-08-11

空空如也

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

TA关注的人

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