eval函数在python中做数据类型的转换还是很有用的。它的作用就是把数据还原成它本身或者是能够转化成的数据类型。那么eval和ast.literal_val()的区别是什么呢?eval在做计算前并不知道需要转化的内容是不是合法的(安全的)python数据类型。只是在调用函数的时候去计算。如果被计算的内容不是合法的python类型就会抛出异常。ast.literal则会判断需要计算的内容计算后是...
堆内存的分代回收 Java针对堆的垃圾回收,将堆分为了三个较小的部分:新生代、老年代、持久代。新生代主要使用复制和标记-清除垃圾回收算法,年老代主要使用标记-整理垃圾回收算法,因此java虚拟中针对新生代和年老代分别提供了多种不同的垃圾收集器。1. 分代回收的依据:
对象生存时间长短:大部分对象在Young期间就被回收。
不同代采用不同的垃圾回收策略:对存活时间不同的对象分类,用不同的垃圾回收...
// 位段赋值的例子
#include
int main()
{
unsigned char puc[4];
struct tagPIM
{
unsigned char ucPiml;
unsigned char ucData0 : 1;
unsigned char ucData1 : 2;
unsigned char ucData2 : 3;
}*pstPimDat...
贪心算法之赫夫曼编码
编码基本介绍
等长编码
变长编码
前缀码
赫夫曼编码的构造
贪心选择是安全的
最优子结构
编码实现
编码树节点TreeNode
优先队列的实现
赫夫曼编码的构建
maincc和Makefile
编译运行贪心算法之赫夫曼编码赫夫曼编码(Huffman coding)是一种编码方式,赫夫曼编码是变长编码的一种。可以有效的压缩数据,一般可以节约20%~90%的空间,这一般是由文件的数...
Problem:
Merge k sorted
linked lists and return it as one sorted list. Analyze and describe its complexity.
Solution:
采用胜者树的方法,胜者树介绍:胜者树,假如链表数组长度为n,链表元素总个数为k,那么时间复杂度为O(k*log(n))
题目大意:
...
java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送、者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型。下面有两种方式。
方法一
/**
* int到byte[]
* @param i
* @return
*...
转载自:万一的博客 之前已经有了两种线程同步的方法: CriticalSection(临界区)和Mutex(互斥)吗,这两种同步方法差不多,只是作用域不同 CriticalSection类似于只有一个蹲位的公共厕所,只能一个个地进 Mutex 对象类似于接力赛中的接力棒,某一时刻只能有一个人...
元组比较:1 >>> (0, 1, 2) >> (0, 1, 2000000) < (0, 3, 4)4 True列表的多字段排序:sorted_list = [ [1, 2, 3, 4, 5, 6, 7, 8], [3, 2, 6, 1, 8, 4, 6, 1], [8, 3, ...
我们一般使用如下的dispatch方法: 解释: 第一句是异步执行,第二句是延迟异步执行,第三句是先后台运行,再更新UI dispatch_get_main_queue 代表应用主线程执行,可以在内部更新UI(并不会阻塞主线程) dispatch_get_global_queue 代表在系统后台运行...
四个系统内核对象(事件、互斥、信号、计时器)都是线程同步的手段,从这也能看出处理线程同步的复杂性;不过这还不是全部,Windows Vista开始增加了 Condition variables(条件变量)、Slim Reader-Writer Locks(读写锁)等同步手段. 不过最简单、最轻...