![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 87
兰亭落雪
目的不能抵达怎么付出都是偏差。
展开
-
java集合继承关系
java集合继承关系图 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。 数组虽然也可以存储对象,但长度是固定的;集合长度是可变的,数组中可以存储基本数据类型,集合只能存储对象。 集合类的特点:集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。 上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线原创 2021-07-12 12:40:54 · 526 阅读 · 3 评论 -
MyBatis
MyBatis的优点(1)与JDBC相比,减少了50%以上的代码量。(2)MyBatis是嘴加单的持久层框架,小巧并且简单易学。(3)MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML文件里,从程序代码中彻底分离,降低耦合度,便于统一的管理和优化,并可重用。(4)提供XML标签,支持编写动态的SQL,满足不同的业务需求。(5)提供映射标签,支持对象与数据库的ORM字段关系映射。MyBatis的缺点(1)SQL语句的编写工作量较大,对开发...原创 2021-06-05 16:22:30 · 193 阅读 · 0 评论 -
LinkedBlockingQueue
一、定义LinkedBlockingQueue继承自AbstractQueue,实现了BlockingQueue,Serializable接口。LinkedBlockingQueue是一个基于已链接节点的,范围任意的blocking queue 此队列按FIFO(先进先出)排序元素 新元素插入到队列的尾部,并且队列获取操作会获得位于队列头部的元素 链接队列的吞吐量通常要高于基于数组的对列(ArrayBlockingQueue),但是在大多数并发应用程序中,其可预知的性能要低 可选的容量范围原创 2021-04-30 10:39:15 · 30331 阅读 · 6 评论 -
JAVA 缓存设计与实现
一、什么是缓存缓存(Cache)是在计算机上的一个原始数据的复制集,以便于访问。1、Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问2、凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为 Cache。缓存术语:1.缓存命中:当客户端请求的数据在缓存中,这个缓存中的数据就会被使用,这一行为被称为缓存命中2.没有命中:缓存中没有查询到数据,并且数据库中可以查到此数据,并将数据放到缓存中3.缓存穿透:是指原创 2021-04-29 16:59:38 · 524 阅读 · 0 评论 -
2021-04-28
1.java自动管理堆(heap)和(栈),程序员不能直接的设置堆和栈。3.操作系统的堆和栈:堆(操作系统):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,分配方式类似于链表。栈(操作系统):由操作系统自动分配释放,存放函数的参数值,局部变量值等。操作方式与数据结构中的栈相类似。2.为什么jvm的内存是分布在操作系统的堆中呢??因为操作系统的栈是操作系统管理的,它随时会被回收,所以如果jvm放在栈中,那java的一个null对象就很难确定会被谁回收了,那gc的存在就一点意义都莫有了原创 2021-04-28 11:21:34 · 166 阅读 · 0 评论 -
环形缓冲区
一、定义缓冲区的好处,就是空间换时间和协调快慢线程。缓冲区可以用很多设计法,这里说一下环形缓冲区的几种设计方案,可以看成是几种环形缓冲区的模式。设计环形缓冲区涉及到几个点,一是超出缓冲区大小的的索引如何处理; 二是如何表示缓冲区满和缓冲区空; 三是如何入队、出队; 四是缓冲区中数据长度如何计算。...原创 2021-04-28 10:07:52 · 1005 阅读 · 0 评论 -
ThreadLocal
一、定义ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。这里有几点需要注意:因为每个 Thread 内有自己的实例副本,且该副本只能由当前 Thread 使用。这是也是 ThreadLocal 命名的由来。 既然每个 Thread 有自己的实例副本,且其它 Thread 不可访问,那就不存在多线程间共享的问题。ThreadLocal 提供了线程本地的实例。它与普通变量的区别在于,每个使用该变量的线程都会初始化一个完全原创 2021-04-27 15:21:08 · 688 阅读 · 0 评论 -
JAVA方法区
1.java自动管理堆(heap)和(栈),程序员不能直接的设置堆和栈。3.操作系统的堆和栈:堆(操作系统):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,分配方式类似于链表。栈(操作系统):由操作系统自动分配释放,存放函数的参数值,局部变量值等。操作方式与数据结构中的栈相类似。2.为什么jvm的内存是分布在操作系统的堆中呢??因为操作系统的栈是操作系统管理的,它随时会被回收,所以如果jvm放在栈中,那java的一个null对象就很难确定会被谁回收了,那gc的存在就一点意义原创 2020-11-25 09:27:27 · 1152 阅读 · 1 评论 -
反射
反射之中包含了一个「反」字,所以想要解释反射就必须先从「正」开始解释。一般情况下,我们使用某个类时必定知道它是什么类,是用来做什么的。于是我们直接对这个类进行实例化,之后使用这个类对象进行操作。Apple apple = new Apple(); //直接初始化,「正射」apple.setPrice(4);上面这样子进行类对象的初始化,我们可以理解为「正」。而反射则是一开始并不知道我要初始化的类对象是什么,自然也无法使用 new 关键字来创建对象了。这时候,我们使用 JDK 提供的原创 2020-11-23 19:47:27 · 201 阅读 · 0 评论 -
JAVA知识梳理(日常整理)
Java基础JAVA 中的几种数据类型是什么,各自占用多少字节。String 类能被继承吗,为什么。不能被继承,因为String类有final修饰符,而final修饰的类是不能被继承的。*很多时候会容易把static和final关键字混淆,static作用于成员变量用来表示只保存一份副本,而final的作用是用来保证变量不可变两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗?两个对象equals相等,则它们的hashcode必须相等,反之则不一定。原创 2020-11-14 21:21:30 · 552 阅读 · 1 评论 -
JAVA8 中 关于Map 新增 computeIfAbsent 方法的使用
方法定义 /* * @since 1.8 */ default V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) { Objects.requireNonNull(mappingFunction); V v; if ((v = get(key)) == null) {原创 2020-11-12 10:46:55 · 1202 阅读 · 0 评论 -
Thread优先级之优先级别
所谓的线程优先级高就是同其它线程争抢cpu的执行几率高而已,但是企图通过线程优先级来控制业务是不可行的。/** * <p>标题: Threadyield</p> * <p> * 功能描述:线程通过setpriority(int param)来设置优先级,优先级从低到高为1-10正整数。默认优先级为5。 * Thread有三个常量定义了线程的优先级范围 * Thread.MIN_PRIORITY;最低1 *原创 2020-11-11 17:01:48 · 3214 阅读 · 2 评论 -
Java的锁
Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录:1. 乐观锁 VS 悲观锁#乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。在Java和数据库中都有此.原创 2020-11-11 15:49:27 · 213 阅读 · 0 评论 -
一文了解ReentrantLock
java除了使用关键字synchronized外,还可以使用ReentrantLock实现独占锁的功能。而且ReentrantLock相比synchronized而言功能更加丰富,使用起来更为灵活,也更适合复杂的并发场景。这篇文章主要是从使用的角度来分析一下ReentrantLock。一、简介ReentrantLock常常对比着synchronized来分析,我们先对比着来看然后再一点一点分析。(1)synchronized是独占锁,加锁和解锁的过程自动进行,易于操作,但不够灵活。Reentra原创 2020-11-11 15:25:09 · 234 阅读 · 0 评论 -
java编程思想
1. Java中的多态性理解(注意与C++区分) Java中除了static方法和final方法(private方法本质上属于final方法,因为不能被子类访问)之外,其它所有的方法都是动态绑定,这意味着通常情况下,我们不必判定是否应该进行动态绑定—它会自动发生。 final方法会使编译器生成更有效的代码,这也是为什么说声明为final方法能在一定程度上提高性能(效果不明显)。 如果某个方法是静态的,它的行为就不具有多态性: class StaticSuper { public原创 2020-10-28 12:53:29 · 317 阅读 · 0 评论 -
@options
1.作用:(1)能够设置缓存时间;(2)能够为对象生成自增的主键值;2.应用场景:(1).插入时使用,eg:插入一件商品并返回主键值 //useGeneratedKeys :默认 false ,作用:设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。 //keyProperty、keyColumn:返回的字段。 @Options(useGeneratedKeys=true, key.原创 2020-07-01 19:08:10 · 1518 阅读 · 0 评论 -
Java和c++的知识对比与总结
JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继承,多态)。而由于C++为了照顾大量的C语言使用者, 而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小。它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了c++的固有缺陷。 Jav...原创 2020-01-21 18:37:41 · 500 阅读 · 0 评论 -
Java集合TreeMap用法总结
Java的TreeMap是集合框架中的一个实现类,TreeMap继承了AbstractMap。TreeMap实现了NavigableMap接口,提供了多种方便的查找功能;TreeMap实现了Cloneable接口,可以克隆;TreeMap实现了Serialiable接口,可以序列化。构造方法TreeMap() 创建一个空的TreeMap,并且按照key的自然升序排序; TreeMa...原创 2020-01-03 20:12:15 · 1977 阅读 · 0 评论 -
JavaMap排序
Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。•TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。•HashMap的值是没有顺序的,它是按照key...原创 2020-01-03 19:58:05 · 628 阅读 · 0 评论 -
@Cacheable小议
一、使用场景1、用在哪里?用在方法或者类上。2、这两种用法有什么区别?用在方法上表示:该方法的返回值将被缓存起来用在类上表示:表示该类的所有方法都支持该注解3、使用后的结果是什么?下次使用相同方法和相同参数调用这个方法的时候将直接从缓存取值,而不需要再次执行该方法。.4、返回值在缓存中怎么存储的?以键值对的方式存储在缓存中,valu...原创 2019-12-06 10:58:29 · 416 阅读 · 0 评论 -
关于java 的== 与equal
一、应用场景java中==比较的是地址,equal比较的是值。示例: 1 2 3 4 Integera1=newInteger(456);//实例化一个对象 Integera2=newInteger(456);//实例化一个对象 System.out.println(a1.equals(a2));//这...原创 2019-12-06 10:18:58 · 1192 阅读 · 0 评论 -
Java内存模型
一、引言 计算机在执行程序的时候,每条指令都是在CPU中执行的,而执行的时候,又免不了要和数据打交道。而计算机上面的数据,是存放在主存当中的,也就是计算机的物理内存。 (第一阶段) 刚开始,还相安无事的,但是随着CPU技术的发展,CPU的执行速度越来越快。而由于内存的技术并没有太大的变化,所以从内存中读取和写入数据的过程和CPU的执行速度比起来差距就会越来越大...原创 2019-12-05 09:40:26 · 178 阅读 · 0 评论 -
强引用、软引用、弱引用、幻象引用
一、概述:众所周知,Java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也是它的缺点(不够灵活)。为了解决内存操作不灵活这个问题,可以采用软引用等方法。在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有...原创 2019-11-20 08:43:50 · 244 阅读 · 0 评论 -
mvn体系
一、背景介绍 maven是Java编程语言构建的事实标准,大部分项目还在使用maven来进行构建,因此了解maven内部运行的原理对定位和分析问题还是很有裨益的。二、maven关键概念maven的一些基本概念,这些概念十分重要。基本概念主要有:POM,Lifecycle。这两个概念又会包含一些小的概念,下文会逐步讲解。POM:这里的POM不是maven中构建过程使用的配置...原创 2019-11-15 11:29:45 · 281 阅读 · 0 评论 -
java异常与@Transactional
概述:java的异常分为Error 和 Exception 。这两类都是接口Throwable 的子类。异常分类方式:1.运行时异常 和 非运行时异常2.可查的异常(checked exceptions)和 不可查的异常(unchecked exceptions)总结 :基本除IOException和SQLException外,其他都是运行时异常。运行时异常属于unche...原创 2019-11-11 11:52:56 · 871 阅读 · 0 评论 -
什么是Bean
什么是Bean?Spring Bean是被实例的,组装的及被Spring 容器管理的Java对象。Spring 容器会自动完成@bean对象的实例化。创建应用对象之间的协作关系的行为称为:装配(wiring),这就是依赖注入的本质。Spring 三种配置方案1.在XML中进行显示配置2.使用Java代码进行显示配置3.隐式的bean发现机制和自动装配推荐方式:3>2&...原创 2019-11-01 09:41:23 · 768 阅读 · 1 评论 -
IOC与AOP
1. IOC(Inverse of Control):控制反转,也可以称为依赖倒置。它并不是一种技术实现,而是一种设计思想。在任何一个有实际开发意义的程序项目中,我们会使用很多类来描述它们特有的功能,并且通过类与类之间的相互协作来完成特定的业务逻辑。这个时候,每个类都需要负责管理与自己有交互的类的引用和依赖,代码将会变的异常难以维护和极度的高耦合。而IOC的出现正是用来解决这个问题,我们...原创 2019-10-31 21:57:30 · 103 阅读 · 0 评论 -
Spring中的bean
一、Bean的定义 <beans…/>元素是Spring配置文件的根元素,<beans…/>元素可以包含多个<bean…/>子元素,每个<bean…/>元素可以定义一个Bean实例,每一个Bean对应Spring容器里的一个Java实例定义Bean时通常需要指定两个属性。 Id:确定该Bean的唯一标识符,容器对Bean管理、...原创 2019-10-31 21:15:24 · 178 阅读 · 0 评论 -
Java SDK和Java JDK的区别
SDK是Software Development Kit的缩写,中文意思是“软件开发工具包”。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。SDK是一系列文件的组合,它为软件的开发提供一个平台(它为软件开发使用各种API提供便利)。 JDK是Java Development Kit的缩写,中文意...原创 2019-10-10 19:35:03 · 447 阅读 · 0 评论 -
java的impl
java impl 是一个资源包,用来存放java文件的。在Java开发中,通常将后台分成几层,常见的是三层mvc:model、view、controller,模型视图控制层三层,而impl通常处于controller层的service下,用来存放接口的实现类,impl的全称为implement,表示实现的意思。implement是用来实现接口的...原创 2019-10-09 14:05:47 · 868 阅读 · 0 评论 -
二方包
一方包(也称一方库)、二方包(也称二方库)、三方包(也称三方库)说明:一方包:本工程中的各模块的相互依赖二方包:公司内部的依赖库,一般指公司内部的其他项目发布的jar包三方包:公司之外的开源库, 比如apache、ibm、google等发布的依赖...原创 2019-10-09 11:25:49 · 1692 阅读 · 1 评论 -
java单元测试
Java单元测试入门什么是单元测试定义:单元测试是对软件或程序的基本(最小)组成单元的测试对象:方法、类特点:为什么要写单元测试需不需要写单元测试只要程序能运行就可以了,写单元测试浪费时间代码很简单不需要单元测试我保证不会有什么问题的测试人员测试一下就可以了这次没有时间写了,下次补上吧测试分类单元测试->集成测试->端到端测试各测试占比Junit...原创 2019-08-17 20:56:38 · 214 阅读 · 0 评论 -
Windows配置java环境 安装JDK
一、下载首先下载jdk进官网下载jdkhttp://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html选择相应的系统。一键安装即可。安装后会有两个jre,一个jdk内部的,和jdk外部的关于两套jre的解释一个jre文件在JDK的外部,一个jre文件在JDK内部,这就是...原创 2019-06-08 15:56:34 · 254 阅读 · 0 评论