文档章节

关于自定义URLStreamHandler的一次踩坑

林小宝
 林小宝
发布于 2018/06/25 15:38
字数 302
阅读 25
收藏 0

关于自定义URLStreamHandler的一次踩坑

  • 20180625 lambo init

说明

一般自定义实现url的协议解析.方案为实现URLStreamHandler.实现其 openConnection 就可以了, 如果我们执行 new URL("xx://aa/ff").hashCode();

    public synchronized int hashCode() {
        if (hashCode != -1)
            return hashCode;
		// 实现为转发给自实现的URLStreamHandler 进行处理
        hashCode = handler.hashCode(this);
        return hashCode;
    }

默认URLStreamHandler 处理hashCode为

     protected int hashCode(URL u) {
        int h = 0;

        // Generate the protocol part.
        String protocol = u.getProtocol();
        if (protocol != null)
            h += protocol.hashCode();

        // Generate the host part.
        InetAddress addr = getHostAddress(u);
        if (addr != null) {
            h += addr.hashCode();
        } else {
            String host = u.getHost();
            if (host != null)
                h += host.toLowerCase().hashCode();
        }

        // Generate the file part.
        String file = u.getFile();
        if (file != null)
            h += file.hashCode();

        // Generate the port part.
        if (u.getPort() == -1)
            h += getDefaultPort();
        else
            h += u.getPort();

        // Generate the ref part.
        String ref = u.getRef();
        if (ref != null)
            h += ref.hashCode();

        return h;
    }

其会进行一次url的访问拿到内容参数 hashCode. 但一般我们定义一个url是内容不会变化的. 我们自定义协议可以使用 以下代码

    @Override
    protected int hashCode(URL u) {
        if(null == u) {
            return 0;
        }
        return u.toString().hashCode();
    }

© 著作权归作者所有

林小宝
粉丝 5
博文 30
码字总数 11167
作品 2
深圳
私信 提问
JAVA URL协议扩展支持HDFS

问题: 最近在做自然语言处理的时候,使用了谢菲尔德大学的Gate,奈何Gate只能从本地文件读取配置和语义文件,特将此改造成从HDFS读取,并且和Spark集成起来,做到实时解析 改造完成后才发现可以使...

ktlb
2017/10/31
0
0
支持多种路径风格的 Java 资源加载器 - LoadKit

LoadKit Java 资源加载器,充分拓展ClassLoader#getResources(name)的能力,实现递归加载,支持普通风格 / 包名风格 / ANT风格 / 正则风格路径的资源加载同时支持自定义过滤器,通常作为框架...

不会钓鱼的兔子
2018/12/03
0
0
从源码看Spring Security之采坑笔记(Spring Boot篇)

一:唠嗑 鼓捣了两天的Spring Security,踩了不少坑。如果你在学Spring Security,恰好又是使用的Spring Boot,那么给我点个赞吧!这篇博客将会让你了解Spring Security的各种坑! 阅读前说一...

巅峰小学生
2018/06/23
0
0
关于iOS和android自定义包的名字

自定义包名的使用,android的包名和ios的包名都是你的自定义包名! 如下以新浪微博SDK自定义包名示例:(官方没的,自己踩过坑,方便后来人吧) 相关技术文档:http://www.apicloud.com/ind...

达斯雷马
2016/12/09
184
0
centos 7( linux )下安装elasticsearch教程

目录 概述 环境准备 elaticsearch简介 安装elasticsearch 彩蛋 概述 很久没有写博客了,最近在做全文检索的项目,发现elasticsearch踩了不少坑,百度点进去又是坑,在此记录一下自己的踩坑历程。...

java_龙
2018/10/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

抽象同步队列AQS——AbstractQueuedSynchronizer锁详解

AQS——锁的底层支持 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资...

须臾之余
今天
3
0
springboot配置百度UEditor 富文本详解

富文本简介 UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码... 准备工作 ueditor需要单独文...

wotrd
昨天
4
0
mysql 5.7之my.cnf配置大全

[client]port = 3306socket = /tmp/mysql.sock[mysqld]###############################基础设置######################################Mysql服务的唯一编号 每个mysql服务...

Online_Reus
昨天
3
0
MAVEN打包时引入外部链接的包

1.项目引入了ORACLE的jar包,MAVEN配置如下 2.打jar包的时候需要指定下main入口函数mainClass <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> ......

Cobbage
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部