Time of Update: 2018-12-05
1.終端登入登入過程:核心--->init[進程ID=1]--->(fork)init--->(exec)getty--->(exec)--->login登入結束過程:進程1=init->登入shell<->終端裝置驅動程式<->使用終端的使用者 2.網路登入如 3.進程組1).每個進程屬於一個進程組,這個進程組從同樣的終端獲得訊號 函數getpgrp返回調用進程的進程組ID,結果也用pid_t表示:#include
Time of Update: 2018-12-05
這個程式的實現有助於壓縮key的大小,使尋找效率更高1.問題描述
Time of Update: 2018-12-05
1.HDFS1).永久性資料結構A.NameNode的目錄結構NameNode被格式化之後,將產生所示的目錄結構:${dfs.name.dir}/current/VERSION /edits /fsimage
Time of Update: 2018-12-05
由於C/C++語言本身沒有數組越界檢查機制,當向緩衝區裡寫入的資料超過了為其分配的大小時,就會發生緩衝區溢位。攻擊者可以利用緩衝區溢位來竄改進程運行時棧,從而改變程式的正常流向。在分析緩衝區溢位攻擊的原理之前,我們先來複習一下進程在記憶體中的結構。進程在記憶體中的組織形式
Time of Update: 2018-12-05
1.概覽 以下主要敘述Hadoop如何將使用者寫好的MR程式,以Job的形式提交 主要涉及的四個java類檔案:hadoop-mapreduce-client-core下的包org.apache.hadoop.mapreduce: Job.java、JobSubmitter.javahadoop-mapreduce-client-jobclient下的包org.apache.hadoop.mapred:
Time of Update: 2018-12-05
1.問題描述一個有N個整數元素的一維數組( A[0], A[1], ... , A[n-2], A[n-1]),子數組之和的最大值是什麼?(要求子數組的元素是連續的)例子:有數組( -2, 5, 3, -6, 4, -8, 6),則其子數組之和的最大值為8,其對應的數組為(5,3) 2.分析與解法解法一:採用直接法,記Sum[i...j],為數組A中從第i到第j之間所有數之和,算出所有Sum,取其最大,代碼如下,時間複雜度O(N2):int maxSum1(int *A, int n){
Time of Update: 2018-12-05
為什麼要寫這個小工具?昨天下午在網上閑逛,在百度貼吧看到一篇貼子,樓主通過不定時的發表回複來講自己的故事,形象的稱為“直播貼”。可是在看了十幾頁後,我發現由於回複的人越來越多,兩段故事之間的間隔越來越大,這破壞了故事的連貫性,給看故事的人帶來不便。於是就產生了寫一個小工具只下載某人的發貼的想法。你是否也有過在百度貼吧“追直播”的痛苦經曆?現在,你只要輸入某個你想看的人的使用者名稱和貼子的地址,就可以把這個人的貼子下載到你的電腦上,然後輕鬆的看直播了。使用說明開啟命令列視窗,進入目錄VSO,命令格
Time of Update: 2018-12-05
1.socket函數為了執行網路I/O,一個進程必須做的第一件事就是調用socket函數,指定期望的通訊協定類型#include <sys/socket.h> int socket (int family, int type, int
Time of Update: 2018-12-05
Dijkstra演算法1.定義概覽Dijkstra(迪傑斯特拉)演算法是典型的單源最短路徑演算法,用於計算一個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充,直到擴充到終點為止。Dijkstra演算法是很有代表性的最短路徑演算法,在很多專業課程中都作為基本內容有詳細的介紹,如資料結構,圖論,運籌學等等。注意該演算法要求圖中不存在負權邊。問題描述:在無向圖 G=(V,E) 中,假設每條邊 E[i] 的長度為 w[i],找到由頂點 V0 到其餘各點的最短路徑。(單源最短路徑) 2
Time of Update: 2018-12-05
這是一個有趣的面試題。有一個袋子,裡面放有1, 2, 3, ... , 100, 共100個整數,且每個數字只出現一次。現在由於袋子破了個洞,造成其中一個數字丟失了。請找出丟失的數字。很容易想到的方法是:我們可以用減法,1 + 2 + ... + 100的和減去袋子中所有數的和,其差就是丟失的那個數字。1 + 2 + ... + 100可以由等差數列公式100 * (1 + 100) / 2 = 5050算出,我們只需要遍曆一次袋子中的數字即可。把這道題推廣到一般情況:設 π 是{1, 2, .
Time of Update: 2018-12-05
如果你還沒有看過上一篇文章,請先移步看問題描述。擴充問題二:至多掃描一遍序列,求出丟失的兩個數字。 不管用什麼方法,可以肯定的是我們至少需要掃描一遍序列。因為只能掃描一遍,所以先求出 a XOR b,再根據結果分類的方法就不適用了。既然我們不能根據某一位分類,那我們能否對所有位進行分類呢?比如,int是32位,我們可以對每一位都分成兩類分別異或。我們還要記錄每一位上1出現的次數,實際上,只需要記錄1出現奇數次還是偶數次就夠了。 如果某一位上1出現奇數次,那麼我們就知道 a 和 b
Time of Update: 2018-12-05
1.叢集規範1)配置規範一般Hadoop DataNode和TaskTracker節點典型機器具有吐下規範:處理器:2個四核 2~2.5 GHz CPU記憶體:16~24 ECC RAM儲存空間:4*1TB SATA 磁碟網路:千兆乙太網路2).網路拓撲Hadoop叢集架構包含兩級網路拓撲,如所示,機架拓撲由兩個網路位置描述,例如:/交換器1/機架1 和
Time of Update: 2018-12-05
1.線程概念一個線程由表示一個進程裡的一個執行內容所需的資訊組成。這包括一個在進程裡標識線程的線程ID、一組寄存器值、棧、調用優先順序和策略、訊號掩碼、errno變數(1.7節)、和線程指定資料(12.6節)。在一個進程內的所有東西在進程裡的線程間都可以共用,包括可執行程式的代碼、程式的全域和堆記憶體、棧、和檔案描述符。 2.線程標識就像每個進程有一個進程ID一樣,每個線程也有一個線程ID。進程ID在整個系統的唯一的,但線程ID不同,線程ID只在它所屬的進程環境中有效1).下面一個函數被用來比
Time of Update: 2018-12-05
1.概覽當RM(ResourcesManager)和NM(NodeManager)陸續將所有模組服務啟動,最後啟動是NodeStatusUpdater,NodeStatusUpdater將用Hadoop RPC遠程調用ResourcesTrackerService中的函數,進行資源是初始化等操作,為將要啟動並執行Job做好準備。以下主要分析在Job提交之前
Time of Update: 2018-12-05
1.問題描述1).給定一個整數N,那麼N的階乘N!末尾有多少個0?例如:N=0,N!=3628800,N!的末尾有兩個0.2).求N!的二進位表示中最低1的位置 2.分析與解法首先考慮,如果N! = K*10M,且K不能被10整除,那麼N!末尾有M個0.再考慮對N!質因分解,N! =
Time of Update: 2018-12-05
1.問題描述給出兩個單向鏈表的頭指標,比如h1、h2,判斷兩個鏈表是否相交。編程之美為了簡化問題,假設兩個鏈表均不帶環。如: 2.分析與解法解法一:直觀法,先判斷第一個鏈表的每個節點是否在第二個鏈表中,這種方法時間複雜度為O(Length(h1)*Length(h2)) 解法二:hash表計數法,首先將第一個鏈表的所有節點地址進行hash排序,建立hash表,然後針對第二個鏈表的每個節點的地址,查詢hash表,如果它在hash表中存在,那麼說明兩個鏈表有交點。這個方法時間複雜度O(Length
Time of Update: 2018-12-05
1.概述這章的TCP客戶/伺服器模型2.TCP回射伺服器程式1).main函數 #include "unp.h"int main(int argc, char **argv){ int listenfd, connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr, servaddr; listenfd = Socket (AF_INET, SOCK_STREAM,
Time of Update: 2018-12-05
1.getsockopt和setsockopt函數這兩個函數僅用於通訊端:#include <sys/socket.h> int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); int setsockopt(int sockfd, int level, int optname, const void *optval socklen_t
Time of Update: 2018-12-05
此為UNP最後一段總結 Chapter30主要為代碼實踐 請參考UNP 一、線程這裡UNP的線程與APUE中講得線程基本一致,但是APUE講得更加細緻,所以這裡只列出主要內容(線程資料會稍微詳細) 詳細見APUE線程相關章節
Time of Update: 2018-12-05
(來源網路)用newInstance與用new是有區別的,區別在於建立對象的方式不一樣,前者是使用類載入機制,那麼為什麼會有兩種建立對象方式?這個就要從可伸縮、可擴充,可重用等軟體思想上解釋了。 Java中原廠模式經常使用newInstance來建立對象,因此從為什麼要使用原廠模式上也可以找到具體答案。 例如: Class c = Class.forName(“A”);factory = (AInterface)c.newInstance();