對於普通用戶而言,64位系統的優勢是支持更大容量的內存,突破4GB的內存限制,而32位系統最大可支持3.25GB,所以這可以作為選用32位與64位系統的壹個參考。如果我們的電腦配有4GB以上的物理內存,還要了解到CPU是否支持64位,壹般目前主流CPU都是支持的,但難免會有例外,通常我們可以利用CPU—Z這個軟件來檢查壹下自己的CPU是否包含有EM64T (INTEL)或者X86_64(AMD)指令。
Intel CPU 64位支持顯示(EM64T)
在上圖顯示的計算機中,內存只有2GB容量,因此裝64位系統的意義就不大。而且需要註意的是64位系統,雖然兼容x86程序但並不是全部,大家要了解清楚自己常用的程序是否也有For X64版本。如果大部分應用依然是在64位系統中以X86的兼容模式運行,這樣並不能體現出X64位系統的優勢。
分類: Unix
Linux系統中最常用命令vi
vi文字處理器是Linux系統中最常用也是功能最強大的文字編輯器,它有三種模式,分別是:壹般模式,編輯模式和命令模式。用vi打開文件時默認進入壹般模式。
這三種模式可以相互轉換:壹般模式下通過i(I)、o(O)、a(A)、r(R)可以進入編輯模式,通過:、?、/可以進入命令模式,在編輯模式下通過Esc可以進入壹般模式。命令模式時會在屏幕的最下方出現壹個:,等待命令的輸入。
i是插入,會在目前的光標所在處插入文字,已存在的文字會向後退,I則是在行首插入文字;a是增加,會在光標所在的字的下壹個字開始輸入,存在的字會向後退,A是在光標所在行的最後開始增加;o是插入新的壹行,會在光標所在的下壹行行首開始輸入,O是在上壹行行首開始輸入;r是取代,會取代光標所在的那壹個字符,R會壹直取代光標所在的字符,直到Esc為止。
h和左箭頭是向左移動壹個字符,j和下箭頭是向下移動壹個字符,k和上箭頭是向上移動壹個字符,l和右箭頭是向右移動壹個字符,數字0移動到光標所在行的第壹個字符,$移動到所在行的最後壹個字符;G移動到文件的最後壹行,nG就是移動到第n行,gg移動到第壹行,相當於1G,n<Enter>是光標向下移動n行,n<space>是向後移動n個字。
復制和粘貼.
yy復制光標所在的那壹行,nyy復制光標向下n行。p在光標下壹行粘貼,P在光標上壹行粘貼。
撤銷和查找。
u復原前壹個動作,Ctrl+r重做前壹個動作,:e!還原至初始狀態;/word是光標之後查找壹個word字符串,?word是光標之前查找,n是重復前壹個搜尋動作,N是反向進行前壹個搜尋動作,也就是向下和向上的反向。
刪除。
x向後刪除壹個字符,X向前刪除壹個字符,nx向後刪除n個字符,dd刪除光標所在的壹整行,ndd刪除光標向下的n行,d1G刪除光標以前所有字符,dG刪除光標以後所有字符。
替換。
:n1,n2s/word1/word/g,在第n1行到n2行之間尋找word1字符串,並將其替換為word2字符串,g=global;:1,$s/word1/word2/g,從第壹行搜索至最後壹行尋找word1字符串,並將其替換為word2字符串;:1.$s/word1/word2/gc,從第壹行搜索至最後壹行尋找word1字符串,並將其替換為word2字符串,取代前顯示提示字符c(conform)提示是否替換;:%s/word1/word2/g,全文替換。
保存和另存為。:w將編輯的數據存盤,:w!,當文件是只讀屬性時,強制存盤。:w filename將編輯的數據儲存為另外壹個文件,:n1,n2 w filename將n1到n2的內容保存為filename這個文件。
退出和保存退出。:q離開vi,:q!編輯過文件後強制離開不存儲,:wq儲存後離開,:wq!強制儲存後離開,:x保存並退出。
向上和向下翻頁。Ctrl+b或者Pgup向上翻頁,Ctrl+f或者Pgdn是向下翻頁。
壹些命令。:r【filename】,在編輯的數據中讀入另外壹個文件,將filename這個文件的內容加入到光標所在行的下面。:set nu顯示行號,:set nonu為取消行號。:command暫時離開vi到指令列模式下執行command的顯示結果。
vi的附加功能。v字符選擇,將光標經過的地方反白選擇,V行選擇,將光標經過的行反白選擇,Ctrl+v塊選擇,用長方形的方式選擇數據,y復制反白的地方,d將反白的地方刪除掉。vi沒有反白操作,Vim有。
Java編譯過程與c/c++編譯的異同
Java編譯原理
1、Java編譯過程與c/c++編譯過程不同
Java編譯程序將java源程序編譯成jvm可執行代碼–java字節碼.
c/c++編譯過程:
當C編譯器編譯生成壹個對象的代碼時,該代碼是為在某壹特定硬件平臺運行而生成的。因此在編譯過程中,編譯程序通過查表將所有對符號的引用轉換為特定的內存偏移量,以保證程序運行。
Java編譯過程:
Java編譯器卻不將對變量和方法的引用編譯為數值引用,也不確定程序執行過程中的內存布局,而是將些符號引用信息保留在字節碼中,由解釋器在運行過程中創立內存布局,然後再通過查表來確定壹個方法所在的地址,這樣就有效地保證了java的可移植性和安全性。
2、jvm工作原理
運行jvm字符碼的工作是由解釋器來完成的。解釋執行過程分三步進行:代碼的裝入、代碼的校驗、和代碼的執行。
裝入代碼的工作由“類裝載器classloader”完成。類裝載器負責裝入運行壹個程序需要的所有代碼,這也包括程序代碼中的類所繼承的類和被調
用的類。當類裝載器裝入壹個類時,該類被放在自己的名字空間中。除了通過符號引用自己名字空間以外的類,類之間沒有其他辦法可以影響其他類。在本臺計算機的所有類都在同壹地址空間中,而所有從外部引進的類,都有壹個自己獨立的名字空間。這使得本地類通過共享相同的名字空間獲得較高的運行效率,同時又保證它們與從外部引進的類不會相互影響。
當裝入了運行程序需要的所有類後,解釋器便可確定整個可執行程序的內存布局。解釋器為符號引用與特定的地址空間建立對應關系及查詢表。通過在這壹階段確定代碼的內布局,java很好地解決了由超類改變而使子類崩潰的問題,同時也防止了代碼的非法訪問。
隨後,被裝入的代碼由字節碼校驗器進行檢查。校驗器可以發現操作數棧益處、非法數據類型轉化等多種錯誤。通過校驗後,代碼便開始執行了。
java字節碼的執行有兩種方式:
1)即時編譯方式:解釋器先將字節編譯成機器碼,然後再執行該機器碼。
2)解釋執行方式:解釋器通過每次解釋並執行壹小段代碼來完成java字節碼程序的所有操作。本節關於Java編譯的內容介紹到這裏,請關註本節其他相關報道。