A. 提一個關於匯編和高級語言的問題
匯編是最接近機器語言的,能直接操作硬體,具有最高的效率,同一問題用匯編編程,所編譯出的代碼是最短小的,匯編的缺點是和人類語法相距甚遠,不直觀,沒有結構化;而高級語言設計的目的就是要容易使用,因此語法接近人類語言,容易理解,採用結構化編程,雖然效率低,代碼冗長,但是檢查維護容易;現在也有中性語言,例如C,就兼顧了匯編和高級語言的優點,既要高效率,又要結構化。一般高級語言做編譯的時候是先編譯成匯編的,然後再次編譯成機器語言,你學一下編譯原理就明白了。
B. 求最短路徑偽代碼,用C語言或C++
java Native Interface(JNI)是Java語言的本地編程介面,是J2SDK的一部分。在java程序中,我們可以通過JNI實現一些用java語言不便實現的功能。通常有以下幾種情況我們需要使用JNI來實現。 標準的java類庫沒有提供你的應用程序所需要的功能,通常這些功能是平台相關的 你希望使用一些已經有的類庫或者應用程序,而他們並非用java語言編寫的 程序的某些部分對速度要求比較苛刻,你選擇用匯編或者c語言來實現並在java語言中調用他們 下面我們開始編寫HelloWorld程序,由於涉及到要編寫c/c++代碼因此我們會在開發中使用Microsoft VC++工具。編寫java代碼,我們在硬碟上建立一個hello目錄作為我們的工作目錄,首先我們需要編寫自己的java代碼,在java代碼中我們會聲明native方法,代碼非常簡單。如下所示 class HelloWorld public static void main(String[] args) } 注意我們的displayHelloWorld()方法的聲明,它有一個關鍵字native,表明這個方法使用java以外的語言實現。方法不包括實現,因為我們要用c/c++語言實現它。注意System.loadLibrary("hello")這句代碼,它是在靜態初始化塊中定義的,系統用來裝載hello共享庫,這就是我們在後面生成的hello.dll(如果在其他的操作系統可能是其他的形式,比如hello.so) 編譯java代碼 javac HelloWorld.java 生成HelloWorld.class文件 創建.h文件 這一步中我們要使用javah命令生成.h文件,這個文件要在後面的c/c++代碼中用到,我們運行 javah HelloWorld。這樣我們可以看到在相同目錄下生成了一個HelloWorld.h文件,文件內容如下 在此我們不對他進行太多的解釋。 /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class HelloWorld */ #ifndef _Included_HelloWorld #define _Included_HelloWorld #ifdef __cplusplus extern "C" #endif #endif 編寫本地實現代碼 在這部分我們要用C/C++語言實現java中定義的方法,我們在VC++中新建一個Project,然後創建一個HelloWorldImp.cpp文件,內容如下 #include <jni.h> #include "HelloWorld.h" #include <stdio.h> JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj) 注意我們這里include了 jni.h和剛才得到的HelloWorld.h文件。因此你要在VC++裡面設置好,jni.h在JAVA_HOME/include裡面。編譯通過後再生成hello.dll文件。 運行java程序 把上面生成的hello.dll文件復制到我們的工作目錄,這時候我們的目錄中包括HelloWorld.java,HelloWorld.class和hello.dll文件。運行java HelloWorld命令,則可在控制台看到Hello world| 的輸出了。運行VC++; 文件---新建---選「win32 console application」(控制台程序)---在右方設置好路徑並輸入工程名---確定 接下來的幾個提示框點確定就行了,那是提示是否要用VC++提供的框架之類的 在左邊的工作空間中選「FILEVIEW」標簽項,點開「+」號,右鍵點擊「SOURCE FILES」,選「添加文件到目錄」,此即添加你要建立的C++源程序文件,會提示你沒有文件,是否添加,你點是,輸入文件名保存就OK了 然後SOURCE FILES下就出現了你剛才建立的*.CPP文件,雙擊,輸入代碼. 以下就是
C. 什麼叫底層代碼
底層代碼是指被封裝好的代碼,底層代碼寫的就是比較原始,比較基礎的代碼。底層代碼編寫是非常接近機器的編程,使用底層開發語言(如C或匯編)。這與使用高級語言(例如Python,Java)的程序員進行編程不同。
對於java來說,底層代碼一般是指框架的實現代碼,這些代碼一般都是一些常用代碼或比較接近於原始的代碼,這些代碼封裝好,可以方便復用和調用。而對一些操作系統來說,底層代碼可能就是c或者匯編,寫底層代碼就是做底層開發。比如java的Map類,底層代碼實現:
(3)評估模塊的最短編譯時間代碼擴展閱讀
編寫底層代碼一般要比較深厚的功底,對程序設計,代碼涉及的各個方面,性能,耦合度,復用性都要很深的掌握和考慮,熟練掌握設計模式,良好的編程習慣,代碼優雅,數據結構,精通各種演算法。
很多java框架被淘汰,除了本身有致命的bug外,還有就是有性能更好,使用更方便的框架出現,而這些都是靠底層代碼實現來決定的。
預留100G或以上空間用於存放源碼及編譯產出,本人編譯的KitKat 源碼(帶.repo目錄)+編譯產出在80G左右
E. Keil uVision3 能編譯多大的代碼,我的程序總共700行,編譯的時候卻老是出錯,非要刪除一些才能編譯 如下
一樓說的對,你的KEIL版本是評估板的,有2K可執行文件大小限制,現在KEIL的版本已經初到UV4了,你去官網下載一個,需要注冊,不過是免費注冊的,只是定期向你的注冊郵箱發一些KEIL產品的最新動態之類的。再去網上下載一個KEIL的UV4注冊機就可以破解2K限制了。
F. 執行 make moles時,編譯需要很長時間,很多不需要編譯的東西都被編譯了。
http://www.linuxidc.com/Linux/2012-06/63092.htm
G. C語言模塊的編譯與連接過程
gcc a.c -o a.o -c
gcc b.c -o b.o -c
ld a.o b.o -lcrtdll -o ab.exe
編譯就是把代碼編譯成中間格式(win32、coff、elf等),連接就是把中間格式的文件加上頭組合成真正的可執行程序。編譯的時候檢查語法錯誤,連接的時候檢查連接的庫是否完整,是否所有導入符號都有實際定義等等。
H. java項目開發,一個簡單的增刪改查模塊。預估工作量大概需要多長時間
簡單的增刪改查每個功能大概評估在500行代碼總數就2000行,每人天70行的話。28天完成包括需求文檔的寫作,設計文檔的寫作,測試用例的編寫及代碼開發和單元測試、系統測試時間。