nekolr's blog

爱吃咖喱棒的打字员DA☆ZE~

0%

一个决策系统或者流程控制系统,在状态较少的情况下可以使用有限状态机。如果系统存在决策日趋复杂的可能性,那么简单的有限状态机并不是一个很好的选择,在使用它的过程中,你可能会感到越来越力不从心,这是有限状态机本身的局限性造成的。

Read more »

有限状态机和行为树在游戏 AI 领域比较常见,当然很多涉及到流程控制的逻辑都可以使用它们来降低复杂性并创建更具可读性的程序。

Read more »

一条查询语句在经过 MySQL 的查询优化器分析后,会生成一个所谓的执行计划,这个计划能够告诉我们接下来的查询的一些信息,比如单表采用哪种访问方法,多表连接的顺序,预估需要读取的记录数等等。

Read more »

连接有内连接和外连接之分,而外连接又分为左外连接和右外连接,这些我们都很熟悉。提到连接就不得不提到驱动表和被驱动表的概念,因为是多表联查,肯定需要先查询一张表,然后拿着查询到的记录分别到另一张表中去匹配,这个过程中,首先查询的那张表就是驱动表,而另一张表就是被驱动表。而内连接与外连接的区别,本质就是驱动表中的记录即使在被驱动表中没有与之相匹配的记录时,我们是否仍要将其加入到最终的结果集当中。

Read more »

从最简单的单表查询开始,能够更加简单直接地接触到 MySQL 中最基础的一些访问方法,结合 MySQL 的行记录、数据页以及索引结构的知识,在出现性能问题时才可以更有底气地应对。

Read more »

阅读和分析 GC 日志是处理 Java 虚拟机内存问题的一项基础手段,GC 日志是一些人为定义的规则,每一种收集器的日志形式可能都不太相同,但是虚拟机的设计者为了方便用户阅读,将各个收集器的日志都维持了一定的共性。本文是日志分析的一般流程描述。

Read more »

如果说垃圾收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。Java 虚拟机规范中对于垃圾收集器应该如何实现并没有规定,因此不同的厂商、不同版本的虚拟机所提供的垃圾收集器都有可能不同。

Read more »

在程序运行期间,可能会因为某段代码大量占用 CPU 时间而拖累整个应用的执行,能够快速定位这类热点代码的性能分析工具有很多,这里介绍的火焰图比较特殊,它可以将很多性能分析工具的采样结果以一种更加直观的方式展现出来,从而快速定位热点问题。

Read more »

Paxos 算法偏向于理论,对于如何应用到工程实践上较少提及,同时 Paxos 算法较难理解且复杂性很高,目前能够真正在生产环境中独立使用的成品很少,已知的基础库,比如 Tencent 的 phxpaxos 早在 2016 年开源,并在很久之前就停止维护了。阿里的 X-Paxos 只有文章介绍,并不开源。

Read more »

共识算法的主要目的是屏蔽掉故障节点产生的噪音,从而让系统能够正常运行下去,常用于选举和状态机复制(state machine replication)。在保证 liveness 的同时,对 agreement 条件放宽了要求,它接受不一致是常态的事实,既然无法知道某些节点是 crash 还是消息延迟,那么只关心能够正确响应的节点,只要它们能够表决过半即可。过半表决意味着虽然没有达成完全一致,但是投票结果已经被过半的节点所继承,这样任何两个 quorum 一定会存在交集(比如 A、B、C 三个节点,两个 quorum 比如 AB 和 BC 一定会有交集 B),所以它们最终一定能通过消息交互而达成一致。

Read more »