<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[steedhorse的专栏]]></title><description><![CDATA[throw自己的exception，让别人去catch吧。。。（欢迎关注 http://weibo.com/steedhorse）]]></description><link>https://blog.youkuaiyun.com/steedhorse</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; steedhorse]]></copyright><item><title><![CDATA[测试真是个细致活]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/43056057</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/43056057</guid><author>steedhorse</author><pubDate>Fri, 23 Jan 2015 15:00:40 +0800</pubDate><description><![CDATA[测试真是个细致活。产品某模块里有一种实体，行为主要受三个参数控制，用户可以修改这它们。其中两个参数可以等于0，此时产生一种退化形式的实体；另一个不可以等于0。QA都测过了，大于0，正常；等于0，实体退化成简单形式，显示、打印也都正常；小于0，直接拒绝修改，都是正确的行为。却没想到，这种退化的实体在后续操作时会有问题。比如用鼠标选中后，实体上要显示一些便于用户操作的信息，此时程序挂了。这个问题最终被...]]></description><category></category></item><item><title><![CDATA[密码学简介（四）]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/7563351</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/7563351</guid><author>steedhorse</author><pubDate>Sun, 13 May 2012 23:54:52 +0800</pubDate><description><![CDATA[C++加密解密库
信息安全对各种信息系统重要性无庸质疑。因此，用于实现软件信息系统的各种编程语言都会有相应的与加密解密有关的库，有的语言（如Java）在其标准库中直接提供基础组件，有的语言（如C++）则需使用第三方库。各种库中带“crypto-”前缀的模块，基本都是用来做这个的。
值得一提的是，开源操作系统Linux的内核源码中也有加解密模块，“crypto”源码目录下的便是。这不难理解：OS]]></description><category></category></item><item><title><![CDATA[密码学简介（三）]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/7085991</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/7085991</guid><author>steedhorse</author><pubDate>Mon, 19 Dec 2011 23:39:30 +0800</pubDate><description><![CDATA[报文签别码
散列函数的另一种用法与报文鉴别有关。
有时候，通信双方不仅关心通信内容的私密性，对信息是否被篡改过（内容完整性）更为关心；或者，他们根本不关心信息的私密性而只关心信息的完整性。亦或者，软件的不同层次可能负责不同的任务，比如底层负责加解密，上层完成完整性鉴别。报文鉴别码可以解决这类需要。
报文鉴别码，英文是Message Authentication Code，简写为MAC（注意它]]></description><category></category></item><item><title><![CDATA[密码学简介（二）]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/7025676</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/7025676</guid><author>steedhorse</author><pubDate>Wed, 30 Nov 2011 01:02:02 +0800</pubDate><description><![CDATA[散列函数
散列函数，也叫杂凑函数，实际就是哈希（Hash）函数，“散列函数”是信息安全领域惯用的译法。
不论从概念还是从形式上看，它跟数据结构课程上讲的哈希函数的确如出一辙：基于任意输入都产生定长的输出，且好的散列函数值域会分布得尽量平均。
然而，信息安全领域使用的散列函数却有着诸多安全方面的要求。像针对字符串的每个字节不断乘以一个素数并取模的那种哈希函数，在数据结构领域用于构造关联数组已经]]></description><category></category></item><item><title><![CDATA[密码学简介（一）]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/6974744</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/6974744</guid><author>steedhorse</author><pubDate>Tue, 15 Nov 2011 21:28:56 +0800</pubDate><description><![CDATA[本文简单介绍密码编码学领域的一些基本原理，基本算法和基本理念。仅针对原先对此领域无甚了解的朋友做入门之用。
加密解密是信息安全领域的基本技术，加解密系统中的基本概念从下面这张常规加密的简化模型中就可以知道个大概。

从图中可以看出，明文输入在密钥K1的作用之下，通过加密算法（如DES）转换成密文，于是可以发送给通信的接收方；接收方则可以通过解密算法以及密钥K2将密文恢复成明文。
注意通信内]]></description><category></category></item><item><title><![CDATA[咱也来做面试题（一）]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/6892569</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/6892569</guid><author>steedhorse</author><pubDate>Fri, 21 Oct 2011 00:44:05 +0800</pubDate><description><![CDATA[身边有些做Java开发的朋友，找工作时常常被考到一道关于字符串的题目。题目倒是很基础，然而根据朋友们事后的描述，有理由认为有的面试官自己都没有完全搞清楚这个问题。此外，在优快云论坛中我也多次看到一些朋友在这个问题上的迷惑。索性把自己的理解写下来吧。
 
题目是一道简单的小程序，像下面这样：
public class Test1 {
 public static void main(Str]]></description><category></category></item><item><title><![CDATA[漫谈C++内存分配失败]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/6886653</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/6886653</guid><author>steedhorse</author><pubDate>Wed, 19 Oct 2011 00:26:44 +0800</pubDate><description><![CDATA[没错，是“漫谈”，而且“漫”得有点乱。然而，抛砖尚可引玉，想到的事情，纵然脉络不是很畅，写下来也不是坏事。开卷有益，动笔也有益。
 
一切缘自一位C语言开发经验非常丰富的的朋友问我的一个问题。朋友问：“C++中的new在分配内存失败时会抛出异常（std::bad_alloc）而不返回0（一些老的编译器可能还在返回0，但这样的编译器实在“太老了”），这跟C程序员的做法很不一样。而且，许多C++程]]></description><category></category></item><item><title><![CDATA[右值引用简介（中英文对照）]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/6847937</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/6847937</guid><author>steedhorse</author><pubDate>Fri, 07 Oct 2011 10:56:50 +0800</pubDate><description><![CDATA[[译注：原文出处：http://www.artima.com/cppsource/rvalue.html]
[译注：本文介绍的“右值引用”是C++11的新特性]
A Brief Introduction to Rvalue References
by Howard E. H]]></description><category></category></item><item><title><![CDATA[PuTTY Configuration Memo]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/6840586</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/6840586</guid><author>steedhorse</author><pubDate>Sun, 02 Oct 2011 15:55:56 +0800</pubDate><description><![CDATA[(1) In "Terminal / Features", turn on "Disable application keypad mode", otherwise, the number keys on paypad would not behave well in appli]]></description><category></category></item><item><title><![CDATA[好长一句话]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/6839410</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/6839410</guid><author>steedhorse</author><pubDate>Sat, 01 Oct 2011 18:13:52 +0800</pubDate><description><![CDATA[读CS:APP，见一段落近乎一句呵成，虽不费解，仍觉恢宏，遂摘录此长句： 
Buffer overflow attacks have become so pervasive and have caused so many problems with computer syste]]></description><category></category></item><item><title><![CDATA[技术翻译感悟——在“原汁原味”与“不露痕迹”之间寻求平衡]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/6807914</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/6807914</guid><author>steedhorse</author><pubDate>Fri, 23 Sep 2011 23:43:08 +0800</pubDate><description><![CDATA[关于翻译的品质，我们都知道严复先生在一百多年前提出了“信”、“达”、“雅”三重原则。这三重原则成为百年来译者们追求的目标。实际上，关于翻译，鲁迅先生也有一段很有说服力的见解，它主要从“信”和“顺”两方面讨论翻译的质量。
翻译必须有异国情调，就是所谓洋气。其实世界上也不会有完全归化的译文，倘有，就是貌合神离，从严辨别起来，它算不得翻译。凡是翻译，必须兼顾着两面，一当然力求易解，一则保存着原作的丰姿]]></description><category></category></item><item><title><![CDATA[两个古老问题的递归算法。]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/6736718</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/6736718</guid><author>steedhorse</author><pubDate>Wed, 31 Aug 2011 17:45:22 +0800</pubDate><description><![CDATA[1. 全排列
思路1：递归分治（基于交换）
#include 

void perm(int* a, int start, int end);
void swap(int& m, int& n);
void output(const int* a, int size);

int main() {
	int a[5] = {1, 2, 3, 4, 5};
	perm(a, 0,]]></description><category></category></item><item><title><![CDATA[读刊摘抄]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/6538704</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/6538704</guid><author>steedhorse</author><pubDate>Sat, 11 Jun 2011 22:12:00 +0800</pubDate><description><![CDATA[某日午休时间，看到同事桌上有一本卷了角的2011年第1期《程序员》杂志，随手翻开一页，是一篇访谈，题目叫“Java的命运”，是Common Lisp专家Peter Seibel对Google公司首席Java架构师Joshua Bloch的访谈（郝培强 译）。从这篇文章里，我并没有对有关Java命运的讨论留下较深印象，然而，文中诸多妙语读起来却酣畅淋漓，便随手摘录了下来：（因核心内容并非原创，故标为]]></description><category></category></item><item><title><![CDATA[单元测试的意义]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/6166197</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/6166197</guid><author>steedhorse</author><pubDate>Thu, 27 Jan 2011 11:37:00 +0800</pubDate><description><![CDATA[一般认为，单元测试有四种作用：
（1）使代码可以放心修改和重构；
（2）迫使程序员从调用者而不是实现者的角度设计软件模块；
（3）迫使程序员将软件模块写得易于测试和调用，从而有利于解耦；
（4）测试本身可作为被测代码的用法说明，从而替代了一部分文档功能。 
如果更深入地]]></description><category></category></item><item><title><![CDATA[锁的代价]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/6163083</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/6163083</guid><author>steedhorse</author><pubDate>Tue, 25 Jan 2011 14:59:00 +0800</pubDate><description><![CDATA[秃子说并发程序的性能瓶颈常常在于锁的滥用。我对此虽深信不疑，却一直没有量化的感性认识。刚才写了个浮点运算小程序一跑，结果有锁无锁性能相差8到10倍。注意，测试程序是单线程的，也就是说这还只是没有实际竞争时的差别。]]></description><category></category></item><item><title><![CDATA[说说C语言运算符的“优先级”与“结合性”]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/5903974</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/5903974</guid><author>steedhorse</author><pubDate>Fri, 24 Sep 2010 23:58:00 +0800</pubDate><description><![CDATA[论坛和博客上常常看到关于C语言中运算符的迷惑，甚至是错误的解读。这样的迷惑或解读大都发生在表达式中存在着较为复杂的副作用时。但从本质上看，仍然是概念理解上的偏差。本文试图通过对三个典型表达式的分析，集中说说运算符的优先级、结合性方面的问题，同时说明它们跟求值过程之间存在的区别与联系。
 
优先级决定表达式中各种不同的运算符起作用的优先次序，而结合性则在相邻的运算符的具有同等优先级时，决定表达式]]></description><category></category></item><item><title><![CDATA[二进制补码的特性]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/5795582</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/5795582</guid><author>steedhorse</author><pubDate>Sat, 07 Aug 2010 17:14:00 +0800</pubDate><description><![CDATA[C语言是一种较接近机器底层的语言，但它的语言标准中并没有规定有符号数要用二进制补码来表示；可事实上几乎所有平台上有符号数都用二进制补码来表示，它已成为“事实上的标准”，这无疑源于二进制补码巧妙的设计，这种巧妙使得用它来表示有符号数时会带来很多有用的或有趣的特性。]]></description><category></category></item><item><title><![CDATA[第二届云计算大会上拍的几张照片]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/5635424</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/5635424</guid><author>steedhorse</author><pubDate>Mon, 31 May 2010 00:02:00 +0800</pubDate><description><![CDATA[张亚勤先生的“云计算定义”： 微软的云平台和技术： 黄铠教授“互联网云中的基本概念”： 黄铠教授的“云服务栈”： 对了，在这次大会上，优快云的蒋涛老大主持过一个论坛，印象中他说的最多的一个词是“分享”。可惜他主持的时候相机没电了。- -b 再附一张北京夜景： 下面是第二天被几个哥们拉去唱歌的地方……]]></description><category></category></item><item><title><![CDATA[递归-回溯法求解8皇后问题（C）]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/5604869</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/5604869</guid><author>steedhorse</author><pubDate>Tue, 18 May 2010 17:29:00 +0800</pubDate><description><![CDATA[无意中翻出了N年前写的递归-回溯法求解8皇后问题，干粹塞到博客中吧。#include #include #include #define QUEENS 8 // 记录解的序号的全局变量。int iCount = 0; // 记录皇后在各列上的放置位置的全局数组。int Site[QUEENS]; // 递归求解的函数。void Queen]]></description><category></category></item><item><title><![CDATA[蒙特卡罗算法计算圆周率PI（C++）]]></title><link>https://blog.youkuaiyun.com/steedhorse/article/details/5532489</link><guid>https://blog.youkuaiyun.com/steedhorse/article/details/5532489</guid><author>steedhorse</author><pubDate>Tue, 27 Apr 2010 09:33:00 +0800</pubDate><description><![CDATA[蒙特卡罗（Monte Carlo）算法计算圆周率的主要思想：给定边长为R的正方形，画其内切圆，然后在正方形内随机打点，设点落在圆内的概为P，则根据概率学原理：P = 圆面积 / 正方形面积 ＝ PI * R * R / 2R * 2R = PI / 4。即 PI=4P。这样，当随机打点足够多时，统计出来的概率就非常接近于PI的四分之一了。#include #include ]]></description><category></category></item></channel></rss>