自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

积木成林,聚沙成塔

记录一些学习的笔记,日常问题处理方案等

  • 博客(95)
  • 收藏
  • 关注

原创 【MongoDB】数据的自动过期,TTL索引

在近期的工作中,使用了MongoDB来保存了一些日志数据,但是这些日志数据具有一定的时效性,也就是按照业务的需要,保存xx天即可,在超过了这个时间之后,需要删除过时的日志。按照之前的做法,可以使用定时任务,例如:Spring的定时器,xxl-job等工具,在每天凌晨的时候删除数据,这种方法虽然可行,但是需要额外的编码工作。那有没有一种方式能够简单的搞定过期数据的清理呢?当然,MongoDB提供了一种TTL索引的机制,可以非常方便的处理这种需求,下面是官方文档,有阅读能力的同学可以直接看这个文档。

2024-04-18 15:19:17 618

原创 【设计模式】中介者模式的应用

中介者模式(Mediator Pattern)是一种行为型设计模式,它用于解决对象间复杂、过度耦合的问题。当多个对象(一般是两个以上的对象)之间存在复杂的相互关联和直接通信时,中介者模式通过引入一个新的中介对象来封装和集中处理这些对象间的交互逻辑,从而降低对象之间直接耦合。说的再具体一点,就是原本相互依赖的对象(通常称为同事类或者参与者)不直接相互引用,而是通过中介者对象进行交互。每个对象都将请求委托给中介者,由中介者决定如何分发这些请求以及如何协调各个对象的行为。

2024-03-28 12:01:37 1035

原创 【效率提升】IDEA中书签功能的妙用

经常会遇到由于业务复杂、代码分布太零散等原因导致的屏幕不够用的情况。尤其是在多个类之前来回切换想要对比某一些业务流程的时候,总是会因为找代码位置而打断一部分思路,非常难受。在维护一个系统的时候,经常会翻看某些常用的代码逻辑,但每次都需要从流程入口开始一步一步的向下点击才能找到位置,这个也比较麻烦。在一次偶然间发现了IDEA的书签功能之后,发现这个功能可以完美的解决上述的问题,接下来介绍一下书签功能的使用方式。

2024-03-22 11:01:53 1330 1

原创 【设计模式】享元模式的使用场景及与其他共享技术的对比

享元模式(Flyweight Pattern)是一种非常常用的结构型设计模式,通过共享对象的方式,减少系统中的重复对象,提高内存使用效率。本文主要讲了享元模式的概念、使用场景以及与其他技术的对比。在使用方式上,与缓存、池化技术是高度类似的,都是创建好对象并存储起来,在后续想要使用的时候直接从存储的数据结构中获取,而不用重新创建。它与缓存、池化技术之间的区别,更多的是在于使用目的上的区别,只要能判断出,当前的对象是在通过共享对象的方式,减少系统中的重复对象,提高内存使用效率。

2024-03-11 17:48:46 905

原创 【设计模式】使用门面模式简化接口的复杂度

门面模式(Facade Pattern)又叫做外观模式,它通过为子系统提供一个统一的高层入口的方式,达到简化复杂系统的使用以及降低客户端与子系统之间的耦合度的效果,是一种很常用的设计模式。看一下门面模式的官方定义:翻译过来就是说,门面模式提供一个上层的接口,对子系统中的多个接口做一个统一的入口,让子系统能够更容易被使用。也就是说,如果你曾经对复杂的方法做过一定的封装,对客户端提供一个调用更简单的高层接口(或方法),那么你就已经使用过门面模式了。门面模式是迪米特法则。

2024-02-27 14:01:45 1060

原创 【设计模式】使用适配器模式做补偿设计

适配器模式是一种结构型设计模式,它提供了一个中间层,通过这个中间层,客户端可以使用统一的接口与具有不同接口的类进行交互,也就是说,将一个接口转换成客户期望的另一个接口,使得原本不兼容的接口能够协同工作。举个现实中的例子,我们现在的很多轻薄笔记本为了减少厚度,一般不会设计网线的接口,或者说在笔记本上的可以插线的接口很少,这时候使用到的拓展坞就可以视为是一种适配器。值得一提的是,与其他模式有点不同的是,适配器模式是一种补偿模式,主要用于解决现有的设计或实现与需求不匹配的问题,是在系统。

2024-02-21 09:33:29 1372

原创 【设计模式】使用装饰器模式对价格计算功能做灵活的拓展

装饰器模式(Decorator Pattern)是一种结构型的设计模式,使用组合的方式来替代了继承,它的核心作用是在不修改对象本身的基础上动态地给一个对象添加新的职责或功能,装饰器类一般与被装饰的类有同一个父类(或父接口),其后缀名一般Decorator或者Wrapper。讲到这里,如果熟悉设计模式的同学肯定能发现,这个定义与上一篇设计模式的文章《代理模式的实现方式与使用场景》中提到了代理模式是高度类似的,事实上也确实如此,都在一定程度上对原始对象的行为进行某种形式的包裹或扩展。

2024-02-18 09:07:57 998

原创 【效率提升】自定义配置IDEA中的Java注释模板

先试用创建一个模板分组,写一个好听的名字,然后选中刚刚创建好的分组通过创建一个模板。本篇讲解了如何配置类的注释模板和通过代码模板来配置方法注释模板,需要注意缩写、模板、触发键、变量的配置。其中,变量可以使用IDEA中内置的表达式来匹配变量值,当默认的表达式不满足要求时,也可以使用groovy脚本来做一个自定义的函数表达式满足需求。后续如果想要配置其他自定义模板时,也可以参考这套配置方法。

2024-02-18 09:07:22 1184

原创 【效率提升】专注力训练+番茄工作法,拯救工作学习的效率

本文讲述了专注力的丢失和专注力的训练方法,然后借助番茄工作法这个生产力工具来完成对工作学习的专注。但工具只能起到辅助作用,提供一个仪式感和心理暗示,在有一定的基础之后,还是得按照专注力的训练方式对自己做一个长期的投资。减少干扰:尽可能的创建一个整洁的工作环境,例如清理电脑桌上不相干的杂物,在工作时关闭电脑上的微信等社交媒体,将手机放到不容易关注的地方。设定明确的目标:按不同的时间维度制定计划,即年、月、周、天,从笼统到明确,每天在实施计划的时候还可以将一块大的任务拆分成不同的小任务来完成。定期休息。

2024-01-29 16:47:49 858

原创 【MySQL实践】一个隐蔽的问题导致 Field ‘xxx‘ doesn‘t have a default value

就像标题上说的,这个问题的隐蔽之处在于,即使是将字段的默认值drop了,在各类可视化界面中也看不出来,例如下图红框中的字段,其中name没有默认值,age字段有默认值null,但是根本看不出来:这种情况可以,可以使用`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',`name` varchar(64) COMMENT '名称',`status` tinyint(4) NOT NULL COMMENT '状态',

2024-01-24 15:45:55 944

原创 【设计模式】代理模式的实现方式与使用场景

本篇主要讲述的是代理模式的实现方式与使用场景,先介绍了代理模式的概念和作用,然后从静态代理开始讲述了代理模式的实现方式,其中静态代理的使用频率并不高,动态代理则相反,使用频率非常高,需要重点掌握。之所以花了一部分篇幅讲解静态代理,主要是能够直观的感受到代理模式的类结构,后续动态代理生成的代码与静态代理的也大同小异。我们在鉴权、监控、统计、日志、事务等多种场景中都可以使用动态代理模式。在使用代理模式的时候需要注意接口实现与继承实现实现方式支持代理public支持protected支持default。

2024-01-21 20:25:25 1245

原创 【设计模式】什么场景可以考虑使用简单工厂模式

简单工厂模式封装对象创建过程: 将对象的创建过程封装工厂类中,使用者无需了解具体产品的创建细节,只需调用工厂类提供的静态方法即可得到所需的产品对象。这样可以隐藏产品类的具体实现,降低耦合度。控制逻辑集中: 将复杂对象的创建对象逻辑集中在工厂类中,如果需要修改或扩展产品类型时,只需要修改工厂类中的代码。这使得添加新产品或者调整产品创建逻辑更加方便、集中管理,也有利于系统的维护和版本升级组合其他模式满足特定的需求: 在某些应用场景中,如根据参数动态选择不同类型的对象实例化,简单工厂+单例。

2024-01-14 22:15:43 1048

原创 【UML建模】部署图(Deployment Diagram)

基本的部署图包含3种图标,即节点、组件、连线,有时候为了做区分还会加入构件图标,只需要按照步骤明确自己想表达的信息,将这几个简单的图标进行组合使用,就可以得到一个从宏观层面观看的信息丰富的部署图。需要注意的是:不建议在部署图上描述过于细节的信息,整个项目的全貌可以借助不同的uml图例在多个切面维度上进行描述。

2024-01-05 18:05:07 1153

原创 【设计模式】单例模式、“多例模式”的实现以及对单例的一些思考

单例模式是设计模式中最简单的一种,对于很多人来说,单例模式也是其接触的第一种设计模式,当然,我也不例外。这种设计模式在学习、面试、工作的过程中广泛传播,相信不少人在面试时遇到过这样的问题:“说说你最熟悉的集中设计模式”,第一个脱口而出的就是单例模式。所谓的单例模式,就是在一定的作用范围内保证只有一个实例单例模式的代码如何编写?是否需要严格的禁止单例被破坏?饿汉式和懒汉式应该如何选择?单例模式存在什么问题?线程内单例和进程间单例如何实现?什么叫做“多例模式”?单例模式的编写方式。

2023-10-16 17:17:23 845

原创 【设计模式】使用建造者模式组装对象并加入自定义校验

在我刚入行不久的时候就听说过建造者模式这种设计模式,当时只知道是用来组装对象,使用起来和先new出对象再一个一个的set字段值也差不多,没有去深究这种设计模式。后来随着在业务中写的代码越来越多,同时也去查阅了一些资料,慢慢的对这两者的区别有了一点理解。于是对为什么要用建造者模式,以及相对于直接set的优劣势做一个简单的梳理。本篇描述了如何实践建造者模式,同时也聊到了为什么要使用建造者模式。简单的说,就是建造者模式提供了一种能力,让我们在自由的组装构建对象的同时,给到一定的约束。

2023-10-11 14:37:29 677

原创 【设计模式】使用原型模式完成业务中“各种O”的转换

原型模式是一种非常简单易懂的模型,在书上的定义是这样的:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。通俗的讲,就是有一个现成的对象,我们通过复制或拷贝这个对象的方式来创建一个新的对象,这就是原型模式。那么,我们为什么需要通过拷贝来创建对象呢?程序运行效率和开发效率程序运行效率:如果对象的创建和初始化的代价比较大,创建比较繁琐,例如需要从数据库、RPC、网络等获取一些数据才能完成创建,这时候使用原型模式拷贝出一个对象无疑是效率更高的做法。开发效率。

2023-10-08 18:01:31 521

原创 【SpringBoot实践】事务和事务传播机制&失效原因&正确使用事务的建议

我们在开发工作中经常会使用到事务,来保证数据库做增、删、改操作时的数据一致性,在使用Spring来处理事务的时候,如果没有正确的使用就很易容出现事务失效或者事务传播失效的问题,导致预期结果与实际结果不符。为了彻底解决这种“一不小心”出现的事务失效问题,今天就结合理论和代码实践,验证一下什么情况下会导致事务失效,并总结如何正确的使用事务。注:本篇验证的事务机制为使用注解的声明式事务。被声明的方法是非public方法、final方法、静态方法对象内部自调用异常被业务代码逻辑捕获,没有向上抛出。

2023-09-29 10:00:00 272

原创 【MySQL实践】使用FIND_IN_SET查询逗号隔开的数据&Mybatis-Plus的实现方式

项目中有一张表中有这么一个字段,这个字段的值是通过逗号隔开的数据,例如:`1,2,3,4,5`,并且在存储的时候这些数字并不是有序的,有可能是:`2,3,5,1,4`等等,当然也可能不完全是5个数字,也可能是:`1,5`,`2,3,5`等等。对于逗号隔开的数据,可以通过函数来进行匹配,其他符号隔开的数据可以通过like函数来进行拼接。

2023-09-27 16:09:51 3279

原创 【设计模式】使用桥接模式拆解短信发送中的类型与渠道

桥接模式的主流定义有两种,第一种是GoF的定义:将抽象和实现解耦,使得两者可以独立地变化。通过这句话,我们能够得到的信息是需要降低抽象和实现和依赖紧密程度,以达到两者之间可以独立扩展,互不影响的效果。在大多数情况下,抽象一般指的是接口和抽象类,实现就是实现类。在桥接模式中的抽象和实现,无所谓接口、抽象类还是实现类的差异。桥接模式抽象更多的是提供一定的约束,比如一个固定的执行流程,在这个流程中会定义出一些可以自由替换的口子,而实现就是去适配这些口子,让一个固定的执行流程可以得到不同的执行结果。

2023-09-12 15:37:14 414

原创 【设计模式】组合模式实现部门树实践

几乎在每一个系统的开发过程中,都会遇到一些**树状**结构的开发需求,例如:组织机构树,部门树,菜单树等。只要是需要开发这种树状结构的需求,我们都可以使用组合模式来完成。本篇将结合组合模式与`Mysql`实现一个部门树,完成其增删改和树形结构的组装。

2023-09-08 18:19:17 821

原创 EasyExcel+POI制作带有有效性校验及下拉联动的Excel模板

名称管理器、indirect公式、数据有效性,我这里使用的是WPS,所以下面会通过WPS来进行举例,微软的Office在类似的位置也有一样的功能,使用Office的同学可以自行研究一下。名称管理器类似于一个数据字典的功能,有名称(key)和引用位置(value的引用)两个主要字段,所谓的引用位置就是需要引用的单元格坐标,单元格可以是1个,也可以是1行或者1列。在当前的需求中姓名和id是一一对应的indirect公式这个公式可以用来引用名称管理器的配置,通过=indirect(名称)数据有效性。

2023-08-23 11:37:41 2464 5

原创 【设计模式】订单状态流传中的状态机与状态模式

状态模式一般是用在对象内部的状态流转场景中,用来实现状态机。什么是状态机呢?状态机是对状态转移的抽象,由事件状态动作组成,事件有时候也被称为转移事件或者转移,当事件触发时,可以将状态由一个状态变更为另一个状态,并执行动作。其中,事件和状态是必须存在的,动作可以不要。下面是一张状态图,表达的就是一个状态机的模型。通俗来讲,就是对状态的变更做了一定的限制,不能随意的修改状态,而是只有处于某个特定的状态时,才能变更到另一个特定的状态。

2023-08-18 09:29:22 2112 1

原创 【设计模式】责任链的基本概念及使用Predicate灵活构造校验链

在最近的开发中遇到了这么一个需求,需要对业务流程中的各个参数做前置校验,校验通过才能执行后续的流程。经过一番需求分析后发现,有大量的业务入口需要做的校验是相同的,同时在业务迭代的过程中涉及到的校验规则也会有所增减。所以就必须考虑到代码的复用性和拓展性,决定使用责任链模式来剥离变化。本篇先简单的讲解了责任链模式的概念,通过一个简单的注册用户需求代入了责任链的实现方式,并提出了用责任链是实现校验时灵活的地方。然后针对这种不灵活,通过Java8中的Predicate。

2023-08-08 17:24:51 692

原创 【设计模式】循序渐进的理解观察者模式&Spring事件机制的运用

观察者模式(Observer Pattern)是一种应用广泛的设计模式,有时候也被叫做发布/订阅模式或者监听器模式,如果你用过消息队列或者写过原生JS和JQuery中的Listener的话,对这种模式一定不陌生,接下来你会非常容易理解这种模式,如果没有使用过也没关系可以通过本文来了解一下这种模式的运用。本文中会通过大量的类图来描述观察者模式中的不同角色,对类型不太熟悉的同学可以参考者这篇文章一起看《【UML建模】类图(Class Diagram)》

2023-07-13 11:32:38 691

原创 【设计模式】模板方法与策略模式的结合使用

模板方法是一种非常简单的设计模式,只要能够理解面向对象中的继承与多态就能够理解这种设计模式,我们可以在很多的框架源码中找到它的身影。同时在我们的日常开发中,它一般是用在同类型且不同实现方式的业务逻辑中,抽取公共逻辑,简单的说就是,模板方法经常和策略模式结合使用。《SpringBoot优雅使用策略模式》本篇文章介绍了什么是模板方法、模板方法的简单实现与在SpringBoot中的实现的。然后对比了模板方法与策略模式的类图,发现两者天然就可以结合在一起使用。最后,通过代码实现验证了两者结合使用的可行性。

2023-06-27 16:51:39 2120

原创 【设计模式】SpringBoot优雅使用策略模式

本篇文章主要会描述SpringBoot与策略模式的结合使用,因为不涉及到理论部分,所以在阅读本篇之前,需要对策略模式的理论已经有了一个基本的了解。通过Spring获取接口的实现,并解析实现类上的注解的方式,可以在程序启动时动态的将策略注入到一个Map中,作为策略的容器。使用时传入标识符就可以获取到对应的策略执行了。

2023-06-21 11:58:32 4922 13

原创 【UML建模】状态图(State Machine Diagram)

状态图,又称为状态机图,是一种用于描述对象的生命周期和状态转换的UML图示,它是一种行为图,用于描述对象的状态和状态之间的转换。这里的对象大多数情况是指的类生成的对象,但是有时候也会代表对象、参与者、用例、子系统等。通过状态图可以建立对象状态流转的统一语言,从而让项目成员可以通过更简单、更直观的理解系统的行为和交互(可以想象一下不使用状态图时,通过一大堆的文字对状态的变化进行描述,沟通会变得困难,而且还容易导致各成员对状态的理解不一致),同时,清晰的状态图有利于研发人员更好的设计和实现系统功能。

2023-04-26 11:18:44 10056 1

原创 【SpringBoot实践】Web表单请求或JSON请求的自定义转换器(赋LocalDate、LocalDateTime的通用转换)

自定义反序列化器,除了继承的类不一样,实现方法与上面的Converter/*** LocalDateTime JSON反序列化工具} }/*** LocalDateTime JSON反序列化工具} }/*** LocalDateTime JSON反序列化工具} }/*** LocalDateTime JSON反序列化工具} }JsonParser;import com/*** LocalDateTime JSON反序列化工具。

2023-04-25 11:53:56 2391 1

原创 【UML建模】时序图(Sequence Diagram)

时序图,也称为顺序图,是用来展示对象之间交互关系的一种UML图表,它通过描述在不同时间上发生的对象的动作来帮助开发人员更清楚地理解系统的结构和功能,从而达到优化代码、简化设计、提高软件的质量和效率、帮助团队成员沟通协作等目的。时序图与活动图活动图用于描述系统或软件中的业务流程,强调的是流程步骤。时序图用于描绘多个对象之间的交互行为,强调的是时间顺序。时序图更加贴近于代码的实现逻辑,如果想描述的是多个对象之间的调用、响应、回调等发生的顺序,就可以使用时序图。

2023-04-20 11:57:43 12091 2

原创 【UML建模】活动图(Activity Diagram)

本篇主要是讲述了活动图以及活动图中的常用节点图例,活动图是用例图细节的补充,我们在活动中可以表达的是一个完整的功能流程,通过决策、fork/join等节点展示出条件分支、异步功能特点,并指导研发人员进行代码开发。我们在梳理一条完整的功能链路的时候,使用泳道对活动节点进行分组的方式更佳,但泳道使信息变得丰满的同时,也会增加画图的复杂度以及耗时,所以在画一些相对简单的流程时,可以选择不使用泳道。最后再总结一下本篇文章中需要注意的一些细节点:- 动作节点:表达的是一个具有原子性的动作,描述的文字一定是*

2023-04-08 20:57:20 6895

原创 【UML建模】用例图(Use Case Diagram)

用例图(Use Case Diagram)是UML建模中最重要并且最常用的一种图形,它有着足够良好的抽象,用几组简单的图形就能够描述出应用程序的功能需求,以及应用程序与用户或者与其他应用程序之间的交互关系。因此,用例图常常会在跨部门、跨岗位的合作中出现,作为演示和说明文档的基石,简单的说就是在一个项目中,产品、研发、测试、运维等岗位角色都能看懂并了解业务大致是如何展开的。

2023-04-03 17:51:58 5791

原创 【UML建模】类图(Class Diagram)

在我们的日常学习、工作、考试以及面试的过程中,都会使用到类图,它是一种表示系统中的类、接口、属性和方法等静态结构的图形语言,常用于面向对象的软件设计、分析,对技术实现起到指导作用,是架构师的常用工具之一。通过类图,可以更好地理解系统的结构和设计,提高开发效率和软件质量。对于学习过设计模式的同学来说,肯定会有更深刻的感触,正是因为有类图我们更直观的理解各种模式的实现方式,并按照类图的指导去完成我们自己的设计模式代码。类、属性、方法、访问权限的表示方式类与类之间的关系及其符号表示方式基数的使用。

2023-03-31 10:27:23 7271 1

原创 【Vue3实践】(七)Vue中的全局状态管理 使用Vuex或Pinia管理按钮权限

由于在日常开发中会有一部分前端的开发任务,会涉及到Vue的项目的搭建、迭代、构建发布等操作,所以想系统的学习一下Vue相关的知识点,本专题会依照Vue的搭建、开发基础实践、进阶用法、打包部署的顺序进行记录,同时也会提到一些功能在实际生产环境中的使用。《Vue3搭建、路由配置与基本语法》《响应式变量、双向绑定、计算属性、监听器》《优雅使用VUE3 组件特性:组件定义、组件注册、事件监听、双向绑定》《优雅使用VUE3 组件特性:属性透传、依赖注入、组件插槽、动态组件》《生命周期函数、组合式函数的使用》

2023-03-29 10:13:54 1208

原创 【Vue3实践】(六)Vue3使用vite处理环境变量、打包部署、nginx配置

本篇的主要内容是Vite中环境变量的使用以及打包部署,包含以下关键点:- 环境变量 -通过`.env`文件来划分环境,命名规则为`.env.[mode]` - `vite`指令的默认mode为`development`,`vite build`的默认mode为`production`,可以根据这个默认值来命名 - `.env`文件也可以不加mode,这样的文件在任何情况下都可以被引用,但是优先级低于有`[mode]`的文件 - 如果想让客户端直接使用,`.env`文件中的变量名应该以`VITE_

2023-03-28 11:00:00 14666

原创 【Vue3实践】(五)Vue3中的生命周期函数、组合式函数的使用

本篇主要讲了生命周期函数、组合式函数需要关注以下几点:- 生命周期函数: - 生命周期分为4个阶段:创建、挂载、更新、销毁 - 最常用的钩子函数是`created`和`mounted` - Vue3中`onMounted`处理挂载阶段的钩子函数,通过`setup`处理创建阶段- 组合式函数: - 是使用Vue的组合式API封装的函数 - 与普通函数的区别在于,组合式函数**有状态**,即这个函数中会定义**响应式变量**,参与到组件的生命周期中

2023-03-24 20:39:50 1650

原创 【Vue3实践】(四)优雅使用VUE3 组件特性:属性透传、依赖注入、组件插槽、动态组件

本篇主要讲了VUE3中组件的其他几个特性:属性透传、依赖注入、组件插槽、动态组件。属性透传:可以避免在中间层组件中重复定义这些属性或者方法在子组件中不需要定义props和emits来接收属性和事件依赖注入:更加灵活在子组件,使用父组件提供的属性或方法,即使中间跨越了很多层级与透传的区别在于,不需要中间层级的组件一级一级的透传属性组件插槽:用于插入父组件中的自定义DOM,分为默认插槽和具名插槽具名插槽使用name="xxx"来定义标识符,父组件通过v-slot:xxx或#xxx将DOM插入指

2023-03-22 21:27:23 2132 1

原创 【Vue3实践】(三)优雅使用VUE3 组件特性:组件定义、组件注册、事件监听、双向绑定

本篇主要讲述的是组件的通用功能抽取以及在其他组件中的引入使用,需要注意以下的细节点:- 定义组件:- 编写单独的`.vue`文件- 在这个单独的文件中定义需要接收的属性、函数、事件等,类似于形参- 组件注册:- 注册方式:- 全局注册:通过顶层的`APP`对象进行引入,全局注册的组件,在组件中都可以直接使用- 局部注册:在需要使用到的组件中`import`,只有当前组件可以使用- 父组件引入组件后,在`html`标签中传入实际的属性、函数、事件等,类似于实参- 属性传递- 子组件通过

2023-03-21 17:57:07 1724

原创 【Vue3实践】(二)Vue3开发基础:响应式变量、双向绑定、计算属性、监听器

本篇主要是讲了VUE开发中经常会使用到的响应式变量、双向绑定的使用方式,并举例说明了计算属性和监听器之间的使用差别及各自的作用,有了本篇的基础,已经可以使用VUE做一些简单的开发了。需要注意这么几个细节:- 响应式与双向绑定的联系与区别,`v-model`的作用- 计算属性的使用限制,生成的快照属性不能别其他功能修改- 监听器`watch`与`watchEffect`的区别,`watchEffect`与`computed`的区别- 监听器监听数据源为对象时需要注意两个问题:**深层监听**、`n

2023-03-18 11:55:43 2285

原创 【Vue3实践】(一)Vue3搭建、路由配置与基本语法(模板、条件、循环、事件)

由于在日常开发中会有一部分前端的开发任务,会涉及到Vue的项目的搭建、迭代、构建发布等操作,所以想系统的学习一下Vue相关的知识点,同时也开一个专题记录一下学习笔记以及日常开发中遇到的问题的处理方式。Vue3搭建、路由配置与基本语法响应式变量、生命周期、属性计算、侦听器工具与组件的封装,父子组件的使用环境变量、axios配置与打包部署Vue项目搭建,与Vite的配置应用创建与路由配置基本语法的使用(模板、条件、循环、事件)

2023-03-16 13:39:56 2007

原创 【Maven】(六)详细聊聊 Maven 的生命周期、阶段(phase)、插件目标(goal)

本篇主要讲解的是Maven 通过生命周期阶段与插件目标的绑定来实现项目的构建流程:生命周期有三种,分别是`clean`,`default`,`site`每种生命周期都由多个阶段组成执行构建时,会按照阶段顺序从上到下的执行,但只有绑定了插件目标的阶段才会执行可以在通过``标签引入插件,通过``来定义执行计划,通过``与``绑定阶段与插件模板除了在`pom.xml`中指定阶段与插件目标的绑定关系之外,还可以通过插件的配置文件`plugin

2023-03-12 10:00:00 4142 2

Maven 私服 Nexus 的Unix版本安装包 nexus-3.47.1-01-unix.tar.gz

Maven 私服 Nexus 的Unix版本安装包 nexus-3.47.1-01-unix.tar.gz ,直接从官网下载的,没有任何更改,当官网无法访问时可以从这里直接下载。

2023-02-23

空空如也

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

TA关注的人

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