技术周总结 2024.07.08~07.14(算法,Python,Java,Scala,PHP)

news2024/9/24 7:22:33

文章目录

  • 一、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) - 1
        while i >= 0:
            # 寻找第一个空格的位置
            while i >= 0 and message[i] != ' ': i -= 1
            listWord.append(message[i+1:j+1])
            # 是空格的略过
            while i >= 0 and message[i] == ' ': i -= 1
            j = i

        return ' '.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} ]

总结

通过理解索引节点中的直接指针和多级间接指针的结构,我们可以计算出文件的逻辑块号以及单个文件的最大长度。这些计算依赖于块的大小、指针的大小以及索引节点中的指针数量。以上概述了如何推算这些值,并提供了一个具体的示例进行说明。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决:Failed to load PostCSS config: Failed to load PostCSS config

报错信息&#xff1a; [Failed to load PostCSS config: Failed to load PostCSS config (searchPath: D:/project/vite-vue-project): [Error] Must use import to load ES Module: D:\project\vite-vue-project\postcss.config.ts require() of ES modules is not supported…

从零编写一个神经网络完成手写数字的识别分类(pytorch实现)

1. 前言 很多人都有这样的困惑&#xff1a; “我已经看过很多有关神经网络的书和视频了&#xff0c;但为什么感觉还是似懂非懂呢&#xff1f;” 那是因为&#xff0c;你从来都没有完整的、从头编写并训练过一个神经网络 学习AI相关的算法&#xff0c;尤其是深度学习方向&…

【原创】springboot+mysql小区疫情防控网站设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

搭建hadoop+spark完全分布式集群环境

目录 一、集群规划 二、更改主机名 三、建立主机名和ip的映射 四、关闭防火墙(master,slave1,slave2) 五、配置ssh免密码登录 六、安装JDK 七、hadoop之hdfs安装与配置 1)解压Hadoop 2)修改hadoop-env.sh 3)修改 core-site.xml 4)修改hdfs-site.xml 5) 修改s…

2、ASPX、.NAT(环境/框架)安全

ASPX、.NAT&#xff08;环境/框架&#xff09;安全 源自小迪安全b站公开课 1、搭建组合&#xff1a; WindowsIISaspxsqlserver .NAT基于windows C开发的框架/环境 对抗Java xx.dll <> xx.jar 关键源码封装在dll文件内。 2、.NAT配置调试-信息泄露 功能点&#xf…

Docker 容器内的php 安装redis扩展

1、https://pecl.php.net/package/redis 下载redis扩展 2、解压redis扩展包&#xff0c;然后通过命令拷贝到php容器 docker cp ~/nginx/redis-4.3.0/* myphp-fpm:/usr/src/php/ext/redis/ myphp-fpm是你的php容器 &#xff5e;/nginx/redis**** 是redi扩展包路径 3、进入php容…

jenkins系列-09.jpom构建java docker harbor

本地先启动jpom server agent: /Users/jelex/Documents/work/jpom-2.10.40/server-2.10.40-release/bin jelexjelexxudeMacBook-Pro bin % sh Server.sh start/Users/jelex/Documents/work/jpom-2.10.40/agent-2.10.40-release/bin jelexjelexxudeMacBook-Pro bin % ./Agent.…

单元测试实施最佳方案(背景、实施、覆盖率统计)

1. 什么是单元测试&#xff1f; 对于很多开发人员来说&#xff0c;单元测试一定不陌生 单元测试是白盒测试的一种形式&#xff0c;它的目标是测试软件的最小单元——函数、方法或类。单元测试的主要目的是验证代码的正确性&#xff0c;以确保每个单元按照预期执行。单元测试通…

mysql-联合查询

一.联合查询的概念 .对于unio查询,就是把多次查询的结果合并起来,形成一个新的查询果集。 SELECT 字段列表 FROM 表A... UNION[ALL] SELECT 字段列表 FROM 表B...&#xff0c; 二.将薪资低于5000的员工,和年龄大于50岁的员工全部查询出来 select * from emp where salary&…

Vulnhub靶场 | DC系列 - DC2

目录 环境搭建渗透测试 环境搭建 靶机镜像下载地址&#xff1a;https://vulnhub.com/entry/dc-2,311/需要将靶机和 kali 攻击机放在同一个局域网里&#xff1b;本实验kali 的 IP 地址&#xff1a;192.168.10.146。 渗透测试 使用 nmap 扫描 192.168.10.0/24 网段存活主机 …

window下安装go环境

一、go官网下载安装包 官网地址如下&#xff1a;https://golang.google.cn/dl/ 选择对应系统的安装包&#xff0c;这里是window系统&#xff0c;可以选择zip包&#xff0c;下载完解压就可以使用 二、配置环境变量 这里的截图配置以win11为例 我的文件解压目录是 D:\Software…

【进阶篇-Day9:JAVA中单列集合Collection、List、ArrayList、LinkedList的介绍】

目录 1、集合的介绍1.1 概念1.2 集合的分类 2、单列集合&#xff1a;Collection2.1 Collection的使用2.2 集合的通用遍历方式2.2.1 迭代器遍历&#xff1a;&#xff08;1&#xff09;例子&#xff1a;&#xff08;2&#xff09;迭代器遍历的原理&#xff1a;&#xff08;3&…

Halcon机器视觉15种缺陷检测案例_2不均匀表面刮伤检测

2&#xff1a; 不均匀表面刮伤检测 思路 1、获取图像 2、分割图像 3、处理区域 4、获取大&#xff0c;小缺陷 效果 原图 代码 *02 不均匀表面刮伤检测 dev_update_off () dev_close_window ()*****************第一步 获取图像******************* read_image (Image, 2.不…

集成excel工具:自定义导入回调监听器、自定义类型转换器、web中的读

文章目录 I 封装导入导出1.1 定义工具类1.2 自定义读回调监听器: 回调业务层处理导入数据1.3 定义文件导入上下文1.4 定义回调协议II 自定义转换器2.1 自定义枚举转换器2.2 日期转换器2.3 时间、日期、月份之间的互转2.4 LongConverterIII web中的读3.1 使用默认回调监听器3.2…

NAT地址转换+多出口智能选路,附加实验内容

本章主要讲&#xff1a;基于目标IP、双向地址的转换 注意&#xff1a;基于目标NAT进行转换 ---基于目标IP进行地址转换一般是应用在服务器端口映射&#xff1b; NAT的基础知识 1、服务器映射 服务器映射是基于目标端口进行转换&#xff0c;同时端口号也可以进行修改&…

AI算法14-套索回归算法Lasso Regression | LR

套索回归算法概述 套索回归算法简介 在统计学和机器学习中&#xff0c;套索回归是一种同时进行特征选择和正则化&#xff08;数学&#xff09;的回归分析方法&#xff0c;旨在增强统计模型的预测准确性和可解释性&#xff0c; 正则化是一种回归的形式&#xff0c;它将系数估…

接口基础知识2:http通信的组成

课程大纲 一、http协议 HTTP&#xff08;Hypertext Transfer Protocol&#xff0c;超文本传输协议&#xff09;是互联网中被使用最广的一种网络协议&#xff0c;用于客户端与服务器之间的通信。 HTTP协议定义了一系列的请求方法&#xff0c;例如 GET、POST、PUT、DELETE 等&…

一篇学通Axios

Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;用于浏览器和 node.js 环境。它提供了一种简单易用的方式来发送 HTTP 请求&#xff0c;并支持诸如请求和响应拦截、转换数据、取消请求以及自动转换 JSON 数据等功能。 Axios 名字的由来 Axios 的名字来源于希腊神话中的…

在Linux系统实现瑞芯微RK3588部署rknntoolkit2进行模型转换

一、首先要先安装一个虚拟的环境 安装Miniconda包 Miniconda的官网链接:Minidonda官网 下载好放在要操作的linux系统,我用的是远程服务器的linux系统,我放在whl这个文件夹里面,这个文件夹是我自己创建的 运行安装 安装的操作都是yes就可以了 检查是否安装成功,输入下面…

秋招突击——7/13——多线程编程(基础知识回顾+编程练习 )

文章目录 引言基础知识Synchronized关键字使用方式用于同步方法针对同步块的方法静态方法使用原理解析 Volatile使用方式实现原理 final关键字 编程练习&#xff08;synchronized就能实现&#xff09;双线程轮流打印1-100个人实现参考实现 三线程顺序打出1-100个人实现参考实现…