12 tkokof1

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 1w+

Lua 5.4 新特性概览

本文简单介绍了一些 Lua 5.4 的新特性Lua 5.4 正式发布了,很多朋友应该会比较好奇 Lua 5.4 与之前版本的区别,本文就此简单介绍一些 Lua 5.4 的新特性.完整的 Lua 5.4 变更列表可以在这里找到,本文我们仅简单概览下其中主要的几点变化:分代 GC之前 Lua 采用的是 分步 GC 算法来进行垃圾回收, Lua 5.4 加入了 分代 GC 算法,值得注意的一点是, Lua 5.4 仍然支持 分步 GC 算法(并且目前 分步 GC 算法仍然是默认的 GC 算法),我们可.

2020-07-08 14:35:36

ZeroBrane Studio 简易适配 Lua 5.4

本文介绍了 ZeroBrane Studio 简易适配 Lua 5.4 的一些细节Lua 5.4 已经到 rc4 版本了,相信不少朋友都已经有所尝试,最简单的测试方法应该就是手动编译一个 lua.exe,然后直接命令行执行脚本:lua.exe lua_script_path当然,使用 IDE 来编写测试脚本会更方便些,自己平时用 ZeroBrane Studio 比较多,不过最新版本的 ZeroBrane Studio 还没有直接支持 Lua 5.4 脚本的运行和调试,自己简单尝试适配了一下,发.

2020-06-03 20:07:30

编程小知识 之 杂记两则

本文简述了之前遇到的两则编程杂记隐式字符串字面量合并之前看到一段 C/C++ 代码:void func(const char* str) { // implementation ...}func("string" "params");代码定义了一个参数为字符串指针的函数 func,调用时却使用了 “string” “params” 这种字符串连写的方式(中间没有逗号分隔符),初看时我一直怀疑调用代码存在"笔误",甚至认为这种写法会引起编译错误,但实际上, func(“string.

2020-05-31 10:10:49

PS4 Pro 拆机记

本文是自己拆解 PS4 Pro 的一些记录起因过年的时候孩子玩闹,将一张银行卡塞进了 PS4 Pro 的光驱里,导致整个光驱都罢工了,一开始以为光驱进入异物可能是常见现象,修理方法应该不难,没想搜索了一番信息下来,似乎只有两个解决方法(并且两个方法都不简单…):送修拆机自己简单尝试了一下使用镊子直接从光驱入口掏银行卡,发现不拆机的话根本就是"暗箱"操作,任何操作不当都极易损坏光驱...

2020-05-04 22:04:58

Sweet Snippet 之 BitMask

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

2020-04-30 21:01:11

Sweet Snippet 之 Timeslice Update

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

2020-04-29 19:02:00

编程小知识 之 序列 rotate

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

2020-03-26 20:53:42

Sweet Snippet 之 方差计算

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

2020-02-16 16:43:18

.NET GC 精要(七)

本文讲述了 .NET GC 的一些细节知识,内容大部分来自于书籍 Under the Hood of .NET Memory Management(注:本文假设你了解 .NET 的基础知识,譬如值类型,引用类型等)深入并发执行模式(工作站模式下)的一点细节之前讲到工作站模式分为 并发 和 非并发 两种执行模式,其中非并发 执行模式比较容易理解,即在整个 GC 流程中应用线程(appli...

2020-02-09 10:23:46

.NET GC 精要(六)

本文讲述了 .NET GC 的一些细节知识,内容大部分来自于书籍 Under the Hood of .NET Memory Management(注:本文假设你了解 .NET 的基础知识,譬如值类型,引用类型等)深入内存段(memory segment)的申请每个托管进程(managed process)都有各自独立的 SOH 和 LOH,并且在开始执行的时候,托管进程会为 SOH ...

2020-02-06 10:02:02

.NET GC 精要(五)

本文讲述了 .NET GC 的一些细节知识,内容大部分来自于书籍 Under the Hood of .NET Memory Management(注:本文假设你了解 .NET 的基础知识,譬如值类型,引用类型等)深入之前讲过 .NET GC 出于效率等因素的考虑,对 SOH(Small Object Heap)进行了分代处理(Gen 0, Gen 1 和 Gen 2),当时只是大概讲述...

2020-02-01 08:54:10

.NET GC 精要(四)

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

2020-01-30 09:04:07

.NET GC 精要(三)

本文讲述了 .NET GC 的一些细节知识,内容大部分来自于书籍 Under the Hood of .NET Memory Management(注:本文假设你了解 .NET 的基础知识,譬如值类型,引用类型等)进阶.NET 为了处理非托管资源(unmanaged resource)的释放问题,引入了终结器(Finalization)的机制,相关的代码实现上也并不复杂,仅需要在类型中定...

2020-01-27 10:50:13

.NET GC 精要(二)

本文讲述了 .NET GC 的一些细节知识,内容大部分来自于书籍 Under the Hood of .NET Memory Management(注:本文假设你了解 .NET 的基础知识,譬如值类型,引用类型等)进阶之前我们讲述 SOH(Small Object Heap) 时提过其会执行内存压缩过程,但如果程序中存在大量的(小)对象的话,在 SOH 中完整执行一遍内存压缩也会消耗不少...

2020-01-25 12:09:54

.NET GC 精要(一)

本文讲述了 .NET GC 的一些细节知识,内容大部分来自于书籍 Under the Hood of .NET Memory Management(注:本文假设你了解 .NET 的基础知识,譬如值类型,引用类型等)基础稍有 .NET 基础的朋友一定知道 .NET GC 管理的是托管堆(managed heap)的内存释放问题,而托管堆又可以进一步分成两类:Small Object H...

2020-01-22 16:15:11

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

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

2020-01-11 14:31:26

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

本文讲解了 Lua 中长度运算符(#)的一些知识(注: 以下讨论基于 Lua 5.3.5 版本)基础Lua 中的长度运算符(#)可以用于获取 table 的"长度",举个简单的例子:local t = { 1, 1, 1 }print(#t) -- 3但其实对于 table 而言,长度运算符并不等同于获取 table 的"长度",更准确一些的说法应该是获取 table 序列部分的...

2019-12-20 17:52:47

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

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

2019-12-16 20:07:16

编程小知识之 Dithering

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

2019-11-29 19:46:56

编程小知识之 JIT执行

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

2019-11-21 11:28:30

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。