原创 單例模式有五種寫法:懶漢、餓漢、雙重檢驗鎖、靜態內部類、枚舉。

轉 https://biezhi.me/article/how-to-correctly-write-singleton-pattern.html 單例模式算是設計模式中最容易理解,也是最容易手寫代碼的模式了吧。但是其中的坑卻不少,

原创 Hashtable/HashMap與key/value爲null的關係

  大家都知道Hashtable與HashMap的三大區別,其中有一條則是HashMap可以存儲一個Key爲null,多個value爲null的元素,但是Hashtable卻不可以存儲。究竟是爲什麼?下面看一下源代碼: HashMap

原创 希爾排序的實現

直接插入排序(Insertion Sort)的基本思想是:每次將一個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子序列中的適當位置,直到全部記錄插入完成爲止。   設數組爲a[0…n-1]。 1.      初始時,a[0]自成1個

原创 十大Intellij IDEA快捷鍵

Intellij IDEA中有很多快捷鍵讓人愛不釋手,stackoverflow上也有一些有趣的討論。每個人都有自己的最愛,想排出個理想的榜單還真是困難。以前也整理過Intellij的快捷鍵,這次就按照我日常開發時的使用頻率,簡單分類列

原创 java多線程中的sleep()方法與wait()方法的區別

sleep()是使線程暫停執行一段時間的方法。wait()也是一種使線程暫停執行的方法,例如,當線程交互時,如果線程對一個同步對象x發出一個wait()調用請求,那麼該線程會暫停執行,被調用對象進入等待狀態,直到被喚醒或等待時間超時  

原创 數組和鏈表的區別

數組靜態分配內存,鏈表動態分配內存; 數組在內存中連續,鏈表不連續; 數組元素在棧區,鏈表元素在堆區; 數組利用下標定位,時間複雜度O(1),鏈表定位元素時間複雜度O(n); 數組插入和刪除的時間複雜度O(n),鏈表的時間複雜度O(1)。

原创 數據庫(手寫選出一個公司年齡最大的100個員工)

SQLSERVER : SELECT TOP 100 僱員表.* FROM 僱員表 ORDER BY 僱員表.AGE DESC MYSQL: SELECT * FROM 僱員表 ORDER BY 年齡 LIMIT 0,100

原创 在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。

在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。 public class Solution {     public

原创 數組和鏈表的區別

數組靜態分配內存,鏈表動態分配內存; 數組在內存中連續,鏈表不連續; 數組元素在棧區,鏈表元素在堆區; 數組利用下標定位,時間複雜度O(1),鏈表定位元素時間複雜度O(n); 數組插入和刪除的時間複雜度O(n),鏈表的時間複雜度O(1)。

原创 Java實現鏈表的插入,刪除,排序,輸出

//鏈表的數據結構: package test;  class Node {      Node next=null;      int data;      public Node(int data){     this.data=d

原创 用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素爲int類型。

import java.util.*; import java.util.Stack; public class Solution {     Stack<Integer> stack1 = new St

原创 輸入一個鏈表,從尾到頭打印鏈表每個節點的值。

/** *    public class ListNode { *        int val; *        ListNode next = null; * *        ListNode(

原创 快排java實現

public class Sort {public static void main(String[] args) { int a[]={1,4,54,6,76,87,889,6,87,5};partit