Time of Update: 2018-12-04
C#中水晶報表執行個體 解決方案-->右擊添加建立項-->Crystal報表-->確定,出現如表:按確定,(使用報表精靈)'800')this.width='800';if(this.height>'600')this.height='600';" border=0>確定後出現如:'800')this.width='800';if(this.height>'600')this.height='600';"
Time of Update: 2018-12-04
1、程式分為伺服器端和用戶端;2、任何一個客戶,均可以與伺服器進行通訊;3、伺服器端能及時顯示已串連的用戶端狀態,然後將之告知給所有的用戶端;4、客戶與伺服器串連成功以後,可以與任何一個其他使用者進行聊天通訊;5、客戶如果退出程式,伺服器要將之告知其他的客戶。一、伺服器的設計與編程。伺服器的設計介面如下所示伺服器端的代碼如下所示:using System;using System.Collections.Generic;using System.ComponentModel;using
Time of Update: 2018-12-04
也許你曾經遇到過:一個線程做事情,其他線程等待,那麼有可能因為不做事情的線程在等待,而浪費掉時間。我們可以通過線程池ThreadPool來解決,使用ThreadPool.QueueUserWorkItem(回呼函數,object),將參數封裝在一個類的對象中,傳給回呼函數去執行。TheadPool的用法:1、建立一個ManualResetEvent的對象,就像一個號誌,指示線程的掛起和執行;2、ManualResetEvent對象建立時,可以指定預設狀態:true為有訊號,false為無訊號;3
Time of Update: 2018-12-04
一 1 在分析一個操作執行太慢,則需要首先分類的是IO操作密集還是cpu計算密集。 這個可以這樣區分,用虛擬硬碟工具(例如ramdisk tool)把一部分記憶體虛擬成硬碟,應用程式和基準檔案都安裝在虛擬硬碟上,如果程式效能改善明顯,則是IO相關的問題。二 2 針對IO瓶頸的最佳化: 每次IO操作大約在10ms的量級,100次就是1s左右,所以盡量避免不必要的IO,具體做法有: 預先順序讀檔案避免隨機訪問
Time of Update: 2018-12-04
上文提到從v$Session查看串連數,發現使用串連池後莫名增加了MIN個串連(MIN為串連池的最小串連數)。但是實際上,v$session中看見的串連數是邏輯串連數,並非ORACLE的物理串連。ORACLE的會話與串連甚至可以不相關,允許存在沒有物理串連的會話。 因此,僅僅從v$session視圖看串連數是不準確的,至於從什麼地方可以看見用戶端與ORACLE的確切串連數。目前還沒找到。PRO*C的串連池特性,也只有通過效能測試來確定其有效性了。
Time of Update: 2018-12-04
編碼中發現一個奇怪的編譯錯誤,花了很長時間才找到問題所在。下面把重現這個問題的最精簡的代碼貼出來:/**//*MyClass.h存在一個namespace和一個類*/#ifndef _MY_CLASS_H_#define _MY_CLASS_H_namespace MySpace...{class MyClass...{public: int Field;};}#endif 下面的一個檔案聲明一個全域的指標,因為僅僅指示聲明,所以盡量不包含其他檔案:/**//*global.
Time of Update: 2018-12-04
一)位元組序,顧名思義位元組的順序,再多說兩句就是大於一個位元組類型的資料在記憶體中的存放順序(一個位元組的資料當然就無需談順序的問題了)。其實大部分人在實際的開發中都很少會直接和位元組序打交道。唯有在跨平台以及網路程式中位元組序才是一個應該被考慮的問題。在所有的介紹位元組序的文章中都會提到位元組序分為兩類:Big-Endian和Little-Endian,引用標準的Big-Endian和Little-Endian的定義如下:a) Little-Endian就是低位位元組排放在記憶體的低地址端,
Time of Update: 2018-12-04
最近在研究驅動的代碼,發現這樣一個宏,沒太搞懂什麼用途:#define E1000_ROUNDUP(i, size) ((i) = (((i) + (size) - 1) & ~((size) - 1))) 調用的時候是這樣的: unsigned int i = 4097; E1000_ROUNDUP(i, 4096); 拆解這個運算,還是沒明白到底要幹什麼:簡化的運算式相當於: i = (i + 0x00000fff) | 0xfffff000;
Time of Update: 2018-12-04
Pro*C中批量讀取遊標中的資料的時候,需要注意:最後一次批量讀取遊標中的資料的時候,資料被取到HostArray中,同時sqlca.sqlcode被置為1403(NO_DATA_FOUND)。如果在fetch後立即判斷sqlca.sqlcode的話,可能就導致最後一次的資料取不到。 保險的辦法是定義一個變數記錄上次的讀取條數:if (sqlca.sqlcode==1403 && sqlca.sqlerrd[2]<=nLastCount){
Time of Update: 2018-12-04
int i=atoi(m_strSendPeriod); //轉為整型SetTimer(1,m_strSendPeriod,NULL); ////////////////////////////////////////////////////////////////////// _itoa, _i64toa, _ui64toa, _itow, _i64tow, _ui64tow Convert an integer to a string. char *_itoa( int
Time of Update: 2018-12-04
用來存放數組的地區是一塊在棧中靜態分配的記憶體(非static),而數組名是這塊記憶體的代表,它被定義為這塊記憶體的首地址。這 就說明了數組名是一個地址,而且,還是一個不可修改的常量,完整地說,就是一個地址常量。數組名跟枚舉常量類似,都屬於符號常量。數組名這個符號,就代表 了那塊記憶體的首地址。注意了!不是數組名這個符號的值是那塊記憶體的首地址,而是數組名這個符號本身就代表了首地址這個地址值,它就是這個地址,這就是數組
Time of Update: 2018-12-04
今天看到了一道c#筆試題,是關於靜態欄位和靜態建構函式初始化的。靜態函數是c#新的特性,如果不知道它的初始化順序就會對這道題暈頭轉向。對於靜態建構函式可以參考http://www.cnblogs.com/michaelxu/archive/2007/03/29/693401.html。下來從這道筆試題來分析一下靜態建構函式的初始化順序。 1 class A 2 { 3 public static int X; 4 static A() 5 { 6 X =
Time of Update: 2018-12-04
1) 執行階段程式庫就是 C run-time library,是 C 而非 C++ 語言世界的概念:取這個名字就是因為你的 C 程式運行時需要這些庫中的函數. 2) C 語言是所謂的“小核心”語言,就其語言本身來說很小(不多的關鍵字,程式流程式控制制,資料類型等);所以,C 語言核心開發出來之後,Dennis Ritchie 和 Brian Kernighan 就用 C 本身重寫了 90% 以上的 Unix 系統函數,並且把其中最常用的部分獨立出來,形成標頭檔和對應的
Time of Update: 2018-12-04
C++的static有兩種用法:面向過程程式設計中的static和物件導向程式設計中的static。前者應用於普通變數和函數,不涉及類;後者主要說明static在類中的作用。 一、面向過程設計中的static 1、靜態全域變數在全域變數前,加上關鍵字static,該變數就被定義成為一個靜態全域變數。靜態全域變數有以下特點: 該變數在全域資料區分配記憶體; 未經初始化的靜態全域變數會被程式自動初始化為0(自動變數的值是隨機的,除非它被顯式初始化);
Time of Update: 2018-12-04
1.static_castfloat x;cout << static_cast<int>(x);f(static_cast<string>("hello"); 2.dynamic_cast 將多態類型向下轉型class Car;class Cabriolet : public Car {...};class Limosine : public Car {...};void f(Car* cp){ Cabriolet* p =
Time of Update: 2018-12-04
任何資料在記憶體中都是以二進位的形式儲存的,例如一個short型資料1156,其二進位表示形式為00000100 10000100。則在Intel CPU架構的系統中,存放方式為 10000100(低地址單元) 00000100(高地址單元),因為Intel CPU的架構是小端模式。但是對於浮點數在記憶體是如何儲存的?目前所有的C/C++編譯器都是採用IEEE所制定的標準浮點格式,即二進位科學標記法。在二進位科學標記法中,S=M*2^N
Time of Update: 2018-12-04
由於時間片的原因,雖然所有線程在微觀上是串列執行的,但在宏觀上可以認為是並存執行。線程有兩種類型:前台和後台。我們可以通過線程屬性IsBackground=false來指定線程的前後台屬性(預設是前台線程)。區別是:前台線程的程式,必須等所有的前台線程運行完畢後才能退出;而後台線程的程式,只要前台的線程都終止了,那麼背景線程就會自動結束並推出程式。用法方向:一般前台線程用於需要長時間等待的任務,比如監聽用戶端的請求;後台線程一般用於處理時間較短的任務,比如處理用戶端發過來的請求資訊。【前台線程】
Time of Update: 2018-12-04
C是一個結構化語言,重點在演算法和資料結構。C程式的設計者首先考慮的是如何通過一個過程,對輸入(或者環境條件)進行運算處理得當輸出(或實現過程(事務)控制)。而對C++,首先考慮的是如何構造一個物件模型,讓物件模型能夠契合與對應的問題域,這樣就可以通過對象的狀態資訊得到輸出或者實現過程(事務)控制。對應大規模的數值運算,C/C++和java/.net之間沒有明顯的效能差別。不過,如果運算設計向量計算,矩陣計算,可以使用Fortran
Time of Update: 2018-12-04
建立線程時,需要指定線程入口,即通過ThreadStart指定線程要去執行的“函數”或者“過程”。using System;using System.Collections.Generic;using System.Text;using System.Threading;namespace Demo{ public class ThreadClass { public void ThreadFunction() {
Time of Update: 2018-12-04
java 的connect有timeout這個功能,C++的connect反而沒有? 網查得到了兩個實現的版本如下: 支援timeout的connect() / Connect with timeoutCode: void connect_w_to(void) { int res; struct sockaddr_in addr; long arg; fd_set myset; struct timeval tv; int valopt; socklen_t lon; //