自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 迪米特法则 (Law of Demeter, LoD)

迪米特法则(LoD)又称最少知识原则,强调软件实体应减少与其他实体的直接交互,仅与"朋友"对象(如自身成员、参数对象等)通信。该法则通过限制通信宽度和深度来降低耦合度,提高模块独立性,但过度使用可能导致中介类过多。实现时需创建弱耦合类、最小化成员访问权限、减少对象引用,并通过中介者模式等封装间接调用。如在GUI开发中引入中间类协调控件交互,或在学生-课程系统中通过Course封装对Teacher的访问。设计时应权衡法则应用,结合其他设计原则(如单一职责、开闭原则)构建高内聚低耦合的系统。

2025-05-27 20:30:12 794

原创 依赖倒置原则 (Dependency Inversion Principle, DIP)

依赖倒置原则(DIP)提倡高层与低层模块都应依赖抽象,而非具体实现。其核心在于面向接口编程,通过依赖注入实现松耦合。该原则能提高系统稳定性、降低耦合度,增强可扩展性。典型实现包括:定义抽象接口、通过构造器/Setter注入依赖、避免具体类派生等。

2025-05-27 20:27:27 487

原创 接口隔离原则 (Interface Segregation Principle, ISP)

接口隔离原则(ISP)强调使用多个专门的接口,而不是单一的总接口,以确保客户端不依赖不需要的接口。该原则要求将大接口拆分为更细小的接口,每个接口承担单一角色,避免实现类被迫实现无用方法。接口隔离原则与单一职责原则不同,前者关注接口依赖的隔离,后者关注类的职责单一。遵循接口隔离原则可以提高系统的灵活性、可维护性和内聚性,减少代码冗余和耦合性。实现时,接口应尽量小且服务于单一子模块,为依赖接口的类定制服务,避免“胖接口”问题。

2025-05-23 20:25:50 1056

原创 里氏替换原则 (Liskov Substitution Principle, LSP)

里氏代换原则(LSP)是面向对象设计中的一个重要原则,它指出在软件中,任何基类对象都可以被其子类对象替换,而不会引发错误或异常。这一原则强调了继承的优点,如代码共享、重用性和可扩展性,同时也指出了继承的缺点,如降低代码灵活性和增加耦合性。LSP通过确保子类能够透明地替换基类,帮助克服这些缺点,是实现开闭原则的关键手段之一。

2025-05-23 20:23:05 450

原创 开闭原则 (Open/Closed Principle, OCP)

开闭原则是面向对象设计中的一个重要原则,强调软件实体应对扩展开放,对修改关闭。这意味着在需求变化时,应通过扩展而非修改现有代码来实现新功能,以减少引入错误和重构的风险。通过抽象化设计,如使用接口或抽象类,可以将系统的稳定部分与可变部分分离,从而在不改动原有代码的基础上增加新功能。例如,在图形绘制系统中,通过定义一个抽象图形类,并让具体图形类继承它,可以在不修改渲染器代码的情况下添加新的图形类型。这种设计提高了代码的复用性和维护性,符合面向对象开发的要求。

2025-05-22 18:31:11 932

原创 单一职责原则 (Single Responsibility Principle, SRP)

单一职责原则(SRP)是面向对象设计中的一个重要原则,它规定一个类或接口应该只有一个引起它变化的原因,即只负责一个功能领域中的相应职责。这一原则的核心在于通过职责的分离来降低类的复杂性,提高代码的可读性、可维护性和系统的扩展性。例如,在设计电话功能时,将协议管理和数据传送两个职责分别封装在不同的接口中,可以避免因一个职责的变化而影响到另一个职责的正常运作。同样,在方法设计上,也应确保每个方法只完成一个明确的任务,避免职责混淆。通过遵循单一职责原则,可以有效减少类之间的耦合,降低系统变更带来的风险。

2025-05-22 18:28:52 790

原创 从0到1搭建一个vue项目(超详细步骤版)

本文详细介绍了如何从零开始搭建Vue.js开发环境并创建Vue项目。首先,需要安装Node.js 16.0以上版本,并验证安装是否成功。接着,全局安装Vue CLI工具,并检查安装状态。然后,通过命令行创建Vue项目,选择手动配置并设置Vue版本、路由历史模式等选项。项目创建完成后,可以通过命令行启动项目,并在浏览器中访问。最后,提供了关闭项目的命令。整个过程涵盖了从环境准备到项目启动的完整步骤,适合初学者快速上手Vue.js开发。

2025-05-15 18:05:49 899

原创 芋道项目中开启使用微信支付提示“无可用的平台证书”,请在商户平台-API安全申请使用微信支付公钥”

芋道框架提供统一的支付中心,简化了微信、支付宝等支付渠道的接入过程。然而,在微信小程序支付中,芋道框架尚未更新以支持微信支付V3的新要求,即使用微信支付公钥而非平台证书进行验签。本文介绍了如何通过修改芋道框架中微信支付抽象类的doInit方法,使其支持微信支付公钥验签。修改后的方法直接配置了支付相关的密钥和证书路径,避免了硬编码的问题。尽管此方法可临时解决支付问题,但后续仍需优化以避免在代码中直接暴露敏感信息。

2025-05-10 17:25:51 663 1

原创 芋道uniapp用户端

因为前段时间需要使用芋道的用户端,却发现现在只有uniapp管理端,而没有uniapp用户端。为了方便日后的使用,我利用空余时间开发了一个uniapp用户端。这个用户端通过调用芋道后端的接口来实现现有的用户端功能。目前用户端仍在不断完善中,欢迎大家使用并给予支持,也欢迎给项目点个star。

2025-03-24 21:29:13 384

原创 芋道生成代码后引入报错:java: 程序包jakarta.validation.constraints不存在

在芋道引入生成的代码后,出现了这个错误“java: 程序包jakarta.validation.constraints不存在”,本来以为是没有引入这个依赖,发现引入依赖后又出现的新的错误。突然想起会不会是因为jdk版本问题,因为芋道的master分支是jdk8的,发现切换jdk后,还是这个问题。然后去拉代码的地方发现文档上写的是springBoot2.7,springBoot2是不支持这个jakarta的,只有springboot3才支持jakarta。把生成代码中的所有的jakarta改为javax。

2025-03-20 21:36:12 531

原创 芋道打包时报错:缺失@unocss插件

在遇到打包时,报这个错误,提示构建失败是因为 ESLint 在加载 @unocss 插件时,找不到 @unocss/eslint-plugin 模块。解决办法:安装缺失的依赖:保证@unocss/eslint-plugin已经被正确安装,使用以下命令安装:(如果使用pnpm,需要确保node的版本在18以上)

2025-03-06 15:27:01 936 4

原创 芋道——在启用商城时报错:Could not find artifact cn.iocoder.boot:yudao-module-member-api:pom:2.4.1-jdk8-SNAPSHOT

最近在学习芋道的支付这一模块,发现在启用商城系统时,报了这个错误:Could not find artifact cn.iocoder.boot:yudao-module-member-api:pom:2.4.1-jdk8-SNAPSHOT in huaweicloud (https://mirrors.huaweicloud.com/repository/maven/)在issue中也翻了好久都没有解决这个问题,包括翻阅其他文章也都没有给出这个问题的方案。

2025-02-25 17:58:49 969 6

原创 Spring全局异常处理

System.out.println("全局异常捕获:"+e);return "全局异常捕获,错误原因:"+e.getMessage();/*错误码*//*错误描述信息*/// 数据操作错误定义SUCCESS("2000", "成功!"),BODY_NOT_MATCH("4000","请求的数据格式不符!"),SIGNATURE_NOT_MATCH("4001","请求的数字签名不匹配!"),NOT_FOUND("4004", "未找到该资源!"),

2025-02-20 16:43:20 488

原创 微信JS-SDK使用权限签名(Java实现)

微信JS-SDK 是微信公众平台 面向。

2025-02-07 16:07:46 657

原创 如何实现uniapp分享到微信,然后通过h5页面跳转到app内

项目背景:uniapp开发的app(Android和ios),需要将话题分享到微信内,再通过点击微信内的链接打开一个h5页面,跳转到app内。如果已安装则打开app,未安装则跳转应用宝,在ios下应用宝会自动跳转App Store。

2025-02-07 16:00:23 2445 3

原创 如何将DeepSeek部署到本地电脑

DeepSeek爆火,如何免费部署到你的电脑上?教程来了,先在你的本地电脑上安装Ollama,然后在Ollama搜索选择DeepSeek模型,即可成功在你的本地电脑上部署DeepSeek。

2025-01-29 20:54:43 24104 23

原创 使用插件SlideVerify实现滑块验证

作者。

2025-01-21 22:42:36 759

原创 在Vscode中,使用Shift + Alt + F导致本来一行的代码变成多行,如何解决这个问题?

进入设置页面之后,我们打开搜索,然后搜索一下的代码在,具体我会给出代码,注意在操作之前,请先对照你是否安装了Vetur插件,如果你没安装的话,这篇博客其实你并没有看下去的必要了,但是我相信,每个学Vue的同学都或多或少的安装了这个插件,毕竟他确实好用。如果你上边代码和我的不一样很正常,你只需要做的就是将上边代码,放在上图中的红色框框中,就基本完成了。之后去测试Shift+Alt+F,发现代码大多数代码由多行已经变为一行了,但是仍然存在多行的现象,但是总体来说,还是不错了!需要记得一定配置完要。

2025-01-18 20:51:53 359

原创 uniapp下的IOS隐私信息访问的许可描述

定位(iOS11.3及以上版本) NSLocationAlwaysAndWhenInUseUsageDescription。定位(使用时获取地理位置)NSLocationWhenInUseUsageDescription。相册(保存图片到相册) NSPhotoLibraryAddUsageDescription。定位(持续获取地理位置)NSLocationAlwaysUsageDescription。相册(访问) NSPhotoLibraryUsageDescription。

2025-01-09 21:04:59 719

原创 macOS 版本对应 Xcode 版本,以及 Xcode 历史版本下载

点击将直接转至苹果官网下载。注:当前页面的所有Xcode下载链接均为。

2025-01-09 14:54:25 7192

原创 【小程序开发】解决 HBuilder X 提示“本项目类型无法运行到小程序模拟器”

今天在hbuilder引入一个项目时,准备将该项目在微信开发者工具上运行时,发现提示“本项目类型”,如何解决这个问题?然后再去运行菜单,运行到小程序模拟器,就出现各个开发者工具列表了。这样导入会导致hbuilder无法正常识别该项目类型。第二:右键该项目,点击重新识别项目类型。点击之后,会提示项目识别成功!

2025-01-01 19:40:09 1635

原创 八大排序——直接插入排序

插入排序是一种简单直观且稳定的排序算法。它在处理小规模数据或部分有序的数据时表现良好,而且作为在线算法具有独特的优势。虽然它的平均时间复杂度为 O(n^2),不适合大规模数据排序,但在某些特定场景下仍然很有用。插入排序的思想也被应用在一些更高效的排序算法中,如希尔排序。理解插入排序的工作原理对于深入学习更复杂的排序算法很有帮助。在实际应用中,需要根据数据的特性和规模来选择合适的排序算法,插入排序在处理小规模或近乎有序的数据时仍然是一个不错的选择。

2024-12-29 21:14:29 469

原创 八大排序——冒泡排序(Java实现)

冒泡排序是一种简单直观的排序算法,它通过相邻元素之间的比较和交换来实现排序。虽然它在效率上不如其他排序算法,但在某些特定场景下仍然有其应用价值。在实际应用中,我们应该根据具体需求和数据特点选择合适的排序算法。同时,我们也可以通过一些优化策略来提高冒泡排序的效率,如标记交换和鸡尾酒排序等。参考链接:https://blog.youkuaiyun.com/qq_41256535/article/details/139484533。

2024-12-29 20:48:06 842

原创 八大排序——快速排序(java实现)

有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列中所有比基准数大的数放在6的右边,比基准数小的数放在6的左边,类似下面这种排列:在初始状态下,数字6在序列的第1位。

2024-12-28 23:01:35 718

原创 HTML<select>标签有关的定义和属性

select>元素用于创建按下拉列表。元素最常用于表单中,用于收集用户输入。提交表单后,需要将name属性引入表单数据(如果省略name属性,下拉列表中的数据将不会被提交)。元素内的标签定义下拉列表中的可用选项。需要使用id属性将下拉列表与标签(lable)相关联。tip:始终添加标签以获得最佳可访问性实践。

2024-12-28 22:25:46 956

原创 可搜索的下拉选择框:filterable属性详解

在前端开发中,下拉选择框(Dropdown Select)是一个常见的UI组件,它允许用户从一组预定义的选项中选择一个或多个值。然而,当选项数量较多时,手动查找特定的选项可能会变得繁琐。为了解决这个问题,许多现代前端框架和UI库提供了可搜索的下拉选择框功能,通常通过。

2024-12-22 19:10:49 1036

原创 JavaScript 中的 `parseInt()` 函数详解

在 JavaScript 编程中,parseInt()函数是一个非常实用的工具,它允许我们将字符串转换为整数。这个函数在处理用户输入、数据格式化以及进行数学计算时非常有用。本文将详细介绍parseInt()函数的用法、特点以及一些常见的陷阱。

2024-12-22 19:03:47 1213

原创 【报错】node:internal/modules/cjs/loader:936

当执行npm run dev后,出现下面错误这个错误一般是由于Node.js无法找到所需的模块而引起的,解决此问题的一种方法就是重新安装所需的模块。

2024-12-21 23:28:40 1593

原创 如何使用nvm来管理node版本

使用nvm来管理node版本,需要先把之前下载的node删除干净,把相关的文件夹也要删除nvm(node.js version management),是一个nodejs的版本管理工具。nvm和n都是node.js版本管理工具,为了解决node.js 各种版本存在不兼容现象 可以通过它可以安装和切换不同版本的node.js。【可同时在一个环境中安装多个node.js版本(和配套的npm)】

2024-12-21 11:31:25 643

原创 node版本过高导致vue-cli项目无法运行(Error: error:0308010C:digital envelope routines::unsupported )

由于node版本过高,导致vue-cli项目运行报错。

2024-12-21 11:29:26 1195

原创 如何通过云平台创建SpringBoot项目框架

♥️坚持分析平时学习到的项目以及学习到的知识,和大家一起努力呀!!!🎈🎈加油!加油!加油!加油在一次创建springboot项目时发现社区版的idea并不能够直接创建springboot项目,需要安装一定的插件才可以创建springboot项目。但是感觉有点麻烦,所以查询资料得知可以在云平台上直接创建springboot项目,非常方便👍🏻。

2024-12-20 13:37:03 233

原创 VMware16安装macOS12【详细教程】

VMware workstation pro 16 (试用30天,密钥可以单独去查,也可以看评论区)macOS 12 镜像安装包unlocker工具。用于解锁VMware中的mac系统安装功能。

2024-11-24 22:15:44 2843

原创 DTO和VO的区别及使用场景详解

DTO(Data Transfer Object)和 VO(Value Object)都是一种设计模式,用于封装数据和提供服务。VO(View Object):视图对象,专门用于前端展示层,专注于表示某个具体的值或对象的对象,包含业务逻辑;VO的作用是将一组数据以适合特定用户界面(UI)的形式封装起来,确保数据的呈现既符合设计要求也满足用户体验标准。例如我们有一个电子商务网站,其中产品详情页需要显示产品的名称、价格、库存、图片等信息。VO会将这些信息以最优化的方式组织起来,供前端展示。

2024-11-23 20:29:31 1598

原创 在uniapp中ios打包的时候报错 profile文件中没有配置“Associated Domain”能力

使用的功能模块要求开启“Associated Domain”能力,应用profile文件中没有配置。请到苹果开发者网站开启应用的“Associated Domains”,重新生成profile文件,再用新的profile文件提交云端打包。

2024-11-22 08:47:46 526

原创 IOS证书获取(证书profile文件,p12私钥证书,证书私钥密码,Bundle ID)

当我们在开发一个应用APP时需要真机测试,或者上架到对应的应用市场,这时就需要 App打包,那么打包时就需要Bundle ID、证书私钥密码,证书profile文件,私钥证书。这些资料均需要在苹果开发者中心申请(https://developer.apple.com/cn/develop)✨首先登录苹果开发者中心,找到证书选项点击进去就可以进行相关证书申请了(Mac和window电脑都可以登录获取,只是在某些证书需要Mac获取)

2024-11-21 22:14:45 2190

原创 VM虚拟机装MAC后无法联网,如何解决?

把这两个服务打开,专一般问题就出现在这里,服务没开启。(注意将vmware开头的四个都打开)✨在vm虚拟机上,给虚拟机MacOS设置网络适配器。选择NAT模式用于共享主机的IP地址。好了,目前已经可以上网了,可以去浏览器中尝试下,不需要重启虚拟机。✨在MacOS设置中设置网络 以太网 使用。✨回到本地电脑上,打开。

2024-11-21 21:26:14 3673

原创 在云服务器上宝塔安装流程【超详细】

服务器安全组添加8888端口(你生成对应的默认端口)规则,如果放开这个端口号,则不能访问。如果出现了“请输入命令编号:”直接输入14查看面板的默认信息,查看账号密码和你当前输入的是否有错。上图中的端口一般默认是8888,但我生成的并不是,这个没有什么影响,是官方为了安全随机生成的。随后下面会生成新的用户名和密码(testpasswd),重新登录就可以登录成功了。下载(百度上也有很多,这里不在写了),Xshell运行命令安装即可。登录宝塔面板,在浏览器地址栏中输入刚才所生成的外网面板地址.

2024-11-18 14:56:43 1006

原创 在云服务器上安装配置JDK

配置环境变量的步骤,安装12行代码打开配置文件,将输入法切换到英文,输入小写的“i”把光标移到最底下,将两条export命令复制粘贴到最后面,如下图所示,粘贴完成之后,按Esc 再按英文状态的“:wq” 保存退出。链接:https://pan.baidu.com/s/1WqNCR7_Wa43IQb0GSfNf2Q?通过百度网盘分享的文件:zulu8.74.0.17-ca-jdk8.0.392-linux_x...输入source /etc/profile 回车后,输入javac,如图所示。

2024-11-17 21:15:49 332

原创 ThreadLocal

ThreadLocal叫做线程变量,意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。ThreadLocal 是Java中的一个类,它提供了一种线程局部变量的机制。

2024-11-16 15:00:41 484

原创 Spring Task详细讲解

Spring Task是Spring框架中非常强大且灵活的任务调度工具。它提供了简单易用的注解和配置方式,支持基于cron表达式的定时任务调度和异步任务处理。通过合理配置和使用Spring Task,开发者可以轻松地实现各种复杂的定时任务需求。

2024-11-13 22:04:01 1232

空空如也

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

TA关注的人

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