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

Linux中web服务器的部署及优化

前言:Nginx 和 Apache HTTP Server 是两款非常流行的 Web 服务器。

Nginx

  • 简介:Nginx 是一款轻量级的高性能 Web 服务器、反向代理服务器以及电子邮件(IMAP/POP3)代理服务器。由俄罗斯人伊戈尔・赛索耶夫开发,其在处理高并发连接方面表现卓越,能够高效地处理大量并发请求,广泛应用于各种规模的网站和应用程序中。
  • 特点
    • 高并发处理能力:采用事件驱动的异步非阻塞模型,能在少量线程下处理大量并发连接,在高并发场景下,Nginx 的性能优势明显,资源占用少,响应速度快。例如,一些大型电商网站在促销活动期间,Nginx 能稳定处理海量并发请求,保障网站的正常运行。
    • 反向代理和负载均衡:作为反向代理服务器,可接收互联网用户的请求并转发到后端真实服务器,同时实现负载均衡功能,将请求均匀分配到多个后端服务器上,提高系统的可靠性和可扩展性。如将用户对网站的访问请求均衡分配到多个 Web 服务器上,避免单个服务器负载过高。
    • 配置简洁:配置文件结构清晰,语法简洁,易于理解和维护。通过简单的配置指令,可实现各种复杂的功能,如虚拟主机设置、URL 重写、SSL/TLS 加密等。
  • 应用场景
    • 静态资源服务器:擅长处理静态文件,如 HTML、CSS、JavaScript、图片等。其高效的文件缓存机制和快速的响应能力,能快速将静态资源发送给客户端,提升网站的访问速度。
    • 反向代理和负载均衡:常作为反向代理服务器部署在前端,与后端的多个 Web 服务器配合,实现负载均衡和请求转发,提高系统的性能和可用性。
    • 高并发 Web 应用:对于需要处理大量并发请求的 Web 应用,如大型门户网站、在线游戏平台、电商网站等,Nginx 是理想的选择,能提供稳定高效的服务。

Apache HTTP Server

  • 简介:Apache HTTP Server 是一款历史悠久、应用广泛的开源 Web 服务器软件。由 Apache 软件基金会开发和维护,是全球使用最广泛的 Web 服务器之一,具有高度的稳定性、可扩展性和跨平台性。
  • 特点
    • 高度可定制:通过丰富的模块系统,可根据不同需求进行灵活定制。例如,可加载mod_ssl模块实现 HTTPS 加密,mod_php模块支持 PHP 脚本的运行,满足各种不同类型网站和应用的功能需求。
    • 广泛的兼容性:能在多种操作系统上运行,如 Linux、Windows、macOS 等,适应不同的服务器环境,方便用户根据自身需求选择合适的操作系统平台。
    • 强大的社区支持:拥有庞大且活跃的社区,用户在使用过程中遇到问题可方便地获取帮助、查找资料,同时社区不断推动着 Apache 的发展和更新,使其能紧跟技术发展的步伐。
  • 应用场景
    • 传统动态网站:对于使用 PHP、Python 等动态语言开发的传统网站,Apache 是常用的选择。其丰富的模块和广泛的兼容性,能很好地支持各种动态脚本的运行,配合数据库系统可构建功能强大的动态网站。
    • 企业级应用:在企业级应用中,Apache 的稳定性和可扩展性得到了广泛认可。可用于部署企业内部的信息系统、办公自动化系统等,满足企业对可靠性和功能多样性的要求。
    • 对功能扩展要求高的网站:如果网站需要频繁进行功能扩展和定制,如添加各种个性化的模块和功能,Apache 的高度可定制性使其能够很好地满足这类需求。

一、Web 基础知识精简总结

1. 万维网(WWW)

  • 定义:全球信息网络(World Wide Web),通过互联网以超文本形式(文字、图片、音频、视频)传递信息。

  • 核心工具:使用浏览器访问并解析网页数据(如 Chrome、Firefox)。

  • 特点

    • 支持超链接跳转(点击链接访问其他资源)。

    • 客户端-服务器架构(浏览器请求,服务器返回数据)。

2. 网址(URI、URL、URN)

类型全称作用示例
URI统一资源标识符唯一标识资源(包含 URL 和 URN)https://example.com
URL统一资源定位符定位资源的具体路径与访问方式https://example.com/page
URN统一资源名称命名资源但不指定位置磁力链接(magnet:?xt=...

3. URL 组成结构

格式

<协议>://<用户>:<密码>@<主机>:<端口>/<路径>;<参数>?<查询>#<片段>  

各字段详解

  1. 协议(Scheme):访问资源的协议(如 httphttpsftp)。

  2. 主机(Host):服务器的域名或 IP 地址(如 google.com)。

  3. 端口(Port):服务监听的端口(默认端口可省略,如 HTTP 默认 80)。

  4. 路径(Path):资源在服务器上的位置(如 /images/logo.png)。

  5. 参数(Params):向服务器传递额外参数(分号分隔,如 ;lang=en)。

  6. 查询(Query):动态参数(问号后键值对,& 分隔,如 ?q=apple&page=2)。

  7. 片段(Fragment):页面内锚点定位(# 后内容,如 #section1)。

4. 常见对比

  • URL vs URN

    • URL:明确资源的位置和访问方式(如网页地址)。

    • URN:仅标识资源名称(如书籍 ISBN、磁力链接)。

二、HTTP 协议核心知识点精简

1、HTTP 基础

分类核心要点
定义超文本传输协议(HyperText Transfer Protocol),基于 请求-响应模型 的应用层协议。
特点- 无状态:每次请求独立,依赖 Cookie/Session 维持状态。
- 明文传输(HTTPS 加密)。
URI 结构协议://域名:端口/路径?查询参数#片段
示例:https://www.example.com:443/path?name=val#section

2、HTTP 版本对比

版本关键改进
HTTP/1.0- 短连接:每次请求新建 TCP 连接。
- 基础方法(GET、POST)。
HTTP/1.1- 持久连接(默认 Connection: keep-alive)。
- 管道化(Pipelining)。
- 新增方法(PUT、DELETE 等)。
HTTP/2- 多路复用(Multiplexing)。
- 二进制分帧。
- 头部压缩(HPACK)。
HTTP/3- 基于 QUIC 协议(UDP 实现,减少延迟)。
- 改进拥塞控制。

3、HTTP 请求方法

方法用途幂等性安全性
GET获取资源(参数在 URL 中)是(只读)
POST提交数据(参数在 Body 中)
PUT更新整个资源
PATCH更新资源部分内容
DELETE删除资源

4、HTTP 状态码

分类范围常见状态码说明
1xx信息响应100 Continue请求已接收,客户端继续发送。
2xx成功200 OK
201 Created
请求成功处理。
3xx重定向301 Moved Permanently
302 Found
资源重定向(永久/临时)。
4xx客户端错误400 Bad Request
404 Not Found
请求语法错误/资源不存在。
5xx服务端错误500 Internal Error
503 Service Unavailable
服务器内部错误/服务不可用。

常见的HTTP状态码:

状态码名称含义常见原因与解决方案
200OK请求已成功处理,服务器返回了预期的响应内容。成功场景:客户端请求的资源存在且服务器正常处理。
验证方法:检查响应体(Body)内容是否符合预期,确保业务逻辑正确执行。
400Bad Request请求语法错误,服务器无法解析。- 请求参数格式错误(如 JSON 格式错误)。
- 检查请求头、Body 是否符合 API 规范。
401Unauthorized未提供有效身份验证信息。- 缺少 Token 或 API Key。
- 检查 Authorization 头部是否有效。
403Forbidden服务器拒绝请求(身份验证通过,但权限不足)。- 用户无权访问资源。
- 检查用户角色或权限配置。
404Not Found请求的资源不存在。- URL 路径错误或资源已被删除。
- 检查请求路径和资源状态。
500Internal Server Error服务器内部错误。- 代码逻辑异常(如空指针)。
- 检查服务端日志,修复代码 Bug。
503Service Unavailable服务暂时不可用(如维护或过载)。- 服务器过载或主动进入维护模式。
- 扩容服务器或等待维护结束。

5、HTTPS 安全机制

机制说明
加密流程1. 非对称加密协商密钥(RSA/ECDHE)。
2. 对称加密传输数据(AES)。
SSL/TLS实现 HTTPS 的核心协议,保障数据 机密性完整性身份认证
证书验证- CA 机构签发证书,验证服务端身份。
- 防止中间人攻击。
HTTP vs HTTPS- HTTP 端口 80,HTTPS 端口 443。
- HTTPS = HTTP + SSL/TLS 加密。

6、常见 HTTP 头部字段

头部类型常用字段示例/作用
通用头部Cache-Control
Connection
控制缓存行为(max-age=3600)。
请求头部User-Agent
Authorization
客户端标识(浏览器类型)。
响应头部Content-Type
Set-Cookie
响应类型(text/html)。
实体头部Content-Length
Last-Modified
资源长度(字节)。

三、web服务的配置详解

1、使用 /bin/vmset.sh 脚本来快速设定IP地址

2、安装nginx,然后启动nginx

3、要让防火墙允许http协议的流量

4、知道nginx的默认发布目录以及默认发布文件的存在

5、了解nginx的主配置文件

下图为http块和http块中server块的默认配置。

6、web服务器的访问控制

1.基于IP地址的访问控制

1. location 块的作用

在 Nginx 的配置文件中,location 块用于匹配客户端请求的 URI(统一资源标识符)部分。例如,配置中的 location /lee/ 表示匹配所有以 /lee/ 开头的请求 URI。当客户端发起的请求 URI 符合这个匹配规则时,Nginx 就会应用该 location 块内的配置来处理这个请求。

2. root 指令的作用

root 指令用于指定请求文件查找的根目录。在你给出的例子中,root /usr/share/nginx/html; 意味着 Nginx 会将这个目录作为查找文件的起始点。

3. 结合 location 和 root 定位文件

当客户端发起一个请求,比如 http://example.com/lee/index.html,Nginx 会按照以下步骤来确定要查找的文件的实际路径:

  • 匹配 location 块:Nginx 会检查请求的 URI /lee/index.html,发现它以 /lee/ 开头,因此匹配到了 location /lee/ 这个块。

  • 追加路径:一旦匹配成功,Nginx 会把请求 URI 中 /lee/ 之后的部分(即 index.html)追加到 root 指定的目录 /usr/share/nginx/html 后面。

  • 确定实际路径:经过追加后,最终得到的文件实际路径就是 /usr/share/nginx/html/lee/index.html。Nginx 会去这个路径下查找 index.html 文件,如果文件存在,就将其内容返回给客户端;如果文件不存在,Nginx 通常会返回一个 404 错误页面。

然后可以通过其它IP地址不为192.168.52.100的虚拟主机发现,只有IP地址为192.168.52.100的这一台主机可以访问此 /usr/share/nginx/html/lee/index.html 文件,而其它IP地址想要访问将会出现403 Forbidden的错误提示。

2.基于认证的访问控制

先在nginx的默认发布目录中创建一个测试文件test.html。

3.基于IP地址的虚拟主机

新增加了两个IP地址。

然后在windows系统的浏览器上检验,发现可以通过新的IP地址来访问新的nginx服务器,实验就成功了。

4.基于域名的虚拟主机

改写 /etc/nginx/conf.d/vhosts.conf 文件为下图这样子。

不过因为此时我们没有往dns解析文件中加入IP地址跟域名的对应关系,所以正常来说现在是访问不了的。

移动 include /etc/nginx/conf.d/*.conf; 这条命令行到server块下方,让Nginx 先解析主配置文件里的 server 块,接着再包含并解析 /etc/nginx/conf.d/ 目录下的以.conf结尾的配置文件。

然后改写 /etc/hosts文件为下图这样,/etc/hosts 是一个用于将主机名映射到 IP 地址的本地配置文件,在类 Unix 系统(如 Linux、macOS)中广泛使用。

下图中就是将 news.lcf.org 和 bbs.lcf.org 这两个主机名映射到IP地址192.168.52.100了。

重新加载nginx的配置文件之后再在Linux系统中的火狐浏览器进行检验,因为改写的 /etc/hosts文件是Linux系统的,对虚拟机外的windows系统不生效。

也可以使用curl命令进行检验。

最后发现基于域名已经可以访问到对应IP地址的nginx服务器,实验就成功了。

相关文章:

Linux中web服务器的部署及优化

前言&#xff1a;Nginx 和 Apache HTTP Server 是两款非常流行的 Web 服务器。 Nginx 简介&#xff1a;Nginx 是一款轻量级的高性能 Web 服务器、反向代理服务器以及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器。由俄罗斯人伊戈尔・赛索耶夫开发&#xff0c;其在处…...

使用Mathematica绘制Sierpinski地毯

在Mathematica中内置的绘制Sierpinski地毯的函数&#xff1a; SierpinskiCurve[n] gives the line segments representing the n-step Sierpiński curve. 注意&#xff0c;直接运行这个函数&#xff0c;返回的是Line对象&#xff0c;例如&#xff1a; 运行如下代码&#xf…...

Qt 信号槽机制底层原理学习

简介 Qt的信号和槽&#xff08;Signals and Slots&#xff09;是Qt开发团队创造的一种特殊回调机制&#xff0c;提供了非常简洁易用的事件触发-函数调用机制。 原理学习 虽然上层使用简单&#xff0c;但底层实现机制却复杂的不得了&#xff0c;这里简单的学习一下大概原理。…...

【Java学习笔记】包

包&#xff08;package&#xff09; 包的本质&#xff1a;实际上就是创建不同的文件夹或者目录来保存类文件 包的三大作用 区分相同名字的类 当类很多的时候可以更方便的管理类 控制访问范围 使用方法 关键字&#xff1a;import—>导入&#xff08;引入&#xff09; …...

进程的程序替换——exec系列函数的使用

目录 前言 一、替换函数 二、程序替换的本质 一些细节&#xff1a; 三、程序替换与环境变量间的关系 1.介绍其他参数的意义并总结 2.自定义环境变量 1&#xff09;通过execcle传参全局环境变量 2&#xff09;通过execcle传参自定义环境变量 3&#xff09;将自定义环境变量通过p…...

【论文阅读】DETR+Deformable DETR

可变形注意力是目前transformer结构中经常使用的一种注意力机制&#xff0c;最近补了一下这类注意力的论文&#xff0c;提出可变形注意力的论文叫Deformable DETR&#xff0c;是在DETR的基础上进行的改进&#xff0c;所以顺带着把原本的DETR也看了一下。 一、DETR DETR本身是…...

ArchLinux卡死在GRUB命令行模式修复

ArchLinux卡死在GRUB命令行模式修复 文章目录 ArchLinux卡死在GRUB命令行模式修复前言一、 系统配置1.系统配置2.磁盘分区信息 二、重建GRUB引导1.插入带ArchLinux ISO的U盘&#xff0c;BIOS选择U盘启动并进入ArchLinux安装界面。2.挂载btrfs根目录分区3.挂载/boot分区4.进入ch…...

Docker 容器 - Dockerfile

Docker 容器 - Dockerfile 一、Dockerfile 基本结构二、Dockerfile 指令详解2.1 FROM2.2 MAINTAINER2.3 COPY2.4 ADD2.5 WORKDIR2.6 VOLUME2.7 EXPOSE2.8 ENV2.9 RUN2.10 CMD2.11 ENTRYPOINT 三、Dockerfile 创建镜像与模板3.1 Dockerfile 镜像3.2 镜像管理3.3 Dockerfile 模板…...

C++ 中二级指针的正确释放方法

C 中二级指针的正确释放 一、什么是二级指针&#xff1f; 简单说&#xff0c;二级指针就是指向指针的指针。 即&#xff1a; int** p;它可以指向一个 int*&#xff0c;而 int* 又指向一个 int 类型的变量。 常见应用场景 动态二维数组&#xff08;例如 int** matrix&#x…...

解释器模式(Interpreter Pattern)

解释器模式&#xff08;Interpreter Pattern&#xff09; 是行为型设计模式之一&#xff0c;通常用于处理“语言”类问题&#xff0c;比如计算器、编程语言的解析等。它的核心思想是通过建立一个解释器&#xff0c;解析并解释由语法规则描述的语言&#xff0c;通常以**抽象语法…...

编译原理期末重点-个人总结——1 概论

概述 计算机语言的分类 低级语言&#xff1a;机器语言&#xff08;唯一能被计算机执行的&#xff09;&#xff0c;汇编语言 高级语言&#xff1a;JAVA &#xff0c;C 执行高级语言或汇编语言的步骤 高级语言程序或汇编语言程序> &#xff08;通过解释 或 翻译&#xff09;转…...

五一作业-day04

文章目录 1. **ps -ef是显示当前系统进程的命令,统计下当前系统一共有多少进程**2. **last命令用于显示所用用户最近1次登录情况,awk可以取出某一列,现在要取出last命令第1列并去重统计次数**3. **secure日志是用户的登录日志,过滤出secure日志中的Failed password的次数(用课堂…...

Java按字节长度截取字符串指南

在Java中&#xff0c;由于字符串可能包含多字节字符(如中文)&#xff0c;直接按字节长度截取可能会导致乱码或截取不准确的问题。以下是几种按字节长度截取字符串的方法&#xff1a; 方法一&#xff1a;使用String的getBytes方法 java public static String substringByBytes(…...

[特殊字符]Git 操作实战:如何将本地项目提交到远程 Gitee 仓库

在日常开发中&#xff0c;我们经常需要将本地开发的项目同步到远程代码仓库中&#xff08;如 GitHub、Gitee 等&#xff09;&#xff0c;以便团队协作或备份管理。本文将以 Gitee&#xff08;码云&#xff09; 为例&#xff0c;详细讲解如何将本地已有项目提交到远程仓库&#…...

【信息系统项目管理师-论文真题】2008上半年论文详解(包括解题思路和写作要点)

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题1:企业级信息系统项目管理体系的建立1、写作要点2、解题思路项目管理流程和项目管理的工具试题2:项目的质量管理1、写作要点2、解题思路项目的早期阶段如何制定项目质量管理计划如何确保项目质量管理计划…...

C语言|函数的递归调用

函数的递归调用 (逐层分解&#xff0c;逐层合并) 自己调用自己&#xff0c;必须要知道什么时候停止调用&#xff0c;不然会造成电脑死机。 【知识点】 1 函数调用是通过栈实现的。 多个函数嵌套调用时&#xff0c;会按照先调用后返回的原则进行返回。 2 函数递归必须满足的两…...

QT 在圆的边界画出圆

QT 在圆的边界画出圆 QT 在圆的边界画出实心圆 在Qt中&#xff0c;要实现在圆的边界上绘制图形&#xff0c;你需要使用QPainter类来在QWidget或其子类的paintEvent中绘制。下面我将通过一个简单的例子来说明如何在Qt中绘制一个圆&#xff0c;并在其边界上绘制其他图形&#x…...

Guass数据库实验(数据字典设计、交叉表设计)

Assignment 2: Database Design 目录 Assignment 2: Database Design 数据库创建 新建用户bit&#xff0c;并创建数据库模式ass2 使用datastdui以该用户远程登陆 创建学科数据字典相关表 学科门类表 一级学科表 二级学科表 三级学科表 学科变更历史表 插入数据字典…...

算法题(139):牛可乐和魔法封印

审题&#xff1a; 本题需要我们将数组中包含在区间x~y之间的数据个数找到并输出 思路&#xff1a; 方法一&#xff1a;暴力解法 首先我们可以直接遍历一次数组&#xff0c;找到x的索引&#xff0c;然后再找到y的索引&#xff0c;并计算最终的元素个数&#xff0c;这里就要有O&a…...

LeetCode热题100--189.轮转数组--中等

1. 题目 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,…...

DeepSeek-Prover-V2:数学定理证明领域的新突破

前言 在人工智能飞速发展的当下&#xff0c;模型的迭代与创新层出不穷。 五一假期期间&#xff0c;DeepSeek 再次发力&#xff0c;推出了令人瞩目的新模型 ——DeepSeek-Prover-V2。 与大众期待的 R2 通用推理模型不同&#xff0c;这次 DeepSeek 将目光聚焦于数学定理证明领…...

调试——GDB、日志

调试——GDB、日志 1. gdb常用指令2. 如何生成core文件并调试&#xff1f;3. 如何调试正在运行的程序4. 调试多进程程序5. 调试多线程程序6. log日志 gcc编译器可以帮我们发现语法错误&#xff0c;但是对业务逻辑错误却无能为力。当我们想找出逻辑错误时&#xff0c;就需要调试…...

ARM子程序调用与返回

子程序&#xff08;也叫过程、函数、方法&#xff09;是一个能被调用和执行并返回到调用点那条指令的代码 段。 两个问题&#xff1a;如何将参数传递给子程序或从子程序中传递出来&#xff1f;怎么从子程序返回到调用点&#xff1f; 指令BSR Proc_A调用子程序Proc_A。 处理器将…...

WSL 安装 Debian 后,apt get 如何更改到国内镜像网址?

提问&#xff1a;Debian apt install 如何更改到国内镜像网址&#xff1f; 在 Debian 系统中&#xff0c;你可以通过修改 /etc/apt/sources.list 文件&#xff0c;将软件源更改为国内镜像网址&#xff0c;以加快软件包的下载速度。下面为你详细介绍操作步骤&#xff1a; 1. 备…...

SpringCloud GateWay网关

1、网关介绍 微服务网关&#xff08;Microservices Gateway&#xff09;是微服务架构中的核心组件&#xff0c;充当所有客户端请求的统一入口&#xff0c;负责请求的路由、过滤和聚合等操作。它是微服务与外部系统&#xff08;如Web、移动端&#xff09;之间的中间层&#xff0…...

可视化大屏开发全攻略:技术与实践指南

引言 在数字化浪潮席卷全球的当下&#xff0c;数据已成为企业乃至整个社会发展的核心驱动力。从繁华都市的交通管控中心&#xff0c;到大型企业的数据运营中枢&#xff0c;可视化大屏无处不在&#xff0c;以直观、震撼的方式展示着数据的魅力与价值。它就像是一扇通往数据世界…...

如何设计一个为QStackWidget的界面切换动画?

目录 前言 接口考虑 实现的思路 前言 笔者这段时间沉迷于给我的下位机I.MX6ULL做桌面&#xff0c;这里抽空更新一下QT的东西。这篇文章是跟随CCMoveWidget一样的文章&#xff0c;尝试分享自己如何书写这份代码的思考的过程 接口考虑 笔者不太想使用继承的方式重新写我们的…...

LeetCode 0790.多米诺和托米诺平铺:难想条件的简单动态规划

【LetMeFly】790.多米诺和托米诺平铺&#xff1a;难想条件的简单动态规划 力扣题目链接&#xff1a;https://leetcode.cn/problems/domino-and-tromino-tiling/ 有两种形状的瓷砖&#xff1a;一种是 2 x 1 的多米诺形&#xff0c;另一种是形如 "L" 的托米诺形。两种…...

模拟芯片设计中数字信号处理一些常用概念(一)

模拟芯片设计中经常用时域场景思考来解决问题,但实际上很多地方如果采用频域角度思考,解决问题更快更方便。 时域和频域的对照关系如下: a、如果时域信号是周期的,那么它的频谱就是离散的。 b、如果时域信号是非周期的,那么它的频谱就是连续的。 c、如果时域信号是离散的…...

c++进阶——AVL树主要功能的模拟实现(附带旋转操作讲解)

文章目录 AVL树的实现AVL树的概念及引入AVL树调整问题AVL树的实现AVL树的结构AVL树的插入插入的流程更新平衡因子的原则实现插入的基本框架(插入 调整平衡因子)旋转操作右单旋左单旋左右双旋右左双旋 合并旋转代码 测试部分平衡检测接口测试用例 对于其他接口的说明 AVL树的实…...

一个电商场景串联23种设计模式:创建型、结构型和行为型

理解了&#xff01;你希望有一个具体的项目案例&#xff0c;能够涵盖所有23种设计模式&#xff0c;并且将它们分类为创建型、结构型和行为型。这个需求非常好&#xff0c;能够帮助你从实际的应用场景理解每种设计模式的用法。 为了实现这个目标&#xff0c;我将为你设计一个电…...

浅拷贝和深拷贝的区别

Person p1 new Person(10);Person p2 p1;p2.age 20;System.out.println(p1p2); // trueSystem.out.println(p1.age); // 20 这种做法只是复制了对象的地址&#xff0c;即两个变量现在是指向了同一个对象&#xff0c;任意一个变量&#xff0c;操作了对象的属性&#xff0c;都…...

Java开发者面试实录:微服务架构与Spring Cloud的应用

面试场景 面试官: 请介绍一下你的基本情况。 程序员: 大家好&#xff0c;我叫张小明&#xff0c;今年27岁&#xff0c;硕士学历&#xff0c;拥有5年的Java后端开发经验。主要负责基于Spring Boot开发企业级应用&#xff0c;以及微服务架构的设计和实现。 面试官: 好的&#…...

在Ubuntu系统中安装桌面环境

在 Ubuntu 系统中安装桌面环境可以通过包管理器 apt 或工具 tasksel 实现。以下是详细的安装方法和常见桌面环境的选择&#xff1a; --- ### **1. 准备系统更新** 在安装前&#xff0c;建议更新软件源和系统包&#xff1a; bash sudo apt update && sudo apt upgrade…...

多语言笔记系列:Polyglot Notebooks 中使用 xUnit 单元测试

Polyglot Notebooks 中使用 xUnit 单元测试 本文目录 Polyglot Notebooks 中使用 xUnit 单元测试[TOC](本文目录)Polgylot Notebooks 并没有直接支持单元测试框架。不能像VS里那样方便的进行单元测试。简单远行的话&#xff0c;可以使用下面的方案&#xff01;1、引入必要的NuG…...

Cisco Packet Tracer 选项卡的使用

目录 设备Config选项卡的使用 Realtime and Simulation模式&#xff08;数据包跟踪与分析&#xff09; 设备Desktop选项卡的使用 设备Config选项卡的使用 Hostname NVRAM Startup Config----Load 加载 INTERFACE 点击on Save 如果&#xff0c;不把Running Config保存为Sta…...

杨校老师竞赛课之C++备战蓝桥杯初级组省赛

目录 1. 灯塔 题目描述 输入描述 输出描述 输入样例1 输出样例1 输入样例2 输出样例2 数据说明 2. 子区间 题目描述 输入描述 输出描述 输入样例 输出样例 数据说明 3. 染色 题目描述 输入描述 输出描述 输入样例1 输出样例1 输入样例2 输出样例2 数据…...

gcc/g++用法摘记

链接静态库 gcc main.o -L/path/to/libs -lmylib -o myprogram 【待续】...

kotlin 扩展函数

Kotlin 扩展函数的定义与使用 定义扩展函数 Kotlin 的扩展函数是一种强大的机制&#xff0c;允许开发者为已有的类添加额外的功能&#xff0c;而无需继承该类或对其进行任何修改。这种特性极大地提高了代码的灵活性和可读性。 扩展函数可以通过在函数名称前指定目标类型的接…...

机器人强化学习入门学习笔记

(1)物理引擎 物理引擎就是模拟真实世界物理规律的软件工具。它会根据你给定的物体、质量、形状、力等信息,计算这些物体在时间上的运动和相互作用。如果你设计了一个机器人,那物理引擎就是“虚拟现实世界”,让机器人在里面“活起来”,模拟它走路、抓东西、摔倒等动作。而…...

《RESTful API版本控制的哲学思辨:稳定性与创新性的终极平衡》

有效的版本控制&#xff0c;就如同精密仪器中的校准装置&#xff0c;确保API在不断升级的过程中&#xff0c;依然能与旧有系统无缝对接&#xff0c;维持整个生态的平稳运行。 不同的客户端对API的依赖程度和使用方式各不相同。有些客户端可能因为各种原因&#xff0c;无法及时…...

spring中spring-boot-configuration-processor的使用

spring-boot-configuration-processor 是 Spring Boot 提供的注解处理器&#xff0c;用于在编译阶段生成配置元数据文件&#xff08;spring-configuration-metadata.json&#xff09;&#xff0c;从而优化开发体验。以下是其核心功能和使用指南&#xff1a; 一、核心功能 IDE 智…...

30天开发操作系统 第27天 -- LDT与库

前言 大家早上好&#xff0c;我们今天的第一个任务就是修复昨天晚上的那个bug。是个什么bug来着&#xff1f;就是用nsct命令运行的应用程序&#xff0c;无论是按ShiftF1还是点击窗口的“x”按钮都没有反应的那个bug啦。 我们得先来找到出问题的原因&#xff0c;然后才能采取对…...

std::move()详解

一、std::move()的作用和原理 本质&#xff1a; std::move()并不像字面意思“搬走”那些对象&#xff0c;而是&#xff1a; 将传入的对象“强制转化”为右值引用类型&#xff0c;从而开启“移动语义”。 在源码层面&#xff1a; 复制代码 template<typename T> std::…...

linux系统基本操作命令

文件和目录操作 ls&#xff1a;列出目录内容。 例如&#xff1a;ls -l 显示详细信息&#xff0c;ls -a 显示包括隐藏文件在内的所有文件。 cd&#xff1a;改变当前目录。 例如&#xff1a;cd /home/username 切换到指定目录。 pwd&#xff1a;显示当前目录的完整路径。 mk…...

python打卡day16

NumPy 数组基础 因为前天说了shap&#xff0c;这里涉及到数据形状尺寸问题&#xff0c;所以需要在这一节说清楚&#xff0c;后续的神经网络我们将要和他天天打交道。 知识点&#xff1a; numpy数组的创建&#xff1a;简单创建、随机创建、遍历、运算numpy数组的索引&#xff1a…...

架构进阶:什么是数据架构,如何理解数据架构?(华为)

数据架构是企业架构的重要组成部分,DAMA、IBM 及国内大厂对其定义各有侧重。它包含数据资产目录、数据标准、数据模型和数据分布四个组件。数据资产目录可梳理企业数据资产,数据标准统一数据含义和规则,数据模型反映业务对象关联关系,数据分布呈现数据流动情况。数据架构是…...

基于EFISH-SCB-RK3576工控机/SAIL-RK3576核心板的KTV点歌主机技术方案‌(国产化替代J1900的全场景技术解析)

‌一、硬件架构设计‌ ‌多媒体处理模块‌ ‌超高清解码‌&#xff1a; RK3576 NPUGPU协同解码&#xff0c;支持4K60fps H.265硬解&#xff08;功耗<5W&#xff09;&#xff0c;支持8路1080P视频同步预览对比J1900需外接VPU解码芯片&#xff0c;硬件成本降低40%&#xff0c;…...

Java面试深度解密:Spring Boot、Redis、日志优化、JUnit5及Kafka事务核心技术解析

模拟面试实战 面试官&#xff1a;请解释Spring Boot的自动配置原理&#xff1f;哪些关键注解参与了这一过程&#xff1f; xbhog&#xff1a;Spring Boot通过AutoConfiguration标记核心配置类&#xff0c;通过ConditonalOnClass和ConditionalOnMissingBean判断依赖是否存在并自…...

内存碎片深度剖析

目录 什么是内存碎片 内部碎片的解决 malloc STL二级空间配置器 外部碎片的解决 伙伴系统算法 slab分配器 什么是内存碎片 内存碎片是指在内存中存在的一些不连续的、较小的空闲内存块&#xff0c;这些小块内存由于太小而无法被有效地分配给程序使用&#xff0c;从而导…...