精华内容
下载资源
问答
  • java对象内存地址与hashcode关系

    千次阅读 2020-05-19 12:44:57
    为了比较java对象内存地址与hashcode关系,必须想办法获取这两个 Java不能直接访问操作系统底层,而是通过本地方法来访问。Unsafe类提供了硬件级别原子操作,在java中内存中对象地址是可变,所以获得的...

     

            为了比较java对象的内存地址与hashcode的关系,必须想办法获取这两个值

             Java不能直接访问操作系统底层,而是通过本地方法来访问。Unsafe类提供了硬件级别的原子操作,在java中内存中的对象地址是可变的,所以获得的内存地址有可能会变化。要获得内存地址也只能通过Unsafe的方法来获得,具体下看的代码

     

    package com.test.democlass;
    
    import sun.misc.Unsafe;
    
    import java.lang.reflect.Field;
    
    /**
     * Created by 15002 on 2020/5/19.
     */
    public class AddresserTest {
            private static Unsafe unsafe;
            static {
                try {
                    Field field = Unsafe.class.getDeclaredField("theUnsafe");
                    field.setAccessible(true);
                    unsafe = (Unsafe) field.get(null);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
    
            public static long addressOf(Object o) throws Exception {
                Object[] array = new Object[] { o };
                long baseOffset = unsafe.arrayBaseOffset(Object[].class);
                //arrayBaseOffset方法是一个本地方法,可以获取数组第一个元素的偏移地址
                int addressSize = unsafe.addressSize();
                long objectAddress;
                switch (addressSize) {
                    case 4:
                        objectAddress = unsafe.getInt(array, baseOffset);
                        //getInt方法获取对象中offset偏移地址对应的int型field的值
                        break;
                    case 8:
                        objectAddress = unsafe.getLong(array, baseOffset);
                        //getLong方法获取对象中offset偏移地址对应的long型field的值
                        break;
                    default:
                        throw new Error("unsupported address size: " + addressSize);
                }
                return (objectAddress);
            }
    
            public static void main(String... args) throws Exception {
                String str ="Hello world";
                Object mine = str.toCharArray(); //先把字符串转化为数组对象
                long address = addressOf(mine);
                System.out.println("str的内存地址: " + address);
                System.out.println("str的hashcode: " + str.hashCode());
                // Verify address works - should see the characters in the array in the output
                printBytes(address, 27);
            }
    
            public static void printBytes(long objectAddress, int num) {
                for (long i = 0; i < num; i++) {
                    int cur = unsafe.getByte(objectAddress + i);
                    System.out.print((char) cur);
                }
                System.out.println();
            }
        }
    
    

    运行结果

    str的内存地址: 3804983656
    str的hashcode: -832992604

    所以内存地与hashcode完全不同

     

     

    展开全文
  • [获取HTTP头文件中Host的值: 获取HTTP头文件中accept-encoding的值: <import java.io.IOException;import java.net.InetAddress;import java.net.UnknownHostException;/*获取IP地址*/public class CatchIp{...

    [
    获取HTTP头文件中Host的值:   
    获取HTTP头文件中accept-encoding的值:    <

    import java.io.IOException;

    import java.net.InetAddress;

    import java.net.UnknownHostException;

    /*获取IP地址*/

    public class CatchIp

    {

    private InetAddress LocalIP = null;

    private InetAddress ServerIP = null;

    public static void main(String[] args)

    {

    CatchIp mytest;

    mytest = new CatchIp();

    System.out.println("LocalHost IP is:"+mytest.catchLocalIP());

    System.out.println("Server IP is:"+mytest.catchServerIP());

    }

    //取得本机IP地址

    public InetAddress catchLocalIP()

    {

    try

    {

    LocalIP = InetAddress.getLocalHost();

    } catch (UnknownHostException e)

    {

    }

    return LocalIP;

    }

    //取得服务器网络地址

    public InetAddress catchServerIP()

    {

    try {

    ServerIP = InetAddress.getByName("www.sina.com.cn");

    //取得www.sina.com.cn的IP地址

    } catch (UnknownHostException e)

    {

    System.out.println(e.getMessage());

    }

    return ServerIP;

    }

    }  [问题:因为某项目组在同一个服务器上都是用的同一个登录名和密码,所以项目管理上无法做到具体谁对服务器进行了某些操作,现在的需求是能具体到某个研发人员在这个服务器

    展开全文
  • 在这里我们如果想通过java程序来解析域名获得真实IP的话,可以通过java的InetAddress类来实现。 InetAddress中的getByName方法可以通过传入的字符串(域名)字段获取到"域名/IP"的值,再通过getHost...

    IP地址是Internet主机的作为路由寻址用的数字型标识,人不容易记忆。因而产生了域名(domain name)这一种字符型标识。

    DNS即为域名解析服务。在这里我们如果想通过java程序来解析域名获得真实IP的话,可以通过java的InetAddress类来实现。

    InetAddress中的getByName方法可以通过传入的字符串(域名)字段获取到"域名/IP"的值,再通过getHostAddress()方法可以获得IP地址,

    代码如下:

    //获取本机IP地址  
    System.out.println(InetAddress.getLocalHost().getHostAddress());  
    //获取www.luoruiyuan.cn的地址  
    System.out.println(InetAddress.getByName("www.luoruiyuan.cn").getHostAddress());  
    //获取www.luoruiyuan.cn的真实IP地址  
    System.out.println(InetAddress.getByName("www.luoruiyuan.cn"));  
    //获取配置在HOST中的域名IP地址  
    System.out.println(InetAddress.getByName("www.luoruiyuan.cn").getHostAddress());  

     

    转载于:https://www.cnblogs.com/luoruiyuan/p/9132074.html

    展开全文
  •  当址地栏含有参数,我们可以再标目面页通过window.location.search来获得我们要需参数及其 // 获得址地栏参数数组 function getUrlParams() { var search = window.location.search ; // 写入数据字典

    最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--参数地址栏

        当址地栏含有参数,我们可以再标目面页通过window.location.search来获得我们要需的参数及其值

    // 获得址地栏的参数数组
    function getUrlParams()
    {
        var search = window.location.search ; 
        // 写入数据字典
        var tmparray = search.substr(1,search.length).split("&");
        var paramsArray = new Array; 
        if( tmparray != null)
        {
            for(var i = 0;i<tmparray.length;i++)
            {
                var reg = /[=|^==]/;    // 用=行进拆分,但不包含==
                var set1 = tmparray[i].replace(reg,'&');
                var tmpStr2 = set1.split('&');
                var array = new Array ; 
                array[tmpStr2[0]] = tmpStr2[1] ; 
                paramsArray.push(array);
            }
        }
        // 将参数数组行进返回
        return paramsArray ;     
    }
    
    // 根据参数名称获得参数值
    function getParamValue(name)
    {
        var paramsArray = getUrlParams();
        if(paramsArray != null)
        {
            for(var i = 0 ; i < paramsArray.length ; i ++ )
            {
                for(var  j in paramsArray[i] )
                {
                    if( j == name )
                    {
                        return paramsArray[i][j] ; 
                    }
                }
            }
        }
        return null ; 
    }
        每日一道理
    灯,带有一种明亮的光,每当深夜来临,是它陪伴着你,如此默默无闻。它是平凡的,外表华丽与否,那都是一样的,珍珠点缀,水晶加饰的灯它只能用以装饰,来满足人们的虚荣心,比起这,普普通通的日光灯是幸运的,因为它照明的本性没有改变,如同生活中的一部分人平平凡凡却实实在在。
    以后我们的面页址地是http://www.cnblogs.com/tatame/admin/EditPosts.aspx?opt=1

        可以看到url上含有一个参数

    var opt = getParamValue("opt") ; 
    alert(opt);
    弹出为1  了  。

    文章结束给大家分享下程序员的一些笑话语录: 手机终究会变成PC,所以ip会比wm更加畅销,但是有一天手机强大到一定程度了就会发现只有wm的支持才能完美享受。就好比树和草,草长得再高也是草,时间到了条件成熟了树就会窜天高了。www.ishuo.cn


    展开全文
  • java 在函数中会有 值传递 引用传递 两种。 ...如果要在一个函数中,改变一个变量,就必须要获得变量的地址,也就是 函数的参数是 (类型*)p 的形式, 如果这个变量是指针,要改变它的值,则必须要
  • Java1.5提供了关键字enum,可以通过该关键字方便得定义自己需要枚举类型,比如 enum Season {  SPRING, SUMMER, AUTUMN, WINTER } 就定义了一个季节枚举类型。 在本例中,对于Season.SPRING...
  • 大家好,我是大家的老朋友计算机小学徒,今天继续我们的每日一个Java知识点,抛开原理讲实例,帮助大家更直观、更容易得记住每一个...引用传递:一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 而原对...
  • 关联文章的地址从计划的准则说来,类的成员变量如果计划成private,那么我们就不能在类外部去获得到此private变量的值。平日的做法是供提此private变量的get 和set方法。但是如果这个类没有供提get和set方法,我们...
  • // 只要srcurl @Test public void getImgStr() { String htmlStr = "&lt;img changedsize=\"true\" class=\"BDE_Image\" height=\"400\" src=\"https://img...
  • 这些只是包装一个可以通过对象上方法读取和写入内存地址.这允许您将缓冲区传递给将写入其中函数,以便您可以读取这些.这里关键点是你实际上必须事先创建一个缓冲区来存储.public static double ...
  • 内容稍多,可直接看第4点的讨论...所谓值传递,就是方法中的形参获得的是实参的值,而引用传递,就是说方法中的形参获得的是实参的引用(地址)。 参数的传递其实类似于一个赋值操作,所以接下来,先讨论值和地址...
  • 从计划的准则说来,类的成员变量如果计划成private,那么我们就不能在类外部去获得到此private变量的值。平日的做法是供提此private变量的get 和set方法。但是如果这个类没有供提get和set方法,我们如何去获得到这个...
  • java为数据结构中映射定义了一个接口java.util.Map,他实现了四个类,分别是:HashMap,HashTable,LinkedHashMapTreeMapMap不允许键重复,但允许重复1.HashMap:最常用Map,根据键hashcode来存储数据,...
  • 申请Gravatar头像教程可以点 创建gravatar头像详细教程 是,主只要该网站配置了 Email 转 Gravatar 代码,输入邮箱就能获得你在 Gravatar 设置头像,全球通用哦。 下面介绍将 Email 地址 转成 Gravatar 头像...
  • java map的key排序吗java为数据结构中的映射定义了一个接口java.util.Map,他实现了四个类,分别是:HashMap,HashTable,...根据键可以直接获得的值(因为相同的键hashcode值相同,在地址为hashcode值的地方...
  • 最常用的Map,根据键的hashcode值来存储数据,根据键可以直接获得的值(因为相同的键hashcode值相同,在地址为hashcode值的地方存储的就是值,所以根据键可以直接获得值),具有很快的访问速度,遍历时,取得数据...
  • JavaScript如何获得input元素value

    万次阅读 多人点赞 2015-04-10 10:43:08
    在页面中我们最常见页面元素就是input了,但是我们如何用JavaScript得到网页input中输入value呢,其实很简单,方法也不止一种,据我总结比较常用就是下面两种方法,闲话不多说了,下面那就来看看我说...
  • )可以获得method啊。 这是我表单form里设置了method。 <code><!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8"> <meta ...
  • 当我们创建任何用户定义类的对象并...输出结果@2a139a55在这里,当我们打印Book类的B对象时,我们将获得Object的十六进制代码而不是Object的值。但是,当我们对Java预定义类(例如String)执行相同的操作时。它不会...
  • 最常用的Map,根据键的hashcode值来存储数据,根据键可以直接获得的值(因为相同的键hashcode值相同,在地址为hashcode值的地方存储的就是值,所以根据键可以直接获得值),具有很快的访问速度,遍历时,取得数据...
  • 转自:http://www.crifan.com/how_to_implement_android_java_output_parameter/【问题】Android中...即,用这样的代码:是无法通过extractedTitle获得对应的值的。2.试了试,把函数写出取地址形式,加上&:Str...
  • Java中要想自定义类对象可以被复制,自定义类就必须实现Cloneable中clone()方法,浅拷贝:只是复制对象引用,还是同一个内存地址,深拷贝:开辟一块新内存地址,将父类属性方法和所有子类属性方法都复制...
  • 但是由于Java的JVM机制,我们并不能够获得真正存储地址,是JVM根据不同平台自动分配,这也就导致了我们不能手动传递地址JAVA将自动为引用传递传递一个地址。 一、两种类型:基本类型 和 引用类型 基本类型...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 293
精华内容 117
关键字:

java获得地址的值

java 订阅