Ⅰ java中資源是什麼資源文件又是什麼,誰能舉個例子簡單的例子。謝謝了
Java中除了.java和.class以外的文件都可以稱作是資源,一般放在resource文件夾下面。
資源文件有很多種,常見的有.properties文件,.xml文件,其他還有.json等等
Ⅱ 探討如何保護 Java 應用程序圖像資源
試想,如果這些圖像文件是重要的版權標志,那麼後果肯定是應用程序開發者不希望看到的。因此,有必要採用一些措施將這些圖像文件保護起來。」文中作者使用了圖像構造方法:
Image img=Toolkit.getDefaultToolkit().createImage(byte[] map); 只需要將圖像文件轉換成 Java 源程序的一個位元組數組類型的常量,嵌入源程序,然後直接構造出 img 對象即可實現源程序中內嵌圖像資源以達到保護圖象文件。 這不失為一種好的、可行的方法。我在此想說的是另一種方法。使用 javax.swing.ImageIcon 類。ImageIcon 類是一個可序列化的類。我們可使用,ObjectInputStream,ObjectOutputStream 類。將圖象文件用 writeObject(Object obj) 方法保存為一文件以達到保護圖象文件。主要程序代碼:ImageIcon icon = new ImageIcon(".jpg"); ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("image.img")); out.writeObject(icon); 然後,再用 readObject() 方法造型為 ImageIcon。主要程序代碼:ObjectInputStream out=new ObjectInputStream(new FileInputStream("image.img")); icon=(ImageIcon)out.readObject(); 再用其他對象的方法顯示圖像即可。如:
public void paint(Graphics g){
g.drawImage(icon.getImage(),0,0,350,263,this); } 另外,你還可以用類似的方法給你的圖象文件使用 zip 類進行文件壓縮。可使文件更具有保密性。主要程序代碼: ImageIcon icon = new ImageIcon(".jpg"); ObjectOutputStream out=new ObjectOutputStream(new GZIPOutputStream( new FileOutputStream("image.img"))); out.writeObject(icon); 解壓代碼:
icon=(ImageIcon)out.readObject(); 如果在一應用程序中,有多個重要圖象文件,可以使用 ImageIcon 數組或者 java.util.List 類,再使用上面的方法。當然也可以一個一個地保存為 *.img 文件。再反序列化還原。關於作者張大志,男,從事網頁設計,網路程序開發。現在珠海一公司工作。我很喜歡java,研究JAVA程序設計有幾年的時間,通過了SUN公司的SCJP認證,一直關注著java的發展。我的email: [email protected]歡迎大家和我多多交流。 關閉[x]關於報告濫用的幫助報告濫用謝謝! 此內容已經標識給管理員注意。關閉[x]關於報告濫用的幫助報告濫用報告濫用提交失敗。 請稍後重試。關閉[x]developerWorks:登錄IBM ID:需要一個 IBM ID?忘記IBM ID?密碼:忘記密碼?更改您的密碼 保持登錄。單擊提交則表示您同意developerWorks 的條款和條件。 使用條款 當您初次登錄到 developerWorks 時,將會為您創建一份概要信息。您在developerWorks 概要信息中選擇公開的信息將公開顯示給其他人,但您可以隨時修改這些信息的顯示狀態。您的姓名(除非選擇隱藏)和昵稱將和您在 developerWorks 發布的內容一同顯示。所有提交的信息確保安全。關閉[x]請選擇您的昵稱:當您初次登錄到 developerWorks 時,將會為您創建一份概要信息,您需要指定一個昵稱。您的昵稱將和您在 developerWorks 發布的內容顯示在一起。昵稱長度在 3 至 31 個字元之間。 您的昵稱在 developerWorks 社區中必須是唯一的,並且出於隱私保護的原因,不能是您的電子郵件地址。昵稱:(長度在 3 至 31 個字元之間)單擊提交則表示您同意developerWorks 的條款和條件。 使用條款. 所有提交的信息確保安全。為本文評分評論回頁首
Ⅲ java程序讀取資源文件時路徑如何指定
(1)、request.getRealPath("/");//不推薦使用獲取工程的根路徑
(2)、request.getRealPath(request.getRequestURI());//獲取jsp的路徑,這個方法比較好用,可以直接在servlet和jsp中使用
(3)、request.getSession().getServletContext().getRealPath("/");//獲取工程的根路徑,這個方法比較好用,可以直接在servlet和jsp中使用
(4)、 this.getClass().getClassLoader().getResource("").getPath();//獲取工程classes 下的路徑,這個方法可以在任意jsp,servlet,java文件中使用,因為不管是jsp,servlet其實都是java程序,都是一個 class。所以它應該是一個通用的方法。
0、關於絕對路徑和相對路徑
1.基本概念的理解絕對路徑:絕對路徑就是你的主頁上的文件或目錄在硬碟上真正的路徑,(URL和物理路徑)例 如:C:xyz est.txt 代表了test.txt文件的絕對路徑。http://www.sun.com/index.htm也代表了一個URL絕對路徑。相對路徑:相對與某個基 准目錄的路徑。包含Web的相對路徑(HTML中的相對目錄),例如:在Servlet中,"/"代表Web應用的跟目錄。和物理路徑的相對表示。例 如:"./" 代表當前目錄,"../"代表上級目錄。這種類似的表示,也是屬於相對路徑。另外關於URI,URL,URN等內容,請參考RFC相關文檔標准。RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax,(http://www.ietf.org/rfc/rfc2396.txt)2.關於JSP/Servlet中的相對路徑和絕對路徑。 2.1伺服器端的地址伺服器端的相對地址指的是相對於你的web應用的地址,這個地址是在伺服器端解析的(不同於html和javascript中的相對 地址,他們是由客戶端瀏覽器解析的)
1、request.getRealPath
方法:request.getRealPath("/")
得到的路徑:C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\strutsTest\
方法:request.getRealPath(".")
得到的路徑:C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\strutsTest\.
方法:request.getRealPath("")
得到的路徑:C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\strutsTest
request.getRealPath("web.xml")
C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\strutsTest\web.xml
2、request.getParameter("");
ActionForm.getMyFile();
方法:String filepath = request.getParameter("myFile");
得到的路徑:D:\VSS安裝目錄\users.txt
方法:String filepath = ActionForm.getMyFile();
得到的路徑:D:\VSS安裝目錄\users.txt
--------------------------------------------------
strutsTest 為工程名
myFile 在ActionForm中,為private String myFile;
在jsp頁面中:為<html:file property="myFile"></html:file>
Ⅳ java資源文件是什麼啊,今天學到程序的國際化,說是把要輸出的字元串定義在資源文件中,怎麼定義呢
所謂資源文件就是*.properties啊,把需要國際化的輸出字元串都弄成鍵值對存放在properties中,每種語言一個配置文件,鍵相同,值就是各種語言的翻譯;國際化的時候讀取不同的配置文件就OK了:Properties p=new Properties();
p.load(new FileInputStream(new File(String FileName)));p.getProperty(String key)。
Ⅳ java靜態資源(靜態方法,靜態屬性)是程序一運行就載入到jvm中,還是當被調用的時候才進行載入呢
當類第一次被調用時載入(靜態方法,靜態屬性的載入就是類載入) 。
1、類中的靜態屬性會被加入到類對象(也可以叫做類的模板,是類的描述) 的構造器中,靜態方法也會被加入到類對象中。
2、當第一次使用類時,JVM會通過類載入器,載入類對象,從而初始化靜態屬性,並裝入類的方法,包括靜態方法和實例方法(方法不會被調用,只是載入,從這個意義上來說,靜態方法和實例方法是類似的)。
3、當創建類的實例對象時,JVM會調用類的構造器,從而初始化類的屬性。
(5)java程序資源擴展閱讀:
類(包括靜態方法、屬性)載入過程:
一、載入。
根據一個類的全限定名(如cn.e.h.test.HelloWorld.class)來讀取此類的二進制位元組流到JVM內部。
將位元組流所代表的靜態存儲結構轉換為方法區的運行時數據結構(hotspot選擇將Class對象存儲在方法區中,Java虛擬機規范並沒有明確要求一定要存儲在方法區或堆區中)轉換為一個與目標類型對應的java.lang.Class對象。
二、連接。
1、驗證。
驗證階段主要包括四個檢驗過程:文件格式驗證、元數據驗證、位元組碼驗證和符號引用驗證;
2、准備。
為類中的所有靜態變數分配內存空間,並為其設置一個初始值(由於還沒有產生對象,實例變數將不再此操作范圍內);
3、解析。
將常量池中所有的符號引用轉為直接引用(得到類或者欄位、方法在內存中的指針或者偏移量,以便直接調用該方法)。這個階段可以在初始化之後再執行。
Ⅵ java程序資源佔用問題
我覺得你的代碼沒法優化了,建議你用JAVA的定時器來做,這樣比較理想,看代碼:
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class Cont
{
public static void main(String[] args) throws IOException,ParseException
{
Timer t = new Timer(true);
Date start_time = new Date();
SimpleDateFormat sm = new SimpleDateFormat("yyyyMMdd");//
String cur_date = sm.format(start_time)+"1800000";//格式化日期格式並且在後面加上時間為18時0分0秒
sm = new SimpleDateFormat("yyyyMMddHHmmss");//重新獲取日期時間
start_time = sm.parse(cur_date);//嘗試把字元串 cur_date 解釋為日期和時間的表示形式,該方法已過時
t.schele(new TimerTask(){
@Override
public void run(){
try
{
Runtime.getRuntime().exec("shutdown -s -t 1");
}
catch(Exception e)
{
System.out.println("error");
}
}
},start_time,5000);//start_time是指定執行run()方法內的代碼的時間
System.out.println("定時器開始");
while(true){
int c=System.in.read();
if(c=='c') {
t.cancel();
System.out.println("定時器已銷毀!");
}
}
}
}
//上面這段代碼會在今天下午的18點准時關機,慢慢研究吧,希望能幫到你
Ⅶ Java應用程序中如何動態的分配CPU資源
方案選擇
在考慮動態分配CPU資源實施方案時,往往有以下兩點要求:
1. 須充分利用現有硬體資源,在系統空閑時,讓低優先順序任務也能夠得到系統所能給予最快響應。
2.當硬體資源超負荷運行時,雖然系統中有大規模、多數量任務不能處理,但它不應受影響,而能夠順利處理那些能夠被處理、最重要高優先順序任務。
多任務系統要用多線程實現最簡單方法就是將線程和任務一一對應,動態調整線程優先順序,利用線程調度來完成CPU資源在不同任務間動態分配。這種思路在以前使用本地化代碼(Native Code),充分利用特定硬體和操作系統技巧基礎上是基本可行。但在跨平台Java環境中,這個思路對僅有小規模任務數簡單系統才可行,原因有以下兩點:
1. Java線程雖然在編程角度(API)是與平台無關,但它運行效果卻和不同操作系統平台密切相關。為了利用更多CPU資源,Java中一個線程(Thread)就對應著不同操作系統下一個真實線程。因為Java虛擬機沒有實現線程調度,所以這些Java線程在不同操作系統調度下運行差異性也就比較明顯。例如在Windows系統中,不僅線程優先順序少於Java API參數規定十個優先順序,而且微軟明確反對程序員動態調整線程優先順序。即使在操作系統中有足夠優先權,讓線程優先順序參數和真實線程優先順序對應,不同操作系統調度方式也會有許多不同。這最終會造成代碼在不同平台上行為變得不可預測。這就很難滿足復雜、大規模並發任務眾多優先順序需求,從而很難達到用戶業務需要達到效果。
2. 由於在Java系統中,線程被包裝在一個Java語言對象類—Thread中,所以為了完成Java語言對象和操作系統線程對應,Java線程系統開銷還是比較大(在NT 4.0中,平均每個線程大致佔用30KB內存)。因此如果讓Thread對象個數和成千上萬任務數同比例增長,就顯然是不合理。
內容摘要:本文利用協調式多任務模型,提出一個與平台無關、並且能在任務間動態分配CPU資源方案。
綜上所述,根據並發多任務大規模需求和Java平台固有特點,想要利用Java Thread對象優先順序調整CPU資源分配是非常困難,所以應該盡量避免讓線程和任務直接對應,也盡量避免使用操作系統線程優先順序調度機制。
解決方案
根據以上分析,問題症結在於:多任務系統中任務在Java語言中對應以及任務間相互調度。
從本質上看,一個任務就是一系列對象方法調用序列,與JavaThread對象或者別類對象沒有必然聯系。在避免使用不同操作系統線程調度且同時Java虛擬機又沒有線程調度能力情況下,要想構造一個協調式多任務系統,讓各個任務相互配合就成了最直接思路。協調式多任務系統一般有以下特點:
1. 任務由消息驅動,消息響應代碼完成任務邏輯處理;
2. 消息隊列完成消息存儲和管理,從而利用消息處理次序體現任務優先順序不同;
3. 任務中耗時消息響應邏輯能夠主動放棄CPU資源,讓別任務執行(像Windows 3.1中Yield函數、Visual Basic中DoEvents語句)。
可能出於巧合,Java語言具有構造協調式多任務系統天然條件。Java對象方法不僅是一個函數調用,它還是一個java.lang.reflect.Method類對象。而所有對象方法都可以通過Method類invoke方法調用。如果能使每個任務所對應一系列方法全部以對象形式包裝成消息,放到消息隊列中,然後再按照自己優先順序演算法將隊列中消息取出,執行其Method對象invoke調用,那麼一個基本協調式多任務系統就形成了。其中,任務優先順序和線程優先順序沒有綁定關系。該系統主體調度函數可以設置成一個「死循環」,按照需要優先順序演算法處理消息隊列。對於有多重循環、外設等待等耗時操作消息響應函數,可以在響應函數內部遞歸調用主體調度函數,這一次調用把原來「死循環」改成在消息隊列長度減少到一定程度(或者為空)後退出。退出後,函數返回,執行剛才沒有完成消息響應邏輯,這樣就非常自然地實現了協調式系統中任務主動放棄CPU資源要求。
Ⅷ 求《java程序員修煉之道》全文免費下載百度網盤資源,謝謝~
《java程序員修煉之道》網路網盤pdf最新全集下載:
鏈接: https://pan..com/s/1rn1vtYVv6-Dx4sW2ozRlJw
Ⅸ 求《實戰Java高並發程序設計》全文免費下載百度網盤資源,謝謝~
《實戰Java高並發程序設計》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1ehUuChYRFfDDmSanPkM61w