自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 findmnt、lsblk、mount 命令查看磁盘、目录挂载、挂载点以及文件系统格式等情况

findmnt 展示出了目标挂载点( TARGET )、源设备( SOURCE )、文件系统类型( FSTYPE )以及相关的挂载选项( OPTIONS ),当然我们知道linux 一切都是以 / 为基础进行相关的挂载操作,其他设备或者文件系统都挂载在根下面的不同目录下。df 命令被用来报告文件系统的磁盘空间使用情况。这里也通过df -i 命令 一可以查看inode使用情况,二可以查看挂载点和磁盘关系。根( / )文件系统的类型是 xfs。运行下面的命令来找出某个特定分区的文件系统类型。

2024-08-26 09:48:22 857

原创 skynet源码阅读<7>--死循环检测

除了for循环之外的其它循环,比如while或repeat,在LUA中都是通过条件判断结合JMP跳转来实现的,因此也是可以被检查报错的。至此,如何打断死循环并报错跳出的处理我们已经清楚了,可是新的问题又来了,skynet中是如何检测到死循环发生的呢?这样,当线程X处理消息陷入长久的阻滞时,monitor线程便会检测到X正在处理消息(skynet_monitor->destination不为空)并且version未改变,给出警告。可以看到,signal为0时,将skynet_sig_L置空。

2024-07-28 16:47:35 511

转载 莫行skynet源码阅读<7>--死循环检测

skynet死循环

2024-07-28 16:45:57 25

原创 win11关闭自动更新

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

2023-12-12 10:45:11 154

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

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

2023-11-12 03:31:05 135

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

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

2023-11-12 03:28:32 344

转载 常用设计模式

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

2023-11-12 02:17:54 88

转载 C++ 指针

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

2023-11-12 02:14:30 41

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

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

2023-04-20 15:00:23 299

原创 libevent学习

libevent

2023-03-25 15:03:48 544

转载 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 300

原创 gdb学习

gdb

2023-03-23 10:10:07 422

原创 C++学习2

C++ 智能指针

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

原创 C++学习

C++学习

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

原创 rust的struct

rust的struct

2022-09-29 11:52:21 914

原创 rust的切片

rust切片

2022-09-27 14:22:04 419

原创 rust的所有权与引用

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

2022-09-27 10:19:24 725

原创 rus的t数据结构

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

2022-09-27 10:16:05 544

原创 rust的安装和指令

rust 安装 指令

2022-09-27 10:14:23 2243

转载 Lua反射调试

Lua反射

2022-06-21 11:10:26 512

转载 skynet 服务相关api

skynet 服务相关api

2022-06-20 16:50:28 1102

原创 skynet分析

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

2022-06-20 15:13:30 115

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

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

2022-06-20 15:09:23 527

原创 go安装配置

go

2022-06-12 17:04:16 465

转载 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 368

转载 函数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 3440 2

原创 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 3135

原创 skynet学习(一)

...

2021-06-16 12:03:48 143

转载 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 438

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

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

2021-06-07 17:35:55 82

原创 Linux 信号

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

2021-06-07 15:19:06 76

原创 jemalloc内存占用问题

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

2021-06-05 11:49:40 475

转载 使用 jemalloc profile memory

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

2021-06-05 11:26:12 2213

转载 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 1109

原创 skynet原理解析

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

2021-06-02 20:54:01 171

转载 Skynet 服务创建流程

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

2021-06-02 20:51:24 1130

转载 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 380

转载 skynet 学习笔记

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

2021-06-02 20:10:23 504

原创 skynet服务的本质与缺陷

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

2021-04-29 20:30:07 156

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

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

2021-04-28 10:23:20 535

Lua 5.3 参考手册.pdf

lua开发文档

2019-08-18

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关注的人

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