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 WangKu ...
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表达式1groov ...
对象转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 Hash ...
JVM的组成
Java Virtual Machine虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现,java虚拟机有自己完善的硬件架构,如处理器,堆栈,寄存器等,还具有相应的指令系统
一次编译,到处运行Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行
开篇程序在执行之前,先要把Java代码编译成字节码(.class文件),JVM首先需要把字节码通过类加载器把文件加载到内存中的运行时数据区中。因为字节码文件是JVM的一套指令集规范,并不能直接交给底层操作系统去执行,因此需要执行引擎将字节码翻译成底层系统指令再交由CPU去执行,而这个过程中需要调用本地库接口来实现整个程序的功能。我们通常所说的JVM组成指的是运行时数据区,因为通常需要程序员调试分析的区域就是运行时数据区,或者更具体地说是运行时数据区里面的堆(Heap)模块。
完整构成
基本构成
类加载器-ClassLoaderClassLoader 负责加载字节码文件即 class 文件class 文件在 ...
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</ve ...
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> & ...
网页添加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>< ...
创建型模式-工厂模式
前言工厂模式是最常用的创建型模式,分为三种:简单工厂模式,工厂方法模式和抽象工厂模式
源码场景(后续补充)
线程池:ThreadFactory在线程池构建 Worker 的时候会通过调用传入线程工厂对象的 newThread() 方法创建Worker 持有的线程
日志:LoggerFactory
Spring:BeanFactory
MyBatis:SqlSessionFactory
简单工厂模式简单工厂模式并不属于GoF 23个经典设计模式,但通常将它作为学习其他工厂模式的基础
角色
Factory 工厂角色
工厂角色即工厂类,它是简单工厂模式的核心,负责实现创建所有产品实例的内部逻辑;工厂类可以被外界直接调用,创建所需的产品对象;在工厂类中提供了静态的工厂方法factoryMethod(),它的返回类型为抽象产品类型Product
123456789101112131415class ChartFactory { //静态工厂方法 public static Chart getChart(String type) { C ...
mac安装软件
JDKhttps://www.cnblogs.com/imzhizi/p/macos-jdk-installation-homebrew.html
1234567891011121314151617181920212223242526272829303132333435363738# 最新版 Oracle JDKbrew cask install oracle-jdk# Oracle JDK11、Oracle JDK8 需要手动下载# https://www.oracle.com/hk/java/technologies/javase-downloads.html# 最新版 Oracle OpenJDKbrew cask install java# Oracle OpenJDK11brew cask install java11# 使用该命令则安装由 Oracle 提供的最新版的 OpenJDKbrew cask install java# 使用该命令则安装由 Oracle 提供的 OpenJDK11brew cask install java11# OpenJDK 在 Oracle ...