技术周总结 2024.07.08~07.14(算法,Python,Java,Scala,PHP)
文章目录
- 一、07.13 周六
- 1.0)算法题:字符串中的单词反转
- 1.1) 问题01:可靠性计算中的MTTR MTTF MTBF 分别指什么?他们之间有什么联系?
- MTTR (Mean Time to Repair)
- MTTF (Mean Time to Failure)
- MTBF (Mean Time Between Failures)
- 关系和区别
- 举例说明
- 1.2) 问题02 java中,list的 toArray()方法怎么使用
- 1. `Object[] toArray()`
- 2. `<T> T[] toArray(T[] a)`
- 使用示例
- 总结
- 1.3) 问题03: 文件系统节点法中的逻辑号,与地址索引和单个文件最大长度的关系及计算
- 文件逻辑块号与地址索引
- 地址索引方式
- 计算逻辑块号
- 单个文件最大长度的计算
- 总数据块数
- 最大文件大小
- 示例
- 总结
一、07.13 周六
1.0)算法题:字符串中的单词反转
字符串中的单词反转
题解实现:https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/solutions/2842057/fang-xiang-bian-li-bing-jie-qu-chu-dan-c-s5j7/
class Solution:def reverseMessage(self, message: str) -> str: listWord = []# 去掉开头结束的空格message = message.strip()i = j = len(message) - 1while i >= 0:# 寻找第一个空格的位置while i >= 0 and message[i] != ' ': i -= 1listWord.append(message[i+1:j+1])# 是空格的略过while i >= 0 and message[i] == ' ': i -= 1j = ireturn ' '.join(listWord)
1.1) 问题01:可靠性计算中的MTTR MTTF MTBF 分别指什么?他们之间有什么联系?
在可靠性工程和维护管理中,MTTR、MTTF 和 MTBF 是三个重要的指标。它们用于评估系统或设备的可靠性和维护需求。以下是每个指标的定义及它们之间的联系:
MTTR (Mean Time to Repair)
平均修复时间(MTTR)是指系统或设备发生故障后,从故障发生到修复完成并恢复正常运行所需的平均时间。MTTR 是衡量维护效率的重要指标,表示系统在出现故障后的平均修复时间。
公式:
[ \text{MTTR} = \frac{\text{总修复时间}}{\text{修复次数}} ]
MTTF (Mean Time to Failure)
平均故障间隔时间(MTTF)是指系统或设备在正常运行状态下,从开始运行到首次发生故障的平均时间。MTTF 通常用于不可修复系统或设备(例如一次性使用的产品),表示设备在首次故障前的平均运行时间。
公式:
[ \text{MTTF} = \frac{\text{总运行时间}}{\text{故障次数}} ]
MTBF (Mean Time Between Failures)
平均故障间隔时间(MTBF)是指系统或设备在两次故障之间的平均运行时间。MTBF 是衡量系统可靠性的一个关键指标,表示在多个故障循环中的平均无故障运行时间。MTBF 通常用于可修复系统或设备。
公式:
[ \text{MTBF} = \text{MTTF} + \text{MTTR} ]
关系和区别
-
MTTF 与 MTBF:
- MTTF 适用于不可修复的系统或设备,表示设备从开始运行到首次故障的平均时间。
- MTBF 适用于可修复的系统或设备,表示两次故障之间的平均时间。MTBF 包含了 MTTF 和 MTTR。
-
MTTR 与 MTBF:
- MTTR 仅表示修复时间,不包含正常运行时间。
- MTBF 包含了 MTTR 和 MTTF,表示两次故障之间的完整周期,包括正常运行时间和修复时间。
-
公式关系:
- 对于可修复系统,MTBF 可以分解为 MTTF 和 MTTR 的和:
[ \text{MTBF} = \text{MTTF} + \text{MTTR} ]
- 对于可修复系统,MTBF 可以分解为 MTTF 和 MTTR 的和:
举例说明
假设一个系统在 100 小时内发生了 4 次故障,总修复时间为 8 小时。
-
MTTR:
[ \text{MTTR} = \frac{8 \text{小时}}{4 \text{次}} = 2 \text{小时/次} ] -
MTTF:
[ \text{MTTF} = \frac{92 \text{小时}}{4 \text{次}} = 23 \text{小时/次} ]
(因为总运行时间 100 小时 - 总修复时间 8 小时 = 92 小时) -
MTBF:
[ \text{MTBF} = 23 \text{小时/次} + 2 \text{小时/次} = 25 \text{小时/次} ]
通过以上例子,可以看到 MTTR、MTTF 和 MTBF 是如何计算并相互联系的。理解这些指标有助于评估和改进系统的可靠性和维护策略。
1.2) 问题02 java中,list的 toArray()方法怎么使用
在Java中,List
接口提供了toArray()
方法,用于将List
转换为数组。toArray()
方法有两种形式:
Object[] toArray()
<T> T[] toArray(T[] a)
下面分别介绍这两种形式的使用方法。
1. Object[] toArray()
这个方法将List
中的所有元素返回为一个Object
数组。由于返回的是Object
数组,因此在需要特定类型的数组时,需要进行类型转换。
import java.util.ArrayList;
import java.util.List;public class ToArrayExample {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Cherry");// 使用 toArray() 方法Object[] array = list.toArray();// 输出数组内容for (Object element : array) {System.out.println(element);}}
}
2. <T> T[] toArray(T[] a)
这个方法将List
中的所有元素返回为一个指定类型的数组。如果传入的数组长度足够大,则使用该数组存储元素;否则,将创建一个新的数组并返回。
import java.util.ArrayList;
import java.util.List;public class ToArrayExample {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Cherry");// 使用 toArray(T[] a) 方法String[] array = list.toArray(new String[0]);// 输出数组内容for (String element : array) {System.out.println(element);}}
}
在这个例子中,我们传递了一个长度为0的字符串数组给toArray
方法。Java会根据列表的大小创建一个新的字符串数组,并返回包含所有列表元素的数组。
使用示例
import java.util.ArrayList;
import java.util.List;public class ToArrayExample {public static void main(String[] args) {List<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);// 使用 toArray() 方法转换为 Object 数组Object[] objectArray = list.toArray();System.out.println("Object Array:");for (Object obj : objectArray) {System.out.println(obj);}// 使用 toArray(T[] a) 方法转换为 Integer 数组Integer[] intArray = list.toArray(new Integer[0]);System.out.println("Integer Array:");for (Integer num : intArray) {System.out.println(num);}}
}
总结
Object[] toArray()
: 将List
转换为Object
数组,适用于不关心数组类型或需要进行类型转换的情况。<T> T[] toArray(T[] a)
: 将List
转换为指定类型的数组,推荐使用这种方法,因为它避免了类型转换,提供了类型安全性。
1.3) 问题03: 文件系统节点法中的逻辑号,与地址索引和单个文件最大长度的关系及计算
在文件系统中,文件的逻辑块号与索引节点(inode)中的地址索引方式紧密相关。通过理解这些地址索引方式,可以推算出单个文件的最大长度。下面逐步介绍这一过程。
文件逻辑块号与地址索引
地址索引方式
文件系统中的索引节点通常使用以下几种地址索引方式:
- 直接指针:索引节点直接包含指向数据块的指针。
- 单级间接指针:指向一个间接块,间接块中包含指向数据块的指针。
- 双级间接指针:指向一个双重间接块,双重间接块中包含指向间接块的指针,间接块中再包含指向数据块的指针。
- 三级间接指针:指向一个三级间接块,三级间接块中包含指向双重间接块的指针,双重间接块中再包含指向间接块的指针,间接块中再包含指向数据块的指针。
计算逻辑块号
假设每个块的大小为B
,每个指针的大小为P
,则每个块中可以存储B / P
个指针。
- 直接指针:如果索引节点有
N
个直接指针,则它们可以直接指向N
个数据块。 - 单级间接指针:一个单级间接块可以存储
B / P
个指针,每个指针指向一个数据块,因此单级间接指针可以访问B / P
个数据块。 - 双级间接指针:一个双级间接块可以存储
B / P
个指向间接块的指针,每个间接块又可以存储B / P
个指向数据块的指针,因此双级间接指针可以访问(B / P) * (B / P)
个数据块。 - 三级间接指针:一个三级间接块可以存储
B / P
个指向双级间接块的指针,每个双级间接块可以存储(B / P) * (B / P)
个指向间接块的指针,因此三级间接指针可以访问(B / P) * (B / P) * (B / P)
个数据块。
单个文件最大长度的计算
总数据块数
假设索引节点包含D
个直接指针、一个单级间接指针、一个双级间接指针和一个三级间接指针,计算总数据块数T
如下:
[ T = D + \frac{B}{P} + \left(\frac{B}{P}\right)^2 + \left(\frac{B}{P}\right)^3 ]
最大文件大小
最大文件大小为总数据块数乘以每个数据块的大小:
[ \text{最大文件大小} = T \times B ]
示例
假设:
- 每个块大小
B = 4096
字节(4KB) - 每个指针大小
P = 4
字节 - 索引节点有12个直接指针(
D = 12
)
计算如下:
- 直接指针块数:12
- 单级间接指针块数:[ \frac{4096}{4} = 1024 ]
- 双级间接指针块数:[ \left(\frac{4096}{4}\right)^2 = 1024 \times 1024 = 1048576 ]
- 三级间接指针块数:[ \left(\frac{4096}{4}\right)^3 = 1024 \times 1024 \times 1024 = 1073741824 ]
总数据块数:
[ T = 12 + 1024 + 1048576 + 1073741824 = 1074790656 ]
最大文件大小:
[ \text{最大文件大小} = 1074790656 \times 4096 \approx 4 \text{TB} ]
总结
通过理解索引节点中的直接指针和多级间接指针的结构,我们可以计算出文件的逻辑块号以及单个文件的最大长度。这些计算依赖于块的大小、指针的大小以及索引节点中的指针数量。以上概述了如何推算这些值,并提供了一个具体的示例进行说明。
相关文章:

技术周总结 2024.07.08~07.14(算法,Python,Java,Scala,PHP)
文章目录 一、07.13 周六1.0)算法题:字符串中的单词反转1.1) 问题01:可靠性计算中的MTTR MTTF MTBF 分别指什么?他们之间有什么联系?MTTR (Mean Time to Repair)MTTF (Mean Time to Failure)MTBF (Mean Time Between F…...
UnityECS学习中问题及总结entityQuery.ToComponentDataArray和entityQuery.ToEntityArray区别
在Unity的ECS(Entity Component System)开发中,entityQuery.ToComponentDataArray<T>(Allocator.Temp) 和 entityQuery.ToEntityArray(Allocator.Temp) 是两种不同的方法,用于从实体查询中获取数据。除了泛型参数之外&#…...

[python]基于yolov10+gradio目标检测演示系统设计
【设计介绍】 YOLOv10结合Gradio实现目标检测系统设计是一个结合了最新目标检测技术和快速部署框架的项目。下面将详细介绍这一系统的设计和实现过程。 一、YOLOv10介绍 YOLOv10是YOLO(You Only Look Once)系列的最新版本,由清华大学的研究…...

浏览器开发者视角及CSS表达式选择元素
点击想要查看的接口,然后点击检查,便可以切换到该接口对应的html代码 如果F12不起作用的话,点击更多工具,然后选择开发者工具即可 ctrlF可以去查阅相关的CSS表达式选择元素 如果没有加#t1,那么表示的是选择所有的p 使用…...

GuLi商城-商品服务-API-品牌管理-统一异常处理
每个方法都加这段校验太麻烦了 准备做一个统一异常处理@ControllerAdvice 后台代码: package com.nanjing.gulimall.product.exception;import com.nanjing.common.exception.BizCodeEnum; import com.nanjing.common.utils.R; import lombok.extern.slf4j.Slf4j; import org…...
VUE+Spring Flux实现SSE长连接
VUE代码 // 初始化EventSourceinitEventSource(url) {const token getAccessToken();const eventSource new EventSourcePolyfill(url, {headers: {Authorization: Bearer ${token},tenant-id: getTenantId(),}});eventSource.onerror (e) > {console.log("SSE连接错…...
C#实现Winform程序右下角弹窗消息提示
前言 消息通知在应用程序中,是一种非常有用的功能,实现对一些重要信息、提醒或警告及时向用户展示。我们在使用软件时,通常会收到一种从桌面右下角弹出的(提示信息或广告)信息框。本文将介绍使用 C# 实现此种方式的信息…...
Java三剑客:封装、继承、多态的魔法世界
第一章:封装的艺术 —— 保护你的宝藏 案例分析:银行账户系统 想象一下,你正在构建一个银行账户系统。每个账户都有一个余额,这个余额需要受到严格的保护,不能被随意修改。我们可以通过封装来实现这一目标。 示例代…...
0145__Linux的capability
https://zhuanlan.zhihu.com/p/693896673 Linux的capability深入分析(1)_linux 设置进程capprm-CSDN博客 cap_init(3) - Linux manual page...

# Redis 入门到精通(一)数据类型(4)
Redis 入门到精通(一)数据类型(4) 一、redis 数据类型–sorted_set实现时效性任务管理 1、sorted_set 类型数据操作的注意事项 score 保存的数据存储空间是64位,如果是整数范围是-9007199254740992~9007199254740992…...

西邮计科嵌入式复习
西邮嵌入式复习 一、第一章复习二、第二章复习三、第三章复习四、第四章复习 一、第一章复习 二、第二章复习 三、第三章复习 四、第四章复习...
Java如何使用 HttpClientUtils 发起 HTTP 请求
Java如何使用 HttpClientUtils 发起 HTTP 请求 一、前言1.HttpClientUtils 类概览2.解析 HttpClientUtils 类3.使用 HttpClientUtils 类 一、前言 在现代的软件开发中,经常需要与远程服务器进行通信,例如获取数据或发送数据。Apache HttpClient 是一个流…...
无人机的工作原理
无人飞行器(UAV,即Unmanned Aerial Vehicle)的工作原理涉及多个复杂的系统和技术。以下是对各个系统和技术的详细介绍: 1. 飞行控制系统(FCS) 飞行控制系统是无人机的“大脑”,负责监控和调整…...

敏捷开发笔记(第10章节)--Liskov原则(LSP)
目录 1:PDF上传链接 10.1 Liskov替换原则(LSP) 10.2 一个违反LSP的简单例子 10.6 启发式规则和习惯用法 10.7 结论 1:PDF上传链接 【免费】敏捷软件开发(原则模式与实践)资源-CSDN文库 OCP背后的主要机制是抽象(abstraction…...

基于SSM的校园一卡通管理系统的设计与实现
摘 要 本报告全方位、深层次地阐述了校园一卡通管理系统从构思到落地的整个设计与实现历程。此系统凭借前沿的 SSM(Spring、Spring MVC、MyBatis)框架精心打造而成,旨在为学校构建一个兼具高效性、便利性与智能化的一卡通管理服务平台。 该系…...

新版Android Studio中设置gradle的JDK版本
旧版android studio 在旧版(具体哪个版本号之前搞不清了)中设置JDK版本在>File——>Project Structure——>SDK location——>Gradle Setting——>Gradle SDK 新版android studio 某次更新后发现SDK location下找不到Gradle Setting选项…...

打造你的智能家居指挥中心:基于STM32的多协议(zigbee、http)网关(附代码示例)
1. 项目概述 随着物联网技术的蓬勃发展,智能家居正逐步融入人们的日常生活。然而,市面上琳琅满目的智能家居设备通常采用不同的通信协议,导致不同品牌设备之间难以实现互联互通。为了解决这一难题,本文设计了一种基于STM32的多协…...

【基于R语言群体遗传学】-16-中性检验Tajima‘s D及连锁不平衡 linkage disequilibrium (LD)
Tajimas D Test 已经开发了几种中性检验,用于识别模型假设的潜在偏差。在这里,我们将说明一种有影响力的中性检验,即Tajimas D(Tajima 1989)。Tajimas D通过比较数据集中的两个𝜃 4N𝜇估计值来…...

防火墙组网与安全策略实验
实验要求: 实现: 防火墙接口配置: 所有接口均配置为三层接口 由于G1/0/3口下为vlan环境,所以防火墙需要配置子接口 : 交换机划分vlan分开生产区和办公区、配置trunk干道 : 安全策略: 生产区访…...

xmind梳理测试点,根据这些测试点去写测试用例
基本流(冒烟用例必写) 备选流 公共测试点:...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
加密通信 + 行为分析:运营商行业安全防御体系重构
在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...