每日计划-1221

server/2024/12/23 11:44:57/

1. 完成  SQL6 查找学校是北大的学生信息

2. 八股部分

1) 选择排序&冒泡排序   包括 代码  时间复杂度  空间复杂度 稳定性  是否能对代码进行提升

选择排序代码:

#include <iostream>
#include <vector>using namespace std;// 选择排序函数
void selectionSort(vector<int>& arr) {int n = arr.size();for (int i = 0; i < n - 1; ++i) {int minIndex = i;for (int j = i + 1; j < n; ++j) {if (arr[j] < arr[minIndex]) {minIndex = j;}}swap(arr[i], arr[minIndex]);}
}
时间复杂度
  • 最坏情况:O(n²)
  • 最好情况:O(n²)
  • 平均情况:O(n²)
空间复杂度
  • O(1)(只使用了常数级别的额外空间)
稳定性
  • 不稳定(相同元素的顺序可能会改变)
代码提升

选择排序的时间复杂度无法提升,但在数据量小的情况下,可以考虑使用更高效的排序算法,比如插入排序。

冒泡排序代码:

#include <iostream>  
#include <vector>  void bubbleSort(std::vector<int>& arr) {  int n = arr.size();  for (int i = 0; i < n - 1; ++i) {  bool swapped = false; // 标记是否发生交换  for (int j = 0; j < n - i - 1; ++j) {  if (arr[j] > arr[j + 1]) {  std::swap(arr[j], arr[j + 1]); // 交换相邻元素  swapped = true; // 发生交换  }  }  // 如果没有进行交换,数组已经有序  if (!swapped) {  break;  }  }  
}  // 测试函数  
int main() {  std::vector<int> arr = {64, 34, 25, 12, 22, 11, 90};  bubbleSort(arr);  std::cout << "冒泡排序后的数组: ";  for (const int& val : arr) {  std::cout << val << " ";  }  return 0;  
}

时间复杂度
  • 最坏情况:O(n²)
  • 最好情况:O(n)(当数组已经有序时)
  • 平均情况:O(n²)
空间复杂度
  • O(1)(只使用了常数级别的额外空间)
稳定性
  • 稳定(相同元素的顺序不会改变)
代码提升

在已经有序的情况下,冒泡排序可以通过 swapped 标志实现 O(n) 的时间复杂度,但总体来说,冒泡排序的效率较低,面对大数据集时,请考虑更高效的排序算法

2) 请说下你对 MYSQL 架构的了解?

MySQL 架构主要可以分为以下几个层级和组件:

  1. 服务层

    • MySQL 服务器:这是整个 MySQL 系统的核心,它负责处理用户的所有请求,包括 SQL 查询的执行、管理连接、数据存储和检索等。
  2. 存储层

    • 存储引擎:MySQL 支持多种存储引擎(Storage Engine),每个存储引擎都有不同的特性和功能。常见的存储引擎包括:
      • InnoDB:支持事务、外键和行级锁,是 MySQL 的默认存储引擎。
      • MyISAM:不支持事务,使用表级锁,适合读多写少的场景。
      • Memory:数据存储在内存中,速度较快,但数据易丢失。
      • CSVARCHIVEBLACKHOLE 等:用于特定需求的存储引擎。
  3. 查询解析层

    • 查询处理器:接收来自客户端的 SQL 查询,进行语法分析、查询优化、执行计划生成等。
    • 优化器:根据数据库的统计信息和查询条件,选择最优的执行计划。
  4. 缓存层

    • 查询缓存:存储已经执行的查询的结果,避免重复执行相同查询以提高性能。
    • InnoDB Buffer Pool:用于缓存数据和索引的内存区域,可以提高对磁盘存储的访问速度。
  5. 数据层

    • 文件存储:MySQL 将数据存储在文件系统中,数据表和索引分别存储在不同的文件中。数据通常以 MyISAM 或 InnoDB 的格式存储。

MySQL 的工作原理

  1. 连接建立:客户端通过协议连接到 MySQL 服务器,服务器管理连接并控制访问权限。

  2. SQL 查询处理

    • 客户端发送 SQL 查询。
    • 查询处理器解析 SQL 语句并检查语法。
    • 优化器生成执行计划,并选择最优的索引进行查询。
  3. 数据访问

    • MySQL 根据执行计划访问数据存储层以检索或修改数据。
    • 结果返回到客户端。
  4. 存储和事务管理

    • 对于支持事务的存储引擎(如 InnoDB),MySQL 提供 ACID(Atomicity, Consistency, Isolation, Durability)特性以保证数据的一致性和持久性。
    • 使用日志(如重做日志和撤销日志)来保证作为事务的一部分的数据修改的可靠性。

优点与缺点

优点

  • 开源和免费:MySQL 是开源的,有很多免费的版本可用。
  • 性能优秀:对于大多数应用场景,MySQL 的性能表现非常好。
  • 灵活性:支持多种存储引擎,适应多种需求。
  • 成熟的社区支持:丰富的文档和社区支持使得问题解决变得容易。

缺点

  • 功能限制:相比于其他商业数据库(如 Oracle 或 SQL Server),在某些高级功能(如复杂查询、并发控制)上可能有所不足。
  • 安全性和稳定性:虽然 MySQL 的安全性和稳定性在不断提升,但某些配置和操作仍需要谨慎处理,特别是在高并发场景下。

http://www.ppmy.cn/server/152481.html

相关文章

vue入门教程:组件透传 Attributes

一、透传Attributes的基本概念 透传Attributes指的是传递给一个组件&#xff0c;但没有被该组件声明为props或emits的attribute或者v-on事件监听器。最常见的例子包括class、style和id。当一个组件以单个元素为根路径渲染时&#xff0c;透传的attribute会自动被添加到根元素上…

RFdiffusion get_torsions函数解读

函数功能 get_torsions 函数根据输入的原子坐标(xyz_in)和氨基酸序列(seq),计算一组主链和侧链的扭转角(torsions)。同时生成备用扭转角(torsions_alt),用于表示可以镜像翻转的几何结构,并返回掩码(tors_mask)和是否平面化(tors_planar)的信息。 输入参数 xyz…

本机如何连接虚拟机MYSQL

要让本机&#xff08;主机&#xff09;连接到虚拟机上的 MySQL 数据库&#xff0c;你需要确保虚拟机和主机之间的网络连接正常&#xff0c;并且 MySQL 配置允许外部连接。以下是实现本机连接虚拟机 MySQL 的步骤&#xff1a; 步骤 1&#xff1a;确认虚拟机与本机的网络连接 确…

FastAPI vs Go 性能对比分析

FastAPI vs Go 性能对比分析 总体结论 FastAPI 虽然性能优秀&#xff0c;但整体上仍无法完全达到 Go 的性能水平。 详细对比 优势 FastAPI 开发效率高Python生态系统丰富自动API文档生成类型检查和验证异步支持好 Go 原生性能更强内存占用更低并发处理能力强编译型语言的优…

防火墙规则配置错误导致的网络问题排查

防火墙规则配置错误可能导致服务器的网络中断、服务不可用或访问受限等问题。排查和修复防火墙规则配置错误需要系统性的方法&#xff0c;以快速定位问题并恢复正常服务。以下是防火墙规则配置错误导致网络问题的排查与解决指南。 一、常见防火墙配置错误及其影响 错误的默认策…

vue3+vite 引入动画组件库 Inspira UI

关于Inspira UI Inspira UI不是传统的组件库。相反&#xff0c;它是精选的优雅组件集合&#xff0c;您可以轻松将其集成到您的应用程序中。只需选择所需的组件&#xff0c;复制代码&#xff0c;然后自定义以适合您的项目即可。您可以随意使用和修改代码&#xff01; 官网地址…

【hackmyvm】eigthy 靶机wp

tags: HMVgopherdoas另类sudo提权knock目录穿越 Type: wp dg-publish: true 难度: ⭐️⭐️⭐️ 作者: sml 系统: Linux 这里写目录标题 2. 信息收集2.1. 端口扫描2.2. knock敲门2.3. 目录扫描2.4. 目录穿越 3. 提权 2. 信息收集 2.1. 端口扫描 ┌──(root㉿kali)-[~/Deskt…

关于VQ-GAN利用滑动窗口生成 高清图像

参考文章&#xff1a;VQGAN 论文与源码解读&#xff1a;前Diffusion时代的高清图像生成模型 | 周弈帆的博客 概念补充&#xff1a;所谓“高清”&#xff0c;就是像素很多&#xff0c;比如&#xff0c;512x512就比64x64要高清很多 请仔细琢磨上面的这几句话即可。 &#xff08;…