今天看了一下公司同事的代码,如下 URLConnection connection = openConnection(localURL); HttpURLConnection httpURLConnection = (HttpURLConnection)connection; 好奇,为何需要将 URLConnection 转 HttpURLConnection ? 点进两个源码里面发现 一.HttpURLConnection 继承 URLConnection public abstract cl…
URL url = new URL(strUrl); URLConnection con = url.openConnection(); URL url = new URL(strUrl); HttpURLConnection con = (HttpURLConnection)url.openConnection();…
原文地址:https://www.anquanke.com/post/id/194384#h3-3 1.java rmi 关于rmi客户端和服务端通信的过程,java的方法都实现在rmi服务端,客户端实际上是通过访问rmi注册表拿到stub,然后再通过它调用服务端方法,那么调用方法时要传递参数,参数可以为一般类型,也可以为引用类型,那么如果为引用类型,就能够利用服务端已经有的gaget chain来打server,因为参数实际上是序列化传输的,那么数据到达服务端后必定会经过反序列化. 客户端:…
一:Error和Exception的基本概念: 首先Exception和Error都是继承于Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型. Exception 和 Error 体现了 Java 平台设计者对不同异常情况的分类,Exception和Error体现了JAVA这门语言对于异常处理的两种方式. Exception 是程序正常运行过程中可以预料到的意外情况,并且应该被开发者捕获,…
*URLConnection是个抽象类,它有两个直接子类分别是HttpURLConnection和JarURLConnection.另外一个重要的类是URL,通常URL可以通过传给构造器一个String类型的参数来生成一个指向特定地址的URL实例. *url.openConnection()方法返回的肯定是这两个子类中的一个,这是java多态性的一种体现 *按图索骥...在eclipse中按几次F3 1.找到openConnection()方法. 2.找到URL中的handler实例.注:han…
使用 HttpURLConnection 实现多线程下载文件 注意GET大写//http public class MultiThreadDownload { public static void main(String[] args) { URL url = null; int fileLength = 0; try { url = new URL("http://www.baidu.com/img/baidu_sylogo1.gif"); //使用http协议 也可以直接用urlc…
URLConnection与HttPURLConnection都是抽象类,无法直接实例化对象.其对象主要通过URL的openconnection方法获得. 值得注意的是:1.openConnection方法只创建URLConnection或者HttPURLConnection实例,但是并不进行真正的连接操作.并且,每次openConnection都将创建一个新的实例.2.openConnection不进行的连接操作的原因在于,可以在连接操作进行之前,对URLConnection或者HttPURL…
URLConnection与HttPURLConnection都是抽象类,无法直接实例化对象.其对象主要通过URL的openconnection方法获得. 值得注意的是:1.openConnection方法只创建URLConnection或者HttPURLConnection实例,但是并不进行真正的连接操作.并且,每次openConnection都将创建一个新的实例.2.openConnection不进行的连接操作的原因在于,可以在连接操作进行之前,对URLConnection或者HttPURL…
1.  用HeapByteBuffer放int占几个byte? 占4个.而且不论你是放1还是-1还是0xffff. 因为int的长度是4个byte,HeapByteBuffer的存储又是byte数组. 2. 用HeapByteBuffer放char占几个byte? 同1,是两个,因为java中char的长度是2byte. 同样,不论是存英文字符还是存中文字符,都占用2个byte. 示例代码 ByteBuffer buff = ByteBuffer.allocate(1024*1024); buf…
Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果new String(H) + new String(L).即byte用十六进制表示只占2位. 同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上. 根据以上原理,我们就可…
Annotation注解在 Java 中有着很广泛的,他是做为一种标识 为javac所识别.每一个注解 都对应这一个Java类  在java.lang包中 有三个注解  分别是 Deprecated    SuppressWarning   Override    在使用 注解前必须要在 注解类前面加上@    每增加一个注解 就意味着产生了一个注解对象 . 注解就是一个标识,编译器 通过标识来输出不同的编译结果 .     Deprecated   过时的 SuppressWarning   …
java中把生成Class对象和实例对象弄混了,更何况生成Class对象和生成instance都有多种方式.所以只有弄清其中的原理,才可以深入理解.首先要生成Class对象,然后再生成Instance.那Class对象的生成方式有哪些呢,以及其中是如何秘密生成的呢? Class对象的生成方式如下: 1.Class.forName("类名字符串")  (注意:类名字符串必须是全称,包名+类名) 2.类名.class 3.实例对象.getClass() 通过一段小程序,来观察一下Class…
java运算符 与(&).非(~).或(|).异或(^)   最近看HashMap源码,遇到了这样一段代码: 1 static final int hash(Object key) { 2 int h; 3 return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); 4 } 于是我整理学习了以下知识:1.十进制转二进制 原理:给定的数循环除以2,直到商为0或者1为止.将每一步除的结果的余数记录下来,然后反过来就得到相…
(转)实例二:Ajax返回Json在Java中的实现 转自http://www.cnblogs.com/lsnproj/archive/2012/02/09/2341524.html#2995114 在这篇中主要是说一下使用Json来将后台取得的数据显示到前台页面.可以说这种方法应该是实现无刷新分页的基础,而且在开发过程中经常被用到.这里的后台部分由JAVA来实现. 这个例子也在上一篇中那个项目中实现.新建一个SecondTest.html页面,定义一个按钮,并给这个按钮绑定事件ajaxJson…
本文仅分析部分原理和集合类的特点,不分析源码,旨在对java的集合类有一个整体的认识,理解各个不同类的关联和区别,让大家在不同的环境下学会选择不同的类来处理. Java中的集合类包含的内容很多而且很重要,很多数据的存储和处理(排序,去重,筛选等)都需要通过集合类来完成. 首先java中集合类主要有两大分支: (1)Collection (2)Map 先看它们的类图: (1)Collection Collection (2)Map Map 可以看到它们之间的关系纷繁复杂,如果不系统的学习一下,还真…
List是Java中比较常用的集合类,关于List接口有很多实现类,本文就来简单介绍下其中几个重点的实现ArrayList.LinkedList和Vector之间的关系和区别. List List 是一个接口,它继承于Collection的接口.它代表着有序的队列.当我们讨论List的时候,一般都和Set作比较.List中元素可以重复,并且是有序的(这里的有序指的是按照放入的顺序进行存储.如按照顺序把1,2,3存入List,那么,从List中遍历出来的顺序也是1,2,3).Set中的元素不可以重…
以前一直对于java中容器的概念不理解,虽然学习过,但始终没有认真理解过,这几天老师提出了这样一个问题,你怎么理解java中的容器.瞬间就蒙了.于是各种搜资料学习了一下,下面是我学习后整理出来的的一些心得.欢迎各路大神指教 在书写程序时,我们常常需要对大量的对象引用进行管理.为了实现有效的归类管理,我们常常将同类的引用放置在同一个数据容器中. java容器的组成 一.Collection接口:定义了存取一组对象的方法,他的子接口Set和List分别定义了存取方法.Set中的数据对象没有顺序且不可…
JAVA中toString方法的作用 因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”. 它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法 总而言之,它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法 回答补充: 写这个方法的用途就是为了方便操作,所以在文件操作里面可用可不用 例子1:   public…
如何在Java中使用注释 在编写程序时,经常需要添加一些注释,用以描述某段代码的作用. 一般来说,对于一份规范的程序源代码而言,注释应该占到源代码的 1/3 以上.因此,注释是程序源代码的重要组成部分,一定要加以重视哦! Java 中注释有三种类型:单行注释.多行注释.文档注释 运行结果: Hello Imooc! 看:被注释的代码块在程序运行时是不会被执行的~~ 我们可以通过 javadoc 命令从文档注释中提取内容,生成程序的 API 帮助文档. 打开首页,查看下生成的 API 文档 PS:…
Java中的Date类型向前向后滚动时间(附工具类) 废话不多说,先看工具类: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateRoll { /** * Date类型向前向后滚动固定时长 * * @param date * 调整前的时间对象 * @param i * 需要滚动哪一个字段,写法: 年->Calendar.YEAR 月->Cal…
Java中Date()类 日期转字符串.字符串转日期的问题 今天在写东西的时候突然发现一个问题,就是先new 一个Date()然后将生成的值转为字符串, 然后再将转换后的字符串再次用new Date()转为日期,但是转完之后发现两次生成的日期之间有差距?有大佬知道是什么原因吗? 知道的大佬麻烦说一下,谢谢了! 我把代码贴在下面: public void test2() { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("G yy…
java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示,所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果new String(H) + new String(L).即byte用十六进制表示只占2位. 同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上. 根据以上原理,我们就可以将byte[] 数组转换为16进制字符串了,当…
在编写程序时,经常需要添加一些注释,用以描述某段代码的作用. 一般来说,对于一份规范的程序源代码而言,注释应该占到源代码的 1/3 以上.因此,注释是程序源代码的重要组成部分,一定要加以重视哦! Java 中注释有三种类型:单行注释.多行注释.文档注释 运行结果: Hello Imooc! 看:被注释的代码块在程序运行时是不会被执行的~~ 我们可以通过 javadoc 命令从文档注释中提取内容,生成程序的 API 帮助文档. 打开首页,查看下生成的 API 文档 PS:使用文档注释时还可以使用 …
http://w.baike.com/LGAdcWgJBBQxRAHUf.html 转帖 java中byte转换int时为何与0xff进行与运算 在剖析该问题前请看如下代码 public static String bytes2HexString(byte[] b) {  String ret = "";  for (int i = 0; i < b.length; i++) {   String hex = Integer.toHexString(b[i] & 0xFF…
  java 中 image 和 byte[] 相互转换可恶的…………其实也挺好的 只是把好不容易写出来的东西记下来,怕忘了…… 下面,我来介绍一个简单的 byte[] to image, 我们只需要一个存储了图片信息的二进制串(byte[]) 然后,这样: InputStream buffin = new ByteArrayInputStream(/*二进制串*/,                                               /*起始位置*/,         …
java中定义了String类来封装字符串,并提供一系列的操作字符串的方法,他们都位于java.lang包下. package Main; public class String01 { public static void main(String[] args) { String s="ababacdefg"; System.out.println("字符串的长度:"+s.length()); System.out.println("字符串中第一个字符:…
Java 中的各种锁和 CAS + 面试题 如果说快速理解多线程有什么捷径的话,那本文介绍的各种锁无疑是其中之一,它不但为我们开发多线程程序提供理论支持,还是面试中经常被问到的核心面试题之一.因此下面就让我们一起深入地学习一下这些锁吧. 乐观锁和悲观锁 悲观锁和乐观锁并不是某个具体的"锁"而是一种并发编程的基本概念.乐观锁和悲观锁最早出现在数据库的设计当中,后来逐渐被 Java 的并发包所引入. 悲观锁 悲观锁认为对于同一个数据的并发操作,一定是会发生修改的,哪怕没有修改,也会认为修改…
今天躺在床上忽然想到一个问题,迭代器的代码是如何实现的?于是乎不由自主的爬起来敲两行代码. List<String> list=new ArrayList<>(2); list.add("java"); list.add("C#"); Iterator<String> iterator=list.iterator(); while (iterator.hasNext()){ System.out.println(iterator.…
小伟刚毕业时面的第一家公司就被面试官给问住了... 如何理解Java中的自动拆箱和自动装箱? 自动拆箱?自动装箱?什么鬼,听都没听过啊,这...这..知识盲区... 回到家后小伟赶紧查资料,我透,这不就是问基本类型跟封装类型吗,面试官整啥名词呢... 别问结果,问就是没过. 1. 什么是自动装箱,自动拆箱 定义:基本数据类型和包装类之间可以自动地相互转换 理解:装箱就是自动将基本数据类型转换为封装类型,拆箱就是自动将封装类型转换为基本数据类型. 我们知道,Java中提供了四大类基本数据类型,分别…
一.前言 拷贝这个词想必大家都很熟悉,在工作中经常需要拷贝一份文件作为副本.拷贝的好处也很明显,相较于新建来说,可以节省很大的工作量.在Java中,同样存在拷贝这个概念,拷贝的意义也是可以节省创建对象的开销. Object类中有一个方法clone(),具体方法如下: protected native Object clone() throws CloneNotSupportedException; 该方法由 protected 修饰,java中所有类默认是继承Object类的,重载后的clone…