HttpURLConnection的变态事: Keep-Alive JDK自带的HttpURLConnection默认启动Keep-Alive, 使用后的HttpURLConnection会放入池里重用. 相关描述: What does the current JDK do for Keep-Alive? The JDK supports both HTTP/1.1 and HTTP/1.0 persistent connections. When the application finishe…
写了一个简单的 Http 请求的Class,实现了 get, post ,postfile package com.asus.uts.util; import org.json.JSONException; import org.json.JSONObject; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.…
概述 HashMap对于做Java的小伙伴来说太熟悉了.估计你们每天都在使用它.它为什么叫做HashMap?它的内部是怎么实现的呢?为什么我们使用的时候很多情况都是用String作为它的key呢?带着这些疑问让我们来了解HashMap! HashMap介绍 1.介绍 HashMap是一个用”KEY”-“VALUE”来实现数据存储的类.你可以用一个”key”去存储数据.当你想获得数据的时候,你可以通过”key”去得到数据.所以你可以把HashMap当作一个字典. 那么HashMap的名字从何而来呢…
在java语言的学习和使用当中你可能已经了解或者知道堆和栈,但是你可能没有完全的理解它们.今天我们就一起来学习堆.栈的特点以及它们的区别.认识了这个之后,你可能对java有更深的理解. Java堆内存(Heap Memory) 堆内存在Java运行时主要去回收对象和JRE的类.当我们创建了一个对象(也就是 new一个对象),在堆内存就会为对象分配一个空间,Java垃圾回收器(GC)运行在堆内存里,一旦发现没有任何地方引用到这个对象,就释放这个对象所占的内存. 被创建的对象存在于堆内存,并且拥有全…
从普通Web页面上传文件非常easy.仅仅须要在form标签叫上enctype="multipart/form-data"就可以,剩余工作便都交给浏览器去完毕数据收集并发送Http请求.可是假设没有页面的话要怎么上传文件呢? 因为脱离了浏览器的环境,我们就要自己去完毕数据的收集并发送请求.所以就非常麻烦了.首先我们来写个JSP页面并看看浏览器发出的Http请求是什么样的 JSP页面: <html> <head> <meta charset="UT…
研究了一天才搞清楚,其实挺简单的,在这里记录下,以便以后参考. 一.创建一个servlet项目 主要包括(WEB-INF)里面有classes文件夹.lib文件夹.web.xml文件. 将写好的servlet类编译成的.class放到项目中的classes文件夹下(我的是helloServlet.class) 1.在web.xml中配置 <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xml…
以读取百度的http网页为例.如果知道了IP地址和端口,然后新建一个Socket,就直接去读百度的首页,根本没反应,原因是www.baidu.com是以http协议传输的,而现在要以Socket原始的套接字读写,远程服务器没有收到客户端的GET报文,故无法做出响应.正确的方式是在Socket输出流中写入HTTP的GET报文,输出流中的报文告诉远程服务器自己要GET网页内容,这样远程服务器才会响应我们的数据请求: import java.io.BufferedInputStream;import…
/** * @Author: * @Description:利用HttpURLConnection方式获取restful格式的服务数据 * @Date: */ private static List<Object> getjsonlist(String targetURL){ List<Object> result_list = new ArrayList<Object>(); try { URL restServiceURL = new URL(targetURL);…
在java语言的学习和使用当中你可能已经了解或者知道堆和栈,但是你可能没有完全的理解它们.今天我们就一起来学习堆.栈的特点以及它们的区别.认识了这个之后,你可能对java有更深的理解. Java堆内存(Heap Memory) 堆内存在Java运行时主要去回收对象和JRE的类.当我们创建了一个对象(也就是 new一个对象),在堆内存就会为对象分配一个空间,Java垃圾回收器(GC)运行在堆内存里,一旦发现没有任何地方引用到这个对象,就释放这个对象所占的内存. 被创建的对象存在于堆内存,并且拥有全…
问题描写叙述 当我们使用SpringMVC作为服务端的框架时,有时不仅仅要应对web前端(jsp.javascript.Jquery等)的訪问请求,有时还可能须要响应Android和JavaSE(桌面应用)这些client的请求.因此,除了web使用form表单或者ajax作为client获取Controller响应之外.纯Java语言向SpringMVC的Controller提供參数和请求结果也是必须要实现的.web前端使用form和ajax来获取Controller响应在本篇博客暂不深究,本…
说明:使用Java原生的HttpURLConnection调用WebService可以免去引入SOA的框架,比如一些CXF框架等.可以使代码足够精简,比如对于一些只调用一两个接口的,这种方式是最适合的. package com.jsfot.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWrit…
从普通Web页面上传文件很简单,只需要在form标签叫上enctype="multipart/form-data"即可,剩余工作便都交给浏览器去完成数据收集并发送Http请求.但是如果没有页面的话要怎么上传文件呢? 由于脱离了浏览器的环境,我们就要自己去完成数据的收集并发送请求,所以就很麻烦了.首先我们来写个JSP页面并看看浏览器发出的Http请求是什么样的 JSP页面: <html> <head> <meta charset="UTF-8&qu…
<深入理解java虚拟机> 读书感悟 作者:淮左白衣 --------------写于2018年4月9日17:44:48 关于java虚拟机内存的那些事之程序计数器 关于java虚拟机内存的那些事之程序计数器 什么是程序计数器? 有什么特点 为什么具有这些特点 参考: 什么是程序计数器? 程序计数器是一块 较小 的内存空间,它可以看做是当前线程所执行的字节码的 行号指示器 :在虚拟机的概念模型里(仅仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时,就是通过改变这个…
感谢大佬:https://blog.csdn.net/qq_40036754/article/details/102554755 文章目录 一.前言 二.HttpURLConnection 介绍 三.GET.POST请求 1.GET请求 2.POST请求 3.总结 a.connect()方法调用不调用: b.是否调用connect方法? c.openConnection()方法到底是如何返回URLConnection对象的: d.必须调用getResponseCode()方法 . 四.小方法解释…
1.使用HttpURLConnection public static String getJsonByURL(String base_url) { String url = base_url; StringBuilder json = new StringBuilder(); String result = ""; try { URL u = new URL(url); HttpURLConnection uc = (HttpURLConnection) u.openConnecti…
把一个变量带进一个方法,该方法执行结束后,它的值有时会改变,有时不会改变.一开始会觉得--“好神奇呀”.当我们了解java内存分析的知识后,一切都是那么简单明了了--“哦,这么回事呀”.但是今天的上机课,对于引用变量,我犯了一个错误,下面是代码的简化-- void method(int a[]) { int temp[]={1,2,3,4}; a[0]=5; a=temp; } 在这里,我试图把临时数组变量的值赋给a,从而改变实参的值. 方法传参,分传值和传址,基本数据类型变量的传参传的是值:引…
我们已经知道Java堆是被所有线程共享的一块内存区域,所有对象实例和数组都在堆栈进行内存分配.为了进行高效的垃圾回收,虚拟机把堆内存划分成新生代年代(旧一代)和永久代(永久代)3个区域. 新生代 新生代由Eden与Survivor Space(S0,S1)构成,大小通过-Xmn参数指定,Eden与Survivor Space的内存大小比例默认为8:1,可以通过-XX:SurvivorRatio参数指定,比如新生代为10M时,伊甸园分配8M,S0和S1各分配1M. Eden:希腊语,意思为伊甸园,…
整洁的代码 清单项目 分类 使用可以表达实际意图(Intention-Revealing)的名称 有意义的名称 每一个概念只用一个词 有意义的名称 使用方案/问题领域名称 有意义的名称 类应该是比较小的! 类 函数应该是比较小的! 函数 只做一件事 函数 DRY(Don’t Repeat Yourself)原则,(拒绝重复) 函数 用代码来解释自己的做法(译者注:即代码注释) 注释 确定应用了代码格式化 格式 使用异常而不是返回码 异常 不要返回Null 异常 *参考自:http://techb…
最近有个读者在苦恼一件事,那就是有大公司在挖他,他要不要从所在的小公司,跳槽到大公司,前提是两家公司的待遇基本一致.由这个问题结合自己多年的工作经验,来谈谈java工程师要不要跳槽,何时跳槽,怎么跳槽等问题. 要不要跳槽 有句话叫"铁打的营盘流水的兵",这句话放在职场中同样适合,我们中的大多数都是打工人,也就是说在职场中跳槽是必然的,下面分析下跳槽的好处, 可以获得更优厚的待遇.都知道跳一次槽工资待遇至少要提升20%--30%,如果不是这样那么不建议你跳槽.现实中很多人跳槽后获得待遇是…
刚接触java时,有些技术盲区,查了很多资料也得不到答案,面试时也得遮遮掩掩,这里就列举一些,当年踩过的那些坑 1.http -> https一个网站或接口,从http改到https是否需要额外的开发量 答案:不需要额外的开发量,只需要在nginx里加一个电子证书,这件事运维就能完成,完全不需要程序员操心. 2.java如何发短信java怎么实现短信发送,需要购买硬件设备吗 答案:不需要购买硬件设备,有很多三方公司提供短信服务的接口,企业申请个账户,程序员按照三方公司的接口文档简单的调用接口就可…
对于Windows记事本: ANSI :GB2312 java中应使用GBK解码 Unicode :有签名的UTF-16LE java中应使用UTF-16解码 Unicode big endian :有签名的UTF-16BE java中应使用UTF-16解码 UTF-8 :有签名的UTF-8 java中只能手动去掉签名了再用UTF-8解码了 对于java程序的解码: GBK :GBK编码可以兼容GB2312,因此用GBK处理GBK.GB2312两种编码 UTF-8 :无签名的UTF-8 UTF-…
本文为原创文章,欢迎转载,但请注明出处http://www.cnblogs.com/yexiubiao/p/5014015.html,未在文章页面明显位置给出原文连接的,将保留追究法律责任的权利. 通过java的ObjectOutputStream.ObjectInputStream类能对实现了Serializable接口的对象实现序列化与反序列化,如下 import java.io.Serializable; import com.alibaba.fastjson.JSON; public c…
概述 本类文章会不段更新分析学习到的经典面试题目,在此记录下来便于自己理解.如果有不对的地方还请各位观众拍砖. 今天主要分享一下常用的字符串的几个题目,相信学习java的小伙伴们对String类是再熟悉不过了,今天我们就来和她再次邂逅,好了下面开始. 先来说说String特点 String是不可变的常量,每当我们创建一个字符串对象的时候,如果堆区的常量池里不存在这个字符串,就会创建一个存储在常量池里(String存的地方叫String pool),如果存在了,就直接把变量的地址指向常量池里,比如…
概述 本类文章会不段更新分析学习到的经典面试题目,在此记录下来便于自己理解.如果有不对的地方还请各位观众拍砖. 今天主要分享一下常用的字符串的几个题目,相信学习java的小伙伴们对String类是再熟悉不过了,今天我们就来和她再次邂逅,好了下面开始. 先来说说String特点 String是不可变的常量,每当我们创建一个字符串对象的时候,如果堆区的常量池里不存在这个字符串,就会创建一个存储在常量池里(String存的地方叫String pool),如果存在了,就直接把变量的地址指向常量池里,比如…
熟悉java多线程的朋友一定十分了解java的线程池,jdk中的核心实现类为java.util.concurrent.ThreadPoolExecutor.大家可能了解到它的原理,甚至看过它的源码:但是就像我一样,大家可能对它的作用存在误解.现在问题来了,jdk为什么要提供java线程池?使用java线程池对于每次都创建一个新Thread有什么优势? 对线程池的误解 很长一段时间里我一直以为java线程池是为了提高多线程下创建线程的效率.创建好一些线程并缓存在线程池里,后面来了请求(Runnab…
经典的先看下面一段代码,请问最终创建几个对象,分别在哪里? String s0 = new String("luoliang.me"); String s1 = "luoliang.me"; String s2 = new String("luoliang.me"); 想要回答这个问题,先得搞清楚new String()以及String pool的,下面我慢慢来说下. 在java中所有的字符串都会保存在一个叫String pool字符串池里面,这…
在前面的文章中曾提到了在java虚拟机启动的时候会对G1,CMS, SerialGC定义不同的heap的类,并且定义不同的policy. CollectorPolicy CollectorPolicy主要是用于根据虚拟机启动的参数分配heap的大小,和将heap堆分不同的区的大小(比如yong区和Old区),并且对不同的区定义不同的generation的规范. GenerationSpec 主要是根据不同的类型使用不同的Generation的方式,这个类型是由CollectionPolicy在初…
面试过程吧,怎么说呢?从一开始接触面试到现在成功了几家,这中间我确实收获了许多,那我就从我第一次面试开始讲吧. 第一次面试是有人介绍过来的,总之还是有一位贵人相助,所以第一次面试时,面试官很好没有怎么为难我,所以第一次就稀里糊涂的就通过了,就像 做梦一样.第二次,我又向投了一家公司投了一份简历,然后成功的去参加面试.我面试的java软件开发师,而且又是以应届毕业生的身份去的. 噢!在这里我觉得我有必要的先说一句:对于毕业生来说没有任何经验这是确确实实存在的,但是这并不是意味着这就是我们最大的劣势…
本文的使用方法: 这篇文章是一个总结性质的文章,是我在看完<深入理解 Java 虚拟机>后写的(里面可能会有些不准确的地方,欢迎大家指出),本文从头读到尾就是一个虚拟机大部分知识点的框架,就像一颗搜索树一样,我们想要了解哪一部分知识,就从根节点开始搜索,直到找到我们想要了解的知识所在的叶节点或者子树.不过如果把所有的知识都在一篇文章中列出来那文章就太长啦,很容易把握不住整体框架,所以本文中对于知识点的详细介绍都以链接的形式给出,大家可以通过本文回忆 JVM 相关的知识,遇到想不起来的点可以点开…
<深入理解 java 虚拟机> 读书扩展 作者:淮左白衣 写于 2018年4月13日21:26:05 目录 方法区 图例(方法区中都保存什么) 类型信息 类型的常量池 (即运行时常量池) 字段信息 方法信息 类变量(即static变量) 对类加载器的引用 对Class类的引用 方法表 (摘抄)JVM如何使用方法区里面的数据的 参考: Java方法区 方法区 保存在着被加载过的每一个类的信息:这些信息由类加载器在加载类的时候,从类的源文件中抽取出来:static变量信息也保存在方法区中: 可以看…