Fork me on GitHub

随笔分类 -  算法(Algorithm)

摘要:在早期的计算机领域,限流技术(time limiting)被用作控制网络接口收发通信数据的速率。 可以用来优化性能,减少延迟和提高带宽等。 现在在互联网领域,也借鉴了这个概念, 用来为服务控制请求的速率, 如果双十一的限流, 12306的抢票等。 即使在细粒度的软件架构中,也有类似的概念。 两种常用... 阅读全文
posted @ 2015-02-08 21:53 张善友 阅读(16607) 评论(1) 推荐(9) 编辑
摘要:DES是一种对称加密(Data Encryption Standard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。一般密码长度为8个字节,其中56位加密密钥,每个第8位都用作奇偶校验。DES算法一般有两个关键点,第一个是加密模式,第二个是数据补位,加密模式的主要意义就是,加密算法是按块进行加密的,例如 DES ,是 64Bit 一个块的进行加密,就是每次加密 8 个字节,因此每次输入八个字节的明文输出八个字节密文,如果是 16 个字节,那么分成两个块依次进行加密,问题就出现在这里,如果明文是 1234567812345678,分块分别进行加密,那么加密 阅读全文
posted @ 2013-10-02 09:02 张善友 阅读(3812) 评论(1) 推荐(2) 编辑
摘要:负载均衡的基本算法,主要有以下几种(参考F5产品):随机:负载均衡方法随机的把负载分配到各个可用的服务器上,通过随机数生成算法选取一个服务器,然后把连接发送给它。虽然许多均衡产品都支持该算法,但是它的有效性一直受到质疑,除非把服务器的可运行时间看的很重。轮询:轮询算法按顺序把每个新的连接请求分配给下一个服务器,最终把所有请求平分给所有的服务器。轮询算法在大多数情况下都工作的不错,但是如果负载均衡的设备在处理速度、连接速度和内存等方面不是完全均等,那么效果会更好。加权轮询:该算法中,每个机器接受的连接数量是按权重比例分配的。这是对普通轮询算法的改进,比如你可以设定:第三台机器的处理能力是第一台机 阅读全文
posted @ 2012-11-09 21:14 张善友 阅读(27600) 评论(3) 推荐(3) 编辑
摘要:LZO 是致力于解压速度的一种数据压缩算法,LZO 是 Lempel-Ziv-Oberhumer 的缩写。这个算法是无损算法,参考实现程序是线程安全的。实现它的一个自由软件工具是lzop。最初的库是用 ANSI C 编写、并且遵从 GNU通用公共许可证发布的。现在 LZO 有用于 Perl、Python 以及 Java 的各种版本。代码版权的所有者是 Markus F. X. J. Oberhumer。LZO 库实现了许多有下述特点的算法:* 解压简单,速度非常快。 * 解压不需要内存。 * 压缩相当地快。 * 压缩需要 64 kB 的内存。 * 允许在压缩部分以损失压缩速度... 阅读全文
posted @ 2012-10-05 21:19 张善友 阅读(5056) 评论(1) 推荐(2) 编辑
摘要:朴素贝叶斯分类是一种十分简单的分类算法,叫它朴素贝叶斯分类是因为这种方法的思想真的很朴素,朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。通俗来说,就好比这么个道理,你在街上看到一个黑人,我问你你猜这哥们哪里来的,你十有八九猜非洲。为什么呢?因为黑人中非洲人的比率最高,当然人家也可能是美洲人或亚洲人,但在没有其它可用信息下,我们会选择条件概率最大的类别,这就是朴素贝叶斯的思想基础,维基百科上的词条http://zh.wikipedia.org/wiki/%E8%B4%9D%E5%8F%B6%E6%96%AF%E 阅读全文
posted @ 2012-08-11 22:59 张善友 阅读(7495) 评论(1) 推荐(1) 编辑
摘要:微博内容长度的计算方法(不一定完全无误,仅提供一个思路): public static int GetWeiboContentLength(string weiboContent) { var max = 140; var surl = 11; var urlCount = 0; RegexOptions ops = RegexOptions.Compiled; Regex regex = new Regex(@"http://[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+([-A-Z0-9a-z_\$\.\+\!\*\(\)\/,:;@&=\?\... 阅读全文
posted @ 2012-07-09 23:08 张善友 阅读(1118) 评论(0) 推荐(0) 编辑
摘要:EMA表示的是指数平滑移动平均,其函数的定义为Y=EMA(X,N) 则Y=[2*X+(N-1)*Y']/(N+1), 其中Y'表示上一周期Y值。求X的N日指数平滑移动平均,它真正的公式表达是:当日指数平均值=平滑系数*(当日指数值-昨日指数平均值)+昨日指数平均值;平滑系数=2/(周期单位+1)EMA引用函数在计算机上使用递归算法很容易实现,但不容易理解。以下,列举分析说明EMA函数。X是变量,每天的X值都不同,从远到近地标记,它们分别记为X1,X2,X3,….,Xn当N=1,则EMA(X,1)=[2*X1+(1-1)*Y’]/(1+1)=X1当N=2,则EMA(X,2)=[2 阅读全文
posted @ 2011-12-15 22:27 张善友 阅读(8224) 评论(0) 推荐(1) 编辑
摘要:易于使用和高性能动态排序库支持类似 SQL 语法和嵌套/复杂的表达式,使用 System.Linq.Expression 动态生成快速比较器。 阅读全文
posted @ 2008-10-09 21:52 张善友 阅读(1656) 评论(0) 推荐(1) 编辑