編程之美:無差錯二分尋找

1.雖然二分尋找是十分簡單的程式,但是因為迴圈等操作也是最容易出錯的,其中在寫迴圈(或者遞迴)程式的時候,應該特別注意三個方面的問題:初始條件、轉化、終止條件。 2.二分尋找源碼int biseach(char** arr, int b, int e, char* v){ int minIndex = b, maxIndex = e, midIndex; while(minIndex < maxIndex - 1) /

UNP總結 Chapter 8 基本UDP通訊端編程

 1.概述使用UDP編寫的一些常用應用程式有:DNS(網域名稱系統)、NFS(網路檔案系統)和SNMP(簡易網路管理通訊協定)給出典型的UDP客戶/伺服器程式的函數調用:   2.recvfrom和sendto函數兩個函數類似於標準的read和write函數,不過需要三個額外的參數#include <sys/socket.h> ssize_t recvfrom(int sockfd, void *buff, size_t nbytes, int flags, struct

UNP總結 Chapter 1 簡介

寫在開頭 UNP總結只列出相對重要的內容 簡化細節 如想詳細瞭解 見UNP socket API 第三版1.客戶與伺服器處於同一個乙太網路,有如下所示的通訊層次2.一個簡單TCP時間擷取客戶程式#include "unp.h"int main(int argc, char **argv){ int sockfd, n; char recvline[MAXLINE + 1]; struct sockaddr_in servaddr; if (argc !=

Chapter 14 進階I/O

1.非阻塞I/O非阻塞I/O使我們可以調用不會永遠阻塞的I/O操作,例如open,read和write。如果這種操作不能完成,則立即出錯返回,表示該操作如繼續執行將繼續阻塞下去。對於一個給定的描述符有兩種方法對其指定非阻塞I / O:(1) 如果是調用open以獲得該描述符,則可指定O_NONBLOCK標誌(2) 對於已經開啟的一個描述符,則可調用fcntl開啟O)NONBLOCK檔案狀態標誌 2.記錄鎖記錄鎖(record

編程珠璣:用尾碼數組尋找最長重複字串

1.基本概念子串:字串 S 的子串 r[i..j] , i ≤ j ,表示 r 串中從 i 到 j 這一段,就是順次排列 r[i],r[i+1],...,r[j] 形成的字串。尾碼:尾碼是指從某個位置 i 開始到整個串末尾結束的一個特殊子串。字串 r 的從 第 i 個字 符 開 始 的 後 綴 表 示 為 Suffix(i) ,也 就 是Suffix(i)=r[i..len(r)] 。尾碼數組:尾碼數組 SA 是一個一維數組,它儲存 1..n 的某個排列 SA[1] ,SA[2] , …… ,

編程珠璣:旋轉交換技巧

1.問題描述將一個n元一維向量向左旋轉i個位置。例如,當n=8且i=3時,向量abcdefgh旋轉為defghabc。簡單的代碼使用一個n元的中間向量在n步就能夠完成該工作,你能否僅使用數十個額外位元組的儲存空間,正比於n的時間內完成向量旋轉? 2.解決思路旋轉向量x其實就是交換向量ab的兩段,得到向量ba。這裡a代表x中的前i個元素。假設a比b短,將b分為bl和br,使得br具有與a相同的長度。交換a和br,也就是將ablbr

Chapter 13 守護進程

1.守護進程的特徵    守護進程也稱精靈進程是生存期長的一種進程,它們常常在系統引導裝入時啟動,在系統管比時終止。守護進程沒有控制終端,所以它們是在後台啟動並執行。守護進程是一種很有用的進程。 Linux的大多數伺服器就是用守護進程實現的。比如,Internet伺服器inetd,Web伺服器httpd等。同時,守護進程完成許多系統任務。比如,作業規划進程crond,列印進程lpd等。    所有守護進程都以超級使用者(使用者ID為0)的優先權運行。沒有一個守護進程具有控制終端,控制名稱設定為(

編程之美:求二叉樹中節點的最大距離

1.問題描述寫一個程式求一棵二叉樹相距最遠的兩個節點之間的距離如: 2.分析與解法對於任意一個節點,以該節點為根,假設這個根有k個孩子節點,那麼距離最遠的兩個節點U與V之間的路徑與這個根節點的關係有兩種。1).若路徑經過Root,則U和V屬於不同子樹的,且它們都是該子樹中到根節點最遠的節點,否則跟它們的距離最遠相矛盾2).如果路徑不經過Root,那麼它們一定屬於根的k個子樹之一,並且它們也是該子樹中相距最遠的兩個頂點因此,問題就可以轉化為在字數上的解,從而能夠利用動態規劃來解決。設第K棵子樹中相

編程之美:尋找發帖”水王”

1.問題描述快速找出發帖超過一半的的ID問題變型:現在有一個數組,已知一個數出現的次數超過了一半,請用最小的複雜度的演算法找出這個數。問題擴充:有三個發帖很多的ID,他們的發帖數目超過了文章總數目的1/4,請從發帖ID列表中找出它們  2.分析與解法每次從列表中刪除兩個不同的ID,那麼剩下的ID列表中,“水王”的ID出現次數仍然超過剩餘數目的一半,因此每次刪除兩個不同的ID,直到剩下的所有ID都相同,那麼剩下的就是水王的ID。我們可以設定一個candidate和一個計數器nTimes,candi

編程珠璣:單詞頻率最高選取

問題描述:對一個輸入文本中的每個單詞的出現次數統計,並選取出現頻率最大的10個單詞 首先用C++實現,著重注意STL的map,vector排序用法,這裡與編程珠璣的代碼不同。不知道何故,編程珠璣上的代碼, 輸入之後得到的結果是按照單詞排序的,而不是按照次數排序,這裡做了修改C++實現代碼:#include <iostream> #include <stdlib.h> #include <string> #include <map>

Chapter 3 檔案I/O

1.檔案描述符檔案描述符是一個非負整數,當開啟一個現有檔案或建立一個新檔案時候,核心向進程返回一個檔案描述符。Unix系統shell使用檔案描述符0與進程的標準輸入相關聯,檔案描述符1與進程的標準輸出相關聯,檔案描述符2與進程的標準出錯相關聯,在POSIX標準中,幻數0、1、2應當替換為符號常量STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO,另外檔案描述符變化範圍:0~OPEN_MAX,現在很多系統將OPEN_MAX置為63  2.open函數調要open函數可

UNP總結 Chapter 15~17 Unix域協議、非阻塞式I/O、ioctl操作

一、Unix域協議Unix域協議並不是一個實際的協議族,它只是在同一台主機上進行客戶-伺服器通訊時,使用與在不同主機上的客戶和伺服器間通訊時相同的API(套介面或XTI)的一種方法。當客戶和伺服器在同一台主機上時,Unix域協議是IPC通訊方式的一種替代品。Unix域提供了兩種類型的套介面:位元組流套介面(與TCP類似)和資料報套介面(與UDP類似)。 1.Unix域套介面地址結構struct sockaddr_un { sa_family_t sun_family; /*

編程之美:從無頭單鏈表中刪除節點

1.問題描述假設有一個沒有頭指標的單鏈表。一個指標指向此單鏈表中間的一個節點(不是第一個,也不是最後一個),請將該節點從單鏈表中刪除。如所示: 2.分析與解法假設給定的指標為pCurrent, Node* pNext =

Hadoop:The Definitive Guid 總結 Chapter 6 MapReduce的工作原理

 1.剖析MapReduce作業運行機制1).經典MapReduce--MapReduce1.0整個過程有有4個獨立的實體用戶端:提交MapReduceJobTracker:協調作業的運行TaskTracker:運行作業劃分後的任務HDFS:用來在其他實體之間共用作業檔案以下為運行整體圖A.作業的提交JobClient的runJob是用於建立JobClient執行個體並調用其submitJob()方法的便捷方式,提交Job後,runJob()每秒輪詢檢測作業的進度,隨時監控Job的運行狀態。其中

Chapter 17 進階處理序間通訊

這章屬於進階內容 內容比較簡略1.基於STREAMS的管道流管道是一個雙向(全雙工系統)管道。單個流管道就能向父、子進程提供雙向的資料流  1).命名的STREAMS管道我們可以用fattach函數來在檔案系統給一個STREAMS管道一個名字#include <stropts.h>int fattach(int filedes, const char

Chapter 5 標準I/O庫

1.流和FILE對象對於國際字元集,一個字元可以由一個以上的位元組來表示。標準I/O檔案流可以用來操作單位元組和多位元組(寬,wide)字元集。一個流的方向(orientation)決定了字元是以單位元組還是多位元組的方式讀取,當一個流被建立時,它沒有方向。如一個多位元組I/O函數(見<wchar.h>)用在了沒有方向的流上,那麼流的方向會設為面向寬字元的。如果一個位元組I/O函數用在一個沒有方向的流上,那麼流的方向會設為面向位元組的。只有兩個函數可以在設定後改變這個方向。freop

Chapter 1 Unix基礎知識

以下僅列出相對比較重要的內容1.檔案和目錄1).檔案系統  

編程珠璣:取樣問題

1.問題描述程式的輸入包含兩個整數m和n,其中m<n。輸出是0~n-1範圍內m個隨機整數的有序列表,不允許重複。從機率的角度說,我們希望得到沒有重複的有序選擇,其中每個選擇出現的機率相等。 2.解決思路與代碼實現編程珠璣上給出了四個函數1).genknuth():演算法依次考慮整數0,1,2,...,n-1,並通過一個適當的隨機測試對每個整數進行選擇。通過按序訪問整數,可以保證輸出結果是有序的代碼C++實現:void genknuth(int m, int n) {

Hadoop 2.0 Yarn代碼:NodeManager端程式碼分析_NM端各服務模組的啟動

1.概覽以下介紹的NodeManager是如何啟動和註冊各個服務的主要涉及的Java檔案hadoop-yarn-server-nodemanager下的包org.apache.hadoop.yarn.server.nodemanager       

UNP總結 Chapter 12~14 IPv4與IPv6的互通性、守護進程和inet超級伺服器、進階I/O函數

一、IPv4與IPv6的互通性1.IPv4客戶與IPv6伺服器擁有雙重協議棧的主機的一個基本特性就是:其上啟動並執行IPv6伺服器既能應付IPv4客戶,又能應付IPv6客戶。這是通過使用IPv4映射的IPv6地址實現的。要求,ipv6伺服器必須具有雙重協議棧,即伺服器必須同時擁有ipv4地址和ipv6地址,稱其為ipv6伺服器是因為開放的網路套介面為ipv6類型。當ipv4客戶欲串連ipv6伺服器時,通過gethostbyname獲得伺服器主機的A記錄(即ipv4地址),並通過網路發送ipv4資

總頁數: 61357 1 .... 12393 12394 12395 12396 12397 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.