Time of Update: 2018-12-05
棧與堆都是Java用來在Ram中存放資料的地方。與C++不同,Java自動管理棧和堆,程式員不能直接地設定棧或堆。 Java的堆是一個運行時資料區,類的(對象從中分配空間。這些對象通過new、newarray、anewarray和multianewarray等指令建立,它們不需要程式碼來顯式的釋放。堆是由記憶體回收來負責的,堆的優勢是可以動態地分配記憶體大小,生存期也不必事先告訴編譯器,因為它是在運行時動態分配記憶體的,Java的垃圾收集器會自動收走這些不再使用的資料。但缺點是,由於要在運行時動
Time of Update: 2018-12-05
第一步 充分理解Socket 1.什麼是socket 所謂socket通常也稱作"通訊端",用於描述IP地址和連接埠,是一個通訊鏈的控制代碼。應用程式通常通過"通訊端"向網路發出請求或者應答網路請求。
Time of Update: 2018-12-05
Java的記憶體模型中Thread會附有自己的堆棧,寄存器,必要時需要和主存即heap之間同步。 可以使用Synchornized關鍵字和Concurrent包中的Lock可以保證線程互斥和可見度。 互斥性體現在類鎖或者對象鎖上,每個對象自身都包含一個監視器,該監視器是一個每次只能被一個線程所擷取進入的臨界區,可以通過wait和notify來退出和准入臨界區。可以看出這是一個生產者-消費者的模型。而Concurrent包中的Lock為了能夠獲得更好的效能和更好的擴充性,以及不依賴於關鍵字的可讀代
Time of Update: 2018-12-05
儘管很少有Java開發人員能夠忽略多線程編程,且Java平台類庫支援它,甚至於更少的開發人員能有時間去深入學習線程。相反,我們只是泛泛地學習線程,如果需要的話,會向我們的工具箱中添加新的技巧和技術。通過這種方法你可能會構建且運行好的應用程式,但你還能做得更好。理解Java編譯器和JVM的線程特性,可以協助你編寫更高效,效能更佳的Java代碼。 在5
Time of Update: 2018-12-05
Mozilla Public LicenseMPL License,允許免費重發布、免費修改,但要求修改後的代碼著作權歸軟體的發起者。這種授權維護了商業軟體的利益,,它要求基於這種軟體得修改無償貢獻著作權給該軟體。這樣,圍繞該軟體得所有代碼得著作權都集中在發起開發人得手中。但MPL是允許修改,無償使用得。MPL軟體對連結沒有要求。BSD開源協議 BSD開源協議是一個給於使用者很大自由的協議。可以自由的使用,修改原始碼,也可以將修改後的代碼作為開源或者專有軟體再發布。
Time of Update: 2018-12-05
在網上看了很多有關序列化的文章,我自己也寫了兩篇,現在感覺這些文章都沒有很好的把序列化說清楚(包括我自己在內),所以在此我將總結前人以及自己的經驗,用更淺顯易懂的語言來描述該機制,當然,仍然會有不好的地方,希望你看後可以指出,作為一名程式員應該具有不斷探索的精神和強烈的求知慾望!序列化概述: 簡單來說序列化就是一種用來處理物件流程的機制,所謂物件流程也就是將對象的內容進行流化,流的概念這裡不用多說(就是I/O),我們可以對流化後的對象進行讀寫操作,也可將流化後的對象傳輸於網路之間(
Time of Update: 2018-12-05
blackdown 的jdk 總是比sun 慢了一拍,針對debian封裝更新太慢,非官方的java-package的產生的.deb不盡人意,一些常用的命令沒有加入到path,本文主要參考debian java faq1、擷取jdk.從sun的官方網站下載最新的jdk 1.5 update2, http://java.sun.com。注意,要下載解壓版本。# su root切換到 超級使用者(也可以用sudo 來取得超級使用者權限),進入下載目錄# chmod a+x jdk-1_5_0_02-
Time of Update: 2018-12-05
Java的堆是一個運行時資料區,類的(對象從中分配空間。這些對象通過new、newarray、anewarray和multianewarray等 指令建立,它們不需要程式碼來顯式的釋放。堆是由記憶體回收來負責的,堆的優勢是可以動態地分配記憶體大小,生存期也不必事先告訴編譯器,因為它是在運行時 動態分配記憶體的,Java的垃圾收集器會自動收走這些不再使用的資料。但缺點是,由於要在運行時動態分配記憶體,存取速度較慢。
Time of Update: 2018-12-05
-------android培訓、java培訓、期待與您交流!
Time of Update: 2018-12-05
隨便給你一個日期(例如2009-8-20),問這一天是否是“星期六”? 問我的時候沒什麼思路,回來也沒太想明白?算也行. Java code public int getWeek(int dYear,int dMonth,int dDay){ int days=0; int[] months=; if(dYear%400==0||dYear%4==0&&dYear%100!=0){ months[2]=29; }
Time of Update: 2018-12-05
問題概述:每個ClassLoader本身只能分別載入特定位置和目錄中的類,但是,ClassLoader被設計成了一種委託模式,使得某一個ClassLoader可以委託它的父級類裝載器去載入類,從而讓應用程式可以藉助某一個子級的ClassLoader去多個位置和目錄中進行類的載入。這就好比“兒子”除了可以花自己的錢,他還可以花“父親”的錢,“父親”又可以花“父親的父親”的錢,所以,最終能通過“兒子”花出去的錢包括他曆代前輩的錢。類裝載器一級級委託到BootStrap類載入器,當BootStrap無
Time of Update: 2018-12-05
轉載自www.java3z.com 作者:不詳 我們一般的java運行計時代碼是: long begintime = System.currentTimeMillis(); //運算代碼 long endtinme=System.currentTimeMillis(); long costTime = (endtime -
Time of Update: 2018-12-05
鏈表 程式碼class Node { Object item; Node next; Node (Object v) { item = v; next = null; }}頭指標,空尾指標初始化:head = null;在x後插入t:if ( x == null){ head = t; head.next = null; }else { t.next = x.next; x.next = t; } 移走x之後的結點:t = x.next; x.next = t.next;迴圈遍曆:for (
Time of Update: 2018-12-05
Java Deep Clone Shallow Clone 深複製和淺複製為什麼要用Clone?Java通過傳遞控制代碼來傳參數。當你傳遞一個對象時實際上是傳遞了一個方法外的物件控點,因此當你對方法內的控制代碼做任何改變的時候實際上就是修改了方法外的對象。此外:Aliasing happens automatically during argument passing. 別名操作在對象傳遞過程中自動進行There are no local objects, only local handles.
Time of Update: 2018-12-05
先看一下項目的目錄結構:source目錄裡放Java來源程式,classes目錄裡放編譯好的class檔案。這兩個目錄裡的檔案都要按包結構組織好。當然,classes目錄也可以不必事先建立,這可以交給Ant去做。以下是我寫的build.xml,放在Hello目錄下:<?xml version="1.0" encoding="UTF-8" ?><project name="hello" default="compile" basedir=".">
Time of Update: 2018-12-05
訊息傳遞系統用於構建高可靠、可伸縮及靈活的分布式應用程式。本文從大體上討論了訊息傳遞系統,簡要敘述了它們的特性及類型,然後描述開發人員如何可以使用 Java Message Service(Java Message Service ,JMS) 編寫基於訊息的應用程式。 正如許多以前在同步、可靠性、延展性和安全性方面的未知問題一樣,分布式應用程式潛在的問題也是不斷增長的。一種解決方案是建立在鬆散耦合組件基礎上的訊息傳遞系統,這些組件之間通過訊息進行通訊。Java Message
Time of Update: 2018-12-05
在實際編程中,往往存在著這樣的“資料集”,它們的數值在程式中是穩定的,而且“資料集”中的元素是有限的。例如星期一到星期日七個資料元素組成了一周的“資料集”,花牌 (春夏秋冬)四個資料元素組成了四季的“資料集”。在Java中想表示這種資料集最容易想到的寫法可能是這樣,我們以表示一周五天的工作日來舉例: Java代碼public class WeekDay { public static final int MONDAY = 1; public static final
Time of Update: 2018-12-05
在命令列中展現特定的檔案夾、檔案以及子檔案夾和子檔案的名稱採用遞迴調用(調用父方法)比較容易實現,下面是範例程式碼:import java.io.*;public class FileList{public static void main(String[] args){File f = new File("d:/A");System.out.println(f.getName());//獲得f檔案夾的名稱tree(f,1);}private static void
Time of Update: 2018-12-05
做了一段時間的效能最佳化,感覺不錯,接觸到了不少基礎知識,也鍛煉了自己的邏輯思維,寫代碼的時候考慮的更加全面一些,自己寫出來的代碼品質也會有所提高,寫完一段代碼會回頭看看是不是有更簡單更優的實現方法,還有也會自動會去考慮遵循一些基本的規範,比如嵌套迴圈不能超過三層、方法和類都要遵循單一職責的原則等等。 下面就將自己這段時間的工作總結一下,記錄的同時也給剛做這方面工作的同志們一些建議,希望能夠快速上手。系統效能最佳化一般分為下面幾步走:1、發現問題
Time of Update: 2018-12-05
下面用了三種演算法實現,執行效率逐漸提高...第一種:public class TestString{public static void main(String[] args){String s = "AdaaaaABBBBdkajfdkfj4dasdWWSDS53#$#addasdfkjsakfls_kjdksADKDJ";int lCount = 0, uCount = 0, oCount = 0;for(int i = 0; i < s.length(); i++)