自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java多线程(二)---线程安全/线程同步

1 线程同步的概念(1)线程同步:在单线程程序中,每次只能做一件事情。后面的事情需要等待前面的事情完成后才可以进行,但是如果使用多线程程序,就会发生两个或多个线程抢占资源的问题,如两个人同时说话,两个人同时过同一个独木桥。所以在多线程编程中需要防止这些资源访问的冲突。Java提供了线程同步机制来防止资源访问的冲突。(2)线程安全:实际开发中,使用多线程程序的情况会很多,如车站售票系统,医院挂号系统。这种多线程的程序通常会发生问题,以车站售票系统为例,当代码中判断当前票数是否大于0,如果大于0则执行将

2022-01-24 21:09:53 2604

原创 lambda 表达式(通俗易懂)

★lambda表达式不能独立执行,因此必须实现函数式接口,并且会返回一个函数式接口的对象。★lambda表达式的理解:是一个匿名函数,去补全方法执行的过程。(类似匿名内部类中的方法重写)( ) -> {代码块}这个方法 按照 这样的代码来执行。

2024-07-19 17:59:47 399

原创 Java内部类-(通俗易懂)匿名内部类

局部内部类是在方法中定义的类。

2024-07-19 16:31:36 343

原创 Docker镜像加速配置

由于当前运营商网络问题,可能会导致您拉取 Docker Hub 镜像变慢,索引可以配置阿里云镜像加速器。每个人镜像地址都不一样,需要登陆阿里云自行查看,地址在上面,这里面我就打码了。

2024-07-04 16:03:06 311

原创 CentOS (虚拟机或阿里云)安装docker教程

2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的。说明:我用的是centos7.9 其他版本大概率应该也行。# 4、 安装docker,出现输入的界面都按 y。# 5、 查看docker版本,验证是否验证成功。# 1、yum 包更新到最新。# 3、 设置yum源。

2024-07-04 15:59:36 156 1

原创 IDEA出现javax.servlet.http包错误解决方法

缺少对应的jar包,其实tomcat服务器自带与HTTP一些相关的Jar包,没有导入进去。Tomcat自带的jar包导入进入maven中。找到对应tomcat中相对应的jar包。

2024-05-20 23:23:13 508

原创 Java中队列和栈如何实现和常见的API?(通俗易懂)

双端队列(Deque,全称Double Ended Queue)是一种数据结构,它允许在队列的两端进行插入和删除操作。双端队列可以看作是一个结合了栈和队列特性的混合体,它既支持先进先出(FIFO)模式,也支持后进先出(LIFO)模式。ArrayDeque 双端队列实现栈(它的其他API可以看下面队列介绍)。双端队列的操作可以分为两类:在队首(头部)进行的操作和在队尾(尾部)进行的操作。是一个基于优先级堆的队列,元素按自然顺序或指定的比较器顺序排序。是一个基于数组的双端队列,可以用来实现队列。

2024-05-20 16:19:11 913

原创 Java 自然排序和比较器排序区别?Comparable接口和Comparator比较器区别?

Comparaable是一个排序接口实现的是自然排序,如果一个类实现了该接口,证明该类能够排序,否则不能排序,强行排序会抛异常。除了上述自然排序外,还可以实现比较器排序,通过创建比较器来说明这个类如何进行排序。二者可以一起用,举一个例子,一个类实现了自然排序,它是逆序输出,这是我突然就有一个例子想正序输出,则就可以写一个比较器。例如现在有一个学生类,该类实现了该接口,那么如果我们定义了一个LIst集合存储了5个该类的对象。或者实现了该接口,但排序规则不适合当前操作,可以考虑使用比较器进行排序。

2024-05-15 22:58:49 732 1

原创 Redis事务以及Watch监听(通俗易懂)

当我们开启事务,它是把redis语句存储在一个队列中,只有我们提交事务的时候才会执行这些指令,错误的指令会报错,而之前执行过的正确指令仍然正常执行,不会回滚,所以并不支持事务的回滚,也不能保证事务的原子性。],可以监视一个或者多个key,若在事务的exec命令之前这些key对应的值被其他命令所改动了,那么事务中所有命令都将被打断,即事务所有操作将被取消执行。如果在执行 WATCH 命令之后, EXEC 命令或 DISCARD 命令先被执行了的话,那么就不需要再执行UNWATCH 了。

2024-04-26 21:15:37 349

原创 通俗易懂HTTP和HTTPS区别

HTTPS:是HTTP的安全版本,使用SSL/TLS用作加密和安全认证。混合了对称加密和非对称加密,非对称加密用于传输对称密码,确保绝对的安全,而数据的传输则采用对称加密。在HTTPS中,服务器会通过SSL证书向客户端验证自己的身份,确保客户端和服务端之间的通信是安全可靠的。HTTP:超文本传输协议,它是使用一种明文的方式发送我们的内容,没有任何的加密,例如我们要在网页上输入账号密码,如果使用HTTP协议,账号密码就可能会被暴露,默认端口是80.HTTP无状态协议,是指协议对于事务处理没有记忆能力。

2024-04-12 22:48:42 448

原创 Redis主从集群-主从复制(通俗易懂)

单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,可以搭建主从集群,实现读写分离。一般都是一主多从,主节点负责写数据,从节点负责读数据,主节点写入数据之后,需要把数据同步到从节点中。

2024-04-05 23:56:23 350

原创 SpringMVC执行流程

客户端发送请求,前端控制器(DispatcherServlet)拦截请求,根据请求信息,去调用我们的处理器映射器(HandlerMapping),处理器映射器根据URL去匹配查找能处理的Handler(这里就是我们Controller),并且会将请求涉及到的拦截器一并返回给前端处理器。最后我们的前端处理器会将这个ModelAndView传给视图解析器ViewResolver进行解析,根据逻辑的view去查找实际的view返回,前端处理器接受后,会将返回的model传给view进行。

2024-03-30 22:44:26 373

原创 通俗易懂Redis缓存穿透,缓存击穿,缓存雪崩

布隆过滤器:快速判断一个元素是否存在于一个集合中。它通过使用。

2024-03-29 22:09:47 898

原创 关于多线程Future和CompletableFuture区别

为了弥补Future缺陷,在JDK8之后引入,它提供了一种简单强大的方式处理异步的任务,和处理异步任务的结果,在它出现之前,我们只能使用Callable/Future这样的一个机制,来去获取异步线程的执行结果,但Future是通过阻塞等待方式实现,对性能不友好,而CompletableFuture可以让我们将一个耗时的任务提交给线程池进行异步的处理,然后可以继续执行其他任务,等到异步任务结束之后,会触发一个回调方法,我们可以在回调方法里面处理异步任务的执行结果。

2024-03-28 15:05:30 331

原创 在RabbitMQ中 WorkQueue 工作队列 和发布(publish)/订阅(Subscribe) 有什么区别?

在这个模型中,生产者发送消息到一个交换机(exchange),而不是直接发送到队列,然后多个队列通过绑定到交换机来接收消息。总结:工作队列主要用于任务分发和处理,适用于多个消费者并行处理不同的任务,而发布/订阅模型用于广播消息给多个订阅者,适用于多个消费者同时接收相同的消息。:工作队列模型通常用于分布式任务的处理,其中一个生产者(生产任务)将消息发送到队列,然后多个消费者(工作者)从队列中接收并处理这些消息。:一个典型的示例是,将待处理的图片上传任务发送到工作队列,多个图像处理工作者同时处理这些任务。

2023-11-03 22:48:51 712

原创 @RunWith(SpringRunner.class)注解的作用

RunWith(SpringRunner.class)的作用表明Test测试类要使用注入的类,比如@Autowired注入的类,有了@RunWith(SpringRunner.class)这些类才能实例化到spring容器中,自动注入才能生效。注解是JUnit测试框架中的一种注解,用于指定测试类的运行器(Runner)。JUnit是一个用于编写和执行单元测试的Java测试框架,而运行器(Runner)则是JUnit框架的一部分,它负责执行测试类中的测试方法并提供测试报告。在你的问题中,你提到了。

2023-11-03 22:03:55 2015

原创 MacOS怎么配置JDK环境变量

然后按 i ,进入编辑模式,粘贴下面的代码,注意:JAVA_HOME后面路径需要改成自己的版本,esc退出编辑,输入 :qw!echo $JAVA_HOME 再次看一下成没成功。要是什么也没输出 证明是没配置。

2023-10-03 19:17:15 519

原创 MacOS怎么安装Nacos(附带:Windows系统)

(4)若是没有上面显示Nacos界面,且爆出:nohup: /Library/Internet: No such file or directory。PS:下载格式为:nacos-server-版本号.zip这种哦 (一定是这个)版本自己选择就行 我是1.4.1。(3)下载完之后,把nacos放到自己合适的目录下 (注意对应版本),配置环境变量就好了,它没法加在nacos一些jar包。要是什么也没输出 证明是没配置。5 再次启动一下nacos。MacOS安装Nacos。,esc退出编辑,输入。

2023-10-03 16:54:32 732

原创 SpringBoot 怎么返回html界面

Thymeleaf是Spring Boot官方支持的一种模板引擎。我们可以用Thymeleaf编写HTML模板,然后在后端填充模板里的数据,这时Spring Boot就会自动把渲染好的HTML页面发送给浏览器。(1)html文件要放在resource下的static目录下(没有static 自己就创建一个文件夹)(1)将html文件放在resource下的templates目录下。(2)在application.yml 中配置视图解析器。(2)在application.yml 中配置视图解析器。

2023-08-24 19:33:12 3301

原创 Mybatis-plus 的自动填充策略

(1)我们可以在实体类中把要自动填充的类属性加上指定的注解@TableField(填写在上面方法时进行填充的枚举类型填充策略)(1)实现MetaObjectHandler接口 重写方法(按照idea提示就行)(2)一定要加载进入ioc核心容器(@Component注解别忘记)进行自动填充时,可以使用Mybatis-plus中的自动填充功能。:在插入和更新操作时都自动填充字段。:默认填充策略,不做任何处理。:仅在插入操作时自动填充字段。:仅在更新操作时自动填充字段。(2)书写用来填充的配置类。

2023-08-06 11:13:17 384 1

原创 org.springframework.beans.factory.UnsatisfiedDependencyException:

第一个错误表明在'ArticleWeb'类中的字段'articleService'无法满足依赖关系。第二个错误表明在'articleServiceImpl'类中的字段'baseMapper'无法满足依赖关系。另外,错误日志还提到了关于'MybatisPlus'的异常。您还需要检查'MybatisPlus'相关的配置和映射文件是否正确,并且是否存在语法错误或不一致。可能的原因是相关的bean无法正确创建或注入,导致依赖关系无法满足。根据提供的错误日志,出现了依赖注入的问题。

2023-08-03 20:16:56 451

原创 巧用位运算来解决2的幂次方

按位与操作是一种二进制运算符,用符号表示。它逐位比较两个操作数的对应位,只有当两个对应位同时为1时,结果的对应位才为1,否则为0。如果两个对应位都为1,则结果位为1。如果任一对应位为0,则结果位为0。例如,假设有两个二进制数字:10101011 和 11110000。101010111111000010100000因此,10101011 和 11110000 的按位与操作结果为 10100000。

2023-08-03 20:07:20 220

原创 巧妙利用短路与

哈哈哈 大家是不是都知道 第一个if运行一定会爆出/by zero。巧妙的换个位置 利用。

2023-07-31 19:13:53 38

原创 解决:项目名@1.0.0 dev: `webpack-dev-server --inline --progress --config build/webpack.dev.conf.js`错误

要是serve启动命令为:npm run serve。要是dev 启动命令为:npm run dev。

2023-07-22 19:45:58 5359 1

原创 macOS 怎么安装redis数据库

访问上述的redis下载的网址,确定你想要的版本 然后下载即可 (我选则的是6.2.6)然后下载 下载后 把这个文件解压,放在自己想要放在的位置。

2023-07-13 12:04:20 2179 1

原创 mac如何配置maven的环境变量

cd 加文件名 进入该文件 不断的进入,一直进入到bin目录下 进行chmod a+x mvn命令 给该文件执行的权限。1 在官网下载对应的maven版本,maven是跨平台的,要是windows有的话,直接把压缩包拿过来用就行。3 可以尝试一下mvn -v 查看一下版本号,若出现图1出现版本号则成功,若为图2则进行第4步。4 发现没有执行的权限,那么我们需要进入maven 的bin目录下 进行权限修改。用的是cd 命令 ls -l 查看权限和文件命令 chmod修改权限的命令。

2023-05-21 16:57:55 1960

原创 抽象类和接口的区别

抽象类对成员变量,成员方法,访问控制符无要求,接口中成员变量默认是public static finnal。抽象类中有非抽象方法,非抽象方法可以有方法体。而接口中都是抽象方法,没方法体,在jdk1.8 之后default和static方法需要有方法体。抽象类的子类用extends关键字继承抽象类,而接口的实现类使用implement关键字实现接口。抽象类的子类拓展数量只能为一个抽象类,接口的实现类可以同时实现多个接口。抽象类可以有非抽象方法,接口只能是抽象方法,没方法体。

2023-04-04 14:30:24 61

原创 1 分钟带你了解接口

当我们定义了一个抽象类为父类的时候,定义了一个抽象方法,那它的子类(非抽象类)将重写这个方法,但是它需要这个方法。当我们还有一个类,但它不得不继承这个抽象的父类(例如三角形类,平行四边形类,必须继承图形类)但他不想实现父类中定义的一个抽象方法,也不得不重写这个方法(抽象类的子类必须重写所有的抽象方法)那么代码就会变得冗余一些不需要的,也变的需要了。可以将一些不是共性的抽象方法,抽取到一个接口中,谁需要,谁实现。接口的关键字是interface,它可以粗略的看成特殊的抽象类,它不也。

2023-03-26 12:47:06 70

原创 1 分钟带你了解抽象类

在解决实际问题的时候,我们通常将父类定义为抽象类,当我们需要用到这个父类的时候,通常进行继承和多态处理,在继承树中越往上是越抽象的,例如鸽子类继承鸟类,鸟类继承动物类。在多态的机制中我们并不需要将父类初始化为对象,只需要子类的对象,所以Java中的抽象类是不能被实例化的,也没构造方法。抽象类的子类要么重写抽象类的所有抽象方法,要么本身就是一个抽象类。抽象类就是使用abstract关键字修饰的类,其中抽象类可以含有非抽象方法,但含有抽象方法的类一定是抽象类(接口可以考虑成特殊的抽象类)。

2023-03-26 12:10:19 66

原创 pom文件变灰色?

原因:新建的模块名与之前存在过的模块(后因某种原因被删除)重名,此时idea会认为此项目中需要排除该模块,就会把pom变成灰色。解决方法:File->setting->Build Tools-> Maven->Ignored Files。找到被打勾,我们需要忽略的Module,把勾去掉就行啦!

2023-01-27 16:40:38 2098 3

原创 在IDEA中创建WEB项目,无法继承HTTPServlet以及无法使用Servlet注解开发。

问题原因:没有把TomCat中的jar包导进去。

2022-11-14 19:27:04 604

原创 JDK的安装

通过官方网站获取JDK:针对不同的操作系统,需要下载对应版本的JDK。傻瓜式安装,下一步即可。但默认的安装路径是在C:\Program Files下,为方便统一管理建议修改安装路径,将与开发相关的软件都安装到一个目录下,例如:E:\develop。:安装路径不要包含中文或者空格等特殊字符(使用纯英文目录)。例如:C:\Java\jdk-12.0.2\

2022-10-15 21:39:56 187

原创 递归 二分查找 冒泡排序 快速排序

递归的介绍以编程的角度来看,递归指的是方法定义中调用方法本身的现象把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算练习1:求和练习2:求阶乘。...

2022-08-07 19:51:51 114

原创 为什么字符串一旦创建就不可以改变?

当然不是,仔细看这里的字符串“hello”假设该地址在常量内存1,而s+“world”就又开辟了一个常量内存2,开始是常量内存1指向s,后来变成了常量内存2指向s。所以说字符串一旦被创建,值就不可改变,这里的值指的字符串本身的值,而不是地址值。字符串的值一旦被创建,就不能改变指的是字符串的内容不能发生改变。Java中所有的字符串文字(例如:“abc”)都可以看成字符串的对象。字符串:就是由多个字符组成的一串数据,也可以看作是一个字符数组。字符串是常量,一旦被赋值,就不能改变。......

2022-08-06 13:53:00 3650

原创 BindingException 异常(报错)处理

当用Spring整合MyBatis时候,如果发生了这个错误,解决方法如下:1 由于mapper文件与mapper映射文件不在同一个包,检查文件存放位置 注意 resources里面建文件包,用/ 例如com/bukaedu/dao(一定要与java下的建包区分开)2 mapper.xml文件中定义的 resultType要与dao接口需要的方法返回值类型一致!3、application.yml中的mybatis配置路径要与项目相符...

2022-07-05 23:01:28 847

原创 MyBatis(三)--注解开发

注解可以简化开发操作,省略映射配置文件的编写@Insert(“查询的SQL语句”):实现新增操作@Update(“修改的SQL语句”):实现修改操作@Delete(“删除的SQL语句”):实现删除操作@Select(“查询的SQL语句”):实现查询操作2 注解开发实现--增 删 改 查3 注解实现多表操作说明:数据库和用mapper进行多表查询时一样的数据库,一直用的db27。 3.2 一对多 (1)Javabean(2)Mapper接口(3)测试类(4)对核

2022-06-24 10:44:03 215

原创 Tomcat

JavaEE(Java Enterprise Edition):Java 企业版它是由 SUN 公司领导、各个厂家共同制定并得到广泛认可的工业标准JavaEE 规范是很多 Java 开发技术的总称。这些技术规范都是沿用自 J2EE 的。一共包括了 13 个技术规范包括:JDBC,JNDI,EJB,RMI,IDL/CORBA,JSP,Servlet,XML,JMS,JTA,JTS,JavaMail,JAFWEB 在计算机领域中代表的是网络像我们之前所用的 WWW,它是 World Wide Web 三个单词的

2022-06-22 22:45:17 177

原创 MyBatic框架(二)

1.1分页可以将很多条结果进行分页显示在企业级开发中,分页也是一种常见的技术。而目前使用的 MyBatis 是不带分页功能的,如果想实现分页的 功能,需要我们手动编写 LIMIT 语句。但是不同的数据库实现分页的 SQL 语句也是不同的,所以手写分页 成本较高。这个时候就可以借助分页插件来帮助我们实现分页功能。PageHelper:第三方分页助手。将复杂的分页操作进行封装,从而让分页功能变得非常简单。(1)导入与PageHelper的jar包(这次咱们选择在pom下)(2)在mybatis核心配置文件

2022-06-17 22:43:51 86

原创 MyBatis框架 (一)

一.Mybaits的简单入门1 MyBatis框架由来(1)框架简介框架是一款半成品软件,我们可以基于这个半成品软件继续开发,来完成我们个性化的需求!框架:大工具,我们利用工具,可以快速开发项目 (mybatis也是一个jar包,不过提供的功能更加多)jar包:小工具生活中的例子,比如盖房子 张三想盖红色的房子,他需要先给架构搭起来,然后再给房子图上红色 李四想盖蓝色的房子,他也需要先给架构搭起来,然后再给房子图上蓝色 比如很多人都需要盖房子,那么肯定会有很多重复性的工作,比如

2022-06-01 23:22:20 217

原创 MySQL数据库(6)--数据库连接池

本文致力于JDBC连接池的一些列入门操做,看了就会。且解释详细,有疑问请留言。如有错误请指教。

2022-05-16 09:42:32 734

空空如也

空空如也

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

TA关注的人

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