Jekyll博客配置mermaid支持以及暗黑主题适配
写在前面
最近忙里偷闲, 搞一下博客, 由于写一些笔记需要做时序图和类图, markdown 有现成的支持: mermaid-js, 网站, 这里就直接拿来主义了, 我的博客是基于 jekyll-TeXt-theme 的, 里面内置了 mermaid 开关, 但是版本已经比较老旧了, 下面来看看如何更新配置以及适配暗黑主题(如果用默认主题会导致线条显示对比度不明显).
方法
开启支持
先改_config.yml文件:
## => Markdown Enhancements
##############################
## Mathjax
mathjax: true # false (default), true
mathjax_autoNumber: ...
操作系统导论笔记 并发
写在前面
全部代码: ostep_cases;在 Linux+MacOS 下运行通过.
下面的代码都是基于 C 的, 当然为了不分文件测试我用了 C++ 的命名空间, 实际使用的话可以用类封装一下 API, 使用 RAII 惯用法, 避免忘记释放锁, 这部分内容在之后的文章中给出.
线程(thread)
基本概念与术语
临界区: 访问共享资源的一段代码, 资源通常是一个变量或者数据结构
竞态条件(race condition): 出现在多个执行线程大致同时进入临界区时, 都试图更新共享的数据结构, 会导致异常的结果.
不确定性: 程序由一个或多个竞态条件组成, 程序的输出因运行而异, 具体取决于哪些线程在何时运行. 这就导致了不确定的结果
互斥原语:...
多路归并的一些题目总结
写在前面
参考了:
【多路归并】从朴素优先队列到多路归并;
基本问题
88. 合并两个有序数组;
双指针归并:
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
// 反着遍历插入数组
for (int i{m + n - 1}, j{m - 1}, k{n - 1}; i >= 0; --i) {
if (j < 0)
nums1[i] = nums2[k--];
...
操作系统导论笔记 虚拟化
写在前面
这部分内容可以成为资源虚拟化, 主要包括 CPU 虚拟化(CPU 调度策略) 和 内存虚拟化(虚拟内存, 分段分页技术, 缓存策略等), 从一些很容易思考的点引入, 一点一点来分析不同策略的优劣和权衡, 十分引人入胜.
引入
正在运行的程序
执行指令: 处理器从内存中获取一条指令, 对其进行解码(decode), 然后执行(execute), 完成这条指令之后, 处理器继续执行下一条指令, 直到程序完成.
操作系统
一类让程序在计算机上运行变得容易的程序, 例如允许程序共享内存, 让程序与设备交互等.
虚拟化资源
操作系统通过虚拟化的方法使得计算机更加易用.
操作系统将物理资源(处理器, 内存, 磁盘等) 转换为更加通用, 强大, 易用的虚拟化形式. 为用户...
C++容器存放引用的小坑与分析
问题
最近做图论题发现一个bug, 在这里记录一下:
vector<pair<int, int>> vp{ {1, 2}, {2, 3} };
for (size_t i{}; i < 4; ++i) {
if (i < vp.size()) {
auto& [a, b] = vp[i];
vp.emplace_back(a, b);
cout << a << " : " << b << endl;
}
}
在 address-sanitizer 直接报:
==1705==ERROR: AddressSanitize...
背包问题力扣题目总结
写在前面
背包问题, 采用动态规划的思想.
0-1背包
物品只能用一次
有N件物品和一个最多能被重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每 件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。
定义状态数组
dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量 为j的背包,价值总和最大是多少。
原始问题
class Solution {
public:
int BagMaxValue(vector<int>& value, vector<int>& weight, int maxWeight) {
// 滚动数组优化
...
编程中常用的英文缩写与单词的含义
写在前面
数学
算符
名词
缩写
含义
Greatest Common Divisor
GCD
最大公因数
Highest Common Factor
HCF
最大公因子
Least Common Multiplier
LCM
最小公倍数
计量
名词
缩写
含义
b...
基于排序算法(分治)的一些力扣题目
写在前面
快速排序(快速选择)
应用 partition 的快速选择算法
原理
k 的值小于等于左区间的长度-1(即 m-l), 说明不能确定满足条件的值, 继续划分(选择), 否则可以先选出 l 到 m 区间的值, 这段区间的值一定满足条件, 在这种情况下, 如果此时 k 要比 m 到 l 区间的长度+2(即m-l+1) 还大(因为前面记录结果时候记录的数目为 m-l+1), 那就可以划分这个区间了…
题目
215. 数组中的第K个最大元素;(仅取第 k 个)
class Solution {
public:
int findKthLargest(vector<int>& nums, int k) {
srand(time(0...
共计 492 篇文章,62 页。
您是Zorch的第 个小伙伴
Hits