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

别再猜了-开始测量吧-一份实用的Web性能指南

GitHub 主页

别再猜了,开始测量吧:一份实用的 Web 性能指南

又是一年“黑五”,凌晨三点,我的手机像疯了一样尖叫起来。😱 不是闹钟,是监控警报。我们的主打电商服务,那个我们花了半年心血构建的系统,在流量洪峰面前,像纸糊的一样,彻底崩溃了。CPU 100%,内存溢出,日志里充满了各种超时的错误。💸 那一晚,我们损失了数百万的销售额,更损失了用户的信任。那是我职业生涯中最黑暗的夜晚之一。🔥

从那天起,我明白了一个道理:性能不是一个可选项,它是服务的生命线。 作为一个在代码世界里混迹了快四十年的老家伙,我见过太多团队在性能问题上犯的错误。他们要么过于乐观,相信“硬件会解决一切”;要么过于悲观,认为性能优化是少数天才才能触及的黑魔法。🧙‍♂️

但事实是,性能是一门科学,也是一门工程学。它需要我们停止猜测,开始测量。今天,我想和大家聊聊 Web 性能的本质,以及为什么我说,选择一个正确的底层技术栈,就像是为你的摩天大楼选择了一个坚如磐石的地基。🏢

动态语言的“性能天花板”:它们真的够用吗?

我爱 Python,也欣赏 Node.js。它们非常适合快速原型开发,拥有庞大而活跃的社区。💖 在很多场景下,它们都表现得非常出色。但当我们谈论极限性能高并发时,它们天生的“基因缺陷”就暴露出来了。

Python 与它的“全局金锁” (GIL)

Python 的 GIL(全局解释器锁)是我心中永远的痛。它意味着,在同一个 Python 进程中,无论你有多少个 CPU 核心,同一时间只有一个线程能真正执行 Python 字节码。这就像一个超级厨房,虽然有几十个灶台,但规定同一时间只能有一位厨师戴上那顶唯一的厨师帽进行烹饪。👨‍🍳 其他厨师只能在旁边干等着。对于 I/O 密集型任务,这问题不大,因为线程在等待网络或磁盘时会释放 GIL。但对于 CPU 密集型任务,比如复杂的计算、图像处理或数据序列化,GIL 就成了一个巨大的瓶颈。你无法通过增加 CPU 核心来暴力提升性能。🐌

Node.js 与它的“单线程”魔咒

Node.js 采用了单线程异步 I/O 模型。这非常聪明,就像一个手速极快的收银员,可以同时处理很多顾客的结账请求,只要这些请求都是“扫码、付款”这种快速操作。⚡ 但如果某一个顾客突然拿出一大堆优惠券,还需要手动计算折扣,那这个收银员就会被卡住,他身后所有的顾客都得排队等着。这就是 Node.js 的软肋:一旦你的代码中出现了长时间运行的 CPU 密集型任务,整个事件循环就会被阻塞,服务器将无法响应任何其他请求。这在需要处理大量数据或者进行复杂实时计算的场景下,是致命的。⏳

这些语言在设计之初,更多地考虑了开发的便捷性而非极致的运行效率。它们的性能,就像是建立在沙滩上的城堡,看起来很美,但海浪(高流量)一来,就摇摇欲坠。

Rust 的优势:默认即是高性能 🚀

现在,让我们把目光转向 Rust。如果说 Python 和 Node.js 是轻便的快艇,那 Rust 就是一艘为远洋航行设计的重型巡洋舰。🚢 它在设计之初,就将性能和安全刻在了骨子里。

  • 零成本抽象:这是我最欣赏 Rust 的一点。它允许你写出非常高层次、表达力极强的代码,但这些抽象在编译后,几乎不会带来任何额外的性能开销。你既享受了高级语言的便利,又得到了接近 C/C++的运行效率。简直是鱼与熊掌兼得!
  • 无垃圾回收(GC):动态语言的 GC 就像一个定时炸弹。你永远不知道它什么时候会“引爆”,暂停你的整个应用去回收内存。这种不确定性对于需要稳定低延迟的服务(比如在线游戏、金融交易)来说是不可接受的。Rust 通过其革命性的所有权系统,在编译期就解决了内存管理问题,完全不需要 GC。这意味着你的服务响应时间会非常平滑和可预测。📈
  • 真正的并行:Rust 没有任何类似 GIL 的限制。它可以毫无保留地榨干你服务器上每一个 CPU 核心的性能。再结合Tokio这样的现代异步运行时,它可以通过一个高效的“工作窃取”调度器,将成千上万的并发任务智能地分配到一小撮系统线程上,实现极致的资源利用率。⚙️

选择 Rust,意味着你选择了一个极高的性能天花板。你从一开始,就站在了一个完全不同的起点上。

超越理论:用火焰图照亮性能瓶颈 📊

说了这么多理论,你可能会觉得有些空洞。别急,这正是我要讲的重点。一个优秀的框架,不仅要自身性能卓越,更要提供强大的工具,让开发者能够看见性能、分析性能。

Hyperlane 生态集成了一个大杀器:flamegraph(火焰图)。火焰图是一种性能分析的可视化工具,它能将 CPU 的耗时清晰地展现在一张图上。这张图上的每一个矩形都代表一个函数调用,矩形的宽度,就代表它在 CPU 上花费的时间。宽度越大的矩形,就越是可能需要优化的性能瓶颈。

在 Hyperlane 项目中生成火焰图非常简单。首先,你需要一个支持perf的环境(这在 Linux 上是标配),然后执行:

1. 安装 flamegraph 工具

cargo install flamegraph

2. 运行带调试信息的主程序并生成火焰图

CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph --release

执行完毕后,你就会得到一张类似下面这样的 SVG 图:

这张图简直就是一张性能的藏宝图!🗺️ 我们可以从中读出海量的信息:

  • Y 轴代表了函数调用栈的深度。顶部的函数调用了它下方的函数。
  • X 轴代表了 CPU 的耗时。一个函数块越宽,说明它(或它调用的子函数)占用的 CPU 时间越多。

想象一下,在文章开头我提到的那个崩溃的服务中,如果我们有了这张图。我们可能就会发现,有一个叫calculate_discount_for_user的函数,它的矩形异常地宽,占据了整个图表的 40%。💡 这就是一个明确的信号!我们就可以集中精力去分析和优化这一个函数,也许是算法不够高效,也许是存在不必要的循环。通过火焰图,我们把一个模糊的“性能很差”的问题,变成了一个可以量化、可以定位、可以解决的工程问题。

这种能力,是天壤之别。它让你从一个靠“猜”和“感觉”来优化性能的“祈祷者”,变成一个手持精密仪器、直击问题要害的“外科医生”。👨‍⚕️

专业,源于对工具的尊重

一个框架的成熟度,不仅体现在它的 API 设计和功能丰富度上,更体现在它是否尊重并集成了专业的工具链。Hyperlane 对flamegraph的集成,向我们展示了它对性能问题的严肃态度。

它告诉我们:性能不是一句空话,它是可以被测量、被分析、被优化的。它把这种强大的能力,用一种极其简单的方式交到了每一个普通开发者的手中。这背后,是一种现代的、专业的软件工程思想。

所以,朋友们,下次当你选择技术栈时,不要只看它写“Hello World”有多快。去看看它的工具链,看看它如何帮助你解决那些最棘手、最致命的问题,比如性能。因为当你面对流量的惊涛骇浪时,唯一能让你依靠的,不是虚无缥缈的“信念”,而是这些坚如磐石的工具和建立在其上的深刻洞察。💪

GitHub 主页

相关文章:

别再猜了-开始测量吧-一份实用的Web性能指南

GitHub 主页 别再猜了,开始测量吧:一份实用的 Web 性能指南 又是一年“黑五”,凌晨三点,我的手机像疯了一样尖叫起来。😱 不是闹钟,是监控警报。我们的主打电商服务,那个我们花了半年心血构建的系统,在流量洪峰面前,像纸糊的一样,彻底崩溃了。CPU 100%,内存溢出,日…...

你的中间件一团糟-是时候修复它了-️

GitHub 主页 中间件(Middleware)。这是 Web 开发中最强大的概念之一,也是最容易被滥用的概念之一。理论上,这是一个美妙的想法:一个由可复用组件构成的管道,可以检查、转换或终止请求。但在实践中,在我多年来使用过的许多框架中,它变成了一团乱麻,函数调用函数,控制流…...

文件不只是数据-一份稳健的文件处理指南

GitHub 主页 文件不只是数据:一份稳健的文件处理指南 📁💾 我永远忘不了那个下午。我们刚刚上线了一个允许用户上传个人头像的新功能。一切看起来都很完美。直到一个用户,出于无心或有意,尝试上传了一个他电脑上 2GB 大小的电影文件。🎬 服务器的内存监控瞬间飙红,CP…...

告别框架臃肿-我如何在不牺牲性能的情况下重新发现简单之美

GitHub 主页 我写了四十多年的代码。我刚开始编程的时候,打孔卡还是主流,互联网还只是大学实验室里一个遥不可及的梦想。我见证了无数语言和框架的兴衰起落,如同王朝更迭。我曾驾驭过技术的浪潮,也曾目睹它们在现实的海岸上撞得粉碎。如果说我从中学到了什么,那就是复杂性…...

超越-env-一份成熟的应用程序配置指南

GitHub 主页 超越.env:一份成熟的应用程序配置指南 🧐 让我给你讲个鬼故事。👻 几年前,我们团队的一个新来的小伙子,在一次紧急的线上热修复中,不小心把一个配置项搞错了。他本该把数据库地址指向生产环境的只读副本,结果,他忘了在生产服务器上更新那个小小的.env文件…...

20250913 NFLS 模拟赛 部分题目

简单倍增 #include <bits/stdc++.h> using namespace std; using ll = long long;int main() {freopen("fountain.in","r",stdin);freopen("fountain.out","w",stdout);ios::sync_with_stdio(false);cin.tie(nullptr);int n, q;…...

帐号内容定位

帐号定位原则和逻辑...

基于YOLOv8的茶叶病害识别项目|完整源码数据集+图形化界面+训练教程

本文介绍了一个基于 YOLOv8 的茶叶病害识别系统,从数据集构建、模型训练到 PyQt5 可视化界面实现,完整展示了茶叶病害检测的开发流程。该系统不仅能够识别 8类茶叶病虫害及健康状态,还具备 高精度、实时性强、操作简单 等特点,适用于科研、茶园管理以及智能农业应用场景。未…...

2025第三届“陇剑杯”网络安全大赛初赛-夺旗闯关赛wp

应急 应急响应siem百度网盘:通过网盘分享的文件:siem-加密.rar链接: https://pan.baidu.com/s/1wtfdSY2hThOAzVRGr9jwcg 提取码: e86t 解压密码:x2p1nsWFG4KfXp5BXegb题目描述:题目描述在比赛过程中变了一次,具体如下:初始:某企业内网被攻破了,请分析出问题并给出正确的…...

《Python数据结构与算法分析》第二弹《2.2.2 异序词检测示例》

2.2.2 异序词检测示例 要展示不同数量级的算法,一个好例子就是经典的异序词检测问题。如果一个字符串只是重排了另一个字符串的字符,那么这个字符串就是另一个的异序词,比如heart与earth,以及python与typhon。为了简化问题,假设要检查的两个字符串长度相同,并且都是由26个…...

深入解析:柱状图(Vue3)

深入解析:柱状图(Vue3)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size…...

计算机毕业设计springboot基于微信小程序的手机点餐软件 基于Spring Boot框架的微信小程序点餐体系设计与实现 微信小脚本点餐应用开发:Spring Boot技术的应用

计算机毕业设计springboot基于微信小程序的手机点餐软件 基于Spring Boot框架的微信小程序点餐体系设计与实现 微信小脚本点餐应用开发:Spring Boot技术的应用pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block…...

二叉树的相关知识

二叉树的相关知识 问题一:知道二叉树的后序遍历和中序遍历,如何得到前序遍历 我的想法:遍历后序序列,找到根结点在前序序列中找到你刚刚找到的根结点根据找到的根结点,把前序列表中的序列分为两部分,一部分为根结点的左子树,另一部分为根结点的右子树分别遍历左子树和右…...

原假设的选择准则:总损失视角的假设检验

img { display: block; margin-left: auto; margin-right: auto } table { margin-left: auto; margin-right: auto } 在假设检验中,原假设(𝐻0)与备择假设(𝐻1)的设定是统计推断的核心。原假设通常代表“无效应”或“现状维持”,提供可操作的基准,例如总体均值等于…...

dfs序基础+树上差分

dfs序基础1 给一棵有根树,这棵树由编号为 \(1\dots N\) 的 \(N\) 个结点组成。根结点的编号为 \(R\)。每个结点都有一个权值,结点 \(i\) 的权值为 \(v_i\)。 接下来有 \(M\) 组操作,操作分为两类:1 a x,表示将结点 \(a\) 的权值增加 \(x\); 2 a,表示求结点 \(a\) 的子树…...

Python中的if __name__ == __main__是什么?

引言 当初学习Python编程语言时,经常会遇到一段代码:if name == "main"。初学者可能会疑惑这段代码的作用和意义是什么,为什么要这样写。本文将对这段代码进行详细地解析,并提供代码示例,帮助初学者更好地理解这一概念。 if name == "main"的基本概念…...

钻石

目前抖音福袋扭蛋机的用户产出的DY钻石比较多,我们努力撮合商家和散户之间的交易,中间向商家收取一定的费用和少许保证金(为保证交易安全)。 收购价格为每100钻石7元,不封顶。比如100钻石/7元,1000钻石/70元,10000钻石/700元。打赏给我们指定的直播间即可。 需要出售和收…...

随机游走理解

随机游走理解赌徒破产定理:为什么赌博最终会归零 引言 在概率论中,"赌徒破产定理"(Gamblers Ruin)是一个经典的结果,它表明在一个公平的赌博游戏中,如果赌徒拥有有限的本金而庄家拥有无限的资金,赌徒最终破产的概率是1。即使游戏是公平的(胜负概率各50%,赔率…...

【基于协同过滤的校园二手交易强大的平台】

【基于协同过滤的校园二手交易强大的平台】pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !impo…...

Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节

对于神经网络来说,我们已经习惯了层状网络的思维:数据进来,经过第一层,然后第二层,第三层,最后输出结果。这个过程很像流水线,每一步都是离散的。 但是现实世界的变化是连续的,比如烧开水,谁的温度不是从30度直接跳到40度,而是平滑的上生。球从山坡滚下来速度也是渐渐…...

PKU_Compiler

from pixiv 资源NJU Compiler 课程 中科大 Compiler 课程 LLVM IR Github book教程 Koopa IR 框架 PKU 讲义本体 Github仓库Lv0 环境配置 Docker 获取编译实践的镜像: sudo docker pull maxxing/compiler-devdocker安装配置docker镜像vim /etc/docker/daemon.json{"regist…...

lc1026-节点与其祖先之间的最大差值

难度:中等(伪境)题目描述给定一棵二叉树,找到最大的“节点与其祖先节点的差值的绝对值”示例 输入:root = [8,3,10,1,6,null,14,null,null,4,7,13] 输出:7 解释:8/ \3 10/ \ \ 1 6 14/ \ /4 7 13|8 - 1| = 7输入:root = [1,null,2,null,0,3] 输出:3 解释…...

如何绕过谷歌反爬策略爬取搜索结果

背景 尝试开发一个爬虫,绕过谷歌反爬策略并获取谷歌搜索的结果。 技术栈docker管理开发环境,操作系统为centos7 puppeteer-extra-plugin-stealth插件 + chromium浏览器模拟真实用户 xvfb模拟图形界面环境 相关的实现代码很多,这里不再赘述,只讲解决问题的过程。问题 开发完…...

[SSL]

有免费的SSL证书可以使用,并且通常需要定时更新 ,比较知名的免费SSL证书颁发机构是Lets Encrypt Lets Encrypt特点免费且自动化:提供的SSL证书完全免费,并且支持自动化申请、安装和续期,大大降低了网站部署HTTPS的门槛。 安全性高:所颁发的证书符合行业标准,能提供强大的…...

求细胞数量

2025.9.13 曹立 题目内容 一矩形阵列由数字 \(0\) 到 \(9\) 组成,数字 \(1\) 到 \(9\) 代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数 输入描述 第一行两个整数代表矩阵大小 \(m\) 和 \(m\) 接下来 \(m\) 行,每行一个长度为…...

你的部署流程已然落伍-热重启的失传艺术

GitHub 主页 你的部署流程已然落伍:热重启的失传艺术 我依然清晰地记得那个周五的午夜。我,一个本该在家享受周末的四十多岁男人,却身处冰冷的机房,耳边是服务器风扇的嗡嗡声,眼前是终端上不断滚动的错误日志。一次本应“简单”的版本更新,变成了一场灾难。服务起不来,回…...

[豪の学习笔记] 软考中级备考 基础复习#9

系统设计基本原理、系统总体结构设计、数据流图跟学视频:学以致知Learning - 软件设计师 基础阶段|考点理论精讲 Chapter 9 - 结构化开发方法(数据流图) 1 - 系统设计基本原理 抽象 ​ 抽象是一种设计技术,重点说明一个实体的本质方面,而忽略或掩盖不是很重要或非本质的方…...

Shiro概述 - 详解

Shiro概述 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: 14px !…...

2025CCPC南昌邀请赛游记

Day 0 晚上八点的飞机,由于我们三个人中只有一个队友做过飞机,出于谨慎我们六点就去机场了。飞机起飞后我才意识到自己晕机。九点四十多到的南昌,下了飞机第一感觉还是非常晕。等到出了机场后才意识到原来南方这么热。找了一家民宿,打车到了之后就睡觉了。 Day 1 前一天晚上…...

双因素认证暴力破解绕过技术解析(2023更新版)

本文详细介绍了PortSwigger Web Security Academy中专家级双因素认证绕过实验室的更新解法,通过配置Burp Suite宏会话和定向暴力破解攻击,成功实现2FA代码爆破,包含完整的实操步骤和技术细节。PortSwigger:使用暴力攻击绕过双因素认证(2023年更新) 作者:Aaryan Golatkar…...

软件工程第二次作业-个人项目

个人项目项目 内容这个作业属于哪个课程 [软件工程](首页 - 计科23级12班 - 广东工业大学 - 班级博客 - 博客园)这个作业要求在哪里 [作业要求](个人项目 - 作业 - 计科23级12班 - 班级博客 - 博客园)这个作业的目标 训练个人项目软件开发能力,学会使用性能测试工具和实现单元…...

用 Go 打造一个服务器资源指标采集器:结合 Prometheus Exporter 实战

在生产环境中,运维和开发同学都离不开 系统资源监控:什么时候 CPU 快跑满了? 内存是不是泄漏了? 磁盘剩余空间还能撑多久?要做到这一点,最常见的方案是: 👉 采集系统资源指标 → 暴露给 Prometheus → 在 Grafana 里可视化。 今天我们就用 Go + go-commons/systemutil…...

2025年API安全建设方案最佳实践:七步五方法

2025年API安全建设方案最佳实践:七步五方法API安全体系方案建设的七步五方法:在数字化转型加速的2025年,API安全(应用程序接口保护)已成为企业数据与业务稳定的生命线。本文结合国内最佳实践,梳理API安全方案的七个关键步骤和5个核心方法,并通过金融、云原生等典型行业案…...

Git 分支

查看本地所有分支:git branch,会列出当前仓库的所有本地分支,当前所在的分支会用星号(*)标记。 查看远程所有分支:git branch -r,会列出所有本地分支和远程分支,远程分支通常以 remotes 开头。 查看本地和远程的所有分支:git branch -a,会只列出远程分支。 如果远程分…...

【数学】拉格朗日乘数法

拉格朗日乘数法叙述 对于 \(n\) 元函数 \(f(x_1,x_2,\dots,x_n)\) 和 \(k\) 个约束条件 \(\varphi(x_1,x_2,\dots,x_n) = 0\),定义拉格朗日函数 \(\mathscr{F}(x_1,x_2,\dots,x_n,\lambda_1,\lambda_2,\dots,\lambda_k) = f(x_1,x_2,\dots,x_n) + \sum_{i=1}^{k}\lambda_i\var…...

华为芯片之父,33年默默开拓,铸就“中国芯”,功成身退时却鲜有人知!

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087 他被称为华为芯片之父,却在退休之际鲜有人知。2023年,华为公司宣布徐文伟正式退休。这位在华为默默耕耘了33年的创始人之一…...

Redis为什么适合做分布式锁? - 浪矢

Redis为什么适合做分布式锁? 性能高 Redis是内存数据库,所有的操作均在内存中完成,所以读写速度非常快。在需要频繁加锁和解锁的高并发场景下,Redis性能优势明显。 实现简单 Redis 提供了像 SETNX、EXPIRE 这样的原子性命令,这些命令可以很方便地组合起来实现分布式锁。 e…...

百度昆仑芯高调出圈:对标寒武纪,估值或达千亿港元?

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087 一向低调的昆仑芯,估值正被重新讨论。中银国际在最新研报中提出,寒武纪(688256.SH)A股市值达800亿美元,其他部分国内GPU…...

WPS 定制版

推荐政府定制版,要更新一点 WPS教育专版:一级、二级WPS考试专用版本:https://ncre.neea.edu.cn/html1‍ 高校定制版本:洛阳理工学院定制版:https://www.lit.edu.cn/xxhjszx/info/1269/5945.htm山东药品食品职业学院:http://tsxx.wzq.sddfvc.edu.cn/info/1008/1256.htm (…...

2024年以来,数学领域已有多位在国外顶尖高校取得终身教职的学者回国

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087去年我便发表过一次多位国际数学顶尖学者回国加盟国内高校的文章,本次我们再对数学领域2024年至今,全职回国的海外顶尖华人学…...

685.冗余连接

685.冗余连接 4:03 // 定义并查集类 class UnionFind{// 构造函数初始化并查集constructor(n){this.parent = new Array(n).fill(0).map((item,index)=>index)this.rank = new Array(n).fill(1)this.count = n}// 查找元素的根节点find(x){if(this.parent[x] !== x){this.pa…...

form表单和表单控件

一、form表单二、表单控件表单控件元素不要设置高度,或者以em作为高度的单位。文字和边框的距离可以使用padding来实现。2.1、input控件使用 input type=number 表单 有缺陷:这个表单只能输入数字,但是 字母 e、字符+、- 确是可以输入。而 表单中有e、+、-符号输入,js获…...

阿里云OSS图片生成缩略图和获取视频的封面方法

?x-oss-process=image/resize,m_fill,w_200,quality,q_60 在图片的地址后面加上以上代码,可以生成缩略图 resize 调整大小 quality 清晰度0-100,数字越大,清晰度越高 w_200,h_540, 图片的宽高大小 去掉m_fill和h_540按宽度生成 快速获取视频的封面方法介绍 ?x-oss-proces…...

VSCode 运行 Python

Ubuntu 22.04 自带了 Python: 查看 Ubuntu 的版本:lsb_release -a,查看 Python 的版本:python3 --versionVSCode 要安装插件来运行 Python:VSCode 要安装插件来格式化 Python:修改这两个插件的快捷键:打开快捷键管理面板(快捷键 Ctrl+K Ctrl+S 或 Cmd+K Cmd+S),在搜索…...

[mysql] 卸载

# 彻底卸载 MySQL 及其残留配置 sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-* sudo rm -rf /var/lib/mysql /etc/mysql # 修复 dpkg 状态 sudo dpkg --configure -a...

树上问题

运输计划 比较简单的题,9.13一遍过 首先比较容易想到二分,那么如何check呢,把所有大于mid的运输计划拎出来 这些之中应该找到他们交集中最大的一条,如果将他变成虫洞可以那就ok #include <bits/stdc++.h> #define rep(i, a, b) for(int i = (a); i <= (b); i ++ )…...

突发!美国将复旦微等23家中国实体列入“实体清单”

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087 添加图片注释,不超过 140 字(可选)当地时间9月12日,美国商务部工业与安全局(BIS)发布公告,以存在“违背美国国家安全或…...

[GenAI] Function Calling

前面是通过 提示词 的形式,将工具箱带过去。 🙋这种方式有什么问题?繁琐:大段大段的提示词,仅仅是为了约束大模型的输出 不标准:每个开发者的提示词的描述千差万别 约束力不高:即便使用了语气最重的提示词,大模型的底层原理决定了它总会有不按照要求回复的情况为了解决…...

form表单

一、form表单二、表单控件表单控件元素不要设置高度,或者以em作为高度的单位。文字和边框的距离可以使用padding来实现。2.1、input控件使用 input type=number 表单 有缺陷:这个表单只能输入数字,但是 字母 e、字符+、- 确是可以输入。而 表单中有e、+、-符号输入,js获…...

【Zotero7】使用Attanger和百度同步空间如何进行同步?

自用,防忘。 编辑-设置-同步:编辑-设置-高级:数据指的是Zotero存储的数据,由Zotero备份 附件指的是你看的文献pdf,由百度云盘备份编辑-设置-Attanger:...