设计模式、系统设计 record part02

软件设计模式

这里是引用
1.应对重复发生的问题
2.解决方案
3.可以反复使用


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.本质面向对象
2.优点很多


在这里插入图片描述
1.创建型-创建和使用分离
2.结构型-组合
3.行为型-协作
5+7+11=23种模式


UML-统一建模语言-Unified Modeling Language

在这里插入图片描述
1.可视化图形化
2.各种图(9种图)
3.可以同时表示静态信息、动态信息


类图-class diagram

这里是引用
就是图形化显式
在这里插入图片描述
className,field,method
+public,-private,#protected
在这里插入图片描述

关联关系

单向关联:
在这里插入图片描述
field:type 成员变量:address 其属性 :Address (Address 是一个类) 关联关系 is
最常用的,类与类之间的关系
注意,单项关联有一个箭头
双向关联:
在这里插入图片描述
各自持有,对方的类,来当作自己的成员变量,
注意,双向关联没有箭头
关联:
在这里插入图片描述


聚合关系

这里是引用
1.整体、成员(也叫部分)
2.成员(部分)独立存在
注意,聚合关系用菱形表示,不是箭头,而且是空心菱


组合关系

这里是引用
1.整体、成员(也叫部分)
2.成员(部分)能独立存在
注意,组合关系用菱形表示,不是箭头,是实心菱


依赖关系

在这里插入图片描述
1.耦合度最弱,
2.临时性的关系(不是整体和部分它们之间那样的关系)
3.虚线+箭头指向,被使用的类


继承关系

在这里插入图片描述
1.耦合度最强,
2.父子关系
3.实线空心三角形
4.指向父类
注意,继承关系使用实线+空心三角


实现关系

这里是引用
1.接口、实现类
2.实现关系使用虚线空心三角形
3.指向接口
注意,实现关系使用虚线+空心三角


单例模式

这里是引用
在这里插入图片描述
单例,使用一个内存空间,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
private static LazySingleton instance;
LazySingleton 是类型,
instance 是成员变量,
相当于,private static string color;
成员变量的类型写在成员变量前面并用空格连接它们,
注意,懒汉式单例模式,在加载类的时候,并没有单例生成,
只有在第一次调用getInstance()方法的时候,才会创建单例对象,
单例对象代码,如下:
在这里插入图片描述
使用测试类Test1验证在多次调用后,产生的是否为单例对象(即是否是同一个对象),代码如下:
在这里插入图片描述
测试结果,如下:
在这里插入图片描述
内存地址相同,都是4554617c,说明这4个实例就是同一个实例,即单例实例
在这里插入图片描述
注意,饿汉单例模式,在类创建的同时,就会同步建立一个静态的单例对象,之后也不会再作改变。
饿汉式代码,如下:
在这里插入图片描述
注意,使用final修饰的变量 ,表示其内存地址就已经固定了,不会再发生改变
测试在多次调用后,产生的实例是否是同一个实例,测试代码如下:
在这里插入图片描述
测试结果如下:
在这里插入图片描述
显然是同一个内存地址,说明再经过了3次调用,每次都得到同一个实例,即同一个单例

枚举类型,创建单例代码,如下:
在这里插入图片描述
注意,这里创建SingletonEnum类之前要手工选择Java中的enum代码,如下:
在这里插入图片描述
测试类代码如下:
在这里插入图片描述
测试结果,如下:
在这里插入图片描述
说明是同一个单例,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用Runtime的单例对象获取Java虚拟机的内存总量、最大内存,代码如下:
在这里插入图片描述
用Runtime的单例对象执行Windows命令的代码如下:
在这里插入图片描述
运行结果如下:
在这里插入图片描述
实现上述两个功能,完整代码,如下:
在这里插入图片描述
注意,主方法上有一个抛出异常的代码,
在这里插入图片描述
把执行ipconfig的结果存放到process变量里,
在这里插入图片描述
用getInputStream方法将变量process中的数据转成流数据放到变量inputStream中,
在这里插入图片描述
准备一个100兆空间大小的字节类型的变量arr,
在这里插入图片描述
把变量inputStream中的流数据通过read方法存放到字节变量 arr中,
在这里插入图片描述
把b个字节数据转成gbk码的字符串,


当通过Runtime执行像ipconfig这样的命令时,
命令的输出会被重定向到操作系统的一个进程间通信(IPC)通道,
这个通道我们不能直接以文本形式访问。
为了能够读取和处理这些输出,我们需要通过特定的流接口来访问这些数据。

Process类的getInputStream()方法就是用来获取这样一个InputStream对象的。

这个InputStream代表了子进程的标准输出流。

简单来说,命令的输出在操作系统层面是以字节流的形式存在的,
而InputStream正是Java中处理字节流的标准方式。

通过将进程的输出流转换为InputStream,
我们可以利用Java的I/O流库来读取、解析这些原始的字节数据,进而转换成我们能够理解和处理的格式,比如字符串。

September2024the27thFriday

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/433625.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器操作系统【sar 命令】

sar 安装、语法参数说明以及示例 文章目录 功能概述一、功能介绍1.安装配置2. 配置3. 启动二、sar 语法及参数说明三、示例及释义1.汇报 io 传输速率信息2.内存分页信息3.块设备状态信息4.hugepages 利用率统计信息5.列长度和负载平均值6.内存利用率统计信息7.swap 交换空间利用…

ARM点灯---看手册

知识点: 一个程序可能会遇到内存泄漏问题,可能一次运行泄漏几M大小,执行几个小时才会泄漏到站崩溃,所以要查看是否有内存泄漏。 查看手册教程 0927-上午 视频1:25;00 硬件程序开发流程 最小系统:单片…

16.第二阶段x86游戏实战2-发包函数和怎么去找改写过的发包函数

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…

使用celery+Redis+flask-mail发送邮箱验证码

Celery是一个分布式任务队列,它可以让你异步处理任务,例如发送邮件、图片处理、数据分析等。 在项目中和celery 有关系的文件如下: task.py : 创建celery.py 对象,并且添加任务,和app绑定,注意&#xff1…

实习前学一学git

工作区 暂存区 本地仓库 远程仓库 git commit -m "提交信息" 提交的是暂存区里的内容,没有git add 的不会被提交到本地仓库

对抗攻击方法详解:梯度攻击、转移攻击与模型集成攻击

对抗攻击方法详解:梯度攻击、转移攻击与模型集成攻击 近年来,随着深度学习模型在各个领域取得惊人突破,对抗攻击(Adversarial Attack) 逐渐成为研究热点。对抗攻击旨在通过在输入数据上施加精心设计的微小扰动&#x…

这样做快速除甲醛入住新家 科学分解甲醛的产品哪个好

这样做快速除甲醛入住新家 科学分解甲醛的产品哪个好 在新房装修的喜悦之余,业主们不得不面对一个常见却又棘手的问题——甲醛污染。甲醛,这种无形的敌人,以其难以察觉的存在,对家人和孩子的健康造成潜在威胁。很多业主们在装修期…

ArcEngine C#二次开发图层处理:根据属性分割图层(Split)

需求:仅根据某一属性,分割图层,并以属性值命名图层名称保存。 众所周知,ArcGIS ArcToolbox中通过Split可以实现图形分割一个图层,以属性值命名图层,如下图所示。 本文仅仅依据属性值,将一个shp…

InfiniiVision 3000T X 系列示波器

InfiniiVision 3000T X 系列示波器 综述 3000T X 系列示波器外形更为小巧,并配有简明直观的触摸屏用户界面,为您带来高端测量技术。 凭借其出色的波形捕获率,您可以捕获在其他示波器上无法捕获的偶发毛刺和异常。 3000T X 系列示波器搭配了…

猫头虎带你解决:error Error: certificate has expired

🐯猫头虎带你解决:error Error: certificate has expired 💥 今天有粉丝问猫哥:“🐯猫头虎,我在 Node.js 项目中使用 Yarn 安装包时遇到了一个错误:Error: certificate has expired。你能帮忙解…

Android Studio 真机USB调试运行频繁掉线问题

一、遇到问题 Android Studio使用手机运行项目时,总是频繁掉线,连接很不稳定,动不动就消失,基本上无法使用 二、问题出现原因 1、硬件问题:数据线 换条数据线试试,如果可以,那就是数据线的…

TortoiseGit 下载和安装

下载 1,下载路径 Download – TortoiseGit – Windows Shell Interface to Git 2,选择windows64的, 3,下载完成后 安装 1,双击运行,点击next 2,点击next 3,点击next 4&#xff0…

后端回写前端日期格式化

问题 不进行格式化处理&#xff0c;就会导致传递的字符串很奇怪 解决方案 注解&#xff08;字段&#xff09; <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.2</…

【大数据】大数据运维方案浅析总结

1. 引言 在大数据时代&#xff0c;如何高效管理和维护大规模数据平台&#xff0c;成为许多企业面临的重要挑战。本文将对市面上一些流行的大数据运维管理方案进行全面分析&#xff0c;包括Cloudera的CDH和CDP、Hortonworks的HDP、Apache的Ambari、国产开源平台Datasophon&#…

cups-browsed远程代码执行漏洞安全风险通告

今日&#xff0c;亚信安全CERT监控到安全社区研究人员发布安全通告&#xff0c;披露了cups-browsed 远程代码执行漏洞(CVE-2024-47176)。由于cups-browsed 服务在处理网络打印任务时&#xff0c;会绑定到 UDP 端口 631 上的 INADDR_ANY 地址&#xff0c;从而信任来自任何来源的…

什么是原生IP?

代理IP的各个类型称呼有很多&#xff0c;且它们在网络使用和隐私保护方面扮演着不同的角色。今天将探讨什么是原生IP以及原生IP和住宅IP之间的区别&#xff0c;帮助大家更好地理解这两者的概念和实际应用&#xff0c;并选择适合自己的IP类型。 一、什么是原生IP&#xff1f; 原…

【Java异常】(简简单单拿捏)

【Java异常】&#xff08;简简单单拿捏&#xff09; 1. 异常的简单介绍2. 异常的抛出2.1 语法 3. 异常的处理3.1 异常声明throws3.2 try-catch捕获并处理 4. 例子&#xff08;try-catch自定义异常&#xff09; 1. 异常的简单介绍 程序员在运行代码时会遇到很多异常&#xff0c…

Go语言开发后台框架不能只有CRUD还需有算法集成基础功能-GoFly框架集成了自然语言处理(NLP)分词、关键词提取和情感分析

前言 Go语言开发框架&#xff0c;我们要把Go的优势体现在框架中&#xff0c;不仅CRUD常规操作&#xff0c;还要把常用即有算力自己集成到框架中&#xff0c;而不是去购买第三方提供服务接口。作为开发者可以拓宽自己代码面&#xff0c;获取更多成就感&#xff0c;同时也提供自…

深入理解音视频pts,dts,time_base以及时间数学公式

引入 首先介绍一下基础名词 DTS&#xff08;Decoding Time Stamp&#xff09;&#xff1a;即解码时间戳&#xff0c;这个时间戳的意义在于告诉播放器该在什么时候解码这一帧的数据。当数据没b帧时&#xff0c;dts pts&#xff0c;有兴趣可参阅我前面视频知识类文章。 PTS&a…

Codeforces Round 973 (Div. 2) A-C 题解

C 提交 MLE 了一次&#xff0c;原因是找到答案没加感叹号 A. Zhan’s Blender 题意 原题描述还是不太清楚 你有 n n n 个水果&#xff0c;每秒可以放入搅拌机 y y y 个水果&#xff0c;搅拌机每秒可以搅拌 x x x 个水果&#xff0c;问最终至少需要多少秒能搅完&#xff1…