- 博客(86)
- 收藏
- 关注
原创 Elasticsearch安装Windows版
3.1.右击此电脑 3.2.属性 3.3.高级系统设置 3.4.环境变量 3.5.系统环境变量 3.6.,9300是TCP协议端口号,ES集群之间通讯端口号。3.7. 在系统环境变量中找到。注意控制台输出信息,
2024-01-11 22:00:00
1100
原创 Elasticsearch入门
Elasticsearch是一款非常强大的开源搜索引擎,Elasticsearch还有关联的一整套技术栈,包含Kibana、Logstash等组件,称为ELK。被广泛应用在日志数据分析、系统实时监控等领域。Elasticsearch核心是基于Apache Lucene库实现的。
2024-01-11 21:30:00
661
原创 Docker入门:容器化原理
虚拟机就像是在一栋大楼里租赁一个独立的办公室,你需要购置自己的家具、设备,甚至安排自己的门禁系统。而容器则更像是在同一层楼的开放办公区域租用一个办公桌,你共享大楼提供的基础设施,但你的桌子是独立的,你可以在上面安装自己的工作环境。Docker使用联合文件系统将所有的“小世界”叠加在一起,就像是把许多透明的玻璃纸叠加在一起,最终呈现出一个完整的画面。镜像是一个只读的模板,包含了运行应用程序所需的所有信息,包括代码、运行时、库、环境变量和配置文件。它是一个静态的、不可改变的实体,就像是一个操作系统的快照。
2023-12-07 20:00:00
635
原创 IDEA设置方法注释模板
一.打开设置:File—>Settings...二.选择Live Templates—>点击右侧 "+" 号—>选择Template Group...三.输入组名称,建议取容易理解的名字,点击OK四.选中创建好的组,再次点击 "+" 号,选择LiveTemplate五.输入基本信息六.配置应用模板的文件,选择Java七.设置参数的值八.保存,测试
2023-11-23 20:44:23
700
原创 Spring Boot 集成 MinIO 实现文件上传、下载和删除
2.在minio.exe目录下创建start.bat配置启动文件:"D:\Java\MinIo"是服务启动时文件存放的位置。MinIO 是一种开源的对象存储服务,它基于云原生架构构建,并提供了高性能、易于扩展和安全的存储解决方案。1.创建一个 Spring Boot 项目。2.配置类,用来连接Minio。4.创建一个 Spring Boot 项目。2.添加依赖,注意依赖版本。3.工具类,用来操作文件。1.yaml配置文件。一.安装和配置 MinIO 服务器。3.双击minio.exe文件启动。
2023-09-26 21:00:00
817
原创 LocalDate介绍和使用
在我们开始之前,让我先简单介绍一下 LocalDate。它是 Java 8 中引入的日期类,用于表示不带时区信息的日期。也就是说,它专注于日期,并忽略了具体的时间。这样,我们就可以专心解决那些只关心日期的问题啦!
2023-08-15 22:31:59
1459
原创 FastJSON的使用
FastJSON是一个高效的Java JSON处理库,它提供了快速的序列化和反序列化功能,以及丰富的高级功能。本文将详细介绍FastJSON的基本用法、高级功能以及最佳实践和常见问题,并附上代码示例。
2023-08-15 22:19:42
1760
原创 SpringBoot整合FastDFS
FastDFS是一个开源的分布式文件系统,具有高性能、高可靠性和扩展性。它由跟踪器(Tracker)和存储节点(Storage Node)组成,并且可以方便地扩展存储容量。FastDFS支持文件上传、下载和删除等操作,适用于大规模的分布式文件存储场景。
2023-07-16 10:24:53
1295
原创 SpringBoot开启定时任务
有些场景需要使用到定时任务,比如:定时数据备份:定时任务可以用于自动备份数据库或重要文件。可以编写一个定时任务来定期执行数据备份操作,以保护数据的安全性。定时数据同步:在分布式系统中,定时任务可以用于定期将数据从一个系统同步到另一个系统,确保数据的一致性和可用性。定时报表生成:在业务系统中,您可能需要定期生成报表并发送给相关人员。定时任务可以用于在指定的时间生成报表,并将其发送给指定的收件人。
2023-07-08 09:47:17
779
原创 MySQL查询时指定使用索引
在MySQL中,可以通过指定查询使用的索引来提高查询性能和优化查询执行计划。以下是一些常见的场景,可能需要考虑指定查询使用的索引:
2023-07-08 09:03:00
3268
原创 RabbitMQ实现延迟队列
RabbitMQ 延迟队列是指将消息先放入队列中,但是并不立即消费该消息,而是在一定时间后再进行消费的队列。延迟队列可以用来解决某些需要经过一段时间才能处理的任务,例如超时未支付订单的关闭、定时发送消息等场景。
2023-07-04 09:16:27
2142
原创 Redis和数据库保持数据一致性方案
使用RabbitMQ中间件,在数据发生更新后发一条消息到MQ,缓存服务监听MQ消息更新缓存。由于消息需要经过MQ,会有一定的延迟,所以是延时一致。
2023-06-26 08:55:31
3187
原创 wait()和sleep()方法的区别
wait()方法和sleep()方法都是控制线程暂停执行的方法,但它们之间有着重要的区别。wait()方法用于线程间的通信和同步,在同步块中调用时会释放锁,需要通过notify()或notifyAll()方法唤醒等待中的线程。而sleep()方法用于暂停当前线程的执行,在任何地方调用时不会释放锁,通过指定时间来控制暂停的时长。在实际开发中,根据具体需求选择合适的方法能够更好地编写出高效且正确的多线程程序。
2023-06-24 14:18:53
562
原创 数据库三范式
第一范式要求数据库表中的每个属性必须是原子性的,即不可再分解。也就是说,在一个数据库表中的任何一列中,不能有多个值或组合的值,否则就无法进行比较和排序。
2023-06-19 09:41:13
109
原创 Lambda表达式
Lambda 表达式是 Java 8 中引入的一个重要特性,通过它可以更方便地实现函数式编程。Lambda 表达式将方法作为参数传递,从而简化了代码,并提高了代码的可读性和可维护性。
2023-06-16 19:43:42
112
原创 Java IO流知识
字节流用于处理二进制数据,其中包括四个主要类:InputStream、OutputStream、FileInputStream 和 FileOutputStream。此外还有缓冲流 BufferedInputStream 和 BufferedOutputStream。
2023-06-16 19:32:42
216
原创 HashMap在1.7和1.8的区别
在 Java 1.7 中,HashMap 的底层数据结构是数组+单向链表。具体来讲,它是将所有的键值对存储在一个 Entry 数组中,每个 Entry 包含一个指向下一个 Entry 的指针,因此多个 Entry 以链表的形式存在,当哈希冲突时,新的 Entry 会插入到链表的末尾。在 Java 1.8 中,HashMap 的底层数据结构是数组+链表/红黑树,其实就是在 Java 1.7 的基础上,新增了一种结构:红黑树。当链表长度达到阈值(默认为8)时,链表就会转换成红黑树。这样做的好处是,在查找、插
2023-06-16 14:34:23
1422
原创 Linux安装RabbitMQ
进入erlang安装目录下的bin,erlang安装到了 /usr/local/erlang下。只要没提示 bash: erl: command not found... 就是安装成功了。创建/opt/rabbitmq目录,进入该目录。查看是否安装成功:任意位置输入erl。注意:防火墙放行对应的端口15672。下载比较慢,建议从本地上传。需要先解压成tar包再解压。
2023-06-15 20:22:28
1319
原创 消息队列RabbitMQ
消息队列是一种在应用程序之间发送和接收消息的方法,可以实现异步通信、解耦应用、提高系统性能等效果。RabbitMQ 是一款常用的开源消息中间件,它实现了 AMQP 协议规范,并提供了可靠性、灵活性、易用性等优秀特性。本文将介绍 RabbitMQ 的特点、工作模式、延迟队列和消息可靠性等方面的内容。
2023-06-15 20:05:48
1705
原创 强引用、软引用、弱引用、虚引用
强引用用于描述必须存在的对象,只要该对象被引用变量所引用,就不会被 GC 回收。软引用用于描述那些还有用但非必须的对象,在内存不足时会被回收。弱引用用于描述那些非必须的对象,并且它的生命周期比软引用更短,垃圾回收速度也更快。虚引用用于描述那些已经进入 finalization 队列,但是未被垃圾收集器真正回收的对象,它不能直接获取到对象的实例,只能在对象被回收时收到系统通知。
2023-06-15 08:34:48
2098
原创 this和super区别
this 关键字主要用于表示当前对象,可以用于访问当前对象的属性和方法。当一个类中存在多个同名的变量或方法时,用 this 关键字可以明确指定是哪个。同时,this 还可以用于实现链式调用(method chaining)的功能。super 关键字主要用于表示父类对象,可以用于访问父类的属性和方法。当子类和父类中存在同名的变量或方法时,用 super 关键字可以明确指定是父类的属性或方法。同时,super 还可以用于调用父类的构造方法。
2023-06-14 21:43:38
70
原创 SpringMVC执行流程
DispatcherServlet 前端控制器是 SpringMVC 的核心组件之一,它接收客户端的请求并将请求分派到对应的处理器(Handler)进行处理。在接收到请求后,DispatcherServlet 会将请求 URL 传递给 HandlerMapping 映射器进行处理,并根据请求 URL 匹配对应的 HandlerExecutionChain 处理器执行链。HandlerExecutionChain 包含了一个或多个 Interceptor 拦截器和一个 Handler 处理器,拦截器可以在请求
2023-06-14 21:39:02
8874
原创 MyBatis一级缓存和二级缓存
根据缓存存放位置,缓存可以分为本地缓存和分布式缓存。根据缓存作用范围,缓存可以分为永久缓存和临时缓存。在 MyBatis 中,根据作用范围,分别有一级缓存和二级缓存两种类型。
2023-06-14 11:36:29
11125
1
原创 产生死锁的原因以及如何避免死锁
死锁的第一个必要条件是互斥条件。即某个资源每次只能被一个进程使用。如果该资源被一个进程持有,其他进程就不能使用该资源直至其中一个进程释放它。但如果一个进程请求的资源正在被另一个进程使用,那么该请求进程只能等待。
2023-06-13 21:47:06
1603
原创 MySQL索引详细版
MySQL索引是一种用于快速查找特定数据的数据结构。在MySQL中,索引通常是在表的某些列上创建,这些列可以是主键、唯一键或普通索引。使用索引可以极大地提高数据库查询的性能,减少数据访问时间。通过使用索引,可以避免对整个表进行扫描,从而加快查询速度,提高数据库的响应时间。
2023-06-13 20:34:45
3929
原创 MySQL主从复制
MySQL主从复制是指将一个MySQL数据库实例(主库)的数据通过二进制日志传输到另一个MySQL实例(从库)的过程,并且从库的数据会与主库保持同步。主从复制可以用于数据备份、读写分离以及分布式数据库等场景。
2023-06-13 20:04:14
823
原创 MySQL存储引擎
存储引擎是MySQL的核心组件,是存储数据、建立索引、更新/查询数据等技术的实现方式,存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。在创建表的时候,可以指定选择的存储引擎,如果没有指定将自动选择默认的存储引擎。MySQL 支持多种存储引擎,每种引擎都有其特定的功能和性能特点。
2023-06-12 21:27:27
513
原创 MySQL索引
数据库索引是一种特殊的数据结构,用于提高数据库系统的查询效率和性能。它是对数据库表中一列或多列的某些值进行排序的一种结构,可以快速定位并访问数据。类比于书中的目录,每个章节都有一个对应的页码,通过查找目录可以快速定位到所需要的内容。数据库索引也是如此,它将数据按照一定规则分类,并记录数据在分类中的位置。当进行查询时,数据库会使用索引来快速定位到符合搜索条件的数据位置,避免了全表扫描,加快了查询速度。
2023-06-12 21:24:44
331
原创 双亲委派机制
Java类加载器采用双亲委派机制,是一种层次化的加载方式。当一个类需要被加载时,首先会交给父类加载器进行加载,如果父类加载器无法找到需要加载的类,则再由当前类加载器进行加载。
2023-06-12 16:20:58
878
原创 Spring、SpringMVC、SpringBoot的区别
Spring 是一个完整的框架,提供了大量的功能和组件,包括依赖注入、面向切面编程、事务管理、数据访问、Web 开发等。SpringMVC 是 Spring 框架的一部分,用于开发 Web 应用程序。它提供了 MVC(Model-View-Controller)模式的实现,将应用程序分为模型、视图和控制器三个部分。控制器接收请求并将其分派到适当的处理程序,视图将响应呈现给用户,模型处理数据和业务逻辑。SpringBoot 是一个用于快速开发和部署 Spring 应用程序的框架。它提供了自动配置、内嵌
2023-06-10 11:50:05
4690
原创 Spring事务传播机制
Spring定义了七种不同的事务传播行为,分别是:REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。SUPPORTS:支持当前事务,如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续执行。MANDATORY:强制要求当前存在事务,如果当前不存在事务,则抛出异常。REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则将当前事务挂起。NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则将当前事务挂起。
2023-06-10 11:28:53
691
原创 Java创建线程的方式
Java创建线程的四种方式包括:继承Thread类并重写run()方法实现Runnable接口并重写run()方法实现Callable接口并重写call()方法使用线程池创建线程
2023-06-09 20:38:03
1605
原创 JVM哪些区域会出现内存溢出
JVM(Java Virtual Machine)是指Java虚拟机,是一种可以在不同平台上运行Java字节码的虚拟计算机。JVM是Java语言的核心,通过将Java代码编译成字节码并在JVM上运行,实现了跨平台的特性。JVM中,会出现多种内存溢出的区域,包括方法区(Metaspace)、堆内存(Heap)以及线程栈(Thread Stack)等。
2023-06-09 19:48:41
1342
原创 MySQL事务隔离级别
MySQL提供了四种隔离级别:读未提交(Read Uncommitted)读提交(Read Committed)可重复读(Repeatable Read)串行化(Serializable)
2023-06-09 17:55:01
1802
原创 SpringBoot整合Seata
1.在数据库中新增日志回滚表 undo_log哪个业务使用Seata的AT模式,就必须在该业务操作的数据库中添加这张表
2023-06-09 14:20:51
1466
原创 Seata介绍、原理、配置
Seata是一款开源的分布式事务解决方案,可以用于解决分布式系统中的数据一致性问题。它是由阿里巴巴集团发起的开源项目,目前得到了广泛的应用和支持。在 Seata 开源之前,其内部版本在阿里系内部一直扮演着应用架构层数据一致性的中间件角色,帮助经济体平稳的度过历年的双11在分布式系统中,由于数据存储在不同的节点上,因此需要保证分布式事务的原子性(即要么全部成功,要么全部失败),否则将会出现数据不一致的情况。Seata提供了一种可靠的分布式事务解决方案,可以对全局事务进行管理和协调,从而实现分布式事务的原子
2023-06-09 12:30:25
5474
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人