原创 springMVC實現全局異常處理

你還在爲控制器和service層中的try catch代碼段感到煩惱嗎,每寫一個方法,都要進行try catch或者拋異常處理,然而捕獲到異常之後的處理無非就是告訴用戶,後臺程序出錯了,如果請求的是頁面,則返回用戶一個錯誤頁面,告訴用戶後

原创 netty服務端開發-綁定監聽

上一篇文章介紹了服務端的消息處理,這篇文章則主要介紹端口監聽、連接的建立和消息處理類的註冊使用等,直接貼上demo代碼 package com.jd.time.server; import com.jd.time.handler.Tim

原创 nginx proxy_cache配置說明

#定義代理緩存路徑 ,緩存文件保存路徑 緩存初始大小和最大值 緩存時間 proxy_cache_path d:\code\cache levels=1:2 keys_zone=cache1:10m max_size=20m inactiv

原创 通配符比較工具類

項目中經常會用到通配符匹配的功能,雖然寫法沒有那麼負責,但是spring已經給我們提供好了一個用於通配符匹配的工具類,我們可以不用再重複造輪子,以免出現各種bug,可以直接使用該類。該類位於spring-core.jar包中,該類是一個抽

原创 Executor框架-Executors

ThreadPoolExecutor是Executor框架的一個主要實現類,是執行具體任務的實現類。該實現類有Executor中的工廠類Executors提供的靜態工廠方法負責創建。主要靜態方法看下圖: 通過類圖可以發現,Executo

原创 使用Nginx緩存靜態文件

配置語法: open_file_cache off;open_file_cache max=N [inactive=time]; 默認配置: open_file_cache off; 配置環境: http, server,

原创 常用JVM參數配置

在java啓動腳本的參數配置中經常會看到一些形如:-XX:<+|->name的jvm參數,表示開啓或關閉某項特性或屬性,+代表開啓,-代表關閉,下面介紹一些常用的內存分配配置參數 -XX:name=<n>的選項表示需要帶有數字,n即爲數字

原创 jvm垃圾收集器配置-1

-XX:+UseSerialGC 開啓單線程、Stop-The-World的新生代和老年代垃圾收集器。它是jvm中最古老而且最成熟的垃圾收集器,一般來說,只有在客戶端java程序的時候纔會使用該垃圾收集器,java堆都比較小,是clien

原创 MyBatis中#和$的區別

1.  #將傳入的數據都當成一個字符串,即會對自動傳入的數據加一個雙引號。如:對於sql語句order by #{name},如果傳入的值是123,那麼解析成sql時的值爲order by "123", 如果傳入的值是tom,則解析成的

原创 java堆外內存泄漏

問題描述 最近有個系統在做壓力測試, 環境配置: 4核CPU 8g內存 jdk1.6.0_25,jvm配置-server -Xms2048m -Xmx2048m  出現問題如下 執行併發300人,壓測持續1個小時內存使用率從2

原创 多線程-join的應用

如果我們有多個子任務需要用多線程來處理,但是主線程又需要等待所有子線程執行完成後在返回,最簡單的做法就是使用線程的join方法。示例代碼如下: public class JoinTest { public static void

原创 java原子操作類-原子數組類

java還提供了通過原子方式更新數組裏的某個元素,Atomic包提供了以下4個類。 AtomicIntegerArray:原子更新整型數組裏的元素 AtomicLongArray:原子更新長整型數組裏的元素 AtomicReference

原创 java併發鎖-Lock接口

併發鎖是用來控制多個線程訪問共享資源的方式,一般來說,一個鎖能夠防止多個線程同時訪問共享資源。在Lock接口出現之前,java主要依靠synchronized的關鍵字來實現多線程的同步功能。而從JDK1.5之後,併發包中新增了Lock接口

原创 java併發鎖-Lock之隊列同步器

Lock接口的實現基本上都是通過聚合了一個同步器的子類賴世雄線程的訪問控制的。隊列同步器AbstractQueuedSynchronizer是用來構建鎖或者其他同步組件的基礎框架,它內部使用了一個volatiole修飾的int類型的成員變

原创 ThreadPoolExecutor詳解-FixedThreadPool

FixedThreadPool類型的線程池由Executors創建,具體的創建方法如下: public static ExecutorService newFixedThreadPool(int nThreads) { r