原创 【設計模式】變化和不變化的代碼進行分離day01

設計原則 找出應用中可能需要的變化之處,把他們獨立出來(封裝),不要和哪些不需要變化的代碼混在一起 實際舉例 我們實現一個鴨子,且這個鴨子有很多種,且有各個屬性。我們應該如何設計這個鴨子呢? 首先鴨子不變的屬性有哪些? 外觀,游

原创 【leetCode】股票的最大利潤day12

題目 假設把某股票的價格按照時間先後順序存儲在數組中,請問買賣該股票一次可能獲得的最大利潤是多少? 示例 1: 輸入: [7,1,5,3,6,4] 輸出: 5 解釋: 在第 2 天(股票價格 = 1)的時候買入,在第 5

原创 你真的瞭解Java中的String嗎(也太菜了)?

背景 我們在開發的時候,在處理字段的時候遇到大量的字符拼接的時候會使用StringBuffer和StringBuild。這是爲什麼呢?那就是因爲String會在每一次創建的時候都會新建一個對象,原來的對象也不會被刪除,還有就是說還

原创 【leetCode】打印從1到最大的n位數day10

題目 輸入數字 n,按順序打印出從 1 到最大的 n 位十進制數。比如輸入 3,則打印出 1、2、3 一直到最大的 3 位數 999。 示例 1: 輸入: n = 1 輸出: [1,2,3,4,5,6,7,8,9] 我的解法 先

原创 【LeetCode】兩數之和day09

題目 給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和爲目標值的那 兩個 整數,並返回他們的數組下標。 你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素不能使用兩遍。   示例: 給定

原创 【LeetCode】旋轉數組的最小數字day08

題目 把一個數組最開始的若干個元素搬到數組的末尾,我們稱之爲數組的旋轉。輸入一個遞增排序的數組的一個旋轉,輸出旋轉數組的最小元素。例如,數組 [3,4,5,1,2] 爲 [1,2,3,4,5] 的一個旋轉,該數組的最小值爲1。

原创 【JUC】CyclicBarrier的瞭解和使用

概念 權威指南 一種同步輔助工具,它允許一組線程全部互相等待以到達一個公共的障礙點。CyclicBarriers在涉及固定大小的線程方的程序中很有用,該線程方有時必須互相等待。屏障被稱爲循環屏障, 因爲它可以在釋放等待線程之後重

原创 java的內部類和靜態內部類(嵌套類)

背景 開發新項目,寫Swager的mode的時候用到了嵌套Model,於是在代碼中,出現了靜態內部類。在codeReview的時候稍微和大家聊了一下。尤其是Static 修飾類和修飾對象和變量不一樣呢? 定義 1. 內部類 可以

原创 【leetCode】青蛙跳臺問題(這隻青蛙會托馬斯大旋轉)day07

一隻青蛙一次可以跳上1級臺階,也可以跳上2級臺階。 求該青蛙跳上一個 n 級的臺階總共有多少種跳法。 答案需要取模 1e9+7(1000000007),如計算初始結果爲:1000000008,請返回 1。 示例 1: 輸入:

原创 【leetCode】斐波那契數列day06

題目 寫一個函數,輸入 n ,求斐波那契(Fibonacci)數列的第 n 項。斐波那契數列的定義如下: F(0) = 0,   F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波

原创 【LeetCode】重建二叉樹day04

題目 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。   例如,給出 前序遍歷 preorder = [3,9,20,15,7] 中序遍歷 inorder =

原创 【JUC】CountDownLatch你真的瞭解嗎?

背景 在平時的開發中,我們如何讓各個線程間協調工作呢? 除了我們經常使用的線程同步鎖Sychronized,ReentrantLOcak的使用,還有線程自有方法,sleep,yeid的使用。哪還有那些高級的使用呢?那就是JUC包中

原创 深入淺出TCP/IP協議

什麼是TCP/IP協議? TCP/IP 是一類協議系統,它是用於網絡通信的一套協議集合.傳統上來說 TCP/IP 被認爲是一個四層協議 1. TCP/IP協議模型? 通過圖上我們可以知道TCP/IP是一個協議集合,且其模型是四層

原创 【LeetCode】從尾到頭反過來返回每個節點的值(用數組返回)day03

題目 輸入一個鏈表的頭節點,從尾到頭反過來返回每個節點的值(用數組返回)。 示例 1: 輸入:head = [1,3,2] 輸出:[2,3,1] 限制: 0 <= 鏈表長度 <= 10000 第一次 //使用棧的特性先進後出

原创 【leetCode】使用兩個棧搞一個隊列day05

題目 用兩個棧實現一個隊列。隊列的聲明如下,請實現它的兩個函數 appendTail 和 deleteHead ,分別完成在隊列尾部插入整數和在隊列頭部刪除整數的功能。(若隊列中沒有元素,deleteHead 操作返回 -1 )