Time of Update: 2018-07-26
哲學家進餐問題: (一)問題: 5個哲學家圍坐在一個圓桌上,每兩個哲學家之間都有一隻筷子,哲學家平時進行思考,只有當他們饑餓時,才拿起筷子吃飯。 規定每個哲學家只能先取其左邊筷子,然後取其右邊筷子,然後才可以吃飯。 (二)分析: 每一隻筷子都是一個臨界資源,設定5個互斥訊號量。 Semaphore stcik[5]={1,1,1,1,1} 因為:只有佔有左邊筷子-》佔有右邊筷子-》吃飯 所以p(左邊筷子)-》p(右邊筷子)-》吃飯 (三)實現: main(){
Time of Update: 2018-07-26
物件導向是從軟體工程基本原則(如耦合、彙總和封裝)的基礎上發展起來的,而關聯式資料庫則是從數學理論發展而來的,兩套理論存在顯著的區別,而Java是完全物件導向的語言,這個衝突就表現的越發明顯。 對目前的J2EE資訊化系統而言,通常採用物件導向分析和物件導向設計的過程。系統從需求設計到系統設計都是按物件導向方式進行。但到了詳細設計階段,由於資料持久化需要儲存到關聯式資料庫,不得不自底向上修改設計方案,又回到了按照過程進行編程的老路上來,這是非常令人沮喪的。
Time of Update: 2018-07-26
剛開始學Python爬蟲,在安裝環境時遇到一些問題,本文整理了一下搭建過程中遇到的問題,供大家參考: 備忘:當在dos中執行已安裝的命令式,若不能識別請配置環境變數(windows為例) 一:安裝步驟: 1:安裝Python 本人安裝的為AnacondaIntegration Environment(整合一些工具包方便後續其他環境的配置) 2:安裝pip 相關網站下載get-pip.py檔案, dos下執行Python get-pip.py 3:安裝Scrapy
Time of Update: 2018-07-26
這裡說的雙count(distinct)是指類似下面的語句 select day,count(distinct session_id),count(distinct user_id) from log a group by day; 如果要執行這樣的語句,前提必須設定參數:set hive.groupby.skewindata=true; 我們可以用“空間換時間”的思路解決問題: select day,count(case when
Time of Update: 2018-07-26
題目描述 Description 小G是一個出色的詩人,經常作詩自娛自樂。但是,他一直被一件事情所困擾,那就是詩的排版問題。
Time of Update: 2018-07-26
本章有數學公式……對數學過敏者慎入…… 前文再續,書接上一回……上一次說到,在改進全域迴歸的基礎上,GWR終於橫空出世了,從此空間分析領域終於有了自己專用的迴歸演算法。如果說,空間統計有別於經典統計學的兩大特徵:空間相關性和空間異質性,莫蘭指數等可以用來量化空間相關性,那麼地理加權迴歸,就可以用來量化空間異質性。
Time of Update: 2018-07-26
本文轉載,作為學習參考記錄。原文地址:http://codecloud.net/sort-2208.html 排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。 常見的內部排序演算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸併排序、快速排序、堆排序、基數排序等。 演算法一:插入排序
Time of Update: 2018-07-26
最近回顧了下多線程的一些概念,主要的是線程間的同步以及互斥,簡單記錄下。 基本概念 2個基本概念: 同步:按預定的先後次序進行運行。比如:A.B.C3個線程,A先運行,然後B,然後C。 互斥:某一資源同時只允許一個訪問者對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的。 相關函數 關鍵區/臨界區 CRITICAL_SECTION 臨界區的使用比較簡單,基本步驟是:
Time of Update: 2018-07-26
一、傳統 HashMap的缺點 (1)JDK 1.8 以前 HashMap 的實現是 數組+鏈表,即使雜湊函數取得再好,也很難達到元素百分百均勻分布。 (2)當 HashMap 中有大量的元素都存放到同一個桶中時,這個桶下有一條長長的鏈表,這個時候 HashMap 就相當於一個單鏈表,假如單鏈表有 n 個元素,遍曆的時間複雜度就是 O(n),完全失去了它的優勢。 (3)針對這種情況,JDK 1.8 中引入了紅/黑樹狀結構(尋找時間複雜度為
Time of Update: 2018-07-26
Description 有N個數(N<=100000) ,在連續M(M<=N)個數裡至少要有一個數被選擇. 求選出來數的最小總和。 Input 第一行兩個整數 N,M 接下來N行 Wi(Wi<=100) 表示第i個數 Output 一個整數,最小總和 Sample Input 5 3 1 2 5 6
Time of Update: 2018-07-26
原文連結 背景 原來學習 ZK 時, 我是在本地搭建的偽叢集, 雖然說使用起來沒有什麼問題, 但是總感覺部署起來有點麻煩. 剛好我發現了 ZK 已經有了 Docker 的鏡像了, 於是就嘗試了一下, 發現真是爽爆了, 幾個命令就可以搭建一個完整的 ZK 叢集. 下面我簡單記錄一下使用 Docker 搭建 ZK 叢集的一些步驟. 鏡像下載 hub.docker.com 上有不少 ZK 鏡像, 不過為了穩定起見, 我們就使用官方的 ZK 鏡像吧.首先執行如下命令:
Time of Update: 2018-07-26
這題有兩種解法:暴力和預先處理(打表);暴力在這裡有個技巧:只需枚舉n的前45個數。而打表需要把1~100000算出。 #include<bits/stdc++.h>using namespace std;int main(){ int t,n; scanf("%d",&t); while(t--) { scanf("%d",&n); int flag=1,i;
Time of Update: 2018-07-26
二進位從高到低分治,當前分治到第 i i 位 那麼肯定是把第 i i 位為0的放一起,為1的放一起,這兩塊分別成一個聯通塊,然後之間連一條邊是最優的 兩塊分治下去。 找最小邊的話一邊建字典樹,另一邊的數在字典樹上找 #include <cstdio>#include <iostream>#include <algorithm>using namespace std;const int
Time of Update: 2018-07-26
來自:http://www.opus-codec.org/docs/html_api-1.1.0/group__opus__encoder.html#gaefeb7dc1d6e3b59dea5ea674c86e9c18 詳細說明 此頁面描述了用於編碼的使用過程和功能。 因為Opus是狀態編解碼,進行編碼前,首先需要建立一個編碼器。你可以這樣做: int error; OpusEncoder *enc; enc =
Time of Update: 2018-07-26
unction CnPYIndex( const CnString: string): string; { 返回中文的拼音首字母 } const ChinaCode: array [ 0 .. 25 , 0 .. 1 ] of Integer = (( 1601
Time of Update: 2018-07-26
socket的定義&&使用情境: (一)socket的使用情境: 如:瀏覽器進程與web伺服器處理序通訊; 如:QQ進程與好友的QQ進程通訊; (二)本地的進程通訊 && 網路上的進程通訊: (1)本地的進程通訊: 本地的處理序間通訊(IPC)有很多種方式,但可以總結為下面3類: 1.訊息傳遞(管道、FIFO、訊息佇列) 2.同步(互斥量、條件變數、讀寫鎖、檔案和寫記錄鎖、訊號量) 3.
Time of Update: 2018-07-26
E-R圖簡介 E-R圖可以認為是關聯式模式的雛形,每個實體是一張表,實體與實體之間的關係可以合并到其中一個實體中,也可以是另外一張表,關係表和相關的實體表是通過主鍵或外鍵來聯絡的。 畫E-R圖首先要瞭解3個要素即:實體,屬性,關係。 實體 用矩形表示,矩形框內寫明實體名。 屬性 用橢圓形表示,橢圓內寫明屬性名稱,並用連線與實體串連起來。如果屬性較多,為使圖形更加簡明,有時也將實體與其相應的屬性另外單獨用列表表示。 聯絡
Time of Update: 2018-07-26
在《編程珠璣》第9章 代碼調優一節有個小tips作者講到順序搜尋中的迴圈最佳化調優問題,原始碼如下: <span style="font-size:18px;">int search(){for(int i=0;i<n;i++){if(x[i]==t)return i;return -1;}}</span> 該迴圈其實已經很簡潔了,但還可以再進行少許的精簡。
Time of Update: 2018-07-26
DES全稱為Data EncryptionStandard,即資料加密標準。Des密碼編譯演算法是一種對稱式加密演算法,所謂對稱式加密演算法就是指對明文的加密以及對密文的解密用的是同一個密鑰。 Des使用一個56位的密鑰以及附加的8位同位位元,產生最大64位的分組大小。這是一個迭代的分組密碼,使用稱為 Feistel 的技術,其中將加密的文字區塊分成兩半。使用子金鑰組其中一半應用迴圈功能,然後將輸出與另一半進行“異或”運算;接著交換這兩半,這一過程會繼續下去,但最後一個迴圈不交換。DES
Time of Update: 2018-07-26
二分尋找樹的效能。二分尋找樹在一些極端情況下效能並不好。 我們首先要認識下面一個事實:同樣的資料,可以對應不同的二分搜尋樹。看下面的例子。 二分搜尋樹可以退化為鏈表。此時時間複雜度變成了 O(n)。 極端測試:如果把 key 排序好以後,依次插入到二分搜尋樹中,此時二分搜尋樹的高度就會變得非常高。 解決方案:平衡二叉樹,使用紅/黑樹狀結構(紅/黑樹狀結構是一種平衡二叉樹的實現,其它平衡二叉樹的實現還有 2-3 tree,AVL tree,Splay