题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1010
题目大意
小狗要逃离一个的长方形迷宫,迷宫出口的门仅在第 秒时开一瞬间(不到1秒)。因此,小狗必须恰好在第 秒到达门口才能逃离。 每一秒,它可以向上下左右任意移动一格,且所有格子至多走一次。
排序算法总览
排序算法 | 平均时间复杂度 | 最好 | 最坏 | 空间复杂度 | 稳定性 |
---|---|---|---|---|---|
冒泡排序 | O(n^2) | O(n) | O(n^2) | O(1) | 稳定 |
选择排序 | O(n^2) | O(n^2) | O(n^2) | O(1) | 不稳定 |
插入排序 | O(n^2) | O(n) | O(n^2) | O(1) | 稳定 |
希尔排序 | O(nlog²n) | O(nlog²n) | O(nlog²n) | O(1) | 不稳定 |
归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(n) | 稳定 |
快速排序 | O(nlogn) | O(nlogn) | O(n^2) | O(logn) | 不稳定 |
堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(1) | 不稳定 |
计数排序 | O(n+m) | O(n+m) | O(n+m) | O(m) | 稳定 |
桶排序 | O(n) | O(n) | O(n^2) | O(n) | 稳定 |
基数排序 | O(n·k) | O(n·k) | O(n·k) | O(n+k) | 稳定 |
作为一个已经停止维护的项目,Yapi 安装过程中比较容易踩坑,这里记录一下安装过程。
相关文档
https://hellosean1025.github.io/yapi/devops/index.html#%e5%ae%89%e8%a3%85
文档里提到的方式一无法成功,存在两个问题:
主要日志系统
JUL
Java标准库java.util.logging
,但不常用。
Log4j
Log4j 的短板在于性能,在Logback 和 Log4j2 出来之后,Log4j的使用也减少了。
Logback
同样由Log4j的作者开发,提供了性能更好的实现,异步 logger,Filter等更多的特性。
Log4j2
由Log4j维护者开发,诞生晚于logback,因此吸收了slf4j和logback的一些优点(比如日志模板),性能也比较好。在设计上分离Facade和Implementation,即log4j-api
和 log4j-core
。
第二章:形式文法和形式语言
句型
从文法的开始符号出发进行零步或多于零步的推导得到的文法符号串(S =*=> α)。句型可以既包含终结符号又包含非终结符号。
句子
只包含终结符号的句型称为句子。句子是一种特殊的句型。
语言
文法 G 推导出的所有句子组成的集合,称为语言,记为 L(G),即:
第一步:清理yarn缓存
yarn cache clean
这是由于执行子进程存在安全漏洞,因此在18.x, 20.x, 21.x版本中直接禁止了。
详见:https://nodejs.org/en/blog/vulnerability/april-2024-security-releases-2
需要在报错的包对应的scripts/install.js
文件中加上shell: true
:
'use strict'
const os = require('os');
const path = require('path');
const spawn = require('child_process').spawn;
const gypArgs = ['rebuild'];
if (process.env.NODE_PTY_DEBUG) {
gypArgs.push('--debug');
}
const gypProcess = spawn(os.platform() === 'win32' ? 'node-gyp.cmd' : 'node-gyp', gypArgs, {
shell: true,
cwd: path.join(__dirname, '..'),
stdio: 'inherit'
});
gypProcess.on('exit', function (code) {
process.exit(code);
});
共用内存
union
中的字段是共用内存的,比如可以用下面的代码判断机器是小端序还是大端序:
#include <stdio.h>
union U
{
char c;
int i;
}u;
int main()
{
u.i = 1;
if(u.c == 1)
{
printf("little-endian");
}
else
{
printf("big-endian");
}
}