自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 wetab-AI手机版安装教程

随即浏览器自动新建一个页面为WeTab的新标签页,表示你已安装完成

2024-04-30 07:44:04 237

原创 skynet-skynet_module解析

中定义了 skynet 框架中用于管理模块的相关结构体和函数声明,框架可以灵活地扩展功能,实现高度的模块化。(1).c 的形式命名的,意味着在 skynet 框架中定义 C 模块时,建议使用 service_ 作为文件名的前缀,以便于在 Makefile 中进行统一的编译和链接处理。: 通过将模块的创建、初始化、释放等功能封装在模块管理器中,实现了模块化设计,提高了代码的可维护性和可扩展性。指向skynet模块的指针,用于与该服务相关联的模块管理。服务的句柄,用于标识唯一的服务实例。

2024-04-06 00:06:25 1011 1

原创 【shell常用指令整理】

less test.log | grep trace -C 5 | tail -n 10:查看test.log中所有匹配trace所在行的上下5行(只显示最后10行)less test.log | grep trace -C 5 | head -n 10:查看test.log中所有匹配trace所在行的上下5行(只显示开始10行)grep trace -C 5 test.log | head -n 10: 查看test.log中基于所以匹配到trace所在处上下5行的内容(只显示前10行)

2024-03-23 11:36:22 442

原创 【基于skynet的热更思考】

可以在运行时动态加载 Lua 代码文件,然后调用其中定义的函数,通过修改模块及其函数的upvalue,实现代码的动态注入和执行。这两段核心代码实现了一个动态加载和执行 Lua 代码的功能,通过构建环境表、加载代码并执行,最终返回执行结果。这个函数是实现动态注入功能的关键部分,能够实现在 Skynet 框架中动态加载并执行 Lua代码,完成注入热更脚本。用于调整传入的地址参数,对传入的地址参数进行转换,以保证将热更脚本注入到正确的服务地址。以二进制只读的方式读取文件内容。存放读取到的热更脚本内容。

2024-03-23 10:23:46 703

原创 skynet cluster集群笔记

skynet 是一个基于事件驱动的分布式游戏服务器框架,支持构建高性能、高并发的网络程序。skynet 中的节点是指运行着 skynet 实例的独立服务器。每个节点都有自己的地址和唯一标识符,可以运行不同的服务。节点之间通过网络连接进行通信和协作。在 skynet 中,服务是指运行在节点上的具体功能模块。每个服务都有一个唯一的服务名标识符,可以通过该标识符进行访问和通信。服务可以在同一节点上运行,也可以跨节点部署。skynet 中的集群是指多个节点连接在一起,共同组成一个分布式系统。

2024-03-10 13:28:44 1154 1

原创 skynet-debug console指令集整理

在skynet中,nc调试台是一个用于在运行中的skynet服务和调试器之间建立交互的工具。通过命令行与运行在skynet环境中的服务进行交互和调试,PS: 这里的nc调试台和linux系统中的netcat工具是不同的概念。

2024-01-18 12:03:30 883

原创 centos7部署redis

如果 redis 已经安装并运行,该命令将打开一个交互式的 redis 命令行终端。可以通过输入 ping 命令来验证 redis 是否响应。如果返回 enabled,则表示 Redis 已成功设置为默认启动。如果返回 disabled,则表示设置未成功。检查 Redis 是否已启动。最后,可以使用以下命令来检查 Redis 服务是否已经设置为默认启动。如果 Redis 正常运行,该命令将返回 PONG。或者,可以尝试重启 Redis 服务。

2023-12-12 22:42:06 485

原创 不重复抽取算法思考

洗牌算法&随机样本算法,实际应用中可以结合上述2种算法实现。

2023-11-29 11:49:39 153

原创 centos7部署MongoDB流程

将dbUser替换为你要创建的数据库用户的用户名,将dbPassword替换为所需的数据库用户密码,将mydatabase替换为目标数据库。将adminUser替换为你想要创建的管理员用户名,将adminPassword替换为所需的管理员密码。将adminUser替换为管理员用户名,将adminPassword替换为管理员密码。将启动MongoDB的Shell,可以在此执行MongoDB命令。如果成功登录,就表示账号创建成功。9. 连接MongoDB。

2023-11-25 23:00:23 1104

原创 虚拟机centos 7安装映射流程

在示例配置中,[global] 部分用于设置全局的 Samba 配置,[shared] 部分定义了一个名为 “share” 的共享目录及其权限设置。你可以根据自己的需求进行修改。编辑 Samba 的主要配置文件 /etc/samba/smb.conf。在配置文件中,你可以根据自己的需求来进行相应的配置。将 username 替换为你想要设置的用户名,按照提示输入密码。启动 Samba 服务并设置其在系统启动时自动启动。设置xshell鼠标功能,便于使用。按默认选择进行下一步即可。

2023-11-18 00:22:22 244 1

原创 服务器监控工具grafana的安装部署流程

点击 “Add data source”(添加数据源)按钮,选择你要监控的数据源类型,如 InfluxDB、Prometheus 等,并按照相应的设置进行配置。在浏览器中输入服务器的 IP 或域名,并指定 Grafana 的默认端口 3000(例如:http://your-server-ip:3000)。根据你的 CentOS 7 系统的架构(32 位或 64 位)选择下载相应的压缩包,一般是以 .tar.gz 或 .zip 格式提供。在页面中找到最新的版本,并根据你的操作系统选择对应的下载文件。

2023-11-17 10:24:12 265 1

原创 进程锁整理

如果有一个自旋锁,任务A获取了自旋锁,开始访问临界资源,在任务A释放自旋锁之前,任务B也想获取该自旋锁,则任务B在原地等待,直到任务A释放自旋锁,任务B在原地等待的时候,就是一个自旋的过程,在这个过程中,任务B没有产生阻塞,还是占用CPU的控制权,即处于忙等待的过程中。信号量是一个多值的锁,如果信号量的值是5,则说明同时最多五个进程可以获得信号量,进而访问临界资源,获得信号量,信号量的值减1,信号量的值减到0,说明信号量已经没有了。信号量——》睡眠锁(阻塞锁)V操作—释放一个信号量。自旋锁——》忙等待锁。

2023-11-07 10:31:24 100

转载 关于 Lua 内存泄漏的检测(转载)

前一阵开始和同事一起优化内存,首先是优化 Lua 内存,因为发现每次战斗完后 Lua 内存非常大,从 3M 左右在经过了10次左右的战斗后,会暴增到近 100M,很明显是有内存泄漏。然后我正式启动该工作,基本思路就是递归遍历内存中所有的数据,表,函数,协程,用户数据,查看未释放和笔误引起的全局变量泄漏;Lua 官方手册(最重要)

2023-10-31 15:33:46 144 1

原创 Navicat Premium过期刷新脚本

【代码】Navicat Premium过期刷新脚本。

2023-10-30 14:10:51 225 1

原创 lua中常见元方法整理

Lua 中的元方法是一组特殊的函数,它们以双下划线开头和结尾(例如 __add、__index、__tostring 等),用于重定义 Lua 中的操作符或操作。通过定义元方法,可以改变 Lua 对象(如表、用户数据等)的行为。通过设置元表的 __metatable 字段为一个表,可以限制对元表的访问和修改。定义对表的新索引操作的行为,当给一个表中不存在的索引赋值时触发。定义对表的索引操作的行为,当访问一个表中不存在的索引时触发。定义对象的迭代器行为,允许使用 pairs 和 ipairs 遍历对象。

2023-10-30 11:35:21 277 1

原创 skynet优化思考

skynet框架的网络模块是基于socket实现的,但socket本身有很多瓶颈,例如上下文切换,内存拷贝等,因此,可以尝试使用更高性能的网络库(如Libuv),以提高网络性能。skynet框架是基于协程的,通信也是通过协程来实现的,在高并发的情况下,网络通信可能会成为瓶颈,可以考虑对通信机制进行优化,比如使用IO多路复用技术等。对于skynet中的actors,怎样合理分配资源的问题也是需要考虑的,可以通过对调度算法进行优化,使其合理使用CPU和内存资源,从而提高框架的性能。使用更高性能的网络库。

2023-10-27 17:18:47 214 1

原创 lua-kcp文件分析-lutil.c

lutil 模块是一个用于 Lua 程序的辅助模块。它包含了一些功能函数,用于执行与操作系统和网络字节序相关的操作。使用来执行一些计时、休眠和网络数据转换的操作,以满足应用程序的需求。

2023-10-26 11:55:19 47

原创 lua-kcp文件分析-latencysm.lua

与 “testkcp” 模块进行集成,以实现延迟模拟的功能。模拟的延迟和丢包情况可以帮助测试和评估 “testkcp” 的性能和可靠性,用于测试和调试网络应用程序的性能和稳定性。testkcp.lua文件分析可见上一篇lua-kcp文件分析-testkcp.lua。

2023-10-26 10:48:00 39

原创 lua-kcp文件分析-testkcp.lua

testkcp.lua为lua-kcp项目的测试脚本入口文件,它主要通过模拟网络和 KCP 实例的收发数据,对比默认/普通/快速三种模式来进行 KCP 的测试,并显示相关的统计信息。

2023-10-26 10:16:01 122

原创 kcp-lua代码组织结构

KCP的 Lua扩展,用于 Lua服务器。

2023-10-25 20:54:31 119 2

原创 KCP-可靠传输协议介绍

通过调用 ikcp_peeksize 函数可以获取已接收但尚未处理的数据包大小,当有可读数据时,可以通过 ikcp_recv 函数从 KCP 实例中接收已解码的数据。在 handle_received_data 函数中,通过调用 KCP 实例的 recv 方法,可以从 KCP 实例中接收到已经解码的完整数据包,并进行进一步的处理。TCP 提供了可靠的传输但延迟较高,UDP 提供了较低的延迟但不可靠,而 KCP结合了两者的优点,在不可靠的网络环境中提供了较低的延迟和较高的可靠性。

2023-10-24 14:59:38 580

原创 网络编程中名词整理

TCP(Transmission Control Protocol):TCP 是传输控制协议,它是一种面向连接的、可靠的、基于字节流的传输协议。HTTPS(Hypertext Transfer Protocol Secure):HTTPS 是安全的超文本传输协议,在 HTTP 的基础上加入了 SSL/TLS 加密机制,用于保护通信过程中的数据安全。UDP(User Datagram Protocol):UDP 是用户数据报协议,它是一种无连接的、不可靠的、基于数据报的传输协议。

2023-10-23 20:19:20 148 1

原创 哈夫曼算法-lua版实现

哈夫曼编码通过利用字符出现频率,将较常见的字符用较短的编码表示,从而实现数据的压缩和解压缩。哈夫曼编码(Huffman Coding)是一种基于字符频率进行数据压缩的算法,由David A. Huffman于1952年提出。该算法利用字符出现的频率信息,将出现频率较高的字符用较短的编码表示,而出现频率较低的字符用较长的编码表示,从而有效地减小了数据的存储或传输大小。哈夫曼编码的基本思想如下:统计字符频率:遍历待压缩的数据,统计每个字符的出现频率。构建哈夫曼树:根据字符频率,构建一个哈夫曼树。

2023-10-20 20:25:26 149 1

原创 常见配置格式整理

【代码】常见配置格式整理。

2023-10-19 15:04:29 114 1

原创 邮件服设计

给玩家发送一封邮件,包括邮件类型,邮件标题、邮件内容、邮件奖励(奖励领取状态)

2023-10-18 20:35:45 15

原创 序列化工具-cap’n proto简单使用介绍

cap’n proto(读作"cap’n proto" 或 “captainproto”)是一个高性能的二进制数据序列化和传输协议,由GitHub创始人之一 Kenton Varda开发。它旨在提供一种快速、高效、跨语言的数据交换格式,适用于网络通信、持久化存储和进程间通信等需要高效传输和存储大量数据的应用场景。

2023-10-18 12:22:36 469

原创 DB服设计

skynet层提供的一个用于连接和操作SQL数据库的模块, 模块允许在 skynet 中与 SQL 数据库进行交互。

2023-10-16 17:09:10 38

原创 数据加解密理解

当用户输入密码进行验证时,系统会将用户输入的密码进行散列运算,然后与存储的散列值进行比较,从而验证密码的正确性。在混合加密中,非对称加密算法用于密钥的安全分发和交换,而对称加密算法用于实际数据的加密和解密。根据安全需求和数据类型,选择适合的加解密算法。为了增加密钥散列的安全性,现在通常推荐使用更强大的散列函数,如SHA-256,并结合盐值(Salt)和迭代次数(Iteration)来增加破解的难度。答:数字签名的过程中,公钥和签名都是公开的,任何人都可以获取和验证签名,因此数字签名并不能保证消息的保密性。

2023-10-09 14:48:39 325 1

空空如也

空空如也

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

TA关注的人

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