LeetCode 146.LRU缓存
传送门
设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。实现 LRUCache 类:
LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存
int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。
void put(int key, int value)如果关键字key 已经存在,则变更其数据值value ;如果不存在,则向缓存中插入该组key-value 。如果插入操作导致关键字数量超过capacity ,则应该 逐出 最久未使用的关键字。
函数 get 和 put 必须以 O(1) 的平均时间复杂度运行。
代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485class LRUCach ...
数据库
事务ACID
原子性:事务被视为不可分割的最小单元,事物的全部操作要么全部提交,要么全部失败
一致性:数据库在事务执行的前后都保持一致状态。在一致状态下,不同事务对同一个数据的读取结果是相同的
隔离性:一个事务所做的修改在提交前,对其它事务是不可见的
持续性:事务对数据库的修改是永久的
并发一致性问题
丢失修改
脏读
不可重复读
幻读
封锁粒度表级、行级
互斥锁(X锁,写锁)
共享锁(S锁,读锁)
兼容关系
X
S
X
N
N
S
N
Y
三级封锁协议
一级封锁协议:事务在修改数据前需要加X锁,事务结束后释放
可以解决丢失修改的问题
二级封锁协议:在一级封锁协议的基础上,数据在读取数据时要为其加S锁,读取完之后释放
可以解决脏读问题
三级封锁协议:在二级封锁协议的基础上,事务在读取数据前要为其添加S锁,事务完成后释放S锁
可以解决不可重复读问题
两端锁协议事务的加锁和解锁分两个阶段进行
隔离级别隔离级别能够解决的问题
脏读
不可重复读
幻读
未提交读
×
×
×
读提交
√
×
×
可重复读
√
√
×
可串行化 ...
网络原理
概述ISP互联网服务提供者ISP,又称互联网服务提供商
电路交换建立连接、通话、释放连接
特点
在通话的全部时间内,通话的两个用户始终占用端到端的通信资源
线路传输效率低
分组交换存储转发
优点高效、灵活、迅速、可靠
计算机网络的性能指标
速率:数据的传输速率,bit/s(bps),也称为数据率
带宽:1、信号具有的频带宽度,单位赫兹;2、单位时间内网络中某信道所能通过的“最高数据率”,单位bit/s
吞吐量:单位时间内通过某个网络的实际数据量
时延:数据从网络的一端传送到另一端所需的时间。也成为延迟或迟延
发送时延主机或路由器发送数据帧所需要的时间,也称传输时延发送时延=数据帧长度(bit)/发送速率(bit/s)
传播时延电磁波在信道中传播一定距离需要花费的时间传播时延=信道长度(m)/电磁波在信道上的传播速率(m/s)
处理时延主机或路由器在收到分组时需要花费一定时间进行处理
排队时延分组进入路由器后要先在输入队列中排队等待处理,路由器确定转发接口后,还要在输出队列中排队等待转发
计算机网络 ...
操作系统
进程的描述与控制内核态与用户态什么时候进入内核态:系统调用、异常、中断
为什么要有线程在不引入线程概念的操作系统中,进程是资源分配和独立调度的单位。进程的创建、撤销和切换需要较大的时空开销,因此系统中进程的数量和进程切换的频率受到限制,影响系统并发性的提高。引入线程作为独立调度和分派的单位,不独立占有资源,而是与其他线程共享统一进程的资源,减小了系统的时空开销
进程和线程的区别
进程是资源分配的基本单位,线程是独立调度的基本单位
地址空间资源:不同进程的地址空间是相互独立的;同一进程的不同线程共享同一地址空间
通信:进程的通信需要使用操作系统提供的进程间通信机制;同一进程的不同线程可以通过读写全部变量通信
系统开销:创建和撤销进程时,需要系统为之分配和回收资源,操作系统付出的开销远大于创建和撤销线程时的开销。进程切换时,涉及到整个当前进程的CPU环境的保存的新的CPU环境的设置;切换线程时,只需保存和设置少量寄存器的内容,开销很小
孤儿进程一个父进程退出后,它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程,孤儿进程将被init进程收养
进程中断的过程
保护现场,保护中 ...
珂学上网
记录珂学上网的一些方法,主要是使用vps搭建珂学上网服务。
环境:vultr购买vps,系统centos7。
Shadowsocks首先安装shadowsocks所需工具,在终端中输入以下指令
12345yum update -yyum install wget -yyum install gcc -yyum install make -yyum install python36 -y
接下来下载shadowsocks
1wget --no-check-certificate -O shadowsocks.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh
配置安装shadowsocks
12chmod +x shadowsocks.sh./shadowsocks.sh 2>&1 | tee shadowsocks.log
根据提示设置端口密码等。
v2ray直接傻瓜式安装,执行指令
1bash <(curl -s -L https://g ...
模板
一些算法的模板,c++语言
字符串AC自动机题意:在文本串中查询每个模式串出现的次数,但是不可重叠。例:aba在abababa中出现了两次
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104#include <bits/stdc++.h>using namespace std;typedef long long LL;const int N = 600009;class AC{public: void init() { for(int i = 0; i < N; i++) { for(int j = 0; j < 2 ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment








