Avatar_small

Scala随机数生成及复杂Generator的构造

在程序中使用随机数的需求很普遍,有时候我们还需要用到一些更加复杂的随机数据结构,比如生成一个随机的列表或者二叉树等,探索性测试可以算一个典型的应用场景。 在Scala中生成一个随机整数有现成的函数可用:scala.util.Random.nextInt()。让我们看看我们如何基于它来用优雅简洁的程序构造一些更复杂的generator。 我们首先要对Generator的功...

Avatar_small

Splay伸展树

Splay伸展树 Splay是二叉查找树,不是一颗平衡树,但可以通过自调整达到一种近似平衡的情况。Splay在连续M次操作中均摊时间复杂度是M*logn,其中n为节点的个数,M为操作的次数。Splay的操作与特点将在以下介绍。 当访问一个节点时,立即把当前访问的节点旋转到根节点,让访问(插入)的节点立马成为新的根节点。 旋转操...

Avatar_small

java同步工具Phaser

从java7开始在concurrent包中加入了Phaser类,它几乎可以取代CountDownLatch和CyclicBarrier, 其功能更灵活,更强大,支持动态调整需要控制的线程数。下面以一个具体实例说明这个Phaser类的用处,相信理解这个例子后,其功能不言而喻。 例子:有若干考生参加考试,考试科目是统一的,考试顺序为语文、数学、英语共三门,若其中一门挂科,则不能参加...

Avatar_small

目前在Solaris下面安装开源软件唯一的好办法——pkgutil

这个标题一点都不夸张……我近来在虚拟机上玩solaris10,但是发现系统自带的软件普遍比较老。在上古传说中,可以在一个叫做sunfreeware的网站上面下载软件,但是竟然发现这个网站开 始收费了!真是时运不济。于是我想要另寻出路。我花了很长时间搜索,找到了一个sunfreeware的镜像,可惜软件都是2006年的;后来我又找到了 一个companion ...

Avatar_small

ext4文件系统浅析----跨度之大的inode号

最近在研究ext4文件系统,系统同道之人能共同研究、探讨 背景: 在根目录底下 root@f303server:/mnt/sde3# ls -i 14 2.txt 786433 dir1 1048577 dir3 1179649 mkfs 15 3.txt 917505 dir2 11 lost+found 13 sde3.txt ...

Avatar_small

linux中ext4文件系统目录项管理

Ext4文件系统目录项有两种实现方式: 方式一:线性方式 该方式的目录项以ext4_dir_entry_2的结构一个接连一个直接存储在目录结点所指向的block块中。(缺省配置使用ext4_dir_entry_2这个结构) 方式二:Hash树的方式 若目录下的文件数量很多,则若按照线性方式查找对应文件名的信息则会很低效。Hash...

Avatar_small

angularjs过滤器(number)

用来精确浮点数(指定小数点位数). 在html中用法 {{ number_expression | number : fractionSize}} 在js中用法 $filter('number')(number, fractionSize) 参数 number 待精确的数字 factio...

Avatar_small

判断端口通不通的几种方法

通常使用"telnet ip port"判断端口通不通. 有其它方法吗?先看下面的几种方法 准备环境 启动一个web服务器,提供端口. [wyq@localhost ~]$ python -m SimpleHTTPServer 8080 Serving HTTP on 0.0.0.0 port 8080...

Avatar_small

BZOJ2434 [Noi2011]阿狸的打字机 AC自动机+fail树+dfs序+树状数组

AC自动机+fail树+dfs序+树状数组 建一个AC自动机,然后在上面倒着建出fail树,求出dfs序,再用树状数组搞一搞就好了。。。

Avatar_small

BZOJ3172 [Tjoi2013]单词 AC自动机+fail树

AC自动机+fail树

Avatar_small

使用基数排序(Radix Sort)排序字符串

基数排序(Radix Sort)是 非比较排序算法,其时间复杂度是线性的, 即\(O(n)\)。刚刚接触这个算法的时候,本以为该算法只适合输入时非负整数的情况, 不过最近在整理以前写的排序算法的Demo时,偶然想到该算法应该也可以用于字符串的排序。 根据算法的特点,直观感觉是:待排序字符串应该都是等长的。不过, 只要稍加改造,该算法也可以用于不等长字符串排序。

Avatar_small

java 使用Exchanger类实现两个线程交换数据

java.util.concurrent包中有许多涉及多线程并发的工具,使用这些现成工具可以大大简化编码,并且安全高效。 Exchanger提供了一个同步点,即调用exchange方法,当两个线程都到达这个同步点时,两个线程交换数据。 比如,有两个人,一个人需要买一本书,另一个人当然卖一本书,这两个人约定在某地交易,但这两个人距离约定地不同,到达目的地的时间也不同,先到...

Avatar_small

ubuntu14.04 编译hadoop2.5

ubuntu13.10或以下版本也可以编译,只是源中maven和protobuf都版本太低,需要自己下源码重新编译安装,很繁琐。 hadoop2.5有编译好的发布包,但是默认是64位的,老是出现以下错误 OpenJDK Server VM warning: You have loaded library /hadoop/lib/native/libhadoop.so.1....

Avatar_small

c++11, shared_ptr使用数组

最近被项目垃圾的内存管理搞的特别头大,正好这段时间在看《深入理解C++11:C++11新特性解析与应用》,了解了些c++11的特性。于是想着用c++11高大上的智能指针来做内存管理。 所谓高大上,相对于各种天生就支持垃圾回收的语言(如:java,python)来说也是个废才。支持个数组都麻烦的很,各方考证,下面写一个关于 shared_ptr 使用数组的小样例,主要参考 htt...

Avatar_small

[Mac OSX]Error: The `brew link` step did not complete successfully

When I use brew to install PySide for Julia's PyPlot package, there is an error saying "The `brew link` step did not complete successfully" (see figure below)