原创 【Leetcode-209】長度最小的子數組

方法一、遍歷元素,逐項尋找子數組 方法二、雙指針法 i,j開始都指向0; j開始右移,若s(i,j)的和大於等於target,則減去arr[i],i右移,直至s(i,j)小於target; j繼續右移,同樣操作,直至最後; i

原创 Thread類方法解析

1、靜態方法 static void sleep(long millis) //睡眠線程 static void yield()   //禮讓線程(“就是客氣客氣,不一定真讓”) 代碼示例: void main(){ Th

原创 TCP併發服務器模型(1)

1、統一accept,fork進程處理每一個客戶端的業務 2、統一accept,create線程處理每一個客戶端的業務 3、創建線程處理每一個客戶端的請求,互斥處理每一個accept

原创 TCP面試詳解(連接處理)

核心概念: 無論是三次握手還是四次揮手,TCP都分爲兩個方向:client向server建立/斷開連接 && server向client建立/斷開連接 1、TCP三次握手 A <------> B /* 1、2兩步建立cl

原创 TCP面試詳解(傳輸處理2)

TCP擁塞控制 四大算法: (1) 慢重啓 (2) 擁塞避免 (3) 快重啓 (4) 快恢復

原创 Socket API詳解(2)

3、偵聽客戶端的連接 int listen (int socket, int n) Description: The listen function enables the socket socket to accept con

原创 【Leetcode】層次遍歷二叉樹

思路:BFS 1、根節點加入隊列; 2、遍歷隊列中的節點,將節點的子節點加入隊列; (如不需要逐行,則結束) 3、如何實現逐行?需要記錄每行隊列的長度; 代碼: public List<List<Integer>> leve

原创 【Leetcode】連續子數組的最大和

思路: (1) dp[i]:以第i項結束的最大和,答案是dp[i]中的最大值,所以要求兩次最值!!! (2) dp[i] = max(dp[i-1] + nums[i], nums[i]); dp[i-1] < 0時,dp[i]

原创 【Leetcode】刷題總結 plus

1、鏈表 雙指針:首尾指針、快慢指針 2、數組 3、字符串 子串問題:前綴和 4、隊列 5、棧 難點:多次入棧和出棧操作,影響內容的順序 6、哈希表 7、二叉樹 8、排序 9、搜索 10、動態規劃

原创 包裝數據類的valueOf()方法

引言 包裝數據類直接賦值,默認調用其對用的valueOf()方法: Integer i = 10; 反編譯查看: Integer i = Integer.valueOf(10); 一、整型 Byte.valueOf(byte

原创 Socket API詳解(1)

#include <sys/socket.h> int socket (int namespace, int style, int protocol) int bind (int socket, struct sockaddr

原创 TCP併發服務器模型(2)

四、IO複用循環服務器 將系統的處理能力集中在覈心業務上,降低併發處理單元的數量。 建立兩個線程:一個處理客戶端的連接請求 thread_connect,一個處理客戶端的業務處理請求 thread_handle。 accept

原创 TCP面試詳解(傳輸處理0)

TCP的可靠傳輸機制 檢驗和 序列號:保證數據有序到達 確認號:保證數據達到 超時重傳:保證數據到達 TCP的計時器 TCP中有四種計時器(Timer): 1.重傳計時器:Retransmission Timer 2.堅持計

原创 【Leetcode】字符串解碼

思路: (1)藉助Stack,遇到’]'出棧,往前掃描,記錄子串:“數字[字母]”; (2)子串翻倍處理,處理完畢再入棧,棧中從低到高的順序,就是答案的順序; (3)藉助StringBuilder,顯示處理完畢的字符串; 代碼

原创 【LeetCode】動態規劃合集

leet.198 打家劫舍 思路: (1)定義:dp[i]表示前i家的最大效益; (2)關係式 第i家的收益,分兩種情況 <1> 偷第i家,由於不能偷相鄰兩家:則dp[i] = nums[i] + dp[i-2]; <2>