原创 不用==用equals引發的一系列思考

畢業剛工作的時候,帶我的小師傅給我說判斷相等使用equals不要使用==,第一次寫java的我照辦了,但是不清楚爲什麼,之後還是決定真正瞭解一下java本身。於是開始看jdk源碼。這裏以Integer爲例 equal pu

原创 線程-線程同步

我們知道線程共享同一進程內的資源。如果每個線程使用的變量,其他線程都不會讀取個修改,那麼就不存在一致性問題。相同的,如果變量只讀,多個線程同時讀取該變量也不會存在一致性問題。但是,當一個線程可以修改變量,其他線程可以讀取或修改變量

原创 合併鏈表和求1+2+...+n不用循環、乘除法、循環、條件判斷、選擇相關的關鍵字

合併鏈表 這裏就不說了,稍微看下代碼應該就可以懂了 遞歸: ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { // write your code her

原创 IPC-信號量

- 信號量 信號量與之前的PIPE、FIFO以及消息隊列不同。它是一個計數器,用於爲多個進程提供對共享數據對象的訪問。信號量在負責數據操作的互斥、同步等功能。 學習信號量之前首先先來學習幾個基本概念: 互斥:是指某一資源同時只允許

原创 【[TCP/ip】-TCP三次握手四次揮手

傳輸控制協議TCP TCP的特點: (1)TCP是面向連接的協議。(使用前先建立連接,結束釋放) (2)每條TCP連接只能有兩個端點,點對點的。(進程之間一對一)。 (3)TCP提供可靠傳輸。(傳輸的數據,無差錯、不丟失、不

原创 鏈表帶環問題/設計一個類不能被繼承/設計一個類只能在堆(棧)上創建對象

判斷鏈表是否帶環?若帶環求環的長度?若帶環求環的入口點? class Solution { public: /** * @param head: The first node of linked list.

原创 IPC-管道(匿名管道)

管道(Pipe),也被叫做匿名管道,是UNIX系統IPC的最古老、最基本的機制,所以UNIX系統都提供此種通信機制。管道有兩個侷限性: 最開始它是半雙工的(即數據只能在一個方向上流動)。現在,某些系統提供全雙工管道,但是爲了可移

原创 IPC-共享內存

進程間通信的三大主題纖消息隊列、信號量、共享內存,還剩下最後一個模塊。下來我們就來看看這最後一個主題:共享內存。 共享內存 共享內存允許兩個或多個進程共享一個給定的存儲區。因爲共享內存數據不需要在進程和進程之間複製,所以共享內存是

原创 TIME-WAIT狀態和reuse問題

前言 上一篇看了TCP的三次握手與四次揮手,記得四次揮手,主動斷開連接的一方最後一個狀態就是TIME-WAIT狀態,並且一定是主動斷開連接的一方,它可能使socket能陷入一種時間比較長的狀態,過多的TIME-WAIT會影響新so

原创 IPC-引言

進程間通信就是不同進程之間進行信息傳播和信息交換。但是,我們知道進程的進程空間是相互獨立的,一般是不能互相訪問的,唯一的例外是共享內存區。另外,系統空間是“公共場所”,各進程均可以訪問,所以內核也可以提供這樣的條件。此外,還有雙方

原创 I/O複用-select

I/O複用 I/O複用的功能就是同時監聽多個文件描述符,這樣的話程序性能就能得到大大提升。通常,網絡程序在下列情況下需要使用I/O複用技術: 服務端程序要同時處理多個socket。 服務端程序要同時處理用戶輸入和網絡連接。 TC

原创 IPC-消息隊列

什麼是消息隊列? 消息隊列是消息的鏈接表,儲存在內核中,由消息隊列標識符標識。每個數據塊都被認爲有一個類型。接受者進程接收的數據塊可以有不同的類型值。 消息隊列的特點 消息隊列不同於管道,消息隊列是基於數據塊的,而管道是基於

原创 逆置、翻轉鏈表/查找單鏈表的倒數第k個節點/A+B不使用四則運算++ -- 等

逆置/反轉單鏈表 非遞歸: class Solution { public: /** * @param head: The first node of linked list. * @return:

原创 判斷兩個鏈表是否相交,若相交,求交點,若帶環呢/fork繼承問題

判斷兩個鏈表是否相交,若相交,求交點,若帶環呢 這裏只貼判斷是否相交代碼(無環) 有環或不懂點這裏 class Solution { public: /** * @param headA: the first

原创 進程控制-進程終止(exit、_exit)

知道了進程怎麼創建,接下來就來看看怎麼終止一個進程終止函數exit()和_exit()。 函數 頭文件 聲明 exit stdlib.h void exit(int status) _exit unistd.h v