原创 ReentrantLock和ReentrantReadWriteLock類的使用

在Java中,可以使用synchronized關鍵字實現線程之間同步互斥,除此以外,JDK中的Lock對象也能實現同步的效果,而且在使用上更加方便靈活,擴展功能也更加強大。常用的兩個Lock類爲ReentrantLock和Reentran

原创 二叉樹的前序中序和後續遍歷及應用場景

二叉樹的結構定義 public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public Tre

原创 Java中的小數是怎麼存儲的?

Java中的小數使用double和float表示,小數屬於浮點型(默認爲double)。 對於float型的值,則要在數字後加f或F,如12.3F,它在機器中佔32位,4個字節來存儲,表示精度較低。double是64位。 那麼一個小數在J

原创 線程間通信

線程和線程之間不是獨立的個體,它們彼此之間可以互相通信和協作。 線程通信就是在線程之間傳遞信息,保證他們能夠協同工作。在線程間進行通信後,系統之間的交互性會更強大,在大大提高CPU利用率的同時還會使程序員對各線程任務的處理過程進行有效的把

原创 關鍵字synchronized的使用

爲了解決非線程安全問題,就需要使用線程同步。實現線程同步的一種方式就是使用synchronized關鍵字。 1.synchronized的用法 (1)synchronized可以修飾方法,表示這個方法在任意時刻只能由一個線程訪問。 (2)

原创 Spring Bean的實現方式

Spring Bean的實現方式主要有三種。 (1)使用類的無參構造函數實例化(90%通常使用的一個方法) 1.首先定義一個bean。 package com.spring.demo; public class Bean {

原创 Spring Bean的作用域

在Spring中,bean作用域用於確定哪種類型的bean實例應該從Spring容器中返回給調用者。 目前Spring Bean的作用域或者說範圍主要有五種。 作用域 描述 singleton 在spring IoC容器僅存在一個Bean

原创 Zookeeper實現分佈式鎖

如何用Zookeeper實現分佈式鎖? 在學習分佈式鎖之前,需要首先了解一下Zookeeper的[臨時順序節點]。 什麼是臨時順序節點? 讓我們來回顧一下Zookeeper節點的概念: Zookeeper的數據存儲結構就像一棵樹,這棵樹

原创 線程安全

1.線程安全概述 使用多線程可以在一段時間內併發處理多個任務,在提高CPU運行效率的同時也爲我們批量處理這些任務帶來了便利。但是,使用多線程的時候要格外小心,多個線程在某一時間對同一個變量的處理,如果處理不當,就會造成數據不一致的問題,出

原创 maven的用法和幾個常用的命令

做項目時使用maven構建項目已經是現在的流行做法了。那麼maven的作用是什麼呢?maven中的幾個常用的命令都有什麼用?下面我們來看一下。 maven最大的作用就是用於對項目中jar包依賴的統一管理。 通常項目中如果不使用maven的

原创 輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。

題目描述 輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。 分析:首先需要判斷n是不是負數,當n爲負數的時候,直接用while循環判斷會導致死循環,因爲負數向左移位的話最高位補1 。 針對這種情況,要不就是對正數和負數的操

原创 Java基礎

1.String,StringBuffer和StringBulider String是字符串常量,StringBuffer和StringBuilder都是字符串變量。 String類型是不可改變的對象,由於這種機制,每當用String對字

原创 輸入一個網址後發生了什麼

當你在瀏覽器輸入一個網址,如http://www.taobao.com,按回車之後發生了什麼?請從技術的角度描述,如瀏覽器、網絡(UDP、TCP、HTTP等),以及服務器等各種參與對象上由此引發的一系列活動,請儘可能的涉及到所有的關鍵技術

原创 序列化二叉樹

題目描述 請實現兩個函數,分別用來序列化和反序列化二叉樹。 根據樹的前序遍歷序列和中序遍歷序列可以唯一的構造出一棵二叉樹。受此啓發,我們可以先把一棵二叉樹序列化成一個前序遍歷序列和中序遍歷序列,然後在反序列化時通過這兩個序列重構出原二叉樹

原创 “和爲S的兩個數字”和“和爲S的連續正數序列”

題目描述 和爲S的兩個數字: 輸入一個遞增排序的數組和一個數字S,在數組中查找兩個數,使得他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 輸出描述: 對應每個測試案例,輸出兩個數,小的先輸出。 因爲給出的數組是排好序