Monad Reader就是一种函数的组合.在scalaz里函数(function)本身就是Monad,自然也就是Functor和applicative.我们可以用Monadic方法进行函数组合: import scalaz._ import Scalaz._ object decompose { //两个测试函数 val f = (_: Int) + //> f : Int => Int = <function1> val g = (_: Int) * //> g : In…
背景 现有个处理股票行情消息的系统,其架构如下: 由于数据量巨大,系统中启动了 15 个线程来消费行情消息.消息分配的策略较为简单:对 symbol 的 hashCode 取模,将消息分配给其中一个线程进行处理. 经过验证,每个线程分配到的 symbol 数量较为均匀,于是系统愉快地上线了. 运行一段时间后,突然收到了系统的告警,但此时并非消息峰值时间段.经过排查后,发现问题出现在 hash 函数上: 虽然每个线程被分配到的 symbol 数量较为均衡,但是部分热门 symbol 的报价消息量会…
本文搜集了一些字符串的常用hash函数. 范例1:判断两个单词是否含有相同的字母,此时我们可以用hash做.例如,“aaabb”与"aabb"含有相同的单词.(参考:http://kmplayer.iteye.com/blog/656782) #include <iostream> using namespace std; int hash(const char* a) //hash函数设计到位,节约了空间,当然我们也可以用bitset { int tmp=0; while…
C#能做的,F#基本都能做,但F#能做的,C#未必能做. F#中的函数可以把几个函数组合起来使用.下面的例子是把由 function1 和 function2 这两个函数通过运算符“>>”(或“<<”)组合而成funuoction3,然后可以拿function3使用. let function1 x = x + 1 let function2 x = x * 2 let function3 = function1 >> function2 let result5 = f…
基于Hash函数的PRNG 流程非常类似于对称密码的CTR工作模式 算法的伪码如下 m = ⌈n/outlen⌉ data = V W = the null String for i = 1 to m wi = H(data) W = W || wi data = (data + 1) mod 2seedlen return leftmost n bits of W 说明: V是种子,seedlen为V的长度,n是需要的输出位数,H是Hash函数 对于诸如SHA-2等强密码学Hash算法,目前还…