自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

昔拉的博客

站在巨人肩膀上看世界,就不会让能力一成不变

  • 博客(565)
  • 资源 (4)
  • 收藏
  • 关注

原创 微信支付宝SDK接入介绍

001 介绍与课程源码002 微信开放平台所需操作

2020-08-04 22:35:55 1993

原创 Lua与C API交互全面解析(史上最全的整理)

C API 纵览Lua 是一个嵌入式的语言,意味着 Lua 不仅可以是一个独立运行的程序包也可以是一个用来嵌入其他应用的程序库。你可能觉得奇怪:如果 Lua 不只是独立的程序,为什么到目前为止贯穿整本书我们都是在使用 Lua 独立程序呢?这个问题的答案在于 Lua 解释器(可执行的 lua)。Lua 解释器是一个使用 Lua 标准库实现的独立的解释器,她是一个很小的应用(总共不超过 500 行的...

2020-02-21 18:03:04 8052 2

原创 AOF持久化(redis服务器篇)

RDB 持久化的缺点RDB 持久化,这种持久化可以将数据库里面的数据以二进制文件的形式储存到硬盘里面。RDB 持久化有一个缺点,那就是,因 为创建 RDB 文件需要将服务器所有数据库的数据都保存起来,这是一个非常耗费资源和时间的操作,所以服务器需要隔一段时间才创建一个新的 RDB 文件,也即是说,创建 RDB 文件的操作不能执行得过于频繁,否则就会严重地影响服务器的性能。比如说,在 save...

2020-02-12 07:06:48 240

原创 MySQL查询优化

1、小表驱动大表(类似于嵌套循环Nested Loop):MySQL in和exists:以下用in和exists等价,但可以视情况选择用哪一种效率更高2、MySQL OrderBy优化ORDER BY子句,尽量使用index方式排序,避免使用filesort方式排序建表SQL:case(order by顺序与索引顺序尽量一致就是用index方式进行排序):mysql支持...

2020-02-06 05:52:53 190

原创 基于photonserver的游戏Demo

以下是个人自学自写的一款MOBA游戏源码,欢迎有兴趣的关注与下载https://github.com/hlslml77/fist/

2020-02-04 08:57:33 418

原创 C++语言的历史

C++标准化前:C++98标准成立:协变返回类型:父类和子类函数签名是一样的,唯有返回值不一样可变型:mutable 突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。之后的C++标准库基本是由boost来提供的,10个里有7个左右...

2020-01-31 18:26:15 225

原创 使用protobuf设计消息协议(C++asio网络库相关)

protobuf是目前应用最广范的设计消息协议工具,具有以下一些特点:1、proto2只支持python,c++,JAVA,proto3可以支持更多语言2、定义协议以proto作为文件后缀名,在第一行用syntax指定proto版本3、C++使用protobuf官方文档:http://developers.google.com/protocol-buffers/docs/cpptutoria...

2020-01-25 12:11:58 1917 4

原创 作为一名合格C++程序员应该避免的一些坑

以下例子只有父类的析构函数被调用了。子类的析构函数并没有被调用,则产生错误。这一点上,对于原始的指针、类或者std::unique_ptr。其表现是一致的。也符合C++基本的语法。但是对于std::shared_ptr。即便父类析构函数并非虚函数,其子类的析构函数依然可以被调用。对于此种行为的原因尚未查明(待更新)。也许这是std::shared_ptr专门设计的一种特性。但为谨慎起见,我们...

2020-01-17 15:29:44 507

原创 redis ring

看代码后会发现,Hash那一章中讲的理论与go-redis中的实际实现也有些差别:理论中rendezvous hash只需在寻找节点时实时计算hash(key, node), 但代码里实际会存一份各个node的hash值以便省去重复计算;理论中rendezvous hash可以自由地扩展、删除节点,但代码里实际希望各节点字段是“read only”。节点挂掉后不会将其从管理的分片中删掉,只是在计算时忽略它的存在。同样地,等节点重启后又可以通过心跳检测将其重新加入计算范围内。

2024-01-16 15:29:06 855

原创 GO官方指南与API文档

Golang官方网站:https://golang.org。

2023-12-20 10:39:06 585

原创 安装Go语言开发环境

(2). 解压下载的压缩包,放到特定的目录下,我一般放在d:/programs下(路径不能有中文或者特殊符号如空格等)注:Path这个环境变量不需要再创建,因为系统本身就有,直接在后面增加Go的bin:;(2). 解压下载的压缩包,linux建议放在/opt目录下。sdk下载地址为:https://go.dev/dl/sdk下载地址为:https://go.dev/dl/sdk下载地址为:https://go.dev/dl/(2). 解压下载的压缩包,一般放在用户目录下。(1). 下载SDK工具包。

2023-12-14 16:00:45 536

原创 【GO语言发展历史】

三名初始人最终的目标是设计一种适应网络和多核时代的C语言,所以Go语言很多时候被描述为“类C语言”,或者是“21世纪的C语言”,Go从C继承了相似的语法、编程思想等。2007年,谷歌工程师Rob Pike,Ken Thompson和Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型。3、企业运行维护很多c/c++的项目,c/c++程序运行速度虽然很快,但是编译速度却很慢,同时还存在内存泄漏的一系列的困扰需要解决。2017年2月17日,Go语言Go1.8版发布。

2023-12-14 11:16:17 423

转载 RDB的COW(Copy On Write)

1、RDB的过程中是否会停止对外提供服务?2、RDB的过程中数据修改了,备份的是修改前的还是修改后的?3、RDB时是不是先把内容中的所有KV复制一份,保证数据不会被修改?问题解决:使用Copy On Write 写时复制。

2023-03-30 21:11:29 15

原创 Lua单元测试编写指南

需要注意的是,因为我们phonest框架内hook了_G,所以我们需要在init传入需要使用的global变量,其中"testXXXX"就是我们此次需要测试的function。luaunit原始框架不支持协程模式,但是我们phonest框架的RPC以及Timer是依赖底层c++回调的,需要有一定的驱动时间,我们将这些语义封装到了框架内部,外部测试者,不再需要关注底层细节,我们以TimerManager为例进行说明。需要注意的是,在第24行,我们需要return 0,告知外部不需要额外的等待时间。

2023-02-21 10:17:32 116

转载 技能系统解析

技能系统需要根据当前的项目来划分,例如:ACT游戏与MOBA游戏就有一些区别。ACT游戏大部分为了追求打击感使用的是角色身上碰撞盒来触发做技能,ACT游戏追求技能的衔接与多样性。MOBA游戏就不一样,MOBA技能的触发是由玩家点击释放,技能流程大部分也是根据动画帧一套做到底,多技能衔接绝对没有ACT要求那么高。我们这里将要讲的是用于MOBA/ARPG游戏的技能系统,ACT游戏可作为参考,很多地方是大同小异的。...

2022-08-11 15:56:06 1017

转载 如何实现一个强大的MMO技能系统

文章目录如何实现一个强大的MMO技能系统——序章前言如何实现一个强大的MMO技能系统——AOI前言正文总结如何实现一个强大的MMO技能系统——技能前言正文总结示例如何实现一个强大的MMO技能系统——BUFF前言正文第一节:Buff定义第二节:Buff执行流程第三节:Buff修改状态(ModifyState)第四节:Buff修改属性(ModifyAttribute)第五节:Buff修改运动(ModifyMotion)第六节:Buff监听事件总结示例如何实现一个强大的MMO技能系统——子弹前言正文总结示例如何实

2022-04-07 04:28:28 1995

转载 mysql数据导入到redis_快速将MySQL的数据导入Redis

简介通过pipe将MySQL数据批量导入Redis,自Redis 2.6以上版本起,Redis支持快速大批量导入数据,即官网的Redis Mass Insertion,即Pipe传输,现在的业务场景是将mysql中某张表的所有数据传输到redis中存储起来。大致思路是用MySql的concat()方法将查询出来的数据按照resp协议的格式拼接成redis命令集合,再通过redis-cli --pipe批量执行命令redis存储设计假设数据库为test,表结构如下:create database

2022-03-31 04:28:31 3220

转载 java服务器gc停顿_JVM的GC停顿时间过长该怎么处理?

应用运行过程中是不希望出现长时间的GC停顿的,因为这会影响服务的可用性,导致用户体验变差,甚至会严重损害一些关键的应用程序。本文将会列出可能导致GC停顿时间长的一些原因和解决方案。1. 对象创建的速度过高如果应用创建对象的速度非常高,随之而来的就是GC频率也会变快,然后会导致GC的停顿时间变长。所以说,优化代码以降低对象的创建速率是降低GC停顿时间最有效的方法。这可能是一件非常耗时的事情,但是却非常值得去做。可以使用JProfiler, YourKit, JVisualVM这样的性能监控工具来帮助优化

2022-03-31 04:08:53 2679

原创 服务器查找死循环

当服务器上出现死循环的时候,运行top命令,查看占用cpu较高的进程运行命令:jstack –l 进程号 >文件运行命令:top –H –p 进程号。(查找到一个新的PID)将新的PID数字转换为十六进制。(24245转换为十六进制是5eb5)查看刚才写入的那个文件(1.txt),查找转换为十六进制后的数字,查看相关信息!步骤结束!!...

2022-02-28 14:12:07 608

转载 c++编译过程简介

了解编译过程的益处c++工程相关的问题什么是库?静态库和动态库又有什么区别?头文件起什么作用?编译过程简介名词:编译:把源文件中的源代码翻译成机器语言,保存到目标文件中。如果编译通过,就会把CPP转换成OBJ文件。编译单元:每个cpp就是一个编译单元,每个编译单元相互之间是独立且相互不知的。一个编译单元(Translation Unit)是指一个.cpp文件以及这所include的所有.h文件,.h文件里面的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文

2022-02-21 14:46:00 1024

转载 C++结构体序列化和反序列化方法

unsigned char* EncodeCommonStruct(const CommonStruct_st& CommonSt){ //分配内存 unsigned char* strBuff = (unsigned char*)malloc(CALC_COMMON_ST_LEN(&CommonSt)); if (NULL == strBuff) { return NULL; } //填充内容 *(long*)s

2021-05-15 11:42:16 3936

转载 Linux修改的文件“修改时间”

//文件修改时间设置为:2018年7月13日 14:12:02# touch -t 201807131412.02 test.txtor# touch -d "2008-07-11 03:41:10" test.txt# stat test.txt

2021-04-21 14:43:25 226

转载 求有环单链表中的环长、环起点、链表长

1.判断单链表是否有环使用两个slow, fast指针从头开始扫描链表。指针slow 每次走1步,指针fast每次走2步。如果存在环,则指针slow、fast会相遇;如果不存在环,指针fast遇到NULL退出。就是所谓的追击相遇问题:2.求有环单链表的环长在环上相遇后,记录第一次相遇点为Pos,之后指针slow继续每次走1步,fast每次走2步。在下次相遇的时候fast比slow正好又多走了一圈,也就是多走的距离等于环长。设从第一次相遇到第二次相遇,设slow走了len步,则fast走了2*le

2021-04-13 17:09:29 650

原创 力扣146:LRU缓存机制

原题:LRU 缓存机制运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,

2021-03-31 19:00:28 181

原创 任务25:显示英雄模型

处理英雄出现位置由服务器提供转换位置值函数校准摄像机位置

2021-03-24 22:51:39 130

原创 任务24:英雄生成

服务器返回英雄ID加载英雄模型

2021-03-24 20:52:53 109

原创 任务23:网络消息控制

导入PVP地形设置布尔型变量控制切换场景时暂停接收服务器消息awake时设置为true注册事件用到gamestart文件变量需要广播回gamestartgameplay新场景脚本中重新唤醒接收消息

2021-03-24 15:38:06 98

原创 任务22:地形编辑器

创建地形给地形添加纹理绘制山川调整地形高度平滑地形导入unity自带环境绘制树木地形设置

2021-03-23 15:48:01 105

原创 任务21:异步加载场景

服务器发回战斗改变场景消息处理场景改变消息unity中加载场景并且build setting

2021-03-23 15:32:15 95

转载 查看linux系统端口占用命令

linux系统查看端口占用情况需要通过命令查看,哪些端口被占用,怎么开放端口等。工具/原料linux系统方法/步骤netstat -ntlp:查看当前所有tcp端口各个参数解释如下:-t : 只显示TCP端口-u : 只显示UDP端口-l : 仅显示监听套接字(能够读写与收发通讯协议(protocol)的程序)-p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序-n : 不进行DNS轮询,显示IP(这样可以加快查询的时间)查看linux系统端口占用命令2可以用gr

2021-03-15 14:06:13 1284

转载 C++ vector 的push_back() 以及 内存释放

一、什么是vector?向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。二、容器特性1.顺序序列顺序容器中的元素按照严格的线性顺序排序。可以通过元素在序列中的位置访问对应的元素。2.动态数组支持对序列中的任意元素进行快速直接访问,甚至可以通过指针算述进行该操作。操供了在序列末尾相对快速地添加/删除元素的操作。3.能够感知内存分配器的(Alloc

2021-03-11 21:38:13 4673

原创 懒汉式与饿汉式的区别

所谓“懒汉式”与“饿汉式”的区别,是在与建立单例对象的时间的不同。“懒汉式”是在你真正用到的时候才去建这个单例对象:比如:有个单例对象public class Singleton{private Singleton(){}private static Singleton singleton = null; //不建立对象public static synchronized Singleton getInstance(){if(singleton == null) { //先判断

2021-03-11 18:20:05 6440

原创 任务20:完善加载逻辑

定义英雄选择时间变量初始化倒计时变量指定倒计时文本update函数里处理倒计时倒计时结束后的逻辑处理接收服务器战斗英雄的消息有变量的变动需要广播回去处理英雄加载页面图片和名字指定myhero和enmyhero...

2021-03-05 16:05:32 99

原创 任务19:确定英雄选择

确定英雄选择逻辑UNITY中绑定加载界面

2021-03-05 09:58:11 300 1

原创 任务18:加载英雄选择模型

加载英雄模型选英雄时刷新英雄模型三个重要方法resources.load加载到内存当中gameobject.instantiate加载到场景当中

2021-03-04 16:31:03 91 1

原创 任务17:刷新英雄选择头像

英雄头像控件挂载选择英雄时刷新英雄选择头像和名称函数

2021-03-03 17:53:47 79 1

原创 任务16:动态添加点击事件

用UIEventListener类动态添加点击事件和方法向服务器发消息

2021-03-03 17:06:44 91 1

原创 任务15:刷新英雄选择列表

得到服务器英雄列表消息注册英雄列表事件:加载英雄列表函数UNITY中为变量赋值

2021-03-03 16:24:28 93 1

原创 任务14:切换英雄选择界面

服务器下发的消息定义英雄选择变量:显示英雄选择界面广播英雄选择消息UNITY中指定变量

2021-03-02 20:52:28 162

原创 任务13:完善匹配逻辑

引入time类:更新时间文本:时间文本重置:时间累加效果定义匹配人数事件匹配人数文本显示广播人数事件接收服务器匹配人数消息

2021-03-02 17:33:01 90 1

Unity接入微信登录 微信分享 微信支付 支付宝SDK

Unity接入登录 分享 支付 支付宝SDK

2020-08-04

MFC程序观察内存泄漏.rar

MFC程序观察内存泄漏

2020-06-25

服务器业务逻辑测试.rar

用于服务器自测业务逻辑数据发送是否正常的简易客户端代码,非商业性代码仅供服务器开发人员自测.~~~~

2020-04-04

客户端连接服务器并发送数据测试.rar

服务器专用客户端协议测试工具,可以连接到指定服务器并进行简单的收发包,主要用于测试服务器接收数据是否正常

2020-03-21

空空如也

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

TA关注的人

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