博客重启
Hexo博客重建为啥还是Hexo博客之前是使用Hexo+Github Page搭建的
使用Github Page肯定是没有问题,因为只有白嫖的东西才能持久运行,国内访问速度不关键,常年你懂的
至于静态内容生成框架,有考虑过Hugo,因为生成速度比Hexo快很多,调试方便,同时安装起来比较方便(npm那堆东西恶心一批)。但是Hexo众多主题还是留住我了哈哈哈(真香警告)
新的主题之前的配置博客已经很久了,很多东西已经忘记了,所以这次打算重新配置下,使用新的主题,新年新气象。
hexo-theme-butterfly功能丰富的Hexo博客主题Features:
卡片式两栏 UI 设计
响应式布局
支持搜索和 TOC 展示
可自定义博客主题色
支持 Disqus、Gitalk、Valine、Waline 等评论系统
丰富的动画效果
内置 Mathjax 和 Katex
Butterfly 主题的开发基于 Melody 主题,在此基础上做了两栏设计,并带来了很多一眼看不出的实用功能。同时,作者也提供了一些文档便于大家安装和使用,涵盖入门至进阶需求。但我认为这些文档不够连贯,有些功能也没 ...
CMU445-Project2-BPlusTree-Delete-Single-threaded
单线程版 B+树删除操作
Delete在删除时用到两个重要的属性是,也就是node最多有多少个search-key value,最少有多少个,根据这个可以决定采用什么措施去维持整个树的平衡
Each leaf can hold up to n−1 search-key values. We allow leaf nodes to contain as few as ⌈(n−1)/2⌉ search-key values.
Each nonleaf node in the tree (other than the root) has between ⌈n/2⌉ and n children.
下面举例课本中的删除过程,粗略了解一下删除的过程:
已经有一棵B+树如下,从leaf node可知N=4
所以leaf node最多放3个search-key value,最少2个search-key value;nonleaf node最多4个children,最少2个children。
Coalesce一开始要删除Srini这个Index,首先查找到Srini位于哪个leaf node, ...
玩客云换魔百盒
魔百盒服役了两年的玩客云差不多也该换了,主要是配置方面感觉不够用,特别是当全局代理的情况下,总有断流的情况,而且是32位+1G RAM+8G ROM,小内存有点捉急。
所以就看了下有没有稍微好的产品,搜索了下发现有个魔百盒还可以,cm311-1a,2G RAM+16G ROM,amlogic s905l3a cpu对比玩客云的s805好点,内存方面也是翻倍,不到70的价格,虽然现在的价格比前一两年贵了十几二十块,但是也能接受。
买这个便宜性能凑合的盒子主要用来挂一些简单的服务,比如memos,青龙,v2raya等,还有一些内网穿透的需求
内网穿透配置比较安全的内网穿透软件有Cloudflare Warp、Tailscale、Zerotier等,大概都是通过VPN建议连接的,比直接开放端口可外网直接连接安全多了。
要使用这些软件,server和client都得安装一个程序,因为某些原因,我的某些client不能装类似的软件,所以只能pass了。
所以只能使用frp之类的,为了避免直接暴露端口,使用stcp/sudp协议。对于stcp/sudp而言,也得在server和client分别安 ...
CMU445-Project1-BPlusTree-Insert-Single-threaded
单线程版 B+树插入操作
Overview
Index: The index in database system is responsible for fast data retrieval without having to search through every row in a database table, providing the basis for both rapid random lookups (快速随机查找) and efficient access of ordered records.
B+Tree dynamic index structure: It is a balanced tree in which the internal pages direct the search and leaf pages contains actual data entries.B+ Tree properties
Each node except root can have a maximum of M children and at least ceil( ...
CMU445-Project1-BufferPoolManagerInstance总结
Buffer PoolDisk-Oriented DBMS什么是buffer pool,buffer pool有什么用(针对Disk-Oriented DBMS)
The database is all on disk, and the data in the database files is organized into pages.
In order to operate on the data the DBMS needs to bring the data into memory. It does this by having a buffer pool that manages the movement back and forth between disk and memory.
The DBMS also have an execution engine that will execute queries.
The execution engine will ask the buffer pool for a specific page, and the bu ...
CMU445-Project1-LRU-K总结
https://15445.courses.cs.cmu.edu/fall2022/project1/
DB的Buffer Replacement Policies中的LRU和Clock算法都容易受到sequential flooding的影响,对于LRU来讲,使用LRU-K算法能够缓解这个问题。
LRU-K
This component is responsible for tracking page usage in the buffer pool.
The LRU-K algorithm evicts a frame whose backward k-distance is maximum of all frames in the replacer.
Backward k-distance is computed as the difference in time between current timestamp and the timestamp of kth previous access.
A frame with less than k historical acces ...
CMU445-Project1-ExtendibleHashTable总结
前提:搞懂https://www.geeksforgeeks.org/extendible-hashing-dynamic-approach-to-dbms/
Whyhttps://15445.courses.cs.cmu.edu/fall2022/project1/
待补充,可看原论文设计要点:
Page Fault
Access Memory/Disk
Dynamic File Organization
Balance Radix Search Tree
Static & Dynamic Hash
Concepts
$h$: fixed hash function
$K$: is a key
$K’$: $h(K)$, also $pseudokey$.
We choose pseudokeys to be of fixed length, such as 32 bits.
The pseudokeys are of fixed length, the keys need not be.
$I(K)$: is associated information: ei ...
CMU445-Project0-primer
背景
链接:https://15445.courses.cs.cmu.edu/fall2022/project0/
目的:因为后续的项目都是使用c++编写,所以提供一个入门c++项目给新手熟悉下。
要求:给出基本的代码框架,填充核心代码实现trie树的插入、查找、删除。最终要求为并发版本,但是不要求性能,所以可以一把大锁直接梭哈。
环境:使用clang-12,c++17标准
使用到的常见cpp知识点:
unique_ptr管理内存资源
类的常见知识,比如构造函数,类方法等
rvalue与move
shared_mutex
trie树简单记录下trie树
作用又称前缀树或字典树,存储公共前缀字符串比较高效,一般用于字符串查找。
在项目中的应用是将(key, value)插入到trie树,类似hashmap的作用,但是使用trie树实现。
普通的trie树如下:
项目中要求实现的trie树:
上面是将(ab, 1)和(ac, “val”)插入到trie。注意项目中的value都是同类型的,这里是不同类型
结构给出的代码框架中总共有三个类
TrieNode:除了带有value的节 ...
CMU213-CSAPP-Virtual-Memory-Concepts
17-Virtual-Memory-ConceptsPhysical and Virtual Addressing
Main memory: an array of M contiguous(连续的) byte-size cells(单元). Each byte has a unique physical address (PA) {0, 1, 2, 3 … }
The most natural way for a CPU to access memory would be to use physical addresses. We call this approach physical addressing.
When the CPU executes the load instruction, it generates an effective physical address and passes it to main memory over the memory bus. The main memory fetches the 4-byte word s ...
CMU213-CSAPP-Virtual-Memory-Systems
18-Virtual-Memory-SystemsSimple memory system exampleAddress Translation Example #1
PPN实际不存在页表中
MMU做的第一件事是检查TLB,将VA中的VPN的TLBI(0x3)和TLBT(0x03)提取出来。所以会去查set3找到tag为3的line,找到对应的line并且valid为1,TLB将PPN(0D)返回给MMU
MMU使用0D构建物理地址。将VA的VPO复制到PA的PPO,0D作为PA的PPN,由此构成了一个物理地址
将地址发送给cache,提取出CI(0x5)、CT(0x0D),所以会去查set5找到tag为0xD的line,找到并且valid为1,因为CO为0,所以找到B0(36)
cache将该字节通过MMU返回给CPU,并将其存到一个寄存器中。
Address Translation Example #2
VA中的VPN的TLBI=TLBT=0,TLB的set=0&tag=0的line的valid=0,TLB miss
通过VPN=0查找页表,valid=1有效,内存将 ...