都说新的Arraylist 扩容是(1.5倍+1) 看了1.8的源代码发现不是这么回事 就用下面这段代码在jdk的三个版本运行看了下效果: import java.lang.reflect.Field; import java.util.ArrayList; public class ArrayListDemo { public static void main(String[] args) { ArrayList<Integer> list1 = new ArrayList<Integ…
都说新的Arraylist 扩容是(1.5倍+1) 看了1.8的源代码发现不是这么回事 就用下面这段代码在jdk的三个版本运行看了下效果 import java.lang.reflect.Field; import java.util.ArrayList; public class ArrayListDemo { public static void main(String[] args) { ArrayList<Integer> list1 = new ArrayList<Intege…
 都说新的Arraylist 扩容是(1.5倍+1) 看了1.8的源代码发现不是这么回事 就用下面这段代码在jdk的三个版本运行看了下效果: import java.lang.reflect.Field; import java.util.ArrayList; public class ArrayListDemo { public static void main(String[] args) { ArrayList<Integer> list1 = new ArrayList<Inte…
面试中经常问到的问题之一就是List的扩容机制了,他是怎么做到扩容的,大家都能答出来底层是数组,复制一个数组来扩容,但是再具体一点来说,大家就不知道该怎么说了,如果不看源码说这么多确实就差不多了,但是看了源码你会说的更多,更详细,更具体,本篇主要看的是jdk1.8  至于其他版本大同小异,看看就知道了,言归正传 1)List扩容实现步骤 总的来说就是分两步:1.扩容 把原来的数组复制到另一个内存空间更大的数组中 2.添加元素 把新元素添加到扩容以后的数组中 2)源码分析 先把ArrayList中…
ArrayList初始化 问题:执行以下代码后,这个list的列表大小(size)和容量(capacity)分别是多大? List<String> list = new ArrayList<>(); 答案是:size = 0, capacity = 0,即我们使用无参构造方法创建ArrayList对象时,大小和容量都是为0. 那么如果我继续执行: for(int i=0;i<100;i++) { list.add(String.valueOf(i)); } 每次add之后,s…
一.先从 ArrayList 的构造函数说起 ArrayList有三种方式来初始化,构造方法源码如下: 1 /** 2 * 默认初始容量大小 3 */ 4 private static final int DEFAULT_CAPACITY = 10; 5 6 7 private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; 8 9 /** 10 *默认构造函数,使用初始容量10构造一个空列表(无参数构造) 11 */…
写在前面 以前一直用的elipce,如今入坑IntelliJ IDEA,没想到啊.深深的爱上了它,强大到无所不能: "工欲善其事必先利其器",IntelliJ IDEA作为一个非常好用的工具,他的神奇之处真的很多很多,掌握了这款idea的技巧之后,开发效率至少提升两倍以上,而且对一些英语不好的学习者也是非常友好,这篇文章详细的介绍了常用快捷键以及一些非常实用的小工具,感兴趣的小伙伴们赶快来学习: 熟练掌握这些操作,编码速度与质量一定能得到一个质的飞跃: 一.视图查看 Ctrl+F12…
1:代码解读和分析 1.1:构造方法分析 1: public ArrayList(int initialCapacity) { ) { this.elementData = new Object[initialCapacity]; } ) { this.elementData = EMPTY_ELEMENTDATA; } else { throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); }…
public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = e; return true; } private void ensureCapacityInternal(int minCapacity) { // 如果是个空数组 if (elementData == EMPTY_ELEMENTDATA) { // 取minCapacity和10的…
简介 来源:博客园    作者:吾王彦 博客链接:https://www.cnblogs.com/qinjunlin/p/13724987.html ArrayList动态数组,是 java 中比较常用的数据结构.继承自 AbstractList,实现了 List 接口.底层基于数组实现容量大小动态变化.本随笔主要讲述ArrayList的扩容机制以及它的底层实现.如果懒得看整个分析过程,你可以直接查看文章最后的总结. 成员变量 1 private static final int DEFAULT…
jdk1.5 public ArrayList(int initialCapacity) { super(); if (initialCapacity < 0) throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); this.elementData = (E[])new Object[initialCapacity]; } 可以看出,如果在初始化ArrayList时进行赋值,那么开始是…
在使用fdfs之前,需要对其有一定的了解,这篇文章作为准备篇,将针对fdfs的简介,功能性,使用场景等方面进行介绍 一):起源 淘宝网开放平台技术部资深架构师余庆先生首先回顾了自己在Yahoo工作时的经历,他表示Yahoo当时的相册和论坛系统整个结构都进行了针对大规模分布式存储和并发操作的改进. 余庆从整个分布式文件系统的发展说起,谈到了FastDFS文件系统的概念和具体优缺点. 据了解,yahoo论坛和相册以前一直面临着扩容问题,同步延迟问题,同步失败问题等.其pat同步.定式扫描以及farm…
最近空闲时间去面试 , 被问了一个问题list如何去重合并 , 想了半天只想到了最繁琐的循环方法 , 顿觉丢人. 整理一下资料供大家参考: List<String> a = new ArrayList<String>(); a.add("2"); a.add("4"); a.add("5"); a.add("6"); List<String> b = new ArrayList<Str…
特性: HashMap 与 Hashtable 的分析: 1):HashMap简介 1.底层数组+链表实现,可以存储null键和null值,线程不安全 2.HashMap 不是线程安全的 3.HashMap 是 map 接口的子类. 4.HashMap 允许null key 和 null value. 5.允许 key 重复,但是会把之前的覆盖. 6.HashMap 是 Hashtable 的轻量级实现(非线程安全的实现),他们都完成了Map接口. 7.HashMap 是 reHash算法,而…
这里主要以案例演示:涵盖以下知识点 1.动态方法调用:使用关键 符号 ! 进行操作   例如:/命名空间 ! 方法名 2.动态结果集:就是说,通过后台返回的结果 ${} 获取,重定向到符合预期的页面. 3.万能通配符:*_*  :第一个 * 为 类名.第二个 * 为方法名:{1}是第一个 * 4.内部方法的调用:就是说 Action 类中的 A()  调用 B()  A方法返回B()的结果集 5.跳转Action:就是说访问一个方法,根据返回的结果匹配 result中的 name 值 跳入下一个…
关联关系映射--概念: 关联关系是使用最多的一种关系,非常重要.在内存中反映为实体关系,映射到DB中为主外键关系. 实体间的关联,即对外键的维护.关联关系的发生,即对外键数据的改变. 外键:外面的主键,即,使用其它表的主键值作为自已的某字段的取值. 1) 基本概念: 关联属性:Java代码的实体类定义中,声明的另一个实例类类型或其集合类型的属性,称为关联属性. 关联关系维护:关联关系的维护,也称为外键维护,即为外键字段赋值.Hibernate默认情况下,关联的双方都具有维护权.即在代码中均可通过…
一段java代码 String e = "q3234v"; List<String> list = new ArrayList<String>(); for (int i = 0; i < 25; i++) { list.add(e); } 执行这段代码,list会扩容几次 查看ArrayList的add方法,在添加元素之前会执行ensureCapacityInternal方法 这个时候size为0 public boolean add(E e) { en…
今天上午上课在看JavaSE的面经,其中有问关于ArrayList和LinkedList的区别,就突然思考到,既然ArrayList是采用数组形式存储数据,对比我们自己使用到的数组,为什么ArrayList的容量似乎是"无限"的.关于这个问题,我查看了ArrayList的源码. @java.io.Serial private static final long serialVersionUID = 8683452581122892189L; /** * Default initial…
<%-- Created by IntelliJ IDEA. User: asus Date: 2019/1/24 Time: 15:57 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false&qu…
Oracle 索引的目标是避免全表扫描,提高查询效率,但有些时候却适得其反. 例如一张表中有上百万条数据,对某个字段加了索引,但是查询时性能并没有什么提高,这可能是 oracle 索引失效造成的.oracle 索引有一些限制条件,如果你违反了这些索引限制条件,那么即使你已经加了索引,oracle还是会执行一次全表扫描,查询的性能不会比不加索引有所提高,反而可能由于数据库维护索引的系统开销造成性能更差. 下面就是总结的能使 Oracle 索引失效的七大限制条件. 1. 没有 WHERE 子句 2.…
Spring通过ThreadPoolTaskExecutor实现线程池技术,它是使用jdk中的Java.util.concurrent.ThreadPoolExecutor进行实现. Spring 配置线程池,有两种方式: 方式一:XML定义bean <!-- 包路径扫描 --> <context:component-scan base-package="spring.task"/> <!-- Spring线程池 --> <bean id=&q…
IoC是什么: 1):Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想. 2):在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制. 如何理解好Ioc呢? 理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下: ● 谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象:而Io…
mysql的常用引擎 在MySQL数据库中,常用的引擎主要就是2个:Innodb和MyIASM. 首先: 1.简单介绍这两种引擎,以及该如何去选择. 2.这两种引擎所使用的数据结构是什么. Innodb引擎: 1):Innodb引擎,Innodb引擎提供了对数据库ACID事务的支持.并且还提供了行级锁和外键的约束.它的设计的目标就是处理大数据容量的数据库系统.它本身实际上是基于Mysql后台的完整的系统.Mysql运行的时候,Innodb会在内存中建立缓冲池,用于缓冲数据和索引.但是,该引擎是不…
原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后.重复第一趟步骤,直至全部排序完成. 第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参与比较: 第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比…
HttpClient: 场景需求如下: 1.项目中需要与一个基于HTTP协议的第三方的接口进行对接 2.项目中需要动态的调用WebService服务(不生成本地源码) 3.项目中需要利用其它网站的相关数据 这些需求可能或多或少的会发生在平时的开发中,针对每种情况,可能解决方案不止一种.本文使用HttpClient这种工具来讲解HttpClient的相关知识,以及如何使用HttpClient完成上述需求. HttpClient 不是浏览器? 有人说,HttpClient不就是一个浏览器嘛... 可…
前期工作:(引入相关 JAR ) <spring.quartz>1.8.4</spring.quartz> <!--spring 定时--> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>${spring.quartz}</version> <…
1):单一 zookeeper  搭建步骤 2):zookeeper 伪集群搭建 1):新建一个集群目录 [root@zoodubbo opt]# mkdir zookeeper_cluster 2):进入 zookeeper_cluster 目录 复制三份 zookeeper(这里我直接从单机哪里拷过来的) [root@zoodubbo zookeeper]# cp -r zookeeper-3.4.10 /opt/zookeeper_cluster/zookeeper01 [root@zoo…
实现多级分类: 1.双重 for 循环实现 N 及分类 /*** * 执行遍历 * * @param menus * 所有权限列表集合 * @param list * 指定角色查询到的 权限Id * @return */ @SuppressWarnings("unused") private List<MenuFunction> menuFunction(List<MenuFunction> menus, List<Integer> list) {…
HBase编程: 一):大数据(hadoop)初始化环境搭建 二):大数据(hadoop)环境搭建 三):运行wordcount案例 四):揭秘HDFS 五):揭秘MapReduce 六):揭秘HBase 七):HBase编程 ----------------------------------------------------------------- HBase JavaAPI概述: 1.HBase使用Java语言编写的,自然支持Java编程 2.支持CRUD操作:create read…
状态码 含义 100 客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应.服务器必须在请求完成后向客户端发送一个最终响应. 101 服务器已经理解了客户端的请求,并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求.在发送完这个响应最后的空行后,服务器将会切换到在Upgrade 消息头中定义的那些协议. 只有在切换新的协议更有好处的时候才应该采取类似措施.例如,切换到…