原创 數據結構 - 哈希表(用數組+鏈表實現存儲員工信息,添加增刪查功能)

package hashtab; import java.util.Scanner; public class HashTabDemo { public static void main(String[] a

原创 阻塞隊列,來寫生產者消費者,生產一個消費一個

用阻塞隊列來寫,就不需要程序員來關心什麼時候阻塞線程await,什麼時候喚醒線程notify()。 類似消息中間件 package JUC; import java.util.concurrent.ArrayBlocking

原创 JMM(java內存模型)

這篇文章寫得挺好的:https://blog.csdn.net/javazejian/article/details/72772461 在多線程環境下,線程之間的要通信,就不得不提JMM(java內存模型) 在JVM內部使用的ja

原创 數據結構 - 二叉樹(刪除節點)

因爲二叉樹是單向的,所以要判斷當前節點的子節點(左或右)是否是被刪除的節點 //遞歸刪除節點 //規定:如果是葉子節點就刪除節點,如果非葉子節點就刪除子樹 public void delNode(

原创 java位運算符

參考博客https://www.cnblogs.com/findbetterme/p/10787118.html 點贊 收藏 分享 文章舉報 春_ 發佈了113 篇原創

原创 算法 -克魯斯卡爾算法

如果形成迴路則不選擇 文字描述 加入的邊的兩個頂點不能都指向同一個終點,否則會構成迴路 點贊 收藏 分享 文章舉報 春_ 發佈了113 篇原創文

原创 查找算法-(順序查找、二分查找、插值查找、斐波那契查找)

1)順序查找或叫線性查找 就是順序遍歷匹配 2)二分查找 package search; public class BinarySearch { /** * 二分查找數組必須有序 */ /*

原创 數據結構 - 樹(二叉樹的 前序、中序、後序 遍歷)

二叉樹遍歷(前序中序後序,主要是看父節點的輸出順序) package tree; public class BinaryTreeDemo { public static void main(String[

原创 數據結構 - 二叉樹(前序中序後序查找)

public static int i = 1, j = 1, k =1; //編寫前序查找方法 public HeroNode preOrderSearch(int no){ Syste

原创 算法 - 普里姆算法(修路問題求解)

從A開始,A作爲定點,找到與A相連並且未被處理(不在頂點集合中)的進行處理,找到權值最小的並加入集合,A-C[7]、A-G[2]、A-B[5],最小的是A-G[2],所以把G加入集合,這裏是有A-G的連接的。 然後把A、G作

原创 算法- 分治算法(實現漢諾塔)

package Algorithm.dac; public class Hannoitower { public static void main(String []args){ hannoiTo

原创 HQL寫topN、Spark寫topN

HQL寫topN用窗口函數rank() 、row_number()、dense_rank() 1、rank(),跳躍排序,假如第一第二相同,那麼第三個就是3 select * from( select id, cn, sco

原创 算法 -快速冪

參考博客 https://blog.csdn.net/qq_19782019/article/details/85621386 簡單來說就是進行二分,底數和指數,例如 2的8次方,循環一次變成 2*2的4次方,直到冪 = 0;(注

原创 線程池ThreadPool,線程池底層ThreadPoolExecutor方法七大參數,拒絕策略,以及實際開發中高併發下用到哪個線程池?

爲什麼要用線程池 基本的三個線程池的底層就是ThreadPoolExecutor類 ExecutorService threadPool = Executors.newFixedThreadPool(int);//固定線程數的線

原创 死鎖編碼及定位分析(故障排查)

什麼是死鎖? 在Java中使用多線程,就會有可能導致死鎖問題。死鎖會讓程序一直卡住,不再程序往下執行。我們只能通過中止並重啓的方式來讓程序重新執行。 造成死鎖的原因: 當前線程擁有其他線程需要的資源 當前線程等待其他線程已擁有