哈希表javascript
散列表(Hash table,也叫哈希表)。是依據關鍵碼值(Key value)而直接進行訪問的數據結構。也就是說。它經過把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找的速度。這個映射函數叫作散列函數,存放記錄的數組叫作散列表。java
給定表M,存在函數f(key),對隨意給定的keyword值key,代入函數後若能獲得包括該keyword的記錄在表中的地址。則稱表M爲哈希(Hash)表。函數f(key)爲哈希(Hash) 函數[1]node
包括min,push,pop函數的棧,時間爲O(1)linux
#include<iostream>ios
#include<stack>數據庫
using namespace std;ubuntu
template <typename T> classStackWithMinwindows
{centos
public:數組
StackWithMin(void);
~StackWithMin(void);
void push(const T& node);
void pop();
T& min const();
private:
stack<T> m_data;
stack<T> m_min;
};
template <typename T> voidStackWithMin::push(const T& value)
{
m_data.push(value);
if(m_min.size()==0||value<m_min.top())
{
m_min.push(value);
}
else m_min.push(m_min.top());
}
template <typename T> voidStackWithMin<T>::pop()
{
assert(m_data.size()>0&&m_min.size()>0);
m_data.pop();
m_min.pop();
}
template <typename T> const T&StackWithMin<T>::min() const
{
assert(m_data.size()>0&&m_min.size()>0);
return m_min.top();
}
採用模板類得優勢:
1)可以用來建立動態增加和減少的數據結構
2)它是類型無關的,具備高度的可複用性
3)它在編譯時而不是執行時檢查數據類型。保證了類型安全
4)與平臺無關。可移植性
5)可用於基本數據類型
泛型的優勢
Java 語言中引入泛型是一個較大的功能加強。不只語言、類型系統和編譯器有了較大的變化,以支持泛型。而且類庫也進行了大翻修。因此不少重要的類,比方集合框架,都已經成爲泛型化的了。
這帶來了很是多優勢:
1,類型安全。 泛型的主要目標是提升 Java 程序的類型安全。經過知道使用泛型定義的變量的類型限制,編譯器可以在一個高得多的程度上驗證類型若是。沒有泛型。這些若是就僅僅存在於程序猿的頭腦中(或者若是幸運的話,還存在於代碼凝視中)。
2,消除強制類型轉換。
泛型的一個附帶優勢是。消除源碼中的不少強制類型轉換。
這使得代碼更加可讀。並且下降了出錯機會。
3,潛在的性能收益。 泛型爲較大的優化帶來可能。在泛型的初始實現中,編譯器將強制類型轉換(沒有泛型的話,程序猿會指定這些強制類型轉換)插入生成的字節碼中。但是不少其它類型信息可用於編譯器這一事實。爲將來版本號的 JVM 的優化帶來可能。由於泛型的實現方式。支持泛型(差點兒)不需要 JVM 或類文件更改。所有工做都在編譯器中完畢,編譯器生成相似於沒有泛型(和強制類型轉換)時所寫的代碼,僅僅是更能確保類型安全而已。
TCP是面向鏈接的,所謂面向鏈接,就是當計算機兩方通訊時必需先創建鏈接,而後數據傳送,最後拆除鏈接三個過程
並且TCP在創建鏈接時又分三步走:
第一步是請求端(client)發送一個包括SYN即同步(Synchronize)標誌的TCP報文,SYN同步報文會指明client使用的port以及TCP鏈接的初始序號;
第二步,server在收到client的SYN報文後,將返回一個SYN+ACK的報文。表示client的請求被接受。同一時候TCP序號被加一,ACK即確認(Acknowledgement)。
第三步,client也返回一個確認報文ACK給server端,相同TCP序列號被加一。到此一個TCP鏈接完畢。而後才開始通訊的第二步:數據處理。
Memcpy原型
void *memcpy1(void *desc,const void *src,size_t size)
{
if((desc == NULL) && (src == NULL))
{
return NULL;
}
unsigned char *desc1 = (unsigned char*)desc;
unsigned char *src1 = (unsigned char*)src;
while(size-- >0)
{
*desc1 = *src1;
desc1++;
src1++;
}
return desc;
}
cpu讀取順序
它是按堆棧的順序順序運行的,至於棧中的順序是按優先級排
cache叫作快速緩衝存儲器,是集成在CPU中的,存取速度最快,其次是內存,也就是你主板上插的那個條條,速度最慢的是外存,也就是硬盤
三種雲服務模式
IaaS(Infrastructure as aService)基礎設施即服務
SaaS(Software as aService)軟件即服務
PaaS(Platform as aService)平臺即服務
java是一種解釋型語言。但它的源文件要編譯成java字節碼即.class文件,而後在java虛擬機裏執行.
jsp是一種WEB開發技術。它在特定的WEB容器裏執行,WEB容器先把jsp轉化成Servlet文件(即.java文件)。而後編譯成.class文件而後在java虛擬機裏執行。
javascript是一種瀏覽器腳本語言,它被瀏覽器解釋運行.
這三種語言都採用java的語法。
構造函數,是一種特殊的方法。主要用來在建立對象時初始化對象,即爲對象成員變量賦初始值。總與new運算符一塊兒使用在建立對象的語句中。特別的一個類可以有多個構造函數。可依據其參數個數的不一樣或參數類型的不一樣來區分它們即構造函數的重載。
大數據的特徵 關於大數據的特徵,業內專業認識人士表示,可以用很是多詞語來表示。比較有表明性的即爲2001年DougLaney最早提出「3V」模型,包含數量(Volume)、速度(Velocity)和種類 (Variety)【1】。除此以外,在3V的基礎上又提出了一些新的特徵。
關於第四個V的說法不一,IDC 以爲大數據還應當具備價值性(Value),大數據的價值每每呈現出稀疏性的特色。而IBM 以爲大數據一定具備真實性(Veracity)。
維基百科對大數據的定義則簡單明瞭:大數據是指利用常用軟件工具捕獲、管理和處理數據所耗時間超過可容忍時間的數據集【2】。如今,業內人士已經將其擴展到了11個V。包含有效性、可見性等。 如下就眼下使用最多的「4V」模型進行分析。「4V」特徵主要體現在如下方面: 1.規模性(volume) Volume指的是數據巨大的數據量以及其規模的完整性。數據的存儲TB擴大到ZB。這與數據存儲和網絡技術的發展密切相關。
數據的加工處理技術的提升,網絡寬帶的成倍添加,以及社交網絡技術的迅速發展,使得數據產生量和存儲量成倍增加。實質上。在某種程度上來講,數據的數量級的大小並不重要,重要的是數據具備完整性。數據規模性的應用有例如如下的體現。比方對天天12 tb的tweets進行分析,瞭解人們的心理狀態,可以用於情感性產品的研究和開發;基於Facebook上成千上萬條信息的分析,可以幫助人們處理現實中的朋友圈的利益關係。
2.快速性(Velocity) Velocity主要表現爲數據流和大數據的移動性。現實中則體現在對數據的實時性需求上。隨着移動網絡的發展,人們對數據的實時應用需求更加廣泛。比方經過手持終端設備關注天氣、交通、物流等信息。快速性要求具備時間敏感性和決策性的分析——能在第一時間抓住重要事件發生的信息。
比方,當有大量的數據輸入時(需要排除一些沒用的數據)或者需要當即作出決定的狀況。
比方:一天以內需要審查500萬起潛在的貿易欺詐案件;需要分析
5億條日實時呼叫的具體記錄,以預測客戶的流失率。 3.多樣性(variety) Variety指有多種途徑來源的關係型和非關係型數據。 這也意味着要在海量、種類繁多的數據間發現其內在關聯。
互聯網時代。各類設備經過網絡連成了一個整體。進入以互動爲特徵的Web2.0時代,我的計算機用戶不只可以經過網絡獲取信息,還成爲了信息的製造者和傳播者。這個階段,不只是數據量開始了爆炸式增加,數據種類也開始變得繁多【3】。除了簡單的文本分析外,還可以對傳感器數據、音頻、視頻、日誌文件、點擊流以及其它不論什麼可用的信息。比方,在客戶數據庫中不只要關注名稱和地址,還包含客戶所從事的職業、興趣愛好、社會關係等。
利用大數據多樣性的原理就是:保留一切你需要的對你實用的信息,捨棄那些你不需要的。發現那些有關聯的數據。加以收集、分析、加工,使得其變爲可用的信息。
4.價值性(value) Value體現出的是大數據運用的真實意義所在。
其價值具備稀缺性、不肯定性和多樣性。「互聯網女皇」Mary Meeker在2012年互聯網發展趨勢中。用一幅生動的圖像來描寫敘述大數據。一張是整整齊齊的稻草堆,另一張是稻草中縫衣針的特寫。寓意經過大數據技術的幫助,可以在稻草堆中找到你所需要的東西,哪怕是一枚小小的縫衣針。這兩幅圖揭示了大數據技術一個很是重要的特色,價值的稀疏性【4】。
Linux版本號
centos與rhel相似。
fedora,這個版本號每次發行都比較冒進,以致於很是多驅動程序都不能很是好的配置,但最新的fedora10仍是很是保守和穩定的。yu軟件源基於rpm包管理
。安裝軟件很是方便。
ubuntu,基於debian。桌面環境以gnome爲主,是眼下最流行的linux我的桌面,它的長處是配置起來很easy。安裝完系統以後,僅僅要硬件不是太新。基本不用進行其它配置,硬件都可以識別並安裝好驅動。而且其apt更新源server中的軟件很豐富,僅僅要打一條命令。就可以本身主動從網絡下載安裝所需軟件。ubuntu安裝方便,甚至於可以使用wubi將linux安裝在windows分區。
ubuntu還有許多衍生版本號。包含Kubuntu(桌面採用KDE,較爲華麗)。xubuntu(採用xfce。要求配置較低)。eubuntu(面向兒童和教育),用戶可以依據需求,偏好,和硬件配置進行選擇。
suse。被譽爲最美麗的linux發行版本號,固然。其本質和其它版本號都是同樣的,僅僅是在窗體美工上開發人員下了必定功夫,而且得到華麗的同一時候固然也需要付出更高的系統資源佔用。其它的linux版本號經過一些改造,全然是可以實現suse的效果的。
redflag,中科院開發的linux版本號,主要面向政府用戶,其我的桌面版免費。這個版本號的美工上與windows很是接近。是使用者的入門難度減小,但實際上桌面也是基於KDE的。很是尋常。