# IntelliJ IDEA 筆記
## IDEA的一些常用配置
### IDEA安裝后的目錄結構

**bin:容器,執行文件和啟動參數等**
**help:快捷鍵文檔和其他幫助文檔**
**jre64:64 位java 運行環境**
**lib:idea 依賴的類庫**
**license:各個插件許可**
**plugin:插件**
### 調整 VM 配 置文件
在**bin**目錄下找到**idea64.exe.vmoptions**

**我的電腦是16G內存**
**-Xms128m**:設置初始的內存數,增加該值可以提高 Java 程序的啟動速度, 我這里設置為**512m** 。
**-Xmx750m:**設置最大內存數,提高該值,可以減少內存 Garage 收集的頻率,提高程序性能。我這里設置為**1500m** 。
**-XX:ReservedCodeCacheSize:**保留代碼占用的內存容量,我這里設置為**500m**。
### 相關設置的目錄結構

這是 IDEA 的各種配置的保存目錄。這個設置目錄有一個特性,就是你刪除掉整 個目錄之后,重新啟動 IntelliJ IDEA 會再自動幫你生成一個全新的默認配置, 所以很多時候如果你把 IntelliJ IDEA 配置改壞了,沒關系,刪掉該目錄,一切 都會還原到默認。
#### config 目錄
config 目錄是 IntelliJ IDEA 個性化化配置目錄,或者說是整個 IDE 設置目錄。 此目錄可看成是最重要的目錄,沒有之一,安裝新版本的 IntelliJ IDEA 會自動掃描硬盤上的舊配置目錄,指的就是該目錄。 這個目錄主要記錄了:IDEA 主要配置功能、自定義的代碼模板、自定義的文件 模板、自定義的快捷鍵、Project 的 tasks 記錄等等個性化的設置。 比如,因為IDEA的代碼格式化和QQ的快捷鍵沖突,所以我自己自定義過代碼格式化的快捷鍵:

這個在配置文件中就是這樣體現的:


#### system 目錄
system 目錄是 IntelliJ IDEA 系統文件目錄,是 IntelliJ IDEA 與開發項目一個 橋梁目錄,里面主要有:緩存、索引、容器文件輸出等等。
## IDEA中的Module
在 Eclipse 中有 Workspace(工作空間)和 Project(工程)的概念,在 IDEA 中只有 Project(工程)和 Module(模塊)的概念。這里的對應關系為:

在 IntelliJ IDEA 中 Project 是最頂級的級別,次級別是 Module。一個 Project IntelliJ IDEA 的安裝、配置與使用 可以有多個 Module。目前主流的大型項目都是分布式部署的,結構都是類似這 種多 Module 結構。

這類項目一般是這樣劃分的,比如:core Module、web Module、plugin Module、 solr Module 等等,模塊之間彼此可以相互依賴。通過這些 Module 的命名也可 以看出,他們之間都是處于同一個項目業務下的模塊,彼此之間是有不可分割的 業務關系的。舉例:

### 創建一個Module

接著選擇 Next:

之后,我們可以在 Module 的 src 里寫代碼,此時 Project 工程下的 src 就沒什么 用了。可以刪掉。
### 刪除一個Model


此時的刪除,會從硬盤上將此 module 刪除掉。
## 查看項目配置

進入項目結構:

## 常用配置
### Appearance & Behavior
#### 設置主題

#### 設置窗體及菜單的字體及字體大小

#### 設置編輯區主題
IDEA 默認提供了兩個編輯區主題,可以通過如下的方式進行選擇。
一個不錯的主題下載網站:
[http://www.riaway.com/]: http://www.riaway.com/
##### 下載以后,導入主題
file –> import setttings –> 選中下載的主題 jar 文件 –> 一路確認 –> 重啟。 重啟以后,新主題會自動啟用。如果沒有啟用,可以如下方式選擇:


##### 通過插件(plugins)更換主題
推薦使用Material Theme UI
### Editor - General
#### 設置鼠標滾輪修改字體大小

#### 設置鼠標懸浮提示

#### 設置自動導包功能

**Add unambiguous imports on the fly:**自動導入不明確的結構 **Optimize imports on the fly:**自動幫我們優化導入的包
#### 設置顯示行號和方法間的分隔符

**Show line numbers:**顯示行數。我建議一般這個 要勾選上。 **Show method separators:** 顯示方法分隔線。這 種線有助于我們區分開方法,所以建議勾選上。
#### 忽略大小寫提示

IntelliJ IDEA 的代碼提示和補充功能有一個特性:區分大小寫。如上圖標注所 示,默認就是 First letter 區分大小寫的。
區分大小寫的情況是這樣的:比如我們在 Java 代碼文件中輸入 stringBuffer, IntelliJ IDEA 默認是不會幫我們提示或是代碼補充的,但是如果我們輸入 StringBuffer 就可以進行代碼提示和補充。 如果想不區分大小寫的話,改為 None 選項即可。
#### 設置取消單行顯示 tabs 的操作

如上圖標注所示,在打開很多文件的時候,IntelliJ IDEA 默認是把所有打開的文 件名 Tab 單行顯示的。但是我個人現在的習慣是使用多行,多行效率比單行高, 因為單行會隱藏超過界面部分 Tab,這樣找文件不方便。
### Editor – Font
#### 設置默認的字體、字體大小、字體行間距

### Editor – Color Scheme
#### 修改當前主題的字體、字體大小、字體行間距
如果當前主題不希望使用默認字體、字體大小、字體行間距,還可以單獨設置:

#### 修改當前主題的控制臺輸出的字體及字體大小(可忽略)

#### 修改代碼中注釋的字體顏色

**Doc Comment – Text:**修改文檔注釋的字體顏色。
**Block comment:**修改多行注釋的字體顏色 。
**Line comment:**修改當行注釋的字體顏色。
### Editor – Code Style
#### 設置超過指定 import 個數,改為*

### Editor – File and Code Templates
#### 修改類頭的文檔注釋信息

```java
/**
@author hs96.cn@Gmail.com
@create ${YEAR}-${MONTH}-${DAY} ${TIME}
*/
```
常用的預設的變量,這里直接貼出官網給的:
```
${PACKAGE_NAME} - the name of the target package where the new class or interface will be created.
${PROJECT_NAME} - the name of the current project.
${FILE_NAME} - the name of the PHP file that will be created.
${NAME} - the name of the new file which you specify in the New File dialog box during the file creation.
${USER} - the login name of the current user.
${DATE} - the current system date.
${TIME} - the current system time.
${YEAR} - the current year.
${MONTH} - the current month.
${DAY} - the current day of the month.
${HOUR} - the current hour.
${MINUTE} - the current minute.
${PRODUCT_NAME} - the name of the IDE in which the file will be created.
${MONTH_NAME_SHORT} - the first 3 letters of the month name. Example: Jan, Feb, etc.
${MONTH_NAME_FULL} - full name of a month. Example: January, February, etc.
```
### Editor – File Encodings
#### 設置項目文件編碼

說明:**Transparent native-to-ascii conversion** 主要用于轉換 ascii,一般都要勾選, 不然 Properties 文件中的注釋顯示的都不會是中文。
#### 設置當前源文件的編碼

對單獨文件的編碼修改還可以點擊右下角的編碼設置區。如果代碼內容中包含中 文,則會彈出如上的操作選擇。其中:
1. Reload 表示使用新編碼重新加載,新編碼不會保存到文件中,重新打開此文 件,舊編碼是什么依舊還是什么。
2. Convert 表示使用新編碼進行轉換,新編碼會保存到文件中,重新打開此文件, 新編碼是什么則是什么。
3. 含有中文的代碼文件,Convert 之后可能會使中文變成亂碼,所以在轉換成請 做好備份,不然可能出現轉換過程變成亂碼,無法還原。
### Build,Execution,Deployment
#### 設置自動編譯

構建就是以我們編寫的 java 代碼、框架配置文件、國際化等其他資源文件、 JSP 頁面和圖片等資源作為“原材料”,去“生產”出一個可以運行的項目的 過程。
**Intellij Idea 默認狀態為不自動編譯狀態,Eclipse 默認為自動編譯:**
*很多朋友都是從 Eclipse 轉到 Intellij 的,這常常 導致我們在需要操作 class 文件時忘記對修改后 的 java 類文件進行重新編譯,從而對舊文件進 行了操作。*

### 設置為省電模式

如上圖所示,IntelliJ IDEA 有一種叫做 省電模式 的狀態,開啟這種模式之后 IntelliJ IDEA 會關掉代碼檢查和代碼提示等功能。所以一般也可認為這是一種 閱 讀模式,**如果你在開發過程中遇到突然代碼文件不能進行檢查和提示**,可以來看 看這里是否有開啟該功能。
### 設置代碼水平或垂直顯示

### 快捷鍵
#### 設置快捷為 Eclipse 的快捷鍵

#### 通過快捷鍵功能修改快捷鍵設置

#### 通過指定快捷鍵,查看或修改其功能

#### 導入已有的設置

點擊 0K 之后,重啟 IDEA 即可。
#### 常用快捷鍵
| 序號 | 功能 | 按鍵 |
| :--: | :-------------------------------------: | :----------------------------------------------: |
| 1 | 執行(run) | alt+r |
| 2 | 提示補全 | (Class Name Completion) alt+/ |
| 3 | 單行注釋 | ctrl + / |
| 4 | 多行注釋 | ctrl + shift + / |
| 5 | 向下復制一行 | (Duplicate Lines) ctrl+alt+down |
| 6 | 刪除一行或選中行 | (delete line) ctrl+d |
| 7 | 向下移動行 | (move statement down) alt+down |
| 8 | 向上移動行 | (move statement up) alt+up |
| 9 | 向下開始新的一行 | (start new line) shift+enter |
| 10 | 向上開始新的一行 | (Start New Line before current) ctrl+shift+enter |
| 11 | 如何查看源碼 | (class) ctrl + 選中指定的結構 或ctrl + shift + t |
| 12 | 萬能解錯/生成返回值變量 | alt + enter |
| 13 | 退回到前一個編輯的頁面 | (back) alt + left |
| 14 | 進入到下一個編輯的頁面(針對于上條) | (forward) alt + right |
| 15 | 查看繼承關系 | (type hierarchy) F4 |
| 16 | 格式化代碼(reformat code) | ctrl+shift+F |
| 17 | 提示方法參數類型(Parameter Info) | ctrl+alt+/ |
| 18 | 選中數行,整體往后移動 | tab |
| 19 | 查看類的結構:類似于 eclipse 的 outline | ctrl+o |
| 20 | 重構:修改變量名與方法名(rename) | alt+shift+r |
| 21 | 大寫轉小寫/小寫轉大寫(toggle case) | ctrl+shift+y |
//TODO 用到其他快捷鍵再后續更新
### 關于模板(Templates)
**(Editor – Live Templates 和 Editor – General – Postfix Completion)**
#### Live Templates(實時代碼模板)功能介紹
它的原理就是配置一些常用代碼字母縮寫,在輸入簡寫時可以出現你預定義的固 IntelliJ IDEA 的安裝、配置與使用 定模式的代碼,使得開發效率大大提高,同時也可以增加個性化。最簡單的例子 就是在 Java 中輸入 sout 會出現 System.out.println();
官方介紹 Live Templates: https://www.jetbrains.com/help/idea/using-live-templates.html
#### 已有的常用模板
**Postfix Completion 默認如下:**

#### Live Templates 默認如下:

二者的區別:Live Templates 可以自定義,而 Postfix Completion 不可以。同時, 有些操作二者都提供了模板,Postfix Templates 較 Live Templates 能快 0.01 秒
#### 修改現有模板:Live Templates
##### 修改1
通過調用 psvm 調用 main 方法不習慣,可以改為跟 Eclipse 一樣,使用 main 調取。

##### 修改2

類似的還可以修改 psfs。
#### 自定義模板
IDEA 提供了很多現成的 Templates。但你也可以根據自己的需要創建新的Template。

選中自定義的模板組,點擊”+”來定義模板。

- Abbreviation:模板的縮略名稱
- Description:模板的描述
- Template text:模板的代碼片段 4
- 應用范圍。比如點擊 Define。選擇如下:

可以如上的方式定義個測試方法,然后在 java 類文件中測試即可。 類似的可以再配置如下的幾個 Template:

//DOTO 自行定義即可
### 創建 Java Web Project 或 Module
#### 創建的靜態 Java Web


#### 創建動態的 Java Web
工程欄空白處 new – module:


這里一定要勾選 Web Application,才能創建一個 Web 工程。

提供 Web 工程名。這里注意修改一下 Content root 和 Module file location。 創建以后的工程結構如下:

#### 配置 Tomcat
在 IDEA 中配置 Tomcat 之前,需要保證已經安裝并配置了 Tomcat 的環境變量。 如果沒有安裝并配置,可以參考《尚硅谷_宋紅康_Tomcat 快速部署.pdf》,配置完 成以后,在命令行輸入:catalina run 。能夠啟動 tomcat,則證明安裝配置成功。
下面看如何在 IDEA 中配置:

點擊 Edit Configurations:

這里選擇 TomEE Server 或者 Tomcat Server 都可以。接著選擇 Local。

這里配置 Tomcat 的名稱以及配置應用服務器的位置。根據自己 Tomcat 的安裝位 置決定。

其它位置使用默認值(設置要啟動的瀏覽器以及端口號),如上。
接著部署:

點擊 OK 即可。此時:

執行剛才創建的 index.jsp 即可:

注意事項: 顯示運行以后的 Tomcat 的信息:

可以點擊紅框,剛點擊完畢并不能馬上關閉服務器,只是斷開了與服務器的連接, 稍后當停止按鈕顯示為灰色,才表示關閉。
### 關聯數據庫
#### 關聯方式


表面上很多人認為配置 Database 就是為了有一個 GUI 管理數據庫功能,但是 這并不是 IntelliJ IDEA 的 Database 最重要特性。數據庫的 GUI 工具有很多, IntelliJ IDEA 的 Database 也沒有太明顯的優勢。IntelliJ IDEA 的 Database 最大特 性就是對于 Java Web 項目來講,常使用的 ORM 框架,如 Hibernate、Mybatis 有很好的支持,比如配置好了 Database 之后,IntelliJ IDEA 會自動識別 domain 對象與數據表的關系,也可以通過 Database 的數據表直接生成 domain 對象等 等。
//TODO 這個很少使用,一般我們都有自己的連接工具,domain 后續補充
#### ### 版本控制(Version Control)

很多人認為 IntelliJ IDEA 自帶了 SVN 或是 Git 等版本控制工具,認為只 要安裝了 IntelliJ IDEA 就可以完全使用版本控制應有的功能。這完全是一種 錯誤的解讀,IntelliJ IDEA 是自帶對這些版本控制工具的插件支持,但是該 裝什么版本控制客戶端還是要照樣裝的。

IntelliJ IDEA 對版本控制的支持是以插件化的方式來實現的。旗艦版默認支 持目前主流的版本控制軟件:CVS、Subversion(SVN)、Git、Mercurial、Perforce、TFS。又因為目前太多人使用 Github 進行協同或是項目版本管理, 所以 IntelliJ IDEA 同時自帶了 Github 插件,方便 Checkout 和管理你的 Github 項目。
在實際開發中,發現在 IDEA 中使用 SVN 的經歷不算愉快,經常會遇到很多 問題,比如緊急情況下 IDEA 無法更新、提交等。所以這里,談下在 IDEA 中使用 Git。
##### 提前安裝好 Git 的客戶端
Git 的 msysGit 官網下載:https://git-scm.com/
Git 客戶端 TortoiseGit 官網下載:http://download.tortoisegit.org/tgit/
##### 關聯 git.exe

##### 關聯 GitHub 上的賬戶,并測試連接

##### 在 GitHub 上創建賬戶下的一個新的倉庫作為測試:

##### 支持從當前登錄的 Github 賬號上直接 Checkout 項目

##### 在 IDEA 中 clone GitHub 上的倉庫:

這里需要在 GitHub 的自己的賬戶下,復制項目倉庫路徑,填寫到上圖 Git Repository URL 中。不再贅述。
##### 連接成功以后,會下載 github 上的項目


##### 除此之外,還可以通過如下的方式連接 GitHub

##### 本地代碼分享到 GitHub


此時會在 GitHub 上創建一個新的倉庫,而非更新已經存在的倉庫。
##### Git 的常用操作

- clone:拷貝遠程倉庫
- commit:本地提交
- push:遠程提交
- pull:更新到本地
##### 沒有使用 Git 時本地歷史記錄的查看


即使我們項目沒有使用版本控制功能,IntelliJ IDEA 也給我們提供了本地文件歷 史記錄
### 斷點調試
#### Debug 的設置

設置 Debug 連接方式,默認是 Socket。Shared memory 是 Windows 特有的一 個屬性,一般在 Windows 系統下建議使用此設置,內存占用相對較少。
#### 常用斷點調試快捷鍵

#### 條件斷點
選擇行,ctrl + u。還可以在查看框中輸入編寫代碼時的其他方法:

### 配置 Maven
#### Maven 的配置
maven 的下載 – 解壓 – 環境變量的配置這里就贅述了,需要的參考 1-課件 中的《Maven 的配置》。下面直接整合 Maven。選擇自己 Maven 的目錄,和 settings 文件,然后配置自己的倉庫 reposiroty。

**Maven home directory:**可以指定本地 Maven 的安裝目錄所在,因為我已經配置了 M2_HOME 系統參數,所以直接這樣配置 IntelliJ IDEA 是可以找到的。但是假如你沒有配 置的話,這里可以選擇你的 Maven 安裝目錄。此外,這里不建議使用 IDEA 默認的。 ?
**User settings file / Local repository**:我們還可以指定 Maven 的 settings.xml 位置和本地倉 庫位置。

**Import Maven projects automatically:**表示 IntelliJ IDEA 會實時監控項目的 pom.xml 文件, 進行項目變動設置。
**Automatically download:**在 Maven 導入依賴包的時候是否自動下載源碼和文檔。默認是 沒有勾選的,也不建議勾選,原因是這樣可以加快項目從外網導入依賴包的速度,如果我 們需要源碼和文檔的時候我們到時候再針對某個依賴包進行聯網下載即可。IntelliJ IDEA 支持直接從公網下載源碼和文檔的。
**VM options for importer:**可以設置導入的 VM 參數。一般這個都不需要主動改,除非項 目真的導入太慢了我們再增大此參數。
#### 創建對應的 Module


**Group:組織或公司域名,倒序**
**Artifact:項目模塊名稱**
**Version:默認 maven 生成版本:0.0.1-SNAPSHOT**

這里可以暫時先不選,后面開發需要了再進行設置。

點擊 finish 即可完成創建

創建完成以后,可以在 IDEA 右邊看到創建的 Module。如果沒有,可以刷新一下。 目錄下也會有對應的生命周期。其中常用的是:clean、compile、package、install。
比如這里install,如果其他項目需要將這里的模塊作為依賴使用,那就可以install。 安裝到本地倉庫的位置。

//TODO 關于Maven我再單獨整理一份吧
### 其它設置
#### 生成 javadoc


輸入:
**Locale:**輸入語言類型:zh_CN
**Other command line arguments:**-encoding UTF-8 -charset UTF-8
#### 緩存和索引的清理
IntelliJ IDEA 首次加載項目的時候,都會創建索引,而創建索引的時間跟項目的 文件多少成正比。在 IntelliJ IDEA 創建索引過程中即使你編輯了代碼也是編譯 不了、運行不起來的,所以還是安安靜靜等 IntelliJ IDEA 創建索引完成。
IntelliJ IDEA 的緩存和索引主要是用來加快文件查詢,從而加快各種查找、代碼 提示等操作的速度,所以 IntelliJ IDEA 的索引的重要性再強調一次也不為過。 但是,IntelliJ IDEA 的索引和緩存并不是一直會良好地支持 IntelliJ IDEA 的, 某些特殊條件下,IntelliJ IDEA 的緩存和索引文件也是會損壞的,比如:斷電、 藍屏引起的強制關機,當你重新打開 IntelliJ IDEA,很可能 IntelliJ IDEA 會報 各種莫名其妙錯誤,甚至項目打不開,IntelliJ IDEA 主題還原成默認狀態。即使 沒有斷電、藍屏,也會有莫名奇怪的問題的時候,也很有可能是 IntelliJ IDEA 緩 存和索引出現了問題,這種情況還不少。遇到此類問題也不用過多擔心。我們可 以清理緩存和索引。如下:


- 一般建議點擊 Invalidate and Restart,這樣會比較干凈。
- 上圖警告:清除索引和緩存會使得 IntelliJ IDEA 的 Local History 丟失。所以如果你項目沒 有加入到版本控制,而你又需要你項目文件的歷史更改記錄,那你最好備份下你的 LocalHistory 目錄。目錄地址在: C:\Users\ 當 前 登 錄 的 系 統 用 戶 名 \.IntelliJIdea14\system\LocalHistory 建議使用硬盤的全文搜索,這樣效率更高。
- 通過上面方式清除緩存、索引本質也就是去刪除 C 盤下的 system 目錄下的對應的文件 而已,所以如果你不用上述方法也可以刪除整個 system。當 IntelliJ IDEA 再次啟動項目的 時候會重新創建新的 system 目錄以及對應項目緩存和索引。
#### 取消更新

#### 插件的使用
在 IntelliJ IDEA 的安裝講解中我們其實已經知道,IntelliJ IDEA 本身很多功能也都 是通過插件的方式來實現的。 官網插件庫:https://plugins.jetbrains.com/

- Install JetBrains plugin:彈出 IntelliJ IDEA 公司自行開發的插件倉庫列表,供下載安裝。
- Browse repositories:彈出插件倉庫中所有插件列表供下載安裝。
- Install plugin from disk:瀏覽本地的插件文件進行安裝,而不是從服務器上下載并安裝。


如上圖演示,在線安裝 IntelliJ IDEA 插件庫中的插件。安裝完以后會提示重啟, 才可以使用插件。
常用插件推薦:
| 插件名稱 | 插件介紹 | 官網地址 |
| ---------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| Key promoter | 快捷鍵提示 | https://plugins.jetbrains.com/plugin/4455-key-promoter/ |
| CamelCase | 駝峰式命名和下劃線命名 交替變化 | https://plugins.jetbrains.com/plugin/7160-camelcase/ |
| CheckStyle-IDEA | 代碼樣式檢查 | https://plugins.jetbrains.com/plugin/1065-checkstyle-idea/ |
| FindBugs-IDEA | 代碼 Bug 檢查 | https://plugins.jetbrains.com/plugin/3847-findbugs-idea/ |
| Statistic | 代碼統計 | https://plugins.jetbrains.com/plugin/4509-statistic/ |
| JRebel Plugin | 熱部署 | https://plugins.jetbrains.com/plugin/4441-jrebel-and-xrebel-for-intellij/ |
| CodeGlance | 在編輯代碼最右側,顯示一 塊代碼小地圖 | https://plugins.jetbrains.com/plugin/7275?pr=idea |
| Eclipse Code Formatter | 使用 Eclipse 的代碼格式 化風格,在一個團隊中如果 公司有規定格式化風格,這 個可以使用。 | https://plugins.jetbrains.com/plugin/6546-eclipse-code-formatter/ |
| GsonFormat | 把 JSON 字符串直接實例 化成類 | https://plugins.jetbrains.com/plugin/7654-gsonformat/ |
//TODO 持續更新
- 微服務
- 服務器相關
- 操作系統
- 極客時間操作系統實戰筆記
- 01 程序的運行過程:從代碼到機器運行
- 02 幾行匯編幾行C:實現一個最簡單的內核
- 03 黑盒之中有什么:內核結構與設計
- Rust
- 入門:Rust開發一個簡單的web服務器
- Rust的引用和租借
- 函數與函數指針
- Rust中如何面向對象編程
- 構建單線程web服務器
- 在服務器中增加線程池提高吞吐
- Java
- 并發編程
- 并發基礎
- 1.創建并啟動線程
- 2.java線程生命周期以及start源碼剖析
- 3.采用多線程模擬銀行排隊叫號
- 4.Runnable接口存在的必要性
- 5.策略模式在Thread和Runnable中的應用分析
- 6.Daemon線程的創建以及使用場景分析
- 7.線程ID,優先級
- 8.Thread的join方法
- 9.Thread中斷Interrupt方法學習&采用優雅的方式結束線程生命周期
- 10.編寫ThreadService實現暴力結束線程
- 11.線程同步問題以及synchronized的引入
- 12.同步代碼塊以及同步方法之間的區別和關系
- 13.通過實驗分析This鎖和Class鎖的存在
- 14.多線程死鎖分析以及案例介紹
- 15.線程間通信快速入門,使用wait和notify進行線程間的數據通信
- 16.多Product多Consumer之間的通訊導致出現程序假死的原因分析
- 17.使用notifyAll完善多線程下的生產者消費者模型
- 18.wait和sleep的本質區別
- 19.完善數據采集程序
- 20.如何實現一個自己的顯式鎖Lock
- 21.addShutdownHook給你的程序注入鉤子
- 22.如何捕獲線程運行期間的異常
- 23.ThreadGroup API介紹
- 24.線程池原理與自定義線程池一
- 25.給線程池增加拒絕策略以及停止方法
- 26.給線程池增加自動擴充,閑時自動回收線程的功能
- JVM
- C&C++
- GDB調試工具筆記
- C&C++基礎
- 一個例子理解C語言數據類型的本質
- 字節順序-大小端模式
- Php
- Php源碼閱讀筆記
- Swoole相關
- Swoole基礎
- php的五種運行模式
- FPM模式的生命周期
- OSI網絡七層圖片速查
- IP/TCP/UPD/HTTP
- swoole源代碼編譯安裝
- 安全相關
- MySql
- Mysql基礎
- 1.事務與鎖
- 2.事務隔離級別與IO的關系
- 3.mysql鎖機制與結構
- 4.mysql結構與sql執行
- 5.mysql物理文件
- 6.mysql性能問題
- Docker&K8s
- Docker安裝java8
- Redis
- 分布式部署相關
- Redis的主從復制
- Redis的哨兵
- redis-Cluster分區方案&應用場景
- redis-Cluster哈希虛擬槽&簡單搭建
- redis-Cluster redis-trib.rb 搭建&原理
- redis-Cluster集群的伸縮調優
- 源碼閱讀筆記
- Mq
- ELK
- ElasticSearch
- Logstash
- Kibana
- 一些好玩的東西
- 一次折騰了幾天的大華攝像頭調試經歷
- 搬磚實用代碼
- python讀取excel拼接sql
- mysql大批量插入數據四種方法
- composer好用的鏡像源
- ab
- 環境搭建與配置
- face_recognition本地調試筆記
- 虛擬機配置靜態ip
- Centos7 Init Shell
- 發布自己的Composer包
- git推送一直失敗怎么辦
- Beyond Compare過期解決辦法
- 我的Navicat for Mysql
- 小錯誤解決辦法
- CLoin報錯CreateProcess error=216
- mysql error You must reset your password using ALTER USER statement before executing this statement.
- VM無法連接到虛擬機
- Jetbrains相關
- IntelliJ IDEA 筆記
- CLoin的配置與使用
- PhpStormDocker環境下配置Xdebug
- PhpStorm advanced metadata
- PhpStorm PHP_CodeSniffer