Time of Update: 2018-12-05
1.DDL(Data Definition Language)資料庫定義語言statements are used to define the database structure or schema.DDL是SQL語言的四大功能之一。用於定義資料庫的三級結構,包括外模式、概念模式、內模式及其相互之間的映像,定義資料的完整性、安全控制等約束DDL不需要commit.CREATEALTERDROPTRUNCATECOMMENTRENAME2.DML(Data Manipulation
Time of Update: 2018-12-05
如何設計一個LRU Cache?Google和百度的面試題都出現了設計一個Cache的題目,什麼是Cache,如何設計簡單的Cache,通過搜集資料,本文給出個總結。 通常的問題描述可以是這樣:Question:[1] Design a layer in front of a system which cache the last n requests and the responses to them from the
Time of Update: 2018-12-05
以下是我對這兩者的理解:首先要明白不帶緩衝的概念:所謂不帶緩衝,並不是指核心不提供緩衝,而是只單純的系統調用,不是函數庫的調用。系統核心對磁碟的讀寫都會提供一個塊緩衝,當用write函數對其寫資料時,直接調用系統調用,將資料寫入到塊緩衝進行排隊,當塊緩衝達到一定的量時,才會把資料寫入磁碟。因此所謂的不帶緩衝的I/O是指進程不提供緩衝功能。每調用一次write或read函數,直接系統調用。而帶緩衝的I/O是指進程對輸入輸出資料流進行了改進,提供了一個流緩衝,當用fwrite函數網磁碟寫資料時,先
Time of Update: 2018-12-05
今天同學給我出了一道題是這樣的:有n個不重複的數,這n個數可以放入記憶體中,讓你用最快的方法找到第k大的數。解答:一般情況我們可能考慮,先將n個數排序(快排序、堆排序),然後可以得到結果。但是當n很大時這樣做的效率會很低。所以我們提出一種更高效的方法:利用快速排序的特點:第一遍排序會確定一個數的位置,這個數左邊都比它大,右邊都比他小(降序),當左邊區間大於K時,說明我們求的第K大數在左邊區間,這時我們可以捨棄右邊區間,將範圍縮小到左邊區間從而重複上述過程,直到確定一個數的位置時,左邊區間的小是K
Time of Update: 2018-12-05
這是IT職場人生系列的第二十三篇。(序言,專欄目錄)專家與雜家專家與雜家之爭由來已久。挺專家者說:只有專一,才能學透學精;那些泛泛之輩,只能學到些皮毛,終究不能有所成就。挺雜家者說:只有廣泛,才能目光開闊;某些人天天鑽牛角尖,最後學成榆木疙瘩。招聘的時候也是。有人號稱精通七八種語言,參與過76個項目(在一個真實簡曆中看到的,不過不是來我們這應聘的;按當時的速度估計,他現在應該寫參與150~200多重專案左右了),相信大家一定看了直搖頭。但如果又有人十年如一日,只是在一個文檔轉換器上鑽研,恐怕也夠
Time of Update: 2018-12-05
public class Stack {public Node top;public void push(int value){if(top == null){top = new Node(value);top.min = value;}else{Node node = new Node(value);if(node.value < top.value){node.min = value;}else{node.min = top.min;}node.down = top;top =
Time of Update: 2018-12-05
server端 使用idle開啟 並運行from twisted.internet.protocol import Protocol, Factoryfrom twisted.internet import reactorclass Echo(Protocol): def dataReceived(self, data): self.transport.write(data) class EchoFactory(Factory): def
Time of Update: 2018-12-05
new有三種使用方式:plain new、nothrow new、placement new.轉自:http://blog.sina.com.cn/s/blog_446b43c10100d7ci.html1.plain new/delete.普通的new定義如下: void *operator new(std::size_t) throw(std::bad_alloc); void operator delete(void*) throw();註:標準C++ plain
Time of Update: 2018-12-05
from twisted.internet.protocol import Protocol, Factoryfrom twisted.internet import reactorclass QuoteProtocol(Protocol): def __init__(self, factory): self.factory = factory def connectionMade(self):
Time of Update: 2018-12-05
linuxthreads管理線程原理詳解為什麼A程式建立了10個線程, 但是ps時卻會出現11個A進程了. 因為linuxthreads自動建立了一個管理線程. 當程式開始運行時, 並沒有管理線程存在(因為儘管程式已經連結了pthread庫, 但是未必會使用多線程). 程式第一次調用pthread_create時, linuxthreads探索管理線程不存在, 於是建立這個管理線程. 這個管理線程是進程中的第一個線程(主線程)的兒子.然後在pthread_create中,
Time of Update: 2018-12-05
public class BinarySearchTree {public Node root;public void insert(int value){root = insert(root,value);}public Node insert(Node node,int value){if(node == null){node = new Node(value);}else if(value <= node.value){node.left =
Time of Update: 2018-12-05
要能 註冊使用者 記錄線上使用者,資訊和串連(protocol) 使用者離開 向其他所有使用者發資訊使用者狀態不能放到protocol中,因此factory中應該保留一個字典,記錄使用者名稱和protocolprotocol初始化時(新使用者串連),選項組是未註冊,提醒其輸入使用者名稱,然後還需要保留上面字典,檢測是否重名。如果未重名,將其狀態改變為登入。在字典中加入自己 name和protocol註冊完之後,就可以向其他所有使用者廣播資訊(從字典中擷取protocol,
Time of Update: 2018-12-05
public class Test { public Node root;public void insert(int value){root = insert(root,value);}public Node insert(Node node,int value){if(node == null){node = new Node(value);}else if(node.value > value){node.left =
Time of Update: 2018-12-05
這幾天研究D3D骨骼動畫,順便把directx中的骨骼動畫的例子翻譯一下,有不當的地方,請大家指正.. How the Sample Works 本例主要講述了通過骨骼索引號索引骨骼變換的四種方法,其中骨骼索引號在模型的點流(vertex stream)中給出。本例並不包含骨骼動畫與層級變換。 本例講述了四種不同的適合GPU蒙皮的索引骨骼變換矩陣的方法。另外,還講述了怎樣stream out,而不使用Geometry
Time of Update: 2018-12-05
person table: 分別是name class agehuangyiyang 1 24lixun 1 25lihao 1 27liguangxu 2 26zhangzenglei 2 25wuzhipeng 2 25hujintao 3 65xijinping 3 55class table:第一個列是class,也就是join條件1 cs xjtu2 phy jilin3 nathion
Time of Update: 2018-12-05
根據2個表的大小,可以將join(這裡指inner join)分為下面集中情況: 1)map side join :2表中有一個表很小,小到可以直接放到記憶體中。將小表直接放到DistributedCache中,在繼承Mapper的類中(Map類),重寫setup函數(Map類可不是只用map函數噢,這個函數會在開始處理所有key/value值對之前調用,並且只被調用一次),使其從分布式緩衝中得到小表。再進行join操作。這種情況據說在實際中很少出現 2)reduce side
Time of Update: 2018-12-05
/* 結論: vector的存在可以使開發人員不必關心記憶體的申請和釋放。但是,vector背後的記憶體配置是按照2的倍數分配記憶體的。噹噹前容量對插入元素不夠時,分配一塊新的記憶體,這塊記憶體的容量是原vector容量的2倍大小,然後複製舊記憶體,釋放舊記憶體,可能多次涉及拷貝建構函式和解構函式,而這也正是vector的劣勢所在。*/在使用cocos2d-x引擎的時候,多次調用cclayer、ccsprite的解構函式,程式會崩掉。#include
Time of Update: 2018-12-05
方法一:[cpp] view
Time of Update: 2018-12-05
pthread_once()函數詳解在多線程環境中,有些事僅需要執行一次。通常當初始化應用程式時,可以比較容易地將其放在main函數中。但當你寫一個庫時,就不能在main裡面初始化了,你可以用靜態初始化,但使用一次初始化(pthread_once)會比較容易些。int pthread_once(pthread_once_t *once_control, void (*init_routine)
Time of Update: 2018-12-05
近來線上陸續出現了一些connect失敗的問題,經過分析實驗,最終確認和proc參數tcp_tw_recycle/tcp_timestamps相關; 1. 現象 第一個現象:模組A通過NAT Gateway訪問服務S成功,而模組B通過NAT Gateway訪問服務S經常性出現connect失敗,抓包發現:服務S端已經收到了syn包,但沒有回複synack;另外,模組A關閉了tcp timestamp,而模組B開啟了tcp timestamp;