自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java并发之:可见性问题引发的思考

文章目录:

2023-05-23 15:29:32 113

转载 java并发系列之:死锁

在本文中,我们将探讨死锁的概念及其产生的原因,并通过示例代码来说明死锁的出现情况。我们还将介绍如何通过破坏死锁的不同条件来解决死锁问题,通过深入了解死锁及其解决方法,我们可以更好地应对并解决系统中可能出现的死锁情况。本文简单描述了死锁的概念、产生死锁需要满足的四个条件、破坏死锁不同条件的思路和示例。在实战中如何预防死锁、排查死锁,将在后面的文章中补充。若文章中有描述不清或者有误的地方,欢迎评论区讨论与指正!

2023-05-20 16:48:42 473

原创 浅谈单例模式

一、 单例模式的定义单例模式是确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点,它隐藏了其所有的构造方法,属于创建型模式。二、单例模式的常见写法1. 饿汉式单例定义在单例首次加载的时候就创建实例优点写法简单、执行效率高、性能高(因为没加锁),不存在线程安全问题缺点在某些情况下可能会造成内存的浪费。因为在类加载的时候单例就被初始化了,如果这些类没有使用,则会浪费内存空间所以,在需要大量创建单例的情况下,不适合使用饿汉式单例...

2022-05-25 18:14:55 255

原创 Jdk8中Stream对于字符串、数组、集合之间的转化

字符串转int数组入参是以空格划分的整型数组,如"1 2 3 4"; 将该字符串转化成int类型的数组;//字符串转int类型数组//方式一int[] ints = Arrays.stream(s.split(" ")).mapToInt(n -> Integer.parseInt(n)).toArray();//方式二int[] s1 = Stream.of(s.split(" ")).mapToInt(n -> Integer.parseInt(n)).toArray();

2022-03-20 17:01:10 4389

原创 Java压力测试工具--Apache JMeter的安装与使用

一、JMeter这是一个用于java的压力测试工具,可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器等具体的使用见下面的博客链接Apache JMeter软件的安装与使用(详细)_a少年不年少的博客-CSDN博客_apache jmeter二、软件的下载与安装访问ApacheJMeter官网Apache JMeter - Download Apache JMeter下...

2022-01-25 15:39:53 8527

原创 域名解析软件SwitchHosts的安装与使用

一、背景在学习微服务的时候,eurekaserver在本机练习集群的时候,需要对自定义的域名进行解析,即解析成本机地址二、域名解析方法需要修改本地的host⽂件,该文件路径在c:\Windows\System32\drivers\etc\hosts往hosts文件里添加自定义的域名和地址127.0.0.1 peer1127.0.0.1 peer2127.0.0.1 peer3三、SwitchHosts的使用以管理员身份打开SwitchHosts软件,点击下图左上.

2022-01-18 19:45:10 1059

原创 idea项目左下角没有services的解决办法

一、问题原本是想在左下角的services里面控制运行的项目,但是操作的时候却没有找到services 正常情况按下图打开view下的toolwindows会有一个services的选项,但是这里没有 二、解决办法参考:【IDEA】idea打开新项目,左下角的工作栏中没有显示Services解决办法 - Angel挤一挤 - 博客园效果:我这显示的是RunDashboard而不是Service,但是问题不大...

2022-01-18 12:12:12 4556 1

原创 SpringBoot开发的日期格式化问题

一、背景概述前端页面输入的是字符串日期,参数传到后端的controller后注入实体类对象的Date类型属性就会出问题,因此需要对前端的日期格式字符串格式化成Date类型;后端返回实体类对象给前端时,对象中的Date属性也需要格式化成String类型才便于前端展示 本文以springboot开发为背景粘贴代码二、方式一:使用注解在实体类的Date属性上添加@DateTimeFormat注解和@JsonFormat注解 @DateTime...

2022-01-13 14:56:36 560

原创 学习过程中安装的idea插件(持续更新)

一、JBLSpringBootAppGen插件用于自动生成springboot的启动类和application.yml配置文件安装JBLSpringBootAppGen插件安装完毕后,选中项目模块后右键,可以看到下图的选项点击选项后如下图点击ok后会自动帮我们生成springboot的启动类和application.yml配置文件二、lombok插件项目引入lombok简化实体类开发时,可以免去set、get等方法的编写;安装了lombok插件,在测试的..

2022-01-12 08:56:31 410

转载 maven依赖中的scope详解

Maven依赖中的scope详解 - 林加欣 - 博客园

2022-01-12 08:30:05 95

原创 实体类测试技巧:@Accessors注解的使用

一、背景我们在创建自定义实体类的时候,比如有一个User实体类;要创建实体类的同时并对属性进行赋值,我们之前的操作是要么先new出一个空对象,然后一个个属性赋值;要么使用带参数的构造器赋值;如果我们使用new User().setName().setAge()的方式,是无法返回对象的,因为setName()方法的返回值一般都是void;在实体类添加@Accessors(chain=true),就能实现上面的链式创建对象;二、测试引入lombok...

2022-01-11 20:17:04 788

原创 Spring的单元测试与SpringBoot的单元测试

因为这两者不同于普通的单元测试,是需要启动服务器测试请求等相关操作的,因此需要单独引入对应的测试依赖,编写测试方法的时候写法也和普通的测试类有所区别一、Spring的单元测试pom.xml引入依赖<properties> <spring.version>5.2.13.RELEASE</spring.version></properties><dependency> <groupId>org.spri.

2022-01-10 11:42:01 539

原创 maven的pom.xml单独抽离出版本,用变量控制版本的操作

pom.xml把所有依赖的版本单独抽离成变量的方法

2022-01-05 16:06:15 1094 1

原创 MyBatis反向插件生成的mapper中有重复resultMap的解决办法

MyBatis Generator生成重复xml/Mapper对象解决方案_树洞-CSDN博客引用了这一篇博客,我解决问题是通过在generatorConfig.xml里的table标签里添加catalog,指定数据库名 <table tableName="Team" catalog="ssm1"> <property name="useActualColumnNames" value="true"/> </t.

2022-01-04 19:25:10 2091 1

原创 SpringMVC中无法找到静态资源问题([WARNING] No mapping for GET /)

一、出现的错误在DispatcherServlet中设置拦截的路径是/,即所有请求都会被拦截,包括静态资源。此时需要在SpringMVC的配置文件中对静态资源进行处理。本文中出现的问题是在上述情况下已经对静态资源进行了处理,但是还是无法访问静态资源的情况。二、解决办法先按下面这篇博客的操作进行处理完美解决SpringMVC中静态资源无法找到(No mapping found for HTTP request with URI)问题_程序猿的故事-CSDN博客对于我来说,.

2022-01-04 15:25:36 5932 6

原创 SpringMVC概述与工作原理的非源码级理解

SpringMVC框架的工作流程,总算是弄懂了。对于HandlerAdaptor处理器适配器,本文的例子应该容易理解

2021-12-27 22:23:13 303

原创 jdk11使用maven配置tomcat插件无法运行问题

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project springmvc01: Fatal error compiling: 错误: 无效的目标发行版:1.11 -> [Help 1]

2021-12-27 15:30:54 1819 1

原创 Redis缓存雪崩、缓存穿透、缓存击穿、分布式锁及Redis概念复习笔记

本文的复习偏向于概念,没有过多代码的演示一、NoSQL1.什么是NoSQLNosql泛指非关系型的数据库,它的产生是为了解决大规模数据集合、多重数据种类带来的挑战,尤其是大数据应用难题; 区别于传统的关系型数据库,Nosql不保证关系数据的ACID特性。2.为什么要使用NoSQL因为现在的网站具有下面的特点与需求: 高并发读写 Web2.0网站数据库并发负载非常高,往往达到每秒上万次的读写请求 高容量存储和高效存储 Web2.0网站通常需要在后台数据库中存储海量.

2021-12-22 15:24:53 561

原创 javaweb复习笔记

一、http和tomcathttp协议http协议看这个图http请求响应的过程Http请求方法总共有八种方法(也叫动作),以不同方式来操作指定的资源方法名称 描述 GET 向指定的资源发出“显示”请求。使⽤GET⽅法应该只⽤在读取数据,⽽不应当被⽤于产⽣“副作⽤”的操作中,例如在Web Application中。其中⼀个原因是GET可能会被⽹络蜘蛛等随意访问 POST 向指定资源提交数据,请求服务器进⾏处理(例如提交表单或者上传⽂件)。数据..

2021-12-07 15:27:18 635

原创 mysql有意思的题目记录

1.写sql,查找一张表中分数在0-60,60-80,80-100三个层次的学生人数用到了if函数:if(条件,a,b) 条件为true,返回a,否则返回b select sum(if(score<60,1,0)) as '<60',sum(if(score between 60 and 80,1,0)) as '60-80',sum(if(score BETWEEN 80 and 100,1,0)) as '80-100' from myscores-- 可以替换下列的三条s.

2021-11-24 10:02:33 441

原创 mysql练习题记录之:学生表、课程表、成绩表、讲师表、等级表

创建表并添加数据学生信息表studentCREATE TABLE STUDENT( SNO VARCHAR(3) NOT NULL,SNAME VARCHAR(4) NOT NULL,SSEX VARCHAR(2) NOT NULL,SBIRTHDAY DATETIME,CLASS VARCHAR(5))课程信息表courseCREATE TABLE COURSE(CNO VARCHAR(5) NOT NULL,CNAME VARCHAR(10) NOT NUL..

2021-11-20 10:59:00 6353 1

转载 mysql中exists的使用问题

记录一下我看到的两篇比较好的文章:SQL 子查询 EXISTS 和 NOT EXISTS_王小军的博客-CSDN博客_exists子查询SQL 语句中 exists和not exists的用法_wxf_suzhou的博客-CSDN博客在sql优化中可以用exists取代in,这一点我暂时还没有深刻的体会,学到后面了再补充这一点 简单记录一下exists的作用SELECT … FROM table WHERE EXISTS (subquery)带有exists的子句不会返回任何数据,只会

2021-11-19 20:59:00 171

原创 面试题记录之--java集合

数组和链表有什么区别? 比较项 数组 链表 逻辑结构 数组在内存中是连续的,长度是固定的;增加元素可能会造成数组越界,减少元素可能会造成内存浪费,删除元素需要移动其它元素 链表在内存中是不连续的;支持动态增加或删除元素、长度不固定 访问效率 查找元素的效率高,直接通过下标访问元素 查找元素的效率低,需要通过遍历查找元素

2021-11-14 15:05:04 802

原创 注解与反射详解(含手写ORM底层demo、Javabean定义)

一、注解1、简介java注解(Annotation)又称java标注,是JDK5.0引入的一种注释机制 注解可以和注释联系起来,注释是给程序员看的,注解是给机器看的。注解相当于把代码注释到运行时使用,可以简化开发 java语言中的类、方法、变量、参数和包都可以被标注 java标注可以通过反射获取标注内容,在编译器生成类文件时,标注可以被嵌入到字节码中。java虚拟机可以保留标注内容,在运行时可以获取到标注内容 也支持自定义的java标注,即自定义编写注解 主要用途 编译格式的检查

2021-11-12 21:43:00 321

原创 Java的枚举类

一、概述在jdk1.5之前,我们定义常量都是使用publicstaticfinal修饰的,较难管理这些常量 在jdk1.5之后引入了新的类型--枚举 枚举 用于定义有限数量的一组相同类型的常量 例如一年的四季:春、夏、秋、冬 例如错误的级别:低、中、高 可以把相关的常量分组到一个枚举类型里,枚举提供了比常量更多的方法 在枚举类型中定义的常量是该枚举类型的实例 二、枚举的使用1、定义枚举的格式权限修饰符enum枚举名称{ 实例1,实例2...

2021-11-12 09:03:01 299

原创 JSON的简介与使用

一、概述JSON(JavaScriptObjectNotation) 指的是JS对象简谱,是一种轻量级的数据交换格式 是欧洲计算机协会制定的JavaScript规范,与java语言无关 数据交换格式指的是客户端与服务器、程序与程序之间在数据交换时的数据格式 采取了完全独立于编程语言的文本格式来存储数据 相较于XML的优点 程序员解析json比解析xml简单 机器解析json的效率比xml快 数据传输时,json所占的空间更小,网络的传输速度更快 二、JSON..

2021-11-11 19:30:20 671

原创 可扩展标记语言XML笔记

一、概述可扩展标记语言(Extensible Markup Language) .XML文件是保存XML数据的一种方式,XML数据也可以以其他的方式存在(如在内存中构建XML数据),不要将XML语言狭隘地理解为XML文件 XML通常指的是具有特定格式的字符串 特点 XML具有平台无关性,是一门独立的标记语言 不同操作系统都可以打开XML文件(与操作系统的无关性) 不同的编程语言解析同一份XML文件的结果都是一样的(与编程语言的无关性) XML文件独立存在也是有意义的

2021-11-11 15:48:12 344

原创 IDEA快捷键

一、常用快捷键提示与代码生成部分Alt + Enter IDEA 根据光标所在问题,提供快速修复选择Ctrl + Alt + T 对选中的代码弹出环绕选项弹出层(try,if等语句包裹)Alt + Insert 代码自动生成,如生成对象的 set / get 方法,构造函数,toString() 等Ctrl + O 选择可重写的方法Ctrl + I 选择可实现的方法Ctrl + / 注释光标所在行代码,会根据当前不同文件类型使用不同的注释符号选择/移动/复制代

2021-11-10 20:21:38 1254

原创 IDEA的debug调试技巧详解

目录一、概述二、debug操作分析1、打断点2、运行debug模式3、重新执行debug4、让程序执行到下一次断点后暂停5、让断点处的代码再加一行代码6、停止debug程序7、显示所有断点8、添加断点运行的条件9、屏蔽所有断点10、把光标移到当前程序运行位置11、单步跳过12、可以跳入方法内部的执行一行代码操作13、跳出方法14、直接执行到光标所在位置15、在控制台改变正在debug的数据一、概述debug调试也叫断点调试 在程序

2021-11-10 17:08:02 41370 7

原创 IO流之try-with-resources

一、引言本文的知识点既属于IO,又属于异常 引入本文知识点之前,先看一个案例 通过IO流对象的操作,读取一个字符,会发现下面用了很多的代码 public static void main(String[] args) { //下面的一大堆代码,仅仅是为了读取一个字符 FileReader fr = null; try { //需要把流对象定义在try的外面 fr = new FileReader("

2021-11-08 19:56:32 503

原创 IO流之序列化与反序列化技术、局部序列化技术

一、概述序列化 将程序中的对象直接以文件的形式存储,是按照对象在内存中的序列进行存储的 反序列化 从文件中把对象数据重新读到程序中 就是把之前序列化的对象从文件里读出,重新变成对象 2018年java官方发现程序中至少有1/3的bug是因为使用了序列化和反序列化技术产生的,这种序列化安全问题如果不能有更合适的技术替代,短期内是不会剔除序列化技术的,否则会影响整个java生态二、实现序列化1、Serializable接口实现序列化想要实现序列化的类,需要实现Serial

2021-11-08 19:16:37 305

原创 Properties简介(Map&IO)

一、概述Properties类表示一组持久的属性,该类可以保存到流中,或从流中加载。属性列表中的每个键及其对应的值都是一个字符串 人话 Properties类是Map体系下的一个实现类,是双值存储的集合 与此同时,该类也属于IO流体系,拥有相关的流操作方法 该类常用于做配置文件 线程安全 二、常用API返回值类型 方法名称 描述 String getProperty(String key) 根据key获取集合中对应的值 void load(.

2021-11-08 16:18:09 319

原创 IO流之Writer、Reader详解

前言学习之前,需要对IO流的分类有个简单的认识,下列是关于本文的IO流分类介绍IO流的分类按流的方向划分 输入流 输出流 按流动的数据类型划分 字节流 字符流 本文提到的OutputStream、InputStream属于字节流字符流 输入流 顶级父类Reader 输出流 顶级父类Writer 字符流用于对文字进行读写操作,能够解决字节流读写字符产生的乱码问题一、Writer1、概述用于写入字符流的抽象类 也就是字符输出流的

2021-11-07 19:52:52 933

原创 IO流之OutputStream、InputStream详解

前言学习之前,需要对IO流的分类有个简单的认识,下列是关于本文的IO流分类介绍IO流的分类按流的方向划分 输入流 输出流 按流动的数据类型划分 字节流 字符流 本文提到的OutputStream、InputStream属于字节流字节流 输入流 顶级父类InputStream 输出流 顶级父类OutputStream 还需要明确一个概念 计算机中的任何数据(文本、图片、视频等)都是二进制存储的 8个二进制位(bit)为一个字节(by

2021-11-07 15:38:58 1122

原创 IO流之java.io.File概述、构造方法和常用API解析

一、概述定义:是文件和目录路径名的抽象表示 人话:表示的是计算机中的某个文件对象 抽象指的是,File对象代表的并不是真实的文件,而是使用面向对象的思想,创建了传入路径的文件对象,提供了相关的API用于操控该文件对象 文件操作一定要慎重,因为删除了并不会放到回收站,不见了就是不见了 二、部分构造方法解析下面的构造方法在后面常用API解析时会有详细的举例File(String pathname)入参的是文件的路径名,表示的是一个文件对象 表示的可以是文件夹,也可以是一个普通

2021-11-06 17:54:42 488

原创 java常用类库之BigDecimal类

如果在控制台打印0.1+0.2,会发现计算出的结果并不是精确的,结果是0.30000000000000004 java中float类型和double类型在运算的时候可能会有误差,如果需要实现精确运算,可以借助java.math.BigDecimal类进行运算一、概述java.math.BigDecimal类是为了解决精确运算的问题 将要计算的数据使用BigDecimal的构造器进行封装,调用相应的API即可完成运算,最后可以根据需要返回相应数据类型的计算结果 使用BigDe...

2021-11-06 10:14:22 180

原创 泛型的概述、类别及注意事项

一、泛型概述泛型指的是“参数化类型” 即把某些参数的数据类型使用一个泛型代替,在使用或调用的时候传入具体的数据类型赋值给泛型 使用方式 泛型定义在尖括号中,可以同时定义多种泛型,使用逗号隔开 如<T>、<T,V> 二、泛型的类别1、泛型类在定义类的时候,在类名后定义泛型 用的比较多 jdk1.7之后,new对象时后面的尖括号内的泛型可以省略,只需要在定义变量数据类型后定义泛型即可 举例//定义一个类,使用泛型public class T

2021-11-06 09:37:42 384

原创 IDEA的jdk1.8转jdk1.11问题

因为看集合的底层源码,发现jdk1.8和jdk1.11有出入,所以决定调整一下IDEA的jdk版本。下面记录一下我在操作的时候遇到的一些问题,希望对读者有帮助! 下面以jdk1.8转换为jdk1.11操作展开叙述 一、安装JDK1.11首先将jdk1.11的安装包默认安装即可 要记住安装的路径 二、配置环境变量因为我之前已经配置了jdk1.8,所以只需要改变JAVA_HOME的路径为安装jdk1.11的路径即可问题如果遇到更换完环境变量后,使用命令行输入java -versi.

2021-11-04 10:38:16 3118 2

空空如也

空空如也

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

TA关注的人

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