2011年12月19日
摘要: HTTP Caching 用好了,可以极大的减小服务器负载和减少网络带宽。十分有必要深入了解下 http 的 caching 协议。 先来看下请求/响应过程:http 请求/响应 1、用 Last-Modified 头 在第一次请求的响应头返回 Last-Modified 内容,时间格式如:Wed, 22 Jul 2009 07:08:07 GMT。是零时区的 GMT 时间,servlet 中可以用 response.addDateHeader ("Last-Modified", date.getTime ()); 加入响应头。如图:last-modified 和 If-M 阅读全文
posted @ 2011-12-19 13:24 極 阅读(207) 评论(0) 推荐(0) 编辑
  2011年12月15日
摘要: 關於聚合/聚合根1. 如何界定聚合邊界?生命週期、一致性、高內聚2. 如何在EF中體現聚合與聚合根的概念?使用接口做泛型約束3. 只有聚合根才有倉儲,聚合成員如何CRUD?如果需要單獨CRUD則可能存在設計上的缺陷,作為整體聚合必須擁有一致性。 阅读全文
posted @ 2011-12-15 17:43 極 阅读(178) 评论(0) 推荐(0) 编辑
  2011年12月14日
摘要: 關於斷言的解惑:個人理解為斷言和無副作用函數都是用於解決邊界影響的方式。 在软件中,操作分为:命令和查询,命令就是能够使 系统状态发生改变的操作,如增删改等操作。这些操作都可能需要有副功能,如希望增删改完成后还要返回一些结果,这些主要功能之外的副业,也称为边界影响(side effect)。一些传统过程经验的程序员经常喜欢搞“一机多用”,喜欢将很多功能揉合在一起。 大多数操作会调用其他操作,造成任意深度的嵌套,这样形成一个树形结构的调用关系,这就容易使我们很难 预测调用一个操作会产生什么样的结果,调用一个操作变得谨慎,甚至战战兢兢,虽然Ioc或DI container使 得这种嵌套关系的管.. 阅读全文
posted @ 2011-12-14 17:59 極 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 今天有很多想法,雖然很多可能不成熟,也是學習的過程。在瞭解了工廠和倉儲後,對於工廠和倉儲之間的關係產生了一些問題。工廠僅作為新建和重建對象的地方,則可以將工廠和client隔離,這樣一來,需要新建和重建對象時,client需要通過倉儲向工廠發出請求,client無需關注他們如何工作,只是需要這個對象,就只會找倉儲要,倉儲讓工廠重裝。而另外一種是client直接向工廠發出請求,工廠新建和重裝對象,client拿到對象再通過倉儲進行存取。可是對於關係數據庫,數據庫存儲的比較類似于各個對象的“零件”,客戶需要對象時,問工廠要,工廠去取的零件組裝對象,組裝好了直接給客戶?這樣子并不是我所期望的,客戶爲 阅读全文
posted @ 2011-12-14 12:23 極 阅读(136) 评论(1) 推荐(0) 编辑
  2011年12月13日
摘要: 5.1 關聯指定一個導航方向 避免多對多。對於多對多並未提出解決方案,個人覺得建立關聯表是個方法。好吧這裡犯了數據庫驅動設計的毛病!加入限定符減少多重性 通過限定將一對多變成一對一,如時間上的限定,同一時間一個人只能有一張申請單,則時間限定就讓人和申請單變作一對一。清除不必要關聯 清除非關注的關聯,但如果需要擴展,我覺得有必要保留部份顯而易見的關聯。5.2 實體 標識必須唯一。5.3 值對象 個人認為,在設計時,應將公用值對象的實例持久化,如此做法可以提高性能,因為我們所關注的值對象,並不需要知道他是哪一個實例。具體做法可以研究(如全局變量、緩存技術)。當然,複製和共享所... 阅读全文
posted @ 2011-12-13 14:56 極 阅读(147) 评论(0) 推荐(0) 编辑
  2011年12月12日
摘要: 外部与一个子系统的通讯必须通过一个统一的门面(Facade)对象进行,这就是Facade模式。 现代的软件系统都是比较复杂的,设计模式的任务就是协助设计师处理复杂系统的设计。 设计师处理复杂系统的一个常见方法便是将其"分而治之",把一个系统划分为几个较小的子系统。但是这样做了以后,设计师往往仍然会发现一个子系统内仍然 有太多的类型要处理。而使用一个子系统的使用端往往只关注一些特定的功能,却要同时与子系统内部的许多对象打交道后才能达到目的,请见下面的对象图。图4、Facade架构模式的结构图。 这就是一种不便,它使得系统的逻辑变得不必要的复杂,维护成本提高,复用率降低。 用一 阅读全文
posted @ 2011-12-12 13:15 極 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 贫血模型:是指领域对象里只有get和set方法,或者包含少量的CRUD方法,所有的业务逻辑都不包含在内而是放在Business Logic层。优点是系统的层次结构清楚,各层之间单向依赖,Client->(Business Facade)->Business Logic->Data Access(ADO.NET)。当然Business Logic是依赖Domain Object的。似乎现在流行的架构就是这样,当然层次还可以细分。该模型的缺点是不够面向对象,领域对象只是作为保存状态或者传递状态使用,所以就说只有数据没有行为的对象不是真正的对象。在Business Logic里面处 阅读全文
posted @ 2011-12-12 13:00 極 阅读(436) 评论(2) 推荐(0) 编辑
  2011年12月1日
摘要: 为满足项目需求,修改过的JQuery Datepicker, 基于JQueryUI 1.8.16。直接修改源代码配置了大量非本地化需求Default值,代码留作参考,不适用与不同项目。修改内容:直接繼承至TextBox類,便於排版及校驗。僅增加Date屬性使用資源文件控制的多語言支持 修改默認當前時間為服務器時間而非本地時間修改“今天”按鈕實現點擊後直接上屏并隱藏日期選擇窗(原本只是日历跳转到今天,并不选择和填入TextBox)新增“清空”按鈕修改触发change事件的时机,在TextBox文字变化后触发(原控件是在选择日期但未更改TextBox值就触发),但由于项目需要,存在文字未被更改也触 阅读全文
posted @ 2011-12-01 11:53 極 阅读(731) 评论(1) 推荐(0) 编辑
  2011年11月21日
摘要: 底下這張表就是各種跟 Browser Request 的網址相關的屬性與用法:如果测试的url地址是http : //www.test.com/testweb/default.aspx, 结果如下:Request.ApplicationPath: /testwebRequest.CurrentExecutionFilePath: /testweb/default.aspxRequest.FilePath: /testweb/default.aspxRequest.Path: /testweb/default.aspxRequest.PhysicalApplicationPath: E:\WWW 阅读全文
posted @ 2011-11-21 15:03 極 阅读(430) 评论(0) 推荐(0) 编辑
  2011年11月15日
摘要: 密鈅長度有規定,密文長度應該是無限定。註釋中寫的長度是爲了滿足以下需求:密文長度固定。 1 ///<summary> 2 ///DES 加密解密 3 ///Rex Rao @2011-5-13 4 ///</summary> 5 public static class DES 6 { 7 ///<summary> 8 /// DES加密 9 ///</summary>10 ///<param name="content">8-15bytes明文</param>11 /... 阅读全文
posted @ 2011-11-15 12:06 極 阅读(292) 评论(0) 推荐(0) 编辑