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

传统软件部署的痛点

这是对之前《Docker 容器化》文章的一个补充

在 Docker 等容器技术普及前,开发、测试、运维团队常被环境不一致、部署复杂、资源浪费、扩容低效为典型的问题困扰,这些问题不仅可能导致项目的交付周期的延后,还会引发跨团队协作矛盾,甚至导致线上故障,我们逐一来看每个问题。

环境不一致

“在我这里好的,怎么到你那里就崩了”

这是开发团队最高频的矛盾点,也是开发团队和测试团队之间协作的争论点,这个问题的本质是 “开发环境、测试环境、生产环境的配置差异”,可以分为:

  1. 系统和工具版本差异
  2. 配置文件和依赖路径差异

系统和工具版本差异

典型场景

开发人员本地用 Windows 10 系统,Python 3.8 版本,依赖的requests库是 2.25.1 版。

测试环境是 CentOS 7 系统,Python 3.6 版本,requests库是 2.20.0 版。

生产环境是 Ubuntu 18.04 系统,Python 3.7 版本,requests库是 2.22.0 版。

开发写的代码在本地能正常调用接口,到测试环境却因 “Python 3.6 不支持 f-string 格式化的某语法” 报错,到生产环境又因 “requests库版本不同导致参数解析逻辑变化” 出现数据异常。

image

产生原因

  1. 缺乏统一的环境配置标准,团队成员选择系统、工具版本过于自由;
  2. 依赖库管理混乱,开发时未锁定依赖版本(如未生成requirements.txt或package.json),测试 / 生产安装时默认拉取最新版,导致版本不兼容。

影响

  • 问题排查困难:明明本地跑通的代码,到其他环境却崩了,明确的知道是环境的问题,但是仍需要花时间对比系统版本、库版本,甚至逐行调试语法兼容性,严重占用开发时间。
  • 测试团队协作:部分测试过程中发现的 “问题” 并非代码逻辑错误,而是环境差异导致,对于以 bug 进行研发质量评估的团队,容易在问题上进行反复拉扯,消耗各个团队的精力。
  • 线上风险隐患:跑通了测试的用例,但若生产环境存在未被测试覆盖的版本差异,可能导致上线后突发故障(如某电商平台因 Java 版本差异导致支付接口超时,影响交易)。

 

配置文件和依赖路径差异

典型场景

开发本地的数据库地址为 localhost:3306,文件存储路径设为 D:/data

测试环境数据库地址是test-db:3306,文件路径是 /opt/data

生产环境数据库地址是prod-db:3306,文件路径是/data/app

开发打包代码时未区分环境配置,直接将本地配置文件上传,导致测试环境连不上数据库,生产环境找不到文件存储目录。

image

产生原因

  1. 配置文件未做“环境隔离”,硬编码本地路径或地址。
  2. 缺乏统一的配置管理工具,测试/运维需手动修改配置文件,容易漏改或改错(如少改一个 IP 地址符号)。

影响

  • 线上风险隐患:如果测试环境未拦截到该问题(测试环境与本地环境一致),将有问题的文件路径发布到生产,则会出现生产事故。

 

部署复杂

……又要重新配置一遍

传统部署需手动配置依赖、环境变量、权限等,步骤繁琐且易出错,尤其在多组件依赖场景下,部署成本极高,这在初期部署及后续升级带来了不小的运维成本。

多依赖场景

装 A 要先装 B,装 B 要先装 C,一步错可能会导致我们重头开始。

典型场景

部署一个 Java Web 应用,通常需要经历以下步骤:

  1. 安装 JDK(需先判断系统架构,选择 32/64 位,配置 JAVA_HOME 环境变量,验证java-version是否生效)
  2. 安装 Tomcat(解压压缩包,修改 server.xml 配置端口,设置 Tomcat 用户权限,避免端口冲突)
  3. 安装 MySQL(配置数据库用户名密码,创建数据库和表,授权远程访问,可能遇到“root 用户无法远程登录” 的权限问题)
  4. 部署应用(将 WAR 包放到 Tomcat 的webapps目录,重启 Tomcat,可能遇到 “WAR 包解压失败”“数据库连接池配置错误” 等问题)

若其中一步出错(如 JDK 环境变量配置错误、MySQL 授权语句写错),整个部署流程需从头排查,新手可能花 1-2 天才能完成一次成功部署。

image

产生原因

  1. 应用依赖的基础组件(如 JDK、数据库、中间件)需单独部署,且各个组件有自己的配置要求
  2. 所有步骤依赖人工操作,容易因操作失误(如输错命令、漏配参数)导致失败。

 

资源占用率高

“哪位大哥有资源,释放一些出来”

传统虚拟化技术(如 VMware、VirtualBox)通过 “模拟完整操作系统” 实现隔离,这种方式资源利用率极低,硬件成本居高不下。

资源预分配

典型场景

某公司用虚拟机部署 3 个应用,虚拟机本身有6核12GB资源,每个应用的虚拟机分配 2 核 4GB 内存,实际应用运行时仅占用 1 核 2GB 内存,剩余 1 核 2GB 内存被虚拟机 “闲置占用”,无法分配给其他应用。若要部署第 4 个应用,需额外采购服务器,增加硬件成本。

实际上,6核12GB只是这里方便计算的提供的一个参考值,实际由于管理应用虚拟机,资源虚化等,宿主机还需要额外的资源。
image

产生原因

  1. 资源预分配导致浪费:虚拟机启动前需固定分配 CPU、内存、磁盘,即使应用实际占用低,这些资源也无法被其他虚拟机使用;
  2. 操作系统开销大:每个虚拟机都有独立的操作系统内核(如 Windows Server、CentOS),仅操作系统自身就需占用数百 MB 内存(如 CentOS 7 最小化安装后占用约 500MB 内存),进一步挤压应用可用资源。

例如:在一台 8 核 16GB 内存的服务器上创建虚拟机,每个虚拟机需分配至少 2 核 4GB 内存(保证基本运行),且需占用独立的磁盘空间(如每个虚拟机分配 20GB 磁盘)。理论上可以跑4台虚拟机,但是实际上,宿主机本身也需要占用资源,同时也需要管理维护虚拟机,所以跑不满4台虚拟机。

对于中小企业来说,服务器数量有限,若用虚拟机部署,可能出现 “想加应用却无资源” 的困境:例如一台服务器最多跑 3 个虚拟机,若有 5 个应用需部署,需采购 2 台服务器,硬件成本翻倍;而若用 Docker,相同服务器可跑 20 + 容器,资源利用率提升 5-10 倍。

 

扩容效率低

吃x都赶不上热乎的

传统虚拟化启动慢、扩容流程长,无法应对突发流量(如微博热搜),容易导致系统卡顿或崩溃。

 

典型场景

某电商平台大促前,发现 “商品详情页” 服务压力过大,需紧急扩容 2 台虚拟机,从发起扩容请求到虚拟机启动、应用部署完成,需至少 10 分钟,而此时流量已开始上涨,可能导致前 10 分钟内用户访问卡顿。

image

产生原因

  1. 虚拟机启动慢:加载操作系统内核→初始化硬件驱动→启动系统服务→启动应用,整个过程需 3-5 分钟,如果硬件性能够强,还可以更快一些。
  2. 扩容流程繁琐:需要申请资源,如果资源不足了,要么采购,要么从其他虚拟机上抢资源;再进入新的虚拟机中进行环境配置环境,部署应用,每一步都要走一遍;等完成这些工作,泼天的流量,也只能眼巴巴的看着溜走。

 

小结

上文的场景设计是比较直白直接的,在 Docker 出现前的技术持续迭代过程中,也或多或少的解决了相关的问题,所以你在大厂里,未必会遇到这么极端的场景设计,但是避免不了遇到一些隐形的问题,比如:

  1. 在配置上,开发及测试环境由于网络速率的问题,通常我们会在开发环境中设置一个长等待的时间,如 60s 等待 HTTP 请求返回结果,但是生产环境中则设置 5s 等待时间,此时在生产环境中遇到一个请求失败,则很可能是速度慢导致的超时。
  2. 在生产环境中,为了优化用户体验,会接入 CDN 进行加速,而本地及测试环境则是直连服务,如果没处理好 CDN 配置,也会遇到同类的问题,这就是环境不一致带来的问题。
  3. 即使开发测试环境的部署都没有问题,但是部署生产时,由于生产环境具有严格的防火墙及端口访问机制,也会出现服务访问不了的情况。
  4. 部署扩容都是小事,技术的发展过程中肯定是会优化的,但是升级应用的时候就会很痛,比如公安的安全扫描中发现我们的服务存在问题,解决方案很简单,升级一下系统和相关软件就可以了,但事实却是,这个服务百年未有过更新,随便升级底层的依赖,都有可能是破坏性更新,太痛了。

以上就是传统虚拟机部署的痛点问题,那么 Docker 对于这些问题,有什么更好的解决方案吗?

 

Docker 的解决方案

Docker 的核心是:容器、镜像。再加上一个仓库,便是 Docker 的三板斧了。

  1. 通过镜像固化环境配置
  2. 通过容器减少资源消耗
  3. 通过仓库进行版本管理

具体可以再回到《Docker 容器化 - 贪婪的君子 - 博客园》阅读。

相关文章:

传统软件部署的痛点

这是对之前《Docker 容器化》文章的一个补充 在 Docker 等容器技术普及前,开发、测试、运维团队常被环境不一致、部署复杂、资源浪费、扩容低效为典型的问题困扰,这些问题不仅可能导致项目的交付周期的延后,还会引发跨团队协作矛盾,甚至导致线上故障,我们逐一来看每个问题…...

HarmonyOS 5分布式数据管理初探:实现跨设备数据同步

本文将引导您了解HarmonyOS 5的分布式数据管理能力,并通过一个简单的示例演示如何实现跨设备数据同步。1. 分布式数据管理简介 HarmonyOS的分布式数据管理能力允许应用程序在多个设备之间无缝地同步和共享数据。它抽象了底层设备差异,让开发者可以像操作本地数据一样处理跨设…...

qoj965 Trade

题意 有 \(n\) 件商品,第 \(i\) 件商品有基准价格 \(c_i\) 和抬价价格 \(p_i\),\(p_i\) 互不相同,每件商品只能买一件,你有 \(S\) 元钱。 若你买了 \(k\) 件商品,则第 \(i\) 件商品的价格为 \(c_i+k\times p_i\)。问你最多能买多少件商品。 \(1\le c_i\le 10^9,0\le p_i,S…...

复盘我的第一个 大模型Agent:从核心循环到模块化架构的演进之路

本文将以我编写的一个 Go Agent Demo 为例,穿透各类框架的表层封装,回归其工程本质。我将首先分析其核心的 ReAct 循环,并展示这个看似简单的循环是如何通过模块化设计,演进为一个结构化、可扩展的软件系统。最近,我投入了一些时间学习和研究大语言模型(LLM)驱动的 Agen…...

Linux内核不使用bear如何快速生成compile_commands.json使用vscode阅读源码

野火鲁班猫SDK 进入内核目录 cd /opt/LubanCat_SDK/kernel-5.10 编译内核 ../build.sh kernel 生成compile_commands.json /opt/LubanCat_SDK/kernel-5.10/scripts/clang-tools/gen_compile_commands.py打开vscode code . 安装clangd插件 打开一个c文件 开始生成clangd数据库...

Docker 容器化

引言 在解释docker是什么之前,我们首先应该先了解的是容器化的概念。 什么是容器?就是一个沙箱,在这个沙箱中涵盖了特定应用运行的一切依赖的内容。但他不是一个操作系统,且和底层的操作系统是隔离的。 什么是容器化?容器化就是将软件和应用所需要的所有依赖打包到一个独立…...

phpmyadmin漏洞利用

1、信息搜集 1.1、版本号 访问/README /doc/html/index.html获取版本信息1.2、绝对路径 (1) phpinfo() 页面:最理想的情况,直接显示web路径 (2) web报错信息:可以通过各种fuzz尝试让目标报错,也有可能爆出绝对路径 (3) 一些集成的web框架:如果目标站点是利用phpstudy、LAM…...

CF19E Fairy

题意:给定一个无向图,$n,m \le 10^4$,需对每个点黑白染色,使每条边两端点颜色不同,求对每一条边,删除该边后是否存在合法染色方案。思路:合法染色方案即删除边后图为二分图,不存在奇环。先构造 dfs 生成树,将一条非树边和其覆盖树边形成的环称为基本环,包含多个非树边…...

Wireshark 学习笔记(二)

Wireshark 学习笔记 (二) 数据包操作 统计|摘要 统计 此菜单提供多种统计选项,可供调查,帮助用户了解流量范围、可用协议、端点和会话等宏观情况,以及一些特定协议的详细信息,如 DHCP、DNS 和 HTTP/2。 解析地址 此选项通过提供解析地址及其主机名的列表,帮助分析师识别捕…...

鸿蒙应用开发从入门到实战(三):第一个鸿蒙应用

持续分享IT技术,帮你少走弯路。《鸿蒙应用开发从入门到项目实战》系列文章持续更新中。本文使用DevEco Studio创建应用,并使用预览、模拟器、真机三种方式进行调试。​ 大家好,我是潘Sir,持续分享IT技术,帮你少走弯路。《鸿蒙应用开发从入门到项目实战》系列文章持续更…...

Litctf2025 Write-up

逼逼叨 很难受啊,出去跑项目封闭管理,结果没打上,只能赛后复现了。 上班是真滴累 Web [LitCTF 2025]多重宇宙日记进来先随便注册个账户,说实话看到这样的题目第一眼怀疑二次注入、直接不想做登陆后发现可以设置主题语言之类的,随便试试无果查看页面源码摘出JS中的关键代码…...

DFS算法(递归)

DFS算法(递归) DFS(Depth-First Search,深度优先搜索)是一种用于遍历或搜索树、图等数据结构的算法。其核心思想是:沿着一条路径尽可能深入地探索,直到无法继续前进(遇到已访问节点或无未访问邻接节点),再回溯到上一个节点,选择另一条未探索的路径继续深入。所以可以…...

博客园出海记

在开篇中我们宣布了博客园出海计划的启航,出海航船选择了阿里云。第一件准备工作是在航船上组装集装箱 —— 搭建 Kubernetes 集群。出海根据地选在了阿里云新加坡机房,Kubernetes 集群用阿里云 ECS 自己搭建,没有使用阿里云容器服务 ACK。首先购买一台 ECS 用于部署 Contro…...

vue3 - pinia状态管理库

概念 Pinia 是 Vue 官方推荐的状态管理库,是 Vuex 的继任者(Vuex 作者同一人开发),专门为 Vue 3 设计,完全支持 Composition API 和 TypeScript。它简化了状态管理的流程,提供了更简洁的 API 和更好的开发体验。 核心特点简洁的 API 去掉了 Vuex 中的 mutation(突变),…...

做会议海报就是在淘汰老实人

还好有模板直接用!不仅节省更多时间,做出来的ppt,或是学术海报既清晰又美观,导师看了都说好! ppt和学术海报都是可直接编辑的哦!每张文件图片均获取网络,仅供学习与研究交流使用。支持原创! 感兴趣可直接无套路领取 【450+学术会议海报poster模板】+【600+学术汇报PPT模…...

ubuntu24.04安装mysql5.7.42

环境Os:ubuntu 24.04 desktop桌面版mysql:5.7.42 说明: a.ubuntu24下安装mysql 5.7 使用的依赖库 需要创建软连接指向新的依赖库.查看操作系统信息root@hxl-VirtualBox:/# uname -a Linux hxl-VirtualBox 6.14.0-29-generic #29~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Aug 14…...

易基因:Cell封面:中国科学家杨学勇/黄三文m6A-seq等揭示同义突变通过表观转录调控机制决定生物性状|顶刊突破

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 近日,中国农业科学院蔬菜花卉研究所杨学勇研究员、中国农业科学院深圳农业基因组所黄三文研究员和英国约翰英纳斯中心丁一倞研究员团队合作,以封面文章形式在顶刊《Cell》(细胞)上发表题为“Recessive epi…...

一文看懂Deepspeed:用ZeRO训练大模型原理解析及参数含义解释

实际训练中Deepspeed参数配置ZeRO各stage含义是什么,offload以及gradient checkpoint是如何起作用的,本篇基于ZeRO不同stage含义,以及实践时参数含义来阐述Deepspeed原理。 这几天在做大模型的微调,发现几乎所有都用到了deepspeed,这里给大家提供一个ChatGLM2在ptuning模式…...

AC-DC整流器双闭环控制MATLAB/Simulink仿真

AC-DC整流器双闭环控制系统的MATLAB/Simulink仿真程序,包含电压外环和电流内环控制。 这个仿真实现了一个三相PWM整流器的双闭环控制:电压外环:控制直流侧输出电压,提供电流内环的参考信号 电流内环:控制网侧电流,实现单位功率因数运行MATLAB:参数设置与仿真启动 % AC-D…...

新娘化妆 造型 美甲 护肤 资料合集

化妆的核心--眉妆 眉毛的结构认识眉毛主要由眉头眉峰眉尾眉头在鼻翼外侧到内眼角的垂直线上眉峰在眉头到眉尾的三分之二处, 是鼻翼外侧至人眼平视前方时外眼球的延长线上。眉腰眉头与眉峰中间称之为眉腰眉尾在鼻翼外侧到外眼角的 延长线上,或则嘴角到外眼角的延长线上。 标准…...

rabbitMQ-基础day1 - a

微服务一旦拆分,必然涉及到服务之间的相互调用,目前我们服务之间调用采用的都是基于OpenFeign的调用。这种调用中,调用者发起请求后需要等待服务提供者执行业务返回结果后,才能继续执行后面的业务。也就是说调用者在调用过程中处于阻塞状态,因此我们成这种调用方式为同步调…...

实用指南:Nginx反向代理与负载均衡部署

实用指南:Nginx反向代理与负载均衡部署pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !importa…...

C# Avalonia 13- MoreDrawing - BlurEffects

C# Avalonia 13- MoreDrawing - BlurEffectsBlurEffects.axaml代码<Window xmlns="https://github.com/avaloniaui"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xm…...

【IEEE出版】第三届算法、图像处理与机器视觉国际学术会议(AIPMV2025)

由江苏科技大学、江苏大学、中国图象图形学学会联合主办,江苏科技大学计算机学院、镇江市计算机学会承办,镇江市软件行业协会、AEIC学术交流中心协办的第三届算法、图像处理与机器视觉国际学术会议(AIPMV2025)将于2025年9月26日-28日在江苏镇江召开。【江苏科技大学、江苏大…...

C++ - 了解STL的数据容器

CSP考试用的STL内容也越来越多了,我们有必要详细了解一下。 常用容器array 静态数组(大小固定,) vector 矢量(动态数组,大小可变) string 字符串 stack 栈 queue 队列 set 集合 map 键值对array 静态数组 array是固定大小的序列容器,array中包含特定个数并且严格按照线…...

收费详情

套餐价格_真免费!导出采集结果无任何限制_后羿采集器 https://www.houyicaiji.com/?type=pricing个人免费版 ¥ 0永久免费,不要积分智能模式:智能识别列表和分页,一键采集 流程图模式:可视化操作,可以模拟人为操作 采集任务:100个任务 支持多任务同时运行,无数量限制,…...

bluetoothctl UUIDs

数据 bluetoothctl 中的抓取数据: [CHG] Device 66:55:44:33:22:11 UUIDs: 1beeffff-0000-1000-8000-00805f9b34fb [CHG] Device 66:55:44:33:22:11 UUIDs: 4af678c8-0000-1000-8000-00805f9b34fb [CHG] Device 66:55:44:33:22:11 UUIDs: 5a079046-0000-1000-8000-00805f9b34f…...

ANOLIS8安装配置ldap账号登录

sudo dnf install -y openldap-clients nss-pam-ldapd authconfig配置 nslcd​​ sudo vim /etc/nslcd.confuri ldap://your_ldap_server base dc=example,dc=com binddn cn=admin,dc=example,dc=com bindpw your_admin_password ssl no tls_cacertdir /etc/openldap/cacerts​…...

实用指南:小程序非主页面的数据动作关联主页面的数据刷新操作

实用指南:小程序非主页面的数据动作关联主页面的数据刷新操作pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New"…...

【光照】[光照模型]是什么?以UnityURP为例

【从UnityURP开始探索游戏渲染】专栏-直达核心定义 ‌光照模型‌是计算机图形学中用于模拟光线与物体表面相互作用的数学算法,它通过计算光能传播的物理特性,决定场景中每个像素的最终颜色值。其本质是求解‌光能传输方程‌的简化实现。 graph LR A[光源发射光子] --> B[与…...

从知识管理困境到高效协同:Gitee Wiki如何重塑研发团队的知识体系

从知识管理困境到高效协同:Gitee Wiki如何重塑研发团队的知识体系 在数字化转型浪潮中,知识管理已成为企业研发效能提升的关键瓶颈。许多技术团队都曾陷入"知识坟场"的困境——大量文档散落在不同平台,难以检索和维护,最终导致知识资产的价值流失。Gitee Wiki的出…...

cache和主存的映射方式

cache和主存的映射方式 全相联映射 主存块可以放在cache的任意位置 假设某个计算机的主存地址空间大小为256MB,按字节编址。 其数据cache有8个cache行,行长64B 由此可知,我们想要求出主存被分为多少块,就用256MB/64B =228/26=2^22 由于主存有28位,那么它就有22位用来表示主…...

PHP数组去重和集合有什么关系

PHP数组去重与集合:不止是简单的去重你可能会觉得PHP数组去重很简单,array_unique()不就搞定了吗? 但事情远没有那么简单。深入理解PHP数组去重,其实就触及到了集合论的一些核心概念,这能帮你写出更高效、更优雅的代码,避免一些常见的坑。这篇文章,咱们不玩虚的,直接深…...

kkFileView4.4.0 安装与使用

1、码云搜索kkfileview项目,下载项目源码(https://gitee.com/kekingcn/file-online-preview),或者直clone也可以,使用idea打开项目,使用maven加载项目所需要的依赖包2、使用maven进行打包 mvn package,然后 linux环境使用kkFileView.xx.tar.gz, windows使用kkFileView.…...

ubuntu22挂载windows server2019的共享文件夹

本文实现以下目标 1、win 2019 共享一个文件夹 2、ubuntu22访问win2019共享文件夹 ================== 在win2019文件上-右键-属性-共享 选择共享用户和密码。完成,此方法为20世界80年代的经典共享。今年2025年9月,建议寻找更好的共享方法,比如云盘、nas等等。在ubuntu22上…...

PHP数组去重适用于哪些场景

PHP数组去重:不止是array_unique()那么简单你可能觉得PHP数组去重很简单,array_unique()函数一用就完事了。但实际上,这只是冰山一角。 不同的场景下,对数组去重的需求和最佳方案大相径庭,盲目使用array_unique()可能会导致性能问题甚至结果错误。这篇文章,咱们就深入探讨…...

下载视频

1.下载ffmpeg放在电脑上,并设置成环境变量 2.下载yt-dlp,并设置成环境变量 3.下载脚本@echo off chcp 65001 >nul title YouTube Batch Downloader (Best Quality)setlocal enabledelayedexpansion:: 检查 yt-dlp.exe 是否存在 if not exist yt-dlp.exe (echo ERROR: yt-d…...

常用Linux配置

允许上下查看命令历史: vi ~/.bashrc添加 HISTFILESIZE=500 HISTSIZE=500 set -o history退出,输入 source ~/.bashrc 生效本文来自博客园,作者:mariocanfly,转载请注明原文链接:https://www.cnblogs.com/mariocanfly/p/19087376...

m1max可以装windows系统很卡吗

m1max可以装Windows系统很卡吗? 一、M1 Max芯片简介 M1 Max是苹果公司推出的一款高性能集成芯片,主要应用于MacBook Pro等高端产品中。它拥有强大的计算能力、图形处理能力和能效比,专为专业用户设计。M1 Max采用了先进的5纳米工艺制造,集成了高达10核的CPU、32核的GPU以及…...

1 | 移动语义:浅拷贝,深拷贝和引用拷贝,左值和右值

1、浅拷贝和深拷贝(和引用拷贝) ​ 浅拷贝&深拷贝&引用拷贝?浅拷贝就是把表面的数据都拷贝一遍,但是指针指向的地址不会被拷贝。深拷贝就是所有的全部拷贝一遍。引用拷贝就是换个名字,指向的地址还是和原来一样。 2、左值和右值(和右值引用) ​ 左值就是有具体…...

macbook air和windows系统区别

如何选择:MacBook Air与Windows系统的区别 一、引言 在当今这个数字化时代,个人电脑已经成为我们工作、学习和娱乐不可或缺的工具。面对市场上琳琅满目的电脑产品,如何选择一款适合自己的设备成为许多人关心的问题。其中,MacBook Air 和搭载 Windows 系统的电脑是两大主流选…...

Gitee:国产代码托管的领军者,助力企业应对CODING停服挑战

Gitee:国产代码托管的领军者,助力企业应对CODING停服挑战 在数字化转型浪潮中,软件开发效率成为企业核心竞争力的关键。近日,腾讯云旗下CODING DevOps系列产品宣布将于2028年9月30日全面停止服务,这一消息在开发者社区引发广泛关注。作为国产代码托管平台的标杆,Gitee凭借…...

锂电池外围均衡电路仿真

面对当前严峻的能源危机、环境污染等问题,开发研究电动汽车已成为汽车行业的主流方向,而目前高效稳定的动力电池是电动汽车研究领域的核心问题。因此,本项目研究电动汽车电池管理系统(BMS)的关键技术,探究准确估测电池的荷电状态(SOC)以及锂电池的外围均衡电路的设计方…...

Wireshark 学习笔记(一)

Wireshark 学习笔记 (一) 基础 图形界面和数据工具栏 主工具栏包含多个用于数据包嗅探和处理的菜单和快捷方式,包括过滤、排序、摘要、导出和合并。显示过滤栏 主要查询和过滤区域。近期文件 最近调查的文件列表。您可以通过双击调出列出的文件。捕获过滤器和接口 捕获过滤器以…...

ELF 文件结构与加载流程介绍

概述 ELF(Executable and Linkable Format)是一种在类 Unix 系统中广泛使用的文件格式,用于存储可执行文件、目标文件、共享库以及核心转储文件。它为操作系统提供了一种标准化的方式来表示程序的结构,使得操作系统能够正确加载、执行和调试程序。ELF 文件格式在 Linux 系统…...

灵码产品演示:Maven 示例工程生成

作者:轻眉 演示主题:由 AI 自动生成 0 到 1 的电商订单 Java 项目 演示目的 面向 Java 零基础的用户,通过灵码的产品能力(如提示词、编码智能体、项目 Rules 和 SQLite MCP 服务、单元测试)自动生成 0 到 1 的电商订单 Java 项目,使用 Maven 作为构建工具。 演示准备 1. …...

NocoBase 本周更新汇总:优化及缺陷修复

本周更新包括:邮件管理支持分批同步,工作流审批支持审批时退回到任意节点等。原文链接:https://www.nocobase.com/cn/blog/weekly-updates-20250912。 汇总一周产品更新日志,最新发布可以前往我们的博客查看。 NocoBase 目前更新包括的版本更新包括三个分支:main ,next和…...

CF1265E题解

题目。 设 $f_i$ 表示问完了前 $i-1$ 面镜子,还期望要多少天。 有 $f_i=p_i f_{i+1}+(1-p_i)f_1 +1,f_{n+1}=0$ ,答案即为 $f_1$ 。 将递推式变形,有 $f_i-f_1=p_i(f_{i+1}-f_1)+1$。 记 $g_i=f_i-f_1$,则 $g_i=p_i g_{i+1}+1,g_{i+1}=\frac{g_i-1}{p_i},g_1=f_1-f_1=0$。 …...

数组中的第K大元素

题目描述:给一个整数数组和一个正整数K,返回数组中第K大的元素。 思路1:堆排序(优先队列) 维护一个小顶堆,堆的大小限制为K,堆里面装的元素就是当前数组中前K大的元素。 这个思路非常简单,用STL的priority_queue直接就解决了,不需要过多阐述。 注意:priority_queue默…...

Gitee:本土开发者生态的崛起与数字化转型新范式

Gitee:本土开发者生态的崛起与数字化转型新范式 在数字经济加速发展的当下,代码托管平台已成为企业数字化转型的基础设施。作为国内领先的一站式DevOps平台,Gitee正通过其独特的本土化优势和技术创新,重塑着中国开发者的协作方式与效率标准。 Gitee的崛起并非偶然,而是中国…...