自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ThreadLocal解析

文章目录一、java的引用类型1、强引用2、软引用3、弱引用4、虚引用一、java的引用类型java的引用类型有四种:强、软、弱、虚1、强引用我们平常创建的对象基本上都是强引用,也就是new出来的对象,如Object o = new Object();,这个o直接指向堆内存当中创建的Object对象,如下:GC:强引用类型只有在没有引用指向这个对象的时候它才能被回收,否则,即使内存不足,也不会被回收2、软引用SoftReference<Object> sf = new SoftR

2022-04-21 10:26:49 262

原创 Linux基本命令学习

文章目录一、指定运行级别二、找回root密码三、帮助指令四、文件目录类1、pwd(显示当前工作目录的绝对路径)2、ls(显示目录或文件)3、cd(切换到指定目录)4、mkdir(创建目录指令)5、rmdir(删除空目录)6、touch(创建空文件)7、cp(拷贝文件到指定目录)【重要】8、rm(移除文件或目录)9、mv(移动文件与目录或重命名)10、cat(查看文件内容)11、more(按页显示文本文件内容)12、less(分屏查看文件内容)13、>(输出重定向)和 >>(追加)14、ec

2022-04-13 19:40:49 318

原创 MySql学习及命令使用

文章目录1、前言1.1、语句分类1.2、常用数据结构2、操作数据库及表3、增加、删除、修改(DML)4、查询(DQL,重点)1、查询指定字段2、As(别名)3、distinct(去重)4、表达式5、where条件语句逻辑操作符模糊查询5、联表查询(JOIN)5.1、INEER JOIN(内连接)5.2、左连接(LEFT JOIN)5.3、右连接(RIGHT JOIN)5.4、全连接(FULL JOIN)6、分页、排序6.1、分页(LIMIT)6.2、排序(ORDER BY)7、子查询或嵌套查询8、MySQL

2022-04-10 18:00:45 1013

原创 JUC的简单理解(下)

文章目录1、ForkJoin使用2、JMM(Java内存模型)JMM的八种交互操作(原子性)JMM八种指令的规则3.Volatile3.1、可见性3.2、禁止指令重排(有序性)3.3、原子性4、CASABA问题5、锁5.1、公平锁与非公平锁5.2、可重入锁5.3、怎么排除死锁模拟死锁,死锁的实现排查死锁1、ForkJoin其本质思想就是大任务拆分成小任务,类似分治法ForkJoin 特点:工作窃取原理就是利用双端队列,当某个线程执行完自己的任务后会去窃取其他线程的任务来执行使用步骤:1、创建

2022-04-08 21:46:42 213

原创 JUC的简单理解(上)

文章目录1、JUC简介2、使用Lock锁打印ABCABC2.1、Condition是什么2.2、Condition的使用3、Synchronized和Lock锁的区别4、集合类4.1、CopyOnWriteArrayList4.2、ConcurrentHashMap简析5、Callable5.1、Callable为何能创建线程5.2、Callable的使用6、常用的辅助类6.1、CountDownLatch6.2、CyclicBarrier6.3、Semaphore7、阻塞队列(BlockingQueue)

2022-04-08 16:45:06 415

原创 final解析,public、protected、default、private作用域解析

文章目录1、final为什么局部内部类和匿名内部类只能访问局部final变量2、public、protected、default、private2.1、作用域2.2、测试1、final最终的修饰类:表示类不可以被继承修饰方法:表示方法不可被子类覆盖,但是可以重载修饰变量:表示变量一旦赋值就不可以更改它的值(1)修饰成员变量修饰类变量(静态变量):只能在声明该类变量时指定初始值或者静态代码块中指定初始值修饰成员变量:可以在声明时、普通代码块中、构造方法里指定初始值(2)修饰局部变量

2022-04-06 10:31:06 893

原创 JVM以及垃圾回收算法(GC)

文章目录1、JVM的位置2、jvm体系结构3、类加载器双亲委派机制4、堆4.1、新生代(新生区)、老年区4.2、永久代(元空间)当出现了OOM故障,该如何排错4.3、如何判断一个对象已经死亡引用计数法可达性分析算法4.4、垃圾回收算法1、复制算法2、标记清除算法3、标记整理算法4、分代收集算法总结5、线程暂停、安全点、安全区4.5、垃圾收集器1、垃圾收集器分类2、Serial、Serial Old 串行收集器3、ParNew、Parallel Scavenge、Parallel Old 并行收集器4、CMS

2022-04-05 20:19:02 208

原创 java面对对象

文章目录面对对象什么是面对对象?封装、继承、多态封装继承多态面对对象类:一组相关的属性和行为的集合,是一个抽象的概念。对象:该类事物的具体表现形式,具体存在的个体。成员变量:事物的属性成员方法:事物的行为什么是面对对象?面向对象和面向过程相比,其实就是处理问题的两种角度,两种方式。比如洗衣机洗衣服这个过程面向过程:它会将任务拆分为一个个步骤,如:1、打开洗衣机2、把衣服放进去3、放洗衣粉4、清洗衣服5、烘干衣服面向对象:它会把任务拆分为几个不同的对象,每个对象有自己的属性和功能

2022-04-05 08:29:18 70

原创 TCP、UDP的区别以及三次握手四次挥手的过程

文章目录一、TCP/IP网络模型二、TCP1、TCP报文格式2、TCP建立连接-三次握手小问题:为什么需要三次握手,两次不行吗?3、TCP发送数据的过程拥塞控制和流量控制4、TCP断开连接-四次挥手问题:为什么需要四次挥手,三次不行吗?三、UDP四、TCP和UDP的区别一、TCP/IP网络模型计算机与网络设备之间要实现通信的话,就必须基于相同的规则,例如中国人和中国人说话用中文,外国人和外国人说话用英文,中国人和外国人说话就必须要有相同的规则,而这个规则就是“协议”;TCP/IP协议其实是一个协议集合

2022-04-04 18:28:51 4431

原创 springboot自动装配

文章目录1、自动装配是什么及作用2、spring自动装配的原理2.1、启动类上注解的作用@SpringBootApplication@SpringBootConfiguration@EnableAutoConfiguration@AutoConfigurationPackage@Import(AutoConfigurationImportSelector.class)@ComponentScan2.2、springboot自动装配的流程3、相关注解的作用@Conditional1、自动装配是什么及作用s

2022-04-03 21:44:54 42608 10

原创 spring循环依赖以及三级缓存

文章目录1、循环依赖2、二级缓存3、三级缓存3.1、为什么不用二级缓存而使用三级缓存3.2、为什么不直接提前生成代理对象直接存入二级缓存中,这样不就不需要三级缓存了吗?1、循环依赖这很简单,如下,A类中有一个B属性,B类中有一个A属性,它们之间互相依赖就是循环依赖class A{ B b;}class B{ A a;}要想创建一个完整的A对象和一个完整的B对象对于一般人来说很简单,如下,只需要先创建再赋值就可以了,但是我们都知道spring里面的Bean(对象)都是自动生成的

2022-04-02 11:49:27 787

原创 线程池参数该如何配置

1.CPU密集型单核:当我们是单核CPU的时候,不建议使用线程池多核:当我们是多核CPU的时候,理论上应该是 线程数=CPU核数,但实际上,一般会设置为 核数+1,这是因为万一某个线程因为某个未知的错误停止的时候,可以确保有一个“额外”线程可以执行任务,让CPU持续工作2.IO密集型IO密集型与CPU密集型相对,一个完整的请求,CPU执行完后需要进行很多IO操作,也就是IO操作需要大量时间,却不占用CPU资源,所以理论上我们一般保证有多少个IO大型任务(n),线程数就是这个任务数的两倍(2n),但实

2022-03-30 17:57:46 712

原创 线程池的解析以及7个参数

文章目录1.线程池的七个参数2.线程池的执行流程3.线程池的属性标识3.1、 核心属性3.2、线程池状态变化4.线程池的execute()方法执行4.1、execute()4.2、addWorker()1.线程池的七个参数1、corePoolSize: 核心线程数2、maximumPoolSize: 最大线程数3、keepAliveTime: 最大空闲时间4、TimeUnit unit: 时间单位5、BlockingQueue workQueue: 阻塞队列6、ThreadFactory th

2022-03-30 17:33:32 5365 1

原创 synchronized锁的是什么?

文章目录1.synchronized是什么2.synchronized锁的是什么1、修饰方法(1)两个普通方法都加锁1.synchronized是什么synchronized是java里的一个关键字,可以用来给对象和方法或者代码块加锁,当它锁定一个方法或者代码块的时候,同一时刻最多只有一条线程执行这段代码synchronized修饰的对象:修饰方法,被修饰的方法被称为同步方法修饰代码块,被修饰的代码块被称为同步代码块2.synchronized锁的是什么未加锁状态下线程执行:// 未加锁

2022-03-30 10:20:02 4452

原创 线程的同步机制

文章目录1.什么是线程同步2.线程同步的实现1、同步方法2.同步代码块3.Lock锁4、synchronized与Lock的对比1.什么是线程同步线程同步:即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作,其他线程才能对该内存地址进行操作那相对的线程异步处理就不用阻塞当前线程,而是允许后续操作,直至其他线程将处理完成,并回调此线程2.线程同步的实现不安全的例子(买票):// 模拟不安全的情况下买票// 线程不安全,有负数public class U

2022-03-28 10:54:35 939

原创 java的反射机制及使用

文章目录1.反射的简介(Reflection)(1)反射的理解(2)反射的优点(3)Class类2.反射的获取(1)Class类的一些常用方法(2)获取Class类的实例的方法(3)获取运行时类的完整结构1、获取类的名字2、获取类的属性3、获取类的方法4、获取类的构造器4、测试3.反射的使用(1)创建对象(2)调用对象的方法(3)操作对象的属性(4)测试4.反射操作注解1.反射的简介(Reflection)(1)反射的理解反射机制允许程序在执行期借助Reflection API取得类内部的任何信息,

2022-03-27 19:30:02 582

原创 java多线程实现与总结

文章目录1.进程与线程2.线程创建的方式1.继承Thread类2.实现Runnable接口(推荐)3.实现Callable接口4.Lambda表达式3.线程的状态4.线程的一些方法1、sleep()2、yield()3、join()1.进程与线程说起进程,就不得不说程序。程序是指令和数据的有序集合,它本身只是一个静态的概念。没有运行的含义而进程是执行程序的一次执行过程,它是一个动态的概念。进程是系统分配资源的单位通常一个进程包含若干个线程,至少包含一条线程,否则没有存在的意义。线程是CP

2022-03-27 15:51:18 709

原创 springMVC的执行流程

1.springMVC执行流程图解springMVC执行流程总结:(1)客户端发起一个请求,前端控制器(DispatchServlet)接收这个请求(2)前端控制器将请求信息交给处理器映射器(HandlerMapping),处理器映射器根据url查找对应的处理器(Handler)与拦截器(InterCepter),并封装为一个处理器执行链(HandlerExecutionChain)对象并返回给前端控制器(3)前端控制器调用相应的处理器适配器(HandlerAdapter)执行处理器(Handle

2022-03-26 14:42:25 819

原创 String,StringBuilder,StringBuffer的理解与比较

1.String,StringBuilder,StringBuffer的理解1.StringString是被 final 修饰的,因此String是不可以被继承以及改变的,每次对String的改变,都会返回一个新的对象String的底层是用数组实现的private final char value[];String s1 = "hello";String s2 = new String("hello");String s3 = "hello";String s4 = new String(

2022-03-25 20:00:13 391

原创 MySQL事务的基本特性(ACID)实现及隔离级别

1.什么是事务事务是一个最小的,不可再分的工作单元,也就是在一个事务中的操作要么同时成功,要么同时失败2.事务的基本特性(ACID)(1)原子性 A (Atomicity) :一个事务是一个不可分割的工作单位,一个事务中的所有操作,要么同时成功,要么同时失败,不可能成功一半,失败一半。当事务在执行过程中如果失败的话,会进行回滚操作(2)一致性 C (Consistency) :事务在执行完后的结果是和预期数据一致的,符合逻辑的;其他三个特性都是为了保证一致性的成立(3)隔离性 I(Isolatio

2022-03-25 16:04:06 2379

原创 spring创建Bean的流程以及Bean的生命周期

1.spring创建Bean流程1.读取Bean的定义信息通过BeanDefinitionReader这个接口解析xml配置、配置类或其他的一些方式定义的类,得到BeanDefinition(Bean定义信息)2.实例化Bean通过BeanPostProcessor这个接口(增强器)可以对我们的BeanDefinition进行一些修改,然后BeanFactory通过反射实例化Bean对象,但是此时的Bean对象还没有进行初始化,没有填充属性等操作。3.初始化Bean(1)自定义属性赋值是用 s

2022-03-24 17:52:12 4990 2

原创 索引的最左前缀原理

1.什么是联合索引联合索引是由多个字段组成的索引。1.1、联合索引的底层存储结构如下图,当我们使用‘name’,‘age’,‘position’这三个字段来做联合索引的话,MySQL底层其实也是一种排好序的B+树,它是先按第一个字段‘name’排序,当第一个字段相同,它会按照第二个字段‘age’来排序,同理,第二个字段相同时,按照第三个字段‘position’来排序。当联合索引联合主键的时候,data里(下图的紫色部分)会放数据,而如果是普通的联合索引的话,data里会放索引所在行的主键值来自诸

2022-03-24 15:28:54 639

原创 MySQL索引的数据结构、存储引擎

1.什么是索引(1)索引是帮助MySQL高效获取数据的排好序的数据结构(2)索引其实相当于一本字典的目录,它可以帮助我们快熟查找到我们想要内容,因此,索引其实是要占据一定空间的(3)索引是针对表而建立的(4)索引在增加了查询效率的同时,会增加表的维护成本2.索引的数据结构实现索引的数据结构:二叉树、红黑树、Hash表、B树、B+树最开始的索引使用的是二叉树,但是当数据量大的时候,二叉树的高度可能会很高,这样的话就会降低查询的效率。后来的话又使用了红黑树,因为红黑树会对表的高度做一个维护,让表的

2022-03-24 12:15:55 969

原创 单例模式及其实现

1.什么是单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。简单来说就是一个类只有一个实例对象。2.单例的实现方法1.实现思路(1)既然只有一个实例对象,而对象的实例化都是调用构造方法,那我们的第一步就把构造方法私有化。(2)但这样产生了一个问题,那就是既然构造函数私有,那怎么获取到对象,这时就需要一个容器来放这个唯一的对象,并且向外提供一个静态的构造方法,让外界可以获取到这个实例。2.实现方式1.饿汉

2022-03-23 19:59:10 1065

原创 死锁的基本介绍

什么是死锁死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。如下图,T1占有了资源R1,想要获得资源R2,同时,T2占有了资源R2,且想要获得资源R1,但是它们都不想释放自己的资源,只能一直僵持,使得进程无法推进,从而产生了死锁。死锁产生的必要条件死锁的产生必须具备以下的四种必要条件,缺一不可。(1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如上图,资源R1在被T1使用时,T

2021-11-15 19:43:27 302

原创 Access denied for user ‘***‘@‘localhost‘ (using password: YES)

在springboot连接数据库的时候发生了这个错误,网上查看大部分说是密码错误,可我的错误不一样,我的是在application.properties这个文件里有以下内容导致我不管在application.yml里怎么配置都不行,只要把这部分删了就行了。# 数据库驱动:spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver# 数据源名称spring.datasource.name=defaultDataSource# 数据库连

2021-11-03 18:28:07 75

空空如也

空空如也

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

TA关注的人

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