Hello World
Spiga

谈谈微软技术,以及对待技术应有的态度

2010-03-04 23:20 by 老赵, 17634 visits
摘要:昨晚在家上网,一边对那些有趣而奇妙的微软技术感叹不已,同时却又产生出一种忿忿之情。为什么?因为在国内的技术圈子里,经常有一种在我看来莫名奇妙的鄙视微软技术的风气。这样的风气在国内的推特圈里也非常明显,基本上只有我一个人对微软的技术抱有好感并“勇于”和大量意见向左的人争辩。忿忿之余,我便在推特上不断表达我对这种风气的抱怨及否定,在这个过程中也基本表达了我在这方面的大部分看法,在这里也进行一番总结总结吧。同时,我也想对微软社区的许多弟兄讲一些话。 阅读全文

F#中的异步及并行模式(1):并行CPU及I/O计算

2010-03-03 23:37 by 老赵, 8450 visits
摘要:F#是一门并行(parallel)及响应式(reactive)语言。这个说法意味着一个F#程序可以存在多个进行中的运算(如使用.NET线程进行F#计算),或是多个等待中的回应(如等待事件或消息的回调函数及代理对象)。 F#的异步表达式是简化异步及响应式程序编写的方式之一。在这篇及今后的文章中,我会探讨一些使用F#进行异步编程的基本方式──大致说来,它们都是F#异步编程时使用的模式。我们从两个简单的设计模式开始:CPU异步并行(Parallel CPU Asyncs)和I/O异步并行(Paralle I/O Asyncs)。 阅读全文

MongoDB与Tokyo Tyrant性能比较(2):并发写入操作

2010-02-26 19:38 by 老赵, 14579 visits
摘要:在上一次的测试中我们比较了MongoDB与Tokyo Tyrant的Table Database两种存储方式的性能。不过由于条件限制,我只能在自己的MBP上测试,而这至少会带来两个问题。首先,真实环境下客户端和服务器是通过内网连接的,它的性能比本地回环要慢不少,一些和网络传输性能有关的问题可能会体现不出。其次,由于无法进行并发测试(并发测试的客户端资源占用较高,放在同一台机器上准确性较差),这又和生产环境有很大区别了。因此,我前两天向同事借了台性能测试用的机器,希望可以得到更可靠的结果。 阅读全文

MongoDB与Tokyo Tyrant性能比较(1):基础CRU操作

2010-02-24 23:45 by 老赵, 14285 visits
摘要:以前的项目大都把数据存放在关系型数据库中,但是它们的问题比较明显的,一是在数据量上升的情况下伸缩性比较差,且进行结构调整的代价比较高。因此现在有个所谓NoSQL的“运动”也逐渐普遍起来了,它便是借助一些非关系型存储方式来开发项目。因此在新项目里,我也想尝试一下使用之前一直只是“听说”的存储方式。MongoDB和Tokyo Tyrant都是其中的典型代表,那么现在就来比较一下它们对于基本CRU操作的性能。 阅读全文

为什么JVM上没有C#语言?浅谈Type Erasure特性

2010-02-22 23:50 by 老赵, 12073 visits
摘要:JVM上目前已经有许多语言了:JRuby,Jython,也有一些特定于JVM平台的语言,如Scala和Groovy等。但是,为什么JVM上没有C#语言呢?按理说,这门和Java十分相似,却又强大许多的语言更容易被Java程序员接受才对。有人说,Sun和微软是对头,怎么可能将C#移植到JVM平台上呢?嗯,有道理,但是为什么社区里也没有人这么做呢(要知道JVM上其他语言都是由社区发起的)?其实在我看来,这是受到了技术方面的限制。例如:Type Erasure。 阅读全文

哥谈的是语言,不是寂寞

2010-02-20 21:48 by 老赵, 12633 visits
摘要:经常看到一些文章在谈论语言,例如“哪个语言更有前途”,“语言选择是否关键”。我是个语言粉丝,但是看到这些文章总有一些奇怪的感觉。因为在我看来,这些文章谈的东西都不是我眼中的语言——可能与国内技术环境有关,语言本身被淡化了,例如,谈语言的时候涉及更多的却是“平台”方面的内容。那么我现在便来描述一下我眼中的“语言”该如何谈论吧——下次在我猛砍Java语言时也好有个参考。 阅读全文

浅谈字节序(Byte Order)及其相关操作

2010-02-10 23:05 by 老赵, 10756 visits
摘要:最近在为Tokyo Tyrant写一个.NET客户端类库。Tokyo Tyrant公开了一个基于TCP协议的二进制协议,于是我们的工作其实也只是按照协议发送和读取一些二进制数据流而已,并不麻烦。不过在其中涉及到了“字节序”的概念,这本是计算机体系结构/操作系统等课程的基础,不过我还是打算在这里进行简单说明,并且对.NET中部分类库在此类数据流处理时的注意事项进行些许记录与总结。 阅读全文

总结:史上第一混乱、程序员的爱情、Nobody & Sorry Sorry

2010-02-07 21:19 by 老赵, 11469 visits
摘要:星期六是我的休息日,这天一般我不安排自己做什么和工作有关的事情,一般就是去看看电影,出去逛逛,或者在家上上网吹吹牛。昨天总结了一部分由推特上的讨论,现在继续剩下的一部分。不过,这次的内容可能就要和技术或产业略远一些了,其中大部分是我自己的一些体会和感想。现在我打算谈三个东西,一是《史上第一混乱》这部话剧,《程序员的爱情》这本小说,以及Nobody和Sorry Sorry(您不知道这是啥?你成奥特曼啦!)。 阅读全文

总结:0 bug事件、交大ACM夺冠

2010-02-07 03:51 by 老赵, 19970 visits
摘要:如果您还没有上推特(或是还没有想到办法上),那您失去的不光是一个风靡世界的网络应用,您同时还失去了一个优秀的信息获取平台及讨论环境。目前国内大部分靠谱的技术专家都在推特上有帐号,您几乎不会错失任何有价值的信息,更可以参与一些有价值讨论。周六是休息日,因此也在推特上和大家聊得不亦乐乎。不过推特的一个缺陷可能便是难以留住有价值的信息,它们会随着时间推移渐渐消失,因此还是及时记录一下吧。 阅读全文

李笑来激起千层浪,赵姐夫力拒众强敌

2010-02-03 00:49 by 老赵, 14749 visits
摘要:昨天晚上,李笑来(@xiaolai)老师的无心之语却引起了推特上一次前后长达1个多小时的讨论——当时他似乎只是随手发了一句“Apple告诉我们的铁律是:表面功夫一定要做足”便不见了踪影,但是这句话立即引起了众果粉的共鸣。此后,我(@jeffz_cn)的一句评论又引起了众人对微软开发平台的批判之声。在这次讨论中,几乎只有我孤军奋战为.NET平台进行辩解。因此事后有人给出一副对联为此次争论作出总结:李笑来激起千层浪,赵姐夫力拒众强敌。 阅读全文

从今日起正式加入水果党

2010-02-02 00:08 by 老赵, 10849 visits
摘要:想来我现在的笔记本也用了将近3年,虽然至今没有出现过任何问题,但更新换代似乎也不是件让人无法接受的事情——再加上老爸正好也需要一台笔记本,于是我想,不如就乘此机会升一下级吧。不过其实我本没有打算那么着急,只是两天前忽然出现了一个千载难逢的机会,一台十分便宜的MBP放在我面前,于是我当机立断,即刻入手。因此我在此庄严宣布:从今日起,我正式加入水果党。 阅读全文

光有逻辑也是万万不能的

2010-02-01 00:14 by 老赵, 11068 visits
摘要:之前我多次强调“逻辑”在讨论问题时的重要性,我也多次表示说,如果大家都运用合适的逻辑思维来讨论问题,那么论坛上8成吵架可以避免。现在我也想再次探讨一下这个话题,只不过这次我想反过来说:光有逻辑也是万万不能的。除了“逻辑”这个东西之外,讨论问题时还有很多其他东西值得注意。 阅读全文

数组排序方法的性能比较(5):对象大小与排序性能

2010-01-29 00:09 by 老赵, 7183 visits
摘要:在我公开测试结果之后,有朋友也进行了其他测试。在测试中我使用的是int数组,经过分析之后我们了解到Array.Sort对于int数组有特殊的优化。于是,某些朋友使用了一些引用类型的数组进行排序,得到Array.Sort方法的性能落后于LINQ排序——虽然由于测试方式的问题,这个结果和结论都不太妥当。不过在讨论的过程中,我们都意识到了一个问题:在其他条件不变的情况下,引用类型的字段越多,Array.Sort方法所需时间就越久。这次我们就来讨论一下这个问题。 阅读全文

数组排序方法的性能比较(4):LINQ方式的Array排序

2010-01-28 00:06 by 老赵, 7061 visits
摘要:经过前两篇文章的分析,我们已经了解了Array.Sort与LINQ排序两种实现方式的差别:前者直接比较两个元素的大小,而后者先选出每个元素的“排序依据”再进行比较。因此,虽然后者需要相对较多的“周边工作”,但由于每次比较时都可以仅仅使用高效的基础类型(如int),因此从整体来看,两者的性能高低难以辨别。不过,既然我们已经了解LINQ排序“高效”的原因,又能否将其利用在数组排序上呢?程序是人写的,此类问题大都有肯定的答案。那么我们现在就来实现一下。 阅读全文

数组排序方法的性能比较(3):LINQ排序实现分析

2010-01-27 00:02 by 老赵, 10098 visits
摘要:上次我们分析了Array.Sort方法的实现方式,并了解到类库会为一些特例而使用高性能的排序方式——int数组便是这样一例,因此从测试结果上来看其性能特别高。不过从数据上看,即便是在普通的情况下,Array.Sort的性能也比LINQ排序要高。不过也有朋友从测试中得出的结论正好相反,这又是为什么呢?那么现在,我们再来分析一下LINQ排序的实现方式吧,希望这样可以了解到两者性能差别的秘密。 阅读全文

人肉反编译使用yield关键字的方法

2010-01-26 00:06 by 老赵, 9874 visits
摘要:我认为这是一个真命题:“没有用.NET Reflector反编译并阅读过代码的程序员不是专业的.NET程序员”。.NET Reflector强大的地方就在于可以把IL代码反编译成可读性颇高的高级语言代码,并且能够支持相当多的“模式”,根据这些模式它可以在一定程度上把某些语法糖给还原,甚至可以支持简单的Lambda表达式和LINQ。只可惜,.NET Reflector还是无法做到极致,某些情况下生成的代码还是无法还原到易于理解——yield关键字便是这样一个典型的情况。不过还行,对于不复杂的逻辑,我们可以通过人肉来“整理”个大概。 阅读全文

昨日搬至办公室的书籍

2010-01-25 12:00 by 老赵, 10010 visits
摘要:由于家里地方小,总有一部分书籍需要跟着我辗转至各公司。其中一些公司只能让我放抽屉(地方小)甚至地板上,而有一些公司就能让我把书都摞桌子上。昨天下午我特地来了一次办公室搬运书籍。灭霍霍,可真是一个体力活。 阅读全文

土人眼中的差距:That’s Why I Chose Yale

2010-01-24 22:10 by 老赵, 10689 visits
摘要:上周五中午我看了一个视频:That's Why I Chose Yale(我选择耶鲁大学的原因),是由耶鲁大学的学生自导自演自己拍摄、剪辑的短片。这部短片直接就把我看哭了——好吧,还差一点点,但是其中的震撼是难以描绘的,建议您一定要自己体会一下。震撼源于各方面的差距,同样是大学,同样是大学生,为什么差距就那么大呢?而且,这几乎已经是我无法去弥补的差距了,因此遗憾,因此震撼。 阅读全文

数组排序方法的性能比较(2):Array.Sort<T>实现分析

2010-01-22 00:06 by 老赵, 10323 visits
摘要:昨天我们比较了Array.Sort方法与LINQ排序的性能,知道了LINQ排序的性能以较大幅度落后于Array.Sort方法。而对于Array.Sort来说,性能最高的是其中使用Comparer.Default作为比较器的重载方法。在前文的末尾我们做出了推测:由于排序算法已经近乎一个标准了(快速排序),因此从算法角度来说,Array.Sort方法和LINQ排序上不应该有那么大的差距,因此造成两者性能差异的原因,应该是具体实现方式上的问题。 阅读全文

数组排序方法的性能比较(1):注意事项及试验

2010-01-21 00:11 by 老赵, 9420 visits
摘要:昨天有朋友写了一篇文章,其中比较了List的Sort方法与LINQ中排序方法的性能,而最终得到的结果是“LINQ排序方法性能高于List.Sort方法”。这个结果不禁让我很疑惑。因为List.Sort方法是改变容器内部元素的顺序,而LINQ排序后得到的是一个新的序列。假如两个排序方法的算法完全一致,LINQ排序也比对方多出元素复制的开销,为什么性能反而会高?如果LINQ排序的算法/实现更为优秀,那为什么.NET Fx不将List.Sort也一并优化一下呢?于是今天我也对这个问题进行了简单的试验。 阅读全文
< Prev 1 ... 6 7 8 9 10 11 12 13 14 ... 31 Next >
使用Live Messenger联系我