自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (1)
  • 收藏
  • 关注

原创 Spring Security设置用户信息

Spring Security设置用户信息spring security默认情况下存在一个名为user的账号,对应的密码会在控制台输出2022-02-26 22:35:32.825 INFO 10816 --- [ main] .s.s.UserDetailsServiceAutoConfiguration : Using generated security password: 5a709d3a-0c45-4ff7-a294-8a5a1e8b1c54可以通过以下三种方法修

2022-03-06 15:33:33 1630

原创 spring是什么?

spring是什么?spring是一个轻量级的开源的J2EE框架。它是一个容器框架,用来装javabean(java对象),中间层框架(万能胶)可以起一个连接作用,比如说把Struts和Hibernate粘合在一起,让企业开发更快、更简洁spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。从大小与开销两方面而言spring是轻量级的。通过控制反转(IOC)的技术达到松耦合的目的。提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发。包含并管

2022-02-21 12:52:39 316

原创 线程池中线程复用原理

线程池中线程复用原理线程池将线程和任务进行解耦,线程是线程,任务是任务,摆脱了通过Thread创建线程时,一个线程必须对应一个任务的限制。在线程池中,同一个线程可以从阻塞队列中不断获取新任务来执行,其核心原理在于线程池对Thread进行了封装,并不是每次执行任务都会调用Thread.start()来创建新线程,而是让每个线程去执行一个“循环任务”,在这个“循环任务”中不停检查是否有任务需要被执行,如果有则直接执行,也就是调用任务中的run方法,将run方法当成一个普通方法执行,通过这种方式只使用固定的线

2022-02-21 12:52:03 925

原创 线程池中阻塞队列的作用?为什么要先添加队列而不是先创建最大线程?

线程池中阻塞队列的作用?为什么要先添加队列而不是先创建最大线程?一般的队列只能保证作为一个有限长度的缓冲区,如果超出了缓冲长度,就无法保留当前的任务了,阻塞队列通过阻塞可以保留住当前想要继续入队的任务。阻塞队列可以保证任务队列中没有任务是阻塞获取任务的线程,使得线程进入wait状态,释放cpu资源。阻塞队列自带阻塞和唤醒的功能,不需要额外处理,无任务执行时,线程池利用阻塞队列的take方法挂起,从而维持核心线程的存活、不至于一直占用cpu资源。在创建新线程的时候,是要获取全局锁的,这个时候其

2022-02-21 12:42:40 1142

原创 线程池参数说明

线程池参数说明corePoolSize: 核心线程数,也就是正常情况下创建的工作线程数,这些线程创建后不会销毁,而是一种常驻线程。maxinumPoolSize: 最大线程数,它与核心线程数相对应,表示允许被创建的最大线程数,如果当前任务较多时,核心线程用完后还是无法满足需求,此时就会创建新的线程,但线程池内的线程总数不会超过这个数。keepAliveTime、unit: 表示超出核心线程数之外的线程的空闲存活时间,也就是核心线程不会消除,但超出核心线程数之外的线程则会在空闲一定时间keepAliv

2022-02-18 12:42:32 212

原创 为什么要使用线程池?

为什么要使用线程池?降低资源消耗;提高线程利用率,降低创建和销毁线程的消耗。提高响应速度;任务来了直接有线程可以用,而不是先创建,再执行。提高线程的可管理性;线程是稀缺资源,使用线程池可以统一分配、调优监控。...

2022-02-18 12:41:56 213

原创 centos7硬盘分区及盘符挂载

centos7硬盘分区及盘符挂载常用命令说明命令说明lsblk查看目录结构lvdisplay说明:显示LVM逻辑卷空间大小、读写状态和快照信息等属性。如果省略”逻辑卷“参数,则lvdisplay命令显示所有的逻辑卷属性。否则,仅显示指定的逻辑卷属性语法:lvdisplay [参数]参数:逻辑卷(指定要显示属性的逻辑卷对应的设备文件,例如lvdisplay /dev/centos/home)。实例:使用lvdisplay命令显示指定逻辑卷的属性。[root@host

2022-02-14 12:48:02 1796

原创 并发、并行、串行的区别

并发、并行、串行的区别并发:允许两个任务彼此干扰。统一时间点、只有一个任务运行,交替执行。并行:在时间上是重叠的,两个任务在同一时刻互不干扰的同时执行。串行:在时间上不可能发生重叠,前一个任务没执行完,下一个任务就只能等待。...

2022-02-13 21:44:43 1140

原创 ThreadLocal内存泄漏原因分析,以及如何避免

ThreadLocal内存泄漏原因分析,以及如何避免内存泄漏是程序在申请内存后,无法释放已申请的内存空间,多次内存泄漏就会导致内存耗光的严重问题。强引用:使用最普遍的引用(new),一个对象具有强引用,不会被垃圾回收器回收。当内存空间不足,java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不回收这种对象。如果想取消强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样可以使JVM在合适的时间回收该对象。弱引用:JVM进行垃圾回收时,无论内存是否充足,都会回收被弱

2022-02-13 21:38:58 4298 5

原创 ThreadLocal的原理和使用场景

ThreadLocal的原理和使用场景每一个Thread对象均含有一个ThreadLocalMap类型的成员变量,它存储本线程中所有ThreadLocal对象及其对应的值,ThreadLocalMap由一个个Entry对象构成,Entry继承自WeakReference<ThreadLocal<?>>,一个Entry由ThreadLocal对象和Object构成。由此可见,Entry的key是由ThreadLocal对象,并且是一个弱引用。当没有指向key的强引用后,该key就会被

2022-02-12 23:38:43 1088

原创 对守护线程的理解

# 对守护线程的理解守护线程:为所有非守护线程提供服务的线程;任何一个守护线程都是整个JVM中所有非守护线程的保姆守护线程类似于整个进程的一个默默无闻的小喽喽;它的生死无关重要,它却依赖整个进程而运行;只要其他线程结束,没有执行了,程序就结束了,守护线程也就中断了注意:守护线程的终止是自身无法控制的,因此千万不要把IO、File等重要操作逻辑分配给它;守护线程的作用?举例,GC垃圾回收线程就是一个经典的守护线程,当我们的程序中不再有任何运行的Thread,程序就不会再产生垃圾,也就不需要垃圾回收器

2022-02-12 17:34:23 863

原创 对线程安全的理解

对线程安全的理解线程安全指的是内存安全,堆是共享内存,可以被所有线程访问。当多个线程访问一个对象时,如果不用进行额外的同步控制或其他的协调操作,调用这个对象的行为都可以获得正确的结果,我们就说这个对象是线程安全的堆:是进程和线程共有的空间,分全局堆和局部堆。全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。堆在操作系统对进程初始化的时候分配,运行过程中也可以向系统要额外的堆,但是用完了要还给操作系统,要不然就是内存泄漏堆是java虚拟机所管理的内存中最大的一块,是所有线程共享的一块内存区域,在

2022-02-12 16:56:50 1131

原创 sleep()、wait()、join()、yield()的区别

sleep()、wait()、join()、yield()的区别锁池:所有需要竞争同步锁的线程都会放在锁池中,比如当前一个锁已经被其中一个线程得到,则其他线程需要在这个锁池中等待,当前面的线程释放同步锁后锁池中的线程去竞争同步锁,当某个线程得到后会进入就绪队列进行等待cpu资源的分配等待池:当我们调用wait()方法后,线程会放到等待池中,等待池的线程是不会去竞争同步锁的。只有调用了notify()或notifyAll()后等待池的线程才会开始竞争锁;notify()是随机从等待池中选出一

2022-02-12 15:24:56 255

原创 线程的生命周期?线程有几种状态

线程的生命周期?线程有几种状态线程状态:创建、就绪、运行、阻塞、死亡创建状态(New):新创建了一个线程对象就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权运行状态(Running):就绪状态的线程获取了CPU,执行程序代码阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态阻塞状态又分:等待阻塞:运

2022-02-12 14:40:12 74

原创 接口和抽象类的区别

接口和抽象类的区别jdk<1.8,接口只能存在public abstract的方法,1.8及以后接口中可以有default的方法实现,以及静态方法实现,而抽象类中既可以有抽象方法,也可以有普通方法抽象类中的成员变量可以是各种类型的,可以在子类中重新定义,也可以被重新赋值;而接口中的成员变量只能是public static final类型的,且必须赋初始值,不能被修改接口的实现使用implements,一个类可以实现多个接口;抽象类的继承使用extends,一个类只能继承一个抽象类;所以接口可以

2022-02-06 20:26:23 381

原创 重载和重写的区别

重载和重写的区别重载:发生在同一个类中,方法名必须相同,参数类型、个数、顺序不同。返回值、修饰符无要求。重写:发生父子类中,方法名、参数列表必须相同,子类的返回值范围、抛出的异常范围小于等于父类,访问修饰符范围大于等于父类;私有方法不允许被子类重写,因为类中私有的方法只有本类中的其他方法可以访问到,子类是访问不到父类中私有的变量或方法的,设计的时候把方法私有就是为了不想让别人访问到,自然也不可能让子类重写静态方法不允许被子类重写,静态方法属于类本身的,只存在一份,会被该类的所有对象共享,不可以被

2022-02-06 17:31:45 144

原创 String、StringBuffer、StringBuilder的区别

String、StringBuffer、StringBuilder的区别相同之处:String、StringBuffer、StringBuilder都是final类,不允许被继承。不同之处:主要是性能和线程安全这两个方面。性能:StringBuilder>StringBuffer>StringString为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建就不可更改(对String的值的修改JVM会创建新对象,回收旧对象),后两

2022-02-06 17:07:01 414

原创 final说明

final说明修饰类:表示类不可被继承修饰方法:表示方法不可被子类覆盖,但是可以重载修饰变量:表示变量一旦被赋值就不可以更改它的值修饰成员变量如果final修饰的是类变量,只能在静态初始化块中指定初始值或者声明该类变量时指定初始值。如果final修饰的是成员变量,可以在非静态初始化块、声明该变量或者构造器中执行初始值。修饰局部变量系统不会为局部变量进行初始化,局部变量必须显示初始化。因此使用final修饰局部变量时,即可在定义时指定默认值(后面的代码不能对变量再赋值),也可以

2022-02-03 17:44:46 560

原创 HashMap与TreeMap、HashTable的区别及适用场景

HashMap与TreeMap、HashTable的区别及适用场景HashMap非线程安全,HashMap基于哈希表实现。使用HashMap要求添加的键类明确定义了hashCode()和equals()【可以重写hashCode()和equals()】,为了优化HashMap空间的使用,您可以调优初始容量和负载因子。TreeMap:非线程安全基于红黑树实现。TreeMap没有调优选项,因为该树总处于平衡状态。适用场景:HashMap和HashTable:HashMap去掉了HashTabl..

2022-02-01 11:15:55 737

原创 HashSet和TreeSet的使用场景

HashSet和TreeSet的使用场景TreeSet是二叉树(红黑树的数据结构)实现的,TreeSet中的数据是自动排好序的,不允许放入null值。HashSet是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中的唯一约束。HashSet要求放入的对象必须实现HashCode()方法,放入的对象是以HashCode码作为标识的,而具有相同内容的String对象,HashCode是一样的,所以放入的内容不能重复,但是同一个类的

2022-02-01 11:15:23 2842

原创 ArrayList和LinkedList的区别和适用场景

ArrayList和LinkedList的区别和适用场景ArrayList:优点:ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会较高(在内存里连着放的)。缺点:因为地址连续,删除、插入元素ArrayList要移动数据,所以效率较低。LinkedList:优点:LinkedList基于链表的数据结构,地址是任意的,所以在开辟内存空间的时候不需要等一个连续的地址,对于新增和删除操作,LinkedList比较占优势。LinkedList适用

2022-02-01 11:14:27 1568

原创 List与Set的区别

List与Set的区别List、Set都继承自Collection接口;List的特点:元素有放入顺序,且可重复;Set的特点:元素无放入顺序,且不可重复(注意:元素虽然无放入顺序,但是元素在Set中的位置是由该元素的HashCode决定的,其位置是固定的)。List支持for循环,也就是通过下标来遍历,也可以用迭代器,但是Set只能用迭代器,因为他无序,无法使用下标取值;List接口有三个实现类:LinkedList,ArrayList,Vector。Set接口有两个实现类:HashSet(底层由H

2022-01-28 20:55:19 15127

原创 用JDBC如何调用存储过程

用JDBC如何调用存储过程

2022-01-27 15:54:14 2332

原创 Java快速排序

Java快速排序

2022-01-27 15:45:50 554

原创 XML构建

生成xml文件

2022-01-25 22:36:13 102

原创 利用JavaScript实现点击按钮后,再过60秒后才能再次点击此按钮

利用JavaScript实现点击按钮后,再过60秒后才能再次点击此按钮

2022-01-25 16:31:35 1840

原创 element-ui官方手册下载

内网构建elementui官方手册

2022-01-05 17:09:38 2374

原创 CentOS7防火墙操作

防火墙查看防火墙状态firewall-cmd --state停止firewallsystemctl stop firewalld.service禁止firewall开机启动systemctl disable firewalld.service

2021-10-21 19:32:58 32

原创 vim编辑器命令说明

vim编辑器运行模式编辑模式:等待编辑命令输入插入模式:编辑模式下,输入“i”进入插入模式,插入文本信息命令模式:在编辑模式下,输入“:”进入命令

2021-10-21 19:30:44 34

原创 Linux常用命令 - 系统操作

Linux常用命令:系统操作命令说明stat显示指定文件的相关信息,比ls命令显示内容更多who显示在线登陆用户hostname显示主机名称uname显示系统信息top显示当前系统中耗费资源最多的进程ps显示瞬间的进程状态du显示指定的文件(目录)已使用的磁盘空间的总量df显示文件系统磁盘空间的使用情况free显示当前内存和交换空间的使用情况ifconfig显示网络接口信息ping测试网络的连通性

2021-10-21 19:28:51 33

原创 Linux常用命令 - 文件操作

文件操作命令说明语法参数参数说明ls显示文件和目录列表ls [-alrtAFR] [name…]-l列出文件的详细信息-a列出当前目录所有文件,包含隐藏文件mkdir创建目录mkdir [-p] dirName-p父目录不存在情况下先生成父目录cd切换目录cd [dirName]touch生成一个空文件echo生成一个带内容的文件,“>”表示生成新文件,“>>”表示追加内容echo abc

2021-10-21 19:26:11 24

原创 java基础知识

Java基础文本型char:Java字符采用Unicode编码,每个字符占两个字节,因而char可以用十六进制编码形式表示,例:char c = '\u0061';char字符类型事实上是一个16位无符号整数,这个值是对应字符的编码。Unicode是全球语言统一编码,Java字符类型采用Unicode字符编码。Unicode是世界通用的定长字符集,所有的字符都是16位。Unicode编码格式(0~65535)‘a’ = 97‘A’ = 65‘0’ = 48char

2021-10-07 20:42:59 92

element-ui v2.15.7

element-ui v2.15.7

2022-02-05

空空如也

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

TA关注的人

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