自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(350)
  • 资源 (2)
  • 收藏
  • 关注

原创 【MySQL】深入理解MySQL索引底层数据结构与算法

索引是帮助MySQL高效获取数据的的。排好序这三个字其实就是对索引最好的形容和体现。我们可以简单把索引比喻成为书本的目录页,当然这么说太过于抽象,并没有把索引的底层特性说明白,下面我们将依次分析这些数据结构,来说明索引究竟是什么?!

2022-09-29 01:17:41 2305 3

原创 【Docker】如何查看之前docker run命令启动的参数

如何查看之前docker run命令启动的参数

2023-10-29 23:17:03 492

原创 【23种设计模式】依赖倒置原则

要依赖于抽象而不是具体实现。依赖倒置的目的是,低层模块可以随时替换,以提高代码的可扩展性。一、原理要依赖于抽象而不是具体实现。遵循这个原则可以使系统的设计更加灵活、可扩展和可维护。高层模块不应该依赖于低层模块,它们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。倒置在这里的确是指"反过来"的意思。在依赖倒置原则中,我们需要改变依赖关系的方向,使得高层模块和低层模块都依赖于抽象,而不是高层模块直接依赖于低层模块。这样一来,依赖关系就从直接依赖具体实现"反过来"依赖抽象了。

2023-10-28 01:27:21 443

原创 【23种设计模式】接口隔离原则

客户端不应该强迫依赖它不需要的接口。前面我提到,理解接口隔离原则的关键,就是理解其中的"接口"二字。一组 API 接口集合单个 API 接口或函数OOP 中的接口概念客户端不应该强迫依赖它不需要的接口。接口隔离原则要求我们将大的、臃肿的接口拆分成更小、更专注的接口,以确保类之间的解耦。这样,客户端只需要依赖它实际使用的接口,而不需要依赖那些无关的接口。将一个大的、通用的接口拆分成多个专用的接口。这样可以降低类之间的耦合度,提高代码的可维护性和可读性。为每个接口定义一个独立的职责。

2023-10-27 00:55:39 483

原创 【23种设计模式】里氏替换原则

子类对象能够替换程序中父类对象出现的任何地方,并且保证原来程序的逻辑行为不变及正确性不被破坏。举一个最简单的例子,就是我们定义了一个函数,它的参数是 XXX(List list),当我们传入ArrayList的对象(它的子类),不会有任何问题!

2023-10-25 01:45:00 925

原创 【23种设计模式】开闭原则

开闭原则(Open Closed Principle),简写为 OCP。软件实体(模块、类、方法等)应该"对扩展开放、对修改关闭一个很明显的例子就是——策略设计模式对扩展开放、对修改关闭。当我们需要添加一个新的功能时,应该在已有代码基础上扩展代码(新增模块、类、方法等),而非修改已有代码(修改模块、类、方法等)。开闭原则并不是不让我们修改代码,而是让我们尽量避免"大修大改",设计模式是方法,是套路,而不是"枷锁"!!!

2023-10-23 23:56:26 335

原创 【23种设计模式】单一职责原则

单一职责原则(Single Responsibility Principle,简称SRP),它要求一个类或模块应该只负责一个特定的功能。这有助于降低类之间的耦合度,提高代码的可读性和可维护性。单一职责原则的定义描述非常简单,也不难理解。一个类只负责完成一个职责或者功能。不要设计大而全的类,要设计粒度小、功能单一的类。一个类包含了两个或者两个以上业务不相干的功能,那我们就说它职责不够单一,应该将它拆分成多个功能更加单一、粒度更细的类。

2023-10-23 23:43:26 464

原创 【23种设计模式】装饰器模式

使用组合替代继承,对原生对象的方法做增强,增加新的行为和能力。装饰器设计模式(Decorator)是一种结构型设计模式,它允许动态地为对象添加新的行为。它通过创建一个包装器来实现,即将对象放入一个装饰器类中,再将装饰器类放入另一个装饰器类中,以此类推,形成一条包装链。在不改变原有对象的情况下,动态地添加新的行为或修改原有行为。

2023-10-18 00:15:38 417

原创 【面试题】Spring源码中的getBean()为什么需要对“&“进行处理?

大家好,我是。

2023-10-12 01:30:25 225

原创 【面试题】有了Docker为啥还需要k8s?

Kubernetes是一个开源的容器编排平台,用于自动化和管理容器化应用程序的部署、扩展、更新和运维。K8s提供了一个强大的集群管理系统,可以协调大规模的Docker容器,确保它们在生产环境中高效、稳定地运行。Kubernetes具有自动化的负载均衡、故障恢复、伸缩和滚动更新功能,以及灵活的声明式配置方式,使开发人员和运维团队能够更轻松地管理复杂的分布式应用程序。

2023-09-28 16:24:14 155

原创 MyBatisPlus使用自定义JsonTypeHandler实现自动转化JSON

在项目中使用了Mybatis-Plus框架,调用了Mapper层的 insert() ,如下所示,DingRobotMsg对象的属性包含了其它的对象(Text、Content),数据库表字段里有与之对应的字段,类型为json

2023-09-18 23:52:42 1153

原创 【23种设计模式】建造者模式【⭐⭐⭐】

产品(Product):表示将要被构建的复杂对象。抽象创建者(Abstract Builder):定义构建产品的接口,通常包含创建和获取产品的方法。具体创建者(Concrete Builder):实现抽象创建者定义的接口,为产品的各个部分提供具体实现。指挥者(Director):负责调用具体创建者来构建产品的各个部分,控制构建过程。

2023-09-13 01:06:15 465

原创 【23种设计模式】组合模式【⭐】

组合模式(Composite Pattern)是一种结构型设计模式。在组合模式中,每个对象都有相同的接口,这使得客户端不需要知道对象的具体类型,而只需要调用对象的通用接口即可。组合模式,将一组对象组织成树形结构,将单个对象和组合对象都看做树中的节点,以统一处理逻辑,并且它利用树形结构的特点,递归地处理每个子树,依次简化代码实现。使用组合模式的前提在于,你的业务场景必须能够表示成树形结构。所以,组合模式的应用场景也比较局限,它并不是一种很常用的设计模式。

2023-09-09 18:59:21 448

原创 【23种设计模式】享元模式【⭐】

把相同、相似的一些对象和属性拿来复用,以至于节省内存;由于这些对象将会被共享,所以它们最好是不可变的(不要又set() 方法)!主要是通过工厂模式,在工厂类中,通过一个 Map 来缓存已经创建过的享元对象,来达到复用的目的。

2023-09-07 16:08:26 805

原创 如何理解Java中的自动拆箱和自动装箱?

自动将基本数据类型转换为包装器类型。自动将包装器类型转化为基本数据类型。自动拆箱避免了手动调用 intValue()或类似方法来获取基本数据类型的值,使代码更简洁。自动装箱允许我们将基本数据类型直接赋值给包装类对象,而不需要显式地创建对象。自动拆箱(Auto-unboxing)和自动装箱(Auto-boxing)的主要目的是为了在基本数据类型(如int、double等)和它们的包装类(如Integer、Double等)之间实现自动转换,以简化编程和提高代码可读性。

2023-09-03 21:29:58 143

原创 为什么Java接口可以多继承,而类不可以?

Java中类不能多继承是为了简化继承关系,减少潜在的冲突和复杂性,而接口可以多继承是因为接口提供了一种更灵活的方式来实现多个抽象合同或规范。类可以实现多个接口,这样可以获得不同类的方法和行为。如果需要多继承的功能,可以使用接口和组合来实现。

2023-09-02 20:07:19 542

原创 Java之类对象与类加载器

类加载器(ClassLoader)和类对象(Class)是Java中两个不同,但相关的概念。作用上:类加载器用于将类的字节码加载到内存中,而类对象用于在运行时获取类的信息和进行反射操作。对象类型上: 类加载器是Java中的类,实现了java.lang.ClassLoader接口或其子类。类对象是表示类的元数据的对象,由java.lang.Class类的实例表示。加载过程: 类加载器根据类的名称从文件系统、网络或其他来源加载类的字节码。类对象则是在类加载器加载类的字节码后生成的,它包含了类的信息。

2023-08-23 00:43:13 148

原创 【BUG】Docker启动MySQL报错

Docker启动MySQL报错 。 Error response from daemon: driver failed programming external connectivity on endpoint mysql ()Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in useError: f

2023-08-20 01:30:34 928

原创 【BUG】docker安装nacos,浏览器却无法访问到页面

这个坑,说大也大,说小也小,出现这个问题,大概总结了一下,一般是由这三点导致的:【巨坑】访问的控制台网页没有加 /naocs没有指定启动方式,例如:MODE=standalone防火墙问题

2023-08-15 10:52:26 3414 2

原创 【MybatisPlus】LambdaQueryWrapper和QueryWapper的区别

LambdaQueryWrapper:优点:类型安全、易读性高,可以直接使用实体类的属性和方法。缺点:在某些复杂查询操作下可能不支持。QueryWrapper:优点:更灵活,支持复杂查询操作和 SQL 片段拼接。缺点:类型不安全、可读性较差。一般情况下,如果你的查询条件相对简单且你更注重代码的清晰性和类型安全性,可以优先考虑使用 LambdaQueryWrapper。但如果你需要进行复杂的查询操作,特别是涉及到复杂的 SQL 片段拼接等情况,可能需要使用 QueryWrapper。

2023-08-13 22:58:17 3251 3

原创 【面试题】ThreadLocal 的底层原理与使用场景

ThreadLlocal 是 Java 中所提供的线程本地存储机制,可以利用该机制将数据缓存在某个线程内部,该线程可以在任意时刻、任意方法中获取缓存的数据。内存泄漏(线程池)当ThreadLocal对象使用完之后,应该要把设置的 key、value (即:Entry对象)进行回收,但线程池中的线程不会回收,而线程对象是通过强引用指向ThreadLocalMap,ThreadLocalMap也是通过强引用指向Entry对象,线程不被回收,Entry对象也就不会被回收,从而出现内存泄漏!!!

2023-07-25 01:36:11 112

原创 【RabbitMQ】RabbitMQ集群搭建(Docker版本)

RabbitMQ版本,通常与他的大的功能是有关系的。3.8.x版本主要是围绕Quorum Queue功能,而3.9.x版本主要是围绕Streams功能。目前还有3.10.x版本,还在rc阶段。我们这次选择3.9.15版本。RabbitMQ是基于Erlang语言开发,所以安装前需要安装Erlang语言环境。需要注意下的是RabbitMQ与ErLang是有版本对应关系的。3.9.15版本的RabbitMQ只支持23.2以上到24.3版本的Erlang。

2023-07-20 14:18:41 666

原创 【Gradle】Gradle之JVM进程详解

Gradle 构建工具在不同场景下会分别使用3个 JVM 进程:client、Daemon、wrapper。client 进程是个轻量级进程,每次构建开始都会创建这个进程,构建结束会销毁这个进程。Daemon 进程负责具体的构建任务。我们使用 Android Studio打包 APK 这依靠的不是 Android Studio 这个 IDEA 开发工具,而是 Gradle 构建工具自己启动的、专门的一个负责构wrapper 进程啥也不干,不参与项目构建,唯一任务就是负责下载管理 Gradle 版本。

2023-07-16 23:51:25 511

原创 【Gradle】Groovy 基础语法详解

Groovy 是一种基于 JVM 的动态语言,他的语法和 Java 相似,最终也是要编译 .class 在JVM上运行。Groovy 完全兼容 Java 并且在此基础上添加了很多动态类型和灵活的特性,比如支持闭包,支持DSL(领域特 定语言),是一门非常灵活的动态脚本语言。要执行groovy的脚本必须要安装groovy环境,或者使用Java的ClassLoader来调用,这里主要讲解语法,不对 groovy的执行环境进行讲解。

2023-07-11 23:58:01 231

原创 【Gradle】Gradle的概述与简单使用

Gradle 是一种。。Ant几乎销声匿迹了,常见的就只有Maven和Gradle。目前市面上,使用的构建工具基本都是Maven;开发可能会使用到Gradle。Maven的主要功能主要分为是继Maven之后的新一代构建工具,它采用基于groovy的DSL语言作为脚本,相比传统构建工具通过XML来配置而言,最直观上的感受就是脚本更加的。

2023-07-09 23:57:33 5504

原创 阿里云OSS上传文件工具类

阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,可提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面优化存储成本。简单的来说,就是可以用来存图片、视频、音频等信息。

2023-07-04 17:40:55 486

原创 策略模式深度实践——通用的HTTP接口调用

前一段时间,跟着视频学习了策略模式,总结如下:【23种设计模式】策略模式(State Pattern)_金鳞踏雨的博客-CSDN博客这几天公司的项目中正好使用到了策略模式!由于项目中经常需要调HTTP请求,所以使用策略模式来处理不同的HTTP请求。

2023-07-03 23:49:15 836

原创 【23种设计模式】策略模式(State Pattern)

策略模式,就是为了解决多重 if 的问题,优化代码结构环境(Context)/ 上下文:环境是策略模式的核心,它持有一个策略对象的引用,并在需要执行特定算法时,调用策略对象的方法。抽象策略(Strategy):抽象策略定义了策略类的公共接口,它可以是一个接口或抽象类。它声明了策略类应该实现的方法,以便环境类能够通过统一的接口调用不同的策略。具体策略(Concrete Strategy):具体策略是抽象策略的具体实现,它实现了策略接口定义的方法,并封装了具体的算法逻辑。

2023-06-10 17:32:58 749

原创 【23种设计模式】外观模式(Facade Pattern)

Facade模式,又叫外观模式。它属于结构型设计模式的一种。Facade模式旨在为复杂的子系统提供一个简化的接口,从而隐藏系统的复杂性,使客户端能够更方便地使用系统。在软件开发中,大型系统通常由多个子系统组成,每个子系统都有自己的一组接口和功能。这些子系统之间的交互可能会变得非常复杂,对于客户端来说,直接与这些子系统进行交互可能会变得困难和繁琐。外观模式(Facade模式)可以视为面向对象中封装的一种应用。给外界提供清晰明了的使用方式,不用关心内部的复杂逻辑。

2023-06-06 16:12:21 488 1

原创 【Git】Git中 tag 与 branch 的关系与使用

标签是用于标记特定提交的静态引用。它是一个有意义的名称,用于表示项目的里程碑、版本发布或重要的提交。标签是不可变的,一旦创建就不会随着新的提交而移动。标签可以是轻量标签(lightweight tag),只是一个指向特定提交的引用也可以是注释标签(annotated tag),它包含了额外的信息(如标签的作者、日期、注释等)分支是代码开发过程中的不同线路或方向。每个分支都是从主分支(一般是master)派生出来的,开发者可以在分支上进行独立的工作,而不会影响主分支或其他分支。

2023-06-06 10:29:57 1898 2

原创 Redisson看门狗机制为什么比将锁设置成永久有效期更好?

使用看门狗机制相对于将锁设置为永久有效具有以下优点:(1)自动释放锁:看门狗机制能够自动在设定的超时时间内续期锁的有效期。这意味着,即使在锁持有者遇到故障、异常情况或忘记手动释放锁的情况下,锁也会在超时时间后自动释放。(2)鲁棒性和可靠性:使用看门狗机制可以提高系统的鲁棒性和可靠性。无论是由于系统故障、网络问题、进程崩溃还是其他异常情况,锁都能够在超时时间内得到释放,从而避免死锁和资源泄漏的问题。(3)降低人为错误风险:将锁设置为永久有效需要依赖手动的操作来释放锁。这增加了人为错误的风险。

2023-06-04 23:49:57 985 11

原创 【23种设计模式】观察者模式(Observer Pattern)

*** 目标(Subject)接口*/// 注册// 删除// 通知ProductSubject 接口定义了目标(具体目标)的通用方法,包括注册观察者、移除观察者和通知观察者。目标接口提供了一种规范,使得具体目标和具体观察者能够通过接口进行交互,实现松耦合的关系。/*** 观察者(Observer)接口:*/// 更新ProductObserver 接口定义了观察者的通用方法,包括接收目标通知的更新。

2023-06-04 00:43:29 648

原创 Jenkins + docker-compose 在 Centos 上搭建部署

我的 docker-compose.yml 脚本如下,直接使用命令就可以直接执行。但是有一点需要注意!就是的!上面有相应的版本号对应关系,如果与不匹配会有大问题!

2023-05-23 17:29:17 868 1

原创 【Spring源码】Spring核心原理解析

那么Spring到底是如何来创建一个Bean的呢,这个就是Bean创建的生命周期,大致过程如下:利用该类的构造方法来实例化得到一个对象(但是如何一个类中有多个构造方法,Spring则会进行选择,这个叫做推断构造方法得到一个对象后,Spring会判断该对象中是否存在被@Autowired注解了的属性,把这些属性找出来并由Spring进行赋值(依赖注入。

2023-04-06 11:19:07 1799

原创 【Vue】基于Vue实现品牌列表案例

使用bootstrap4.x相关的技术,例如:卡片、表单、按钮、表格。Vue指令与过滤器相关的知识点。1. 创建基本的 vue 实例2. 基于 vue 渲染表格数据3. 实现添加品牌的功能4. 实现删除品牌的功能5. 实现修改品牌状态的功能

2023-03-26 18:10:14 283

原创 禅道项目管理软件配置及使用教程

一、禅道介绍Zendao禅道是第一款国产的开源项目管理软件,他的核心管理思想基于敏捷方法scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能。二、禅道的作用基于敏捷方法scrum管理项目,包括项目,需求,版本等测试用例管理、缺陷管理管理项目的发布三禅道的安装在国内一般都是用Linux操作系统安装禅道。像我们公司就是将禅道部署在阿里云上。1.下载禅道注意:安装在Linux中一定要放在opt目录下面。

2023-03-25 14:24:33 3925

原创 【MySQL】高性能表结构及索引设计最佳实践(上)

范式的英文是Normal Form,所以我们通常把它称为——NF。MySQL是关系型数据库,想要设计—个好的关系,必须使关系满足一定的约束条件,此约束已经形成了规范,分成几个等级,一级比一级要求得严格!目前关系数据库有六种范式第一范式(1NF)第二范式(2NF)第三范式(3NF)巴斯-科德范式(BCNF)第四范式(4NF)第五范式(5NF,又称完美范式)它们一级比一级严格,而且是像上图这种包含关系,即:2NF一定满足1NF、3NF一定满足2NF......三星索引?

2023-03-24 12:43:47 323

原创 【Vue】10分钟带你读懂Vue的过滤器

过滤器提供给我们的一种数据处理方式。过滤器功能不是必须要使用的,因为它所实现的功能也能用计算属性或者函数调用的方式来实现。Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化。

2023-03-10 01:03:24 566 7

原创 深入理解JavaScript的事件冒泡与事件捕获

JavaScript中提供了很多操作DOM的API。事件冒泡和事件捕获是指浏览器中处理DOM元素上事件的两种不同方式。事件冒泡和事件捕获都是JavaScript事件模型中的一部分,可以用来处理事件。对于这个问题,在实际开发中,并不是非常重要,因为在工作中我们基本上不会直接操作DOM,为了高效一般都是通过Vue、React这些框架,所以关于事件处理程序的一些坑直接就被避免了!!!但是,多了解一点是没有坏处的,毕竟面试会考~

2023-03-09 01:29:40 4448 1

原创 【Vue】Vue常见的6种指令

指令(Directives)是vue 为开发者提供的模板语法,用于辅助开发者渲染页面的基本结构。vue 中的指令按照不同的用途可以分为如下6 大类① 内容渲染指令② 属性绑定指令③ 事件绑定指令④ 双向绑定指令⑤ 条件渲染指令⑥ 列表渲染指令指令是Vue开发中最基础、最常用、最简单的知识点。Vue的指令都是以 "v-" 为前缀的,指令是附加到 HTML 元素的特殊属性,这些属性可以更改行为,并基于 DOM 的表达式值提供对DOM 的控制。

2023-03-06 18:47:24 3837

图灵商城项目源码(含视频资料)

图灵商城是一个前后端分离的项目 前端采用Vue,后端使用了SpringBoot、MySQL、Redis..... 项目架构如下:https://www.processon.com/view/link/600a81ab5653bb1d8e0bdab6 核心功能:商品模块、商品管理、商品分类管理、商品类型管理、品牌管理、订单模块、订单管理。 cms_*:内容管理模块相关表(暂不关心) oms_*:订单管理模块相关表 pms_*:商品模块相关表 sms_*:营销模块相关表(暂不关心) ums_*:会员模块相关表 1 src 2 ├── common ‐‐ 用于存放通用代码 3 | ├── api ‐‐ 通用结果集封装类 4 | ├── config ‐‐ 通用配置类 5 | ├── domain ‐‐ 通用封装对象 6 | ├── exception ‐‐ 全局异常处理相关类 7 | └── service ‐‐ 通用业务类 8 ├── config ‐‐ SpringBoot中的Java配置 9 ├── domain ‐‐ 共用封装对象 10 ├── generator ‐‐ MyBati

2023-04-11

基于SpringBoot的宿舍信息管理系统

基于SpringBoot的宿舍信息管理系统 宿舍管理系统,分为系统管理员与学生两种角色; 系统管理员主要功用包括: 系统管理:用户列表、角色与权限; 学生管理:学生列表、教学班级; 宿舍管理:寝室列表、寝室类型; 入住管理:住宿申请、宿舍分配详情; 使用技术: (1)Spring Boot v2.3.1 (2)Spring Data JPA 的 hibernate完成 (3)shiro 用于受权与认证 (4)Thymeleaf+html 效劳器端模板引擎 (5)layui 规划前端界面 (6)jQuery 简化Dom操作与Ajax恳求

2023-02-18

Java大作业 餐厅点餐系统-华广

Java大作业,华南理工大学广州学院,期末大作业,有GUI!

2022-01-13

操作系统大作业.zip

在Linux上的操作系统大作业,华南理工大学广州学院操作系统大作业

2022-01-13

空空如也

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

TA关注的人

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