自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(155)
  • 收藏
  • 关注

原创 21、Java中的this关键字有什么作用?

第一:当this表示调用其他构造方法的时候,只能在某一个构造方法中使用,所以在静态方法中不可能使用this来调用其他的构造方法。第二:this()可以在构造方法中调用本类的其他的重载的构造方法,这时this()必须放在构造方法的第一行。第一:this在当前类的构造方法中或者当前类的实例方法中可以表示当前对象。this关键字可以表示当前对象或者调用当前类的其他构造方法。this可以在当前类的构造方法中调用当前类的其他构造方法。

2024-07-18 15:25:36 267

原创 java面试题

面试中常见的问题类型第一类:答案是 (是/否) 类型的问题Tips:此类问题肯定都有隐含的问题:为什么?> 案例:String类能不能被继承?> 初级回答:直接给出明确的答案:不能> 正常回答:阐述为什么:String是final修饰的类> 优秀回答:最好做到问一答三(除非面试官明确表示,不让你多说)第二类:罗列型问题> Tips: 你的回答必须有条目有顺序。> 最重要的条目请首先回答多使用有前后顺序的词汇(首先,其次,再次.....

2024-07-15 16:55:55 861

原创 前后端分离项目中-EasyExcel导入和导出

创建SpringBoot工程,我这里使用的SpringBoot是2.7.16</</</</</</</我这里使用的easyexcel版本是3.3.2,是我在写这篇文章的时候的最新版本。

2023-10-31 11:42:58 2162

原创 并发编程-单例

今天的文章很短,但是很经典,值得你仔细阅读每一个文字…正如我开篇所说,我们要整理一些java并发编程的学习文档,这一篇就是第八篇:单例模式。这一篇主要聊聊单例的几种实现方式已经适用的场景。专业解释:单例就是确保一个类只有一个实例,并且有一个全局获取这个实例的访问点。简单的说呢就是一个类只能创建一个实例,任何时候使用这个类的实例对象都是同一个。基本都是了减少这个类对象创建和销毁过程的消耗。嗯!思考思考,一个类如果只有一个实例,必然不能随便创建,所以单例类的关键代码就是构造方法是私有的,不允许在其他地方随便创建

2022-07-02 17:02:43 1896 1

原创 并发编程-ThreadLocal

今天的文章很短,但是很经典,值得你仔细阅读每一个文字.........正如我开篇所说,我们要整理一些java并发编程的学习文档,这一篇就是第七篇:ThreadLocal。主要聊聊ThreadLocal本质。希望对你有帮助。...

2022-06-10 20:08:10 1727

原创 并发编程-线程间的通信

并发编程-线程间的通信说在前面的话今天的文章很短,但是很经典,值得你仔细阅读每一个文字…正如我开篇所说,我们要整理一些java并发编程的学习文档,这一篇就是第六篇:线程通信问题。主要聊聊线程间的通信问题,主要以生产者消费问题为例讲解。开整故事理解先来看一个故事吧​ 紫萱和子轩是一家娃娃工厂的流水线上的员工,紫萱负责给娃娃安装腿脚,子轩负责给娃娃上颜色,在紫萱和子轩之间有一个箱子,紫萱安装好腿脚的娃娃就放在箱子中,当箱子放满了,紫萱就会敲敲箱子通知子轩抓紧上色,紫萱就开始玩手机看倩倩的直播。子

2022-03-31 20:57:32 402

原创 并发编程-volatile关键字

说在前面的话正如我开篇所说,我们要整理一些java并发编程的学习文档,这一篇就是第四篇:volatile关键字。 主要讲volatile关键字的主要作用和实现这些作用的原理。开整先整体来说:volatile关键字可以修饰变量,volatile修饰的变量有两个作用第一是确保变量在线程间可见第二是确保对变量的操作不可重排序。tips:我个人觉得,关于volatile关键字,把解决的问题搞明白才是关键。明白要解决的问题是什么,那么在以后的搬砖过程中,一定要注意这些问题就好了。所以在我的这篇文章中我

2022-03-17 20:30:50 464

原创 使用SSM实现一个简单的CRUD

写在前面的话​ SSM框架整合开发会大幅度的提高我们的开发效率。我这里准备写一套SSM整合之后实现的单表的CRUD的案例,希望给刚刚学习SSM框架的小伙伴一些帮助。​ 也欢迎给位大神给出指点 _。tips:后面有源码下载地址。欧耶!直接开打吧你需要准备的武器学习过Spring,SpringMVC和MyBatis框架会整合SSM框架,不会的可以参考我的这一篇文章:https://juejin.cn/post/7068889782637559816要有一份对技术不断追求的心要热爱我的民族

2022-03-10 13:16:19 2293 1

原创 并发编程-CAS

说在前面的话正如我开篇所说,我要整理一些java并发编程的学习文档,这一篇就是第二篇:java中的CAS。这一篇主要说的CAS的原理,以及java中的CAS的一些应用吧!欢迎关注和点赞。开整CAS是个啥CAS,compare and swap的缩写,中文翻译成比较并交换。首先想说的就是:CAS只是一个思想,原理。 本身没有问题,也没有所谓的ABA问题,也没有所谓的乐观锁长时间占用资源的问题。这些问题都是因为我们使用CAS的方式导致的。 不信?看我细细道来…CAS描述起来大概是: 准备一个预期

2022-03-10 13:01:19 509

原创 并发编程-synchronized

并发编程-synchronized说在前面的话正如我开篇所说,我要整理一些java并发编程的学习文档,这一篇就是第三篇:synchronized关键字。主要说synchronized关键字的使用,锁原理,锁重入,脏读,锁升级等问题。欢迎关注和点赞。Lat‘s go脏读先来看一个概念:脏读。所谓脏读就是读取到了脏数据。哪什么是脏数据呢?所谓脏数据就是没有意义的数据或者说不确定的数据。脏读产生的情况基本就是一个线程读取到了其他线程在修改但是并没有修改完成的数据。就好像:如花正和男朋友闹别

2022-03-09 18:37:34 214

原创 并发编程-原子操作

什么是原子操作,所谓原子操作,就是一个操作是不能打断的操作。嗯…确切的说应该是不备其他线程或者任务影响的操作。没错,原子操作就是你在家里的一次上厕所的操作 >> 进厕所,上锁,执行操作… 身心愉悦,开锁,离开…在程序中的体现就是一个线程在执行某个任务占用某个资源在操作的时候,不会被其他的线程或者任务抢走资源,直到这个任务结束释放资源,其他的线程或者任务才能使用这个资源。

2022-03-08 21:33:10 376

原创 并发编程-开篇

说在前面的话 看到这篇文章的同学,你好!我是戴着假发的程序员。 java并发编程这些年到了新的高度,貌似就成了后端开发工程师和架构师所必需掌握的技术。于是乎我翻出了我以前的学习笔记,准备整一系列的并发编程的相关技术文章分享出来,一方面给自己做个记录,另一方面如果能帮助到你,那就更好了。如果我的文章中有任何问题,也欢迎你指出。如果有什么写的不清楚不明白的, 也欢迎提问。看看我之前整理的体系这个体系可能不完整,不细致,不强大,但是我觉得,先把这些弄好再说。我接下来会尽量及时更新,但是由于平时还要搬

2022-03-08 21:21:23 254

原创 纯注解整合SSM框架

说在前面的话SSM:Spring+SpringMVC+MyBatis。​ SSM框架组合已经是现在最热门的后端框架组合了。本篇我要说的就是使用纯注解整合这三大框架。当然了SpringMVC本身就是spring的一部分。也谈不上整合。所以SSM有时我叫SM。(其实不用在意叫法,好听就行)。​ 当然了我们都知道现在有SpringBoot可以轻松完成这些框架整合配置。所以这篇文章是给学习中的学子们准备的,已经熟练使用SpringBoot的大佬请绕行。tips:后面有源码下载地址。嗨!直接开打吧你需

2022-02-26 13:54:41 4435 2

原创 redis-教程

Redis 使用1. redis 介绍NoSQL分类键值(Key-Value)存储数据库这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果数据库管理员(DBA)只对部分值进行查询或更新的时候,Key/value就显得效率低下了。举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB。列存储数据库这部分数据库通常是用来应对分布式存储的

2021-09-28 16:17:04 238

原创 Linux系统安装-linux软件安装-linux常用命令

Linux安裝常用命令,软件安装Linux 简介Linux分类Linux 系统根据其原生程度不同分为,内核版本和发行版本。1)内核版本:在 Linus 领导下的内核小组开发维护的系统内核的版本号2)发行版本:一些组织或公司在内核版基础上进行二次开发而重新发行的版本根据 发行版本分支来划分Linux 的发行版本众多,一些组织或公司为许多不同的目的而制作, 包括对不同计算机结构的支持, 对一个具体区域或语言的本地化,实时应用,和嵌入式系统,甚至许多版本故意地只加入免费软件。已经有超过三百个发

2021-09-27 17:03:02 1087

原创 CentOS7网络配置-NAT静态IP

VMware网络设置[1]打开虚拟机网络编辑器[2][3] 记住你自己的网关,我这里的网关是 192.168.92.2[4] 设置虚拟机的网络选项[5] 设置网络模式为NAT[6] 启动虚拟机,编辑网卡文件查看网络信息:ip addr编辑网卡:vi /etc/sysconfig/network-scripts/ifcfg-ens33打开文件后按 i 编辑内容如下:保存退出。[7]重启网络查看网络:...

2021-09-26 19:45:41 288

原创 MySQL-存储过程

前言MySQL 5.0 版本开始支持存储过程。存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。优点存储过程可封装,并隐藏复杂的商业逻辑。存储过程可以回传值,并可以接受参数。存储过程无法使用 SELECT 指令来运行,因为它是子程序,与查

2021-09-26 15:42:38 1243

原创 使用VMware安装CentOS7详细操作步骤

CentOS系统安装Linux 是操作系统,它和我们使用的 windows 系统一样需要安装在一台电脑上进行使用,我们可以在一台真实的物理主机上安装 Linux 并进行使用,但是我们在学习时可以使用一种虚拟机软件,在我们现有的电脑上模拟一台虚拟的计算机,来方便地进行 Linux 的安装和学习。目前市面上比较常见的虚拟机软件有两种:一种是 VMware(威睿)公司的虚拟机软件(VMware workstation),功能强大,收费产品,另一种是 Oracle公司的虚拟机软件(VitrualBox

2021-09-26 13:54:56 339 2

原创 MySQL-触发器

触发器概述基本概念MySQL好像从5.0.2版本就开始支持触发器的功能了。触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。触发器的特性:1、有begin end体,begin end;之间的语句可以写的简单或者复杂2、什么条件会触发:insert,update,delete3、什么时候触发:在增删改前或者后4、触发频率:针对每一行执行5、触发器定义在表上,附着在表上。触发器执行是需要时间的,所以对

2021-09-25 15:43:04 215

原创 MySQL-自定义函数

前言MySQL本身提供了内置函数,这些函数的存在给我们日常的开发和数据操作带来了很大的便利,比如我前面提到过的聚合函数SUM()、AVG()以及日期时间函数等等,可是我们总会出现其他的需求:我们需要调用一个函数,这个函数需要按照我们的要求来实现我们自己的功能,可是这个函数式系统不能提供的因为这中需求的不确定性。因此我们需要自己来解决这种需求。还好MySQL设计的扩展性给了我们这个机会,我们可以通过自定义函数的功能解决这个问题。简介在MySQL中使用自定义函数也需要相应的要求,语法如下,创建新函数:

2021-09-25 15:03:21 167

原创 MySQL-存储过程

前言MySQL 5.0 版本开始支持存储过程。存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。优点存储过程可封装,并隐藏复杂的商业逻辑。存储过程可以回传值,并可以接受参数。存储过程无法使用 SELECT 指令来运行,因为它是子程序,与查

2021-09-24 19:36:43 307

原创 java-线程池

线程池基本概念在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁。如何利用已有对象来服务就是一个需要解决的关键问题,其实这就是一些"池化资源"技术产生的原因。比如大家所熟悉的数据库连接池正是遵循这一思想而产生的。线程池也是一样。应用场景1、需要大量的线程来完成任务,且完成

2021-09-24 14:51:38 154

原创 java-阻塞队列

阻塞队列基本概念什么是队列?看下面的图理解理解:当然,我作为专业的程序员,在我眼里,上面的图就是这样的:什么是阻塞队列呢?大概是这样的:你坐过公交车吗? 不对应该是挤过公交吗?就是那种只有后面下去一个,前面才能上去一个。大概是这样的:嗯!如果你挤过这样的公交,那就是讲过阻塞队列了。…队列就是我们常说的先进先出的线性数据结构。而阻塞队列 是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。

2021-09-23 19:55:03 3257 1

原创 java-注解

注解概念注解可以理解为注释的一种:我们常说的注释就是在代码中的一些解释,纯粹的为了增强代码的可读性。编译器不会编译这些注释。注解在程序中是有一定的意义,有一些注解会一致持续到程序运行都是有效的。JDK已经提供的注解:1.@Override 标记一个方法是重写的父类的方法2.@Deprecated 标记一个方法是过时方法,不建议使用的方法3.@SuppressWarnings 消除警告的注解4.@SafeVarargs 消除对污染警告在声明具有模糊类型(比如:泛型)的

2021-09-22 19:40:49 163 1

原创 java-反射

反射概念所谓反射就是java提供一个可以在运行期动态的获取和操作java中所有类的所有信息。java程序的运行流程编写源代码 -->编译源代码为字节码–>加载运行字节码.什么是加载字节码文件?所谓加载字节码文件就是将字节码文件读取到内存中。加载字节码的过程就称之为类加载。JVM是动态按需加载的,一个类在没有被使用的情况下是不会被加载到内存中的。什么是使用一个类?如何让JVM完成类加载?我们之前的程序中对类的正常的使用都会让JVM加载这个类。案例:Person p = new

2021-09-22 08:27:29 240

原创 java-泛型

泛型认识我们在集合中使用过泛型,泛型可以指定集合中的数据类型。在没有泛型的情况下,我们只能使用Object类型。泛型就是可以动态的指定类型的范围。看一个案例:我们自己实现一个队列:没有泛型:/** * @author 戴着假发的程序员 * @TODO * @organization 飞虎队 * 2020年8月31日 上午11:37:21 */public class ObjectQueue { private LinkedList objs = new LinkedList();

2021-09-18 16:28:23 161

原创 java内部类

内部类概念所谓内部类就是在一个类的内部再申明一个类。凡是申明在类的成员位置的就是成员内部类,凡是申明在方法或者代码块中的类都是局部内部类。成员内部类非静态成员内部类基本写法案例:/** * @author 戴着假发的程序员 * @TODO * @organization 飞虎队 * 2020年8月31日 上午9:16:28 */public class Outer { private String name; public void method() { System

2021-09-17 21:00:36 2398 2

原创 java网络编程

Java 网络编程网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。java.net 包中 J2SE 的 API 包含有类和接口,它们提供低层次的通信细节。你可以直接使用这些类和接口,来专注于解决问题,而不用关注通信细节。java.net 包中提供了两种常见的网络协议的支持:TCP:TCP(英语:Transmission Control Protocol,传输控制协议) 是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP 层是位于 IP 层之上,应用层之下的中间层

2021-09-17 20:15:58 172

原创 CORS请求原理

CORS请求原理CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。基本上目前所有的浏览器都实现了CORS标准,其实目前几乎所有的浏览器ajax请求都是基于CORS机制的,只不过可能平时前端开发人员并不关心而已(所以说其实现在CORS解决方案主要是考虑后台该如何实现的问题)。JAVA后台配置JAVA后台配置只需要遵循如下步骤即可:第一步:

2021-09-07 08:26:28 153

原创 Lamda表达式

戴着假发的程序员出品 抖音ID:戴着假发的程序员欢迎关注Lamda表达式基本概念1、避免匿名内部类定义过多2、可以让你的代码看起来很简洁3、去掉了一堆没有意义的代码,留下核心的逻辑4、其实质属于函数式编程的概念常见语法大致如下:(params)-> expression[表达式](params) -> statement[语句](params) -> {statements}案例:new Thread(()-> System.out.println(T

2021-03-18 16:47:07 983 3

原创 Spring应用手册-BeanPostProcessor接口

戴着假发的程序员出品 抖音ID:戴着假发的程序员欢迎关注BeanPostProcessor接口 spring应用手册(第五部分) BeanPostProcessor称之为bean的后置处理器,在spring容器初始化时就大量的使用了这个接口的对象。先看看源码:public interface BeanPostProcessor { //bean初始化方法调用前被调用

2020-11-28 11:47:20 231 1

原创 Spring应用手册-BeanFactoryPostProcessor接口

戴着假发的程序员出品 抖音ID:戴着假发的程序员欢迎关注BeanFactoryPostProcessor接口 spring应用手册(第五部分) BeanFactoryPostProcessor是bean工厂的bean属性处理容器,说通俗一些就是可以管理我们的bean工厂内所有的beandefinition(未实例化)数据,可以随心所欲的修改属性。先看看源码:package org.

2020-11-28 11:44:57 169

原创 Spring应用手册-FactoryBean接口

戴着假发的程序员出品 抖音ID:戴着假发的程序员欢迎关注FactoryBean接口 spring应用手册(第五部分) FactoryBean是一个工厂Bean,可以生成某一个类型Bean实例,它最大的一个作用是:可以让我们自定义Bean的创建过程。BeanFactory是Spring容器中的一个基本类也是很重要的一个类,在BeanFactory中可以创建和管理Spring容器中的Bea

2020-11-28 11:42:06 165

原创 Spring应用手册-AliasRegistry接口

戴着假发的程序员出品 抖音ID:戴着假发的程序员欢迎关注AliasRegistry接口 spring应用手册(第五部分) AliasRegistry接口主要是对springBean的别名进行管理的顶级接口,主要是对别名的增删功能。看看源码:public interface AliasRegistry { //对指定的名称注册别名 void registerAlias

2020-11-28 11:39:50 229

原创 Spring应用手册-ImportSelector接口

戴着假发的程序员出品 抖音ID:戴着假发的程序员欢迎关注ImportSelector接口 spring应用手册(第五部分) ImportSelector接口往往是用于导入配置类。ImportSelector接口和@Import注解的使用在上一章节中已经解释过,这里就直接使用了。 我们重点讲解ImportSelector接口。ImportSelector接口有很多实现类,往往用于注册

2020-11-28 11:37:48 237 1

原创 Spring应用手册-ImportBeanDefinitionRegistrar接口

戴着假发的程序员出品 抖音ID:戴着假发的程序员加粗样式 欢迎关注ImportBeanDefinitionRegistrar接口 spring应用手册(第五部分) ImportBeanDefinitionRegistrar接口提供了一个动态注入bean的方法,所以我们可以通过实现这个接口,然后自己手动注入bean。spring内部的bean的注入大部分都是使用这个套路。当然这个接口的

2020-11-28 11:34:59 1961 2

原创 Spring应用手册-DisposableBean接口

戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注DisposableBean接口 spring应用手册(第五部分) DisposableBean接口和InitializingBean接口一样,为bean提供了释放资源方法的方式,它只包括destroy方法,凡是继承该接口的类,在bean被销毁之前都会执行该方法。这里要注意这里的destory和我们配置的destory-met

2020-11-28 11:32:01 6224

原创 Spring应用手册-InitializingBean接口

戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注InitializingBean接口 spring应用手册(第五部分) InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候都会执行该方法。这里要注意的,InitializingBean的afterProperties

2020-11-28 11:29:38 144 1

原创 Spring应用手册-BeanDefinition接口

戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注BeanDefinition接口 spring应用手册(第五部分) 要了解BeanDefinition接口,你必须了解springBean的加载流程。springBean加载流程:①spring会加载所有符合要求的class(就是我们配置或者注解的类)。②解析这些类相关信息③根据解析的信息生成注册信息。这里的注册信息就是

2020-11-03 08:52:18 155

原创 Spring应用手册-Aware接口

戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注Aware接口 spring应用手册(第五部分) Aware翻译过来是感知,意识到,获取到等等。在spring中有很多Aware接口,实现这些接口的Bean可以“感知”到对应的对象,当然其实是spring帮我们注入的。我们使用BeanNameAware接口来举例子,spring中所有的Aware接口信息的罗列参看后面的列表。B

2020-11-03 08:50:36 169

空空如也

空空如也

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

TA关注的人

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