原创 Java併發編程系列-(5) Java併發容器

5 併發容器 5.1 Hashtable、HashMap、TreeMap、HashSet、LinkedHashMap 在介紹併發容器之前,先分析下普通的容器,以及相應的實現,方便後續的對比。 Hashtable、HashMap、TreeM

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

1.併發編程基礎 1.1 基本概念 CPU核心與線程數關係 Java中通過多線程的手段來實現併發,對於單處理器機器上來講,宏觀上的多線程並行執行是通過CPU的調度來實現的,微觀上CPU在某個時刻只會運行一個線程。事實上,如果這些任務不存

原创 Java併發編程系列-(2) 線程的併發工具類

2.線程的併發工具類 2.1 Fork-Join JDK 7中引入了fork-join框架,專門來解決計算密集型的任務。可以將一個大任務,拆分成若干個小任務,如下圖所示: Fork-Join框架利用了分而治之的思想:什麼是分而治之?規

原创 Docker系列-(3) Docker-compose使用與負載均衡

上一篇文章介紹了docker鏡像的製作與發佈,本文主要介紹實際docker工程部署中經常用到的docker-compose工具,以及docker的網絡配置和負載均衡。 Docker-compose介紹 實際開發過程中,在一個項目中,我們常將

原创 Docker系列-(2) 鏡像製作與發佈

上篇文章引入了Docker的基本原理和操作,本節文章主要介紹如何製作Docker鏡像和發佈。 鏡像文件結構 Docker鏡像的本質是一系列文件的集合,這些文件依次疊加,形成了最後的鏡像文件,類似於下圖所示的結構, 從底層往上,依次是文件系

原创 Linux基礎 - Crontab定時任務

目錄 設置Cron任務 創建任務 設置運行週期 配置命令 常見問題 如何列出所有的Cron任務 如何查看Cron任務運行log 如何配置帶有虛擬venv的Python腳本 如何在Cron 任務中發送郵件通知 設置Cron任務 創建

原创 Docker系列-(1) 原理與基本操作

Docker是一個開源的應用容器引擎,基於Go語言,並遵從Apache2.0協議開源。 Docker可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發佈到任何流行的Linux機器上,也可以實現虛擬化。 Docker容

原创 Java併發編程系列-(3) 原子操作與CAS

3. 原子操作與CAS 3.1 原子操作 所謂原子操作是指不會被線程調度機制打斷的操作;這種操作一旦開始,就一直運行到結束,中間不會有任何context switch,也就是切換到另一個線程。 爲了實現原子操作,Java中可以通過sync