自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 解决activiti java.sql.SQLSyntaxErrorException: Table ‘activit.ACT_GE_PROPERTY‘ doesn‘t exist

在数据库链接 url后加上 nullCatalogMeansCurrent=true,再次执行@Test方法,运行,即可看到成功生成了25张表!查阅资料后,终于找到了解决办法!

2024-04-29 15:43:08 241 2

原创 使用easyexcel读取excel并生成sql语句

【代码】使用easyexcel读取excel并生成sql语句。

2024-04-12 17:20:48 250

原创 spring-boot集成mybatis-generator

通用 Mapper 在 1.0.0 版本的时候增加了 MyBatis Generator (以下简称 MBG) 插件,使用该插件可以很方便的生成实体类、Mapper 接口以及对应的 XML 文件。下面介绍了 mybatis-generator 在 spring-boot 中的使用过程。

2023-11-27 17:33:45 349

原创 @RequestMapping,@GetMapping,@PostMapping 的区别(详解)

@RequestMapping表示共享映射,如果没有指定请求方式,将接收GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT所有的HTTP请求方式。@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping 都是HTTP方法特有的快捷方式@RequestMapping的变体

2023-11-27 17:09:58 1176

原创 springboot集成es 插入和查询的简单使用

然后我们启动项目,先调用插入接口,由于这个索引一开始是不存在的,第一次调用后会默认创建索引,然后打开我们的可视化界面,就能看到这里的索引。说明两个接口都能被调用成功,es的简单使用就完成了。然后启动项目,看到出现这个就是成功了。再调用查询,就能看到如下信息了。

2023-08-29 13:33:35 1446

原创 docker desktop安装es 并连接elasticsearch-head:5

首先要保证docker安装成功,打开cmd,输入docker -v,出现如下界面说明安装成功了下面开始安装es。

2023-08-29 12:17:24 1827

原创 win10安装Docker Desktop,并修改存储目录

因为docker 安装时不提供指定安装路径和数据存储路径的选项,且默认是安装在C盘的。C盘比较小的,等docker运行久了,一大堆的东西放在上面容易导致磁盘爆掉。所以安装前可以做些准备,让安装的实际路径不在C盘,当然安装好的的,也可以卸载了重新来。注意: 这个软连接也要在安装docker前建立,已经有目录的也要注意谨慎处理。安装完成后,打开桌面上的软件,可能会报错。安装之前先看看自己电脑c盘剩余容量,如果小于30G,建议先配置下再安装。接下来就可以正常安装了,打开网址,选择window版。

2023-08-29 11:58:26 1261

原创 SpringMVC拦截器常见应用场景

postHandle:在处理器执行之后、视图渲染之前执行,可以进行一些后处理操作。3.参数校验和数据转换:拦截器可以在请求到达处理器之前对请求参数进行校验和转换,以确保数据的有效性和一致性。afterCompletion:在视图渲染之后执行,用于进行一些资源清理操作,例如释放资源或记录日志。1.认证和授权:拦截器可以用于验证用户的身份和权限,确保只有经过认证和授权的用户才能访问受保护的资源。2.日志记录:拦截器可以用于记录请求和响应的日志,以便进行故障排除、性能分析和审计等。下面来看一下常见的应用场景。

2023-08-27 21:28:02 517 1

原创 TCP 和 UDP 的区别、TCP 是如何保证可靠传输的?

分为应用层、表示层、会话层、运输层、网络层、链路层、物理层。应用层(数据):确定进程之间通信的性质以及满足用户需要以及提供网络和用户应用,为应用程序提供服务,DNS,HTTP,HTTPS,DHCP,FTP,POP3(Post Office Protocol)、SMTP(Simple Mail Transfer Protocol)都是这层的协议。表示层(数据):主要解决用户信息的语法表示问题,表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别,

2023-08-27 21:22:00 1387

原创 MySQL索引介绍 为什么mysql使用B+树

索引的作用就相当于目录。打个比方,我们在查字典的时候,如果没有目录,那我们就只能一页一页的去找我们需要查的那个字,速度很慢,如果有目录了,我们只需要先去目录里查找字的位置,然后直接翻到那一页就行了。

2023-08-18 11:13:07 433

原创 如何仿写简易tomcat 实现思路+代码详细讲解

第四步:找出带有Servlet注解的Java文件,并把注解中的path,类对象放入到map中。第七步:处理httprequest,也就是通过反射去调用doGet和doPost方法。然后就可以进行测试了,在测试类上方加上我们已经定义好的@MyServlet注解。这一步有些复杂,尤其是对url切割时,但我给每一步都加了注释,方便理解。最后一步:把上面这些方法整合起来,在主方法中调用,同时定义好全局变量。第三步:遍历整个目录,把Java文件放入list中。可以看到本机ip地址,然后通过浏览器地址栏访问。

2023-08-17 22:08:07 1096

原创 深入理解JVM——垃圾回收与内存分配机制详细讲解

所谓垃圾回收,也就是要回收已经“死了”的对象。那我们如何判断哪些对象“存活”,哪些已经“死去”呢?

2023-08-16 11:40:09 803

原创 算法1781:按身高体重排序

某学校举行运动会,学生们按编号(1、2、3…n)进行标识,现需要按照身高由低到高排列,对身高相同的人,按体重由轻到重排列;对于身高体重都相同的人,维持原有的编号顺序关系。请输出排列后的学生编号。两个序列,每个序列由n个正整数组成(0 < n

2023-08-15 13:16:41 444

原创 什么是事务,并发带来的事务问题以及事务隔离级别(图文详解)

在典型的应用程序中,多个事务并发运行,经常会操作相同的数据来完成各自的任务(多个用户对统一数据进行操作)。并发虽然是必须的,但是可能会导致以下的问题。

2023-08-14 17:09:50 751

原创 1686: Java两个集合输出距离最近的数字

同一个数轴x有两个点的集合A={A1,A2,…,Am}和B={B1,B2,…,Bm}A(i)和B(j)均为正整数A、B已经按照从小到大排好序,AB均不为空给定一个距离R 正整数,列出同时满足如下条件的(A(i),B(j))数对:A(i)

2023-08-14 15:26:12 214

原创 什么是双亲委派机制,为什么要用到这个机制?

双亲委派机制是一种有效的类加载机制,它能够提高类加载的效率,避免类的重复加载和冲突,并保护核心类库的安全性。这也是为什么在Java中要使用双亲委派机制的原因。

2023-08-13 17:00:53 1050

原创 深入理解JVM之.intern()的用法

intern只在常量池里记录首次出现的实例引用

2023-08-13 16:58:05 481

原创 finally有什么作用以及常用场景

finally块提供了一种机制,确保在发生异常或正常执行的情况下,某些代码一定会被执行。这对于资源释放、清理操作或确保代码执行的完整性非常有用。

2023-08-10 21:27:44 1111

原创 形成死锁的条件以及如何避免死锁

死锁是指在并发系统中,。死锁的发生通常需要满足以下四个条件:1.(Mutual Exclusion):至少有一个资源只能同时被一个进程或线程占用。2.(Hold and Wait):进程或线程至少持有一个资源,并且在等待其他资源的同时不释放已经占有的资源。3.不可剥夺条件(No Preemption):资源只能由占有它的进程或线程主动释放,不能被强制剥夺。4.(Circular Wait):存在一个进程或线程的资源请求序列,使得每个进程或线程都在等待下一个进程或线程所占有的资源。

2023-08-10 17:09:31 523

原创 AOP实现日志的打印

问题描述:写一个计算器的实现类,实现加减乘除功能,并在进行计算前日志输出方法,计算后输出结果。这样的话就是日志和业务混合在一起,现在方法少可以这样做,但设想一下,如果以后我们写了100,1000,10000.....个方法,每个方法都去加两行输出,这个任务量是极大且浪费时间的,因此我们要合理的使用AOP,在方法开始和结束前定义两个切面,然后再方法执行前后,就会自动实现切面里的内容,这样将日志代码全部抽象出去,统一进行处理,计算器方法只保留核心的业务代码,做到了核心业务和非核心业务代码的解耦合。

2023-08-07 11:03:52 339

原创 SpringIOC注入的两种方式讲解以及代码示例

Ioc是Spring全家桶各个功能模块的基础,创建对象的容器。

2023-08-06 09:28:32 494

原创 什么是代理,静态代理,jdk代理,Cglib代理讲解及代码

不管是JDK,spring框架,还是日常的开发中几乎可以说无处不在,下面一张简图描述了代理这个模式的业务场景

2023-08-05 12:06:42 128

原创 进程上下文切换以及应用场景

寄存器像是你的口袋,内存像你的书包,硬盘则是你家里的柜子,如果你的东西存放到口袋,那肯定是比你从书包或家里柜子取出来要快的多。CPU 上下文切换就是先把前一个任务的 CPU 上下文(CPU 寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的新位置,运行新任务。系统内核会存储保持下来的上下文信息,当此任务再次被分配给 CPU 运行时,CPU 会重新加载这些上下文,这样就能保证任务原来的状态不受影响,让任务看起来还是连续运行。

2023-08-05 09:00:58 214

原创 进程间的六种通信方式以及优缺点总结

前提知识:每个进程都有自己的用户空间,而内核空间是每个进程共享的。因此进程之间想要进行通信,就需要通过内核来实现。

2023-08-04 15:52:31 1473

原创 【并发编程】CAS是什么、ABA问题、应用场景

是(比较并交换)的缩写,是一种,主要用于实现多线程环境下的无锁算法和数据结构,保证了并发安全性。它可以在(如synchronized、Lock)的情况下,对共享数据进行线程安全的操作。CAS操作主要有三个参数:要更新的内存位置、期望的值和新值。

2023-08-04 11:21:30 338

原创 java.io.FileNotFoundException: \data\applogsl-job\jobhandler\callbacklog\xxl-job-callback-1690545939

记录一次解决xxljob找不到文件报错的解决方案

2023-08-02 20:35:56 892

原创 Class.forName()和ClassLoader.getSystemClassLoader().loadClass()区别

Class.forName和ClassLoader.loadClass都可以用来加载类

2023-07-27 17:16:35 137

原创 springMVC执行流程

当tomcat启动之后,tomcat会自动读取web.xml配置文件(约定)。首先读取DispatcherServlet,还有其他配置文件的路径。的作用:使用springMVC时,java和前端对接的是Controller,而tomcat并不识别Controller,无法和前端沟通,所以需要一个中介。tomcat是支持访问servlet的,所以中介就是DispatcherServlet。

2023-07-27 11:12:28 498

原创 深入理解JVM:Java使用new创建对象的流程

对象创建在虚拟机中是非常频繁的行为,即使仅仅修改一个指针所指向的位置,在并发情况下也并不是线程安全的,可能出现正在给对象 A分配内存,指针还没来得及修改,对象B又同时使用了原来的指针来分配内存的情况。并发情况下,需要考虑步骤是不是原子性(动作不能再继续被拆分了,读是原子性,写是原子性,读加写就不是原子性),如果不是原子性,一定。

2023-07-26 09:39:24 943

原创 java中的锁:Synchronized的四种状态(无锁、偏向锁、轻量级锁、重量级锁)

两个线程竞争同一个资源,如果一个抢占成功,就给他加锁,另一个线程进入阻塞偏向锁适用于几乎没有并发的时候,虽然可以有多线程,但不是同一时刻,每个线程的存活时间都很短轻量级锁可以快速知道锁什么时候释放,不需要让线程进入阻塞队列,提高效率,缺点是增加了cpu的损耗。所以轻量级锁中有个cpu自旋,极大消耗cpu。当并发特别高的时候,对cpu损耗极大,浪费时间。当高并发的情况,竞争失败就放入阻塞队列,这样对cpu消耗极少,这样就升级成了重量级锁 也就是说,在高并发情况下,我们选择重量级锁

2023-07-25 17:41:29 590

原创 Java泛型栈与泛型队列实现(数组与链表两种方法)

【代码】Java泛型栈与泛型队列实现(数组与链表两种方法)

2023-07-25 16:39:47 475

原创 Java五大内存区域介绍与常见异常

虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的区域。这些区域各自有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有的区域则依赖用户进程的启动和结束而建立和销毁。

2023-07-25 16:22:24 484

原创 力扣1114.按序打印-----题目解析

【代码】力扣1114.按序打印-----题目解析。

2023-07-25 15:17:37 751

原创 力扣1116.打印零与奇偶数--------题解

现有函数 printNumber 可以用一个整数参数调用,并输出该整数到控制台。例如,调用 printNumber(7) 将会输出 7 到控制台。给你类 ZeroEvenOdd 的一个实例,该类中有三个函数:zero、even 和 odd 。ZeroEvenOdd 的相同实例将会传递给三个不同线程:线程 A:调用 zero() ,只输出 0

2023-07-24 21:04:53 230

原创 Java反射的使用

反射是Java框架的核心,无论是Tomcat,SpringMVC,SpringIOC,SpringAOP,动态代理,都使用了反射那么什么是反射?Java有两种创建对象的方式:①new 对象 ②反射因此,反射的作用就是,无需new对象,就可以动态获取到一个类的全部信息,包括属性,方法,构造器,以及他们的修饰符,参数,注解等等....从而构造出对象实例并对对象实例进行操作。

2023-07-23 20:58:58 190 1

原创 一文搞懂volatile与synchronized区别以及使用

一提到并发编程,我们便会想到和内存可见:线程执行结果在内存中对其他线程的可见性。执行顺序:控制代码的执行顺序及是否可以并发执行。

2023-07-23 20:07:58 1307 1

原创 volatile轻量级锁

适用场景:某个属性被多个线程共享,其中有一个线程修改了此属性,其他线程可以立即得到修改后的值,比如 booleanflag;或者作为触发器,实现轻量级同步。volatile 变量的读写操作都是无锁的,低成本的。它不能替代 synchronized,因为它没有提供原子性和互斥性。volatile 只能作用于属性,我们用volatile修饰属性,这样compilers就不会对这个属性做指令重排序。volatile 可以在单例双重检查中(特殊场景)实现可见性和禁止指令重排序,从而保证安全性。

2023-07-23 17:57:23 120

原创 synchronized锁

synchronized是Java的一个关键字。来自官方的解释:Synchronized方法支持一种简单的策略,用于防止线程干扰和内存一致性错误:如果一个对象对多个线程可见,则对该对象变量的所有读或写操作都通过Synchronized方法完成。Synchronized是最基本的互斥手段,保证同一时刻最多只有1个线程执行被Synchronized修饰的方法 / 代码,其他线程 必须等待当前线程执行完该方法 / 代码块后才能执行该方法 / 代码块。synchronized有三种应用场景。

2023-07-23 10:20:08 433

原创 Java中的元注解

元注解就是解释注解的注解,它注解的对象是我们前面介绍的注解,如:@Override、@Deprecated 、@SuppressWarnings。

2023-07-22 15:42:02 105

原创 Mysql事务

多个操作同时进行,那么同时成功,那么同时失败。这就是事务。由于网络环境可能会出现一条成功一条失败的中断状况,那么如何避免--------->事物。

2023-07-21 20:38:46 40

空空如也

空空如也

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

TA关注的人

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