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

技术周总结 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} ]

关系和区别

  1. MTTF 与 MTBF

    • MTTF 适用于不可修复的系统或设备,表示设备从开始运行到首次故障的平均时间。
    • MTBF 适用于可修复的系统或设备,表示两次故障之间的平均时间。MTBF 包含了 MTTF 和 MTTR。
  2. MTTR 与 MTBF

    • MTTR 仅表示修复时间,不包含正常运行时间。
    • MTBF 包含了 MTTR 和 MTTF,表示两次故障之间的完整周期,包括正常运行时间和修复时间。
  3. 公式关系

    • 对于可修复系统,MTBF 可以分解为 MTTF 和 MTTR 的和:
      [ \text{MTBF} = \text{MTTF} + \text{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()方法有两种形式:

  1. Object[] toArray()
  2. <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)中的地址索引方式紧密相关。通过理解这些地址索引方式,可以推算出单个文件的最大长度。下面逐步介绍这一过程。

文件逻辑块号与地址索引

地址索引方式

文件系统中的索引节点通常使用以下几种地址索引方式:

  1. 直接指针:索引节点直接包含指向数据块的指针。
  2. 单级间接指针:指向一个间接块,间接块中包含指向数据块的指针。
  3. 双级间接指针:指向一个双重间接块,双重间接块中包含指向间接块的指针,间接块中再包含指向数据块的指针。
  4. 三级间接指针:指向一个三级间接块,三级间接块中包含指向双重间接块的指针,双重间接块中再包含指向间接块的指针,间接块中再包含指向数据块的指针。

计算逻辑块号

假设每个块的大小为B,每个指针的大小为P,则每个块中可以存储B / P个指针。

  1. 直接指针:如果索引节点有N个直接指针,则它们可以直接指向N个数据块。
  2. 单级间接指针:一个单级间接块可以存储B / P个指针,每个指针指向一个数据块,因此单级间接指针可以访问B / P个数据块。
  3. 双级间接指针:一个双级间接块可以存储B / P个指向间接块的指针,每个间接块又可以存储B / P个指向数据块的指针,因此双级间接指针可以访问(B / P) * (B / P)个数据块。
  4. 三级间接指针:一个三级间接块可以存储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

计算如下:

  1. 直接指针块数:12
  2. 单级间接指针块数:[ \frac{4096}{4} = 1024 ]
  3. 双级间接指针块数:[ \left(\frac{4096}{4}\right)^2 = 1024 \times 1024 = 1048576 ]
  4. 三级间接指针块数:[ \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&#xff09;算法题&#xff1a;字符串中的单词反转1.1&#xff09; 问题01:可靠性计算中的MTTR MTTF MTBF 分别指什么&#xff1f;他们之间有什么联系&#xff1f;MTTR (Mean Time to Repair)MTTF (Mean Time to Failure)MTBF (Mean Time Between F…...

UnityECS学习中问题及总结entityQuery.ToComponentDataArray和entityQuery.ToEntityArray区别

在Unity的ECS&#xff08;Entity Component System&#xff09;开发中&#xff0c;entityQuery.ToComponentDataArray<T>(Allocator.Temp) 和 entityQuery.ToEntityArray(Allocator.Temp) 是两种不同的方法&#xff0c;用于从实体查询中获取数据。除了泛型参数之外&#…...

[python]基于yolov10+gradio目标检测演示系统设计

【设计介绍】 YOLOv10结合Gradio实现目标检测系统设计是一个结合了最新目标检测技术和快速部署框架的项目。下面将详细介绍这一系统的设计和实现过程。 一、YOLOv10介绍 YOLOv10是YOLO&#xff08;You Only Look Once&#xff09;系列的最新版本&#xff0c;由清华大学的研究…...

浏览器开发者视角及CSS表达式选择元素

点击想要查看的接口&#xff0c;然后点击检查&#xff0c;便可以切换到该接口对应的html代码 如果F12不起作用的话&#xff0c;点击更多工具&#xff0c;然后选择开发者工具即可 ctrlF可以去查阅相关的CSS表达式选择元素 如果没有加#t1&#xff0c;那么表示的是选择所有的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程序右下角弹窗消息提示

前言 消息通知在应用程序中&#xff0c;是一种非常有用的功能&#xff0c;实现对一些重要信息、提醒或警告及时向用户展示。我们在使用软件时&#xff0c;通常会收到一种从桌面右下角弹出的&#xff08;提示信息或广告&#xff09;信息框。本文将介绍使用 C# 实现此种方式的信息…...

Java三剑客:封装、继承、多态的魔法世界

第一章&#xff1a;封装的艺术 —— 保护你的宝藏 案例分析&#xff1a;银行账户系统 想象一下&#xff0c;你正在构建一个银行账户系统。每个账户都有一个余额&#xff0c;这个余额需要受到严格的保护&#xff0c;不能被随意修改。我们可以通过封装来实现这一目标。 示例代…...

0145__Linux的capability

https://zhuanlan.zhihu.com/p/693896673 Linux的capability深入分析&#xff08;1&#xff09;_linux 设置进程capprm-CSDN博客 cap_init(3) - Linux manual page...

# Redis 入门到精通(一)数据类型(4)

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

西邮计科嵌入式复习

西邮嵌入式复习 一、第一章复习二、第二章复习三、第三章复习四、第四章复习 一、第一章复习 二、第二章复习 三、第三章复习 四、第四章复习...

Java如何使用 HttpClientUtils 发起 HTTP 请求

Java如何使用 HttpClientUtils 发起 HTTP 请求 一、前言1.HttpClientUtils 类概览2.解析 HttpClientUtils 类3.使用 HttpClientUtils 类 一、前言 在现代的软件开发中&#xff0c;经常需要与远程服务器进行通信&#xff0c;例如获取数据或发送数据。Apache HttpClient 是一个流…...

无人机的工作原理

无人飞行器&#xff08;UAV&#xff0c;即Unmanned Aerial Vehicle&#xff09;的工作原理涉及多个复杂的系统和技术。以下是对各个系统和技术的详细介绍&#xff1a; 1. 飞行控制系统&#xff08;FCS&#xff09; 飞行控制系统是无人机的“大脑”&#xff0c;负责监控和调整…...

敏捷开发笔记(第10章节)--Liskov原则(LSP)

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

基于SSM的校园一卡通管理系统的设计与实现

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

新版Android Studio中设置gradle的JDK版本

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

打造你的智能家居指挥中心:基于STM32的多协议(zigbee、http)网关(附代码示例)

1. 项目概述 随着物联网技术的蓬勃发展&#xff0c;智能家居正逐步融入人们的日常生活。然而&#xff0c;市面上琳琅满目的智能家居设备通常采用不同的通信协议&#xff0c;导致不同品牌设备之间难以实现互联互通。为了解决这一难题&#xff0c;本文设计了一种基于STM32的多协…...

【基于R语言群体遗传学】-16-中性检验Tajima‘s D及连锁不平衡 linkage disequilibrium (LD)

Tajimas D Test 已经开发了几种中性检验&#xff0c;用于识别模型假设的潜在偏差。在这里&#xff0c;我们将说明一种有影响力的中性检验&#xff0c;即Tajimas D&#xff08;Tajima 1989&#xff09;。Tajimas D通过比较数据集中的两个&#x1d703; 4N&#x1d707;估计值来…...

防火墙组网与安全策略实验

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

xmind梳理测试点,根据这些测试点去写测试用例

基本流&#xff08;冒烟用例必写&#xff09; 备选流 公共测试点&#xff1a;...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板&#xff08;STM32F103RBT6&#xff09;通过I2C驱动ICM20948九轴传感器&#xff0c;实现姿态解算&#xff0c;并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化&#xff0c;适合嵌入式及物联网开发者。在基础驱动上新增…...