JPS寻路算法
参考
A Visual Explanation of JPS
前言
2D 网格上最短路径的代价统一搜索算法有很多种。A算法是广度优先(Dijkstra)和深度优先搜索的一种常见且直接的优化。对此算法有许多扩展,包括D、HPA*和矩形对称性剪枝,它们都旨在减少寻找最佳路径所需的节点数量。
Jump Point Search算法,是使矩形网格上的路径查找更加高效的众多方法之一。
本文假设你假定您已熟悉A搜索算法以及DijkstrA算法在寻路问题上的应用,参见A*算法的介绍。
下文假设在规则的正方形网格上进行路径查找,其中水平和垂直移动的成本为1,对角线移动的成本为√2。
可以在该链接可视化执行JPS算法。
路径扩展与对称性剪枝
在每次执行A*...
数据库系统笔记
参考
CMU 15-445课程主页
CMU 15-445中文字幕视频
《数据库系统概念》
存储
Disk-Oriented DBMS
面向磁盘的DBMS将数据存放于非易失性磁盘,操作数据前需将数据从磁盘读入内存。
通过Buffer Pool来管理数据在内存和磁盘之间的置换
Execution Engine执行查询,向Buffer Pool请求指定page的数据,后者负责将page读入内存返回内存指针
Buffer Pool Manager需保证该page在Execution Engine执行期间保持在该内存中
虚拟内存的问题
为什么不直接以来操作系统虚拟内存?
操作系统虚拟内存(mmap)管理文件在内存和硬盘中的置换,适合...
分布式系统笔记
参考
MIT 6.824
剑桥大学分布式系统
CSE138
链式复制
构建复制状态机的方法
将所有操作都提交到共识算法库(Raft/Paxos)
更常见的:通过分布式配置服务(Zookeeper) + 主/备复制。配置服务只维护少量状态(如选举结果),大数据交由主备复制协议执行,减少网络压力
引入链式复制用于主备复制
特性
优点
在1台server上执行读操作
恢复方式简单
线性一致性
原理
配置服务维护server链
从head server开始写,tail server回应提交
从tail server读取
恢复
对比Raft的恢复,简单很多:
head server宕机:head...
JUC同步器框架(AQS)设计思路与基本原理
参考链接
The java.util.concurrent Synchronizer Framework - Doug Lea
中文翻译版 - 欧振聪
摘要
在J2SE 1.5的java.util.concurrent包(下称j.u.c包)中,大部分的同步器(例如锁,屏障等等)都是基于AbstractQueuedSynchronizer(下称AQS类)这个简单的框架来构建的。这个框架为同步状态的原子性管理、线程的阻塞和解除阻塞以及排队提供了一种通用机制(模板方法设计模式)。这篇论文主要描述了这个框架基本原理、设计、实现、用法以及性能。
简介
通过JCP的JSR166规范,Java的1.5版本引入了j.u.c包,这个包提供了一系列支持中等程度并发的类。在这些组件中有...
在WSL2中编译和调试OpenJDK
安装WSL
安装WSL 1
启用“适用于 Linux 的 Windows 子系统”可选功能,以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
启用虚拟机平台
安装 WSL 2 之前,必须启用“虚拟机平台”可选功能,以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
然后重新启动计算机,以完成更新。
更新WSL 2...
共计 18 篇文章,3 页。