Time of Update: 2018-12-07
回到目錄首先將來說一下Dispose是什麼東西吧,對於我們使用非託管的資源時,需要自己去實現Dispose這個方法,它的含義就是釋放使用的記憶體空間。例如Stream這個類型,它就是一個非託管類型,它會實現一個IDisposable介面,來實現Dispose方法像TransactionScope,.net事務,它也是一個非託管的,也就是說,我們在使用完事務後,需要自己去進行Dispose()操作,下面問題就來了,這個Dispose寫在哪裡合適呢?注意看這段代碼: using
Time of Update: 2018-12-07
回到目錄答案是肯定的,一個DBML模型可以對應多個資料庫,只要資料庫中的表與模型中定義的表結構完成相同,就可以這個技術,我們可以用來開發一些通用的功能模組,如通過後台管理模組,我們將一些通用表進行抽象,如,對使用者,角色,部門,菜單等進行抽象,將它的模組建立在我們的公用項目中,然後對這個模型進行操作,在建立DBContext上下文時,我們需要保留一個連接字串,即,真正的項目中用哪個庫,我們這個串就指定哪個庫就行了。,後台表結構然後,它個模組可以用別對應包含這幾個表結構的資料庫,呵呵通用後台系統我
Time of Update: 2018-12-07
回到目錄如果在linq中希望進行一對多的複合查詢時,請直接在查詢中使用join into,或者使用let 關鍵字,當然在建立實體時動態賦值對於查詢的效能也是沒有影響的,兩次查詢結果完成相同一 :在實體中賦值var linq = from data in this.GetModel() join data2 in iWebDepartmentsRepository.GetModel() on data.DepartmentID equals data2.
Time of Update: 2018-12-07
回到目錄在使用架構頁時,它的子架構頁面不能正常載入,而單獨訪問每個子頁面是可以訪問的,產生這個問題的原因是由於你的frameset節點位置不正確在網頁中,它不能放在<body></body>之間,必須放在它的外面才行,就像這樣:<html></head> <frameset rows="60,*" frameborder="no" border="0" framespacing="0"> <frame
Time of Update: 2018-12-07
1.內嵌函式和宏: 內聯擴充是用來消除函數調用時的時間開銷。它通常用於頻繁執行的函數。一個小記憶體空間的函數非常受益。那麼內嵌函式和宏之間有什麼關係呢??實際上,內嵌函式的功能和預先處理宏的功能相似。我們會經常定義一些宏,如 #define TABLE_COMP(x)
Time of Update: 2018-12-07
1.歐幾裡得演算法求最大公約數 求最大公約數是一個比較基礎的問題,歐幾裡得早在《幾何原本》中就闡明了一個高效的演算法,據說這大概發生在公元前300年左右。具體是這樣的:假設把x和y的最大公約數表示成為f(x,y),並且x>=y>0。現在取k=x/y,b=x%y,則x=k*y+b,變形為b=x - k*y;x和y能被f(x,y)整除,那麼b也能被f(x,y)整除;所以f(x,y) = f(y,x%y)。顯然代碼相當的簡單啊,如下:int GCD(int x,int
Time of Update: 2018-12-07
1.字典樹 曾經遇到這樣一個問題:很多單詞,這些單詞只含小寫字母,並且不會有重複的單詞出現,現在要統計出以某個字串為首碼的單詞數量,單詞本身也是自己的首碼。先看看用常規的方法解決這個問題的複雜度。假設單詞表容量為M,需要統計的首碼數量為N,首碼的平均長度是L,則常規演算法思路是:對於每個首碼搜尋每個單詞,看看這個首碼是不是這個單詞的首碼,如果是數量+1。這樣的話時間複雜度為O(N*M*L),如果N相當大的話,這個演算法的複雜度將無法接受啦。其實這就是字典樹的典型應用啦。 我們先學習一下字典樹
Time of Update: 2018-12-07
1.什麼是動態規劃:動態規劃,和分治法一樣,是通過組合子問題的解而解決整個問題的。但不同的是,分治演算法是指將問題劃分成一些獨立的子問題,遞迴求解各子問題,然後合并子問題的解而得到原問題的解。而動態規劃適用於子問題不是獨立的情況,也就是各子問題包含公用的子子問題。動態規劃對每個子子問題只求解一次,將其結果儲存在一張表中,從而避免每次遇到各個子問題時重新計算答案。 2.動態規劃中的幾個重要性質:2.1最優子結構:用動態規劃求最佳化問題的第一步是描述最優解的結構。如果問題的一個最優解中包含子問題的最
Time of Update: 2018-12-07
(這篇文章主要通過swap函數來理解局部變數和指標滴。)1.第一種實現swap函數的方法是:swap(int a,int b){Int c = a;a = b;b =c;}這表面一看確實是實現了整數a,b的交換,當拿來用時發現,結果並不是我們想要的。分析一下原因:在main中int x=1,y=2;然後調用swap(x,y);這相當於int a = x ; int b =
Time of Update: 2018-12-07
最近看書看到了這樣一個問題:“刪除無頭單鏈表中的某個節點”。如果沒有“無頭”這個前提,那麼這個問題應該不算是個問題了吧。這讓我想到了一句話,那就是“在企業中塑造不可替代性”,如果一個技能大家都會,那麼這絕對不是你的特長,只有這個問題你會,那些人兒不會,那你才牛嘛,所以我們要會就會這種無頭單鏈表的刪除操作。可能有些人兒說了,那麼這樣一寫出來,大家不就都會了嗎?我個人卻不是這樣想的,學點東西還怕人知道嗎,一個人要想真正有實力,靠的是不斷的學習,而不是學點東西怕人知道藏起來(個人觀點哦)。作為一個
Time of Update: 2018-12-07
回到目錄名稱有點饒,不是很好理解,但我喜歡這種大白話,不喜歡書所翻譯過來的話,呵呵!今天要把一個不確定的問題解決,問題是:一個程式中,有一個屬性,如果它為true時,我希望把另一些方法自動運行,這是可以通過訂閱事件來實現的,對嗎?經過我的測試確實是這樣的,呵呵。事件一個一直叫我們頭痛的話題,一個能不用就不用的東西,我們程式員為什麼那麼怕“事件”呢?我來分析幾個原因1 對本身的概念不是很理解2 對它的作用不是很清晰,可能書上說不到點上,個人認為3
Time of Update: 2018-12-07
無論是參加面試還是筆試,數組都是常考的內容,並且考察數組的知識往往結合著比較有意思的演算法。在這裡參照網上的資料和平時看過的相關書籍總結一下,作為自己的面試複習材料吧。我知道這個總結肯定有遺漏或者是不對的地方,希望大家看到可以最佳化和改正的的地方,幫幫忙給點新思路吧。謝謝大家~~1.求數組中的最大值(最小值)問題描述:給定一個整數數組arr,找出其中的最大值(最小值)。解決思路:傳統的方法就是遍曆一次數組即可得到最大值(最小值),時間複雜度是O(N);現在說另外一個思路利用二分,即將數組分成
Time of Update: 2018-12-07
回到目錄說到override大家都知道,它是複寫,子類去複寫父類的方法與屬性,是,沒錯,今天主要就說這個複寫,如果不複寫會有什麼結果,有沒有想過,呵呵來和我做個demo吧! 1 abstract class Parent 2 { 3 public virtual string Msg { get; set; } 4 } 5 6 7 class Sub : Parent 8 { 9 public override string Msg {
Time of Update: 2018-12-07
這幾天在建立MFC項目時,常常遇到一下兩個串連錯誤,例如:1. LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main解決方案: [Project] --> [Settings] --> 選擇"Link"屬性頁面, 在Project Options中將/subsystem:console改成/subsystem:windows.2. 還有一種經常出現的相反的情況LIBCD.lib(wincrt0.
Time of Update: 2018-12-07
1問題定義 加入數組arr中資料是:4,0,1,0,2,3,那麼第三小的元素是1,問怎麼樣快速的求出這個第k小的數。2.解決方案解法一: 利用STL中快速排序把數組進行排序,然後數組下標是k-1的就是我們要求的第k小的元素了,這種情況的時間複雜度接近於O(n*logn)。但是回頭想一想這個演算法是把數組進行了全排序,而我們只是要找到數組中第k小的數,這顯然是“殺豬用了牛刀”。當然了時間複雜度較高也是正常的。解法二: 想一想快速排序的思想:將數組中某一個元素m作為劃分依據(我們假設為第一個元
Time of Update: 2018-12-07
一、引用的基本知識引用就是某一變數(目標)的一個別名,對引用的操作與對變數直接操作完全一樣。引用的聲明方法:類型標識符 &引用名=目標變數名; 說明:(1)&在此不是求地址運算,而是起標識作用。(2)類型標識符是指目標變數的類型。(3)聲明引用時,必須同時對其進行初始化。(4)引用聲明完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變數名的別名。 int a,&ra=a;a為目標原名稱,ra為目標引用名。給ra賦值:ra=1;
Time of Update: 2018-12-07
1.strlen函數. strlen所作的僅僅是一個計數器的工作,它從記憶體的某個位置(可以是字串開頭,中間某個位置,甚至是某個不確定的記憶體地區)開始掃描,直到碰到第一個字串結束符 '\0'為止,然後返回計數器值。 2.sizeof操作符sizeof()返回的是變數聲明後所佔的記憶體數,不是實際長度,此外sizeof不是函數,僅僅是一個操作符。 3.strlen和sizeof的區別3.1 sizeof可以用類型做參數,strlen只能用char*做參數,且必須是以''\0''結尾的。3.2
Time of Update: 2018-12-07
1.問題描述 如何?簡單快速的實現單鏈表的逆置。(要求時空複雜度盡量低。)2.問題解法 最簡單的一個思路是遍曆一遍鏈表,儲存到臨時數組,然後利用這個臨時數組重建立立一個新的鏈表。這樣的話時間複雜度暫且認為是O(n),但是卻需要O(n)的空間複雜度。下面說另外一種不需要輔助空間,並且時間複雜度也是O(n)的演算法,該演算法被稱為頭插法,即便利鏈表的每個元素時,把元素直接插入到鏈表的表頭,這樣就完成了鏈表的逆置。演算法代碼://演算法功能:完成頭結點為head的鏈表的逆轉,鏈表中的第一個節點是h
Time of Update: 2018-12-07
1.初識觀察者模式 生活中大家一定遇到過這樣的情況:某一件事情的狀態改變,會相應的引起其他相關的變化。身在武林就說說武林的事吧,就說最近熱播的電視劇《天涯明月刀》,看過這麼一集,劇情大概是:“了因師太”和“國介方丈”假傳向盟主的口令邀請武林各大門派到俠客山莊開“鏟雪大會”,目的是剷除他們眼中的武林敗類“傅紅雪”。其實這就是一個觀察者模式的典型例子啦。 被觀察者是:“了因師太”和“國介方丈”。(即:他們狀態的改變的會影響其他的事情的變化) 觀察者是:武當派等等其他武林派別。(即:受被觀察者狀
Time of Update: 2018-12-07
1.問題描述:最長公用子序列也稱作最長公用子串(不要求連續),英文縮寫為LCS(Longest Common Subsequence)。其定義是,一個序列 S ,如果分別是兩個或多個已知序列的子序列,且是所有符合此條件序列中最長的,則 S