Fork me on GitHub

2012年8月7日

摘要: 个人觉得异常处理对于程序员来说是最为熟悉的同时也是最难掌握的。说它熟悉,因为仅仅就是try/catch/finally而已。说它难以掌握,则是因为很多开发人员却说不清楚try/catch/finally应该置于何处?什么情况下需要对异常进行日志记录?什么情况下需要对异常进行封装?什么情况下需要对异常进行替换?对于捕获的异常,在什么情况下需要将其再次抛出?什么情况下则不需要?合理的异常处理应该是场景驱动的,在不同的场景下,采用的异常处理策略往往是不同的。异常处理的策略应该是可配置的,因为应用程序出现怎样的异常往往是不可预测的,现有异常策略的不足往往需要在真正出现某种异常的时候才会体现出来,所以我 阅读全文
posted @ 2012-08-07 10:07 HackerVirus 阅读(217) 评论(0) 推荐(0)

2012年8月6日

摘要: 最近完成了一个GitHub项目:Storm-HBase,该项目是Twitter Storm和Apache HBase的结合,它使用HBase cluster作为Storm的Spout数据源,目前只是初步实现,后续会进一步完善。HBaseSpout根据时间戳范围[start_timestamp, stop_timestamp],持续不间断地从HBase cluster读取流数据:如果start_timestamp = 0,HBaseSpout将默认从3分钟前的数据开始读取并发送到Storm cluster;否则从用户指定的start_timestamp开始读取数据。如果stop_timestam 阅读全文
posted @ 2012-08-06 20:57 HackerVirus 阅读(174) 评论(0) 推荐(0)
摘要: 什么是ESB企业服务总线(Enterprise Service Bus,ESB)的概念是从面向服务体系架构(Service Oriented Architecture, SOA)发展而来的。SOA描述了一种IT基础设施的应用集成模型;其中的软构件集是以一种定义清晰的层次化结构相互耦合。一个ESB是一个预先组装的SOA实现,它包含了实现SOA分层目标所必需的基础功能部件。在企业计算领域,企业服务总线是指由中间件基础设施产品技术实现的、 通过事件驱动和基于XML消息引擎,为更复杂的面向服务的架构提供的软件架构的构造物。企业服务总线通常在企业消息系统上提供一个抽象层,使得集成架构师能够不用编码而是利 阅读全文
posted @ 2012-08-06 20:57 HackerVirus 阅读(182) 评论(0) 推荐(0)
摘要: 在实际开发应用中,非UI线程操作UI是普遍存在的,在.net下一般是通过Control.Invoke的方法来进行操作,但到处都是Control.Invoke代码维护可是一件麻烦的事情。以下通过接口和队列来规范非UI线程操UI的实现。 既然要规范处理那接口是个不错的选择,以下定义一个简单的执行接口?1234publicinterfaceIInvokeItem{voidExecute();} 以下是扩展一个简单的操作类封装?12345678910111213141516classControlInvoke<CONTROL,DATA> : IInvokeItem{publicContro 阅读全文
posted @ 2012-08-06 20:56 HackerVirus 阅读(195) 评论(0) 推荐(0)
摘要: 在日常编程中,很多程序由多个小一点的部分组成。这个程序运行这些小的部分,获得它们的结果,并用这些结果来计算出整个程序的结果。很多算法也是这样的,一个算法有几个步骤,每一步的结果都对最终结果有影响。一般来说这样的程序和算法都是顺序型的,除非是专门的并发算法,或者是有时间要求的高性能程序。如果要你去编写或重构一个这样的顺序程序,但又包含并发的部分,你会需要什么样的编程技术呢?现代的语言象Java和C#,都有内置的线程支持。但问题是线程是一种低级(接近机器硬件)的技术,大部分时间经常是花在改程序结构来容纳线程,而不是让线程来为你的程序服务。幸运地是Java和C#大约从2005开始提供更完善的编程技术 阅读全文
posted @ 2012-08-06 20:55 HackerVirus 阅读(203) 评论(0) 推荐(0)
摘要: 最近一直攻略node.js,发现ejsv9在后端的视图层有点力不从心。后端是模板的最大用户,因此拼字符串必须会死翘翘。通常来说,我们一个action对应一个模板,它应该是只含body部分的HTML,另外,还有一个layout,它是包含head与body的底部。它们两个加起来,加个模型层的数据生成一个真正的页面返给前端。但生成这页面不像普通的挖坑填数字的过程,像ejs、mustache、micro-Templating、doT.js就是如此。不过有的模板可以套嵌大量的逻辑,有的不能,像mustache就号称Logic-less templates,目的不想让模板也成为代码的意大利面条,这是JSP 阅读全文
posted @ 2012-08-06 20:52 HackerVirus 阅读(214) 评论(0) 推荐(0)
摘要: 前些天在gae上部署了一个定时往手机发送天气预报的小python程序,原理很简单,就是抓取天气网站,然后解析页面得到天气信息,再利用gae的邮件功能往自己的139邮箱发送电子邮件,手机就能免费接收天气预报了。 后来发现gae上有邮件发送次数限制,一个月只能发送100封电子邮件,假如给我爸,妈和我一天发一封的话,一个月就90多条了,我测试已经费了几条了,如果还想给其他亲朋好友发送天气预报,或者自己接收一些其他电子邮件信息的话,怎么够用?问题就这样来了。。。 本来想在gae上直接调用python的smtplib 模块发送邮件,发现不能用。囧rz.... 于是乎,苦寻各种解决方案-_-方... 阅读全文
posted @ 2012-08-06 20:50 HackerVirus 阅读(445) 评论(0) 推荐(0)
摘要: 在ASP.NET MVC中的四大筛选器(Filter),ActionFilter直接应用在某个Action方法上,它在目标Action方法执行前后对调用进行拦截以执行一些额外的操作。这是一种典型的AOP式的设计,如果我们需要在执行某个Action方法的前后执行一些操作,可以通过定义ActionFilter来实现。本篇文章主要讲述多一个应用到相同Action方法上的ActionFilter的执行机制。[本文已经同步到《How ASP.NET MVC Works?》中]目录一、ActionFilter二、ActionFilter的执行机制三、ActionFilter对ActionResult的设置 阅读全文
posted @ 2012-08-06 09:31 HackerVirus 阅读(535) 评论(0) 推荐(1)

2012年8月5日

摘要: 有很多人写了聚集索引和非聚集索引的文章,但我觉得在很多文章中表达的概念并不清楚,因此自己也写一篇,能够让自己想清楚。我的最初目的是要写到NO SQL,因此这系列的文章主要是关注在 1.数据库索引结构、2.表联接、3.递归查询这几个点上。一、基本概念1.数据的读取页(page)是SQL SERVER可以读写的最小I/O单位。即使只需访问一行,也要把整个页加载到缓存之中,再从缓存中读取数据。物理读取是从磁盘上读取,逻辑读取是从缓存中读取。物理读取一页的开销要比逻辑读取一页的要大得多。2.表的组织方式表有两种组织方式,B树(B tree)或者堆(heap)。当在表上创建了一个聚集索引的时候,整个表数 阅读全文
posted @ 2012-08-05 23:36 HackerVirus 阅读(187) 评论(0) 推荐(1)
摘要: 我选择在项目中采用Nhibernate+Spring.Net+Asp.Net + Jquery 来作为我的主要.Net技术,我的框架的设计借鉴了博客园博主 传说中的弘哥博主的大量的技术思路http://www.cnblogs.com/legendxian/结合了自己在实际项目中的经验,下面介绍我选择这套技术的思路和理由: 1.技术选择Nhibernate理由: 对象关系映射技术(ORM)的最主要目的是为了解决关系数据库与面向对象编程技术不匹配的阻抗问题,通常所说的面向对象的类往往都存在继承和类间关系与数据库的表不是—对应的,ORM 技术可屏蔽掉数据库访问的技术细节,让我们更专注于业务和... 阅读全文
posted @ 2012-08-05 23:35 HackerVirus 阅读(282) 评论(0) 推荐(1)