Java
EllisTian
除了篮球,平时很宅,看看书,把最新学习的通过代码的方式实现,写到博客里,一起分享,一起进步!
展开
-
使用CloseableHttpClient 模拟发送HttpGet和HttpPost请求
项目中经常会用到模拟Http请求,而jdk 下的 rt.jar核心库中也有 java.net提供了这方面的功能,但是总体而言,功能还是缺少灵活性和全面性,HttpClient的出现就是弥补了其缺失的功能。HttpClient不是浏览器客户端,而是一个客户端和服务端实现通信的Http组件库。本篇文章主要讲解CloseableHttpClient 的使用。1. 项目中添加依赖的jar包 2. 上代...原创 2018-06-03 10:04:50 · 12669 阅读 · 0 评论 -
HashMap集合迭代的几种方式以及效率比较
public class ArrayListDemo { private static class Person{ private int id; private String name; public Person(int id, String name) { this.id = id; t...原创 2018-11-30 14:54:02 · 1262 阅读 · 0 评论 -
ArrayList常用的方法
增加元素到链表中 boolean add(Element e) //增加指定元素到链表尾部. void add(int index, Element e) //增加指定元素到链表指定位置. boolean addAll(Collection<? extends E> c) //将指定collection中的所有元素插入到ArrayList中 boolea...原创 2018-11-30 14:54:45 · 4390 阅读 · 3 评论 -
通过源码分析HashMap的实现原理
1. HashMap由数组+链表组成的,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的,如果定位到的数组位置不含链表(当前entry的next指向null),那么对于查找,添加等操作很快,仅需一次寻址即可;如果定位到的数组包含链表,对于添加操作,其时间复杂度为O(n),首先遍历链表,存在即覆盖,否则新增;对于查找操作来讲,仍需遍历链表,然后通过key对象的equals方法逐一...原创 2018-11-30 14:55:37 · 255 阅读 · 0 评论 -
CollectionUtils工具类常用的方法
public class ArrayListDemo { public static void main(String[] args) { List<Integer> a = new ArrayList<Integer>(); List<Integer> b = null; List<Integer...原创 2018-12-03 11:24:15 · 813 阅读 · 0 评论 -
Arrays工具类十大常用方法
public class ArrayListDemo { public static void main(String[] args) { /* * 1. 声明数组 * */ String[] aArray = new String[5]; String[] bArray = {"a","b","c", "...原创 2018-12-03 11:25:22 · 573 阅读 · 1 评论 -
分析HashSet中add方法的源码,保证添加存储元素的唯一性
class HashSet implements Set { private static final Object PRESENT = new Object(); private transient HashMap<E,Object> map; public HashSet() { map = new HashMap<>(...原创 2018-12-03 11:26:33 · 229 阅读 · 0 评论 -
给定一个List,要求利用HashSet的唯一性以及Iterator的remove方法将当前List中的重复元素删除并输出
public class ArrayListRemoveDuplicateTest { public static void main(String args[]){ List<Integer> list = new ArrayList<Integer>(){{ add(121);add(12);add(21);add(13...原创 2018-12-03 11:28:19 · 449 阅读 · 0 评论 -
列举Executors工具中几种线程池的使用
1. 线程池的介绍: 在开发中,频繁的创建和销毁一个线程,是很耗资源的,为此找出了一个可以循环利用已经存在的线程来达到自己的目的,线程池顾名思义,也就是线程池的集合,通过线程池执行的线程任务,可以很有效的去规划线程的使用。 在java.util.concurrent并发包中大致有以下几种常用的线程池: 1.1 newScheduledThreadPool 创建一个定长线程...原创 2018-12-05 14:49:14 · 274 阅读 · 0 评论 -
分析java.uitl.concurrent.ThreadPoolExecutor
1. java.uitl.concurrent.ThreadPoolExecutor类是线程池中最核心的一个类,因此如果要透彻地了解Java中的线程池,必须先了解这个类。下面我们来看一下ThreadPoolExecutor类的具体实现源码。 在ThreadPoolExecutor类中提供了四个构造方法: public class ThreadPoolExecutor extend...原创 2018-12-05 14:50:24 · 394 阅读 · 0 评论 -
手动配置ThreadPoolExecutor,执行线程任务
public class ThreadPoolTest2 { public static void main(String[] args) { ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 10, 200, TimeUnit.MILLISECONDS, new ArrayBl...原创 2018-12-05 14:51:15 · 544 阅读 · 0 评论 -
Java 随机生成最小值min 最大值max 之间 scl位小数
/** * 获取最小值min 最大值max 之间 scl位小数 * @param args */public static void main(String args[]) { double min = 0.5; // 总和 double max = 1.5; // 小数最大位数 int scl = 2; // 用于提取指定小数位 ...原创 2019-03-16 14:24:57 · 937 阅读 · 0 评论 -
java集合几种遍历方式及实现原理
1. 几种遍历方式及实现原理public class ArrayListDemo { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); list.add("测试1111"); list...原创 2018-11-30 14:53:02 · 1112 阅读 · 0 评论 -
利用HashSet,存储自定义的对象,通过重写自定义对象中hashCode和equals方法保证存储元素的唯一性
public class HashSetTest { public static void main(String[] args) { // 创建集合对象 HashSet<Student> studentHashSet = new HashSet<Student>(); // 创建学生对象 Stude...原创 2018-11-30 14:51:51 · 317 阅读 · 0 评论 -
Java多线程的创建及启动的几种方式
Java线程具有五种基本状态: 1. 新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread(); 2. 就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。 处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t...原创 2018-11-30 14:46:52 · 474 阅读 · 0 评论 -
Java中根据request请求获取请求端真实的ip地址
为了获取客户端的ip地址,我们常用的做法是利用HttpServletRequest中的request.getRemoteAddr()来获取的,但是由于服务器端由于为了保护安全信息或者为了负载均衡可能采取了apache,squid,nginx等反向代理软件,这时候再采取使用这种方式获取的就不是真实的客户端的ip地址了。以下上代码public static final String LOCAL_IP ...原创 2018-06-03 20:07:24 · 6396 阅读 · 2 评论 -
详解java中的序列化与反序列化
在项目中我们知道model中的DO要实现序列化,并给他一个serialVersionUID,但是可能并不是很清楚其中的原理,本篇文章就详细解读其中的原理,包括序列化是什么,序列化使用的场景,以及实现原理。下面我们一一道来。1. 序列化是什么 序列化就是把Java 对象转化为二进制类型的字节流的过程,反序列化就是把二进制类型的字节流数据转换成Java对象的过程,序列化和反序列化是一个相反的过程...原创 2018-06-12 14:01:16 · 453 阅读 · 0 评论 -
java String类详解
前言:java.lang.String类在日常编码中使用的非常频繁,可是对于String类的了解,真的很深入吗?有没有正确的使用String?简介:原创 2018-07-03 11:23:49 · 584 阅读 · 1 评论 -
web 项目中设置session过期时间
java web项目中要想设置session过期时间,有三种设置方法,都是给与某个过期时间值,其中-1 代表session永远不会过期。1. 第一种方式:通过代码设置方式,其中600表示600秒2. 第二种方式:通过web.xml方式,过期时间为30分钟3. 第三种方式:直接在应用服务器中设置,例如Tomcat,默认是30分钟以上三种方式如果设置了不止一种方式,那么,优先级如下:从高到低第一种方式...原创 2018-07-16 13:57:02 · 29159 阅读 · 0 评论 -
详解hashcode和equals
对于equals,大家应该都比较熟悉吧,原创 2018-07-12 16:20:59 · 407 阅读 · 0 评论 -
使用poi 导入导出Excel文件
使用apache poi 可以很方便的进行Excel文件的导入导出操作。下载Excel文件//创建工作簿HSSFWorkbook workbook = new HSSFWorkbook();//新建工作表HSSFSheet sheet = null;sheet = workbook.createSheet("questionTemplate");//创建行,0表示第一行HSSFRow ...原创 2018-07-12 14:42:24 · 365 阅读 · 0 评论 -
java中方法重载和重写的区别
方法重载和重写,光从名称上来说,很类似,也很容易弄错,接下来我们先简述两者的区别和联系。1. 方法重载 首先方法重载是同一个类中的不同方法间的关系,这些方法具有同名(方法名一样),但是具有不同的参数列表(参数的个数和参数的类型不同)。方法重载其实是同一个类中多态性的表现,调用者可以依据传入不同个数或者不同类型的参数来决定最终调用哪一个同名的方法。方法重载其实是程序编译时的多态性,即代...原创 2018-08-16 10:34:08 · 3497 阅读 · 0 评论 -
java 根据当前年月获取学年和学期
有时候,我们想根据当前的年月获取到当前是哪个学年,哪个学期,现在分享一下获取的java代码package com.ctp.ghub.utils;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import o...原创 2018-08-28 10:54:53 · 2562 阅读 · 0 评论 -
HashMap实现原理
HashMap是基于哈希表的Map接口的非同步实现,也就是说不是线程安全的。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。简单来说,HashMap由数组+链表组成的,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的,如果定位到的数组位置不含链表(当前entry的next指向null),那么对于查找,添加等操...原创 2018-09-11 17:25:49 · 783 阅读 · 0 评论 -
使用jsoup解决xss(跨站脚本攻击)威胁
1. 在介绍jsoup之前,首先来详细介绍一下关于xss的信息。1.1 什么是xss Cross-Site Scripting(XSS)是一类注入问题,恶意脚本被注入到健康的、可信任的网站。当一个攻击者通过一个网站应用程序, 以浏览器端脚本的形式,给另一端的用户发送恶意代码时,XSS攻击就发生了。允许这种攻击成功的缺陷广泛存在于各个大小网站, 只要这个网站某个页面将用户的输...原创 2018-09-07 11:33:14 · 3006 阅读 · 0 评论 -
ArrayList和LinkedList的区别
引言:ArrayList和LinkedList都是实现了List接口的容器类,都可以用来用于存储一系列的对象引用。但是他们两者内部的结构却是完全不一致的,ArrayList的内部是基于数组的,而LinkedList的内部却是基于循环双向链表的。下面通过查看两者的源码,来理解内部的实现原理。1. ArrayList ArrayList 是一个数组构成的队列,相当于动态大小的数...原创 2018-09-10 17:40:31 · 304 阅读 · 0 评论 -
Java得到系统时间到第二天凌晨的时间差
/** * 得到系统时间到第二天凌晨的时间差 * 返回毫秒数 * @param date * @return */public static long getSecondDayDifference(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); int day = c...原创 2019-03-16 14:28:47 · 1959 阅读 · 0 评论