Avatar_small

RSA 加密周边

主要参考: 饮水思源, 阮一峰, 以及自由意志的公开课. RSA加密算法使得加密简单, 但解密困难. 就像向存钱罐中存钱容易, 取钱困难. 其中之所以困难在于加密解密双方不对称, 如对称的有DES(被人怀疑有后门). 加密所用公钥是$(n, e)$, 解密所用密钥是$(n, d)$, 其中$ed ≡ 1 (mod\ \psi(n))$. $\psi(n)$是Eule...

Avatar_small

《冰雪奇缘》之缘——A站弹幕 JSON 转 crt

都是《冰雪奇缘》惹的祸,不仅画面美仑美奂,音乐激荡人心,而且还玩多语言版本的主题曲。 而 you-get 竟助纣为虐,把歌词给下回来了!只叹 soimort 没有好人做到底,留一个语义不详的 JSON 让我情何以堪。 好在 muzuiget 才识不凡,有码略释其义,遂如我光影、声音、文字三位一体之愿! 编成代码数十行,只为女王歌一曲: #!/usr/bin...

Avatar_small

FUSE 初体验:Android dedupefs

自打知道 FUSE 以来都觉得亲手写一个 FUSE 文件系统是很好玩的事情,但是因为没好的自己能够很快实现的点子所以一直没动手。前段时间需要从 Android xrecovery 备份中取得一旧版本的应用,才决定动手的,顺便也练习一下很久没怎么用到的 C 语言。至于为什么不用 Python,好像那个 Python 绑定不太稳定的样子,Python 3 版更是如此。而且我也不希望效率太差...

Avatar_small

c/c++ 宏

c语言中宏还是挺重要的东西,c++中由于有了内联函数和模板,而宏编译器不作任何宏参数类型检查,又极易容易出错,宏慢慢会被取代。 我们可能用的最多的就是利用宏定义常量,但我们经常被建议不要这样做,而应该使用const定义常量,因为const常量有类型,编译器会做更多的检查而减少错误。 我们也经常定义类似函数的宏,最常见的如 #define MIN(a, b) ((a...

Avatar_small

不用第三个变量, 交换两变量的值 (C++)

解法还挺多的, 这里有3种。

Avatar_small

虚函数和抽象类

1 1 1 1.静态成员函数不能声明为虚函数,因为静态函数不属于某一个对象,没有多态性的特征。 2.构造函数不能是虚函数,虚函数作为运行时的多态性的基础,主要是针对对象的,而构造函数是在对象产生之前运行的。 3.内敛成员函数不能声明为虚函数,如果将在类声明时就定义内容的成员函数声明为虚函数,此时不是内敛函数。 4.析构函数往往被定义为虚函...

Avatar_small

内存分配方法及字符(串)操作小结

一. 内存分配方法 内存分配方法在不同的语言下有不同的方法,但是原理都大同小异。下面主要就 C 和 C++ 中的内存分配方法做分析。 C 中的内存分配方法主要有 malloc/free 和 memset 这两种。malloc/free 也是动态申请内存和释放内存,具体使用很简单: int **a; a = (int **) malloc(m * sizeof...

Avatar_small

R中的排列组合

组合: 从N中选择K个,用函数 choose(N,K) 阶乘:factorial(N) 排列:P(N,K)=choose(N,K) * factorial(K)

Avatar_small

LRU Cache @ LeetCode (Python)

Python的dictionary查找元素O(1)时间, 但缺点是无序。而collections.OrderedDict是有序的, 后加入的元素一定排在先加入元素的后面, 操作和dictionary类似: import collections a = collections.OrderedDict() a[1] = 10 # 若1在a中就更新其值, 若1不在a中就加入(1, ...

Avatar_small

meliae内存分析-基本用法

python的内存分析工具meliae,挺好用的. 示例 1.记录程序的内存使用信息 import time # 此处是可能发生内存泄露的地方 def main(): pass if __name__ == '__main__': # 通过循环执行,将泄露的内存积累放大 while True: ...

Avatar_small

Word Ladder @ LeetCode (Python)

使用BFS, 单词和length一块记录, dict中每个单词只能用一次, 所以用过即删。dict给的是set类型, 检查一个单词在不在其中(word in dict)为O(1)时间。设单词长度为L, dict里有N个单词, 每次扫一遍dict判断每个单词是否与当前单词只差一个字母的时间复杂度是O(N*L), 而每次变换当前单词的一个字母, 看变换出的词是否在dict中的时间复杂度是O...

Avatar_small

const总结

1 1.常量 声明格式:const <数据类型> <常量名> = <表达式>;常量定义时必须初始化。 2.常指针 声明格式:<数据类型> *const <指针名> = <地址>;指针本身的值不能改变。 3.指向常量的指针 声明格式:const <数据类型>...

Avatar_small

让我们收养孤儿进程吧

稍微了解一点类 UNIX 系统的进程管理的都知道,当一个进程的父进程死亡之后,它就变成了孤儿进程,会由进程号 1 的 init 进程收养,并且在它死亡时由 init 来收尸。但是,自从使用 systemd 来管理用户级服务进程之后,我发现 systemd --user 管理的进程总是在它之下,即使进程已经 fork 了好几次。systemd 是怎么做到的呢? 对一个软件的实现有...

Avatar_small

python 执行过程

参考资料 Dive into python 在Dive into python第五章中有一个提取MP3信息的脚本,不是很理解现在整理一下思路 """Framework for getting filetype-specific metadata. Instantiate appropriate class with file...

Avatar_small

POJ 2949 Word Rings

题意:给你一些单词,如果一个单词的后两个字母和另外一个单词的前两个字母一样,那么这两个单词就可以连在一起,然后让你求单词成环之后,最大的平均权值。 解法:求平均权值最大的环路? 记得一本书上说过,假如所有的边都在环中,其实就是:E1+E2+E3+E4+....+En = mid*n;转换一下即为:E1-mid+E2-mid+...En-mid = 0;这是权值相等的时候。 要使...