Time of Update: 2018-12-03
本文學習介面。 本人目前對介面的理解 :A 定義了一個規範,所以整合這個介面的類都需要實現她指定的方法。B 介面可以被整合嗎 ? 【介面是可以被繼承的C 如果父類和子類繼承了同一個介面 ,需要顯示的定義介面,這裡需要研究一下【如果父類的介面用virtual來修飾,那麼子類可以重寫這個函數,如果sealed的,那麼只能重寫定義這個介面方法了,繼承類沖洗整合這個介面,然後使用new重新定義這個方法。】D 介面的基本特性 : 是一組命名的方法簽名,屬性,事件本質上是方法,所以也可以被整合。 E
Time of Update: 2018-12-03
本文學習多態的實現。虛函數可以實現多態 :就是基類定義一個函數使用virtual來進行修飾,然後在繼承類裡面使用override進行重寫,這樣clr在調用執行個體的方法的時候會判斷這個執行個體到底是那個類型的執行個體,然後去調用對應的執行個體的實現。這裡有一個好的用法,就是可以把子類的對象轉化成基類的對象,然後當作一個集合進行操作。using System;using System.Data;using System.Text;namespace myStu{/* 對於多態的學習 1
Time of Update: 2018-12-03
本章的重點是 類型構造器本人的疑問 :1 類型構造器是初始化類型的初始欄位的,那麼實際的應用情境是什麼那?2 在類型中,靜態構造器,以及靜態欄位是用來做什麼的那。3 靜態構造器在實值型別和引用類中中非別如何使用,如何理解那!下邊的幾個知識點是從書中(clr via c#)看到的1 編譯器不預設產生靜態構造器,如果顯式的生命,那麼類型構造器只能生命一個static 的,private的,無參的構造器。 當類型第一次被訪問的時候調用。2 類型構造器只能是private的,
Time of Update: 2018-12-03
概念反射 能夠查看中繼資料的類型,等資訊的一種能力。中繼資料 編譯以後最基本的資料單元。本質上就上一大追表。當程式編譯之後就能形成很多表,比如類定義表,欄位定義表,方法定義表。反射技術 就是使用REFLACSIOIN命名空間下的工具允許你解析這些中繼資料代表的代碼.PE檔案
Time of Update: 2018-12-03
本周的研究內容是 類的各種形態 以及應用情境。 靜態類 靜態方法 , 以及靜態類 的理解和應用情境。從書上看到的一點講解 :1 不管類型本身是否是靜態類型,都可以包含靜態方法,和靜態欄位, 有了靜態欄位最好是有靜態建構函式,用來初始化類型裡面的靜態欄位?2 對於抽象類別的理解 :不是具體的感念,而是一類概念的共性 。 應該和結構的概念差不多。 比如圓形 三交行 梯形 都是一種形狀,但是形狀有是什麼那,這個時候就可以定義一個形狀的抽象類別。 3 靜態類
Time of Update: 2018-12-03
為什麼要用Lua作指令碼? 使用Lua作指令碼,主要是因為它小巧玲瓏(體積小,運行快),而且它的文法又比較簡單明了。不過,使用LuaAPI將Lua引擎整合到程式中,確實有一些不方便——用落木隨風網友的話來說,就是"就象用彙編"。當然,現在你不用再這麼辛苦了,因為你可以使用LuaWrapper For
Time of Update: 2018-12-03
1.簡介 偶們這次主要說說怎麼由Lua定義函數, 然後在C或者C++中調用. 這裡偶們暫不涉及C++的對象問題, 只討論調用函數的參數, 傳回值和全域變數的使用. 2. 這裡偶們在e12.lua裡先定義一個簡單的add(), x,y為加法的兩個參數,return 直接返回相加後的結果. 例e12.lua -- add two numbers function add ( x, y ) return x + y end 在前一次裡, 偶們說到 lua_dofile()
Time of Update: 2018-12-03
今天同事在設計引擎的指令碼介面時遇到一個問題:需要把 C 對象指標放到 Lua 中,允許 Lua 儲存這個指標,並傳遞給其它模組。 這是給 Lua 寫 C 擴充時常見的問題,撇開如何如何將對象的方法匯入 Lua 這個更複雜的問題不談,我主要想說說 C 對象的生命期管理的問題。 一開始的設計是把對象的銷毀方法也匯入 Lua ,由指令碼程式員手工管理。這是很明顯的 C 程式員的思路:誰構造誰釋放。但在這裡是不合適的,不符合帶 gc 機制語言的習慣。 ... Click to
Time of Update: 2018-12-03
所有的.net程式其實是平台無關的,關鍵就是看.net vm是否支援x64平台。MS已經提供了.net x64,在VS中.net程式預設也是編譯成AnyCPU的,所以這是沒問題的。但是我的一個C#程式調用了Word2007的COM組件,並且調用了一些Win32API。那麼問題就來了。在Windows 2003 X64 上運行時出現 檢索COM類工廠中CLSIN為 {xxxxxx}
Time of Update: 2018-12-03
Java特性深受人們喜愛,而又正由於它的跨平台的目的,使得它和本地機器的各種內部聯絡變得很少,約束了它的功能。解決JAVA對本地操作的一種方法就是JNI。 JAVA通過JNI調用本地方法,而本地方法是以庫檔案的形式存放的(在WINDOWS平台上是DLL檔案形式,在UNIX機器上是SO檔案形式)。通過調用本地的庫檔案的內部方法,使JAVA可以實現和本地機器的緊密聯絡,調用系統級的各介面方法。 簡單介紹及應用如下: 一、JAVA中所需要做的工作
Time of Update: 2018-12-03
介紹Java如何將資料傳遞給C和C回調Java的方法。 java傳遞資料給C,在C代碼中進行處理資料,處理完資料後返回給java。C的回調是Java傳遞資料給C,C需要用到Java中的某個方法,就需要調用java的方法。Android中使用JNI七個步驟:1.建立一個android工程2.JAVA代碼中寫聲明native 方法 public native String helloFromJNI();3.用javah工具產生標頭檔4.
Time of Update: 2018-12-03
其實C#的事件與委託在日常開發過程中不用也能解決問題,但是用於不用是不同的;更能體現出對象的高內聚、低耦合,兩個對象要想互操作,對外提供介面;甚至是讓另一個對象來處理本對象在發生指定事件的時候的操作;打個比方,我把自己比喻成一個對象,把飯店老闆比喻成另一個對象;這兩個對象是完全獨立的,我並不知道我要到哪家飯店吃飯,而同樣飯店老闆也不知道誰會來吃飯;如果不存在事件,我到了一家飯店,我跟老闆講我要吃飯,老闆不回話,我說我要吃白菜.....等等;都是我自己在操作過程,這樣太死板了,我不知道這家飯店是否
Time of Update: 2018-12-03
在很久很久以前我們的祖先將我們大自然所有能動的物體都定義成“動物”。但是後來在動物的群體當中,有一類動物進化的非常快,它們的智商明顯高出其他動物,它們就是“人類”,這也許就是人類文明的起源。所謂的“人類”開始給動物定義層級了,他們認為“人類”是最聰明的,從而將自己和普通的動物劃分界限並且人類是主導“動物”世界的頭領。[王清培著作權,轉載請給出署名]可是大自然總是充滿殺戮,大魚吃小魚,小魚吃蝦米。這個時候有個很聰明的“人類”動物他想統治全世界,他想來想去如何對這些動物進行管理,怎麼讓他們能服從於我
Time of Update: 2018-12-03
很久沒有寫文章了也很少有時間,IT的朋友都很忙;既然來了肯定不是空手來啊;廢話就不多講了 列印想必大家都遇到過這樣的問題,不想用那些太過強大的列印控制項,在我開發的過程中也遇到了這樣的情況我想要實現基本的紙面套打也就是將不同的紙面合約協議之類的A4紙列印上規定好的文字;上網搜了搜沒有合適的第三方工具要麼就是很複雜的報表設計師要麼就是需要一系列的註冊過程的工具;本人覺的我不需要那麼強大的功能為什麼沒有針對不同需要的列印工具;所以就有了寫列印系列的念頭思路很簡單針對不同的需求寫不同的列印工具(命名為
Time of Update: 2018-12-03
靜態類成員包括待用資料成員和靜態函數成員兩部分。 一 待用資料成員: 類體中的資料成員的聲明前加上static關鍵字,該資料成員就成為了該類的待用資料成員。和其他資料成員一樣,待用資料成員也遵守public/protected/private訪問規則。同時,待用資料成員還具有以下特點:1.待用資料成員的定義。 待用資料成員實際上是類域中的全域變數。所以,待用資料成員的定義(初始化)不應該被放在標頭檔中。 其定義方式與全域變數相同。舉例如下: xxx.h檔案 class base{
Time of Update: 2018-12-03
引言異常,讓一個函數可以在發現自己無法處理的錯誤時拋出一個異常,希望它的調用者可以直接或者間接處理這個問題。而傳統錯誤處理技術,檢查到一個局部無法處理的問題時:1.終止程式(例如atol,atoi,輸入NULL,會產生段錯誤,導致程式異常退出,如果沒有core檔案,找問題的人一定會發瘋)2.返回一個表示錯誤的值(很多系統函數都是這樣,例如malloc,記憶體不足,分配失敗,返回NULL指標)3.返回一個合法值,讓程式處於某種非法的狀態(最坑爹的東西,有些第三方庫真會這樣)4.調用一個預先準備好在
Time of Update: 2018-12-03
Sieve of Atkin是一種快速的素數篩選演算法,演算法比較成熟和簡單,http://en.wikipedia.org/wiki/Sieve_of_Atkin中的描述已經非常的細緻,作者撰寫此文的目的在於,對如何把虛擬碼轉為C代碼作一個引導,參考如下的樣本。#include <math.h>#include <stdio.h>/* limit ← 1000000 */#define LIMIT(1000000)#define FALSE(0)#define
Time of Update: 2018-12-03
最近在編寫PDF的解析器,正好需要用的jepg的解碼,順便就寫下了此文。我參考:http://wenku.baidu.com/view/9c9d8ed333d4b14e85246813.html這個文檔裡面介紹了jepg的大體格式,My Code也是參照這個大體結構來完成的:buffer:jpg檔案的byte資料length:檔案長度int Jpeg::GetSize(char * buffer,long length){if(!buffer)return -1;char *
Time of Update: 2018-12-03
我們經常會想知道某些文字檔的編碼,可是編碼檢測卻並不是一件簡單的事情,它需要對文本進行採樣,統計分析後再進行字元集的匹配,不過值得慶幸的是有uchardet(https://code.google.com/p/uchardet/)這樣的開源庫可以幫忙這項艱巨的任務。uchardet是一個開源的用於文本編碼檢測的C語言庫,其功能模組是用C++實現的,通過一定數量的字元樣本獨立的分析出文本的編碼,當前已經支援UTF-8/GB13080/BIG5等共30多種編碼。稍感遺憾的是uchardet幾乎沒提供
Time of Update: 2018-12-03
許多人對直接用C語言繪圖仍然停留在Turbo C的graphics.h年代,或許也有教育老化的原因,畢竟曾經的經典早已成往事,與其想盡各種辦法尋找與其相容的圖形庫,不如順勢擁抱燦爛的明天。Cario(http://cairographics.org/)是一個非常出色的2D圖形庫,著名的GTK+3.0完全採用Cario作為繪圖引擎,由此可見它的強大和吸引力。Cario支援X Window,Quartz,Win32,image.buffers,PostScript,PDF和SVG檔案等多種輸出裝置,