|
2008年10月7日
一、為啥不去聽別人分享? 1、覺得對現有工作無關 2、工作任務重,沒空 3、沒目的,隨大流 4、覺得別人一次講太多,記不住 5、任務性分享,不感興趣 二、為啥自己不主動分享? 1、覺得內容少,不想分享 2、無主題,主題窄 3、壓力大,硬湊PPT 4、工作任務壓著,沒空想分享 5、目的性太強,沒想其他東西 三、主動分享或聽分享的好處? 1、擴大個人影響力 2、鍛煉自己的總結能力 3、鞏固自己對某一方面東西的認識 4、迫使自己學點東西 5、培養自己考慮問題的全面性 6、學習演講技巧
摘要: 1.目的
mysql的列是固定的,不支持存儲如Map 結構的數據,但現在我們的需求是希望有一個 ext Map的擴展列,可以存儲Map結構的數據,并且可以在mysql里面進行運算.(即schema free)。所以解決方案是創建一個map_get()函數,可以根據key得到對應的value 閱讀全文
摘要: 因為需要使用hadoop與hbase結合使用,所以需要為hadoop hdfs升級使用append寫模式。需要對現有的hadoop 0.20.1 升級至0.20.205.0; 升級過程簡單的使用 hadoop namenode -upgrade 從 -18 version => -32version(這個是dfs/name/current/VERSION).但我們發現0.20.205跟hive不兼容,所以又安裝facebook的hadoop版本(-30版本)。
整個升級流程簡單來說就是: dfs/name/current/VERSION -18 => -32 => -30. 升級再回滾的過程。
閱讀全文
摘要: 單機應用內,在進程內部,我們可以使用ThreadLocal傳遞應用上下文的方式. 當前的 Spring Secrucity , Spring TransactionManager, Log4J MDC, Struts2 ActionContext等等應用場景隨處可見.
但在是分布式系統下,由于不是在同一個進程內,所以無法使用ThreadLocal. 那么什么是分布式ThreadLocal呢?就是將一個系統中的ThreadLocal信息可以傳遞至下一個系統,將兩者的調用可以關聯起來。如對應用有一個調用,我們生成一個請求ID (traceId),在后面所有分布式系統調用中,可以通過這個traceId將所有調用關聯起來,這樣查找調用日志都將十分方便. 閱讀全文
摘要: 我們知道,大家提倡面向接口編程,但凡事都有個度,當濫用,那么面向接口完全流于形式。 閱讀全文
摘要: 現大家使用的ibatis,hibernate,spring jdbc的sql日志信息,有一點個缺點是占位符與參數是分開打印的,如果想要拷貝sql至PLSQL Developer客戶端直接執行,需要自己拼湊sql。而log4jdbc是在jdbc層的一個日志框架,可以將占位符與參數全部合并在一起顯示,方便直接拷貝sql在PLSQL Developer等客戶端直接執行,加快調試速度。 閱讀全文
摘要: 本次新版本發布最主要的更新內容是生成器的加強,并且之前已經發布了rapid-generator獨立版.
此次升級保證模板的兼容性.后續rapid-framework的發行版將不直接提供rapid-generator的源碼在項目中,以便以后大家編寫的模板都可以在一個生成器引擎中運行. 閱讀全文
(本方法屬于作者經驗總結出該模式)
Holder模式的主要功能是將一些Bean可以轉為靜態方法調用.方便使用.
適用于一些系統只存在單例(singleton)并且 十分常用 的基礎服務對象.這些基礎服務如果每次使用spring注入,只會增加無謂的代碼及一些不確定性.
示例如下:
BeanValidatorHolder.validate(bean) // HibernateValidator一般系統只有一個
CacheHolder.get("key") //如Memcached,應用系統也只有一個對象
ApplicationContextHolder.getBean("userInfoService");
與singleton相比特點
- 一個Holder只能持有一個對象
- Holder一般是持有接口,所以你可以方便的改變實現
- 配合spring完成Holder初始化
用于持有Cache對象
1.1在spring中初始化
<bean class="cn.org.rapid_framework.util.holder.CacheHolder">
<property name="cache" ref="memcacheCacheImpl"/>
</bean>
1.2使用 CacheHolder?使用
CacheHolder.add("key","cache_value","1h");
//do something
1.3實現
public class CacheHolder implements InitializingBean{
private static Cache cache;
public void afterPropertiesSet() throws Exception {
if(cache == null) throw new IllegalStateException("not found 'cache' for CacheHolder ");
}
public void setCache(Cache c) {
if(cache != null) throw new IllegalStateException("CacheHolder already holded 'cache'");
cache = c;
}
public static Cache getCache(){
return cache;
}
//省略了其它N多cache靜態方法
public static void add(String key, Object value, String expiration) {
cache.add(key, value, parseDuration(expiration));
}
public static void cleanHolder() {
cache = null;
}
}
holder |
功能 |
BeanValidatorHolder |
用于持有Hibernate Validator |
SpringValidatorHolder |
用于持有Spring Validator |
ApplicationContextHolder |
用于持有Spring ApplicationContext? |
CacheHolder |
用于持有Cache |
MessagePublisherHodler |
用于持有類似JMS消息中心的消息發送 |
MessageSourceHolder |
持用MessageSource?,用于國際化 |
MailerHolder |
用于郵件發送的Mailer |
ConfigHolder |
用于持有配置,需要動態刷新的參數使用,請查看文章保持類的無狀態 |
SecurityManagerHolder |
用于權限控制的SecurityManager |
摘要: 使用JSP的都知道jsp:include指令,可以include其它jsp頁面或者servlet。
而如果你不是使用JSP,而是使用模板引擎如Freemarker,Velocity。有該功能也將十分方便。 閱讀全文
摘要: 既然可以用如此簡單的方法達到我們的目的,為何要搞出那么復雜的方案. (簡單就是美) 閱讀全文
摘要: 1.SOA存在的目的?
2.為什么說SOA是一種風格?
3.SOA解決了服務集成(依賴)問題 閱讀全文
摘要:
新增插件:
flex_cairngorm: 基于cairngorm mvc的flex插件,代碼生成器生成的在線demo
freemarker_html_view: 基于freemarker的html視圖,用于不喜歡jsp的同學使用
v3.5更新內容:
擴展jsp,freemarker,velocity的模板可以相互繼承,打造替換sitemesh,struts tiles的布局框架.
freemarker,velocity實現管道操作來進行布局
新增分頁方言: SQLServer2005Dialect
spring事務配置采用@Transactional替換xml配置
jdbc增加了sql生成工具,用于進一步封裝spring jdbc操作
閱讀全文
摘要: 網上搜索了一番,用于控制flex UI組件的權限的框架只有chimp相近一些.
但是不喜歡他的基于flex annotation的權限控制方式.遂決定自己寫一套flex權限控制框架。
如果你熟悉作者的另外一套javascript 表單驗證框架rapid-validation,將會對下面的使用方式有似曾相識的感覺。
閱讀全文
摘要: flex3只支持兩種語言,en_US,ja_JP
而flex4中則支持多國語言,所以可以將flex4中的%FLEX_HOME%\frameworks\locale\zh_CN拷貝至flex3中。 閱讀全文
摘要: 在google code上編寫wiki文檔你最擔心的是什么:
1. 版本不好控制,在線同時只能瀏覽一個版本號的wiki頁面
2. 不能提供離線版本
現在使用這個工具,可以將google wiki直接下載為本地的html ,并且與wiki相關的資源,如 css ,js ,圖片都可以一同下載 并且與在線瀏覽的效果一樣 .
還提供與ant的集成,直接與構建腳本相結合.
閱讀全文
摘要: 我們都知道,在網上我們很容易找到一個HTML模板,但是想要尋找一個Flex,那是少之又少。 本項目的目的是推動大家一起共享一些好用的模板,推動flex在國內的發展。 閱讀全文
摘要: 一.功能介紹
1.將前一個模板的輸出,變成一個變量,后一個模板可以通過變量引用前一個模板的輸出
2.整個管道下的模板都在同一個context中,即模板間可以相互引用變量
將管道操作與我之前擴展的模板繼承相結合,即可打造一個完美的頁面布局框架.
閱讀全文
摘要: 與我之前的擴展freemarker類似,現新增加三個指令:block,override,extends
一.目的
1.父模板頁面定義好布局,子模板可以重定義布局中的部分內容
2.使模板可以實現類似"類"的繼承關系,并不限繼承層次 閱讀全文
摘要: 現擴展freemarker,新增加三個指令: @extends,@block,@override
一.目的
1. 父模板頁面定義好布局,子模板可以重定義布局中的部分內容
2. 使模板可以實現類似"類"的繼承關系,并不限繼承層次
閱讀全文
摘要: RESTful服務中很重要的一個特性即是同一資源,多種表述.
即
/user/123.xml 將返回xml格式數據
/user/123.json 將返回json格式數據
/user/123.html 將返回html格式數據
閱讀全文
摘要: 使用過python django模板的應該清楚,django里面有一個激動人心的功能就是模板可以使用類的繼承關系。 即模板是可以繼承的,并且不限繼承的層次。
如
1. child.html extends base.html
2. grandchild.html extends child.html
這樣,我們在base.html中定義好html布局,然后在“子類”(我們這樣稱呼吧)重定義需要父頁面內容即可 閱讀全文
摘要: 在對數據庫水平分區的情況下,面對多個數據庫,想要生成一個唯一性的主鍵這是一個問題。 閱讀全文
摘要: 雖然spring 3.0及ibatis3還未發布,但rapid里面的集成基本已經成型,正式版發布會繼續跟進.
以下是changelog
新增插件
springmvc_rest : spring restful插件,現基于springmvc3.0 rc1版本,并且rc1還有一個bug,現rapid自帶一個類手工修復
ibatis3 : 現在跟隨ibatis3 beta5版本,擴展實現了基于dialect的分頁
rapid_mailer : 基于spring mail的郵件發送插件,向ruby on rails的mailer靠攏 閱讀全文
摘要: 為公司講解的一個PPT,相關內容如下
CAP原則
BASE策略
異步(MessageQueue)
數據庫
數據的水平切分及垂直切分
數據庫讀寫分離
避免分布式事務
反范式的數據庫設計
負載均衡
DNS負載均衡
反向代理負載均衡
LVS
緩存
數據庫緩存
服務器緩存/頁面緩存/數據緩存/靜態化
反向代理緩存
HA
Session
Share Nothing Architecture架構
瀏覽器優化
瀏覽器緩存/CDN/小圖片合并
分布式文件系統
閱讀全文
摘要: (注:以下代碼是基于ibatis3 beta4的擴展,ibatis3正式版如果實現改變,將會繼續跟進修改)
iBatis3默認使用的分頁是基于游標的分頁,而這種分頁在不同的數據庫上性能差異不一致,最好的辦法當然是使用類似hibernate的基于方言(Dialect)的物理分頁功能。
iBatis3現在提供插件功能,通過插件我們可以編寫自己的攔截器來攔截iBatis3的主要執行方法來完成相關功能的擴展。 閱讀全文
摘要: 為了使flex客戶端能夠直接調用服務端的spring bean,SBI提供的此種功能,SBI使用DispatchServlet代理轉發MessageBrokerServlet的請求,增加了一些無用的類及相關配置,
而其實完成相同的功能,最簡只需兩個類即可. 閱讀全文
摘要: springmvc_rest的示例使用,包含通過/userinfo/1, /userinfo/1.json,/userinfo/1.xml 來查看html,json, xml三種數據
ibatis3的示例及基于方言(Dialect)的分頁使用 閱讀全文
摘要: 現編寫了ibatis3的代碼例子.
一.首先我們來看現在的xml mapper關于增刪改查的編寫
閱讀全文
摘要: 由于下一版本的rapid-framwork需要集成spring RESTful URL,所以研究了一下怎么搭建. 并碰到了一下問題。
springmvc 3.0 中增加 RESTful URL功能,構造出類似javaeye現在的URL。 閱讀全文
摘要: 趕在國慶之前發布一個版本,慶祝國慶,:)
更新內容:
提升:
XsqlBuilder支持Object作為filters
PageRequest.filters使用范型
新特性:
支持Ibatis的分頁Dialect
新增其它數據庫的jdbc分頁Dialect 閱讀全文
摘要: 對于一個異步的方法調用,我們需要異步的得到調用結果,通常我們會使用Listener模式,用于監聽方法異步調用的結果.
但應用該方法在實際使用中其實并不靈活.
閱讀全文
摘要: 在一些特殊的場合,我們可能需要使用異步的IO來大幅提高性能. 閱讀全文
摘要: 使用hadoop的shell命令進行hdfs的操作十分不方便,最好的辦法當然是將hdfs映射為本地文件系統. 而通過實現WebDav Http協議, 結合WebDav的眾多客戶端,可以將hdfs映射為windows或是linux的本地文件系統.而使用api存儲文件時,也將對應用透明,如使用本地文件系統一樣使用hdfs. 閱讀全文
摘要: 問題:
1.Hibernate碰到延遲加載的屬性訪問時如果session被關閉則拋出LazyInitializationException
2.Hibernate中的one-to-many等關聯關系在序列化時如果沒有控制,則將整個數據庫都有可能被全部序列化
3.過多的使用DTO/ValueObject解決這個問題.
解決辦法:
對Entity對象生成一個動態代理,攔截getXXXX()方法,如果訪問的是延遲加載的屬性,則return null,而不拋出LazyInitializationException,遞歸生成屬性的代理,只要碰到未延遲加載的屬性,而序列化會自動停止.避免將整個Entity序列化傳播,導致可能序列化整個數據庫的問題.
閱讀全文
摘要: 簡單介紹
基于Flex(Cairngorm MVC+BlazeDS) + Spring + Hibernate的Full Stack開發框架
并提供基于契約的零配置編程
項目網站:http://www.pomer.org.cn 閱讀全文
|