队列
2.1 部分有界队列对于部分的(partial)入队/出队方法而言,没有失败的选择。当队列已满或者为空时,不能放弃,必须等待既定条件成立(即有空位或元素可用)。
实现方式很简单,注意到__这里不使用空转锁,而是使用管程锁(即通过睡眠唤醒机制!)__
2.2 无锁(Lock-free)的无界队列这个标题,表示出not wait-free
2.3 内存回收和ABA问题CAS原语的典型问题ABA问题:采用 CAS 原语修改共享变量,变量值从 A 变为 B,然后又变回 A,但指令不能区分前后两个 A 值。这被称为 ABA 问题,是 CAS 原语的典型问题。
解决ABA问题,最好的方法就是引入__时间戳概念__。在 Java 中,AtomicStampedReference 类将引用和时间戳封装在一起。
2.4 小结
3.1 无界的无锁栈这个真没什么好说的,很简单的思想
3.2抵消回退栈思想很简单,就是将push和pop进行匹配!
gdm_sddm切换
使用kde,默认display manager是ssdm,gnome则是gmd3,因此删除kde的ssdm的时候,emm直接黑屏了,所以需要重启gdm,很简单systemctl start gdm,即可(首先需要startx,启动 x server)
(t,n)门限秘密共享
门限密码学基于秘密共享
目标将秘密S拆分成n个份额s0,…,sn-1,其中 通过t个或更多的份额可以很容易的计算出S 通过t-1个或更少的份额恢复不出关于S的任何信息
最简单的(t,n)秘密分享方案step 1:(n, n)
step 2: (t, n)
Shamir秘密分享方案
Shamir秘密分享方案的过程
简单的RSA门限签名方案
需要注意到,这里RSA的情况需要所有的子密钥,引出更高级的APSS
APSS的密钥拆分
具体实现
编译第二次作业
常用LLVM PASS 记载:常用类:const Function, const PHINode, const Argument, (省略const), Value, CallInst, BasicBlock, Instruction, ReturnInst
常用api:判断是否为某一个类:举例: if(const Argument * arg = dyn_cast<Argument>(xxxx) )
CallInst获取参数:CallInst->getArgOperand(arg_index)
获取返回值:ReturnInst->getReturnValue()
获取函数的调用点:for(const User user: Function->users()){
// 这里的Function代表Function的一个对象
}
遍历整个Modulefor (const Function &f : Module m) {
for (const BasicBlock &b : f) {
...
This is wind40
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










