每日计划-1114

  1. 完成 14. 最长公共前缀

#include <string>
#include <vector>class Solution {
public:string longestCommonPrefix(std::vector<std::string>& strs) {if (!strs.size()) {return "";}int length = strs[0].size();int count = strs.size();for (int i = 0; i < length; ++i) {char c = strs[0][i];for (int j = 1; j < count; ++j) {if (i == strs[j].size() || strs[j][i] != c) {// 则返回第一个字符串从开头到当前位置(不包括当前位置)的子串,即为最长公共前缀return strs[0].substr(0, i);}}}// 如果循环结束都没有找到不同的字符,说明第一个字符串就是最长公共前缀,直接返回它return strs[0];}
};
 

  1. 八股部分

1.C++函数的返回值在内存中的传递过程

返回基本数据类型(如 intfloat 等)

  • 当函数返回一个基本数据类型时,通常是通过寄存器来传递返回值。例如,在许多常见的体系结构中,像 32 位的系统,函数返回一个int类型的值可能会使用EAX寄存器(在 x86 架构下)。

  • 以一个简单的函数int add(int a, int b)为例,函数在计算a + b后,结果会被存储到一个寄存器中,然后控制流返回到调用函数的地方,调用函数可以从这个寄存器中获取返回值。

返回对象(自定义类型)

  • 值返回:如果函数返回一个对象是通过值返回的方式,那么会在函数栈帧中创建一个临时对象。这个临时对象是通过调用对象的拷贝构造函数来初始化的。

  • 例如,有一个函数MyClass func(),MyClass是一个自定义的类。当函数返回时,会在栈上创建一个MyClass类型的临时对象,把函数内部的局部对象的内容拷贝到这个临时对象中。然后这个临时对象会被复制(如果是作为赋值语句的一部分)或者直接用于初始化(如果是初始化另一个对象)在调用函数的地方。

  • 引用返回:当函数返回一个引用时,实际上返回的是对象的引用(内存地址)。

  • 比如MyClass& func(),这个函数返回一个MyClass对象的引用。这要求被引用的对象在函数返回后仍然存在。通常用于返回类的成员变量或者全局变量的引用,因为如果返回一个局部对象的引用,当函数结束,局部对象的生命周期结束,引用就会变成悬空引用,这是错误的用法。

  • 返回指针:函数返回一个指针时,返回的是一个内存地址。

  • 例如int* func(),返回的指针必须指向一个有效的内存区域。这个内存区域可以是在堆上动态分配的(通过new操作符),在这种情况下,调用函数需要负责释放内存;也可以是指向全局变量或者静态变量的地址。如果返回一个指向局部变量的指针,当函数结束,局部变量的内存被释放,这个指针就会变成野指针。

2.什么是虚拟内存,为什么要使用虚拟内存,虚拟内存可能比物理内存大吗

  • 定义:虚拟内存是一种内存管理技术,它为每个进程提供了一个独立的、连续的虚拟地址空间。这个虚拟地址空间是由操作系统和硬件共同实现的。对于一个 32 位的系统,每个进程的虚拟地址空间大小通常是 4GB(字节),对于 64 位系统则要大得多。

  • 为什么要使用虚拟内存

隔离进程:每个进程都有自己的虚拟地址空间,使得进程之间相互隔离。这样,一个进程中的错误(如访问非法地址)不会影响到其他进程,增强了系统的稳定性和安全性。

方便内存管理:允许程序使用比物理内存更大的地址空间。程序可以按照自己的需要使用内存,而不必担心物理内存的实际大小。操作系统会在幕后负责将虚拟内存地址映射到物理内存地址。

便于共享内存:多个进程可以共享同一段虚拟内存区域,这些虚拟内存区域可以映射到相同的物理内存区域。例如,在多个进程运行同一个程序的代码段时,代码段的虚拟内存可以映射到相同的物理内存,节省了物理内存的使用。

  • 虚拟内存可能比物理内存大吗

是的,虚拟内存可以比物理内存大。虚拟内存的大小是由计算机的地址位数决定的。例如,在 32 位系统中,理论上每个进程可以有 4GB 的虚拟地址空间,而实际的物理内存可能只有 1GB、2GB 等。操作系统通过将部分暂时不使用的虚拟内存数据存储到磁盘(通常是磁盘上的交换空间或页面文件)上,来实现虚拟内存大于物理内存的功能。当进程需要访问这些存储在磁盘上的数据时,操作系统会将其他不太紧急的数据从物理内存交换到磁盘,然后把需要的数据从磁盘交换到物理内存,这个过程被称为页面置换。这种机制使得程序可以在有限的物理内存下运行更大的程序或者同时运行多个程序。

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

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

相关文章

《深度学习》AlexNet网络

文章目录 1.AlexNet的网络架构2.示例&#xff1a;手写数字识别2.1 数据读取 学习目标&#xff1a; 知道AlexNet网络结构能够利用AlexNet完成图像分类 2012年&#xff0c;AlexNet横空出世&#xff0c;该模型的名字源于论⽂第⼀作者的姓名AlexKrizhevsky 。AlexNet使⽤了8层卷积…

嵌入式软件开发环境的搭建

1.ARM指令模拟器环境搭建 keil软件 KEIL是公司的名称&#xff0c;有时候也指KEIL公司的所有软件开发工具。2005年&#xff0c;Keil被ARM公司收购&#xff0c;成为 ARM的子公司之一。 MDK&#xff08;Microcontroller Development Kit&#xff09; &#xff0c;也称MDK-ARM、…

模型广场上线!一键开启免费体验

模型广场上新&#xff0c;多款模型任君挑选~ 限时免费体验&#xff01;快来开启你的AI创作之旅吧~ 01 comfyui 工作流 ComfyUI是一个基于Stable Diffusion开发的图形用户界面&#xff08;GUI&#xff09;&#xff0c;它将Stable Diffusion的流程拆分成节点&#xff0c;你能够…

Java的dto,和多表的调用

1理论 需求是新增菜品eg&#xff1a;菜名:豆腐脑&#xff1b;口味&#xff1a;甜口&#xff0c;咸口&#xff0c; 菜单表&#xff1a;dish&#xff1b;口味表dish_flavor&#xff1b; 1dto:数据传输对象 新建一个dishDto对象有两个表里的属性 2用到两个表&#xff0c;dish,d…

python爬虫js逆向进阶——请求的网页源码被加密,解密方法全过程(19)

文章目录 1、任务目标2、网页分析3、代码编写1、任务目标 目标网站:https://jzsc.mohurd.gov.cn/data/company,该网站的网页源码被加密了,用于本文测验 要求:解密该网站的网页源码,请求网站并返回解密后的明文数据,网页内容如下: 2、网页分析 进入网站,打开开发者模式,…

二、vue指令

1、v-bind ⽬标 : 给标签属性设置 vue 变量的值 vue 指令 , 实质上就是特殊的 html 标签属性 , 特点 : v- 开头 每个指令 , 都有独⽴的作⽤ 语法&#xff1a; v-bind:属性名"vue变量" 简写&#xff1a; : 属性名"vue变量" <!-- vue 指令 -v-bi…

VASA-1: Lifelike Audio-Driven Talking Faces Generated in Real Time

TL;DR 2024 年微软发表的数字人工作 VASA-1&#xff0c;支持基于单人头像照片和语音音频输入&#xff0c;来实时生成数字人视频。支持在线生成高达 40 FPS 的 512512 分辨率视频&#xff0c;目前为数不多能做到实时推理且效果很好的 talking face 工作。 Paper name VASA-1:…

【Ubuntu24.04】服务部署(基础)

目录 0 背景1 设置静态IP2 连接服务器3 部署服务3.1 安装JDK3.2 下载并安装MySQL8.43.2.1 从官网下载 APT Repository 配置文件3.2.2 安装 MySQL8.43.2.3 配置远程连接 3.3 下载并配置Redis3.4 上传jar包并部署应用3.5 开放端口 4 总结 0 背景 在成功安装了Ubuntu24.04操作系统…

[Java]Properties类加载配置文件

在我JDBC的文章末尾展示了完整的JDBC使用流程。但那种方式有一个问题&#xff0c;如果项目需要更换数据库&#xff0c;或者这个项目本来就是要使用多种数据库&#xff0c;那么像这种把信息写死在代码里边的编写模式&#xff0c;是肯定不行的。实际开发中肯定不会使用这种把信息…

STM32CUBEIDE的使用【五】TFT_LCD

硬件平台&#xff1a; 正点原子潘多拉开发板 STM32L475 软件平台&#xff1a; STM3232CubeMX 、STM32CUBEIDE 屏幕尺寸为1.3寸 分辨率240*240 16位真彩色 使用SPI接口驱动TFT_LCD 用来显示ASCII 字符图像和彩色功能 CubeMX配置 Source Code 创建app_lcd.c文件 #include &q…

Python数据分析NumPy和pandas(三十二、数据拆分-应用-合并)

最常用的 GroupBy 方法是 apply&#xff0c;apply 将正在操作的对象拆分为多个片段&#xff0c;在每个片段上调用传递给它函数&#xff0c;然后尝试连接这些片段。 还是用前面的小费数据集tips.csv&#xff0c;它的内容如下图&#xff1a; 假设我们想按smoker进行分组并选择前…

【毫米波雷达(九)】前雷达软件开发遇到的问题汇总及解决方法

前雷达软件开发遇到的问题汇总及解决方法 一、CAN/CANFD通信1、雷达CAN未能正常发出数据2、雷达在车上接收不到车身信息3、程序下载失败4、DV试验发送数据偶发断连5、发送感知信息丢帧或者丢报文6、上电发出第一帧的报文时间长7、ZCANPRO有错误帧二、协议转换&#xff08;以太网…

linux 下调试 bmp280 气压传感器

供自己备忘&#xff1b; linux 下有自带的 bmp280 驱动&#xff0c;实际测试数据抖动不理想&#xff1b; 于是自己重写一个 bmp280 驱动&#xff0c;实际测试数据依旧抖动&#xff0c;不理想&#xff1b; 考虑使用 SPL06 来测试看看效果&#xff1b; 1. 参考资料&#xff1…

『VUE』26. props实现子组件传递数据给父组件(详细图文注释)

目录 本节内容示例代码总结 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 本节内容 父组件传子组件–props 子组件传父组件–自定义事件 本节讲子组件传父组件–通过props里的方法传递,就是父亲写了一个函数,给子组件调用,然后…

Linux编辑/etc/fstab文件不当,不使用快照;进入救援模式

目录 红帽镜像9救援模式 现象 解决 第一步&#xff1a;修改启动参数以进入救援模式 第二步&#xff1a;进入救援模式、获取root权限、编辑/etc/fstab文件 第三步&#xff1a;编辑好后在重启 下面是ai给的模板 红帽镜像9救援模式 编辑/etc/fstab不当时 17 /dev/nvme0n3p1…

异地情侣远程玩游戏?GameViewer远程串流轻松实现!

情侣之间偶尔想远程玩游戏增进感情却苦于找不到合适的软件&#xff1f;想要寻找一款低门槛好上手操作便捷的串流软件 &#xff1f; 在这里向你推荐 网易GameViewer远程 &#xff01; GameViewer是专为游戏玩家的设计远程控制软件&#xff0c;可以帮助异地情侣实现这一需求。它让…

1990-2020年中国人工林和天然林空间分布数据集

数据介绍 植树已被认为是减缓气候变化的潜在有效解决方案。自上世纪70年代以来&#xff0c;中国实施了世界上最大的造林和再造林工程&#xff0c;但中国人工林的高分辨率地图仍然无法获得。在这项研究中&#xff0c;我们探索了使用多源遥感图像和众包样本来制作第一张高分辨率…

[Docker#10] network | 架构 | CRUD | 5种常见网络类型 (实验)

目录 1. Docker 为什么需要网络管理 2. Docker 网络架构简介 CNM&#xff08;Container Network Model&#xff09; Libnetwork 驱动 3. ⭕常见网络类型&#xff08;5 种&#xff09; 4. Docker 网络管理命令 一. bridge 网络 1. 操作案例&#xff1a;容器间网络通信 …

Spring Cloud Gateway快速入门Demo

1.什么是Spring Cloud Gateway&#xff1f; Spring Cloud Gateway 是一个基于 Spring Framework 和 Spring Boot 构建的 API 网关服务。它提供了一种简单而有效的方式来路由请求、提供跨领域的关注点&#xff08;如安全、监控/指标和弹性&#xff09;以及其他功能。Spring Clo…

【AI换脸整合包及教程】Rope:AI 换脸工具的功能、原理、应用

在人工智能技术迅猛发展的当下&#xff0c;AI 换脸技术无疑是近年来备受瞩目的焦点之一。其中&#xff0c;Rope 作为一款开源的 AI 换脸工具&#xff0c;因其出色的易用性和强大的功能而广受青睐。本文将对 Rope 的功能、技术原理、应用场景以及所面临的法律和伦理问题进行详细…