原创 線上操作使用tmux提高工作效率

對於經常在線上操作的人來說有一種煩惱,就是在操作過程中,有事離開了一下,電腦自動睡眠了,然後網絡斷開連接,這時候任務就要重新跑,很煩惱。 tmux可以解決這個問題。tmux可以看成虛擬屏幕,不受斷網的影響。如果斷網了,只重新連接

原创 Webx框架:Spring Schema 和 Spring Ext

webx誕生的原因是當時市面上沒有好用的web框架。現在的Web框架有很多,然後它們背後的思想都是相似的,而且越來越趨同。 Spring Schema 在傳統的spring中,配置bean時需要手動去指定具體的實現類是什麼,參數有哪些。

原创 Webx框架:Valve詳解

Valve用於控制請求的執行流程。它採用責任鏈的設計模式(類似於struts的攔截器)。valve的意思是閥,閥控制水流(網絡請求)的走向。 自定義閥。 public class MyValve implements Valve {

原创 Webx框架:依賴注入

Webx的依賴注入和Spring的依賴注入非常像,只是有一點點的區別。 注入的時候只能讓生命週期長的注入到生命週期短的對象中,比如requestScope對象注入到singleton時就會發生錯誤。但是對於一些特殊的對象,比如reque

原创 Spring框架:Spring與持久化

Spring的持久化用於簡化數據的操作。 數據源 數據源有多種類型:JNDI、連接池、JDBC。 JNDI的配置方法。例子中使用Tomcat作爲Web容器。首先要在context.xml中加上下面這段代碼。 <Resource nam

原创 Spring框架:SpringMVC詳解

SpringMVC的工作流程。最先接觸到請求的是DispatcherServlet,它會將請求根據配置文件轉發到控制器,控制器返回視圖名稱和一個Model表示處理結果。DispatcherServlet再將處理結果發送給視圖模板引擎,由它

原创 Webx框架:會話管理

在Servlet中,Session和Cookie是分開的。Session一般保存在內存中,當然也可以保存在數據庫等其他地方。如果保存在內存中,對於服務集羣來說就需要解決Session共享的問題。如果保存在數據庫,就存在單點故障、性能差等

原创 Spring框架:Spring安全

在傳統的Web開發中,安全性的代碼都是分散在各個模塊中的,這樣不方便管理,而且有時候可能會漏掉一個地方導致安全漏洞。爲了解決這個問題,有人發明了Spring Security。它的作用是將業務邏輯中有關安全的代碼全都移動到一個模塊中集中管

原创 Struts2:OGNL表達式詳解

OGNL用於操作ValueStack中的數據。它負責兩件事。第一是在接收HTTP請求時將請求中的字符串轉換成Java中的類型,比如int、String等,並賦值給ValueStack上的JavaBean,第二是在頁面渲染的時候,從Valu

原创 開發工具系列(一):Btrace——線上Debug工具

Btrace Btrace用於調試正在運行的系統,並且在調試時不會暫停系統。特別適用於跟蹤線上問題。你可以實時監控一個系統中任何一個方法的調用,你可以知道這些方法的參數、返回值是什麼,還可以知道方法調用消耗了多少時間。 Btrace不

原创 Webx框架:RequestContext詳解

RequestContext RequestContext可以看成request和response的合體。多個RequestContext還可以串起來,就像Filter鏈條一樣。每個外層RequestContext都會在內層Request

原创 Webx框架:AutoConfig

AutoConfig AutoConfig是一個小工具,用於解決不同機器之間配置不同的問題。有時候有些配置,比如數據庫地址、緩存地址等,這些配置與環境有關。每次在不同的環境中都需要重新修改配置,比較麻煩。解決這個問題有兩種方法,一種是通

原创 Web框架:Spring簡介

Spring是一個比較全面的框架,有很多功能。見下圖: ApplicationContext ApplicationContext是Spring的核心類,保存了所有的配置。它有多種加載方式,例子如下: // 只能從/WEB-INF/c

原创 Spring框架:AOP詳解

AOP的中文名稱叫做面向切面編程。這個名字非常形象,因爲你真的可以把一個系統像麪包一樣切開,並直接在麪包上增加修飾。切面可大可小,大到整個系統,小到某一個方法。 AOP有什麼用呢?舉個例子,每個組件中都可能含有安全、事務、數據庫等方面的

原创 ElasticSearch:剖析query_and_fetch和query_then_fetch的區別

在ElasticSearch實際使用中遇到了一個問題,就是在數據量很大的情況下做聚合查詢(aggregation)會導致內存溢出。當時看了文檔,猜測修改search_type能避免內存溢出。實際測試發現,在數據量相同的情況下,se