自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

彼岸花开的彼岸

我是一条酸菜鱼

  • 博客(38)
  • 收藏
  • 关注

原创 RSA,JWT和Micro微服务框架的权限管理系统

文章目录关于RSA简介关于PKCSgo语言实践生成公钥和私钥私钥签名公钥验证公钥加密私钥解密关于JWT简介go语言实践生成JWT字符串解析JWT字符串源码小探Micro微服务框架的权限管理Micro框架权限管理总览Micro框架内JWT的使用生成JWT验证JWT小结关于RSA简介RSA作为著名的非对称加密算法,在计算机世界里有着广泛的应用。相对于加密和解密都使用同一份秘钥的对称加密,非对称加密将秘钥分为公钥和私钥两种。加密的时候使用私钥进行加密,加密的内容可以使用公钥进行解密,即达到了非对称加密的效

2021-10-13 14:03:43 452

原创 游戏后端开发中的设计模式(3)行为模式

文章会分成三篇,分别从创建型模式,结构型模式和行为模式三种划分,简单回顾下游戏开发的工作过程中对设计模式的使用。有纰漏之处,欢迎交流指正。例子代码使用Golang实现,设计模式部分参考了refactoringguru.cn行为模式:行为模式负责对象之间的高效沟通和行为委派。文章目录1. 责任链模式2. 中介者模式3. 观察者模式4. 状态模式5. 访问者模式1. 责任链模式简介将请求沿着责任链传递,链上的每个处理者都可以对请求进行处理,并传递给下一个处理者。实现声明处理者接口(handle

2021-09-28 11:47:38 449

原创 游戏后端开发中的设计模式(2)结构模式

文章会分成三篇,分别从创建型模式,结构型模式和行为模式三种划分,简单回顾下游戏开发的工作过程中对设计模式的使用。有纰漏之处,欢迎交流指正。例子代码使用Golang实现,设计模式部分参考了refactoringguru.cn结构型模式:是关于程序中对象之间结构关系的设计模式。游戏中的对象通过组合等方式关联起来,例如玩家对象会持有装备对象,怪物对象之间会遵循同样的行为模式等。文章目录1. 适配器模式2. 装饰器模式3. 享元模式4. 代理模式1. 适配器模式简介:重点在于“兼容”。当对象的使用场景发生

2021-09-27 11:17:06 451

原创 游戏后端开发中的设计模式(1)创建型模式

文章会分成三篇,分别从创建型模式,结构型模式和行为模式三种划分,简单回顾下游戏开发的工作过程中对设计模式的使用。有纰漏之处,欢迎交流指正。例子代码使用Golang实现,设计模式部分参考了refactoringguru.cn创建型模式:是关于程序中对象创建的设计模式。游戏中服务器会创建许多具体的对象,例如玩家注册会创建玩家对象,玩家获得道具会创建道具对象,玩家在野外打怪会创建怪物对象等。下面会简单介绍几种常用的创建型模式。文章目录1. 工厂方法模式2. 抽象工厂模式3. 生成器模式4. 单例模式1.

2021-09-22 22:22:11 410

原创 MySQL多表连接探究笔记

引言:在项目中遇到了需要合并MySQL数据库表的需求,合并的过程中要跳过已有的记录,因为表的设计初期没有设置主键,最后还是通过MySQL的not exists语句实现了需求,顺便对MySQL里的多表连接进行了一下探索,顺手记录如下。注:仅为个人备忘查询笔记,参考请慎重……文章目录1. 创建测试用例2. MySQL多表查询的多种形式:3. 考察join(Block Nest Join和hash join)4. 考察in(semijoin)5. 考察not exists(anti join)6. 总结1

2021-09-16 14:25:37 212

原创 [Go自学笔记]Go的逃逸分析

文章目录0. 起因1. 背景2. 简单的逃逸分析2.1 查看逃逸分析2.2 禁用逃逸分析2.3 动态类型逃逸分析3. 小结0. 起因在查看go的reflect包源码时,发现了一种写法:// ValueOf returns a new Value initialized to the concrete value// stored in the interface i. ValueOf(nil) returns the zero Value.func ValueOf(i interface{}) V

2021-09-09 00:14:33 400

原创 [Go自学笔记]Go的委托模式

go-nsq里的委托模式Go的接口设计是一绝,可以把接口看做一张设计图,实现结构体的时候只要根据“设计图”的标准进行“加工”,那么该结构体的实例便可用于符合设计要求的地方。就如工厂的工程师先画好零件的设计图(interface),然后根据设计图制作零件模具(struct),这样通过模具生产出来的零件(instances)都是符合设计标准,可以用到其他地方去的。Go的接口设计更符合现实生产的工厂模型,也给程序设计带来了更多的灵活性。通过更换相同接口的不同结构体实例,我们可以在保证整体功能方向的情况下(输入

2021-08-23 20:26:42 644

原创 mongodb-erlang文档阅读+源码解析

mongodb-erlang 是一个非官方的MongoDB客户端,提供了Erlang语言版本的MongoDB驱动。本文旨在通过对其文档和源码的分析探索其使用方法,解析其工作方式。

2020-12-07 20:12:05 967

原创 Erlang代码重构指北——基于自动重构工具Tidier的工作方式

0. 简介Tidies是一款重构Erlang代码的软件,不过现在官网已经打不开,而且软件本身没有开源,所以并不能用了。在网上找到一篇介绍tidies工作方式的论文,从中能整理出一些重构Erlang代码的方法,在此记录如下。原文链接:https://users.ece.cmu.edu/~aavgerin/papers/PPDP09.pdf相关的PPT:https://www.erlang-factory.com/upload/presentations/121/KostisSagonas-Erlang

2020-09-17 14:11:54 485

原创 开发笔记:基于积分的游戏排行榜实现方式探讨

竞技场往往是游戏中不可缺少的系统,根据不同的需求类型,竞技场排行榜的类型可以有如下划分:1.按照排名更新的方式划分:依靠积分进行排行的竞技场,当玩家完成挑战后根据一定的规则进行双方积分的增减,依据新的积分进行重新排名;不依靠积分进行排行的竞技场,只有当排名较低玩家战胜了排名较高玩家时,会交换双方排名。前者一次积分变化会导致较多的玩家排名发生变动,后者一次最多只会影响两名玩家的排名,但要考虑相同玩家同时被挑战的情况。2.按照排行是否严格划分:并列排行榜允许积分相同的玩家处于同一名次,严格排行榜需要处理玩家

2020-07-14 14:36:39 1888

原创 开发笔记:游戏中的好友系统

挺久没更新文章了,这一年以来个人经历了许多事情,去年下半年开始稳定下来了,但今年初始又赶上疫情,公司的项目进度也推迟了,现在好不容易复工,登录了许久不上的博客,发现自己收到了很多新的关注和私信,也有很多网友表达了对自己文章的支持,在这里先表达自己的感谢。其次对于一些网友询问的问题,在这里统一回复下:之前那一系列对于英雄远征源码分析的文章质量其实不高,各位随便看看就行了...至于交流,本人工作经验尚...

2020-04-16 19:36:07 2012 3

原创 英雄远征Erlang源码分析(13)-总结 附上可执行的服务端和客户端代码

总结:其实也没有什么好总结的......英雄远征这套源码虽然说体积并不大,麻雀虽小五脏俱全,对于MMORPG网游的一些基本系统都有完备的实现,虽然实现方法不一定是最好的。除去场景,战斗,组队,任务等那些我文章中有提到的系统,源码中还有像是帮派,邮件,坐骑,宠物,排行榜相关的模块,有兴趣的同学可以自己去看看。游戏中还有几个比较重要的系统,感觉还是要提一下:1.心跳包系统:客户端会以指定时间间...

2019-03-31 20:55:01 2307 1

原创 英雄远征Erlang源码分析(12)-任务模块解析

与玩家任务相关的模块有:lib_task.erl(玩家任务相关操作),mod_task.erl(定时回写任务数据)玩家任务的初始化:在登录的时候调用lib_task:flush_role_task(PS),从数据库中加载玩家角色数据玩家任务数据分为可接的任务,已接取的任务(task_bag)和已完成的任务(task_log)任务的基本操作:1.获取可接任务(接取任务条件),已接...

2019-03-29 15:41:57 489

原创 英雄远征Erlang源码分析(11)-物品相关操作解析

游戏中,玩家物品的管理是通过每个玩家独有的物品管理进程,结合ETS缓存表实现的。物品相关模块有mod_goods.erl,lib_goods.erl,goods_util.erl和lib_make.erlmod_goods.erl:物品管理进程模块,负责创建进程,进程内接收消息并调用相关操作。lib_goods.erl:负责物品的发放和删除,物品属性修改,背包内物品更改(物品堆叠处理),...

2019-03-27 11:47:11 450

原创 英雄远征Erlang源码分析(10)-队伍相关

组队相关模块有mod_team.erl和lib_team.erl通过24000协议请求,调用mod_team:start(Uid,Pid,Nick,TeamName)开启组队进程,创建队伍组队state为%%队伍资料-record(team, { leaderid = 0, %% 队长id leaderpid= none, ...

2019-03-18 15:54:35 2885

原创 英雄远征Erlang源码分析(9)-战斗流程解析

和战斗相关的模块有mod_battle.erl当玩家进程和怪物进程被创建的时候都会通过mod_battle:start_link()创建一个战斗进程。该战斗进程的state,用于保存玩家上次出手或者使用技能的时机,用于cd的判断-record(state, { last_attack_time=0, % 上次出手时间 last_skill_time...

2019-03-16 14:16:27 3386 1

原创 英雄远征Erlang源码分析(8)-怪物相关

与怪物相关的模块有三个:mod_mon_create.erl,mod_mon_active.erl,lib_mon.erlmod_mon_create:创建负责创建怪物的进程,通过mod_mon_create:create_mon([MonId, Scene, X, Y, Type])创建怪物进程怪物创建进程的state-record(state, {auto_id}).用于保存怪物的自...

2019-03-15 18:00:46 2099

原创 英雄远征Erlang源码分析(7)-场景与副本

场景和副本是玩家活动的区域,场景在服务器启动的时候由mod_scene进程创建,场景信息保存在?ETS_SCENE中,并一直存在;副本在玩家请求进入的时候会创建副本服务进程,当玩家离开的时候会撤销进程。场景:场景相关的模块为mod_scene.erl和lib_scene.erl,场景的基本要素:怪物,NPC,mask(包含场景可移动坐标信息),它们在场景初始化的时候被加载。场景初始化...

2019-03-15 15:49:26 831

原创 英雄远征Erlang源码分析(6)-玩家进程初始化和玩家模块相关方法

客户端发送登录请求后,服务器检查玩家登录需求,创建玩家进程以及进行相关的初始化工作,只有这些做完后,客户端操控的角色才算是和服务器的玩家进程建立了关联。创建玩家进程调用mod_player:start/1,使用process_flag(priority,max)将进程优先度设置为最高,返回玩家进程的Pid。登录检查通过,调用mod_login:login_success/4,初始化玩家内存...

2019-03-04 17:59:50 717

原创 英雄远征Erlang源码分析(5)-协议解析与玩家登录处理

现在,客户端与服务器的连接算是正式建立了,此时用户需要做的第一件事就是登陆。不过在登录之前,我们要先研究下前后端通信的协议。客户端与服务端建立连接后,通过提前制定好的协议进行交互。具体的协议文档在doc文件夹下。典型的协议结构如下(此处为用户登录的10000协议):*** 协议说明 ***1.协议号由5位数字组成,前两位表示协议分类(主要用于区分不同的功能模块),后三位是该分类下...

2019-03-04 17:03:22 1261

原创 英雄远征Erlang源码分析(4)-TCP连接处理

上一篇文章大概捋了一下游戏服务器启动的时候对应模块的动作,现在我们来仔细研究一下其中的start_tcp/0和start_client/0部分。在start_tcp/0中启动了sd_tcp_listener_sup监控树,并挂到sd_sup下。其后启动的进程树形关系如下:这是游戏服务器启动后使用observer观察到的游戏内进程关系图,<0.68.0>为start_tcp/...

2019-03-04 16:17:41 932 1

原创 英雄远征Erlang源码分析(3)-游戏服务器的启动

上一篇文件介绍了网关服务器的启动,其功能主要用于给客户端返回可选的游戏服务器列表,让客户端去连接。其实有些游戏的网关部分使用的是PHP搭建,代码的维护和Erlang是分开的。现在让我们来看游戏服务器的部分。同样,找到script文件夹,运行run.sh,即可启动游戏服务器(先确认游戏的数据库和相关的表已建立,通过运行sdzmmo.sql文件)。脚本里的启动参数和一些解释: +P 1...

2019-03-04 15:22:13 1148

原创 英雄远征Erlang源码分析(2)-网关服务器的启动

上一篇文章解析了游戏源码的结构,我们知道该源码包含两个服务器的启动脚本:网关服务器和游戏服务器,其中网关服务器用于在玩家选择进入游戏服务器之前获取服务器列表,游戏服务器则处理玩家进入游戏服务器后的登录,进入游戏操作。先来说说游戏的网关服务器部分的启动过程,和网关服务器相关的代码为sd_gateway_xxx.erl。运行script/gateway.sh文件,从sd:gateway_sta...

2019-03-04 11:51:43 1280

原创 英雄远征Erlang源码分析(1)-源码结构解析

偶然得到了一份英雄远征的Erlang服务端源代码,想着通过对源代码的分析,来熟悉使用Erlang编程语言的游戏服务器的设计,游戏中关键逻辑的实现。 解压压缩文件后,在Idea内导入文件夹创建相关工程,可以看到文件结构如下: doc:协议文档 ebin:保存编译后的ebin文件,由于是启动目录,所以也包含了gateway.app,server.app...

2019-03-04 09:52:50 2310 3

原创 MochiWeb使用+源码分析资料整理

  毕业了好一段时间了,现在回头看自己的校招经历的话实在说不上成功,重视程度不够+准备不足,没能和同学一样拿到一个光鲜的offer,现在也已经参加工作了半年了,回头感慨再多也没有用,从今往后还是脚踏实地认真努力的工作,保持饥渴状态不断学习,苦练内功,为日后做准备,毕竟,未来的事情谁知道呢。  参加工作后使用的编程语言是Erlang,虽然不及java,python和c++之类有热度,但其设计哲学...

2018-11-25 22:41:24 320

原创 一个Bangumi.tv的爬虫

一个爬取Bangumi.tv动画数据的小爬虫

2017-10-23 19:08:27 2749

原创 《机器学习实战》代码片段学习6 k均值聚类与二分k均值聚类

概述:本章开始进入无监督学习的内容。聚类方法将相似的对象分到同一个簇中。

2017-09-11 09:23:21 392

原创 《机器学习实战》代码片段学习5 AdaBoost元算法

svm那一章看的太吃力…先缓缓,回头再收拾它(简介基于同一分类器多个不同实例的两种计算方法:bagging与boostingBagging:从原始数据集选择S次后得到S个新数据集的一种技术,将某个学习算法串行作用于每个数据集就得到了S个分类器。对新数据进行分类时,用这S个分类器进行分类,并选择分类器投票结果中最多的类别作为最后的分类结果。Boosting:关注被已有分类器错分的数据来获取新的分类器。

2017-09-04 22:08:30 276

原创 利用爬虫和Django+echarts建立自己的动画人气统计小站

开发环境:Django版本1.11.4,python版本3.6.0

2017-09-02 00:58:33 3409

转载 常用正则表达式

在此搜集一些网络上总结的有用的正则表达式,以备日后需要用到的时候查询使用。需要注意的是表达式不是一成不变的,很多时候不能照抄、需要改写表达式以适应实际情况,比如现在国内手机号已经开放了198、166、174号段,以下的匹配手机号的正则表达式就需要进一步扩充了。原地址:https://c.runoob.com/front-end/854

2017-09-01 11:40:48 211

转载 正则表达式基础+进阶

在学习正则表达式的时候找到了一篇不错的文章。相比于其他文章只是简单的罗列和较为含混的思路,这篇文章对正则表达式的基础与较为深入的部分都有较好的讲解,在原页面也有作为教学实例的例子链接,能通过实际的操作来加深印象。原标题:揭开正则表达式的神秘面纱原地址:http://www.regexlab.com/zh/regref.htm

2017-09-01 11:13:35 531

原创 《机器学习实战》代码片段学习4 Logistic回归

知识储备:Logistic回归进行分类的主要思想:根据现有数据对分类边界线建立回归公式,以此进行分类。

2017-08-30 17:05:00 315

原创 《机器学习实战》代码片段学习3 朴素贝叶斯

知识储备:贝叶斯决策核心思想:选择具有最高概率的决策。贝叶斯准则: 利用贝叶斯准则我们可以交换条件概率中的条件与结果。朴素贝叶斯假设:1.每个特征相互独立。2.每个特征同等重要。朴素贝叶斯分类器的优缺点: 优点:在数据较少的情况下仍然有效,可以处理多类别问题。 缺点:对于输入数据的准备方式较为敏感。 适用数据类型:标称型数据。

2017-08-28 22:57:50 373

原创 《机器学习实战》代码片段学习2 决策树

决策树概述决策树可以根据对输入特征属性的层层筛选选定数据所属的类。决策树能直观的展示数据的结构层次,利于理解。“…决策树可以使用不熟悉的数据集合,并从中提取出一系列规则,在这些机器根据数据创建规则时,就是机器学习的过程。”

2017-08-26 15:11:58 203

原创 《机器学习实战》代码片段学习1 k-近邻算法

最近开始系统的做一些机器学习方面的学习,选中了图灵程序设计丛书的《机器学习实战》作为教材。开发环境上个人选择了集成了python2.7与各类数据分析相关的python包的Anaconda4.4。

2017-08-24 00:25:48 243

原创 个人向的前端的坑坑洼洼的记录(2)

弹出模块框的实现项目要让用户能自行选择在展示页面需要展示的内容,基本思路为用复选框列出一些属性让用户选择,用户选择完毕后能将所选的属性提交后台处理。此处考虑与原来配置界面的整合,选择了将其放在弹出的模态框中实现。在实际实现的过程中选择使用了Bootstrap 的模态框(Modal)插件,需要引入boostrap.js文件。

2017-08-19 23:42:11 235

原创 个人向的前端的坑坑洼洼的记录(1)

这段时间在帮忙做一个前端界面,由于自己前端几乎是从零开始,在此记录一些鼓捣过程中的一些坑坑洼洼,一方面算是对前端知识的一些零散的记录,另一方面也能反省一下自己的学习方法。由于只是个人向不定期的总结,仅仅是方便个人回头反思,文章总体说不上有多系统。在具体实现的时候使用了较为流行且对新手友好的bootstrap框架和jquery库。

2017-08-13 20:38:10 321

原创 Python爬虫爬取知乎用户信息+寻找潜在客户

【Python应用】寻找社交网络中的目标用户这是我们学校的软件工程课程设计的题目,要求自行编写爬虫或者利用开放的API获取新浪微博、知乎等社交网站的用户信息,利用数据挖掘的相关算法进行分析, 从大规模的用户群体中, 分别找出其中具有海淘或母婴购物意向的用户。

2017-07-27 17:50:57 18578 8

空空如也

空空如也

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

TA关注的人

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