自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 spring cloud 核心组件之间的关系

https://www.jianshu.com/p/31dfb595170c

2021-05-13 13:37:31 169

原创 记录项目bug org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

这是大佬总结的方法我出现的原因!!!附加 配置 mapper.xml的包一定要分级!!!和mapper目录一一对应 血的教训 找了一整天!!!!!!!*祝天下没有报错!~~~~*

2021-04-29 17:30:42 132

转载 mysql

https://snailclimb.gitee.io/javaguide/#/docs/database/MySQL?id=mysql-%e5%9f%ba%e7%a1%80

2021-04-27 13:59:09 128

转载 布隆过滤器

https://snailclimb.gitee.io/javaguide/#/docs/dataStructures-algorithms/data-structure/bloom-filter

2021-04-25 13:44:45 93

原创

图是一种较为复杂的非线性结构。 为啥说其较为复杂呢?根据前面的内容,我们知道:线性数据结构的元素满足唯一的线性关系,每个元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继。树形数据结构的元素之间有着明显的层次关系。但是,树形结构的元素之间的关系是任意的。何为图呢? 简单来说,图就是由顶点的有穷非空集合和顶点之间的边组成的集合。通常表示为:G(V,E),其中,G表示一个图,V表示顶点的集合,E表示边的集合。下图所展示的就是图这种数据结构,并且还是一张有向图。图的基本概念顶点图中

2021-04-23 15:39:20 323 1

转载 图解数据结构四种数据类型

线性数据结构1. 数组数组(Array) 是一种很常见的数据结构。它由相同类型的元素(element)组成,并且是使用一块连续的内存来存储。我们直接可以利用元素的索引(index)可以计算出该元素对应的存储地址。数组的特点是:提供随机访问 并且容量有限。假如数组的长度为 n。访问:O(1)//访问特定位置的元素插入:O(n )//最坏的情况发生在插入发生在数组的首部并需要移动所有元素时删除:O(n)//最坏的情况发生在删除数组的开头发生并需要移动第一元素后面所有的元素时2. 链表2.

2021-04-20 15:11:36 4262

转载 Shell编程

Shell 编程入门走进 Shell 编程的大门为什么要学Shell?学一个东西,我们大部分情况都是往实用性方向着想。从工作角度来讲,学习 Shell 是为了提高我们自己工作效率,提高产出,让我们在更少的时间完成更多的事情。很多人会说 Shell 编程属于运维方面的知识了,应该是运维人员来做,我们做后端开发的没必要学。我觉得这种说法大错特错,相比于专门做Linux运维的人员来说,我们对 Shell 编程掌握程度的要求要比他们低,但是shell编程也是我们必须要掌握的!目前Linux系统下最流行的运

2021-04-19 10:48:26 370

转载 操作系统---linux

1. 从认识操作系统开始1.1. 操作系统简介我通过以下四点介绍什么是操作系统:操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机的基石。操作系统本质上是一个运行在计算机上的软件程序 ,用于管理计算机硬件和软件资源。 举例:运行在你电脑上的所有应用程序都通过操作系统来调用系统内存以及磁盘等等硬件。操作系统存在屏蔽了硬件层的复杂性。 操作系统就像是硬件使用的负责人,统筹着各种相关事项。操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内

2021-04-16 14:12:54 213

转载 操作系统

一 操作系统基础1.1 什么是操作系统?????‍????面试官 : 先来个简单问题吧!什么是操作系统????? 我 :我通过以下四点向您介绍一下什么是操作系统吧!操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机的基石。操作系统本质上是一个运行在计算机上的软件程序 ,用于管理计算机硬件和软件资源。 举例:运行在你电脑上的所有应用程序都通过操作系统来调用系统内存以及磁盘等等硬件。操作系统存在屏蔽了硬件层的复杂性。 操作系统就像是硬件使用的负责人,

2021-04-15 16:05:42 163

转载 计算机网络基础知识总结

1. 计算机网络概述1.1. 基本术语结点 (node) :网络中的结点可以是计算机,集线器,交换机或路由器等。链路(link ) : 从一个结点到另一个结点的一段物理线路。中间没有任何其他交点。主机(host) :连接在因特网上的计算机。ISP(Internet Service Provider) :因特网服务提供者(提供商)。IXP(Internet eXchange Point) : 互联网交换点 IXP 的主要作用就是允许两个网络直接相连并交换分组,而不需要再通过第三个网络来转发分组

2021-04-14 14:50:45 687

转载 计算机网络

一 OSI与TCP/IP各层的结构与功能,都有哪些协议?学习计算机网络时我们一般采用折中的办法,也就是中和 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚。结合互联网的情况,自上而下地,非常简要的介绍一下各层的作用。1.1 应用层应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层

2021-04-13 16:06:00 171

转载 JDK 9---14

https://snailclimb.gitee.io/javaguide/#/./docs/java/new-features/%E4%B8%80%E6%96%87%E5%B8%A6%E4%BD%A0%E7%9C%8B%E9%81%8DJDK9%E5%88%B014%E7%9A%84%E9%87%8D%E8%A6%81%E6%96%B0%E7%89%B9%E6%80%A7

2021-04-12 14:30:03 72

转载 Java8--新特性

接口的默认方法(Default Methods for Interfaces)Java 8使我们能够通过使用 default 关键字向接口添加非抽象方法实现。 此功能也称为虚拟扩展方法。第一个例子:interface Formula{ double calculate(int a); default double sqrt(int a) { return Math.sqrt(a); }}Formula 接口中除了抽象方法计算接口公式还定义了默认方法

2021-04-09 13:18:24 107

转载 大白话了解JVM

一、JVM的基本介绍JVM 是 Java Virtual Machine 的缩写,它是一个虚构出来的计算机,一种规范。通过在实际的计算机上仿真模拟各类计算机功能实现···好,其实抛开这么专业的句子不说,就知道JVM其实就类似于一台小电脑运行在windows或者linux这些操作系统环境下即可。它直接和操作系统进行交互,与硬件不直接交互,而操作系统可以帮我们完成和硬件进行交互的工作。1.1 Java文件是如何被运行的比如我们现在写了一个 HelloWorld.java 好了,那这个 HelloWor

2021-04-08 13:45:52 121

原创 常用的 JVM 参数配置

堆内存相关Java 虚拟机所管理的内存中最大的一块,Java 堆是所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例以及数组都在这里分配内存。显式指定堆内存–Xms和-Xmx与性能有关的最常见实践之一是根据应用程序要求初始化堆内存。如果我们需要指定最小和最大堆大小(推荐显示指定大小),以下参数可以帮助你实现:-Xms<heap size>[unit] -Xmx<heap size>[unit]heap size 表示

2021-04-06 11:09:42 196

转载 类加载器

回顾一下类加载过程类加载过程:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。一个非数组类的加载阶段(加载阶段获取类的二进制字节流的动作)是可控性最强的阶段,这一步我们可以去完成还可以自定义类加载器去控制字节流的获取方式(重写一个类加载器的 loadClass() 方法)。数组类型不通过类加载器创建,它由 Java 虚拟机直接创建。类加载器总结JVM 中内置了三个重要的 ClassLoader,除了 BootstrapClassLoader 其他类加载器

2021-04-06 10:35:10 64

转载 类加载过程

类的生命周期一个类的完整生命周期如下:类加载过程Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class 文件呢?系统加载 Class 类型的文件主要三步:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。加载类加载过程的第一步,主要完成下面3件事情:通过全类名获取定义此类的二进制字节流将字节流所代表的静态存储结构转换为方法区的运行时数据结构在内存中生成一个代表该类的 Class 对象,作为方法区这些数据的访问

2021-04-06 10:14:37 54

转载 类文件结构class

类文件结构概述在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。Clojure(Lisp 语言的一种方言)、Groovy、Scala 等语言都是运行在 Java

2021-04-02 11:12:06 67

转载 JDK 监控和故障处理工具总结

JDK 命令行工具这些命令在 JDK 安装目录下的 bin 目录下:jps (JVM Process Status): 类似 UNIX 的 ps 命令。用户查看所有 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息;jstat( JVM Statistics Monitoring Tool): 用于收集 HotSpot 虚拟机各方面的运行数据;jinfo (Configuration Info for Java) : Configuration Info forJava,显示虚拟机配

2021-04-02 10:26:43 69

转载 jvm垃圾回收

本节常见面试题问题答案在文中都有提到如何判断对象是否死亡(两种方法)。简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)。如何判断一个常量是废弃常量如何判断一个类是无用的类垃圾收集有哪些算法,各自的特点?HotSpot 为什么要分为新生代和老年代?常见的垃圾回收器有哪些?介绍一下 CMS,G1 收集器。Minor Gc 和 Full GC 有什么不同呢?本文导火索当需要排查各种内存溢出问题、当垃圾收集成为系统达到更高并发的瓶颈时

2021-04-01 15:41:37 77

转载 JVM内存区域

Java 内存区域详解如果没有特殊说明,都是针对的是 HotSpot 虚拟机写在前面 (常见面试题)基本问题介绍下 Java 内存区域(运行时数据区)Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么)对象的访问定位的两种方式(句柄和直接指针两种方式)拓展问题String 类和常量池8 种基本类型的包装类和常量池一.概述对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像 C/C++程序开发程序员这样为每一个 new 操作去写对应的 delete

2021-03-31 17:52:46 60

原创 并发容器总结

一 JDK 提供的并发容器总结JDK 提供的这些容器大部分在 java.util.concurrent 包中。ConcurrentHashMap: 线程安全的 HashMapCopyOnWriteArrayList: 线程安全的 List,在读多写少的场合性能非常好,远远好于 Vector.ConcurrentLinkedQueue: 高效的并发队列,使用链表实现。可以看做一个线程安全的 LinkedList,这是一个非阻塞队列。BlockingQueue: 这是一个接口,JDK 内部通过链表、数

2021-03-30 14:33:15 48

转载 ThreadLocal 关键字解析

源码基于JDK 1.8ThreadLocal代码演示public class ThreadLocalTest { private List<String> messages = Lists.newArrayList(); public static final ThreadLocal<ThreadLocalTest> holder = ThreadLocal.withInitial(ThreadLocalTest::new); public stati

2021-03-26 13:45:46 113

转载 java线程池实践基础~!

为什么要使用线程池?池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http 连接池等等都是对这个思想的应用。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。这里借用《Java 并发编程的艺术》提到的来说一下使用线程池的好处:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。

2021-03-25 13:45:44 90

原创 Java线程池学习总结

使用线程池的好处池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http连接池等等都是对这个思想的应用。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。这里借用《Java 并发编程的艺术》提到的来说一下使用线程池的好处:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。

2021-03-24 14:40:11 106

转载 Java 并发进阶常见面试题总结

synchronized 关键字说一说自己对于 synchronized 关键字的了解synchronized 关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。另外,在 Java 早期版本中,synchronized 属于 重量级锁,效率低下。为什么呢?因为监视器锁(monitor)是依赖于底层的操作系统的 Mutex Lock 来实现的,Java 的线程是映射到操作系统的原生线程之上的。如果要挂起或者唤醒一

2021-03-24 13:22:58 147

转载 Java 并发基础常见面试题总结

什么是线程和进程?何为进程?进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。如下图所示,在 windows 中通过查看任务管理器的方式,我们就可以清楚看到 window 当前运行的进程(.exe 文件的运行)。何为线程?线程与进程相似,但线程是一个比进程更小的执行单位。一个进

2021-03-19 13:55:14 74

转载 ConcurrentHashMap 源码+底层数据结构分析

ConcurrentHashMap 1.7存储结构Java 7 中 ConcurrentHashMap 的存储结构如上图,ConcurrnetHashMap 由很多个 Segment 组合,而每一个 Segment 是一个类似于 HashMap 的结构,所以每一个 HashMap 的内部可以进行扩容。但是 Segment 的个数一旦初始化就不能改变,默认 Segment 的个数是 16 个,你也可以认为 ConcurrentHashMap 默认支持最多 16 个线程并发。初始化通过 Concurr

2021-03-18 13:37:47 128

原创 HashMap(JDK1.8)源码+底层数据结构分析

HashMap 简介HashMap 主要用来存放键值对,它基于哈希表的 Map 接口实现,是常用的 Java 集合之一。JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突)。JDK1.8 之后 HashMap 的组成多了红黑树,在满足下面两个条件之后,会执行链表转红黑树操作,以此来加快搜索速度。链表长度大于阈值(默认为 8)HashMap 数组长度超过 64底层数据结构分析JDK1.8 之前JD

2021-03-17 14:10:54 155

原创 LinkedList源码分析

简介LinkedList是一个实现了List接口和Deque接口的双端链表。 LinkedList底层的链表结构使它支持高效的插入和删除操作,另外它实现了Deque接口,使得LinkedList类也具有队列的特性; LinkedList不是线程安全的,如果想使LinkedList变成线程安全的,可以调用静态类Collections类中的synchronizedList方法:List list=Collections.synchronizedList(new LinkedList(...));内部结构

2021-03-16 14:55:52 58

原创 ArraysList源码分析+扩容机制分析

ArrayList 简介ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。ArrayList继承于 AbstractList ,实现了 List, RandomAccess, Cloneable, java.io.Serializable 这些接口。public class ArrayList<E> ex

2021-03-15 13:39:41 134

原创 java集合框架

集合概述Java 集合概览从下图可以看出,在 Java 中除了以 Map 结尾的类之外, 其他类都实现了 Collection 接口。并且,以 Map 结尾的类都实现了 Map 接口。说说 List,Set,Map 三者的区别?List(对付顺序的好帮手): 存储的元素是有序的、可重复的。Set(注重独一无二的性质): 存储的元素是无序的、不可重复的。Map(用 Key 来搜索的专家): 使用键值对(kye-value)存储,类似于数学上的函数 y=f(x),“x”代表 key,"y"代表

2021-03-11 17:15:50 66

原创 常见的 IO 模型有哪些?Java 中的 BIO、NIO、AIO 有啥区别?

常见的 IO 模型有哪些?Java 中的 BIO、NIO、AIO 有啥区别?前言I/O 一直是很多小伙伴难以理解的一个知识点,这篇文章我会将我所理解的 I/O 讲给你听,希望可以对你有所帮助。I/O何为 I/O?I/O(Input/Outpu) 即输入/输出 。我们先从计算机结构的角度来解读一下 I/O。根据冯.诺依曼结构,计算机结构分为 5 大部分:运算器、控制器、存储器、输入设备、输出设备。冯诺依曼体系结构输入设备(比如键盘)和输出设备(比如鼠标)都属于外部设备。网卡、硬盘这种既可以

2021-03-10 10:28:12 355

原创 静态代理and动态代理

1. 代理模式代理模式是一种比较好理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。代理模式的主要作用是扩展目标对象的功能,比如说在目标对象的某个方法执行前后你可以增加一些自定义的操作。2. 静态代理静态代理中,我们对目标对象的每个方法的增强都是手动完成的(后面会具体演示代码),非常不灵活(比如接口一旦新增加方法,目标对象和代理对象都要进行修改)且麻烦(需要对每个目标类都单独写

2021-03-09 10:37:21 71

原创 java反射机制介绍

JAVA 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 java 语言的反射机制。获取 Class 对象的四种方式如果我们动态获取到这些信息,我们需要依靠 Class 对象。Class 类对象将一个类的方法、变量等信息告诉运行的程序。Java 提供了四种方式获取 Class 对象:1.知道具体类的情况下可以使用:Class alunbarClass = TargetOb

2021-03-08 13:33:57 61

原创 Java 常见关键字:final、static、this、super!

final 关键字final关键字,意思是最终的、不可修改的,最见不得变化 ,用来修饰类、方法和变量,具有以下特点:final修饰的类不能被继承,final类中的所有成员方法都会被隐式的指定为final方法;final修饰的方法不能被重写;final修饰的变量是常量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能让其指向另一个对象。说明:使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率

2021-02-03 18:53:03 134 1

原创 java枚举

概览在本文中,我们将看到什么是 Java 枚举,它们解决了哪些问题以及如何在实践中使用 Java 枚举实现一些设计模式。enum关键字在 java5 中引入,表示一种特殊类型的类,其总是继承java.lang.Enum类,更多内容可以自行查看其官方文档。枚举在很多时候会和常量拿来对比,可能因为本身我们大量实际使用枚举的地方就是为了替代常量。那么这种方式由什么优势呢?以这种方式定义的常量使代码更具可读性,允许进行编译时检查,预先记录可接受值的列表,并避免由于传入无效值而引起的意外行为。下面示例定义一

2021-02-01 20:30:16 107

原创 java基础疑难点

正确使用 equals 方法Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals。举个例子:// 不能使用一个值为null的引用类型变量来调用非静态方法,否则会抛出异常String str = null;if (str.equals("SnailClimb")) { ...} else { ..}运行上面的程序会抛出空指针异常,但是我们把第二行的条件判断语句改为下面这样的话,就不会抛出空指针异常,else 语句块得到执行。:“Snai

2021-01-31 19:49:48 131

原创 java核心技术

反射机制JAVA 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 java 语言的反射机制。静态编译和动态编译静态编译: 在编译时确定类型,绑定对象动态编译: 运行时确定类型,绑定对象反射机制优缺点优点: 运行期类型的判断,动态加载类,提高代码灵活度。缺点: 1,性能瓶颈:反射相当于一系列解释操作,通知 JVM 要做的事情,性能比直接的 java 代码要慢很多。2,

2021-01-30 20:05:55 132

原创 java面向对象

面向对象和面向过程的区别面向过程 :面向过程性能比面向对象高。 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发。但是,面向过程没有面向对象易维护、易复用、易扩展。面向对象 :面向对象易维护、易复用、易扩展。 因为面向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是,面向对象性能比面向过程低。构造器 Constructor 是否可被 override?

2021-01-27 20:08:28 181

空空如也

空空如也

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

TA关注的人

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