- 博客(262)
- 资源 (18)
- 收藏
- 关注
原创 解读 Java 经典巨著《Effective Java》90条编程法则,第1条:用静态工厂方法代替构造器
《Effective Java》是 Java 开发领域的一本重要著作,对于 Java 开发人员来说尤为宝贵。作者 Joshua Bloch 在书中深入探讨了 Java 编程中的最佳实践,并提供了大量的示例和建议,旨在帮助开发人员写出更高效、可维护的代码。书中的内容包括了 Java 语言的核心特性和设计模式,涉及到的主题如创建和销毁对象、类和接口的设计、泛型、枚举、并发等。
2024-09-16 17:43:29 1239
原创 解读 Java 经典巨著《Effective Java》90条编程法则,第5条:优先考虑依赖注入来引用资源
Joshua Bloch 在《Effective Java》中提出的第5条编程法则“优先考虑依赖注入来引用资源”着重强调了依赖注入(DI)的重要性,该法则主要关注如何有效地管理类和资源之间的依赖关系。
2024-09-16 17:41:34 1108
原创 Layout 布局组件快速搭建
Layout 布局组件快速搭建:1. 设置主题样式变量2. 封装公共布局组件3. 经典布局4. 水平布局5. 响应式布局6. 搭建 Layout 布局组件7. 添加 Layout 路由配置8. 启动项目
2024-09-13 23:28:46 1735
原创 解读 Java 经典巨著《Effective Java》90条编程法则,第4条:通过私有构造器强化不可实例化的能力
《Effective Java》第三版中的第4条是“通过私有构造器强化不可实例化的能力”。其主要目的是防止类被实例化,从而保证该类只能用于提供静态方法或字段。这个设计模式常用于工具类,比如 `java.lang.Math` 类,因为这些类的实例化没有实际意义,同时避免潜在的错误和不必要的资源开销。
2024-09-13 22:28:08 675
原创 解读 Java 经典巨著《Effective Java》90条编程法则,第3条:用私有构造器或者枚举类型强化Singleton属性
《Effective Java》中的第3条编程法则主要是针对在开发过程如何实现单例模式,作者 Joshua Bloch 在书中给出了3种单例模式的实现方式:私有构造器和公有静态域、私有构造器和公有静态方法、枚举式。
2024-09-12 21:55:30 594
原创 解读 Java 经典巨著《Effective Java》90条编程法则,第2条:遇到多个构造器参数时要考虑使用构建器
《Effective Java》是由 Joshua Bloch 撰写的经典书籍,提供了 Java 编程中的最佳实践和建议。在书中的第2条建议“遇到多个构造器参数时要考虑使用构建器”,主要是为了处理构造器参数过多时的设计问题。这条建议的主要目的是简化构造器的使用,增加代码的可读性和维护性。
2024-09-11 21:46:03 1129
原创 使用 Vue 官方脚手架初始化 Vue3 项目
使用 Vue 官方脚手架初始化 Vue3 项目:1. 安装 Node 环境2. 切换 NPM 镜像源3. 安装 Pnpm 包管理工具4. 使用 Vue 官方脚手架初始化项目5. 认识 Vue 项目目录结构6. 统一包管理器工具下载依赖7. 项目环境变量配置8. 安装 Element Plus9. 集成 sass 配置全局变量10. 清除浏览器默认样式11. 安装 Tailwind CSS12. 封装 SvgIcon 组件13. 安装 Piana 持久化插件
2024-08-20 19:37:44 2219
原创 【并发编程】详解 ReentrantLock:深入剖析 AQS 支撑下的可重入锁机制与实现原理
【并发编程】详解 ReentrantLock:深入剖析 AQS 支撑下的可重入锁机制与实现原理
2024-08-19 21:26:48 2574
原创 【并发编程】线程池的拒绝策略
在 Java 的并发包(`java.util.concurrent`)中,`ThreadPoolExecutor` 提供了四种内置的线程池拒绝策略 (`RejectedExecutionHandler`)来应对线程池达到其容量限制时,采取适当的策略来处理这些额外的任务。
2024-08-19 21:19:02 1048
原创 认识和使用 Vite 环境变量配置,优化定制化开发体验
Vite 是一个现代化的前端构建工具,支持快速的开发和构建过程。在 Vite 中,环境变量起着至关重要的作用,可以根据不同的环境加载不同的配置,方便开发和部署。在你提供的内容中,详细介绍了 Vite 中环境变量的相关内容,包括内置的环境变量、.env 文件的加载规则、业务代码中获取变量的方法、在 HTML 文件中获取变量的方式、在 vite.config.ts 中获取变量的方法等。此外,还介绍了如何自定义变量的前缀以及指定加载 .env 文件目录的方式。
2024-06-17 15:48:39 1634
原创 【优化方案】Java 将字符串中的星号替换为0-9中的数字,并返回所有可能的替换结果
随着星号数量的增加,可能的替换结果数量呈指数级增长,那么这个方法会变得非常耗时。因此,在处理具有大量星号的字符数组时,考虑到时间复杂度的增长,需要优化算法处理。在每个星号位置,我们需要进行 0-9 的循环遍历,因此每个星号位置都有 10 种可能性。将输入的字符串中的星号替换为0-9中的数字,并返回所有可能的替换结果,允许存在多个。我们可以使用递归方式来依次实现将字符串中的星号替换为 0-9 的数字。时,我们会得到 1000000 个结果。),其中 k 是字符数组中星号的数量。
2024-05-05 16:15:54 946 1
原创 【数据脱敏方案】不使用 AOP + 注解,使用 SpringBoot+YAML 实现
【数据脱敏方案】不使用 AOP + 注解,使用 SpringBoot+YAML 实现
2024-05-05 16:15:46 11399
原创 Springboot 使用【过滤器】实现在请求到达 Controller 之前修改请求体参数和在结果返回之前修改响应体
Springboot 使用【过滤器】实现在请求到达 Controller 之前修改请求体参数和在结果返回之前修改响应体
2024-05-05 16:15:38 3989
原创 Gin入门指南:从零开始快速掌握Go Web框架Gin
中间件函数用于记录日志。路由和请求处理:Gin 提供了简单而灵活的路由功能,可以方便地定义不同URL路径的处理函数,并支持 GET、POST 等各种HTTP请求方法。函数用于返回成功结果,它接收 Gin 的上下文对象,以及三个自定义的参数,分别为状态码、提示信息和数据。一般来说,我们需要在处理请求的路由函数中使用 defer 语句将捕获的异常记录下来,所以我们可以通过中间件实现全局的异常处理。参数绑定和验证:Gin 提供了强大的参数绑定和验证功能,可以方便地将请求参数绑定到结构体中,并进行数据验证和转换。
2024-05-05 16:15:02 2117 1
原创 Gitflow:一种依据 Git 构建的分支管理工作流程模式
Gitflow 工作流是一种版本控制流程,主要适用于较大规模的团队。这个流程在团队中进行合作时可以避免冲突,并能快速地完成项目,因此在很多软件开发团队中都被广泛应用。通过使用 Gitflow 工作流,我们可以更好地管理代码的修改、版本的发布和协作,从而提高软件开发的效率和质量。在本篇文章中,我们将模拟一次典型的 Gitflow 工作流流程,让大家更好地理解这个工作流的工作流程和要点。
2024-05-05 16:14:52 3789 1
原创 SpringBoot 使用【AOP 切面+注解】实现在请求调用 Controller 方法前修改请求参数和在结果返回之前修改返回结果
SpringBoot 使用【AOP 切面+注解】实现在请求调用 Controller 方法前修改请求参数和在结果返回之前修改返回结果
2024-05-02 15:16:24 2711
原创 Java 使用 ant.jar 执行 SQL 脚本文件
Java 使用 ant.jar 执行 SQL 脚本文件,很简单。在 pom.xml 中导入 ant 依赖。AntDealSQLUtils 工具类。运行 main 方法。
2024-05-01 08:35:57 2616
原创 使用 Go 语言统计 0-200000 的数字中,哪些是素数?
使用 Go 语言统计 0-200000的数字中,哪些是素数?单循环遍历 1-200000 数字,并判断是否是素数。等待所有 Goroutine 执行完毕。来协调 Goroutine 的执行。创造多个协程处理写入读取通道。
2024-05-01 08:34:58 2424 1
原创 自定义SpringBoot启动图标
在https://www.bootschool.net/网站上复制Ascll艺术字(图)粘贴到banner.txt中保存。在SpringBoot项目的。可以修改颜色,和版本号。
2024-05-01 08:34:51 2256 1
原创 排序——选择排序
每一趟在待排序元素中选取关键字最小的元素加入有序子序列。算法的稳定性:若待排序表中有两个元素。的前面,若使用某一排序算法排序后,的前面,则称这个排序算法是稳定。,其对应的关键字相同即。
2024-04-09 22:11:28 1145
原创 排序——冒泡排序
从前往后(或从后往前)两两比较相邻元素的值,若为逆序(即。算法的稳定性:若待排序表中有两个元素。的前面,若使用某一排序算法排序后,),则交换它们,直到序列比较完。的前面,则称这个排序算法是稳定。,其对应的关键字相同即。
2024-04-02 19:13:38 1230
原创 jQuery图像查看插件Zoom.js
图片点击放大,再次点击或者滚动窗口或者按 ESC 键即可恢复原始大小,非常流畅,使用方法也非常简单,引入zoom.js和zoom.css文件之后,对图片添加。1,将 zoom.js 和 zoom.css 文件引入。2,引入transition.js或者。
2024-03-26 20:05:18 848
原创 一文了解 ArrayList 的扩容机制
ArrayList 还提供了内部存储 List 的方法,它能够完全替代Vector,只有一点例外,ArrayList 不是线程安全的容器。ArrayList 不是线程安全的容器,如果多个线程中至少有两个线程修改了 ArrayList 的结构的话就会导致线程安全问题,作为替代条件可以使用线程安全的 List,应使用。从图中可以看出 ArrayList 是实现了 List 接口,并是一个可扩容数组(动态数组),它的内部是基于数组实现的。指向的数组中的元素复制到新的数组中,新的数组长度为 10,并让。
2024-03-06 20:52:53 513
原创 尚硅谷 Java 基础实战—Bank 项目—实验题目 3
修改 withdraw 方法以返回一个布尔值,指示交易是否成功。修改 Account 类。使用有返回值的方法。
2024-02-21 08:31:34 751
jQuery图像查看插件Zoom.js
2022-04-30
数据结构——单链表(C语言版).zip
2020-11-02
Python GUI实现爆火抖音的弹窗表白.zip
2020-10-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人