Java类设计模式
1、单例模式
核心:保证一个类只有一个对象,并且提供一个访问该实例的全局访问点
五种单例模式:主要:饿汉式:线程安全,调用效率高,不能延时加载懒汉式:线程安全,调用效率低,可以延时加载其它:枚举单例:线程安全,调用效率高,不能延时加载(可以天然防止反射和反序列化漏洞)静态内部类式:线程安全,调用效率低,可以延时加载双重检索式
如何选择:占用资源少且不需要延时加载:枚举>饿汉占用资源多且需要延时加载:静态内部>懒汉
2、工厂模式
创建者与调用者分离
核心:实例化对象,甩工厂方法代替new操作
简单工厂模式(常用):不完全满足OPC原则
工厂方法模式:
抽象工厂模式:
3、建造者模式
Builder构造 Director 装配
4、原型模式
实现Cloneable中来自object中的clone方法Object obj=(Object)Super.clone();return obj;
深克隆:Sheep s=(Sheep) obj;s.birthday=(Date)this.birthday.clone();
或者通过序列化和反序列化实现深复制
5、适配器模式(adapter)
6、代理模式(proxy pattern)
AOP(Aspect Oriented Programming)面向切面编程,其核心就是代理模式
核心角色:抽象角色(客户,定义代理角色和真实角色的公共对外方法)^ ^代理角色(实现抽象角色) -> 真实角色(实现抽象角色)
7、静态代理模式(客户-经纪人-演员)
8、动态代理模式
9、桥接模式
将多个维度的东西比如:电脑品牌与电脑类型分别来表示,然后通过参数形式将二者结合起来。
适用的场景:处理多层继承结构、处理多维度变化的场景、将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关系。
10、组合模式(component)
把部分与整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象。
11、装饰模式(decorator)
动态的为一个对象增加新的功能
12、外观模式
迪米特法则(封装):
一个软件实体应当尽可能少的与其他实体发生相互作用。
13、享元模式(Fly weight)
如果有多个完全相同或者相似的对象,我们可以通过享元模式节省内存。
享元对象能够做到共享的关键是区分了内部状态和外部状态。
内部状态:可以共享,不会随着环境变化而改变
外部状态:不可以共享,会随着环境变化而改变
14、责任链模式(chain of responsibility)
将能够处理同一类请求的对象连成一条链,请求沿着链传递,如果能够处理就处理,处理不了就向后传递。
15、迭代器模式(iterator)
提供一种可以遍历聚合对象的方式
聚合对象:存储数据
迭代器:遍历数据
16、中介者模式(mediator)
17、命令模式(commend)
将一个请求封装成对象,从而我们可以使用不同的请求对客户进行参数化。
18、策略模式(strategy)
19、模板方法模式(Template method)
定义好模板,核心内容用到再实现,模板中定义为抽象方法
20、状态模式(state)
不同状态对应不同行为,用于解决系统中复杂对象的状态转换以及不同状态下行为的封装。
21、观察者模式(observe)
广播,1:N的通知,当目标对象的状态发生改变时,他需要及时告知一系列观察者对象,令他们做出响应。
JAVASE提供了java.util.observable类和java.util.observer接口来实现观察者模式。
22、备忘录模式(memento)
保存某个对象内部状态的拷贝,以后就可以将该对象恢复到原先的状态。
源发器类:包括备份数据与恢复数据两种方法
备忘录类:通过构造器的方法来进行数据备份
负责人类:负责管理备忘录提供备忘录的get/set方法
相关文章:
Java类设计模式
1、单例模式 核心:保证一个类只有一个对象,并且提供一个访问该实例的全局访问点 五种单例模式:主要:饿汉式:线程安全,调用效率高,不能延时加载懒汉式:线程安全,调用效率…...
Valhalla实现 使用Docker部署利用OSM(Mapbox)地图实现路径规划详细步骤
一. Valhalla基本概念 1. 背景介绍: 官网介绍文档:https://valhalla.github.io/valhalla/ Valhalla是一个开源的路由引擎,能够实现实时路径规划,处理大量请求返回最优路径。 基于 OSM 数据,结合灵活的多模式交通方式…...
blender解决缩放到某个距离就不能继续缩放
threejs中也存在同样的问题,原因相同,都是因为相机位置和相机观察点距离太近导致的。 threejs解决缩放到某个距离就不能继续缩放-CSDN博客 blender中的解决方案 1、视图中心->视图锁定->选择你想看的物体...
2022浙江省赛G I M
G - Easy Glide 题意 思路 由于数据范围比较小(1e3),把所有的移动的时间转化为图论上的边权就可以了,再用dijkstra解决,注意如果用的是邻接表存的话要建双向边 代码 #include <map> #include <set> #include <queue> #include <…...
数据链路层 ——MAC
目录 MAC帧协议 mac地址 以太网帧格式 ARP协议 ARP报文格式编辑 RARP 其他的网络服务或者协议 DNS ICMP协议 ping traceroute NAT技术 代理服务器 网络层负责规划转发路线,而链路层负责在网络节点之间的转发,也就是"一跳"的具体传输…...
在java中都是如何实现这些锁的?或者说都有哪些具体的结构实现
在Java中,多种锁机制的实现依赖于不同的类和接口。以下是一些常见的锁机制及其在Java中的具体实现: 1. 互斥锁(Mutex) 实现方式:Java中的互斥锁可以通过synchronized关键字或ReentrantLock类来实现。synchronized关键…...
用CSS创造三角形案例
6.3.2 用CSS创造三角形 用div来创建,角上是平分的,所以要是内部宽高为0,其他边透明,正好是三角形。 代码 div {border: 12px solid;width: 0;height: 0;border-color: transparent red transparent transparent; } 与伪元素aft…...
matlab-对比两张图片的Ycbcr分量的差值并形成直方图
%对比两张图片的Ycbcr分量的差值并形成直方图,改个路径就能用,图片分辨率要一致 close all; clear all; clc; I1imread(E:\test\resources\image\1.jpg); I2imread(E:\test\resources\image\2.jpg); ycbcr1 rgb2ycbcr(I1); ycbcr2 rgb2ycbcr(I2); % …...
Chromium 使用安全 DNS功能源码分析c++
一、选项页安全dns选项如下图: 二、那么如何自定义安全dns功能呢? 1、先看前端部分代码调用 shared.rollup.jsclass PrivacyPageBrowserProxyImpl {.................................................................getSecureDnsResolverList() {re…...
10.1 刷题
C语言 C...
车辆重识别(2021ICML改进的去噪扩散概率模型)论文阅读2024/9/29
所谓改进的去噪扩散概率模型主要改进在哪些方面: ①对数似然值的改进 通过对噪声的那个方差和T进行调参,来实现改进。 ②学习 这个参数也就是后验概率的方差。通过数据分析,发现在T非常大的情况下对样本质量几乎没有影响,也就是说…...
828华为云征文|针对Flexus X实例云服务器的CPU和内存性能测评
目录 一、Flexus X实例云服务器简介 1.1 产品摘要 1.2 产品优势 1.3 本次测评服务器规格 二、CPU性能测试 2.1 操作说明 2.2 操作步骤 2.2 结果分析 三、测试内存负载 3.1 操作说明 3.2 操作步骤 3.3 结果分析 四、测试终评 一、Flexus X实例云服务器简介 1.1 产品…...
Python知识点:如何使用Google Cloud IoT与Python进行边缘计算
开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候! 如何使用Google Cloud IoT与Python进行边缘计算 边缘计算作为一种新兴的计算模式…...
力扣 最小覆盖子串
最小覆盖子串 https://leetcode.cn/problems/minimum-window-substring/ 题目描述 题目分析f 覆盖子串:首先根据题意,要求目标字符串的元素必须都在子串中出现过,这表明可以是乱序出现。所以在解决问题是我们需要对子串和目标字符串做匹配&a…...
python的内存管理机制
python的内存管理机制主要分为三个部分:引用计数、垃圾回收和内存池机制。 引用计数机制: python通过维护每个对象的引用计数来跟踪内存中的对象。当对象被创建时就会有一个引用计数,当对象不再被使用时,引用计数为0,…...
阿布量化:基于 Python 的量化交易框架
阿布量化(AbuQuant) 是一个开源的量化交易框架,专为金融领域的研究者和交易者设计。它基于 Python 语言开发,提供了一整套从数据获取、策略开发、回测分析到交易执行的解决方案。阿布量化不仅能够帮助用户快速实现量化策略的设计与…...
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-28
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-28 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-28目录前言1. Cognitive phantoms in LLMs through the lens of latent variables摘要研究背景问题与挑战创新点算法模型实验效果…...
【tower-boot 系列】开源RocketMQ和阿里云rockerMq 4.x和5.x集成 (一)
RocketMQ 简单介绍 阿里云rockerMq 4.x和5.x集成 一、云平台创建实例 参考文档: 阿里云api 阿里云 创建实例 二、skd集成思路 公司用的RocketMQ一般是自建开源apache的RocketMQ和上阿里云的RocketMQ,目前阿里云支持4.x和5.x版本 项目集成思路&…...
Pikachu-Cross-Site Scripting-反射型xss(post)
查看源代码 ,这是需要先登录,然后再去做xss攻击 使用admin ,123456 登陆; 登陆后,输入的message 内容直接返回 输入 <script>alert(1)</script> 得到xss攻击结果...
Vue3 工具函数(总结)
目录 前言 1.isRef 2.isReactive 3.isReadonly 4.isProxy 5.toRef 6.toRefs 7.unref 8.shallowRef 9.shallowReactive 10.triggerRef 11.customRef 12.markRaw 13.toRaw 14.readonly 15.watchEffect 前言 在 Vue 3 中,除了核心的响应式 API&#x…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
