原创 深入理解JVM虛擬機 內存區域

Java虛擬機運行時數據區 程序計數器(線程私有) 是一個較小的內存區域,可以看做是當前線程所執行的字節碼的行號指示,由於Java是多線程的,線程中斷切換需要恢復執行位置,所以每個線程都需要一個獨立的程序計數器來記錄當前線程

原创 深入理解JVM虛擬機 性能監控與故障處理工具

JDK監控和故障處理 名稱 描述 jps jvm process status tool,顯示指定系統內所有的hotspot虛擬機進程 jstat jvm statistics monitoring tool,用於

原创 Java併發編程(-)基礎

多線程一定快嗎 由於線程有創建和上下文切換的開銷,短時間的操作會比單線程更慢 如何減少上下文切換 無鎖併發編程:多線程競爭鎖,會引發上下文切換,所以可以減少鎖的使用,如,按照數據的ID按照Hash取模分段,不同的線程處理不同的段

原创 Spring容器事件

事件體系有三個重要的概念 事件源:事件產生者 事件監聽註冊表:一個地方保存監聽器 事件廣播器:把消息發佈給監聽器 事件類 以下是已經有的事件,用戶可以自定義事件 1. ApplicationContextEvent:容器事

原创 Spring AOP編程

術語 連接點(Joinpoint) 程序執行的位置,spring支持方法連接點 切點(Pointcut) 定位特定的連接點,一個切點可以匹配多個連接點 增強(Advice) 織入的一段程序代碼 目標對象(Target)

原创 Spring Cache

緩存過期策略 FIFO(First In First out):先見先出,淘汰最先近來的頁面,新進來的頁面最遲被淘汰,完全符合隊列。 LRU(Least recently used):最近最少使用,淘汰最近不使用的頁面 LFU(

原创 Spring AOP註解

@Aspect通配符 *:匹配任意字符,只能匹配一個元素 ..:匹配任意字符,可以匹配多個元素 +:按類型匹配指定類的所有類,必須在類名後面,繼承或者擴展指定類的所有類,也包括本身 邏輯運算符 &&(and):與操作,切點的

原创 SpringWeb項目測試模版

package cn.sunjie.component.auth; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import

原创 Java8-Lambda(1)

匿名內部類實現 匿名內部類仍然是一個類,只是不需要程序員顯示指定類名,編譯器會自動爲該類取名。因此如果有如下形式的代碼,編譯之後將會產生兩個class文件 public class Main { public static

原创 Linux 文件、目錄

ls -l dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin 第一部分 d 當爲[ d ]則是目錄 當爲[ - ]則是文件; 若是[ l ]則表示爲鏈接文檔(link file);

原创 Executor

Executors Executors爲Executor,ExecutorService,ScheduledExecutorService,ThreadFactory和Callable類提供了一些工具方法,類似於集合中的Colle

原创 事務基礎知識

事務特性 原子性 事務中的任何一個操作,只要有一個失敗,則都失敗 一致性 事務成功後,數據庫的狀態和他的業務規則一致,數據保持一致 隔離性 當多個用戶併發訪問數據庫時,比如操作同一張表時,數據庫爲每一個用戶開啓的事務,不能

原创 深入理解JVM虛擬機 垃圾收集和內存分配

如何確認一個對象已經死了 垃圾收集器在對堆進行回收前,第一件事情就是要確認那些對象已經死了,哪些對象還活着。我們看以下幾種方法 引用計數算法 給對象添加一個引用計數器,當有一個地方引用它的時候,計數器+1,當引用失效的時候就-

原创 深入理解JVM虛擬機 性能分析實戰

案例1 情況:選用64位的JDK,堆大小固定12GB 問題:網站經常是定期,長時間失去響應,GC太長,回收12GB的堆,一次Full GC停頓14秒 解決方式:1.通過64位JDK使用大內存。2.使用若干32位虛擬機建立集羣使用資

原创 Spring容器

內部機制 AbstractApplicationContext的refresh方法刻畫了Spring容器啓動後所執行的各項操作 //初始化BeanFactory postProcessBeanFactory(beanFactor