Time of Update: 2018-12-05
轉自:http://kmhz.blog.163.com/blog/static/6918022200832314144955/ 最近,同事、朋友跟我聊天的過程中,提到了設計模式方方面面的問題。隨著物件導向、敏捷開發的深入人心,越來越多的程式員希望能夠藉助設計模式,使自己的代碼更利於重用、更利於被人理解、可靠性更有保證。 不同的情況下需要用什麼樣的模式,如何?這些模式,在各類著作中已經介紹的相當清晰了,但是關於設計模式實現的時機,卻提的比較少。過度設計
Time of Update: 2018-12-05
RFC NamereSIP Access TokenreSIP
Time of Update: 2018-12-05
迭代器模式定義:提供了一種方法,可以順序的訪問一個彙總對象內的各個元素,而又不暴露其內部的表示。類圖如下:這個模式至少帶來了兩個好處:1. 採用分離出去的的遍曆方式設計可以讓遍曆從彙總類中解耦,可以實現自己的遍曆方式,並且對外提供遍曆的統一介面,封閉對內實現方式。2. 彙總對象不再負責維護內部對象集合的遍曆方式,這樣減少了彙總對象的職責,讓彙總類的介面和實現更見簡潔。OO設計原則一個類應該只有一個引起變化的原因。這句話的意思是說,盡量讓每個類保持單一責任。如果影響一個類的原因
Time of Update: 2018-12-05
在這裡要對一種情況進行說明當root1的左子樹與root2的左子樹相同,root1的右子樹與root2的右子樹相同時,這兩顆二叉樹相同。當root1的左子樹與root2的右子樹相同,root1的右子樹與root2的左子樹相同時,這兩顆二叉樹同樣相同。以下是實現代碼bool IsBSTEqual(BNode* root1,BNode* root2){ if (root1==NULL && root2==NULL) { return true;
Time of Update: 2018-12-05
本文由該問題引入到核心鎖的討論,歸納如下為什麼需要核心鎖?多核處理器下,會存在多個進程處於核心態的情況,而在核心態下,進程是可以訪問所有核心資料的,因此要對共用資料進行保護,即互斥處理有哪些核心鎖機制?(1)原子操作atomic_t資料類型,atomic_inc(atomic_t
Time of Update: 2018-12-05
狀態模式定義:允許對象在內部狀態改變時改變它的行為,對象看起來好像修改了它的類。 這句話的意思是,類對象的行為,不僅受當前他所處於的狀態影響,還受他執行動作的影響,而且伴隨著內部狀態的改變。同時,如果我們能修改執行個體對象的狀態,那麼看起來我們好像改變了對象的執行個體化的類。類圖如下: 狀態模式的類圖很像策略模式的,但他們有本質的不同,主要表現在兩種模式的設計意圖不同:l
Time of Update: 2018-12-05
B 幀在 MPEG-4 中有四種參考模式,如果是同時參考前後的畫面壓縮,則記錄的是 和 (前畫面 pixel 值 + 後畫面 pixel 值)/2 的差值,也就是 和 「前後畫面的平均」的差值。所以記錄的差值個數和 P 幀一樣,只有一個,沒有增加。而因為 B幀位於前後畫面的中間,以「前後畫面的平均」,也就是「前後畫面的中間值」來作為預測數值(預測 B 幀的 pixel數值為多少?如果有誤差,再記錄差值),這樣這個預測數值會比單獨使用前一個畫面來預測,更接近目前真正的
Time of Update: 2018-12-05
Android 休眠(suspend)涉及檔案: kernel/power/main.c kernel/power/earlysuspend.c
Time of Update: 2018-12-05
ACM-poj-3295 解題報告:本題是一個類比,構造類型的題。因為只有5個運算元p,q,r,s,t,所以總共只有2的5次方32種組合,可以使用枚舉的方法,嘗試每個可能的取值。如果某個取值是的其計算結果不是WFF,即可輸出not。剩下的就是邏輯運算了。整個輸入資料的遍曆可以使用棧資料結構,從輸入資料的末尾向前遍曆,遇到運算元就根據當前類比值將對應的布爾值壓入棧中,遇到K,A,N,C,E就取出運算元運算,將結果壓入棧中。代碼如下:#include
Time of Update: 2018-12-05
忙了一整天加一晚上 在劉工和曾工的協助下 終於成功在目標板上掛載NFS檔案系統了 其中一些認識體會總結如下: 關於u-boot 配置好交叉編譯環境後make uImage 沒有mkconfig 發現還需要配置u-boot 於是下載uboot編譯對應的davinci evm版本(make davinci evm) 將命令export到PATH裡面去 然後再編譯核心 ,成功! u-boot 的一些基本命令是可以用簡寫的這樣可以省不少的事情。比如printenv 簡寫成pr
Time of Update: 2018-12-05
class Stack{private:struct Link{int data;Link* next;Link(const int& dat, Link* nxt):data(dat), next(nxt){}~Link(){}} *pHead;Link *pMinimum;public:Stack():pHead(NULL), pMinimum(NULL){}Stack(const int& initial){pHead = new Link(initial,
Time of Update: 2018-12-05
適配器模式 適配器模式的核心思想是把被適配者的介面封裝起來,然後供用戶端調用。類圖:Adapter中組合使用被適配者的對象執行個體。Target是客戶看到的他以為他正在操作的物件類型。Adapter繼承於他,所以就對外表現出target類的類型。然後在其內部對真正的實現對象介面封裝,讓客戶對target對象調用的動作執行adaptee的實現。適配器原則的適應情境:想使用一個現有的類但是介面不是很合適時。增加適配器這個中介軟體可以使調用者和被調用模組相容。最少知識原則減少對象之間的互動。一個類應盡
Time of Update: 2018-12-05
在IPV6大勢所趨下,我們不得不考慮擴充現有的程式,讓它也支援ipv6。本篇主要針對socket下ipv4到ipv6的移植相關內容。一、區別之處1)地址結構ipv4地址結構:struct sockaddr_in { short int sin_family;
Time of Update: 2018-12-05
轉自: http://blog.csdn.net/v_july_v/article/details/66859621. 給定a、b兩個檔案,各存放50億個url,每個url各佔64位元組,記憶體限制是4G,讓你找出a、b檔案共同的url?
Time of Update: 2018-12-05
最近一段時間真的很忙。實習結束後一直在做比賽,還得兼顧實驗室項目。現在比賽結束了,可以清閑的坐在電腦旁安靜的分享些東西了。立此貼為證,以後每盩厔少更新一兩篇技術貼。Trust me Sam is back.以前一直用live writter寫部落格。live writter大部分時間挺方便的,但是有些功能不盡如人意,比如預覽功能,與csdn部落格的接合功能。最頭疼得是它提供的文檔編輯功能真是讓我汗顏。所以上網找了找,發現了 Zoundry Raven這個工具,據說是 Zoundry
Time of Update: 2018-12-05
#include<iostream>#include<cstdio>#include<cstring>//using namespace std;int partition(int data[], int begin, int end){ int key = data[begin]; while(begin < end) { while(data[end]>=key && begin<end)
Time of Update: 2018-12-05
//後序: template <class T> void postOrder(TreeNode<T> *root) { stack<TreeNode<T>*> st; TreeNode<T> *p = root; TreeNode<T> *pre = NULL;//pre表示最近一次訪問的結點 while(p || st.size()!=0) { //沿著左孩子方向走到最左下 。
Time of Update: 2018-12-05
Qt圖形介面庫的設計在介面API設計中算是十分優秀的,前幾天在coolShell上看到了一篇強烈推薦的API設計原則文章,仔細研究了下,文章地址如下: http://developer.qt.nokia.com/wiki/API_Design_Principles簡單記錄了一下重點和痛點,以備忘。High point:Static PolymorphismSimilar classes should have a similar API. This can be done using
Time of Update: 2018-12-05
#include <iostream>using namespace std;#define MAXSIZE 10000int data[MAXSIZE];int heapSize = 0;void heapShift(int i) {int left = i*2+1;int right = i*2+2;int largest = i;if(left < heapSize && data[largest] < data[left]) {largest =
Time of Update: 2018-12-05
Pixel aspect ratio (PAR) is a mathematical ratio that describes how the width of pixels in a digital image compares to their height.Most digital imagingsystems describe an image as a grid of very small but nonethelesssquare pixels. However, some