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

设计模式入门

0. 类图

在这里插入图片描述
在这里插入图片描述

1. 设计原则

1.单一职责原则:每个类只有一个功能
2.开放封闭原则:模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)
3.里氏代换原则:子类拥有父类的所有方法和属性,从而可以减少创建类的工作量
4.依赖倒转原则
5.合成/聚合复用原则
6.接口隔离原则
7.迪米特法则

2. 创建者模式

2.1 单例模式

其核心思想是确保一个类只有一个实例,并提供一个全局访问点

2.1.1 懒汉式
2.1.2 饿汉式
2.1.3 应用场景
  1. 数据库连接池:在数据库软件系统中,使用数据库连接池可以节省打开或关闭数据库连接所引起的效率损耗。通过单例模式,可以确保整个应用中只有一个数据库连接池实例,避免重复创建和销毁连接,从而提高性能。
  2. 日志记录:当应用程序需要记录日志时,使用单例模式可以确保只有一个日志记录器实例。这样,所有的日志信息都将被记录到同一个实例中,便于集中管理和分析。
  3. 线程池:在多线程编程中,线程池可以使用单例模式来确保整个应用只有一个线程池实例。这样可以避免线程数量过多或过少带来的问题,提高程序的性能和稳定性。

工厂模式

原型模式

建造者模式

3. 结构型模式

4. 行为型模式

用到的方法

synchronized的作用是保证在同一时刻, 被修饰的代码块或方法只会有一个线程执行,以达到保证并发安全的效果。
synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。

synchronized的3种使用方式:
修饰实例方法:作用于当前实例加锁
修饰静态方法:作用于当前类对象加锁
修饰代码块:指定加锁对象,对给定对象加锁
在这里插入图片描述
每次执行方法前先获取锁。

相关文章:

设计模式入门

0. 类图 1. 设计原则 1.单一职责原则:每个类只有一个功能 2.开放封闭原则:模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方) 3.里氏代换原则:子类拥有父类的所有方法和属性,从而可以减少创建类的工作量 4.依…...

EasyExcel下载EXCEL文件,后台通过流形式输出到前端浏览器下载方式输出

前端代码(参考):$("#import").on(click, function(){var createDate$("#createdDate").val();var key1$("#key1").val();if(createDatenull||createDate""){layer.msg("请选择创建时间段&#…...

Pandas实战100例 | 案例 56: 创建多重索引

案例 56: 创建多重索引 知识点讲解 在 Pandas 中,多重索引(或层次化索引)提供了在 DataFrame 中表示多维数据的方式。这使得数据分析在多个级别上更加灵活和强大。 创建多重索引: 通过使用 set_index 方法并传入多个列名,可以在…...

解决“nacos默认secret.key配置不当权限绕过漏洞“

一、前言 nacos 2.2.0.1以下版本会有一个nacos默认secret.key配置不当权限绕过漏洞,等级为高危。形成原因是nacos的配置文件中存在这么一个secret.key默认配置: nacos.core.auth.plugin.nacos.token.secret.keySecretKey01234567890123456789012345678…...

一款好用的开源思维导图软件 docker部署教程

目录 Simple mind map简介 Simple mind map特点 1.拉取镜像 2.创建并启动容器 方式1:docker启动 方式2:docker compose启动 3.使用 4.源码地址 Simple mind map简介 .一个 Web 思维导图,基于思维导图库、Vue2.x、ElementUI 开发&#…...

Jenkins之pipeline

安装插件 Pipeline Pipeline: Stage View Plugin 创建任务 配置 demo 开始实践 拉取git仓库代码 checkout scmGit(branches: [[name: */main]], extensions: [], userRemoteConfigs: [[url: http://178.119.30.133:8929/root/mytest.git]])通过SonarQube做质量检测 sh …...

创意交融:集成自定义报表和仪表盘设计器,实现图标替换

前言 在现代数据分析领域,随着对报表和数据分析的需求不断增长,市场上涌现了许多嵌入式报表工具。这些工具能够与企业现有的OA、ERP、MES、CRM等应用系统深度集成,实现对业务数据的自助式分析。然而,在实际应用中,不同…...

Mybatis 40_resultMap基础和@Results注解

40_resultMap基础和Results注解 resultType和resultMap<resultMap.../>元素项目0501resultMap Results注解项目0502resultMap注解&#xff08;Results) 【总结】 resultType和resultMap resultType指定结果集每条记录要映射的对象类型。resultMap表明使用自定义的映射规…...

【蓝桥杯选拔赛真题31】C++数位求和 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析

目录 C/C++数位求和 一、题目要求 1、编程实现 2、输入输出...

牛客网-css继承属性

3.当元素的一个继承属性没有指定值时&#xff0c;则取父元素的同属性的计算值&#xff0c;以下哪些不是 CSS 中的继承属性&#xff1f; A. color B.display C.border-style D.text-align 答案&#xff1a;BC 解析&#xff1a;不可继承&#xff1a;display&#xff0c;mar…...

OpenCV-19图像的仿射变换

放射变换是图像旋转&#xff0c;缩放&#xff0c;平移的总称&#xff0c;具体的做法是通过一个矩阵和原图片坐标进行计算&#xff0c;得到新的坐标&#xff0c;完成变换&#xff0c;所以关键就是这个矩阵。 一、仿射变换之图像平移 使用API------warpAffine&#xff08;src &…...

数据结构与算法教程,数据结构C语言版教程!(第四部分、字符串,数据结构中的串存储结构)二

第四部分、字符串&#xff0c;数据结构中的串存储结构 串存储结构&#xff0c;也就是存储字符串的数据结构。 很明显&#xff0c;字符串之间的逻辑关系也是“一对一”&#xff0c;用线性表的思维不难想出&#xff0c;串存储结构也有顺序存储和链式存储。 提到字符串&#xff…...

第七在线荣获百灵奖 Buylink Awards 2023零售圈年度卓越服务商品牌

1月11日&#xff0c;由零售圈主办、20零售连锁协会协办、30零售行业媒体支持的中国零售圈大会暨2024未来零售跨年盛典在西安落下帷幕&#xff0c;在这个零售行业盛典中&#xff0c;第七在线凭借其高精尖产品和卓越的服务质量成功入选&#xff0c;并荣获了“百灵奖 Buylink Awar…...

通过myBatis将sql语句返回的值自动包装成一个java对象(3)

1.如果sql字段和java字段名字不一样怎么办&#xff1f; 之前我们将sql返回值转换为java对象时&#xff0c;每条sql的返回值的字段名和java类中的字段名是一一对应的&#xff0c;ie&#xff1a;sql选择的user有username和password两个字段&#xff0c;java中的user对象也有两个…...

基于SSM的驾校信息管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue、HTML 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是…...

矩阵行列式的四大应用

目录 一. 介绍 二. 行列式的基本性质 2.1 单位阵的行列式 2.2 交换行位置的行列式 三. 矩阵求逆与行列式 四. 体积与行列式 五. 矩阵主元与行列式 六. 解方程与矩阵行列式 七. 小结 一. 介绍 行列式可以反应矩阵的很多性质&#xff0c;比如可以求矩阵的逆&#xff0c…...

【小笔记】时序数据分类算法最新小结

2024.1.15 最近基于时序数据训练分类算法&#xff0c;对其进行了一番了解&#xff0c;主要围绕以下几点&#xff1a; 时序数据算法有哪些细分类&#xff1f;时序数据分类算法经典模型&#xff1f;当下时序分类算法模型强baseline&#xff1f;有没有现成的工具&#xff1f; 1…...

使用Python+pygame实现贪吃蛇小游戏

使用Pythonpygame贪吃蛇小游戏 使用第三方库pygame&#xff0c;关于Python中pygame游戏模块的安装使用可见 https://blog.csdn.net/cnds123/article/details/119514520 给出两种实现。 第一种 运行效果如下&#xff1a; 游戏源码如下&#xff1a; import pygame import sy…...

SpringBoot 全局异常统一处理:BindException(绑定异常)

概述 在Spring Boot应用中&#xff0c;数据绑定是一个至关重要的环节&#xff0c;它负责将HTTP请求中的参数映射到控制器方法的入参对象上。在这个过程中如果遇到任何问题&#xff0c;如参数缺失、类型不匹配或验证失败等&#xff0c;Spring MVC将会抛出一个org.springframewo…...

ucloud轻量云(wordpress)配置ssl

ucloud 轻量云(wordpress)配置ssl 1、上传ssl证书到/usr/local/software/apache/conf&#xff0c;这里的文件名和内容与ucloud控制台下载下来的文件名和内容保持一致 2、修改httpd.conf文件 vim /usr/local/software/apache/conf/httpd.conf 找到下面两行&#xff0c;去掉注…...

服务网格安全策略:定义和执行服务间的安全规则

服务网格安全策略&#xff1a;定义和执行服务间的安全规则 一、服务网格安全策略概述 1.1 服务网格安全策略的定义 服务网格安全策略是指在服务网格中定义和执行的安全规则&#xff0c;用于保护服务间通信的安全性。它包括认证、授权、加密和流量控制等方面&#xff0c;确保服务…...

机器学习原子间势与连续介质模型在柔性InSe扭转双层原子重构研究中的应用

1. 项目概述&#xff1a;当柔性二维材料遇上扭转角在二维材料的世界里&#xff0c;一个简单的“扭转”操作&#xff0c;往往能打开一扇通往新奇物理现象的大门。从魔角石墨烯中发现的超导和关联绝缘态&#xff0c;到过渡金属硫族化合物&#xff08;TMDs&#xff09;中的莫尔激子…...

2026.5.24-要闻

宁波大学附属康宁医院李广学副主任医师指出,每天刷手机超5小时会显著增加肥胖风险(儿童群体风险增幅达74%),并导致前额叶等脑区代谢减弱,引发注意力、记忆力下降。‌‌1 8小时前...

普通企业不懂技术可以做GEO优化吗

这是很多中小企业主最关心的问题。答案非常明确&#xff1a;可以&#xff0c;且不需要自己成为技术专家。GEO优化已经分化出多层次的服务模式&#xff0c;企业完全可以根据自身的技术能力和团队情况&#xff0c;选择最匹配的合作方式。不会写代码、不懂算法、没有运营团队——这…...

量子机器学习模型鲁棒性验证:VeriQR工具原理与应用实战

1. 项目概述与核心价值 量子机器学习&#xff08;QML&#xff09;正逐渐从理论走向实践&#xff0c;在化学模拟、药物发现、金融建模等领域展现出超越经典算法的潜力。然而&#xff0c;与任何基于数据驱动的模型一样&#xff0c;QML模型也并非“金刚不坏之身”。在当前的 噪声…...

3个场景告诉你:为什么你需要PowerToys Text Extractor

3个场景告诉你&#xff1a;为什么你需要PowerToys Text Extractor 【免费下载链接】PowerToys Microsoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows 项目地址: https://gitcode.com/GitHub_Trending/po/PowerToys…...

告别账单惊吓,Taotoken Token Plan 如何让成本更可控

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 告别账单惊吓&#xff0c;Taotoken Token Plan 如何让成本更可控 对于依赖大模型 API 进行开发的团队和个人而言&#xff0c;项目成…...

凸轮机构设计(黄老板)

1. 2. 3....

微信M4A文件打不开怎么办?m4a转MP3只需一招,小白也能操作

很多人会遇到这种情况&#xff1a;别人通过微信发来一段录音、会议音频、课程音频或者采访素材&#xff0c;文件后缀是.m4a&#xff0c;在微信里可能能播放&#xff0c;但保存到手机本地、发到电脑、导入剪辑软件或者复制到U盘后&#xff0c;就可能出现打不开、无法识别、格式不…...

XELFViewer:3步快速上手,免费开源的跨平台ELF文件分析神器

XELFViewer&#xff1a;3步快速上手&#xff0c;免费开源的跨平台ELF文件分析神器 【免费下载链接】XELFViewer ELF file viewer/editor for Windows, Linux and MacOS. 项目地址: https://gitcode.com/gh_mirrors/xe/XELFViewer 你是否曾经面对Linux系统的二进制文件感…...