当前位置: 首页 > news >正文

Java设计模式之建造者模式:从入门到精通

1. 建造者模式概述

1.1 定义与核心概念

**建造者模式(Builder Pattern)**是一种创建型设计模式,它将复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。

专业术语解释表

术语解释
产品(Product)最终要构建的复杂对象
建造者(Builder)定义创建产品各个部件的抽象接口
具体建造者(Concrete Builder)实现Builder接口,构造和装配各个部件
指挥者(Director)构建使用Builder接口的对象
构建过程分步骤创建复杂对象的过程

1.2 通俗理解

想象你要定制一台电脑(产品),你不会直接去组装零件,而是告诉电脑配置专家(建造者)你的需求:要i7处理器、16G内存、1T固态硬盘等。专家按照你的要求一步步组装,最后交付给你一台完整的电脑。这个过程中,你不需要知道具体如何安装CPU、内存等细节。

相关文章:

Java设计模式之建造者模式:从入门到精通

1. 建造者模式概述 1.1 定义与核心概念 **建造者模式(Builder Pattern)**是一种创建型设计模式,它将复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。 专业术语解释表: 术语解释产品(Product)最终要构建的复杂对象建造者(Builder)定义创建产品各个…...

Faiss 索引深度解析:从基础到实战

在处理高维数据的相似性搜索时,Faiss(Facebook AI Similarity Search)无疑是一款强大且高效的工具。它为我们提供了多种索引类型,适用于不同规模和需求的数据场景。本文将结合代码实例,深入剖析 Faiss 中常见索引的原理…...

Error parsing column 10 (YingShou=-99.5 - Double) dapper sqlite

在使用sqlite 调取 dapper的时候出现这个问题提示: 原因是 在 sqlite表中设定的字段类型是 decimel而在C#的字段属性也是decimel,结果解析F负数 小数的时候出现这个错误提示: 解决办法:使用默认的sqlite的字段类型来填入 REAL描述…...

星云智控:物联网时代的设备守护者——卓伊凡详解物联网监控革命-优雅草卓伊凡

星云智控:物联网时代的设备守护者——卓伊凡详解物联网监控革命-优雅草卓伊凡 一、物联网的本质解析 1.1 什么是物联网? 当卓伊凡被问及”星云智控物联网是干嘛的”这个问题时,他首先给出了一个技术定义:物联网(Int…...

LeRobot 项目部署运行逻辑(五)——intelrealsense.py/configs.py

在运行 control_robot.py 的时候会启用相机拍摄,lerobot 中封装好了两种相机类型:realsense 和 opencv realsense 直接使用他们的脚本就可以,但需要在 lerobot/robot_devices/robots/configs.py 中修改相机 serial_number 由于我们设备采用的…...

从0开始学linux韦东山教程第一三章问题小结(1)

本人从0开始学习linux,使用的是韦东山的教程,在跟着课程学习的情况下的所遇到的问题的总结,理论虽枯燥但是是基础。 摘要关键词:VMware、Ubuntu、网络网口 视频链接:【【韦东山】韦东山手把手教你嵌入式Linux快速入门到精通 | Lin…...

解决 MySQL 数据库无法远程连接的问题

在使用 MySQL 数据库时,遇到这样的问题: 本地可以连接 MySQL,但远程机器连接时,总是报错 Host ... is not allowed to connect to this MySQL server。 这通常是因为 MySQL 的用户权限或配置限制了远程访问。 1. 登录 MySQL 数据…...

分享一款开源的图片去重软件 ImageContrastTools,基于Electron和hash算法

最近发现个挺实在的图片查重软件,叫ImageContrastTools。电脑手机都能用,特别适合整理乱七八糟的相册。直接去这里下载就能用: https://github.com/html365/ImageContrastTools 功能说明: 1️⃣ 选个文件夹就能自动扫重复图&…...

软件测试——用例篇(2)

目录 一、基于需求的设计方法 1.1设计账号注册、账号登录的测试用例 1.1.1功能测试 1.1.2界面测试 1.1.3性能测试 1.1.4兼容性测试 1.1.5易用性测试 1.1.6安全测试 一、基于需求的设计方法 根据参考需求文档/产品规格说明书来设计测试用例 测试人员接到需求之后、对需求…...

图像匹配导航定位技术 第 11 章

第 11 章 基 于 改 进 SIFT 的 SAR 与 可 见光 图 像 匹 配 控 制 点 定 位 算 法 HOG 描述子也只是对整幅图像的特征向量进行匹配,但是仍然存在局部匹配误差。而局部不变特征(如 SIFT,Harris 等)是对特征点局部邻域的特征进行描述来构造局部…...

安装jdk步骤

将Linux安装jdk的步骤放入shell脚本中 #!/bin/bash # 阿里云服务器专用 - 全自动安装 OpenJDK 1.8(无交互) # 仅支持 yum 系系统(CentOS/RHEL/Alibaba Cloud Linux)# 检查 root 权限 if [ "$(id -u)" -ne 0 ]; thenech…...

理解 `.sln` 和 `.csproj`:从项目结构到构建发布的一次梳理

理解 .sln 和 .csproj:从项目结构到构建发布的一次梳理 在初学 .NET 项目开发时,很多人都会对 .sln(解决方案)和 .csproj(项目)文件感到疑惑。随着开发经验的积累,我逐渐理解了这些层级的设计意…...

高频算法面试题总结

高频算法面试题总结 排序算法 1. 基础排序算法 快速排序: public void quickSort(int[] arr, int low, int high) {if (low < high) {int pivot = partition(arr, low, high);quickSort(arr, low, pivot - 1);quickSort(arr, pivot + 1, high);} }平均时间复杂度:O(n lo…...

SQL进阶:如何把字段中的键值对转为JSON格式?

JSON 一、问题描述二、ORACLE<一>、键值对拆分(REGEXP_SUBSTR)<二>、转为JSON<三>、不足 三、MYSQL<一>、键值对拆分(RECURSIVE)<二>、转为JSON 一、问题描述 假如某张表的某列是键值对数据,如何把这个键值对转为json格式,数据如下所示 dynast…...

vue3:十二、图形看板- echart图表-柱状图、饼图

一、效果 如图展示增加了饼图和柱状图,并且优化了浏览器窗口大小更改,图表随着改变 二、 饼图 1、新建组件文件 新增组件EchartsExaminePie.vue,用于存储审核饼图的图表 2、写入组件信息 (1)视图层 写入一个div,写入变量chart和图表宽高 <template><div ref…...

nacos-server-2.2.2.tar及使用方式

下载链接 nacos-server-2.2.2.tar包及使用资源-CSDN文库 下载与安装 下载地址&#xff1a;可从 Nacos 官网版本下载页面 或 Nacos GitHub Releases 获取 nacos-server-2.2.2.tar.gz 安装包。 环境准备&#xff1a;Nacos 依赖 Java 环境运行&#xff0c;需确保安装了 64 位 J…...

el-form的label星号位置如何修改

默认情况 修改后 实现代码 .el-form {.el-form-item {.el-form-item__label {padding: 0;&::before {float: none;position: relative;}}} }...

小刚说C语言刷题—1004阶乘问题

1.题目描述 编程求 123⋯n 。 输入 输入一行&#xff0c;只有一个整数 n(1≤n≤10)&#xff1b; 输出 输出只有一行&#xff08;这意味着末尾有一个回车符号&#xff09;&#xff0c;包括 1 个整数。 样例 输入 5 输出 120 2.参考代码(C语言版) #include <stdio…...

Java 集合体系深度解析面试篇

一、Java 集合体系核心架构与高频考点 1. 集合体系架构图&#xff08;大厂必问&#xff09; Java集合框架 ├─ Collection&#xff08;单列集合&#xff09; │ ├─ List&#xff08;有序、可重复&#xff09; │ │ ├─ ArrayList&#xff08;动态数组&#xff0c;随机…...

websocketd 10秒教程

websocketd 参考地址&#xff1a;joewalnes/websocketd 官网地址&#xff1a;websocketd websocketd简述 websocketd是一个简单的websocket服务Server&#xff0c;运行在命令行方式下&#xff0c;可以通过websocketd和已经有程序进行交互。 现在&#xff0c;可以非常容易地构…...

PCA降维

主成分分析&#xff08;Principal Component Analysis&#xff0c;PCA&#xff09;降维是一种广泛使用的无监督机器学习技术&#xff0c;主要用于数据预处理阶段&#xff0c;其目的是在尽量保留数据重要信息的前提下&#xff0c;减少数据的维度。 PCA 的原理​ PCA 的核心思想…...

【计算机视觉】OpenCV实战项目: opencv-text-deskew:实时文本图像校正

opencv-text-deskew&#xff1a;基于OpenCV的实时文本图像校正 一、项目概述与技术背景1.1 核心功能与创新点1.2 技术指标对比1.3 技术演进路线 二、环境配置与算法原理2.1 硬件要求2.2 软件部署2.3 核心算法流程 三、核心算法解析3.1 文本区域定位3.2 角度检测优化3.3 仿射变换…...

具身智能时代的机器人导航和操作仿真器综述

系列文章目录 前言 导航和操作是具身智能的核心能力&#xff0c;然而在现实世界中训练具有这些能力的智能体却面临着高成本和时间复杂性。因此&#xff0c;从模拟到现实的转移已成为一种关键方法&#xff0c;但模拟到现实的差距依然存在。本调查通过分析以往调查中忽略的物理模…...

Go语言Stdio传输MCP Server示例【Cline、Roo Code】

Go语言 Stdio 传输 MCP Server 示例 AI 应用开发正处于加速发展阶段&#xff0c;新技术和新方法不断涌现。Model Context Protocol &#xff08;MCP&#xff09; 作为一个开放标准&#xff0c;正在改变 AI 应用与数据源和工具集成的方式。 Go-MCP 是一个 MCP 协议的 GO 实现&…...

Xcode16.3配置越狱开发环境

首先先在https://developer.apple.com/xcode/resources/ 这里面登陆Apple账号&#xff0c;然后访问url下载 https://download.developer.apple.com/Developer_Tools/Xcode_16.3/Xcode_16.3.xip 1、安装theos https://theos.dev/docs/installation-macos 会安装到默认位置~/th…...

AWS IoT Core与MSK跨账号集成:突破边界的IoT数据处理方案

随着企业规模的扩大和业务的复杂化,跨账号资源访问成为云架构中的一个常见需求。本文将深入探讨如何实现AWS IoT Core与Amazon MSK(Managed Streaming for Apache Kafka)的跨账号集成,为您的IoT数据处理方案开辟新的可能性。无论您是正在构建多账号架构,还是需要整合不同部门的…...

【Python 列表(List)】

Python 中的列表&#xff08;List&#xff09;是最常用、最灵活的有序数据集合&#xff0c;支持动态增删改查操作。以下是列表的核心知识点&#xff1a; 一、基础特性 有序性&#xff1a;元素按插入顺序存储可变性&#xff1a;支持增删改操作允许重复&#xff1a;可存储重复元…...

在另一个省发布抖音作品,IP属地会随之变化吗?

你是否曾有过这样的疑惑&#xff1a;出差旅游时在外地发布了一条抖音视频&#xff0c;评论区突然冒出“IP怎么显示xx省了&#xff1f;”的提问&#xff1f;随着各大社交平台上线“IP属地”功能&#xff0c;用户的地理位置标识成为公开信息&#xff0c;而属地显示的“灵敏性”也…...

在线工具源码_字典查询_汉语词典_成语查询_择吉黄历等255个工具数百万数据 养站神器,安装教程

在线工具源码_字典查询_汉语词典_成语查询_择吉黄历等255个工具数百万数据 养站神器&#xff0c;安装教程 资源宝分享&#xff1a;https://www.httple.net/154301.html 一次性打包涵盖200个常用工具&#xff01;无论是日常的图片处理、文件格式转换&#xff0c;还是实用的时间…...

D720201 PCIE 转USB HUB

1. 启动时出现了下面错误 [ 4.682595] pcieport 0004:00:00.0: Signaling PME through PCIe PME interrupt [ 4.684939] pci 0004:01:00.0: Signaling PME through PCIe PME interrupt [ 4.691287] pci 0004:01:00.0: enabling device (0000 -> 0002) [ 5.2962…...

QT事件介绍及实现字体放大缩小(滚轮)

使用update是为了回调paintEvent这个事件函数 pic.load是加载一张图片 setfixedsize(pic.siez())是为了把按键的矩形区域变成和pic一样大 painter.drawPixmap(rec(),pic)就是在按键的矩形区域画一个pic emit clicked();是用来发送clicked信号的&#xff0c;当然你也可以在事…...

p2p虚拟服务器

ZeroTier Central ✅ 推荐工具&#xff1a;ZeroTier&#xff08;免费、稳定、跨平台&#xff09; ZeroTier 可以帮你把多台设备&#xff08;无论是否跨网&#xff09;加入一个虚拟局域网&#xff0c;彼此间可以像在同一个 LAN 中通信&#xff0c;UDP 视频、文件传输、SSH 等都…...

高尔夫基本知识及规则·棒球1号位

高尔夫与棒球的结合看似跨界&#xff0c;但两者在规则、策略和运动哲学上存在有趣的关联性。以下从五个角度进行对比分析&#xff0c;揭示它们的异同与潜在联系&#xff1a; 一、核心目标的对比性结合 高尔夫&#xff1a;以最少击球次数完成18洞&#xff08;标准杆72杆左右&am…...

数据结构(1)复杂度

一、数据结构概要 1.数据结构 数据结构是计算机存储、组织数据的方式&#xff0c;是数据相互之间存在一种或者多种特定关系的集合。没有一种单一的数据结构可以解决所有问题&#xff0c;因此要学习多种多样的数据结构。如&#xff1a;线性表、图、树等。 2.算法 算法其实就…...

多分类问题softmax传递函数+交叉熵损失

在多分类问题中&#xff0c;Softmax 函数通常与交叉熵损失函数结合使用。 Softmax 函数 Softmax 函数是一种常用的激活函数&#xff0c;主要用于多分类问题中。它将一个实数向量转换为概率分布&#xff0c;使得每个元素的值在 0 到 1 之间&#xff0c;且所有元素的和为 1。 …...

Java如何获取电脑分辨率?

以下是一个 Java 程序示例&#xff0c;用于获取电脑的主屏幕分辨率&#xff1a; import java.awt.*; public class ScreenResolutionExample { public static void main(String[] args) { // 获取默认的屏幕设备 GraphicsDevice device GraphicsEnvironm…...

【NextPilot日志移植】logged_topics.cpp解析

&#x1f4d8; PX4 Logger 模块注册 uORB 主题、实际订阅与数据采集流程 &#x1f9ed; 目的与背景 在 PX4 飞控中&#xff0c;日志记录模块 logger 需要记录多个 uORB 主题的数据&#xff08;如 IMU、GPS、姿态等&#xff09;。为了系统统一管理这些记录需求&#xff0c;log…...

CSS vertical-align

这里的小空白就是为了和基线对齐 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&quo…...

“工作区”升级为“磁盘”、数据集统计概览优化|ModelWhale 版本更新

本次更新围绕用户在实际项目中对平台的理解和管理体验进行了多项优化。 “工作区”升级为“磁盘”、及其管理优化 平台“工作区”概念正式更名为“磁盘”&#xff0c;突出其存储功能。原有以目录代称的存储区域划分同步更名&#xff0c;其中“work目录”更改为“个人磁盘”&am…...

mac 电脑如何打开剪切板

mac 不像 Windows 拥有官方的剪贴板应用。所以我们需要使用官方商店中的第三方应用实现剪切板管理的功能。 打开苹果电脑上的 App Store&#xff0c;下载 PasteMe 或 Paste 等复制历史记录的管理工具。&#xff08;PasteMe 为买断制18元&#xff0c;Paste为订阅制&#xff0c;…...

信息系统项目管理师-软考高级(软考高项)​​​​​​​​​​​2025最新(十二)

个人笔记整理---仅供参考 第十二章项目质量管理 可能考论文&#xff1f;&#xff1f;&#xff1f; 12.1管理基础 12.2项目质量管理过程 12.3规划质量管理 12.4管理质量 12.5控制质量...

Java、javax 和 Jakarta有什么区别?

在 Java 开发中,我们经常会看到 java、javax 和 jakarta 这些包名前缀。本文将详细介绍这三个命名空间的含义、发展历程以及它们之间的关系,帮助你更好地理解 Java 生态系统。 一、Java:核心 API 的基础 ✅ 含义: java 是 Java 标准库的核心包名。所有以 java. 开头的类构…...

LeetCode百题刷002摩尔投票法

遇到的问题都有解决的方案&#xff0c;希望我的博客可以为你提供一些帮助 图片源自leetcode 题目&#xff1a;169. 多数元素 - 力扣&#xff08;LeetCode&#xff09; 一、排序法 题目要求需要找到多数值&#xff08;元素个数>n/2&#xff09;并返回这个值。一般会想到先…...

【推荐笔记工具】思源笔记 - 隐私优先的个人知识管理系统,支持 Markdown 排版、块级引用和双向链接

Typora 使用Typora好多年了&#xff0c;一直非常的喜欢这个简洁的Markdown编辑工具&#xff0c;低版本的免费且好用。 Typora官网地址&#xff1a; https://typora.io/ https://typoraio.cn/ Typora的文档树如下&#xff0c;细看后&#xff0c;总觉得差点意思! 思源笔记 今…...

ACTF2025 - Web writeup

ACTF2025 - Web writeup ACTF upload 进去后是一个登录界面&#xff0c;输入用户名后登录&#xff0c;然后到一个文件上传的界面。 在 /upload?file_path 处&#xff0c;可以实现任意文件读取&#xff0c;文件内容保存在 img 标签中的 base64 值中。 示例请求&#xff1a;…...

使用Java实现HTTP协议服务:从自定义服务器到内置工具

在Web开发领域,HTTP协议是服务器与客户端(如Web浏览器)通信的核心。Java作为一种多功能且强大的编程语言,提供了多种方法来实现HTTP协议服务,满足从学习实验到生产部署的各种需求。本文将深入探讨在Java中实现HTTP服务的三种主要方法:使用ServerSocket构建自定义HTTP服务…...

【星海随笔】信息安全相关标准

重要的国际信息安全标准> 国际标准化组织&#xff08;ISO&#xff09; 该组织成立于1947年2月23日&#xff0c;总部位于瑞士日内瓦‌ 国际电工委员会&#xff08;IEC&#xff09; 成立于1906年&#xff0c;最初总部设在英国伦敦&#xff0c;但后来于1948年迁至瑞士日内瓦‌…...

检查当前 Docker 使用的 默认运行时(default runtime)方法

目录 ✅ 方法一&#xff1a;查看 Docker 配置文件&#xff08;最准确&#xff09; ✅ 方法二&#xff1a;使用 Docker info 命令 ✅ 方法三&#xff1a;检查特定容器的运行时 说明&#xff1a;常见的 Docker Runtime ✅ 方法一&#xff1a;查看 Docker 配置文件&#xff08…...

【论文阅读】基于客户端数据子空间主角度的聚类联邦学习分布相似性高效识别

Efficient distribution similarity identification in clustered federated learning via principal angles between client data subspaces -- 基于客户端数据子空间主角度的聚类联邦学习分布相似性高效识别 论文来源TLDR背景与问题两个子空间之间的主角&#xff08;Principa…...

MySQL 性能调优:从执行计划到硬件瓶颈

MySQL 性能调优&#xff1a;从执行计划到硬件瓶颈 一、性能调优的宏观视角与核心挑战 在数字化浪潮下&#xff0c;企业数据量呈指数级增长&#xff0c;MySQL 作为主流关系型数据库&#xff0c;面临着巨大的性能压力。某电商平台日均订单量突破千万&#xff0c;高峰期数据库响…...