原创 啓動cesium官方示例

一、下載cesium官方源碼 點擊cesium官網,下載源碼 二、使用http-server啓動服務 準備工具:nodejs、http-server、cesium源碼。 nodejs:下載安裝nodejs 安裝http-ser

原创 springboot整合redis分別實現手動緩存和註解緩存

一、前期準備 一個構建好的springboot系統 下載redis安裝包,去redis官網下載 啓動redis服務,windows下雙擊bin目錄下的redis-service.exe 二、環境構建 在項目的pom.xml中

原创 如何在數據庫三範式的基礎上進行數據庫冗餘設計

數據庫設計過程中不僅要考慮遵循第三範式,還要考慮是否冗餘 很多數據庫設計書籍都強調數據庫設計三範式,而三範式的一個重要工作就是消除冗餘,可以消除冗餘在大多數情況下是正確的。當在實際的業務模型中,處理複雜的業務時有時冗餘某些信息

原创 Java 內存區域詳解

目錄一 概述二 運行時數據區域2.1 程序計數器2.2 Java 虛擬機棧2.3 本地方法棧2.4 堆2.5 方法區2.5.1 方法區和永久代的關係2.5.2 常用參數2.5.3 爲什麼要將永久代 (PermGen) 替換爲元空間

原创 併發容器總結

目錄一 JDK 提供的併發容器總結二 ConcurrentHashMap三 CopyOnWriteArrayList3.1 CopyOnWriteArrayList 簡介3.2 CopyOnWriteArrayList 是如何做到

原创 JVM 配置常用參數和常用 GC 調優策略

JVM 配置常用參數 堆參數; 回收器參數; 項目中常用配置; 常用組合; 堆參數 回收器參數 如上表所示,目前主要有串行、並行和併發三種,對於大內存的應用而言,串行的性能太低,因此使用到的主要是並行和併發兩種。並行和併發

原创 AQS

1. AQS 介紹 AQS的全稱爲(AbstractQueuedSynchronizer),這個類在java.util.concurrent.locks包下面。 AQS是一個用來構建鎖和同步器的框架,使用AQS能簡單且高效地構造

原创 JVM 垃圾回收

目錄引言1 揭開 JVM 內存分配與回收的神祕面紗1.1 對象優先在 eden 區分配1.2 大對象直接進入老年代1.3 長期存活的對象將進入老年代1.4 動態對象年齡判定2 對象已經死亡?2.1 引用計數法2.2 可達性分析算

原创 Java8新特性之Date API(日期相關API)

Java 8在 java.time 包下包含一個全新的日期和時間API。新的Date API與Joda-Time庫相似,但它們不一樣。以下示例涵蓋了此新 API 的最重要部分。譯者對這部分內容參考相關書籍做了大部分修改。 (總結)

原创 爲什麼我們調用 start() 方法時會執行 run() 方法,爲什麼我們不能直接調用 run() 方法?

new 一個 Thread,線程進入了新建狀態;調用 start() 方法,會啓動一個線程並使線程進入了就緒狀態,當分配到時間片後就可以開始運行了。 start() 會執行線程的相應準備工作,然後自動執行 run() 方法的內容,

原创 什麼是上下文切換?

多線程編程中一般線程的個數都大於 CPU 核心的個數,而一個 CPU 核心在任意時刻只能被一個線程使用,爲了讓這些線程都能得到有效執行,CPU 採取的策略是爲每個線程分配時間片並輪轉的形式。當一個線程的時間片用完的時候就會重新處於

原创 HashMap 和 HashSet區別

如果看過 HashSet 源碼的話就應該知道:HashSet 底層就是基於 HashMap 實現的。(HashSet 的源碼非常非常少,因爲除了 clone()、writeObject()、readObject()是 HashSe

原创 BigDecimal

1.3.1. BigDecimal 的用處 《阿里巴巴Java開發手冊》中提到:浮點數之間的等值判斷,基本數據類型不能用==來比較,包裝數據類型不能用 equals 來判斷。 具體原理和浮點數的編碼方式有關,這裏就不多提了,我們下

原创 Arraylist 與 LinkedList 區別?

1. 是否保證線程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保證線程安全; 2. 底層數據結構: Arraylist 底層使用的是 Object 數組;LinkedList 底層使用的是

原创 在一個靜態方法內調用一個非靜態成員爲什麼是非法的?

由於靜態方法可以不通過對象進行調用,因此在靜態方法裏,不能調用其他非靜態變量,也不可以訪問非靜態變量成員。