自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 UML---活动图

活动图(Activity Diagram)是UML(Unified Modeling Language,统一建模语言)中的一种行为建模工具,主要用于描述系统或业务流程中的一系列活动或操作。活动图通常用于描述用例中的行为,展现从一个活动到另一个活动的控制流。1.用户可以通过该系统进行网上预约,用户填写预约内容选取预约时间,点击提交交由系统判定此预约是否成功。在活动图中,常用的元素及图形表示。

2024-02-19 23:43:03 664

原创 Quartz---Springboot项目整合Quartz---实现内存、数据库持久化

Quartz的内存持久化是指Quartz框架在默认情况下将任务调度的运行信息保存在内存中。这种方式的优点是可以提供最佳的性能,因为内存中数据访问最快。然而,内存持久化的缺点是缺乏数据的持久性。当程序停止或系统崩溃时,所有运行的信息都会丢失。

2024-02-19 15:38:12 1375

原创 Quartz---串行执行、JobDataMap持久化

在Quartz中,作业(Job)默认是以并行方式执行的,这意味着如果调度器(Scheduler)有多个线程可用,并且满足触发条件,那么多个作业可能会同时执行。然而,有时候我们可能希望作业以串行方式执行,即一个接一个地执行,而不是同时执行。Quartz的作业在执行时使用的是触发时创建的JobDataMap的一个拷贝,因此作业中对JobDataMap的任何更改都不会影响到原始的JobDataMap,也不会在作业执行结束后保留下来每次任务调度都会使用新的实例。在任务子类中添加此注解。记录每个任务执行间隔。

2024-02-18 23:29:33 447

原创 Quartz---JobDataMap使用的两种方式

有两种方式可以从执行方法的上下文中取出参数:一种是直接从execute方法的上下文中取出,另一种是在作业类中定义参数名称,并完成相应的get和set方法。JobDataMap是Quartz调度器中的一个重要组件,主要用于存储和传递与作业(Job)相关的数据。这些对象在作业执行时可以被获取并使用。当任务详细类中的JobDataMap设置的key和调度器类设置的key一样的话,后者会覆盖前者的值。通过Job子类的set方法将属性赋值,在添加jobdata时将key值设为set方法中设置的属性名。

2024-02-18 23:18:47 569

原创 Quartz---基础

创建一个类实现org.quartz.Job接口,并实现execute方法。这个方法将在作业被调度时执行。// 这里是定时任务的逻辑部分创建一个触发器来定义作业的执行计划。触发器可以指定作业的开始时间、结束时间、执行间隔等。1.配置调度器(Scheduler):创建一个调度器实例,并使用它来安排作业和触发器。// 创建作业详情JobDetail jobDetail = JobBuilder.newJob(MyJob.class)//作业的类名。

2024-02-18 23:10:14 955

原创 多线程---乐观锁、悲观锁

CAS算法,全称为Compare-And-Swap(比较并交换),是一种无锁的非阻塞算法,也是乐观锁的技术实现。因此,乐观锁在访问数据时不会立即对数据进行加锁,而是在更新数据时检查数据是否被其他线程修改过。否则,更新失败,并可能需要重新尝试。因此,悲观锁在每次访问数据时都会先对数据进行加锁,以保证同一时间只有一个线程可以访问数据。其他试图访问该数据的线程将被阻塞,直到锁被释放。如果发生变化,则说明数据已经被其他线程修改过,需要重新获取数据并尝试更新。乐观锁的优点是减少了锁的使用,从而提高了系统的并发性能。

2024-02-18 10:44:18 391

原创 多线程---线程池

线程池(Thread Pool)是一种多线程处理形式,它允许一个或多个线程并行执行,以减少在创建和销毁线程上花费的时间以及系统资源的开销。线程池不仅提高了程序的响应速度,还增强了系统的吞吐量。线程池主要由一个或多个创建好的线程和一个线程安全的任务队列组成。当需要执行新任务时,线程池会尝试从任务队列中获取任务,并由一个或多个空闲的线程来执行这些任务。如果所有线程都在忙,那么新任务就会在队列中等待,直到有线程空闲出来。线程池中的线程数量可以根据需要进行调整,以适应不同的工作负载。

2024-02-18 10:25:02 737

原创 多线程---线程同步,线程通信

线程同步是多线程编程中的一个重要概念,它指的是在多线程环境中,通过一定的机制保证多个线程按照某种特定的方式正确、有序地执行。这主要是为了避免并发问题,如死锁、竞态条件、资源争用等,确保数据的一致性和完整性。当多个线程共享同一份资源时,由于线程的执行顺序是不确定的,可能会出现线程安全问题。例如,两个线程同时对一个共享变量进行操作,可能会出现预期之外的结果。如下:小明和小弘对同一账号取钱,会出现余额为负的情况//操作账户try {

2024-02-17 23:53:50 1342

原创 多线程---创建线程

多线程是指从软件或者硬件上实现多个线程并发执行的技术。线程是程序中独立运行的程序片段,每个线程都有独立的执行流程,可以在同一时间内执行不同的任务。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。多线程是并行化的一种形式,或者是拆分工作以便同时进行处理。线程化的程序将工作拆分到多个软件线程,而不是将大量工作交给单个内核。这些线程由不同的CPU内核并行处理,以节省时间。多线程可以提高程序的并发性和效率,实现异步处理,提高程序的响应速度和用户体验。

2024-02-17 23:48:15 938

原创 IO流---缓冲流,转换流,打印流,序列化流

字符流(如Reader和Writer)处理的是char类型的数据,而字节流(如InputStream和OutputStream)处理的是byte类型的数据。**序列化(Serialization)**是将对象的状态转换为字节流的过程,这样可以将对象的状态保存到磁盘、数据库或通过网络发送到另一台机器。在Java中指的是将对象的状态转换为可以存储或传输的形式的过程,以及随后将这个形式的数据恢复为对象的过程。**反序列化(Deserialization)**则是将之前序列化保存的字节流恢复为对象的过程。

2024-02-16 19:38:42 1077

原创 IO流---字节输入输出流,字符输入输出流

IO流,即输入输出流(Input Output Stream),是一种抽象概念,用来处理设备之间的数据传输问题,例如文件复制、文件上传、文件下载等。在Java中,对数据的操作通常是通过流的方式进行的,这些用于操作流的类都包含在IO包中。按照流向分类,IO流可以分为输入流和输出流。输入流主要用于从外部设备(如文件、键盘、网络等)读取数据,而输出流则用于将数据写入外部设备。按照数据类型分类,IO流可以分为字节流和字符流。

2024-02-16 19:03:06 535

原创 编码与解码

编码是将信息从一种形式或格式转换为另一种形式的过程。在电子计算机、电视、遥控和通讯等领域中,编码被广泛使用。编码通常涉及将文字、数字或其他对象转换为特定的数码或电脉冲信号。例如,在计算机中,字符编码是将字符(如字母、数字、标点符号等)转换为计算机能够理解的二进制代码。常见的字符编码方式有ASCII、Unicode、UTF-8、GBK等。是编码的逆过程,即将编码后的数据还原成原始格式。在接收端,解码器会对接收到的编码数据进行解码,以恢复成原始的数据形式。

2024-02-16 18:51:25 799

原创 IO流---File 类

File 类是 java.io 包的一部分,用于表示文件和目录路径名的抽象表示形式。这个类可以用来创建、查找、管理文件系统中的文件和目录。尽管 File 对象可以表示文件或目录,但它并不表示文件内容本身或文件系统中实际存在的文件或目录。将下面的文件依次修改为21.txt,22.txt,23.txt,24.txt,25.txt。搜索文件,采用递归查找fileTest中的22.txt并返回此文件的位置。相对路径是对应蓝色位置,就是lambada路径下的位置。使用相对路径创建文件。

2024-02-15 23:46:58 960

原创 事务及在SpringBoot项目中使用的两种方式

事务(transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。原子性(Atomicity)原子性指事务是一个不可分割的工作单位,事务中包括的操作要么全部完成,要么全部不完成,不可能结束在中间某个环节。事务中的所有操作要么全部提交成功,要么在发生错误时全部回滚,撤销对数据库的所有更改。这意味着事务内的操作如果失败了,那么会回滚到事务开始前的状态,就像这些操作从来没有发生过一样。

2024-02-15 15:20:23 1336

原创 UML---用例图,类图

类图(Class Diagram)是UML(统一建模语言)中的一种重要图形化表示法,用于描述系统中的类、接口以及它们之间的静态结构和关系。,主要描述系统的功能需求和参与者与系统之间的交互。用例图被视为系统的蓝图,通过它,人们可以获知系统不同种类的用户和用例,了解系统的功能和行为。泛化关系(Generalization):表示类与类之间的继承关系,用带空心三角形的实线表示,箭头指向父类。实现关系(Realization):表示类与接口之间的实现关系,用带空心三角形的虚线表示,箭头指向接口。

2024-02-01 21:57:37 873

原创 Lambda表达式

在Java中,Lambda表达式提供了一种简洁的方式来实现只有一个方法的接口,这类接口被称作函数式接口(Functional Interface)。Lambda表达式于Java 8中被引入,它帮助简化了匿名内部类的写法,让代码更加简洁易读。

2024-01-24 10:28:51 357

原创 Mybatis----缓存

MyBatis是一个流行的Java持久化框架,它提供了一个灵活的缓存机制来提高查询性能。MyBatis的缓存机制主要分为一级缓存和二级缓存。一级缓存是指在同一个SqlSession中,查询结果会被缓存起来,当再次执行同样的查询时,直接从缓存中获取结果,而不需要再次发起数据库查询。一级缓存是MyBatis默认启用的,可以通过配置来禁用。二级缓存是指多个SqlSession之间共享的缓存,它可以减少数据库的访问次数,提高性能。默认情况下,二级缓存是禁用的,需要手动配置开启。

2024-01-23 18:42:12 1092

原创 Mybatis----分页

分页(Pagination)是指将大量数据划分为多个页面进行展示的一种技术手段。在数据量较大的情况下,将所有数据一次性显示在页面上会导致加载时间过长和页面过于庞大,影响用户体验和系统性能。分页技术通过划分数据为多个页面,并提供导航控制,使用户可以按需加载和浏览数据。通常的分页方式是根据指定的每页显示数量,将数据分为多个独立的页,每页呈现一定数量的数据。用户可以通过页码或者上一页、下一页等导航控件来切换不同的页。常见的分页信息包括当前页码、总页数、总记录数等。

2024-01-23 15:41:37 928

原创 mybatis----动态Sql

当测试id值为null时,prefixOverrides属性值的设定取出了多余的and,prefix值的设定在trim标签前添加了where。如下,trim标签还用suffix,suffixOverrides属性,与前两个属性相对,分别是在trim标签中语句后添加值,在if标签中对and或or相对属性值后的动态处理,防止sql语句出错。where标签是对if标签的升级版,这里用where标签替代where语句,而且它还能消除条件语句中可能出现的多余sql字段,例如and,or。

2024-01-22 22:52:01 573

原创 SpringMvc中拦截器的配置及应用

Component// 在controller执行前的逻辑@Override// 在controller执行之前执行的逻辑// 返回 true,将允许请求继续传递到处理程序;//返回 false,将阻止请求传递给处理程序// 在controller执行后、并在视图渲染前执行的逻辑@Override//在服务器响应结束后执行的逻辑@Override@Autowired@Override//registry.addInterceptor() 方法可以向注册表中添加拦截器。

2024-01-21 15:32:34 624

原创 SpringBoot项目中集成Kaptcha

Kaptcha是一个流行的Java库,用于生成验证码(CAPTCHA)图片。CAPTCHA是“Completely Automated Public Turing test to tell Computers and Humans Apart”的缩写,通常用于在线表单验证以防止机器人或自动化工具的滥用,保护网站不被自动注册帐户、发送垃圾邮件等使用。

2024-01-21 15:28:15 520

原创 Springboot集成JavaMail Sender发送邮件

spring-boot-starter-mail 是 Spring Boot 的一个 Starter,它提供了集成 JavaMail Sender 和对应配置的自动配置。

2024-01-19 13:01:44 756

原创 Mybatis与Springboot的整合

3、配置mapper映射文件,注意namespace 必须指定对应mapper接口的权限定类名,而且映射文件目录结构要与mapper接口一致,映射文件去掉xml的名称与mapper接口名称一致。1、导入sprinboot依赖,数据库连接依赖,mybatis依赖,junit依赖。2、编写mybatis核心配置文件(yml)4、编写mapper接口。

2024-01-18 18:35:01 562

原创 Linux部署MinIO实现图片存储,读取,删除

MinIO 是一个高性能的分布式对象存储服务,它与亚马逊的S3(简单存储服务)兼容,在开源许可下是免费和开放的。您可以用它存储任何种类的对象,也就是说可以存储无结构的数据如照片、视频、日志文件、备份和容器/虚拟机镜像。对象可以是任何大小,从几KB到最大5TB。MinIO 能在各种私有云、公有云和混合云环境中运行,并且非常适合存储大量不经常访问的静态数据。

2024-01-18 18:29:08 1525

原创 mybatis----小细节

在MyBatis中,元素用于定义类型别名,它可以将Java类名映射为一个更简短的别名,这样在映射文件中可以直接使用别名而不需要完整的类名。在MyBatis中,#{} 和 ${} 用于处理SQL语句中的参数,但是它们在作用和安全性方面有所不同。将${}换成#{},执行出错,原因在于DESC是sql语句的关键字,而#{}会将参数转化为字符串。通过使用别名,我们可以简化映射文件中的配置,并提高代码可读性和可维护性。同样直接使用#{}也会出错,#{}在' '中并不会被赋值。

2024-01-17 20:19:03 604

原创 Mybatis----面向接口

这是dao层接口的实现类,在mybatis中我们可以省略这种实现接口的方式,直接面向接口操作数据库,mybatis可以帮我们自动生成接口的实现类,也就是下面这个实现类mybatis帮我们生成了。2、修改映射文件,将映射文件中的namespace标签属性修改为Dao层接口所在的位置,将查询更新语句中的id修改该为与接口中对应的方法一致。1、修改service,生成代理对象,调用接口方法,等同于上述图片内容的作用。让mybatis自动生成dao层接口的实现类。

2024-01-17 18:00:27 606

原创 MyBatis

其中entity为模型层,webapp中的页面为视图层 controller,service为-控制层,dao,util为对模型层的辅助。每一次http请求都是一个独立的线程,因此可以使用这个类来使保存会话对象,使这个会话对象在整个http请求中都始终都是一个。这种情况的出现是因为,在操作数据库时,每次都获取一个新的会话对象,在执行两次更新时互不影响。修改dao(删除dao层的对话提交,关闭),service层,将会话提交放到业务逻辑完成后。编写xml文件,mybatis核心配置,映射文件。

2024-01-16 19:00:44 925

原创 Mybatis基础---------增删查改

之前的sql语句全部写在了映射文件中,然而在实际应用时是通过映射传递属性的,也就是java对象对应sql语句中的占位符属性,属性名一般和java对象中的属性名相同,我们只需要用#{}作为占位符,占位符名称与java对象属性名一致即可。获取结果集,通过select标签中的resultType参数来指定查询结果封装到对应的实体类中,如果实体类中的属性与数据库表中属性不一致,可以使用as将对应数据库表中列名重命名并与实体类一致。column--property==>数据库列名--实体类属性名。

2024-01-15 23:44:22 461

原创 MyBatis 入门指南:基本配置和使用

说明:在maven管理的项目中,从类路径开始加载资源是指在resource目录下加载资源,默认resources目录下的文件会放置在类路径下。M:映射,指java中对象映射到数据库表中对应的记录,或者是数据库表中对应记录映射成java中的对象。O:对应的是java中的对象,一般是pojo(实体类)

2024-01-14 23:16:55 388

原创 java客户端连接redis并设置序列化处理

RedisTemplate是Spring Data Redis框架提供的一个用于与Redis数据库交互的核心工具类。StringRedisTemplate是Spring Data Redis框架提供的一个封装Redis String类型数据操作的工具类。它是RedisTemplate的一个具体实现,专门用于操作Redis中的字符串数据(String类型)spring-data-redis集成了lettuce(线程安全)和jedis(线程不安全),这里配置的是lettuce,两者均为Redis的客户端。

2024-01-14 14:45:04 769

原创 Redis

如果windows主机要连接linux中的主机将redis.conf中的内容bind 127.0.0.1注释掉并将配置文件的 protected-mode yes 改为 protected-mode no,并关闭防火墙。HSETNX 如果hash类型的key字段的field存在则不会添加,否则将添加这个field的值。HGET key field 获取一个hash类型的key的field的值。可排序的set集合,默认是升序的,若要降序则在命令的Z后面添加REV即可。

2024-01-14 14:34:37 1241

原创 Docker

linux中部署docker及常见docker基本功能

2024-01-14 14:27:02 1202

原创 整合junit与热部署

3、ctrl+shift+alt+/ 打开Maintenance中registry,选中...when.app.running。2、file-settings-compiler-勾选Build project automatically。注意测试类的目录与主启动类的目录一致,测试方法中添加@Test。1、添加spring-boot-devtools热部署启动器。测试类上添加@SpringBootTest。

2024-01-13 21:43:40 636 1

原创 SpringBoot常用注解

JPA(Java Persistence API)定义了一种Java标准,用于管理关系型数据和对象之间的映射关系。在Spring Boot中使用JPA,通常会创建实体(Entity)类来映射数据库中的表结构。通常情况下,Spring应用程序需要包含至少一个配置类,用于整合和配置应用程序的各个组件,并告诉Spring容器如何创建和管理这些组件。组件类由配置类进行扫描和管理,可以通过依赖注入等方式在应用程序中使用。在Spring框架中,组件类和配置类是两个重要的概念,它们扮演着不同的角色。

2024-01-13 21:28:50 1102

原创 Springboot读取配置文件

ConfigurationProperties 是Spring Framework中用于将配置文件中的属性绑定到Java对象的注解,可以达到多属性注入。Spring Boot 会按照特定的顺序加载属性文件,并采用最后覆盖原则,这意味着最后读取的属性源将覆盖先前的属性源中相同的属性。springboot项目中配置文件有优先加载顺序 properties> yml >yaml>自定义核心类配置。此种加载方式优先级最低,springboot会先加载系统默认的核心配置类。4、属性与之间有空格。

2024-01-13 21:20:02 689

原创 python爬虫 --协程

协程,相较线程来说更加轻量级的;它不被操作系统的内核所管理,完全由程序所控制,不需要CPU内核的切换,也能实现并发。

2023-06-30 23:09:13 584

原创 客户端负载均衡Ribbon

负载均衡负载均衡是高可用网络基础架构的关键组成部分,有了负载均衡,我们可以部署多带服务器,然后通过负载均衡将用户的请求分发到不同服务器用来提高网站,应用,数据库或者其他服务的性能以及可靠性。硬件负载均衡在服务器和网络间安装负载均衡设备;负载均衡器独立于操作系统之外,整体性能大幅提高。加之多样的负载均衡策略,智能的流量统计,硬件负载均衡的解决方案可达到最佳的负载均衡效果。软件负载均衡在一台或者多台服务器相应的操作系统上安装一个或者多个附加软件实现负载均衡;

2023-06-22 16:03:12 120

原创 Servlet回顾

http请求在web服务器中的处理过程动态生成页面的技术Servlet,它是web框架的基础

2023-06-22 00:06:41 109

原创 服务网关Zuul

Zuul服务网关的概述,路由配置规则,过滤器及实现自定义过滤器

2023-06-21 16:34:28 230

原创 在Fegin中使用熔断保护

在微服务架构中,不同的业务被划分成不同的 微服务,这些微服务通过相互调用进行通信,每个微服务运行在不同的进程中,这样就可能出现一种情况,消费者调用提供者,提供者服务出现网络延迟或者错误,消费者服务也会因提供服务无法相应出现延迟;当消费服务被更多的被调用,而服务消费者因为延迟的问题,tomcat中占用的线程资源不会释放,这样会导致更多的线程被消耗,直至tomcat资源耗尽,这会导致严重的问题——其他的服务不能正常提供服务(雪崩效应)

2023-05-09 15:37:13 141 1

MyBatis在webApp中的使用,此种使用方式是实现dao层接口,并未让mybatis自动生成dao接口的实现类

MyBatis在webApp中的使用,此种使用方式是实现dao层接口,并未让mybatis自动生成dao接口的实现类

2024-01-17

SpringCloud-Ribbon,使用RestfulTemplate实现负载均衡练习

如果只有一台主机,需要设置hosts文件,添加server1 ,server2映射 基于高可用负载均衡练习

2023-04-16

空空如也

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

TA关注的人

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