❶ 如何獲取到java對象所在的內存地址
1、首先打開java構造方法代碼。
(1)java取物理地址擴展閱讀
當使用80386時,必須區分以下三種不同的地址:
邏輯地址:機器語言指令仍用這種地址指定一個操作數的地址或一條指令的地址。這種定址方式在Intel的分段結構中表現得尤為具體,它使得MS-DOS或Windows程序員把程序分為若干段。每個邏輯地址都由一個段和偏移量組成。
線性地址:針對32位CPU,線性地址是一個32位的無符號整數,可以表達高達2³² (4GB)的地址。通常用16進製表示線性地址,其取值范圍為0x00000000~0xffffffff。對64位CPU,線性地址是一個64位的無符號整數,可以表達高達2⁶⁴ 。
物理地址:也就是內存單元的實際地址,用於晶元級內存單元定址。物理地址也由32位無符號整數表示。
電腦的內存(尤其是指主存)是由許多「內存地址」所組成的,每個內存地址都有一個「物理地址」,能供CPU(或其他設備)訪問。一般,只有如BIOS、操作系統及部分特定之公用軟體(如內存測試軟體)等系統軟體;
能使用機器碼的運算對象或寄存器對物理地址定址,指示CPU要求內存控制器之類的硬體設備,使用內存匯流排或系統匯流排,亦或分別之控制匯流排、地址匯流排及數據匯流排,運行該程序之命令。
內存控制器的匯流排是由數條並行的線路所組成的,每條線路表示一個比特。匯流排的寬度因此依電腦不同,決定了可定址之存儲單位數量,以及每一單位內的比特數量。
計算機程序使用內存地址來運行機器碼、存儲及截取數據。大多數的應用程序無法得知實際的物理地址,而是使用電腦的內存管理單元及操作系統的內存映射,為「邏輯地址」或虛擬地址定址。
❷ java 如何獲取物理地址
物理地址?你要做嗅探器呀,我以前做過抓包的還有嗅探器,現在忘了
❸ java中怎麼獲取電腦的mac地址
importjava.net.InetAddress;
importjava.net.NetworkInterface;
importjava.net.SocketException;
importjava.net.UnknownHostException;
/*
*物理地址是48位,別和ipv6搞錯了
*/
publicclassLOCALMAC{
/**
*@paramargs
*@throwsUnknownHostException
*@throwsSocketException
*/
publicstaticvoidmain(String[]args)throwsUnknownHostException,SocketException{
//TODOAuto-generatedmethodstub
//得到IP,輸出PC-201309011313/122.206.73.83
InetAddressia=InetAddress.getLocalHost();
System.out.println(ia);
getLocalMac(ia);
}
privatestaticvoidgetLocalMac(InetAddressia)throwsSocketException{
//TODOAuto-generatedmethodstub
//獲取網卡,獲取地址
byte[]mac=NetworkInterface.getByInetAddress(ia).getHardwareAddress();
System.out.println("mac數組長度:"+mac.length);
StringBuffersb=newStringBuffer("");
for(inti=0;i<mac.length;i++){
if(i!=0){
sb.append("-");
}
//位元組轉換為整數
inttemp=mac[i]&0xff;
Stringstr=Integer.toHexString(temp);
System.out.println("每8位:"+str);
if(str.length()==1){
sb.append("0"+str);
}else{
sb.append(str);
}
}
System.out.println("本機MAC地址:"+sb.toString().toUpperCase());
}
}
❹ java怎樣取得網卡物理地址
InetAddress ip = InetAddress.getLocalHost();
NetworkInterface network = NetworkInterface.getByInetAddress(ip);
byte[] mac = network.getHardwareAddress();
System.out.print("Current MAC address : ");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < mac.length; i++) {
sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));
}
System.out.println(sb.toString());
試試,應該是有效的
❺ java如何獲取硬碟物理地址
有個笨方法:new File(""); 獲取當前文件的絕對路徑,然後用String類中的split方法截取即可。
❻ 如何在 Java 代碼中獲得 WebRoot 的物理路徑
今天要解析 IK Expression 的 IKExpression.cfg.xml 文件,以解析其中系統函數默認配置和用戶函數配置,於是又遇到了一個老問題:Java Web 開發中如何獲取部署目錄下 WEB-INF 中 classes 的物理路徑(網上也有同行描述為:獲取伺服器中當前WebRoot的物理路徑)?
閑話不多說,我先附上代碼片段:
1 pathStr = this.getClass().getClassLoader().getResource("").getPath();
2 // 對 Windows 下獲取 物理路徑 做 特殊處理
3 if("\\".equals(File.separator)) {
4 pathStr = pathStr.substring(1).replaceAll("/", "\\\\");
5 }
❼ java 項目如何獲取項目所在的物理根路徑
request.getSession().getServletContext().getRealPath("/")
❽ 怎麼用JAVA讀取電腦的物理地址(不能更改的物理地址)
java直接是讀不了的,可以通過jni來實現,用c來讀取
❾ 在java中怎麼獲取頁面的路徑
這裡面我把se跟ee方面獲取路徑的給你列舉出來了,希望對你有用
Java中使用的路徑,分為兩種:絕對路徑和相對路徑。歸根結底,Java本質上只能使用絕對路徑來尋找資源。所有的相對路徑尋找資源的方法,都不過是一些便利方法。不過是API在底層幫助我們構建了絕對路徑,從而找到資源的!
在開發Web方面的應用時, 經常需要獲取伺服器中當前WebRoot的物理路徑。
如果是Servlet , Action , Controller, 或者Filter , Listener , 攔截器等相關類時, 我們只需要獲得ServletContext, 然後通過ServletContext.getRealPath("/")來獲取當前應用在伺服器上的物理地址。
如果在類中取不到ServletContext時,有兩種方式可以做到:
1)利用Java的類載入機制:調用 XXX.class.getClassLoader().getResource(""); 方法來獲取到ClassPath , 然後處理獲得WebRoot目錄。
這種方式只能是該class在WebRoot/WEB-INF/classes下才能生效, 如果該class被打包到一個jar文件中, 則該方法失效。這時就應該用下面一種方式。
2)spring框架的思路,在WEB-INF/web.xml中,創建一個webAppRootKey的param,指定一個值(默認為webapp.root)作為鍵值,然後通過Listener, 或者Filter,或者Servlet 執行String webAppRootKey = getServletContext().getRealPath("/"); 並將webAppRootKey對應的webapp.root 分別作為Key,Value寫到System Properties系統屬性中。之後在程序中通過System.getProperty("webapp.root")來獲得WebRoot的物理路徑。
根據第二種的思路,我們還可以再擴展一下。不過對於在部署在一台伺服器中的應用來說,若還不是你所需請再往下看。
下面是一些得到classpath和當前類的絕對路徑的一些方法。你可使用其中的一些方法來得到你需要的資源的絕對路徑:
1.DebitNoteAction.class.getResource("")
得到的是當前類FileTest.class文件的URI目錄。不包括自己!
如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
atacarnet/src/com/evi/moles/atacarnet/action/
2.DebitNoteAction.class.getResource("/")
得到的是當前的classpath的絕對URI路徑。
如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
3.Thread.currentThread().getContextClassLoader().getResource("")
得到的也是當前ClassPath的絕對URI路徑
如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
推薦使用該方法獲取。
4.DebitNoteAction.class.getClassLoader().getResource("") 或ClassLoader.getSystemResource("")
得到的也是當前ClassPath的絕對URI路徑。
如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
5.取得伺服器相對路徑
System.getProperty("user.dir")
例如:E:\apache-tomcat-5.5.16\apache-tomcat-5.5.16\bin
6.取得項目中的絕對路徑
一般用request.getRealPath("/")或request.getRealPath("/config/")
但現在不提倡使用request.getRealPath("/")了,大家可試用ServletContext.getRealPath("/")方法得到Web應用程序的根目錄的絕對路徑。
要取得src的文件非常容易,因為src是默認的相對目錄,比如你說要取得src下com目錄的test.java文件,你只需要這樣就夠了
File f = new File(com/test.java);
但如果我要取得不在src目錄或者WebRoot目錄下的文件呢,而是要從src或者WebRoot同級的目錄中取呢,比如說doc吧。
我的硬方法是這樣實現的:
String path = this.getServletContext().getRealPath("/");
Properties p = new Properties();
p.load(new FileInputStream(new File(path.substring(0,(path.lastIndexOf("\\WebRoot") + 1)) + "doc/db.properties")));
System.out.println(p.getProperty("driverName"));
-------------------------------
另:Request中getContextPath、getServletPath、getRequestURI、getRequestURL、getRealPath的區別
假定你的web application 名稱為news,你在瀏覽器中輸入請求路徑:http://localhost:8080/news/main/list.jsp
則執行下面向行代碼後列印出如下結果:
1、 System.out.println(request.getContextPath());
列印結果:/news
2、System.out.println(request.getServletPath());
列印結果:/main/list.jsp
3、 System.out.println(request.getRequestURI());
列印結果:/news/main/list.jsp
4、System.out.println(request.getRequestURL());
列印結果:http://localhost:8080/news/main/list.jsp
5、 System.out.println(request.getRealPath("/"));
列印結果:F:\Tomcat 6.0\webapps\news\test