自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 swager2

概述通过注解,快速生成api文档(类似java的doc)使用依赖<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version></dependency><dependency> <group

2021-08-07 19:18:24 191

转载 CAP理论

CAP理论的理解概述CAP理论作为分布式系统的基础理论,它描述的是一个分布式系统在以下三个特性中:一致性(Consistency)可用性(Availability)分区容错性(Partition tolerance)最多满足其中的两个特性。也就是下图所描述的。分布式系统要么满足CA,要么CP,要么AP。无法同时满足CAP。       什么是 一致性、可用性和分区容错性分区容错性:指的分布式系统中的某个节点或者网络分区出现了故障的时候,整个系统仍然能对外提供满足一致性和可用性的服务。

2021-08-01 17:25:27 159

原创 elasticsearch-Rest-Client

java操作esspringboot整合1、依赖。版本需要与es一致<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.4.2</version></dependency>.

2021-07-14 07:29:39 914

原创 ElasticSearch下ik分词器的下载安装和自定义词库的创建

概述一个tokenizer(分词器)接收一个字符流,将之分割为独立的tokens(词元,通常是独立的单词),然后输出tokens流。ES提供了很多内置的分词器(标准分词器)。但是官方提供的分词器都是处理英文的,对于中文会按一个字符分割,这显然是不好用的,我们需要下载第三方的分词器,如IK分词器。IK分词器下载属于es的插件,所以需要安装到es容器中的的/usr/share/elasticsearch/plugins目录下,如果我们安装es时候做了文件挂载映射,n那么可以放在docker宿主机挂载es

2021-07-14 06:16:17 599

原创 docker下ElasticSearch的安装

elasticsearch安装运行1、下载镜像docker pull elasticsearch2、创建elasticsearch相关文件的映射挂在目录mkdir -p /mydata/elasticsearch/configmkdir -p /mydata/elasticsearch/data3、配置远程访问权限。es可以被远程任何机器访问echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.ym

2021-07-13 03:00:37 325 1

原创 设计模式(GOF23)

设计模式(GOF23)设计模式共23种,根据功能划分为创建型,结构性,行为行三种类型模式正确使用设计模式使程序更加标准化,提高编程思维和能力,使代码的可重用性高,可读性强,可维护性强创建型工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。达到创建、使用分离效果工厂模式定义一个用于创建对象的接口,子类想要什么对象就去调用创建该对象的接口方法1.简单工厂/** * 简单工厂模式 * 违背开闭原则 */public class BinGanFactory { //方法一

2021-06-11 18:36:10 127

原创 MYSQL常见内置函数

1111

2020-12-04 04:27:47 244

原创 Java 8新特性简述

Java 8新特性Lambda表达式本质:函数式接口的实例->: lambda操作符->左边:lambda形参列表(接口抽象方法的参数列表)->右边:lambda体 (重写的抽象方法的方法体)函数式接口消费型供给型函数型断定型Stream API使用StreamAPI对集合数据进行操作(类似sql对数据库的查询)执行流程Stream实例化中间操作 :过滤filter、distinct,切片limit、skip,排序sorted,替换map/flatMa

2020-12-02 22:01:36 191

原创 为什么List<Object> list1与List<String> list2没有继承关系

如果list1和list2有继承关系即List<String> list2=new ArrayList<String>List<Object> list1=list2如果允许这样编译会有什么问题呢?list1的引用指向的是和list1的new ArrayList<String>,list1.add相当于list2.add。就和list2的泛型设计相违背了...

2020-12-01 15:06:49 505

原创 JAVA的反射机制

Java反射机制概述动态语言的关键。反射机制允许程序在运行期间借助反射API获取操作任何类的属性和方法。java不是动态语言(编译后生成了class文件),但是通过反射机制,可以拥有动态语言的特性反射相关APIjava.lang.Class程序实例化类的过程:​ 运行时期间,当我们需要实例化任何一个类时,JVM会首先看在内存中是否有这个类,如果有(类已经被加载进内存,成为运行时类),那么会直接创建类实例;如果没有,那么就会根据类名去加载这个类(类的加载),便会为这个类产生一个Class对象

2020-11-26 21:47:46 93

原创 解决序列化问题,idea自动生成序列化标识符ID

序列化机制将内存中的java对象转化为和平台无关的二级制流,从而允许把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点(远程方法调用基础)。要求对象实现Serializable接口(允许被序列化)提供表示序列化版本标识符的静态变量private static final long serialVersionUID = 8756332011694696599L;注意点为了确保错误,需要显示的提供序列化版本标识符。虽然类实现了接口会分配标识符,但是会出现一个问题:

2020-11-24 10:18:35 827

原创 异常被捕获了之后的代码一定会执行,为什么还要finally

如果被捕获的代码中含有return,那么后面的代码就不会执行了,finally能保证及时return也会执行

2020-11-23 10:51:03 195

原创 集合框架与线程安全解决

集合框架结构线程安全vector、HashTable但是在实际使用中,我们解决线程安全问题多用Collections工具类的同步方法解决Collections 类中提供了多个 synchronizedXxx() 方法,该方法可使将指定集合包装成线程同步的集合,从而可以解决多线程并发访问集合时的线程安全问题public static void main(String[] args) { List list = new ArrayList<>(); l

2020-11-22 01:17:23 195 2

原创 HashMap底层实现源码解析

在JDK7版本中结构:数组+链表实例化 new HashMap() 此时创建了长度为16的Entry[ ] 数组transient Entry<K,V>[] table;static final float DEFAULT_LOAD_FACTOR = 0.75f;static final int DEFAULT_INITIAL_CAPACITY = 16;int threshold; //第一步public HashMap() { //传入默认容量16和负载因子0.

2020-11-21 17:47:35 121 1

原创 Set

Set实现类之一(无序,不可重复):HashSet特点:Hash 算法来存储集合中的元素,因此具有很好的存取、查找、删除性能。储存方式:数组+链表结构储存过程调用元素的hashCode()方法,计算hash值利用hash值根据算法计算出在数组中的位置,该位置如果没有数据,直接插入有数据的话,比较hash值,hash值不一样的话,则说明值不同,链式添加(如图)hash值一样的话,调用equals方法,返回true,说明值一样,添加失败;返回false,说明值不一样,添加成功..

2020-11-20 18:52:57 138 2

原创 为什么ArrayList查询快增删慢,LinkedList增删快,查询慢

LinkedList查询慢(链表的弊端)双向链表的查询逻辑是他会根据index的大小判断是从前开始遍历还是从后开始遍历,如果index更靠前就从前遍历,更靠后就从后遍历,也就是在查询过程中,会一次次的移动指针直到获取到index的值。 public E get(int index) { checkElementIndex(index); return node(index).item; } Node<E> node(int index) {

2020-11-20 16:10:12 5367 3

原创 枚举的使用和细节

类的对象只有有限个,确定的如果枚举对象就一个,那就和单例模式中的饿汉式类似枚举类对象的属性不应允许被改动, 所以应该使用 private final 修饰枚举类的使用 private final 修饰的属性应该在构造器中为其赋值若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应的 传入参数public class SeasonEnumOld { public static final SeasonEnumOld SPRING=new SeasonEnumOld("春天"

2020-11-19 22:47:31 107

原创 JDK8中的日期

Java 8 吸收了 Joda-Time 的精华,以一个新的开始为 Java 创建优秀的 API新的 java.time 中包含了所有关于本地日期(LocalDate)、本地时间(LocalTime)、本地日期时间(LocalDateTime)、时区(ZonedDateTime)和持续时间(Duration)的类。历史悠久的 Date 类新增了 toInstant() 方法,用于把 Date 转换成新的表示形式。这些新增的本地化时间日期 API 大大简化了日期时间和本地化的管理。LocalDat.

2020-11-19 11:47:01 83

原创 String、StringBuffer、StringBuilder区别

String(JDK1.0):不可变字符序列StringBuffer(JDK1.0):可变字符序列、效率低、线程安全StringBuilder(JDK 5.0):可变字符序列、效率高、线程不安全为什么StringBuffer是线程安全,StringBuilder是线程不安全的。StringBuffer所有方法都是同步方法,同步线程安全,效率低 @Override public synchronized StringBuffer append(Object obj) { to

2020-11-19 09:50:09 69

原创 JDK5后创建线程使用的Executors

池技术的好处提高响应速度(减少了创建新线程的时间)降低资源消耗(重复利用线程池中线程,不需要每次都创建)便于线程管理线程池的7大属性corePoolSize 线程池核心线程大小。线程池中会维护一个最小的线程数量,即使这些线程处理空闲状态,他们也不会自动销毁。maximumPoolSize 线程池最大线程数量。一个任务被提交到线程池以后,首先会找有没有空闲存活线程,如果有则直接执行,如果没有则会缓存到工作队列(后面会介绍)中,如果工作队列满了,才会创建一个新线程,然后从工作队列的头部取出

2020-11-18 15:39:15 88

原创 死锁问题

不同的线程分别占用对方需要的同步资源(监听器)不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的阻塞/** * 死锁演示 * @author lg * @date 2020-11-18 09:46 */public class ThreadTest05 { public static void main(String[] args) { String s1="同步监听器1"; String s2="同步监听器2"; new Th

2020-11-18 09:54:49 65

原创 为什么解决线程安全问题,多个线程要用同一个同步监听器,俗称锁

在线程抢占cpu的时候使用同一个同步监听器解决线程安全问题我是这样理解的。可以将一个线程理解为一个人,同步代码块为一个只有一个入口的房子。多个线程在想要进入房子的时候,cpu给入口安装了一个门,门上只有一把钥匙,这里的门和配对的钥匙就是同步监听器(锁对象了)。一个线程进入房子后,将钥匙带走,其他人没有钥匙就无法开门进入房子,只有等待那个线程从房子出来,将钥匙放回去让下拨人继续抢钥匙。抢到了才有机会进入,这里的门和钥匙就是唯一不变的。如果同步监听器不是同一个的话,会出现的问题就是,每个想要进房子的线程,

2020-11-17 16:41:06 270

原创 JAVA学习路线及重点

JAVA学习路线及重点基础枚举java常见关键字:final、static、this、super反射机制常见的设计模式:静态代理,动态代理,工厂模式,单例模式…BIO、NIO、AIO容器(集合)及源码解析java8新特性并发线程池乐观悲观锁ThreadLocal关键字分析并发容器AQS及同步组件JVMjava内存区域JVM垃圾回收机制JDK监控和故障处理工具类文件结构类加载过程JVM调优算法常见算法题型总结????指offer刷题网络及操作系

2020-11-15 23:09:33 65

原创 JAVA抽象类不能实例化为什么有构造方法

java规定类都要有一个构造方法,没有默认提供一个空参构造构造方法不是用来实例化的,而是用来给属性初始化赋值的,抽象方法可以定义属性,那么就需要构造方法给属性赋值。这里就可以理解为什么接口没有构造方法了所以属性必须是常量了。抽象方法需要被字类继承,字类的构造方法中是用super()调用父类的构造方法实例化的,如果抽象类没有构造方法,那么久无法被字类继承了。...

2020-11-15 00:07:20 3156 1

原创 为什么接口中的变量必须为public static final

public static的原因接口是一种高度抽象的"模版",他的所有属性应该是他的实现对象的抽取的公有特性。如果是非static的话,接口的实现类的静态方法就无法访问接口中的信息了,所以接口的属性和方法都是静态并且是public的final的原因接口中如果可能定义非final的变量的话,而方法又都是abstract的,这就自相矛盾了,有可变成员变量但对应的方法却无法操作这些变量,虽然可以直接修改这些静态成员变量的值,但所有实现类对应的值都被修改了,这跟抽象类有何区别? 又接口是一种更高层面的抽象,是

2020-11-13 17:20:13 1291

原创 spring data jpa中事务注解的使用与特定情况造成的异常

1.在SDJ的getOne方法必须添加事务管理注解原因:getOne底层使用的时jpa的getReference,即延迟加载,既然是延迟加载,那么事务一定不是同一个事务,此时需要添加事务注解保证在一个事务中2.在SDJ的保存修改方法中被事务管理的数据,在保存修改的操作会数据自动回滚,需关闭自动回滚@Rollback(false),这样数据才能持久化到数据库中...

2019-08-11 16:54:04 225

原创 ElasticsearchException[Elasticsearch exception [type=illegal_argument_exception

ElasticsearchException[Elasticsearch exception [type=illegal_argument_exception, reason=Fielddata is disabled on text fields by default. Set fielddata=true on [categoryName] in order to load fielddata...

2019-07-24 19:03:56 37222

原创 servlet-api 设置作用范围provided原因

在我们编写servlet时 HttpServletRequest和HttpServletResponse 等对象的是由servlet-api提供的,不导入servlet-api我们无法获取相应对象,但是在运行中,tomcat中也有这些对象,为了防止冲突,在配置pom文件时,在servlet-api 下设置作用范围<scope>provided</scope>,指该依赖不进行...

2019-07-15 15:00:28 1447

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除