Deque(Double-Ended Queue,双端队列)是一种允许在头尾两端进行插入和删除的线性数据结构。
前言
从定义上来看,Deque 只是比 Queue 多了一端的操作能力。但与 Queue 不同的是,Deque 同时具备 Stack 和 Queue 的访问模式,因此在需要灵活处理头尾两端元素的场景中广泛应用。
它们之间的区别很直观:
Queue: FIFO(First In, First Out,先进先出)
Deque: FIFO / LIFO(先进先出 / 后进先出)
Deque(Double-Ended Queue,双端队列)是一种允许在头尾两端进行插入和删除的线性数据结构。
从定义上来看,Deque 只是比 Queue 多了一端的操作能力。但与 Queue 不同的是,Deque 同时具备 Stack 和 Queue 的访问模式,因此在需要灵活处理头尾两端元素的场景中广泛应用。
它们之间的区别很直观:
Queue: FIFO(First In, First Out,先进先出)
Deque: FIFO / LIFO(先进先出 / 后进先出)
RVO(Reciprocal Velocity Obstacles,互惠速度障碍)是一种多人动态避障算法。
「数据结构与算法 - JPS 」兄弟篇
如果 A*、JPS 等寻路算法解决的是“如何到达目的地”,那么 RVO 解决的就是“在移动过程中,如何避免与动态目标发生碰撞”。常用于游戏中多单位在移动过程中实现自动避让,比如:红警、星际争霸等RTS游戏。
可以通俗的理解为:每个移动的单位都会主动互相让一点,避免路径撞车。
这类动态避障算法的核心思想是:“按照当前速度继续移动,未来会不会发生碰撞?”,也就是 Velocity Obstacle(速度障碍)。
Axum 是由 Tokio 官方团队开发的一个高性能、设计优雅的现代化 Web 框架。
Tokio 是 Rust 社区中最流行的异步编程框架之一(在区块链和智能合约圈子比较受欢迎),而Axum是由Tokio官方开发、且深度集成的Web框架。
假设已经安装了Rust开发环境
1 | // main.rs |
1 | $ curl -X GET 'http://127.0.0.1:8000' |
记一次半吊子逆向工程的…不那么艰难的过程。
「逆向学习笔记 - Cocos2d Lua逆向提取资源 」难弟篇
最近刷到一款某道换皮手游,玩法和美术风格都是我喜欢的类型。于是想着做点逆向学习,顺便捞一手美术资源。
一个某道换皮手游,解压安装包:
1 | ├── AndroidManifest.xml |
有向无环图(Directed Acyclic Graph,简称 DAG)是一种图结构,由若干顶点和带方向的边组成。与普通有向图不同的是,DAG 中不存在环路——也就是说,不可能从某个顶点出发,沿着边的方向走一圈,最终又回到原点。
项目QueryBuilder模块初始指标依赖层级相对固定,但版本多次迭代后,指标之间逐渐形成了复杂的依赖路径。原有的逻辑已无法支持,所以引入有向无环图(DAG),用于对指标依赖关系进行建模和解析。
DAG 中的每个节点只关心两类关系:我依赖的 和 依赖我的。
1 | type Node struct { |
两次随机选择法(Power of Two Choices,简称 P2C)是一种高效的负载均衡算法。
实现连接池负载均衡
连接池
1 | type ConnPool struct { |
服务器在保存玩家数据时的频次和触发机制怎么设计
定时保存可以通过设置定时器来实现,但也有两种方式:服务器定时、玩家定时。
玩家下线后立即保存数据,保证玩家的数据被完整存档。
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: false
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true