Vector
什么是Vector类似于ArrayList,Vector也是由数组组成,默认的初始化大小是【10】但是Vector是线程安全的,在大多数的方法上面都存在synchronized关键字如果需要进行扩容,每次扩容大小默认为【2】,注意(capacityIncrement > 0)是双括号条件 Vector和ArrayList的区别1.vector默认构造还是饿汉式,而arrayList在1.8后改为了懒汉式2.Vector 是多线程安全的,线程安全就是说多线程访问同一代码,不会产生不确定的结果,而 ArrayList 不是,这个可以从源码中看出,Vector 类中的方法很多有 synchronized 进行修饰,这样就导致了 Vector 在效率上无法与 ArrayList 相比【第二张图能体现】3.vector可以设置增长因子【默认0】 以2倍的方式扩容,导致下一次申请的内存必然大于之前分配内存的总和,导致之前分配的内存不能再被使用,所以最好倍增长因子设置为(1,2)之间 4.因为考虑到线程安全的问题,效率比较低可以用什么代替VectorCopyOnWriteArrayL...
ArrayList和LinkedList区别
这是一道比较经典的面试题 主要不同点: 数据结构不同 效率不同 空间灵活性和占用内存不同注意点: 在新建ArrayList的时候最好指定初始化大小,防止频繁扩容影响效率 在jdk1.7中ArrayList默认初始化大小为10,每次扩容0.5(1.5倍)【饿汉式】 在jdk1.8中ArrayList默认为空数组,第一次add的时候会设置为10,如果满了再自动扩容【懒汉式】 1.LinkedList实现了Deque接口,可以作为双端队列使用 2.因为数据结构不同,ArrayList是数组结构,LinkedList是双向链表结构 ArrayList指定下标查询的时候有优势,因为数组是提前分配好内存空间的 LinkedList指定下标(get)查询时候需要去遍历这个链表,才能找到指定下标位置 当Linkedlist获取第一个元素(getFirst)和最后一个元素(getLast)的速度也是非常快的原因:在LinkedList中有两个属性,first和last它俩会一直持续记录着第一个元素和最后一个元素的位置(不会涉及到遍历操作)3.由于底层数据结构不同,ArrayList更适合随机...
驼峰命名转换工具类
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136package com.tiantai.policys.commons.utils.common;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject; import java.util.*; /** * @Description JOSNObject 驼峰转换工具 * @Author Wan...
对象转MAP工具类
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849package com.service.zxing.util;import java.lang.reflect.Field;import java.lang.reflect.Modifier;import java.util.HashMap;import java.util.Map;public class BeanMapUtilByReflect { /** * 对象转Map * @param object * @return * @throws IllegalAccessException */ public static Map beanToMap(Object object) throws IllegalAccessException { Map<String, Object> map = new H...
IDEA自定义注释模版
1.配置模板组 2.填写参数 1234567** * TODO * @Author:Foam * @Date:$date$ $time$$param$ * @return $return$ **/ 3.设置表达式 param表达式1groovyScript("def result='';def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();for(i = 0; i < params.size();i++) {result+=' * @param ' + params[i] + ((i < params.size() - 1) ? '\\n':'')}; return result", methodParameters()) return表达式1...
JVM的组成
Java Virtual Machine虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现,java虚拟机有自己完善的硬件架构,如处理器,堆栈,寄存器等,还具有相应的指令系统 一次编译,到处运行Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行 开篇程序在执行之前,先要把Java代码编译成字节码(.class文件),JVM首先需要把字节码通过类加载器把文件加载到内存中的运行时数据区中。因为字节码文件是JVM的一套指令集规范,并不能直接交给底层操作系统去执行,因此需要执行引擎将字节码翻译成底层系统指令再交由CPU去执行,而这个过程中需要调用本地库接口来实现整个程序的功能。 完整构成 基本构成 类加载器-ClassLoaderClassLoader 负责加载字节码文件即 class 文件 魔数:0X CA FE BA BE()如果一个文件不是以0xCAFEBABE 开头的,那它肯定不是java class文件 ClassLoader 只负责...
openFeign引入失败
最近用nacos集成openFeign的时候,遇到一直引入不了依赖 12345<!-- 添加 openfeign 框架依赖 --><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></dependency> 一开始以为是maven源的问题,所以加了特别多的仓库都没有解决,后面试着加版本号,没想到就解决了 123456<!-- 添加 openfeign 框架依赖 --><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>2.1.1.RELEASE<...
maven数据源
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889<mirror> <id>aliyun-public</id> <mirrorOf>*</mirrorOf> <name>aliyun public</name> <url>https://maven.aliyun.com/repository/public</url></mirror><mirror> <id>aliyun-central</id> <mirrorOf>*</mirrorOf> <name>aliyun central</name>...
创建型模式-工厂模式
前言工厂模式是最常用的创建型模式,分为三种:简单工厂模式,工厂方法模式和抽象工厂模式 源码场景(后续补充)线程池:ThreadFactory在线程池构建 Worker 的时候会通过调用传入线程工厂对象的 newThread() 方法创建Worker 持有的线程 日志:LoggerFactorySpring:BeanFactoryMyBatis:SqlSessionFactory简单工厂模式简单工厂模式并不属于GoF 23个经典设计模式,但通常将它作为学习其他工厂模式的基础 角色Factory 工厂角色 工厂角色即工厂类,它是简单工厂模式的核心,负责实现创建所有产品实例的内部逻辑;工厂类可以被外界直接调用,创建所需的产品对象;在工厂类中提供了静态的工厂方法factoryMethod(),它的返回类型为抽象产品类型Product 123456789101112131415class ChartFactory { //静态工厂方法 public static Chart getChart(String type) { Char...
网页添加L2D猫
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102<!DOCTYPE html><!-- saved from url=(0047)https://www.cnblogs.com/icemomo/p/16004713.html --><html lang="zh-cn" style="--olcb-folder-code-block-max-height:80vh;" class="windows desktop landscape" mode="light" theme="a"><head>&...
