java
文章平均质量分 70
王小闹儿
这个作者很懒,什么都没留下…
展开
-
Jmeter入门
Jmeter目录结构backups :脚本备份目录。格式JMXbin目录:存放Jmeter的启动脚本,配置文件。模块文件。jmeter.bat启动Jmeter jmeter.properties核心配置文件。docs :离线帮助文档。extras :存放与第三方的集成构建文件。集成Ant,Jenkins.lib目录:存放jar包。licensce.:许可证文件。Jmeter常用组件1.测试计划: 起点。所有组件的容器。2.线程组:代表一定数量的用户。3.取样器:像..原创 2022-03-26 15:13:21 · 1145 阅读 · 1 评论 -
Docker入门
一、概述1.1 Docker为什么出现实现项目带上环境安装打包的需求,避免出现“项目在我这里可以运行,你那边就报错”的情况。1.2 Docker能干什么1.2.1 虚拟机技术的缺点1. 资源占用十分多2. 冗余步骤多3. 启动慢1.2.2 容器化技术容器化技术不是模拟一个完整的操作系统。1.2.3 Docker和虚拟机的区别虚拟机虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件 容器内的应用直接运...原创 2021-12-27 23:56:14 · 486 阅读 · 0 评论 -
JAVA面试考点—— ConcurrentHashMap源码级解读
目录一. hashmap回顾1.1 基本结构1.2 hashMap分布策略1.3 问题1.4 为什么不使用锁解决线程安全问题二.ConcurrentHashMap2.1 java1.7 版本实现机制分段锁机制源码分析一. hashmap回顾1.1 基本结构HashMap存储的是存在映射关系的键值对,存储在被称为哈希表的数据结构中。通过计算key的hashCode来确定键值对在数组中的位置。假如产生碰撞,则使用链表或者红黑树。...原创 2021-11-06 10:45:37 · 363 阅读 · 0 评论 -
JAVA面试考点——Reentrantlock
1.作用ReentrantLock基于AQS,在并发编程中它可以实现公平锁和非公平锁来对共享资源进行同步。同时,和synchronized一样,ReentrantLock支持可重入,除此之外,ReentrantLock在调度上更灵活,支持更多丰富的功能。2. LockReentrantLock 实现了Lock接口。Lock的意义在于提供了区别于synchronized的另一个具有更多广泛操作的同步方式,他能支持更多灵活的结构,并且可以关...原创 2021-11-03 00:20:28 · 515 阅读 · 0 评论 -
解决JPA懒加载典型的N+1问题-注解@NamedEntityGraph
解决JPA懒加载典型的N+1问题-注解@NamedEntityGraph - EalenXie - 博客园原创 2021-10-29 13:00:42 · 7041 阅读 · 0 评论 -
JAVA面试考点——java锁机制(synchronize原理、无锁编程、CAS、AQS)
目录1. 什么是锁2. java锁机制3. synchronize原理4. 锁的四种状态,synchronized中的锁如何变化偏向锁轻量级锁自旋锁重量级锁1. 什么是锁在并发环境下。多个线程会对同一个资源进行争抢,可能会导致数据不一致问题。因此可以使用锁机制,通过一种抽象的锁来对资源进行锁定。2. java锁机制java中,每个对象有一把锁,这把锁存放在对象头中。java对象包含了三个部分:对象头(存放对象运行时信息)...原创 2021-10-27 08:31:12 · 740 阅读 · 0 评论 -
JAVA面试考点—— JAVA集合容器梳理
目录1. 常用的集合2. 概念差别:3. 说一说hashMap的理解4. hashmap的实现方式4.1 node节点4.2 成员属性4.3transient 的作用5 hashMap扩容机制6. 线程安全情况1. 常用的集合List、Map、Set以及其子类List、Set实现了collection接口,Map实现单独接口——AbstractMap2. 概念差别:List有序,有序指的是插入的顺序;其中可以存放重复的值以及null值。Se..原创 2021-10-27 07:08:16 · 247 阅读 · 0 评论 -
JAVA面试考点—— CountDownLatch和Semaphore的区别和底层原理
CountDownLatch和Semaphore使用场景https://segmentfault.com/a/1190000038672250CountDownLatch、CyclicBarrier、Semaphore 用法总结https://segmentfault.com/a/1190000012234469CountDownLatch表示计数器,可以给CountDownLatch设置一个数字一个线程调用CountDownLatch的await()方法,将会阻塞其他线程可以调用C原创 2021-10-22 09:01:46 · 1124 阅读 · 0 评论 -
JAVA面试考点——String、StringBuffer、 StringBuilder的区别
String是final修饰的,不可变,每次操作都会产生新的String对象StringBuffer和StringBuilder都是在原对象上操作,是可变的。StringBuffer是线程安全的,StringBuffer方法都是synchronized修饰的;StringBuilder线程不安全的, 所以在单线程环境下StringBuilder效率会更高性能: StringBuilder > StringBuffer > String场景: 经常需要改变字符串内容时使用.原创 2021-10-15 08:33:30 · 131 阅读 · 0 评论 -
JAVA面试考点——CopyOnWriteArrayList的底层原理是怎样的
1. 首先CopyOnWriteArrayList内部也是用过数组来实现的,在向CopyOnWriteArrayList添加元素时, 会复制一个新的数组,写操作在新数组上进行,读操作在原数组上进行2 .并且,写操作会加锁,防止出现并发写入丢失数据的问题3.写操作结束之后会把原数组指向新数组4. CopyOnWriteArrayList允许在写操作时来读取数据,大大提高了读的性能,因此适合读多写少的应用场景,但是CopyOnWriteArrayList会比较占内存,同时可能读到的数据不是实时最新的数原创 2021-10-15 08:27:21 · 208 阅读 · 0 评论 -
JAVA面试考点——List和Set的区别
List有序,按对象进入的顺序保存对象 可重复,允许多个Null元素对象 可以使用Iterator取出所有元素,在逐一遍历 还可以使用get(int index)获取指定下表的元素Set无序,不可重复,最多允许有一个Null元素对象 取元素时只能用Iterator接口取得所有元素,在逐一遍历各个元素...原创 2021-10-15 08:23:39 · 116 阅读 · 0 评论 -
JAVA面试考点——JDK、JRE、JVM三者区别和联系
jDK:Java Develpment Kit java开发工具JRE:Java Runtime Environment java运行时环境JVM:java Virtual Machine java虚拟机原创 2021-10-15 08:21:02 · 150 阅读 · 0 评论 -
JAVA面试考点——Java中的异常体系
Java中的所有异常都来自顶级父类Throwable。Throwable下有两个子类Exception和Error。1. Error是程序无法处理的错误,一旦出现这个错误,则程序将被迫停止运行。2. Exception不会导致程序停止,又分为两个部分RunTimeException运行时异常CheckedException检查异常。RunTimeException常常发生在程序运行过程中,会导致程序当前线程执行失败。 CheckedException常常发生在程序编译过程中,会导致程序编译原创 2021-10-15 08:17:21 · 159 阅读 · 0 评论 -
JAVA面试考点——HashMap和HashTable的区别及实现原理
hashtable已经不怎么被使用了区别:(1) HashMap方法没有synchronized修饰, 线程非安全,HashTable线程安全; (2) HashMap允许key和value为null,而HashTable不允许HashMap底层实现: 数组+链表实现jdk8开始链表高度到8、数组长度超过64,链表转变为红黑树,元素以内部类Node节点存在计算key的hash值, 二次hash然后对数组长度取模,对应到数组下标, 如果没有产生hash冲突(下标位置没有..原创 2021-10-13 12:34:43 · 162 阅读 · 0 评论 -
JAVA面试考点——ConcurrentHashMap原理以及扩容机制
目录1.7版本1.8版本1.7版本 1.7版本底层示例1. ConcurrentHashMap是基于Segment分段实现的2.每个Segment相对于一个小型的HashMap3. 扩容时,对待扩容Segment内部会进行扩容,不影响其他Segment对象4. 扩容时,先生成新的数组,然后转移元素到新数组中5. 扩容的判断也是每个Seg...原创 2021-10-12 09:09:14 · 3160 阅读 · 0 评论 -
JAVA面试考点——ArrayList和LinkedList区别
1. 首先,他们的底层数据结构不同,ArrayList底层是基于数组实现的,LinkedList底层是基于链表实现的2. 由于底层数据结构不同,他们所适用的场景也不同,ArrayList更适合随机查找, LinkedList更适合删除和添加, 查询、添加、删除的时间复杂度不同3. 另外ArrayList和LinkedList都实现了List接口,但是LinkedList还额外实现了 Deque接口,所以LinkedList还可以当做队列来使用ArrayLis基于动态数组,连续内存存储.原创 2021-10-12 08:35:37 · 363 阅读 · 0 评论 -
JAVA面试考点——Java HashMap 方法以及扩容原理
Java HashMap 常用方法列表如下:方法 描述 clear() 删除 hashMap 中的所有键/值对 clone() 复制一份 hashMap isEmpty() 判断 hashMap 是否为空 size() 计算 hashMap 中键/值对的数量 put() 将键/值对添加到 hashMap 中 putAll() 将所有键/值对添加到 hashMap 中 putIfAbsent() 如果 hashMap 中不存在指定原创 2021-10-11 08:26:40 · 236 阅读 · 0 评论 -
leetcode——两数之和
给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], t...原创 2021-10-11 08:27:31 · 95 阅读 · 0 评论 -
jpa CriteriaBuilder
JPA动态查询CriteriaBuilder cb=entityManager.getCriteriaBuilder();CriteriaQuery<T> query=cb.createQuery(clazz);//clazz是你想要转换的类型,就是你的Entity.claa,如果你查的是count,就是Long.claaRoot<T> root=query.from(clazz);query.select(root);//选取实体Predicate predica原创 2021-10-03 18:05:55 · 1036 阅读 · 0 评论 -
MemoryMap 四种文件读写速度测试
package com.example.demo;import java.io.BufferedInputStream;import java.io.IOException;import java.io.InputStream;import java.io.RandomAccessFile;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel;import java.nio.file.Files;i...原创 2021-08-05 07:11:04 · 296 阅读 · 0 评论 -
stream api
目录一、为什么使用stream api1.1 基本介绍1.2 代码示例1.3 常用API以及使用场景二、stream擅长解决的问题2.1 场景一: 跨库join的问题2.2 场景二:N+1 问题三、 Stream和Collection集合的区别:3.1 stream的操作三个步骤——流的执行过程四、 并行流与串行流五、 Stream实例化5.1 创建Stream方式一: 通过集合5.2 创建Stream方式二:通过数组5.3创建Stream方式三...原创 2021-07-26 22:43:43 · 843 阅读 · 0 评论 -
java多线程和线程池
目录零、java线程理解0.1 两种线程模型0.1.1 用户级线程 ULT0.1.2 内核级线程 KLT——JAVA虚拟机使用的线程模型(KLT)0.2 java线程与系统内核线程0.3 线程池的意义0.4 线程0.4.1线程五种状态0.4.2 高并发下,线程池如何保证线程安全0.4.3 多线程的使用场景0.4.4 多线程的创建方式0.4.4 多线程的停止0.4.5控制多线程的运行顺序——join方法一、线程池基本概念和使用示例1.1 基本...原创 2021-07-23 08:22:29 · 5546 阅读 · 5 评论 -
idea的一些技巧
ctrl+shift+alt+u=方法的调用图原创 2021-07-21 08:03:26 · 91 阅读 · 0 评论 -
分库分表基础 && sharding-jdbc简介
目录一、什么是分库分表1.1 基本概念1.2 实例1.3 那么一张表数据量多大时,才需要分库分表呢?二、分库分表要怎么分?2.1 垂直分库2.2 水平切分2.2.1 基本概念2.2.2 问题:三、sharding-jdbc 分表实例课程链接:https://ke.qq.com/course/1740735?taid=7997207632056255一、什么是分库分表1.1 基本概念把原来存储在一个数据库中的数据,分开存入多个数据库...原创 2021-06-22 01:11:15 · 142 阅读 · 0 评论 -
spring项目接入flyway(二)特性(简写,后续补充实操)
guan'fanhttps://flywaydb.org/documentation/usage/maven/flyway需要Maven3.x版本,支持java8及以上版本原创 2021-06-20 09:22:27 · 164 阅读 · 0 评论 -
spring项目接入flyway(一) 背景、快速入门
官方文档:https://flywaydb.org/documentation/原创 2021-06-19 23:31:21 · 2040 阅读 · 0 评论 -
SpringBoot2核心功能(五)原理解析(Profile功能、外部化配置)
目录一、Profile功能1.1 application-profile功能1.2@Profile条件装配功能1.3 profile分组二、外部化配置2.1 外部配置源2.2 配置文件查找位置2.3 配置文件加载顺序:一、Profile功能为了方便多环境适配,springboot简化了profile功能。1.1 application-profile功能1. 默认配置文件 application.yaml;任何时候都会加...原创 2021-06-12 16:27:55 · 453 阅读 · 0 评论 -
SpringBoot2核心功能(四)指标监控
目录一、SpringBoot Actuator1.1 简介1.2 1.x与2.x的不同1.3 如何使用1.4 可视化二、Actuator Endpoint2.1最常使用的端点2.2 Health Endpoint2.3 Metrics Endpoint2.4 管理Endpoints2.4.1 开启与禁用Endpoints2.4.2 暴露Endpoints三、定制 Endpoint3.1定制 Health 信息3.2 定制info信息3.2...原创 2021-06-12 14:57:59 · 198 阅读 · 0 评论 -
SpringBoot2核心功能(三)单元测试
https://www.yuque.com/atguigu/springboot/ksndgx原创 2021-06-12 13:38:19 · 128 阅读 · 0 评论 -
SpringBoot2核心功能(二)数据访问
一、sql1.数据源的自动配置-HikariDataSource原创 2021-06-12 01:22:03 · 496 阅读 · 1 评论 -
SpringBoot2核心功能(一)配置文件、web开发
目录一、配置文件1.1 文件类型1.1.1 properties1.1.2 yaml1.2 配置提示二、web开发2.1 SpringMVC自动配置概览2.2 简单功能分析2.2.1 静态资源访问2.2.2 静态资源访问前缀2.2.3 欢迎页支持2.2.4 自定义 Favicon2.2.5 静态资源配置原理2.2.6 扩展知识——配置类只有一个有参构造器,则有参构造器所有参数的值都会从容器中确定2.2.7 资源处理的默认规则2.3请求参数.原创 2021-06-11 18:49:00 · 218 阅读 · 0 评论 -
SpringBoot2基础(三)Lombok、Spring Initailizr、dev-tools
LombokSpring Initailizrdev-tools原创 2021-06-10 13:00:53 · 83 阅读 · 0 评论 -
SpringBoot2基础(二)SpringBootApplication源码分析
三、自动配置原理入门3.1 引导加载自动配置类3.2 按需开启自动配置项3.3 定制化修改自动配置3.4 最佳实践●引入场景依赖●查看自动配置了哪些●是否需要定制化●参照敗档修改配置项●自定义加入或者替换组件...原创 2021-06-10 11:39:08 · 649 阅读 · 0 评论 -
SpringBoot2基础(一) settings.xml配置maven源、注册组件、配置绑定
基本要求java8及以上,maven 3.3及以上原创 2021-06-09 01:15:29 · 2122 阅读 · 1 评论 -
java基础(十二)java9新特性
➢模块化系统➢jShell命 令➢多版本兼容jar包➢接口的私有方法➢钻石操作符的使用升级语法改进: try语们➢String存储结构变更➢便利的集合特性: of()➢增强的Stream API➢全新的HTTP客户端API➢Deprecated的相关API➢javadoc的HTML 5支持➢Javascript引 擎升级: Nashorn➢java的动态编译器...原创 2021-06-06 16:59:25 · 98 阅读 · 1 评论 -
java基础(十一)java8新特性(lambda表达式、函数式接口、方法引用、stream、optional)
一、lambda表达式二、函数式接口三、fang'f原创 2021-06-06 15:14:52 · 494 阅读 · 1 评论 -
java基础(十)动态代理基础
目录一、基本概念1.1 代理设计模式的原理1.2 动态代理1.2.1 静态代理代码示例1.2.2 动态代理示例1.2.3 动态代理与AOP(Aspect Orient Programming)概述一、基本概念1.1 代理设计模式的原理使用一个代理将对象包装起来, 然后用该代理对象取代原始对象。任何对原始对象的调用都要通过代理。代理对象决定是否以及何时将方法调用转到原始对象上。1.2 动态代理动态代理是指客户通过代理类来调用其它对象的方法,并且是...原创 2021-06-05 09:29:28 · 166 阅读 · 1 评论 -
java基础(九)反射
目录一、Java反射机制概述1.1 基本概念1.2 反射机制提供的功能1.3 反射相关的主要API二、理解Class类并获取Class实例2.1 关于java. lang. Class类的理解2.1.1 类的加载过程:2.1.2 获取class的实例方法2.2 那些类型可以有class对象?三、类的加载与ClassL oader的理解3.1 类的初始化3.2 类加载器3.2.1 类加载的作用3.2.2类缓存3.2.3 classLoader..原创 2021-06-04 22:47:49 · 193 阅读 · 1 评论 -
maven配置
配置方式:https://www.runoob.com/maven/maven-setup.html问题记录原创 2021-05-31 11:59:44 · 274 阅读 · 0 评论 -
java基础(八)IO流
一、IO流file类的使用IO流概述节点liu原创 2021-06-01 08:44:31 · 168 阅读 · 1 评论