自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tkokof1的专栏

int life(void* params) { // TODO: implement }

原创 Lua 5.4 新特性概览

本文简单介绍了一些 Lua 5.4 的新特性 Lua 5.4 正式发布了,很多朋友应该会比较好奇 Lua 5.4 与之前版本的区别,本文就此简单介绍一些 Lua 5.4 的新特性. 完整的 Lua 5.4 变更列表可以在这里找到,本文我们仅简单概览下其中主要的几点变化: 分代 GC 之前 Lua...

2020-07-08 14:35:36 82 0

原创 ZeroBrane Studio 简易适配 Lua 5.4

本文介绍了 ZeroBrane Studio 简易适配 Lua 5.4 的一些细节 Lua 5.4 已经到 rc4 版本了,相信不少朋友都已经有所尝试,最简单的测试方法应该就是手动编译一个 lua.exe,然后直接命令行执行脚本: lua.exe lua_script_path 当然,使用 I...

2020-06-03 20:07:30 78 0

原创 编程小知识 之 杂记两则

本文简述了之前遇到的两则编程杂记 隐式字符串字面量合并 之前看到一段 C/C++ 代码: void func(const char* str) { // implementation ... } func("string" "params"); ...

2020-05-31 10:10:49 239 0

原创 PS4 Pro 拆机记

本文是自己拆解 PS4 Pro 的一些记录 起因 过年的时候孩子玩闹,将一张银行卡塞进了 PS4 Pro 的光驱里,导致整个光驱都罢工了,一开始以为光驱进入异物可能是常见现象,修理方法应该不难,没想搜索了一番信息下来,似乎只有两个解决方法(并且两个方法都不简单…): 送修 拆机 自己简单尝试...

2020-05-04 22:04:58 255 0

原创 Sweet Snippet 之 BitMask

本文简述了 BitMask 的(一种)使用场景和实现方法 游戏开发中往往会遇到不同游戏逻辑触发相同游戏操作的情况,举个简单的例子:在播放游戏过场动画时,我们往往需要隐藏游戏UI;而当我们进行游戏截屏时,往往也需要隐藏游戏UI. 假设显示/隐藏游戏UI的接口如下: void SetUIActive...

2020-04-30 21:01:11 68 0

原创 Sweet Snippet 之 Timeslice Update

本文简述了一种基于时间片(Timeslice)的对象更新(Update)方法 游戏开发中,我们一般都要进行大量的对象更新(Update)操作,拿 Unity 中的 MonoBehavior 举例,其便支持定义专门的 Update 方法来处理相关 Component 的更新: using Unit...

2020-04-29 19:02:00 92 0

原创 编程小知识 之 序列 rotate
原力计划

本文简述了 序列 rotate 的一些知识 基础 本篇文章中所说的 序列 rotate(旋转) 可能跟我们平常理解的 图像 rotate(旋转) 不太相同,所谓 序列 rotate,其实就是一种调整序列元素顺序的方法,而要理解这种方法之所以称为 rotate(旋转),我们需要将序列想象为一个环形...

2020-03-26 20:53:42 86 0

原创 Sweet Snippet 之 方差计算

方差计算的简单实现 在概率统计中,方差用于衡量一组数据的离散程度,相关的计算公式如下(总体方差): μ=1N∑i=1Nxiσ2=1N∑i=1N(xi−μ)2 \begin{aligned} &\mu = \frac{1}{N}\sum_{i = 1}^{N}x_i \\ ...

2020-02-16 16:43:18 452 0

原创 .NET GC 精要(七)

本文讲述了 .NET GC 的一些细节知识,内容大部分来自于书籍 Under the Hood of .NET Memory Management (注:本文假设你了解 .NET 的基础知识,譬如值类型,引用类型等) 深入 并发执行模式(工作站模式下)的一点细节 之前讲到工作站模式分为 并发 和...

2020-02-09 10:23:46 134 0

原创 .NET GC 精要(六)

本文讲述了 .NET GC 的一些细节知识,内容大部分来自于书籍 Under the Hood of .NET Memory Management (注:本文假设你了解 .NET 的基础知识,譬如值类型,引用类型等) 深入 内存段(memory segment)的申请 每个托管进程(manage...

2020-02-06 10:02:02 173 0

原创 .NET GC 精要(五)

本文讲述了 .NET GC 的一些细节知识,内容大部分来自于书籍 Under the Hood of .NET Memory Management (注:本文假设你了解 .NET 的基础知识,譬如值类型,引用类型等) 深入 之前讲过 .NET GC 出于效率等因素的考虑,对 SOH(Small ...

2020-02-01 08:54:10 155 0

原创 .NET GC 精要(四)

本文讲述了 .NET GC 的一些细节知识,内容大部分来自于书籍 Under the Hood of .NET Memory Management (注:本文假设你了解 .NET 的基础知识,譬如值类型,引用类型等) 进阶 之前在讲述 GC 分代回收的时候,我们只是了解了一下 SOH(Small...

2020-01-30 09:04:07 152 0

原创 .NET GC 精要(三)

本文讲述了 .NET GC 的一些细节知识,内容大部分来自于书籍 Under the Hood of .NET Memory Management (注:本文假设你了解 .NET 的基础知识,譬如值类型,引用类型等) 进阶 .NET 为了处理非托管资源(unmanaged resource)的释...

2020-01-27 10:50:13 259 0

原创 .NET GC 精要(二)

本文讲述了 .NET GC 的一些细节知识,内容大部分来自于书籍 Under the Hood of .NET Memory Management (注:本文假设你了解 .NET 的基础知识,譬如值类型,引用类型等) 进阶 之前我们讲述 SOH(Small Object Heap) 时提过其会执...

2020-01-25 12:09:54 1513 0

原创 .NET GC 精要(一)

本文讲述了 .NET GC 的一些细节知识,内容大部分来自于书籍 Under the Hood of .NET Memory Management (注:本文假设你了解 .NET 的基础知识,譬如值类型,引用类型等) 基础 稍有 .NET 基础的朋友一定知道 .NET GC 管理的是托管堆(ma...

2020-01-22 16:15:11 1949 0

原创 Unity 中进行数据压缩的一种方法

本文简单描述了一种在 Unity 中进行数据压缩的方法 一般的游戏开发中,数据压缩往往跟资源加载等底层机制关系密切,在上层逻辑中的使用则并不常见. .Net 中, System.IO.Compression命名空间下就原生提供了可以进行数据(解)压缩的各种类型(方法),譬如 DeflateStr...

2020-01-11 14:31:26 823 0

原创 编程小知识之 Lua 长度运算符(#)

本文讲解了 Lua 中长度运算符(#)的一些知识 (注: 以下讨论基于 Lua 5.3.5 版本) 基础 Lua 中的长度运算符(#)可以用于获取 table 的"长度",举个简单的例子: local t = { 1, 1, 1 } print(#t) -- 3 但其实对于...

2019-12-20 17:52:47 235 0

原创 编程小知识之 虚假唤醒(spurious wakeup)

本文简单介绍了一些 虚假唤醒(spurious wakeup) 相关的知识 (注: 本文假设读者对多线程开发有一定了解) 高层次的多线程编程中,条件变量是个常见的同步方法,跟传统仅使用互斥量的方法相比,条件变量可以减少锁的竞争. 拿 Pthread 举例,一个常见的条件变量的使用示例大概是这个样...

2019-12-16 20:07:16 299 0

原创 编程小知识之 Dithering

本文简单介绍了 Dithering(抖动) 的一些知识 图形后处理有一种操作称为 Dithering(抖动),所谓 Dithering,就是一种能够在较小色彩空间上"模拟出"较大色彩空间的图像处理方法,说的有些抽象,我们来举个例子: 假设我们需要在显示器上显示以下图片(图片来...

2019-11-29 19:46:56 152 0

原创 编程小知识之 JIT执行

本文简单介绍了 JIT 如何动态执行 native code 的知识 自己之前对 DEP(数据执行保护) 有些依稀印象,简单认为在一般情况下,程序是不能动态执行 native code 的,后来突然想到 JIT(简单理解就是一种动态生成并执行 native code 的技术),虽然 JIT 的关...

2019-11-21 11:28:30 134 0

原创 编程小知识之 Lua 函数定义

本文简单介绍了 Lua 函数定义的一点知识 在 Lua 中,我们定义函数的方式和在 C 语言中定义函数的方式很像: local function func_name(func_param) -- func_body end 但实际上,这种定义方式仅是 Lua 提供的语法糖,实际执行时...

2019-11-20 20:26:34 114 0

原创 编程小知识之 循环依赖

本文简述了一些循环依赖的知识~ 之前工作中遇到了循环依赖的问题,在此简单记录一些相关的知识~ 拿 Lua(5.3) 举例,如果我们循环 require 模块,就会触发堆栈溢出错误: -- module_1.lua require("module_2") return {} ...

2019-10-30 11:11:43 161 0

原创 编程小知识之 自增(自减)运算符

本文讲述了 C/C++ 中 自增(自减)运算符 的一些知识~ 自增(自减)运算符应该是 C/C++ 编程中的基础知识了,而自增(自减)运算符又有两种形式,分别是 前置自增(自减) 和 后置自增(自减) (出于简单考虑,后文仅以自增运算符进行举例讲解). 譬如表达式 ++i 和 i++ 就分别表示...

2019-10-29 11:04:28 170 0

原创 工程代码不简单

本文简述了一些自己对于工程代码的认识 经历了多年的开发之后,有些一开始显得高大上的话题,因为遇到的次数多了,慢慢的也变的平常起来,而平常的事物往往又会给人简单的感觉,于是那些原本高大上的话题,渐渐的也变的"简单"起来… 但很多时候,我们只是熟稔了这些话题的基本概念,所谓的&q...

2019-10-24 21:07:42 279 0

原创 编程小知识之 Object.Destroy

本文简单描述了 Unity 中 Object.Destroy 的一些知识~ Object.Destroy 应该是 Unity 开发中最常用的函数之一了,对于该函数的一个基本认知是: Object.Destroy 是异步执行的,并不会立即生效 Object.Destroy 的异步特性让下面这种...

2019-10-23 12:12:05 141 0

原创 程序面试题之我见

本文简述了自己对于程序面试题的一些看法 前些年程序面试题比较流行,自然也涌现了不少网红试题,这里简单讲解一下,也顺道说说自己的看法~ 链表 简单起见,以下讨论的链表都是单链表 如何判断两条(不存在环)链表有交点 ? 如果有交点,如何找出交点 ? 存在交点的两条(不存在环)链表,其尾部节点...

2019-09-30 20:01:15 3428 2

原创 买房应该全款还是贷款

一般都是发些技术博文,这篇随性讲点其他的内容(买房)~ 不经意看到一个视频,内容大概是一人准备全款买房,但销售员安利他贷款买房(建议他用首付之外的钱做其他投资),说的似乎也有一些道理,突然想到买房应该全款还是贷款确实是个有意思的问题,这里简单分析一下这个问题~ 首先我们简化一下买房这个问题,不考...

2019-09-21 12:54:17 319 1

原创 Modern C++ 书籍推荐

本文介绍了一些 Modern C++ 的相关书籍 整理了一份 Modern C++(现代 C++,意指使用 C++11 及之后标准特性的 C++),有兴趣的朋友可以参考一下(下文介绍的一些书籍没有给出资源链接,后续会持续更新)~ 基础 The C++ Programming Language ...

2019-09-14 21:43:43 1215 2

原创 数学小记之常用数值

本文简单列举了一些常用数值,熟记这些数值可以方便我们进行数学运算 π\piπ 相关的数值想必大部分朋友都比较熟悉了: π≈3.14π2≈1.572π≈6.28 \begin{aligned} & \pi \approx 3.14 \\ &amp...

2019-09-11 12:43:57 206 0

原创 Sweet Snippet 之 字符串编辑距离

字符串编辑距离的简单实现 字符串编辑距离应该是动态规划中的代表问题了: 给定两个字符串 aaa 与 bbb,求解将 aaa 编辑至 bbb 的操作步数(距离),编辑包含以下两种操作: 删除某一字符 增加某一字符 (这里我们不允许变更某一字符,注意一下) 求解方法则是根据子问题的结果"...

2019-09-10 19:33:43 276 0

原创 编程小知识之 struct 构造函数(C#)

本文简单介绍了 C# 中 struct 构造函数的一些知识~ struct(结构) 类型在 C# 中属于值类型(value type),其构造函数有一些限制: struct 有参构造函数中必须为所有成员(包括自动实现的属性,后面对于这点的说明从略)赋值 举个例子: public struct...

2019-08-31 12:24:52 991 0

原创 Sweet Snippet 之 Gram-Schmidt 正交化

Gram-Schmidt 正交化的简单实现 Gram-Schmidt(格拉姆-施密特) 正交化可以正交化一组给定的向量,使这些向量两两垂直,这里列出一份简单的实现(Lua): -- vector add function add(a, b) if a and b and #a == #b...

2019-08-14 15:40:09 130 0

原创 问题小记之 使用 nil 索引 Lua table

本文简单介绍了使用 nil 索引 Lua table 的一些问题 使用 Lua 已经不少时间了,遇到 “table index is nil” 的错误也很多次了,久而久之自己便形成了 Lua table 索引不能为 nil 的概念. 但实际上,上述概念是不准确的,虽然下面的 Lua 代码确实会引...

2019-08-14 12:34:04 545 1

原创 关于满二叉树的一个证明

本文简单给出了在满二叉树中 内部节点数目(CiC_iCi​) = 叶子节点数目(ClC_lCl​) - 1 的两种证明方法 二叉树大家都不陌生,但是分类上可能大家就不那么熟稔了,本篇博文中提到的所谓满二叉树,定义上也有些分歧,在此我们采用如下定义: 满二叉树(Full Binary T...

2019-08-07 23:05:35 317 2

原创 Sweet Snippet 之矩阵求逆

矩阵求逆的简单实现 矩阵求逆有很多种方法,使用伴随矩阵可能是相对易于编码的方式,在此简单列一下实现(Lua): -- matrix store is table in row order -- e.g. 2 x 2 matrix is stored as table { m11, m12, m2...

2019-08-06 21:15:55 174 0

翻译 [译]Unity 实用技巧

网上看到一篇关于 Unity 实用技巧的博文,觉得颇有意思,这里简单翻译一下,原文在这里(PS: 部分技巧仅适用于 Unity 较新版本,有兴趣的朋友注意一下) TextArea 特性 TextArea 特性可以让我们更加方便的在 Inspector 中编辑字符串文本. Header, Too...

2019-07-14 18:34:44 180 0

原创 编程小知识之 JavaScript 调用堆栈

本文简述了几种在 JavaScript 中获取调用堆栈(call stack)的方法 使用 console.trace console 支持 trace 方法,使用该方法可以向控制台输出当前的调用堆栈. 示例代码如下: // logging_trace.js function add(x, y...

2019-07-12 21:04:03 154 0

原创 Sweet Snippet 系列之 扩展欧几里得算法

扩展欧几里得算法的简单实现 扩展欧几里得算法是欧几里得算法(辗转相除法)的扩展,欧几里得算法可以用于求解两个自然数(记为 aaa 和 bbb)的最大公约数,而扩展欧几里得算法不仅可以求出 aaa 和 bbb 的最大公约数,还能同时计算出两个整数 xxx 和 yyy, 使它们满足等式(等式中的 g...

2019-07-06 11:30:21 108 0

原创 Sweet Snippet 系列之 埃拉托斯特尼(Eratosthenes)筛法

埃拉托斯特尼(Eratosthenes)筛法的简单实现 遴选素数的埃拉托斯特尼(Eratosthenes)筛法想必大家都不陌生,不熟悉的朋友可以看看wiki,在此简单列出一份代码实现(Lua) function Eratosthenes(n) local is_prime = {} ...

2019-07-04 21:32:51 126 0

原创 编程小知识之 JavaScript 数组拷贝

本篇文章简单介绍了几种在 JavaScript 中进行数组拷贝的方法 浅拷贝 迭代拷贝 直接迭代数组进行拷贝可能是最直观的方法,只是性能不高 // use "for" array = [1, 2, 3]; arrayClone = []; for (i = 0; i &...

2019-07-02 21:26:40 138 0

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