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

C++ | QQ后端暑期实习面试

tcp三次握手,四次挥手

断点续传

文件断点续传是一种机制,允许在网络传输中的文件传输过程中出现断开连接或传输中断的情况下,能够恢复传输并继续传输未完成的部分。其原理如下:

  • 检测支持:首先,服务器端和客户端需要支持文件断点续传功能。服务器必须能够接收并处理客户端请求的文件的部分内容,并且客户端必须能够发送和接收文件的部分内容。
  • 断点记录:当文件传输开始时,客户端和服务器都会记录已成功传输的字节数或文件的偏移量。这些记录通常保存在服务器端的文件或数据库中。
  • 传输请求:如果传输过程中发生中断,客户端可以发送一个特殊的请求到服务器,请求从断点处继续传输。这个请求通常包含之前传输的字节数或文件的偏移量,以便服务器知道从哪里开始继续传输。
  • 服务器响应:服务器接收到客户端的断点续传请求后,根据请求中的偏移量,定位到文件的相应位置,并从该位置开始继续传输文件。服务器将继续传输的部分内容作为响应发送给客户端。
  • 客户端接收:客户端接收到服务器的响应后,将继续传输的部分内容写入本地文件的相应位置。
  • 继续传输:客户端和服务器通过以上步骤的循环,直到整个文件传输完成。在每次传输中断后,客户端发送断点续传请求,服务器根据请求继续传输文件的未完成部分,直到整个文件成功传输完成。
  • 通过文件断点续传的机制,即使在网络不稳定或传输过程中断的情况下,文件传输可以被恢复和继续,提高了传输的可靠性和效率。这在大文件传输、网络不稳定的环境或需要长时间传输的场景中非常有用。

多态的实现,怎么知道调用的是哪个虚函数,虚函数的工作原理

多态分为静态多态和动态多态。静态多态是指在编译期实现的多态,具体可以分为函数重载和模版。函数重载是通过name mangling实现。动态多态是在运行期实现的多态,主要是通过重写虚函数实现,需要使用虚函数表和虚函数指针。

每个包含虚函数的类都有一个虚函数表(vtable)。虚函数表是一个指向虚函数指针的数组,这些指针指向类的虚函数实现。每个对象包含一个指向虚函数表的指针,称为虚指针(vptr)。当对象被创建时,构造函数会初始化这个虚指针,指向对象所属类的虚函数表。当通过基类指针或引用调用虚函数时,实际上是通过虚指针找到虚函数表,然后在表中找到对应的函数指针并调用它。这个过程确保调用的是实际对象的函数实现,而不是基类的实现。

虚函数表(vtable)存储在静态内存区域中,每个类有一个虚函数表。虚指针(vptr)是每个对象的隐式成员,存储在对象的内存布局中,指向该对象所属类的虚函数表。

Http2.0和1.0的差别

  1. 头部压缩

    HTTP/2 会压缩头(Header)如果你同时发出多个请求,他们的头是⼀样的或是相似的,那么,协议会帮你消除重复的部分。
    这就是所谓的 HPACK 算法:在客户端和服务器同时维护一张头信息表,所有字段都会存如这个表,生成⼀个索引号,以后就不发送同样字段了,只发送索引号,这样就提高速度了。

  2. 二进制格式

    HTTP/2 不再像 HTTP/1.1 里的纯文本形式的报文,而是全面采用了二进制格式,头信息和数据体都是二进制,并且统称为帧(frame):头信息帧和数据帧。增加了数据传输的效率

  3. 数据流

    HTTP/2 的数据包不是按顺序发送的,同⼀个连接里面连续的数据包,可能属于不同的回应。因此,必须要对数据包做标记,指出它属于哪个回应。
    每个请求或回应的所有数据包,称为⼀个数据流( Stream )。每个数据流都标记着⼀个独一无二的编号,其中规定客户端发出的数据流编号为奇数, 服务器发出的数据流编号为偶数。
    客户端还可以指定数据流的优先级。优先级⾼的请求,服务器就先响应该请求。

  4. 多路复用

    HTTP/2 是可以在⼀个连接中并发多个请求或回应,而不用按照顺序⼀⼀对应。
    移除了 HTTP/1.1 中的串行请求,不需要排队等待,也就不会再出现「队头阻塞」问题,降低了延迟,⼤幅度提高了连接的利用率
    举例来说,在⼀个 TCP 连接里,服务器收到了客户端 A 和 B 的两个请求,如果发现 A 处理过程非常耗时,于是就回应 A 请求已经处理好的部分,接着回应 B 请求,完成后,再回应 A 请求剩下的部分。

  5. 服务器推送

    HTTP/2 还在⼀定程度上改善了传统的「请求 - 应答」工作模式,服务不再是被动地响应,也可以主动向客户端发送消息。
    举例来说,在浏览器刚请求 HTML 的时候,就提前把可能会用到的 JS、CSS ⽂件等静态资源主动发给客户端,减少延时的等待,也就是服务器推送(Server Push,也叫 Cache Push)。

InnoDB和MyISAM索引的区别

1. 索引类型

  • InnoDB:
    • 主键索引(Clustered Index):InnoDB 的主键索引也是聚集索引。数据表中的数据按照主键索引的顺序存储。这意味着数据行的物理顺序与主键的顺序一致。
    • 非主键索引(Secondary Index):非主键索引存储的是主键值和索引字段的值,实际上是通过主键来查找具体的行。
    • 全文索引(Full-text Index):从 MySQL 5.6 开始,InnoDB 也支持全文索引。
  • MyISAM:
    • 普通索引(Non-clustered Index):MyISAM 的所有索引都是非聚集的,即索引的顺序与数据的存储顺序无关。数据行的位置和索引条目是分开的。
    • 全文索引(Full-text Index):MyISAM 在 MySQL 5.6 之前支持全文索引,但从 MySQL 5.6 起,InnoDB 也支持了全文索引。

2. 索引存储结构

  • InnoDB:
    • 聚集索引(Clustered Index):InnoDB 使用聚集索引来组织数据,主键决定了数据的存储顺序。聚集索引的叶子节点存储的是实际的表数据。
    • 非聚集索引(Secondary Index):非聚集索引的叶子节点存储的是主键值以及索引字段的值。因此,进行非主键索引的查找时,需要先通过主键索引查找数据行。
  • MyISAM:
    • 非聚集索引(Non-clustered Index):MyISAM 的所有索引都存储了指向数据的指针,索引的叶子节点存储的是数据行的物理位置。数据表中的数据行是按照文件的顺序存储的,而不是按照索引的顺序。

3. 索引维护和性能

  • InnoDB:
    • 事务支持:InnoDB 支持事务(ACID),因此在执行插入、更新或删除操作时,索引维护是原子的。
    • 性能:由于聚集索引的数据和索引存储在一起,对于主键查找非常高效。但由于非主键索引需要二次查找(通过主键查找),在一些场景下可能会导致额外的开销。
    • 锁机制:InnoDB 使用行级锁,可以提高并发性。
  • MyISAM:
    • 没有事务支持:MyISAM 不支持事务,这可能影响数据一致性和并发处理。
    • 性能:MyISAM 的索引维护比 InnoDB 更简单,因为它的索引和数据是分开的。对于简单的读操作,性能可能会更高,但对于复杂的更新操作,可能会稍逊。
    • 锁机制:MyISAM 使用表级锁,这可能影响并发性和性能。

4. 索引的其他特性

  • InnoDB:
    • 自增主键:InnoDB 支持自增主键,使用聚集索引时,自增主键的插入效率很高。
    • 外键支持:InnoDB 支持外键约束,确保数据的完整性和关系的约束。
  • MyISAM:
    • 表级锁:MyISAM 使用表级锁,在高并发的写操作中可能会成为瓶颈。
    • 外键不支持:MyISAM 不支持外键约束,数据的完整性需要通过应用程序逻辑来维护。

C++20新特性

1. Modules(模块)

模块是C++20引入的一种新特性,用于替代传统的头文件机制,旨在改善代码的模块化和编译时间。

主要特性
  • 模块化:将代码分割成独立的模块,可以显著减少编译时间和依赖管理的复杂性。
  • 更快的编译速度:通过模块化,可以减少重复编译,提高编译速度。
  • 避免宏污染:模块可以避免宏带来的命名冲突问题。
  • 明确的接口:模块显式地定义了导出和导入的接口,提高了代码的可读性和安全性。
示例代码
// my_module.cpp
export module my_module;  // 定义并导出模块
export void greet() {std::cout << "Hello from module!\n";
}// main.cpp
import my_module;  // 导入模块int main() {greet();
}

2. Coroutines(协程)

协程是一种用于简化异步编程的新特性,使得可以通过更直观的方式来编写异步代码。

主要特性
  • 异步操作:协程允许函数在需要等待某些操作完成时挂起并返回调用者,然后在条件满足时恢复执行,即实现一个hook完成yield和resume。
  • 状态保持:协程可以在挂起时保持其状态,当恢复执行时可以从中断的地方继续。
  • 高效的资源管理:协程相比于传统的线程更轻量级,具有更低的上下文切换开销。
示例代码
#include <iostream>
#include <coroutine>struct Generator {struct promise_type;using handle_type = std::coroutine_handle<promise_type>;struct promise_type {int value;auto get_return_object() { return Generator{handle_type::from_promise(*this)}; }auto initial_suspend() { return std::suspend_always{}; }auto final_suspend() noexcept { return std::suspend_always{}; }void return_void() {}void unhandled_exception() { std::exit(1); }auto yield_value(int val) {value = val;return std::suspend_always{};}};handle_type h;Generator(handle_type h) : h(h) {}~Generator() { h.destroy(); }bool next() { return h.resume(), !h.done(); }int value() const { return h.promise().value; }
};Generator sequence() {for (int i = 0; i < 3; ++i)co_yield i;
}int main() {auto gen = sequence();while (gen.next()) {std::cout << gen.value() << "\n";}
}

3. Ranges(范围库)

范围库提供了一组更强大和灵活的方式来操作集合,使得代码更简洁和易读。

主要特性
  • 视图和适配器:范围库通过视图和适配器提供了对集合的惰性求值操作,使得可以在不复制数据的情况下进行链式操作。
  • 更好的与算法结合:范围库与标准库算法结合得更加紧密,使得代码更具表达力和简洁性。
  • Pipeline风格:支持通过管道操作符进行链式调用,极大地简化了代码。
示例代码
#include <iostream>
#include <vector>
#include <ranges>
#include <algorithm>int main() {std::vector<int> v = { 5, 2, 1, 3, 0, 4, 6 };// 过滤和变换范围auto result = v | std::views::filter([](int n) { return n % 2 == 0; })| std::views::transform([](int n) { return n * n; });for (int n : result) {std::cout << n << " ";}std::cout << "\n";std::ranges::sort(v);for (int x : v) {std::cout << x << " ";}
}

4. Concepts(概念)

概念用于为模板定义约束条件,提高模板的可读性和错误信息的清晰度。

主要特性
  • 约束模板参数:通过概念可以为模板参数定义约束条件,从而限制模板实例化时的类型。
  • 提高可读性:概念使得模板代码更具可读性,因为可以明确指出模板参数的预期行为和性质。
  • 更好的错误信息:在不满足概念约束时,编译器可以提供更清晰的错误信息,便于调试。
示例代码
c#include <concepts>
#include <iostream>// 定义一个概念,约束类型必须支持加法操作
template<typename T>
concept Addable = requires(T a, T b) {{ a + b } -> std::convertible_to<T>;
};template<Addable T>
T add(T a, T b) {return a + b;
}int main() {std::cout << add(1, 2) << std::endl;  // 合法// std::cout << add("Hello, ", "world!");  // 非法,不满足Addable概念
}

进程,线程,协程

关系
  • 进程包含线程:一个进程可以包含一个或多个线程,线程是进程的一部分,共享进程的资源。
  • 线程和协程都是实现并发的手段:线程由操作系统调度,而协程由程序自身调度。
区别
  • 内存和资源
    • 进程:拥有独立的内存空间和资源。
    • 线程:共享进程的内存和资源。
    • 协程:在用户态下运行,通常在单个线程内实现。
  • 调度和上下文切换
    • 进程:由操作系统调度,上下文切换开销大。
    • 线程:由操作系统调度,上下文切换开销相对小。
    • 协程:由程序自身调度,上下文切换开销最小。
  • 并行和并发
    • 进程:可以在多核CPU上实现真正的并行执行。
    • 线程:可以在多核CPU上实现并行执行,但需要处理同步和竞争问题。
    • 协程:在单线程内实现并发处理,适用于I/O密集型任务,不适用于CPU密集型任务的并行处理。
进程线程协程
线程1协程1函数调用1
协程2函数调用2
线程2协程3函数调用3
协程4函数调用4
线程3协程5函数调用5
协程6函数调用6
资源资源资源

智能指针

1. std::unique_ptr

概述
  • 独占所有权std::unique_ptr表示唯一所有权的智能指针,即一个对象只能有一个std::unique_ptr实例管理。
  • 不可复制std::unique_ptr不可复制,但可以移动(使用std::move)。
主要特性
  • 自动释放:当std::unique_ptr超出作用域时,它所管理的对象会自动被删除。
  • 轻量级:由于没有引用计数,std::unique_ptr的开销较小。

2. std::shared_ptr

概述
  • 共享所有权std::shared_ptr表示共享所有权的智能指针,即多个std::shared_ptr实例可以管理同一个对象。
  • 引用计数std::shared_ptr使用引用计数来跟踪对象的使用情况,当引用计数为零时,自动删除对象。
主要特性
  • 自动释放:当最后一个std::shared_ptr超出作用域时,它所管理的对象会被删除。
  • 线程安全:引用计数的增减是线程安全的。

3. std::weak_ptr

概述
  • 弱引用std::weak_ptr是与std::shared_ptr配合使用的智能指针,用于解决循环引用问题。
  • 不影响引用计数std::weak_ptr不会影响对象的引用计数,因此不会阻止对象的删除。
主要特性
  • 观察者模式std::weak_ptr可以观察std::shared_ptr管理的对象,但不能直接访问对象,必须通过lock方法获取std::shared_ptr

编程题,给定一个字符串 s ,请将 s 分割成一些子串,使每个子串都是 回文串 ,返回 s 所有可能的分割方案。

LeetCode 131原题,同时最好也把132,1278,1745几个加强版也做了。

class Solution {
public:std::vector<std::vector<std::string>> partition(std::string s) {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::vector<std::vector<std::string>> ans;std::vector<std::string> path;int n = s.length();std::function<void(int)> dfs = [&] (int idx) {if (idx == n) {ans.push_back(path);return;}std::string tmp;for (int i = idx; i < n; ++i) {tmp += s[i];bool f = true;// 可以提前使用dp预处理,或者记忆化结果for (int i = 0; i * 2 + 1 < tmp.length(); ++i) {if (tmp[i] != tmp[tmp.size()-1-i]) {f = false;break;}}if (f) {path.push_back(tmp);dfs(i + 1);path.pop_back();}}};dfs(0);return ans;}
};

最后给大家推荐一个LinuxC/C++高级架构系统教程的学习资源与课程,可以帮助你有方向、更细致地学习C/C++后端开发,具体内容请见 https://xxetb.xetslk.com/s/1o04uB

相关文章:

C++ | QQ后端暑期实习面试

tcp三次握手&#xff0c;四次挥手 断点续传 文件断点续传是一种机制&#xff0c;允许在网络传输中的文件传输过程中出现断开连接或传输中断的情况下&#xff0c;能够恢复传输并继续传输未完成的部分。其原理如下&#xff1a; 检测支持&#xff1a;首先&#xff0c;服务器端和…...

实用网站推荐

​ 学习 前端 精简CSS格式 Font Awesome 图标库 BootCDN 加速服务 合集 AI工具集 动漫、音乐 娱乐 嗷呜动漫 奈飞同步 视频下载 B站视频解析下载 文件操作 ioDraw制作图 Convertio — 文件转换器 PDF处理 ​LOGO...

Linux |Nethogs 监控网络使用情况

引言 互联网上为 Linux 系统提供了许多开源的网络监控工具。例如&#xff0c;你可以利用 iftop 命令来监测网络带宽的消耗&#xff0c;使用 netstat 或 ss 命令来获取网络接口的统计信息&#xff0c;或者通过 top 命令来查看系统中正在运行的进程。 然而&#xff0c;如果你真正…...

大语言模型训练过程中,怎么实现算力共享,采用什么分片规则和共享策略

目录 大语言模型训练过程中,怎么实现算力共享,采用什么分片规则和共享策略 一、算力共享的实现 二、分片规则与共享策略 三、总结 DeepSpeed、Megatron-LM是什么 DeepSpeed ZeRO技术一般不实现调参的 ZeRO技术的实现方式 ZeRO与调参的关系 NCCL是什么 一、NCCL概…...

JCR一区级 | Matlab实现TTAO-Transformer-LSTM多变量回归预测

JCR一区级 | Matlab实现TTAO-Transformer-LSTM多变量回归预测 目录 JCR一区级 | Matlab实现TTAO-Transformer-LSTM多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【JCR一区级】Matlab实现TTAO-Transformer-LSTM多变量回归预测&#xff0c;三角拓扑聚合…...

斐波那契数列(Fibonacci)数列 c++详解

Fibonacci数列是一个在数学和计算机科学中非常著名的数列。这个数列以其特殊的递推关系而闻名&#xff0c;也因其在自然界中的多次出现而引人注目。 定义&#xff1a; Fibonacci数列的定义如下&#xff1a; F(0) 0F(1) 1对于 n > 1&#xff0c;F(n) F(n-1) F(n-2) 也就…...

第三届人工智能、物联网和云计算技术国际会议(AIoTC 2024,9月13-15)

第三届人工智能、物联网与云计算技术国际会议(AIoTC 2024)将于2024年9月13日-15日在中国武汉举行。 本次会议由华中师范大学伍伦贡联合研究院与南京大学联合主办、江苏省大数据区块链与智能信息专委会承办、江苏省概率统计学会、江苏省应用统计学会、Sir Forum、南京理工大学、…...

家具购物小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;家具分类管理&#xff0c;家具新品管理&#xff0c;订单管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;家具新品&#xff0c;家具公告&#xff0…...

测试面试宝典(三十四)—— token是做什么用的?

Token 在软件系统中通常具有多种重要用途。 首先&#xff0c;它用于身份验证和授权。用户登录成功后&#xff0c;系统会生成一个唯一的 token 并返回给客户端&#xff0c;客户端后续的请求携带这个 token 来证明其身份和访问权限&#xff0c;避免了每次请求都需要重新输入用户…...

计算机网络基础:4.HTTP与HTTPS

一、回顾设定 想象你在经营一家繁忙的餐厅&#xff0c;顾客们通过点餐系统&#xff08;网卡&#xff09;下单&#xff0c;订单被前台&#xff08;路由器&#xff09;接收并分发到各个厨房区域&#xff08;网络设备&#xff09;。光猫像是食材供应商&#xff0c;通过高效的物流系…...

【深度学习入门】安装conda/miniconda、所需包类、CUDA与conda/Miniconda间的关系

深度学习入门 须知 本教程跟随李沐老师课程随笔&#xff0c;课程链接点击此处。 CUDA和Anaconda的关系 CUDA Toolkit是由Nvidia官方提供的完整工具包&#xff0c;其中提供了Nvidia驱动程序、开发CUDA程序相关的开发工具包等。 Anaconda在安装Pytorch等会用到的CUDA的框架时…...

0725,进程间传递文件描述符,socketpair + sendmsg/recvmsg

我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎掉了我要碎…...

放大电路总结

补充: 只有直流移动时才有Rbe动态等效电阻 从RsUs看进去,实际上不管接了什么东西都能够看成是一个Ri(输入电阻) Ri Ui/Ii Rb//Rbe Ui/Us Ri/(RiRs) Aus (Uo/Ui)*(Ui/Us) Au *Ri/(RiRs) 当前面是一个电压源的信号 我们就需要输入电阻更大 Ro--->输出电阻--->将…...

深度学习1-简介

人工智能&#xff08;AI&#xff09;旨在打造模仿智能行为的系统。它覆盖了众多方法&#xff0c;涵盖了基于逻辑、搜索和概率推理的技术。机器学习是 AI 的一个分支&#xff0c;它通过对观测数据进行数学模型拟合来学习决策制定。这个领域近年来迅猛发展&#xff0c;现在几乎&a…...

Java基础语法 (基础介绍 二)

目录 Java 基础语法 第一个Java程序 基本语法 Java标识符 Java修饰符 Java变量 Java关键字 Java注释 Java 空行 Java 对象和类 Java中的对象 Java中的类 构造方法 创建对象 访问实例变量和方法 实例 源文件声明规则 Java包 Import语句 一个简单的例子 Java…...

SAPUI5基础知识18 - 自定义CSS和主题色

1. 背景 在上一篇博客中&#xff0c;我们通过使用SAPUI5提供的CSS类实现元素间距的调整。在本篇博客中&#xff0c;让我们看一下如何实现自定义的CSS样式。 2. 背景知识 2.1 CSS基础语法 CSS&#xff0c;全称为级联样式表&#xff08;Cascading Style Sheets&#xff09;&a…...

Postman中API测试的艺术:测试用例复用的高级技巧

Postman中API测试的艺术&#xff1a;测试用例复用的高级技巧 在API测试过程中&#xff0c;复用测试用例可以显著提高测试效率和一致性。Postman作为一个强大的API开发工具&#xff0c;提供了多种机制来实现测试用例的复用。本文将深入探讨Postman中API测试用例复用的技巧&…...

Flutter Geocoding插件使用指南:简化地理编码与逆地理编码

Flutter Geocoding插件使用指南&#xff1a;简化地理编码与逆地理编码 简介 geocoding 是一个Flutter插件&#xff0c;提供了简便的地理编码&#xff08;将地址转换为经纬度坐标&#xff09;和逆地理编码&#xff08;将经纬度坐标转换为地址&#xff09;功能。它利用了iOS和A…...

“手撕”全网最细的JDBC教程(安装导入使用)

目录 一、什么是JDBC 二、JDBC的安装 三、JDBC如何导入 四、怎么使用JDBC编写代码 一、什么是JDBC JDBC由Java提供给数据库的一组通用的API。 在平常的业务中&#xff0c;是比较少使用像cmd命令行来操作数据库的&#xff0c;更多的是操作代码&#xff08;Python&#xff…...

C++指针选择题带答案

1、有如下语句int a10,b20,*p1,*p2;p1&a;p2&b;如图1所示&#xff0c;若要实现图2所示的存储 结构&#xff0c;可选用的赋值语句是___________。 A)*p1*p2; B)p1p2; C&#xff09;p1*p2; D)*p1p2; 2、变量的指针&#xff0c;其含义是该…...

力扣 二分查找

二分查找基础篇。 题目 class Solution {public int searchInsert(int[] nums, int target) {int l 0, r nums.length - 1;while(l < r) {int mid l((r-l)>>1);//(lr)/2if(nums[mid]<target)lmid1;else rmid-1;}return l;//处理边界&#xff0c;设定数组的左半…...

ADMAS-Simulink联合仿真输入设置

使用Solidworks、ADAMS、Simulink进行机电联合仿真_adams-simulink-CSDN博客RecurDynSimulink联合仿真案例演示_哔哩哔哩_bilibili# C#调用已经使用Python训练好的神经网络做图片检测_c#调用python训练好的神经网络模型-CSDN博客...

【NOI】C++程序设计入门三

文章目录 前言一、大杂烩1.导入2.常量3.标识符4.关键字5.整型补充5.1 short&#xff1a;短整型5.2 long&#xff1a;长整型5.3 long long&#xff1a;长长整型 二、例题讲解问题&#xff1a;1597. 买文具问题&#xff1a;1596. 火柴棒三角形问题问题&#xff1a;1417. 买文具问…...

Three.js投射光线实现三维物体交互

<template><div id"webgl"></div> </template><script setup> import * as THREE from three //导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls // 导入 dat.gui import { GUI } from thre…...

SSRF学习笔记

1.NAT学习 Nat&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09;是 一种网络通信技术主要用于将私有网络中的内部IP地址转换成公共网络中的公共IP地址&#xff0c;以实现局域网内部设备访问互联网的功能。具体来说&#xff0c;Nat有以下几个主要…...

Python——Pandas(第三讲)

文章目录 修改替换变量值对应数值的替换指定数值范围的替换 虚拟变量变换数值变量分段数据分组基于拆分进行筛选 分组汇总使用 agg 函数进行汇总引用自定义函数 长宽格式转换转换为最简格式长宽型格式的自由互转 多个数据源的合并数据的横向合并concat 命令 处理缺失值认识缺失…...

性能测试中qps 一直上不去的原因

QPS&#xff1a;Queries Per Second意思是“每秒查询率”&#xff0c;是一台服务器每秒能够相应的查询次数&#xff0c;是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。 在性能测试中&#xff0c;QPS&#xff08;每秒查询率&#xff09;一直上不去可能由以下…...

学习笔记14:CNAME 记录值、TTL (Time to Live)、Redis 的 Pool 对象池、钩子函数、依赖注入

CNAME 记录值 CNAME 记录是一种DNS记录类型&#xff0c;它将一个域名映射到另一个域名。这通常用于将一个子域名指向另一个域名&#xff0c;或者将一个域名指向一个不同的顶级域。 用途&#xff1a;用于域名别名&#xff0c;负载均衡&#xff0c;或者在更换域名时保持服务的连…...

springboot集成mybatis时,dao层的mapper类需要添加@Repository注解吗?

在Spring Boot项目中&#xff0c;当你使用MyBatis作为ORM框架时&#xff0c;关于DAO层的Mapper类是否需要添加Repository注解&#xff0c;这主要取决于你的项目需求和配置。 Repository注解的作用Repository注解是Spring框架中用于声明持久层&#xff08;DAO层&#xff09;的组…...

一文总结代理:代理模式、代理服务器

概述 代理在计算机编程领域&#xff0c;是一个很通用的概念&#xff0c;包括&#xff1a;代理设计模式&#xff0c;代理服务器等。 代理类持有具体实现类的实例&#xff0c;将在代理类上的操作转化为实例上方法的调用。为某个对象提供一个代理&#xff0c;以控制对这个对象的…...

自己如何建企业网站/英文关键词seo

转载 2017年07月28日 10:55:46标签&#xff1a;美国教授写给被开除的中国学生的一封信294XX同学&#xff1a;接到你要求“保留学籍”的上诉被研究生院董事会驳回的消息&#xff0c;我想告诉你&#xff1a;这是你的失败&#xff0c;也是我的失败。你很难过&#xff0c;我也很难过…...

phpcms 专题网站模板/模板网站建站哪家好

我们在上一篇文章中介绍了Socket Server的开发&#xff0c;这一篇介绍Socket Client的开发。相对于服务端&#xff0c;客户端的启停更加灵活&#xff0c;更需要处理重连的问题。 带超时功能的连接 不知道为什么&#xff0c;经过这么多版的迭代&#xff0c;Socket连接依然不支…...

做减肥网站/今天国际新闻最新消息

Z.argmax()#针对的是非整数的数组进行的最大值检测...

大型网站建设方案常见问题/湘潭seo培训

自定义异常类&#xff0c;非法年龄类&#xff0c;并在person3类中使用此类&#xff0c;根据情况抛出异常&#xff0c;并进行处理。 package naizi;class IllegalAgeException extends Exception{ //无效年龄异常类 public IllegalAgeException(String s){super(s); } public…...

软件项目分为哪几个阶段/网站排名优化+o+m

我们编写代码的目的是什么&#xff1f;除了能实现某个算法、完成要求的逻辑业务外&#xff0c;其实还需要注意代码的可读性、可维护性、可扩展性等&#xff0c;唯有满足这些条件&#xff0c;我们的代码才可以称得上是合格的、优秀、优雅的代码。我们写的代码除了自己看&#xf…...

西安网站制作一般多少钱/百度网址大全旧版本

利用itext创建PDF表格 学习生活中&#xff0c;经常需要制作或填写各种各样的表。这些表往往写成PDF文件&#xff0c;然后打印出来最为方便。那么&#xff0c;如果用Java写这样的PDF文件&#xff0c;该怎么做呢&#xff1f; itext是一个处理该问题的不错的类库&#xff0c;首先需…...