- 博客(59)
- 收藏
- 关注
原创 [unity 点击事件] 区域响应点击事件,排除子节点区域,Raycast Target 应用
从这里可以看出,Raycast Target 选项对于同级对象,只有最上层对象会响应点击,但是为了让点击事件能传递下去,该选项不会阻止下层节点的响应。一开始我是在弹窗主节点上挂载了一个 button 组件,该 button 注册的点击事件中关闭该弹窗。第一种方案,是主节点不用 button 来响应关闭事件,而是继承 IPointerClickHandler,重写 OnPointerClick 方法来响应点击事件,在响应函数中检查点击区域是否在子节点区域外,在区域外才执行关闭逻辑。这种方法可行,但是不优雅。
2025-03-24 18:04:59
369
原创 [unity 组件] Content Size Fitter 横向填充不满解决办法
可以看到,当只有3个或者4个元素的时候,布局组件并没有将横向宽度占满来布局。之所以有此困惑的原因是我以为他的布局策略是,从左到右,从上至下,尽量占满空间,不够了再换行,其实不然。我想列数固定,可以设置 Grid Layout Group 组件的列数为固定值。5到6个元素时,横向变成三列。10个元素后,扩展到了四列。一直到9个元素,都是如此。
2025-03-20 10:54:24
211
原创 svn 使用记录
设置忽略指定后缀文件, 例如忽略 .lc 后缀的文件, -R 是递归文件夹,path 为指定的起始目录。设置后需要提交属性修改,svn status 会发现 path 下面的每个文件夹都有修改。所以要更新 svn 版本的话,需要备份之前版本的 svn,以供旧工程使用。svn 更新版本后可能会导致之前版本下拉取的工程无法正常使用 svn。svn propget svn:ignore -R 查看忽略设置。还原某个文件到指定版本。
2024-04-09 15:41:52
447
原创 linux 安装/升级 svn
/configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-lz4=internal --with-utf8proc=internal 编译成功。./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util 重新编译,报错,提示缺少 lz4 压缩库,只需要添加个选项即可。安装 apr-util。
2024-03-14 16:09:40
1284
原创 安装/升级 gcc
/configure --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local --enable-multilib 这回配置成功了。这里应该是选择是否支持对 32-bit 程序的编译支持,如果需要,则要添加 --enable-multilib 选项。./configure --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local 继续报错。
2024-03-06 14:03:58
1851
2
原创 skynet 中 mongo 模块运作的底层原理解析
这篇文章总结 skynet 中 mongo 的接入流程,代码解析,读完它相信你对 skynet 中的 mongo 调用会更得心应手。在上一节中我们没有详细的拆解 bson_encode 和 bson_encode_order 两个函数,他们的作用已经介绍过,读者有兴趣可以自己细看一下代码,要读懂其中的序列化过程,需要参考文末的 BSON 官方文档。
2023-12-09 21:32:39
647
原创 Lua gc 机制版本迭代过程简述
这样在一方面的确是有不足,使得 Lua 的内存管理依赖具体操作系统环境的内存管理机制的性能好坏,但是另一方面,Lua 通常是和 c 或其他语言搭配使用,这样开发人员可以为应用使用一套分配机制,而不会导致在应用中存在两种分配机制,一种服务于 Lua,一种服务于另外的语言。Lua 选择的是垃圾回收的方案。设置元表的操作,Lua 5.4 中已经修改为当被设置元表的对象是黑色并且元表是白色的情况下,将元表颜色向前转换为灰色,这是因为元表通常会被分配给许多不同的对象,并且元表比其他对象更加稳定。
2023-07-20 20:08:35
935
原创 linux 创建一个线程的基础开销探讨
测试方法比较笨,每修改一次线程数,就重新编译一次,再运行。在程序运行过程中,查看到进程 pid,然后通过以下命令查看进程的运行状态信息输出到以线程数为名字的日志文件中,最后用 vimdiff 对比文件来查看内存上的差异。
2023-07-07 23:48:22
632
原创 pip 显示安装了软件,但是实际运行找不到命令
发现 flask 安装到 python 安装路径下了,没有自动 copy 到例如 /usr/local/bin 等全局命令路径。因为刚设置好软件安装位置,需要重新安装一下要用的软件,这里是 pip install flask。设置安装位置后系统会提示修改的内容写入到了配置文件,这里告诉了配置路径,以后想修改配置也可以直接编辑该文件。修改 pip 配置,将软件安装目录指定到 /usr/local/bin 等已经在 path 中的路径。将 /usr/local/python38/bin 添加到 path 中。
2023-07-06 11:04:24
3093
原创 进程性能分析工具 pidstat 和用 python 的 matplotlib 库输出分析图表
pidstat 是sysstat 工具集的一员。专门用于统计进程的各项指标。yum install -y sysstat # 安装 systemctl enable --now sysstat # 启用-C name 表示采样进程的 Command 包含 name 字段(name 支持正则表达式),Command 为进程名字:-p pid 表示指定采样进程的 pid。使用该选项可以更精准的指定采样目标。-u 采样 cpu 使用率,包含了 cpu 百分比,分为内核占用,用户占用,总占用。
2023-05-19 17:31:09
1571
4
原创 python3.8 安装 ssl 模块 和 _ctypes 模块
rpath 是 gcc 的一个编译选项,用于指定程序运行时动态链接库的搜索路径。当程序运行时需要动态链接库时,系统会在指定的路径中搜索动态链接库。其中,-L 选项指定编译器在编译时搜索库文件的路径,-l 选项指定需要链接的库文件名。-Wl,-rpath=/usr/local/lib 选项指定程序运行时搜索动态链接库的路径。这样,当程序 a.out 运行时,系统会在 /usr/local/lib 目录下搜索 libfoo.so 动态链接库。
2023-05-19 00:04:45
3991
2
原创 GNU C 语言的常用扩展
GCC 的 C 编译器除了支持 ANSI C 标准之外,还对 C 语言进行了很多的扩充。这些扩充为代码优化、目标代码布局以及安全检查等提供了很强的支持,因此支持 GNU 扩展的 C 语言称为 GNU C 语言。Linux 内核采用 GCC 编译器,所以 Linux 内核的代码自然使用了 GCC 的很多新的扩充特性。本节将介绍 GCC C 语言一些扩充的新特性,希望读者在学习 Linux 内核时特别留意。
2023-05-18 11:25:41
1926
原创 浅谈 LRU
LRU(Least Recently Used) 一般翻译为"最近最少使用",是一种常见的缓存淘汰算法,在计算机底层和操作系统设计中被广泛应用。因为是缓存淘汰算法,所以可以理解为"淘汰最久(最远)未使用"的缓存。
2023-05-06 09:48:55
675
原创 内存快速检查工具AddressSanitizer机制简介
小结参考<<AddressSanitizer: A Fast Address Sanity Checker>>Konstantin Serebryany, Derek Bruening, Alexander Potapenko, Dmitry Vyukov Google{kcc,bruening,glider,dvyukov}@google.com
2023-04-27 11:11:16
149
原创 c语言exit退出前打印堆栈
atexit() 调用成功时,会注册指定的函数作为终止函数,在程序正常结束时(即进程通过调用 exit() 或从 main() 函数返回)运行。如果进程调用了 exec 函数(exec函数族,用于在当前进程中执行一个新的程序),会清空所注册的函数列表(这些函数不再存在于新进程的地址空间中)。通过信号结束的进程也不会调用这些注册的函数。注册的函数不能调用 exit(),否则会导致递归调用死循环。系统调用 atexit() 是由 POSIX 1003.1-2001 所定义,Linux 也实现了该函数。
2023-04-20 21:23:01
441
原创 c 语言 rdtsc 详解(from chat-GPT4)
rdtsc 指令是 x86 架构下的一条汇编指令,全称 “Read Time-Stamp Counter”,用于读取时间戳计数器(TSC)。时间戳计数器是一个 64 位的寄存器,CPU 的每个时钟周期会对其进行加一。rdtsc 通过读取这个计数器,可以测量程序某段代码的执行时间。
2023-03-23 11:22:14
1660
原创 linux 编译 c++ 静态库(包含类的实例化)给 c 程序调用
c++ 是面向对象的编程语言,比较方便实现某些第三方库,比如翻译其他面向对象语言的代码,比 c 语言要方便的多。而 c 语言跟 c++ 很亲和,可以用 c++ 来实现,编译成静态库,提供给 c 程序使用。至于用静态库而不是动态库,是因为静态库会打包到 c 程序中,不需要依赖运行场景中是否有该库的存在,方便部署。该文件只用于封装第三方库提供的 api 为c语言函数风格,不需要实现第三方库的具体功能,不使用第三方库的 c++ 类型,比如 class myclass。在这些文件中实现第三方库的所有功能。
2023-01-08 11:18:45
1326
原创 centos7 安装 zsh + fzf(历史命令搜索神器)
zsh Tab 补全功能强大,主题定制,开发的时候使用起来很舒服。后续再加上 tmux,分session,分window,分panel,终端的使用更加灵活有效率。
2022-12-13 23:48:07
1269
原创 vim 使用记录
如题,一种是按到 ctrl + s ,可以 ctrl + q 解锁。今天遇到另外一种索死的情况,发现原因是输入法不小心切换成全角了,改成半角后 vim 可以正常使用了。
2022-05-30 13:07:10
506
原创 python简单画图脚本
文章目录前言环境准备APIpython 脚本lua 脚本结语前言调试寻路模块的时候,发现需要一个简单输出可视化路径信息的脚本,这样调试起来更方便。这种工具脚本 python 肯定是首选,因为它的库实在是很多。经过筛选呢,发现 matplotlib.pyplot 库可以满足需求。引入这个库,调用几个 api ,简单实现了,输入一组坐标,输出一个图形文件,带有横纵坐标轴和路点以及路点间的连线。形如:环境准备基础设施:python3;pip3pip install matplotlib 安装库
2022-04-17 15:00:57
2023
原创 skynet学习笔记之http服务搭建3
文章目录前言架构介绍问题解决办法关键代码前言上周用 master/slave 机制搭建了个带有网关的 http 服务器,经过几天折腾,本文介绍用 skynet 自带的 c 服务 gate 来搭建 http 服务器的网关,并且做到在 c 层正向和反向代理 http 数据包。我对该 gate 服务作为基础的 c 服务放在那却没有被 example 下的例子用到感到很奇怪,如果有人知道哪个服务用到了可以告诉我一下吗,对它的详细介绍放到下一篇文章。为了实现 c 层代理 http 协议,引入了 nodejs 的
2022-04-14 11:18:22
3330
原创 skynet学习笔记之http服务搭建2
文章目录前言思路目录结构代码结语参考文章前言前不久尝试了 http 服务的搭建,现在为它搭建一个网关。看了 skynet wiki 中的几篇涉及 master/slave 的文章,以及 lualib/cmaster.lua 和 lualib/cslave.lua 的代码后,实现了第一个方案,gate 和 game 处于一个集群中,gate 和 game 间通过 slave/harbor 服务来间接通信。思路大致架构图:设计方案:利用 skynet 的 master/slave 机制,mast
2022-04-09 17:12:38
2418
原创 skynet学习笔记之http服务搭建
文章目录前言环境准备http 服务搭建流程skynet 日志服务介绍给日志输出添加颜色结语前言今天尝试了下 skynet 提供的 http 服务,服务代码全部包含在 examples/simpleweb.lua 文件中,服务介绍见 skynet_wiki-http。skynet 通过 daemon = “./skynet.pid” 设置进程 id 的保存文件名,开启后台模式,我用的前台模式,所以注释掉这个配置项即可。环境准备centos 7 服务器,我是笔记本里装了个 centos 7 镜像的虚
2022-04-03 16:40:24
1560
原创 shell命令连接mongo并执行操作
场景一:shell 命令连接 mongo,且删除指定数据库场景二:shell 命令连接 mongo,将查询结果输出到文件场景三:shell 命令连接 mongo,导入 xxx.gz 数据库文件生成对应数据库
2022-03-31 10:23:15
5120
原创 C语言 const 用法
前言本文介绍 const 的几种使用方式。正文const char p 与 char const p 等价, 都是限定了字符类型变量 p 所在的内存数据不可更改。#include <stdio.h>#include <stdlib.h>#include <string.h>int main() { const char p; char const q; p = 'p'; q = 'q'; return 0;}
2022-03-30 23:23:10
1079
原创 skynet学习笔记之makefile
前言本文解析skynet的makefile执行流程,格式为 “文件名,代码;讲解” 或者 “文件名,讲解,下一行为代码”流程1:只输入 make 的情况 1. platform.mk,PLAT ?= none;此时 PLAT 没有设置,所以 none 赋值给 PLAT 2. platform.mk;MAKE 是 make 程序设置的环境变量,值为 make,此时 PLAT = none,构建 default 这个目标要执行的命令是 make none,由于 default 没有依赖对象,所以直接执行
2022-03-27 14:39:21
1860
原创 skynet学习笔记之服务管理 skynet_handle
前言本文总结对于 skynet 服务管理器,skynet_handle.c 源文件的学习。总览设计思路为每一个服务绑定一个永不重复(即使模块退出)的数字 id 作为其 handle服务器管理器完成的核心工作存放所有服务对象,skynet 用服务对象的指针数组作为容器,限定了单进程内最大容纳服务数为 2^24 个,之所以是不是 2^32 次方,是因为高 8 位的 2 个字节用于存放用于远程服务的节点 id。初始容器大小为 4,然后当服务数超过容器当前大小时,按当前大小的 2 倍来扩容。每
2022-03-22 14:37:30
525
原创 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
41439
18
原创 lua字符串要点归纳
前言本文主要从《Lua 程序设计》第四版第四章字符串内容中提取关键点,并附带一些自己的使用经验。简介lua 语言中,字符使用8个 bit ,也就是一个字节来存储(ascii 是 7-bit),字符串是一串字节组成的序列。可以在字符串中存储任意的二进制数据。操作 100K 或者 1M 个字母组成的字符串的程序很常见。gc会负责字符串的分配和释放,开发人员无须关注。可以使用 # 操作符获取字符串占用的字节数。注意,在某些编码(非 8-bit 编码)中,这个值可能与字符串中字符的个数不同。字符串
2022-03-15 00:12:13
1289
原创 lua协程优秀实践:skynet
前言本文主要讲解 lua 协程的基本使用,和它在 skynet 这个框架中的实际应用。skynet简介可能有的读者学 lua 不是做游戏服务器的,没有了解过 skynet,简单介绍下,skynet 是 云风 大神开发的开源服务器引擎,应用于当下众多的游戏公司的服务器框架。lua协程是什么从多线程(multithreading)的角度看,协程(coroutine)与线程(thread)类似:协程是一系列的可执行语句,拥有自己的栈、局部变量和指令指针,同时协程又与其他协程共享了全局变量和其他几乎一切
2022-03-13 22:10:32
1106
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人