tkokof1
码龄14年
  • 376,448
    被访问
  • 179
    原创
  • 8,443
    排名
  • 299
    粉丝
  • 2
    铁粉
关注
提问 私信
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
  • 加入CSDN时间: 2008-06-22
博客简介:

tkokof1的专栏

博客描述:
int life(void* params) { // TODO: implement }
查看详细资料
  • 3
    领奖
    总分 224 当月 6
个人成就
  • 博客专家认证
  • 获得230次点赞
  • 内容获得143次评论
  • 获得377次收藏
创作历程
  • 4篇
    2022年
  • 14篇
    2021年
  • 22篇
    2020年
  • 42篇
    2019年
  • 31篇
    2018年
  • 11篇
    2017年
  • 8篇
    2016年
  • 7篇
    2015年
  • 9篇
    2014年
  • 11篇
    2013年
  • 4篇
    2012年
  • 6篇
    2011年
  • 9篇
    2010年
  • 14篇
    2009年
成就勋章
TA的专栏
  • 游戏
    68篇
  • 算法
    62篇
  • 随性
    150篇
  • 语言
    49篇
  • 数学
    21篇
github
Fork me on GitHub
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

[译]Lua编程技巧

这个原则((YAGNI原则))和你计划在将来添加的程序特性有关,该原则是 “You aren’t gonna need it(你不会需要它的)” 的缩写.你不应该在需求明确之前添加新的程序功能或者程序特性,任何新的程序特性其实都会对程序的扩展性产生限制,所以一个不必要的程序特性很可能会影响到之后新增的一些必要的程序特性,并且当程序特性需求不明确时,我们也很难定义该程序特性实际的开发内容和测试方法.相比较复杂代码,简单代码往往更优雅,更不易产生Bug, 同时也更方便构建扩展,程序员之间也经常会提起这两个原则(
原创
发布博客 2022.06.04 ·
51 阅读 ·
0 点赞 ·
0 评论

Sweet Snippet 之 最短增广路径算法

本文简单实现了最短增广路径算法首先我们简单实现 queue(队列) 数据结构 :local queue = {}queue.__index = queuefunction queue:push(val) table.insert(self.data, val)end function queue:pop() if #self.data > 0 then return table.remove(self.data, 1) endend.
原创
发布博客 2022.05.12 ·
155 阅读 ·
1 点赞 ·
0 评论

Sweet Snippet 之 四则运算求值

本文简单介绍了一种四则运算求值的实现方法(基于语法分析)双栈算法可以实现四则运算的求值,但是扩展性比较低,更好的方式是基于语法分析来实现,整体大概包括以下几个步骤:词法分析语法分析语法树生成运算求值我们先来看词法分析:首先定义我们需要用到的词法类型:local token_type = { add = 1, -- '+' minus = 2, -- '-' mul = 3, -- '*' div = 4, -- '/' lbrace = 5,.
原创
发布博客 2022.01.28 ·
609 阅读 ·
0 点赞 ·
0 评论

Sweet Snippet 之 大整数乘法

本文简单介绍了一种大整数乘法的实现方式当整数范围较大时,直接使用乘法运算符(*)很容易导致数值溢出,如果开发工作中确实需要处理这种大范围的整数,那么我们便需要实现一下大(范围)整数的乘法运算(一般方法便是将大整数表达为字符串,然后基于字符串来进行乘法运算).在实现大整数乘法之前,我们先来实现一下大整数的加法运算,朴素方法便是从低到高按位进行加法操作,并考虑进位的影响,代码大概如下(Lua):local big_int = {}local function digit_num(v) re.
原创
发布博客 2022.01.04 ·
221 阅读 ·
0 点赞 ·
1 评论

Sweet Snippet 之 计算逆序数

本文简单介绍了几种计算逆序数的实现方法简介所谓逆序数,是指一个排列中所有逆序对的总数,而所谓逆序对,则是指排列中前后位置和大小顺序相反的数对,举个简单的例子:{ 1,4,2,3 }\{\ 1, 4, 2, 3 \ \}{ 1,4,2,3 }上面的排列中,有下面两个逆序对:<4,2> <4,3><4, 2>\ <4, 3><4,2> <4,3>所以该排列的.
原创
发布博客 2021.12.21 ·
49 阅读 ·
0 点赞 ·
0 评论

UE4 微笔记 之 调整网格材质参数

简单记录一下调整网格(Mesh)材质参数的方法修改网格材质参数一般有以下几个步骤:首先创建材质参数(这里有较详细的说明)创建动态材质实例(UMaterialInstanceDynamic)设置动态材质参数(通过 SetVectorParameterValue 等方法)以下是一段简单的代码示例:void SetMeshMaterial(UMeshComponent* MeshComponent, int MaterialIndex){ if (MeshComponent) { a.
原创
发布博客 2021.12.03 ·
300 阅读 ·
0 点赞 ·
0 评论

Sweet Snippet 之 骑士金币问题

本文简述了骑士金币问题的两种实现方法首先我们来看下什么是 骑士金币问题:骑士金币问题国王要用金币赏赐忠于他的骑士.骑士在就职的第一天得到一枚金币,接下来的两天(第二天和第三天)每天会得到两枚金币,接下来的三天(第四、五、六天)每天会得到三枚金币,接下来的四天(第七、八、九、十天)每天会得到四枚金币,这样的赏赐形式会一直持续下去,问题是给定一个天数(譬如第十天),求骑士将会获得的总的金币数量.举个简单的例子,如果给定第十天(NNN = 10),那么骑士将会获得的总的金币数量(CCC)为:C=1+.
原创
发布博客 2021.10.07 ·
135 阅读 ·
0 点赞 ·
0 评论

Sweet Snippet 之 PlayerPrefs for UE4

在 Unity 中进行本地存储,我们一般会用到 PlayerPrefs,而在 UE4 中,我们一般会使用 USaveGame,不过 USaveGame 在使用上和 PlayerPrefs 相差较大,这里给出一个 UE4 的 PlayerPrefs 实现,原理上仅是对 USaveGame 做了进一步的封装首先我们继承 USaveGame 创建 UPlayerPrefsSaveGame 类型#include "CoreMinimal.h"#include "GameFramework/SaveGa.
原创
发布博客 2021.08.17 ·
86 阅读 ·
0 点赞 ·
0 评论

C++(UE4) Memory Management Review

以下是关于 C++(UE4) 内存管理的一点简单分享原始方式(Raw)malloc/free 是 C 中用于分配内存和释放内存的主要方式new/delete 是 C++ 中用于分配内存和释放内存的主要方式,除了内存管理之外, new/delete 还负责调用对象的构造函数和析构函数new[]/delete[] 是 new/delete 的数组形式比较重要的一点是, new/delete 等内存管理的调用一定要匹配,譬如调用了 new 就一定要调用 delete(而不能 不调用 delete.
原创
发布博客 2021.08.15 ·
88 阅读 ·
0 点赞 ·
0 评论

Sweet Snippet 之 RingBuffer for UE4

本文简述了一种 环形缓冲区(ring buffer) 的实现方法环形缓冲区(ring buffer)在一些情况下非常有用, UE4 中提供了一个默认的实现 TCircularBuffer(代码较短,下面直接贴出完整源码):// Copyright Epic Games, Inc. All Rights Reserved.#pragma once#include "CoreTypes.h"#include "Misc/AssertionMacros.h"#include "Containe.
原创
发布博客 2021.08.10 ·
120 阅读 ·
0 点赞 ·
0 评论

MiniGame 之 扫雷实现

本文是 扫雷(MiniGame) 的一个实现样例(使用 Unity/C#),主要以代码为主,辅以一点简单的注解实现样例中的扫雷实现主要是两个类型(BombGame 和 BombGrid),下面是完整代码:// desc bomb game implementation// maintainer hugoyuusing System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngi.
原创
发布博客 2021.07.18 ·
60 阅读 ·
0 点赞 ·
1 评论

代码宏的一点小知识

本文是一篇关于宏定义的短文C/C++ 中我们可以定义宏来做一些代码的简化工作,一般我们不推荐使用宏,因为使用过程中很容易出现问题,目前有一些方法可以用来取代宏的部分功能(譬如内联函数),但是仍然有些宏功能现在还没有更可靠方便的替代方法,遇到这些使用情境的话,我们还是需要使用宏.宏的一个简单应用就是定义重复常量,譬如:#define MAX_COUNT 1024通过使用这种常量宏,我们可以较方便的维护代码中常量的变更.我们也可以定义参数宏,能够起到"模拟"函数等作用:#define MAX(.
原创
发布博客 2021.07.07 ·
69 阅读 ·
1 点赞 ·
0 评论

UE4 微笔记 之 HitResult

UE4 中使用 FHitResult 结构来存储碰撞检测后的相关数据,在此简单记录一下该结构中各个成员的含义.FHitResult 结构对应于蓝图中有一个 Break Hit Result 节点,我们可以参照该节点来了解 FHitResult 中各个成员数据(为了便于理解,下面记录的成员数据顺序有所调整):Blocking Hit如果发生了碰撞则为 true, 否则为 falseInitial Overlap用于表示碰撞检测起始处是否与碰撞体发生了重叠, 发生了重叠为 true, 否则.
原创
发布博客 2021.06.20 ·
936 阅读 ·
4 点赞 ·
0 评论

编程小知识 之 range search

本文简述了 range search 的一些知识问题所谓 range search,是指给定一些数值范围(range)和某一数值,我们来搜索该数值所属的数值范围,譬如我们给定以下的数值范围:[0, 10] -> range 0[11, 50] -> range 1[51, 100] -> range 2给定的数值为 32,那么我们可以搜索得到 32 所属的数值范围为: range 1.实现如果给定的数值范围比较少,我们直接遍历搜索就可以了,代码大概如下:publi.
原创
发布博客 2021.04.09 ·
334 阅读 ·
0 点赞 ·
0 评论

Sweet Snippet 之 Lua Utils

之前写过不少关于 Lua 的 Utils 代码,不少都挺实用的,但是平时使用中却又总是觉得零散,遂而收集整理了一个 repo,希望可以持续完善,有兴趣的朋友可以看一看,欢迎 PR ~以下内容仅为当前 repo 的 readme 内容,后面持续更新:lua utilsdescthis is a simple lua util functions collection for easy usage and intergrationfunction reference(TODO)table u.
原创
发布博客 2021.02.17 ·
172 阅读 ·
0 点赞 ·
1 评论

编程小知识 之 Base64 编码

本文简述了 Base64 编码的一些知识简介在一些 支持可打印字符(而不(完善)支持其他字符) 的开发场景下(譬如原始的电子邮件中),为了能够传输存储二进制数据(广义上的非打印字符),我们需要一种将二进制数据转换为可打印字符的编码方式, Base64 就是这么一种编码方式.基础Base64 编码的步骤如下:将待转换的字节数组(即二进制数据)按每 3 个字节分为一组(共 3 x 8 = 24 bit(二进制位))将上述 24 bit 按每 6 bit 一组重新分为 4 组分别计算上面 4 .
原创
发布博客 2021.01.30 ·
111 阅读 ·
0 点赞 ·
0 评论

Sweet Snippet 之 Lua readonly table

Lua table 用作静态配置是常见的使用情境,而用作静态配置的 Lua table 往往都有保持只读的需求,本文简单介绍了一些让 Lua table 变更为只读的知识 (代码基于 Lua 5.4)基础基础变更 Lua table 为只读的方法,在 《Programming in Lua》 中就已经给出了(这里),基本思路即是通过 __index 和 __newindex 两个元方法来做 table 的读写限制,代码大体如下:function readonly(t) local prox.
原创
发布博客 2021.01.19 ·
120 阅读 ·
0 点赞 ·
0 评论

ActivePerl 5.26.0.2600 32bit

发布资源 2021.01.13 ·
exe

C++ 标准库の使用迷思

转眼 2020 已经过去,回顾来看总有些迷幻,新年之际,自己倒不打算写些什么年终总结,想想还是记一小篇技术小文: C++ 标准库的使用迷思.了解 C++ 的朋友对于标准模板库肯定不陌生,平日用 C++ 开发时基本也是离不开标准模板库的,举个最普遍的例子:当我们需要动态数组时,甚至于仅需要静态数组时,我们都会第一个想到 vector :#include <vector>std::vector<int> int_array;原因就在于使用 vector 方便且稳定,不用自.
原创
发布博客 2021.01.02 ·
134 阅读 ·
0 点赞 ·
0 评论

[译]寻路优化

看到一篇关于寻路优化的文章,简单翻译了一下,原文在这里译文并未照搬原文翻译,多处是意译原文图片已经失效,不过其他转载网址仍有图片,我对应着补了一下寻路对很多游戏来讲都是不可或缺的元素,在一般的游戏中,使用一些基本的寻路算法(譬如 BFS, Dijkstra 或者 A* 等等)就可以很好的解决寻路问题,但是在另一些游戏中,尤其是在游戏地图比较庞大的情况下,这些基本寻路算法需要耗费大量的时间进行寻路,进而造成游戏卡顿,这使得寻路优化变得非常重要.在这篇文章中,我会简单介绍一下 A* 算法以及该算.
翻译
发布博客 2020.12.16 ·
2155 阅读 ·
3 点赞 ·
5 评论
加载更多