自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Caused by SSLError(“Can‘t connect to HTTPS URL because the SSL module is not available.“) 详解

前言本文描述手动编译 python3.10 缺少 openssl 模块问题解决方案和几个小时解决这个问题的全过程。虽然我编译的是 python3.10,但是对于 python3.6、python3.8 应该同样适用。解决方案给新手说一下,我的服务器环境是 centos7,你们如果是其他环境,不要奇怪为啥某些命令用不了,百度一下。下面进入正题:安装 openssl-1.1.1wget https://www.openssl.org/source/openssl-1.1.1n.tar.gz --no

2022-03-21 11:50:13 42269 18

原创 lua字符串要点归纳

前言本文主要从《Lua 程序设计》第四版第四章字符串内容中提取关键点,并附带一些自己的使用经验。简介lua 语言中,字符使用8个 bit ,也就是一个字节来存储(ascii 是 7-bit),字符串是一串字节组成的序列。可以在字符串中存储任意的二进制数据。操作 100K 或者 1M 个字母组成的字符串的程序很常见。gc会负责字符串的分配和释放,开发人员无须关注。可以使用 # 操作符获取字符串占用的字节数。注意,在某些编码(非 8-bit 编码)中,这个值可能与字符串中字符的个数不同。字符串

2022-03-15 00:12:13 1414

原创 lua协程优秀实践:skynet

前言本文主要讲解 lua 协程的基本使用,和它在 skynet 这个框架中的实际应用。skynet简介可能有的读者学 lua 不是做游戏服务器的,没有了解过 skynet,简单介绍下,skynet 是 云风 大神开发的开源服务器引擎,应用于当下众多的游戏公司的服务器框架。lua协程是什么从多线程(multithreading)的角度看,协程(coroutine)与线程(thread)类似:协程是一系列的可执行语句,拥有自己的栈、局部变量和指令指针,同时协程又与其他协程共享了全局变量和其他几乎一切

2022-03-13 22:10:32 1238

原创 lua select,# 应用

前言#运算符取table的长度,不论在lua5.1,还是在lua5.3都不能保证结果的正确性,在某些场景下,我们可以使用select来替代#得到正确的结果。测试测试代码1local function test() return 1, nil, 3, 4, nil, 6, nil, nil, nil, 10, nil, 12, nilendlocal ret = {test()}print(string.format("ret的长度为: %d", #ret))输出root@lo

2022-03-12 15:06:42 4627

原创 skynet学习笔记之配置加载 load_config

skynet加载配置代码解析

2022-03-10 14:29:11 666

原创 skynet学习笔记之消息队列

skynet学习,消息队列,自旋锁

2022-03-08 18:22:48 596

原创 skynet学习笔记之源代码文件总览

skynet源代码文件分类,框架层次结构分析

2022-03-02 10:23:59 293

转载 多边形寻路算法简单介绍

多边形寻路算法补充几张挂了的图,转载自: 多边形寻路算法简单介绍之前有网友在我这里留言,问我怎样用自己的方法生成NavMesh。我也答应了有空的时候介绍一下,所以写了这篇博客。在说明生成的方法之前,需要先搞清楚几个概念性的问题:1、NavMesh是一种寻路的算法,我使用的是凸多边形寻路算法,你可以理解成和A星寻路差不多的算法,并不是只有Unity才有的。2、我使用的NavMesh寻路算法并不是Unity自带的那一套,而是全部自己写的,所以你在Unity的API里面不会找到对应的方法。3、NavM

2020-12-04 15:04:19 1145 2

原创 docker:pull 自己刚上传的镜像失败

要用Tags标签下的全名拉取。

2020-08-12 20:17:05 380

原创 skynet学习笔记之require xxx.core

发现不少公司都在用skynet框架,趁着周末就fork了风哥的仓库来学习学习,之前就stared过了,但是没实际使用过。单单这一句代码就收获良多:--lualib/sproto.lualocal core = require "sproto.core"一个小插曲:clone完仓库后, 执行 make linux 卡在了Makefile执行 clone jemalloc 仓库的地方,如下图所示:试了几次都卡住,我也不想去研究 git submodule update --init 这命

2020-06-14 00:48:01 1627

原创 代码查错:std::list.size()错误使用导致内存泄漏

在linux上用valgrind检查代码是否有内存泄漏时发现有5块资源申请没有释放:命令格式: valgrind --tool=memcheck --leak-check=full --show-reachable=yes./a.out==27676== 5,160 bytes in 5 blocks are definitely lost in loss record 1 of 1==27676== at 0x4C31556: operator new(unsigned long) (.

2020-06-11 15:29:15 1157

原创 lua table.sort() 源码阅读

源码解析,附有详细注释:/*ltablib.c*/static void auxsort (lua_State *L, int l, int u) { while (l < u) { /* for tail recursion */ int i, j; /* sort elements a[l], a[(l+u)/2] and a[u] */ //---------------------------------------------- //1.比较首

2020-06-04 10:45:55 1047

原创 linux write() 函数往文件直接写数字出现乱码分析

在线进制转换: 23673 = 0x5c79;0x5c = 92(对应asiic码中的 '\' );0x79 = 121(对应asiic码中的 'y')又由于服务器是小端模式,所以按地址write进文件的时候,低位字节在前,高位字节在后, 所以输出为 y\。write是按字节往文件写入,所以数值型要转为字符型后再写入。输入: pid = 23673;xxd -c 每一行显示的字节数 文件名。

2020-06-02 17:14:30 3988

转载 linux硬盘CHS介绍

转自:https://www.cnblogs.com/jswang/p/9071847.html硬盘基本知识(磁头、磁道、扇区、柱面)概述盘片(platter) 磁头(head) 磁道(track) 扇区(sector) 柱面(cylinder)盘片 片面 和 磁头硬盘中一般会有多个盘片组成,每个盘片包含两个面,每个盘面都对应地有一个读/写磁头。受到硬盘整体体积和生产成本的限制,盘片数量都受到限制,一般都在5片以内。盘片的编号自下向上从0开始,如最下边的盘片有0面和1面,再上一个盘

2020-05-31 21:04:03 709

转载 关系数据库设计之三范式大白话

简单来说: 首先,要知道范式是用于我们设计数据库表结构用的,所以它叫范式嘛,就是按这个套路来设计表的结构。 其次,要清楚 3NF的表肯定满足2NF和1NF的要求,2NF的表肯定满足1NF的要求,也就是1NF->2NF->3NF 要求越来越多,设计的表结构越来越严格。 然后,我们为啥要按范式来设计数据表呢,有什么好处呢,我的理解是关系型数据库嘛,描述的是关系,范式越严格的表设计表现出来的关系越直接越清楚。1NF: 每个字段下只表示一个属性。以下进货和销售字段都有两...

2020-05-29 10:16:03 1951

原创 LIST_ENTRY(ptr, type, member) 用法

#define LIST_ENTRY(ptr, type, member) \ ((type *)((char *)(ptr) -(unsigned long)(&((type *)0)->member)))使用这个宏的作用:ptr 为指向type类型结构体的一个成员的指针。 这个成员就是member。 通过这个宏我们就可以得到包含ptr指向的成员的结构体的首地址。通常的应用场景:#include<iostream>#include<...

2020-05-27 11:39:29 975

原创 编译报错 undefined reference to “vtable for child”

先说结果: 父类定义的虚函数,子类如果重载了 ,那就必须定义具体实现,不能弄个没有函数体的函数名放那里碰瓷。#include<iostream>using namespace std;class parent{public: parent(){ std::cout<<"parent constructor no param"<<std::endl; };private: parent(int a){ std::cout<<".

2020-05-25 23:13:29 793

原创 TCP套接字设置选项 TCP_NODELAY 定义在哪个头文件

<<UNIX网络编程>> 第三版 卷一7.3节:#include <netinet/tcp.h> /* for TCP_XXX defines */7.4节: 下面的套接字选项是由TCP已连接套接字从监听套接字继承来的: SO_DEBUG SO_DONTROUTE SO_KEEPALIVE SO_LINGER SO_OOBINLINE SO_RECVBUF SO_RCVLOWAT SO_SN...

2020-05-18 22:52:02 6203

原创 c++ 使用mongocxx api 必须创建并维护驱动的实例

官方文档: http://mongocxx.org/api/current/classmongocxx_1_1instance.htmlDetailed DescriptionClass representing an instance of the MongoDB driver.The constructor and destructor initialize and shut down...

2020-05-07 21:27:41 570

原创 代码查错:map变量存储内容被破坏

场景描述:linux通讯服务器工作时,接收第一个客户端消息能正常接收并处理完成;接收第二个客户端消息时就崩溃1. 发现问题:进程崩溃一般会产生core文件;查看coredump文件:gdb gameserver /corefile/core-xxx;[coredump文件使用的相关命令: ulimit -a 查看coredump文件是否允许创建 若结果为0,则表示关闭了此功能,不会生成...

2020-04-19 11:06:05 3548

转载 mysql/api/c++ 源码分析

转自: https://www.cnblogs.com/aquester/p/10346051.html 目录目录 11. 前言 12. 调用路径 23. MAX_PACKET_LENGTH宏 24. DBUG_RETURN宏 35. COM_QUERY枚举值 36. mysql_query函数 37.&nbsp...

2020-04-17 10:36:40 734

原创 mysql:排错技巧(1)general_log的使用

来源:<<MySql排错指南>>**作用:**从mysql.general_log(mysql自带的) 表里找到出错时执行的完整sql语句,提取出来手动执行,看看到底发生了什么。使用方法:注意事项:1.建议不要在生产环境使用,因为每条通过该数据库的语句都会被记录到general_log表里。2.使用前用 truncate 清理下 general_log。步骤一:...

2020-04-12 23:12:53 1684

空空如也

空空如也

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

TA关注的人

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