自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 资源 (5)
  • 收藏
  • 关注

原创 win11关闭自动更新

彻底关闭win11自动更新-CSDN博客

2023-12-12 10:45:11 124

转载 Lua 堆栈的工作原理和使用方式

通过避免频繁的对象创建和销毁、减少不必要的对象拷贝、合理设置垃圾回收参数、使用适当的数据结构等方法,可以提高堆的性能和内存利用效率。需要注意的是,Lua的堆中存储的是对象本身的数据,而不是对象的引用或指针。需要注意的是,栈上的数据是临时存储的,并不持久保存。总之,Lua的堆是一个用于存储动态分配的数据的区域,通过内置的垃圾回收机制进行管理。在使用Lua堆时,应注意适当地创建和销毁对象,管理引用计数,避免不必要的对象创建,以及高效使用内存,以确保程序的性能和内存管理的有效性。栈中存储的是各种Lua值的副本。

2023-11-12 03:31:05 101

转载 Lua 堆栈的工作原理和使用方式

通过避免频繁的对象创建和销毁、减少不必要的对象拷贝、合理设置垃圾回收参数、使用适当的数据结构等方法,可以提高堆的性能和内存利用效率。需要注意的是,Lua的堆中存储的是对象本身的数据,而不是对象的引用或指针。需要注意的是,栈上的数据是临时存储的,并不持久保存。总之,Lua的堆是一个用于存储动态分配的数据的区域,通过内置的垃圾回收机制进行管理。在使用Lua堆时,应注意适当地创建和销毁对象,管理引用计数,避免不必要的对象创建,以及高效使用内存,以确保程序的性能和内存管理的有效性。栈中存储的是各种Lua值的副本。

2023-11-12 03:28:32 169

转载 常用设计模式

总之,模板方法模式是一种常用的设计模式,它通过定义算法的骨架和抽象方法,将算法的具体实现延迟到子类中。模板方法模式通过在抽象类中定义算法的框架,将具体实现延迟到子类中,从而使得子类可以根据需要重新实现特定的步骤,同时保持算法的结构不变。工厂模式将对象的实例化过程封装在一个工厂类中,客户端通过调用工厂类的方法来获取所需的对象,而不需要直接使用new关键字实例化对象。建造者模式的主要目的是通过一个独立的建造者类来封装对象的构建过程,客户端只需指定具体的建造者,而无需知道具体的构建细节。

2023-11-12 02:17:54 74

转载 C++ 指针

总之,指针是一个强大而灵活的工具,但同时也需要谨慎使用。合理管理指针的生命周期、避免野指针和悬空指针,以及正确释放动态分配的内存,都是确保指针使用正确和安全的关键。理解并遵循指针的最佳实践,可以避免这些问题,并提高代码的正确性和安全性。C++ 中的指针是一个重要的概念,它允许我们直接访问和操作内存地址。解决方法是在使用指针之前,确保它被初始化或赋值为有效的内存地址。解决方法是确保指针在合法范围内进行访问,避免越界访问。解决方法是在解引用之前,确保指针指向有效的内存地址。,或者避免在释放内存后继续使用指针。

2023-11-12 02:14:30 32

原创 lua socket客户端 lua string.pack字符串打包

lua socket客户端 lua string.pack字符串打包_gdut17的博客-CSDN博客

2023-04-20 15:00:23 243

原创 libevent学习

libevent

2023-03-25 15:03:48 505

转载 CMake学习

可以用来指定工程的名字和支持的语言,默认支持所有语言PROJECT (HELLO) 指定了工程的名字,并且支持所有语言—建议PROJECT (HELLO CXX) 指定了工程的名字,并且支持语言是C++PROJECT (HELLO C CXX) 指定了工程的名字,并且支持语言是C和C++该指定隐式定义了两个CMAKE的变量_BINARY_DIR,本例中是 HELLO_BINARY_DIR_SOURCE_DIR,本例中是 HELLO_SOURCE_DIR。

2023-03-24 22:44:24 262

原创 gdb学习

gdb

2023-03-23 10:10:07 411

原创 C++学习2

C++ 智能指针

2023-03-16 20:17:26 731 1

原创 C++学习

C++学习

2023-03-09 17:56:39 924 2

原创 rust的struct

rust的struct

2022-09-29 11:52:21 892

原创 rust的切片

rust切片

2022-09-27 14:22:04 381

原创 rust的所有权与引用

【代码】rust的所有权与引用。

2022-09-27 10:19:24 648

原创 rus的t数据结构

【代码】rus的t数据结构。

2022-09-27 10:16:05 508

原创 rust的安装和指令

rust 安装 指令

2022-09-27 10:14:23 1832

转载 Lua反射调试

Lua反射

2022-06-21 11:10:26 419

转载 skynet 服务相关api

skynet 服务相关api

2022-06-20 16:50:28 938

原创 skynet分析

http://www.doczj.com/doc/cf10511267.html

2022-06-20 15:13:30 83

原创 开源游戏服务器你中意哪款?

开源游戏服务器你中意哪款?_bytemode的博客-CSDN博客_开源游戏服务器

2022-06-20 15:09:23 513

原创 go安装配置

go

2022-06-12 17:04:16 398

转载 pthread_cond_wait学习笔记

pthread_cond_t表示多线程的条件变量,用于控制线程等待和就绪的条件。一:条件变量的初始化:条件变量和互斥锁一样,都有静态动态两种创建方式,静态方式使用PTHREAD_COND_INITIALIZER常量初始化。pthread_cond_t cond = PTHREAD_COND_INITIALIZER;动态方式初始化:1 首先要new或者malloc一个pthread_cond_t类型变量,用完后记得delete或者free掉。2 动态方式调用pthread_cond

2022-01-26 15:15:57 309

转载 函数pthread_cond_init()的使用方法

条件变量的结构为pthread_cond_t,函数pthread_cond_init()被用来初始化一个条件变量。它的原型为:  extern int pthread_cond_init __P ((pthread_cond_t *__cond,__const pthread_condattr_t *__cond_attr));  其中cond是一个指向结构pthread_cond_t的指针,cond_attr是一个指向结构pthread_condattr_t的指 针。结构 pthread_cond

2022-01-26 14:52:46 3024 1

原创 SKYNET CONFIG

include "config.path"-- preload = "./examples/preload.lua" -- run preload.lua before every lua service runskynetdir = "/home/arch/git/skynet/"thread = 8logger = nillogpath = "."harbor = 1address = "127.0.0.1:2526"master = "127.0.0.1:2013"star...

2022-01-02 17:51:59 2089

原创 skynet学习(一)

...

2021-06-16 12:03:48 128

转载 Skynet服务器框架——C源码剖析启动流程

在Linux下配置安装 skynet 的环境这里略过,为了从底层更好地理解整个框架的实现过程,我们有必要剖析一下源码,由于底层的源码都是用C语言写的,lua脚本基本是用来进行业务层开发,所以我们从C源码开始解读框架。打开下载包的 skynet-src 目录,这里是skynet框架的核心C源码,接下来我们就要来解读 skynet_main.c 和 skynet_start.c 这两个与skynet启动相关的C源码。1.入口函数和初始化:我们启动 skynet 使用的指令 ./skynet exampl

2021-06-08 09:29:02 398

原创 加载动态链接库——dlopen dlsym dlclose

加载动态链接库——dlopen dlsym dlclosehttps://www.cnblogs.com/ZhaoxiCheung/p/9424930.html

2021-06-07 17:35:55 70

原创 Linux 信号

linux中sigaction函数详解https://blog.csdn.net/weibo1230123/article/details/81411827

2021-06-07 15:19:06 64

原创 jemalloc内存占用问题

https://www.cnblogs.com/Lifehacker/p/jemalloc_settings.html

2021-06-05 11:49:40 403

转载 使用 jemalloc profile memory

对于长时间运行的服务端程序,内存的使用一直是一个非常重要的监控指标,当内存的使用量一直在上升的时候,我们就需要警觉起来,因为很有可能整个系统出现了内存泄露。那么剩下的问题就比较简单了,如何动态的获知哪里有内存泄露呢?对 Go 的程序来说,我们可以使用语言内置的 pprof 工具非常方便的对内存进行 profile,我们只需要在程序里面 import _ "net/http/pprof",这样启动的 HTTP server 服务器就能够被直接 profile 了。但对 Rust,情况就没那么简单了。因

2021-06-05 11:26:12 1919

转载 ulimit

ulimint -a 用来显示当前的各种用户进程限制Linux对于每个用户,系统限制其最大进程数,为提高性能,可以根据设备资源情况,设置个Linux用户的最大进程数,一些需要设置为无限制:数据段长度:ulimit -d unlimited最大内存大小:ulimit -m unlimited堆栈大小:ulimit -s unlimited我们在用这个命令的时候主要是为了产生core文件,就是程序运行发行段错误时的文件:ulimit -c unlimited生成core文件,###...

2021-06-05 11:14:44 947

原创 skynet原理解析

https://www.jianshu.com/p/27f40bdd142c

2021-06-02 20:54:01 143

转载 Skynet 服务创建流程

根据设计综述Skynet 是为了让服务器充分利用多核优势,将不同的业务放在独立的执行环境中处理。Skynet 核心功能是加载一个 C 模块(动态库),模块用数字 id 标识,作为其 handle ,模块被称为服务 service。服务间可以自由发送消息。每个模块可以向 Skynet 框架注册一个 callback 函数,用来接收发给它的消息。每个服务是被一个个消息驱动,当无消息时,服务处于挂起状态。每个服务拥有一个属于自己的消息队列,框架中存在一个全局队列负责调度处理服务所接收到的消息。代码层面..

2021-06-02 20:51:24 959

转载 skynet1.0阅读笔记_skynet的启动

首先看skynet的启动,函数入口在 skynet_main.c 的main(),其中最重要的是: skynet_start(&config);在skynet_start中做了两个启动: //启动了snlau服务,然后加载launch服务 bootstrap(ctx, config->bootstrap); //创建monitor,timer,socket,worker线程等 start(config.

2021-06-02 20:17:37 325

转载 skynet 学习笔记

游戏服务器开发中的其中一个难点:隔离性。在C/C++写的服务器中,一行代码中的空指针访问,就会导致整个服务器进程crash。解决方式是:沙盒机制。Skynet 的沙盒是利用Lua 实现的, 称为服务snlua。下面重点讲这个沙盒是如何实现的Skynet 启动 沙盒启动API snlua 启动Skynet 启动Skynet 启动过程, 主要是启动了一些沙盒服务。Skynet 配置文件一般是Config文件。按照默认配置,启动时,部分日志如下: $ ./sk...

2021-06-02 20:10:23 410

原创 skynet服务的本质与缺陷

skynet服务的本质与缺陷https://blog.csdn.net/mycwq/article/details/47379277

2021-04-29 20:30:07 118

转载 skynet消息及一些源码解析

skynet消息及一些源码解析技术标签:skynet消息1.skynet消息基本组成每个 skynet 服务,最重要的职责就是处理别的服务发送过来的消息,以及向别的服务发送消息。每条 skynet 消息由五个元素构成。1.1 session 消息标识大部分消息工作在请求回应模式下。一个服务向另一个服务发起一个请求,而后收到请求的服务在处理完请求消息后,回复一条消息。session 是由发起请求的服务生成的,对它自己唯一的消息标识。回应方在回应时,将 session 带回。这样发送方才能识别出哪.

2021-04-28 10:23:20 494

转载 lua热更新学习

lua热更新学习什么是热更新,对于它的理解,正如云风所说的那样,热更新更多的用途是做不停机的 bug 修复,不应用于常规的版本更新。对于热更新的博客,网上看了不少,包括云风写的一篇热更文章。也仔细看了snax的热更部分实现细节。发现有不少可以吸取之处。并把核心部分抽取出来,做个简单分享。至于怎么个热更新法,更新的是哪些内容,我的理解是,热更新最好只更新模块中的一小部分,比如其中的某个函数,而不是将这个模块都一起更新替换。尽量做到小改动,以达到最终目的。至于更新的思路,我归纳为两点:将模...

2021-04-16 17:26:03 791

转载 snax学习

snax学习snax是一个方便 skynet 服务实现的简单框架。(简单是相对于 skynet 的 api 而言)在空余时间,看了下源码的实现,发现在实现上别具一格,让自己对 skynet的玩法上和 lua 的语法上有了更深的体会。个人对 snax 服务的理解:对 skynet.call、skynet.send 封装,能通过操作一张表的方法就能达到 call、send 的效果。 对于远程rpc调用,也能达到一样的效果。不需要显示的用 cluster.xxx 调用。 可以做到简单的热更新,

2021-04-16 17:24:10 271

转载 skynet.pack序列化学习

skynet.pack序列化学习引言对于序列化概念,如果是学习过Java的人,相信一定不会陌生,序列化就是将对象的数据、状态转换成能够存储或者传输的过程。目前常用的有Json、Protobuf、Thrift等。然而,skynet对于服务之间的通讯,数据序列化采用的是 skynet.pack,反序列化 skynet.unpack。skynet.pack和skynet.unpack那么skynet.pack 是以什么方式来序列化的呢?我们可以通过 skynet.lua 这个文件里面看到,s.

2021-04-16 17:22:36 601

Lua 5.3 参考手册.pdf

lua开发文档

2019-08-18

游戏服务端开发:如何精确计算MMO游戏技能攻击区域? - GameRes游资网.pdf

攻击范围计算

2019-08-15

ch02 深度Linux-C

2.1 基本要素2.2 函数2.3 数组与指针2.4 内存管理2.5 组合数据类型2.6 高级议题

2018-09-12

思考Shell命令

简单shell命令,自己的书的代码,为了保存

2018-09-12

uboot_tiny4412

tiny4412 ubooy 源码 可以正常使用

2018-06-27

空空如也

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

TA关注的人

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