光辉的晨星

我放弃与神同行,成为坠落天使,来到地狱变成恶魔——路西法,只为了追求超越神的力量!

2010年01月20日

原创 实际项目中使用Postsharp

我现在的项目中使用了winform(.net2.0) + asp.net mvc(.net3.5) + sqlserver2000,Orm使用的是Castle的ActiveRecord。客户端与服务器端通信使用的是Ice,可以通过动态代理切换为webservice或者remoting或者直连本地。而在客户端中是不能直接访问实体类中的延迟加载字段的。你可以专门写个服务来查询这种字段,不过用起来有些麻烦。所以在这种场合使用Postsharp来把这个查询操作透明化非常合适,可以使客户端和服务器端操作实体的字段变得一致。阅读全文>

发表于 @ 2010年01月20日 18:00:00 | 评论( loading... ) | 编辑| 举报| 收藏

2009年12月22日

原创 《十月围城》观后感


在几乎满座的电影院里观众们抱着娱乐的心态去看这部严肃的片子,不时发出的笑声和对影片细节的喋喋评论让人心烦。本来是一部启迪心智的影片却只能在阉割的刀下强作媚颜。但通过点点细节和隐喻使我明白了影片的含义并深深震撼了心灵。如果你看过《华丽的假期》就会知道这部片子真正表达的是什么含义,如果你还有一点点仅存的记忆就能明白重光死的含义。
    一个父亲说:“这两天不太平让你别出门”
    一个母亲说:“今天晚上要出事你别出门”阅读全文>

发表于 @ 2009年12月22日 10:10:00 | 评论( loading... ) | 编辑| 举报| 收藏

2009年10月25日

原创 重构javascript

最近看了两本书《精通javascript》和《javascript语言精粹》,让我对javascript这个再熟悉不过的脚本语言有了新的认识。javascript使用简单形式多变这不禁让开发人员放松对码的控制,特别是现在javscript的有很多方便开发库比如jQuery。但是在轻松惬意之时我们的代码就变得换乱不堪、难于维护。大家可以现在打开你最近写的网页代码,看看里面的javascript是不是充斥了$('#mainContain").height()或者getGridSelectIds()这样的代码。反正我的项目里是这样的,现在我终于下定决心要改变这种局面了。我不想因为站点主体div的名称发生了改变而使某一个页面中的布局变得错乱,也不想在一个页面中直接调用另一个嵌入页面的某个方法。并且这个嵌入页面的方法还会去获取外部页面上某些元素的一些属性,而且都是根据id来获取来的。这实在令人很不爽,虽然开发容易了但是维护代价增加了。我采取的解决之道就是让javascript面向对象化。在javascript中实现面向对象这样的文章已经无数了我也没必要在重复写一篇。我只想强调一下oo的思想是很阅读全文>

发表于 @ 2009年10月25日 17:31:00 | 评论( loading... ) | 编辑| 举报| 收藏

原创 协程与多线程——消息篇

在实现了微线程以后再实现消息传递就容易多了,我们也可以把消息send和receive看做是一种“阻塞”然后使用统一的调度来实现微线程间的通信。而如果实现了消息传递就很容易实现Actor模型了。关于Actor模型推荐大家先看一下老赵的文章。不过我实现消息传递的方式和他文章里给出的实现不一样,因为我统一使用微线程“阻塞”的形式并且借鉴了Stackless Python中的Channel机制。所以使用消息传递就很简单建立一个Channel实例,然后在两个Tasklet实例中一个Send一个Receive就行了,如果没有发送方或者没有接收方就会“阻塞”这类似与tcp中的send何receive。而且send和receive本质上就是一种NonBlock,所以消息的分发不需要使用额外的线程来处理。当然如果以后真的需要在进程(或者.net中逻辑进程AppDomain)间通信,你也可以自己实现一个使用外部线程分发消息的Sender和Receiver。阅读全文>

发表于 @ 2009年10月25日 12:01:00 | 评论( loading... ) | 编辑| 举报| 收藏

2009年10月20日

原创 协程与微线程——实现篇

在实现微线程时第一个要解决的问题就是统一处理异步、同步阻塞和同步非阻塞操作。异步和同步阻塞操作都需要借助外部线程处理并通过回调函数获得执行结果。当然了对于同步的情况你可以把交给线程/线程池执行的方法看做回调函数。而对于同步非阻塞操作因为它不必借助外部线程而直接运行在微线程的宿主线程中,所以我们需要借助协程(yield)来“阻塞”它一下以便其他的微线程有运行的机会。阅读全文>

发表于 @ 2009年10月20日 22:41:00 | 评论( loading... ) | 编辑| 举报| 收藏

2009年10月18日

原创 协程与微线程——概念篇

多线程是我们日常开发中或多或少都会遇到的,它涉及了很多概念:线程安全/竞争条件、锁/死锁检测、同步/异步、阻塞/非阻塞、信号量/事件、线程池、生产消费模型等等。面对这些纷繁复杂的东西你是不是有点头大(如果你现在没有以后也会有的),你难道不想找寻一种可以让自己轻松点的方法?反正我是一直在思索尝试,直到最近了解了Erlang、Stackless Python并开始研究协程、微线程以后,我才有种豁然开朗的感觉。阅读全文>

发表于 @ 2009年10月18日 15:03:00 | 评论( loading... ) | 编辑| 举报| 收藏

2009年10月12日

原创 《费马大定理》读后感

10.1期间在家无所事事就找了本《怪异心理学》来看,这本书比较有意思(关于灵异现象、与异性搭讪、如何分别谎言等)先推荐一下,在这里面提到了《费马大定理》这本书。以前也在其他的书籍中看到过费马大定理的传奇故事,所以这次就直接找到这本书(verycd上有一个纪录片,不过不是很好看)完整的了解下阅读全文>

发表于 @ 2009年10月12日 09:09:00 | 评论( loading... ) | 编辑| 举报| 收藏

2008年11月14日

原创 Struct的内存布局

今天雨痕老大在群里出了一个关于struct内存布局的基础问题,大家热烈讨论。晚上又和老大聊了一下发现自己的理解也有些模糊,因此在这里略作记述和大家共享。希望您能够亲自动手实验,并欢迎指正本文的错误。阅读全文>

发表于 @ 2008年11月14日 00:33:00 | 评论( loading... ) | 编辑| 举报| 收藏

2008年11月11日

原创 捕获AppDomain中的异常并阻止其继续上抛

最近在做一个插件式客户端框架,系统要求UI插件要运行在一个独立的AppDomain中。不过这里遇到一个恶心的问题:在AppDomain中如何捕获异常。也许您会说使用Application.ThreadException或者Appdomain的UnhandledException事件啊,不过这两种方法我实验都是不成功。Application.ThreadException这个是不能跨domain的,对于独立AppDomain中异常无法捕获,而UnhandledException这个虽然能捕获到Exception但是无法阻止其继续上抛,也就是说用户还是会看到异常的提示。阅读全文>

发表于 @ 2008年11月11日 21:26:00 | 评论( loading... ) | 编辑| 举报| 收藏

2008年10月12日

原创 四则运算的动态执行(瞎琢磨版)

在csdn论坛里经常有朋友问动态执行一个四则运算字符串的问题——类似于动态语言的eval执行字符串的功能,因为上学时就没怎么学编译原理所以这类问题一直不会回答。前天群里又有朋友问这个问题由于闲极无聊(本人正在北京求职中,.net高级开发、架构设计方向)就自己瞎琢磨来尝试解决这个问题,也算是在买龙书第二版前的一个练习吧。阅读全文>

发表于 @ 2008年10月12日 10:22:00 | 评论( loading... ) | 编辑| 举报| 收藏

2008年09月29日

原创 《给讨厌数学的人》读后感

这是一本非常独特的数学科普读物,它没有枯燥的公式和让人头大的理论讲解,它用我们生活中最常见的事物来讲解数学中最根本的东西——逻辑。这本书写的相当有趣其中大部分篇幅都不是在介绍数学概念,而是讲解宗教、社会、经济、人文当中所蕴涵的数学精神。让你在不知不觉中感受数学的美,而不是像在课堂上那样昏昏欲睡。书虽然很薄信息量却非常之大,如果你兴趣广泛又爱思考那么它会激起你的求知欲望。因为在讲解形式逻辑时书中对比了中西方宗教、文化、社会制度的不同,这给我启发颇多。因为从小受到的教育都是填鸭式的,老师只是向我灌输知识而不讲解为什么也不进行横向比较。阅读全文>

发表于 @ 2008年09月29日 14:33:00 | 评论( loading... ) | 编辑| 举报| 收藏

2008年09月21日

原创 使用表达式树提升反射性能

反射是日常编码中不可或缺的重要特性但是大规模应用又会造成性能问题,因此很多人都写了提升反射速度的辅助类库。在.net1.1时代主要应用Emit自己构造IL,这需要你精通IL而且还不能怕麻烦。而在.net2.0时代由于引入了泛型使我们可以利用泛型委托来减少一部分IL Emit过程,但是泛型是编译时确定的而我们更多的应用是在运行时得到或设置对象的属性,及动态执行方法。好在.net2.0又新增了一个辅助类DynamicMethod来帮助我们进行Emit编程。如今.net3.5了微软又给了我们更强大的武器Expression Tree,利用它我们就可以避免使用复杂的IL而可以从更抽象更高级的角度来动态Emit我们需要的东西。是不是觉得.net发展越来越人性化呢易用话呢?就在我写这篇文章的时候c#4.0的duck type估计已经出炉了,到时候Emit这技术也没多大用了完全都是微软替们我们搞定了(虽然编程的门槛降低了程序员越来越多了但我相信这些底层技术还是很有必要学习的,因为底层技术是一种解决问题的思路就像算法)。阅读全文>

发表于 @ 2008年09月21日 23:05:00 | 评论( loading... ) | 编辑| 举报| 收藏

2008年09月20日

原创 给新手朋友推荐一些好的学习网站和资料(不断补充中,更新于08.09.20)

我经常去的技术网站和好的学习资料推荐给大家阅读全文>

发表于 @ 2008年09月20日 14:20:00 | 评论( loading... ) | 编辑| 举报| 收藏

2008年09月13日

原创 工作一个月,被开除了!

8.15上班到9.13被开除差不多一个月的时间,虽然短暂但有收获也有抱怨值得记述。我这家公司叫做芬奇图文是在天津河北区一个居民楼里来这里主要是离家近,15分钟就到了。因为我晕车所以离家近是一个很重要的选择标准而且这个公司还是9点上班,因此我选择了这个公司。虽然试用期只有2000每2个星期修一次双休,没有保险公积金甚至连营业执照都没有。不过部门主管答应我来这里是做设计架构的而且还要大力推广oo的应用,我觉得这个人的思路还是挺先进工作也省心就答应了。阅读全文>

发表于 @ 2008年09月13日 23:36:00 | 评论( loading... ) | 编辑| 举报| 收藏

2008年09月10日

原创 应用多线程:解决等待超时问题

我们日常工作中常会遇到这种场景:数据库、远程webservice、串口设备等等连接失败,或其他需要长时间等待才能返回错误信息的情况。这时我们需要设定一个超时时间如果出现问题能够及时反馈给用户。虽然我们给数据库或webservice把超时设定很短,但这样做不灵活因为有些操作本身就是很耗时的。因此我们应该利用多线程来解决这个问题。阅读全文>

发表于 @ 2008年09月10日 21:08:00 | 评论( loading... ) | 编辑| 举报| 收藏

Copyright © fuadam
Powered by CSDN Blog