原创 7、java 對象和線程安全性問題

概述 前面幾篇博客我們介紹了 java 代碼中如何創建並啓動線程。而多線程併發在提高效率的同時也帶來了線程安全性問題,本篇博客我們主要整理一下java對象和線程安全性問題的聯繫。 Java對象與線程安全 本篇博客從以下四個模塊展

原创 Java鎖系列——3、JVM 對 Synchronized 鎖優化

概述 在上篇博客中,我們提到輕量級鎖、偏向鎖、重量級鎖等概念。在早期的 java 虛擬機中,synchronized 鎖基於 monitor 管程對象實現,而 monitor 對象又基於底層操作系統互斥量來保證同步。這就意味着,所

原创 Java鎖系列——2、Synchronized 鎖實現原理

概述 上篇博客我簡單介紹了 Synchronized 鎖的三種使用方法及部分特性。作爲開發者,適當的瞭解原理可以加深我們對它的理解。因此,本篇博客我打算從底層介紹一下 Synchronized 鎖實現的原理。 Synchroni

原创 MySQL基本概念(1)

一、什麼是MySQL? MySQL是現在市面上用的最廣的關係型數據庫。簡單理解也就是存放數據的倉庫。關於關係型數據庫和非關係型數據庫可以點擊這裏查看之前博客。 1、邏輯架構圖 最上層服務不是MySQL所獨有的,大多數基於網絡的客戶端/服

原创 Xshell上傳windows文件到Centos操作系統

1、通過 Xshell 連接 Centos 操作系統,並切換到你想要的上傳的路徑 2、輸入命令 “rz” 判斷系統是否安裝 “lrzsz”,如果沒有安裝終端會提示 “rz: command not found” 3、如果沒有安裝,輸入一下

原创 3、併發模型

概述 在實際的併發系統中,根據不同的業務場景一般使用不同的併發處理手段,這些不同的手段我們就稱之爲併發模型。不同的併發模型採用不同的方式拆分任務,同時這些併發線程間的交互方式也大不相同。本篇我們就介紹常見的幾種併發模型: 併發模

原创 4、Java 創建線程

概述 前面幾篇博客主要從宏觀角度上介紹了多線程有關的知識。本篇從實際應用角度介紹在JAVA代碼中如何創建並啓動線程。 Java 創建線程 本篇主要從以下三個模塊介紹: JAVA 創建線程的三種方式 在實際應用中如何選擇 run

原创 JAVA 無鎖隊列/棧

概述 在多線程應用場景下,一般需要在代碼中實現 加鎖/解鎖 操作來確保線程安全。在某些情況下,鎖的處理會給程序帶了很大的性能影響。在這種情況下, 我們就考慮無鎖操作即在不加鎖的情況下,依舊能保證線程的安全執行。 JAVA 無鎖隊

原创 2、多線程的優勢和缺陷

概述 由於單線程本身的缺陷,目前絕大多數系統採用多線程的方式運行。雖然多線程提高了系統資源利用率,但同時也給系統帶來了線程安全性問題。本篇就多線程的優勢和缺陷系統的整理一下,在以後的開發過程中,根據不同的業務場景使用不同的線程模型

原创 1、多線程簡單介紹

概述 多線程,顧名思義也就是說多個線程共同執行來保證應用的穩定性和可用性,現如今幾乎所有的應用都採用多線程模式。JAVA 語言從一開始就支持多線程,並通過併發包(java.util.concurrent)封裝了一系列和線程有關的J

原创 二插搜索樹相關算法題

概要 二插搜索樹:它或者是一棵空樹,或者是具有下列性質的二叉樹: 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值; 它的左、右子樹也分別爲二叉排序樹。 下面我列

原创 二叉樹中序遍歷的常見方法

概述 中序遍歷,是二叉樹遍歷的一種。在二叉樹中,中序遍歷首先遍歷左子樹,然後遍歷根節點,最後遍歷右子樹。 遞歸遍歷法 public List<Integer> getLDRMethod1(TreeNode treeNode) {

原创 正則表達式匹配問題(letcode 10)

問題描述 給你一個字符串 s 和一個字符規律 p,請你來實現一個支持 '.' 和 '*' 的正則表達式匹配。 '.' 匹配任意單個字符 '*' 匹配零個或多個前面的那一個元素 所謂匹配,是要涵蓋 整個 字符串 s的,而不是部分字符串。

原创 目標和問題(letCode 494)

問題描述 給定一個非負整數數組,a1, a2, ..., an, 和一個目標數,S。現在你有兩個符號 + 和 -。對於數組中的任意一個整數,你都可以從 + 或 -中選擇一個符號添加在前面。 返回可以使最終數組和爲目標數 S 的所有添加符

原创 最大子序列和問題(letCode 53)

問題描述 給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。 示例 輸入: [-2,1,-3,4,-1,2,1,-5,4], 輸出: 6 解釋: 連續子數組 [4,-1,2,1]