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

Elasticsearch:如何使用 Elastic 检测恶意浏览器扩展

作者:来着 Elastic Aaron Jewitt

当你的 CISO 询问你的任何工作站上是否安装过特定的浏览器扩展时,你多快能得到正确答案?恶意浏览器扩展是一个重大威胁,许多组织无法管理或检测。这篇博文探讨了 Elastic Infosec 团队如何使用 osquery 和 Elastic Stack 创建所有浏览器扩展和检测规则的实时清单,以及如何在工作站有已知的受损浏览器扩展时通知团队。该解决方案完全使用 osquery、Elastic Defend 集成和 Elastic Stack 中的 SIEM 功能构建。

针对浏览器扩展的威胁行为者

威胁行为者越来越关注针对浏览器扩展程序来窃取信息或危害用户,甚至一些威胁行为者直接针对合法扩展程序的开发人员,目的是添加恶意代码。

有了足够的权限,浏览器扩展程序就可以查看或更改你使用浏览器访问的任何网站上的任何信息,并收集传递给网站的敏感信息,例如用户名、密码或银行帐户信息。扩展程序可以访问并窃取任何网站存储的身份验证令牌。他们甚至可以改变网站内容,通过社会工程手段诱使用户下载恶意软件到他们的工作站,比如改变链接的目的地。

业务挑战

管理企业中的浏览器扩展带来了一些复杂的挑战。

  • 扩展程序是根据浏览器内的配置文件进行安装的。
  • 工作站上的每个用户帐户可以在每个浏览器中拥有多个不同的配置文件,例如个人配置文件和工作配置文件。
  • 通常,工作站会具有五个或更多不同的用户配置文件 — — 每个配置文件都有自己安装的一组扩展。

有一些选项,例如托管浏览器可以通过创建扩展的允许或阻止列表来控制公司配置文件的安装扩展,但这些解决方案不会管理这些工作站上的非公司配置文件。如果用户从个人资料登录工作系统,公司工作站上的个人浏览器扩展仍然会给你的公司带来风险。另一个风险情况是个人扩展程序可能会动态更改点击链接的目的地,导致用户将恶意文件下载到其工作系统中。

在 Kibana 中部署和管理 osquery

osquery 是一个开源代理,适用于几乎所有现代操作系统(OS)。它将每个操作系统视为一个关系数据库,其中包含表,你可以查询这些表来收集有关系统当前状态的信息。你可以查询模式中的 200 多个表以获取信息,例如正在运行的进程;已安装的浏览器扩展; Python 库;装载了docker容器;加载内核模块;打开网络连接;连接的 USB 设备;等等。

在 Elastic,我们使用自己的 XDR 功能保护所有工作站,其中包括将 Elastic Agent 部署到所有工作站以进行分布式保护和响应。 Elastic Security 的一大优势是能够使用 Kibana 中的 Osquery Manager 集成轻松地将 osquery 部署到你的端点并进行管理。 osquery 集成包含在基本许可证中 —— 在你的代理群中部署它无需额外的许可费用。

更多有关 osquery 的阅读,请参阅文章:

  • Security:osquery 介绍

  • Elasticsearch:使用 osquery 和 Elastic Stack 来监控你的端点

使用 osquery 和 Elastic 的优势

Elastic Defend 和其他端点检测和响应 (EDR) 代理可以从工作站传输实时进程、网络和文件日志。但是这些审计日志无法告诉你有关操作系统状态的所有信息,例如已安装的浏览器扩展。这就是 osquery 的用武之地。它让我们捕获工作站当前状态的快照,以便我们知道用户拥有哪些 Chrome 扩展程序。

只需在 Kibana 中单击几下,你就可以将 osquery 部署到所有工作站,并直接在 Elastic Stack 中管理和查看查询 - 使用 Kibana 管理 osquery 时不需要额外的基础设施。将 osquery 与 Elastic 结合使用的另一个优点是,所有查询的结果都会立即被纳入 Elasticsearch 索引中,并可用于各种用例。将结果导入到你的 Elastic Stack 中还可以为你提供查询的历史时间线,你可以使用该时间线查看系统在一段时间内硬件和软件发生的更改。

有关在 Elastic 中使用 osquery 的更多信息,请查看 osquery 文档指南。

在 Elastic 中使用 osquery

在 osquery 中,有两种方式运行查询 - 立即作为实时查询或作为 osquery 所称的查询包的定期调度的查询组的一部分。

实时查询 - Live query

实时查询将针对一个或多个主机运行单个查询。实时查询是在测试期间构建和优化查询或在调查期间寻找特定指标的好方法。在 Elastic 中选择运行实时查询的主机时,你可以单独选择主机、按队列策略选择所有主机或按操作系统选择。如果在运行实时查询时代理处于离线状态,则如果代理在接下来的 60 分钟内上线,它将保持排队状态;否则将被清除。 Elastic 版本的 osquery 的一个功能是保存的查询。此功能可以轻松地预先配置常用的复杂查询,然后其他团队成员可以使用这些查询。

查询包 - Query pack

查询包是计划以不同间隔运行的预配置查询的集合。包中的每个查询都可以指定它将在哪个操作系统平台上运行,因此单个包可以在具有多个操作系统的策略上安全地使用。查询包可以作为 .json 文件导出和导入,以便你在 Kibana 中快速添加包。 osqery 提供了一些示例包供你使用,或者你可以尝试我们用来清点浏览器扩展的 browser_monitoring 包。

使用 osquery 创建所有扩展的清单

Elastic Infosec 团队已将 browser_monitoring 包配置为我们所有工作站上每六小时运行一次,以创建所有浏览器扩展的清单。我们每六个小时运行一次查询,因为 Elastic 是一家全球分布的公司,我们无法预测用户的工作时间。

browser_monitoring 查询包

由于多个用户配置文件带来的复杂性,收集浏览器扩展信息的查询需要 JOIN 运算符将 users 表连接到扩展表。 JOIN 运算符将使用两个表中都存在的公共字段将两个表组合在一起。在这种情况下,它是用户 ID uid 字段。

SELECT * FROM users JOIN chrome_extensions USING (uid)

还可以直接在 osquery UI 中查看包查询的结果,并通过链接在 Kibana Discover 或 Lens 中打开每个查询的结果。

browser_monitoring 结果视图

所有查询的结果都直接存储到 logs-osquery_manager.result* 索引模式中。可以使用 action.id 字段找到计划包查询的结果。对于打包结果,该字段遵循 pack_{pack_name}_{query_name} 的命名约定。我们正在使用一个名为 browser-monitoring 的包和一个名为 chrome_extensions 的查询。要查看此查询的结果,你可以查询action_id:“pack_browser-monitoring_chrome_extensions”。

在 Discover 中查看 osquery 的结果时,你将看到 osquery 模式表中的每个字段都使用 osquery.* 字段名进行索引。在查看有关 Chrome 扩展程序的信息时,我们最常用的字段是 osquery.identifier、osquery.name、osquery.permissions、osquery.profile 和 osquery.version。

示例查询结果

以下是 chrome_extension 查询响应中可用字段的完整列表:

  • osquery.identifier 是每个扩展的唯一标识符。通过此标识符,你可以在 Google Chrome 网上应用店中找到该扩展程序,或者使用 Secure Annex 或 crxaminer.tech 等服务查找该扩展程序的信誉分数。
  • osquery.name 是 Chrome 网上应用店和浏览器中显示的扩展程序的名称。
  • osquery.profile 是安装该扩展程序的 Google Chrome 配置文件。用户在单用户帐户中拥有多个不同的 Chrome 配置文件是很常见的。
  • osquery.permissions 是授予扩展的权限。该字段可用于过滤被授予危险权限的扩展,例如查看或修改每个网站的请求的权限。密切关注任何具有权限的扩展,例如 https://*/* ,它授予扩展对你访问的每个 https 网站的访问权限。
  • osquery.version 是扩展的安装版本。在某些情况下,扩展程序可能有一个你想要删除的受损版本。
  • osquery.update_url 是扩展用来检查任何更新的 url。如果此值不是标准更新路径 https://clients2.google.com/service/update2/crx,则表示扩展已被 “sideloaded - 侧载” 或以标准网络商店以外的某种方式安装,应进行调查。

另一个非常重要的 osquery 表是 chrome_extension_content_scripts。该表包含有关扩展所使用的每个 javascript 文件的信息。如果发现主机上存在受到感染的扩展,则可以使用该表中的 osquery.path、osquery.match 和 osquery.script 字段来查找扩展运行的每个脚本的完整路径。利用这些信息,你可以使用 Elastic Defend 的响应操作功能下载这些文件进行离线分析。

创建不良扩展的检测规则

现在你已拥有所有浏览器扩展的实时清单,你可以构建检测。最直接的检测方法是针对已知的坏扩展进行检测。已知的不良扩展列表可能来自包含已知标识符和版本的威胁情报(threat intelligence)报告。在这个例子中,我们将使用最近报道的 Cyber​​haven 扩展入侵活动的威胁情报。报告底部是指向 IOC 集合的链接,其中包含已知恶意扩展的名称、ID 和版本。

NameIDVersion
VPNCitynnpnnpemnckcfdebeekibpiijlicmpom2.0.1
Parrot Talkskkodiihpgodmdankclfibbiphjkfdenh1.16.2
Uvoiceoaikpkmjciadfpddlpjjdapglcihgdle1.0.12
Internxt VPNdpggmcodlahmljkhlmpgpdcffdaoccni1.1.1
Bookmark Favicon Changeracmfnomgphggonodopogfbmkneepfgnh4.00
Castorusmnhffkhmpnefgklngfmlndmkimimbphc4.40
Wayin AIcedgndijpacnfbdggppddacngjfdkaca0.0.11
Search Copilot AI Assistant for Chromebbdnohkpnbkdkmnkddobeafboooinpla1.0.1
VidHelper - Video Downloaderegmennebgadmncfjafcemlecimkepcle2.2.7
AI Assistant - ChatGPT and Gemini for Chromebibjgkidgpfbblifamdlkdlhgihmfohh0.1.3
TinaMind - The GPT-4o-powered AI Assistant!befflofjcniongenjmbkgkoljhgliihe2.13.0
Bard AI chatpkgciiiancapdlpcbppfkmeaieppikkk1.3.7
Reader Modellimhhconnjiflfimocjggfjdlmlhblm1.5.7
Primus (prev. PADO)oeiomhmbaapihbilkfkhmlajkeegnjhe3.18.0
Tackker - online keylogger toolekpkdmohpdnebfedjjfklhpefgpgaaji1.3
AI Shop Buddyepikoohpebngmakjinphfiagogjcnddm2.7.3
Sort by Oldestmiglaibdlgminlepgeifekifakochlka1.4.5
Rewards Search Automatoreanofdhdfbcalhflpbdipkjjkoimeeod1.4.9
Earny - Up to 20% Cash Backogbhbgkiojdollpjbhbamafmedkeockb1.8.1
ChatGPT Assistant - Smart Searchbgejafhieobnfpjlpcjjggoboebonfcg1.1.1
Keyboard History Recorderigbodamhgjohafcenbcljfegbipdfjpk2.3
Email Huntermbindhfolmpijhodmgkloeeppmkhpmhc1.44
Visual Effects for Google Meethodiladlefdpcbemnbbcpclbmknkiaem3.1.3
Cyberhaven security extension V3pajkjnmeojmbapicmbpliphjmcekeaac24.10.4
GraphQL Network Inspectorndlbedplllcgconngcnfmkadhokfaaln2.22.6
GPT 4 Summary with OpenAIepdjhgbipjpbbhoccdeipghoihibnfja1.4
Vidnoz Flex - Video recorder & Video sharecplhlgabfijoiabgkigdafklbhhdkahj1.0.161
YesCaptcha assistantjiofmdifioeejeilfkpegipdjiopiekl1.1.61
Proxy SwitchyOmega (V3)hihblcmlaaademjlakdpicchbjnnnkbo3.0.2
ChatGPT Applbneaaedflankmgmfbmaplggbmjjmbae1.3.8
Web Mirroreaijffijbobmnonfhilihbejadplhddo2.4
Hi AIhmiaoahjllhfgebflooeeefeiafpkfde1.0.0

使用此 IOC 列表,有两种不同的方法来构建检测。最简单的方法是使用这些 ID 和版本值来构建单个大型 Elasticsearch 查询,该查询查看 osquery 数据中任何这些扩展标识符和版本,并使用 OR 运算符链接在一起。例如:

action_id: pack_browser-monitoring_chrome_extensions AND ((osquery.identifier: "nnpnnpemnckcfdebeekibpiijlicmpom" AND osquery.version:	"2.0.1") 
OR(osquery.identifier: "kkodiihpgodmdankclfibbiphjkfdenh" AND osquery.version:	"1.16.2")  
OR(osquery.identifier: "oaikpkmjciadfpddlpjjdapglcihgdle" AND osquery.version:	"1.0.12")
)

如果你使用我们的其中一种威胁情报集成(threat intelligence integrations)将威胁情报源提取到你的 Elastic Stack,则可以使用指标匹配规则类型(indicator match rule type)创建此规则的更动态版本。指标匹配规则比较两个不同索引模式中的字段,当这些字段匹配时会触发警报。如果你的威胁源支持 Google Chrome 扩展程序 ID 和版本,则可以创建一个指示器匹配规则,当已安装的 Chrome 扩展程序 ID 和版本与已知的恶意扩展程序匹配时,该规则会向你发出警报。

以下是指标匹配规则的示例配置。指标索引字段名称将根据所使用的威胁情报平台而改变。

指标匹配规则配置示例

这种方法的优点是,每次发布或更新新的已知不良扩展列表时,不需要手动更新检测规则。一旦新的指标添加到你的威胁情报索引中,你将立即收到警报。

尝试一下

威胁行为者将继续使用 Chrome 扩展程序来窃取有价值的信息和目标系统。如果你无法查看工作站上安装的扩展程序,则无法保护用户免受此攻击媒介的侵害。使用 osquery 和 Elastic,你可以管理和降低企业的整体风险,并通过浏览器扩展的可见性和警报,而无需额外的许可费用。

你可以免费试用 Elastic Cloud 14 天,亲自尝试一下。

要查看浏览器扩展程序如何在实际攻击中使用的例子,请查看《超越恐惧:解构 Elastic Security Labs 的 BANSHEE 信息窃取程序》。

本文中描述的任何特性或功能的发布和时间均由 Elastic 自行决定。任何当前不可用的特性或功能可能无法按时交付或根本无法交付。

原文:How to detect malicious browser extensions using Elastic | Elastic Blog

相关文章:

Elasticsearch:如何使用 Elastic 检测恶意浏览器扩展

作者:来着 Elastic Aaron Jewitt 当你的 CISO 询问你的任何工作站上是否安装过特定的浏览器扩展时,你多快能得到正确答案?恶意浏览器扩展是一个重大威胁,许多组织无法管理或检测。这篇博文探讨了 Elastic Infosec 团队如何使用 os…...

基于Java的远程视频会议系统(源码+系统+论文)

第一章 概述 1.1 本课题的研究背景 随着人们对视频和音频信息的需求愈来愈强烈,追求远距离的视音频的同步交互成为新的时尚。近些年来,依托计算机技术、通信技术和网络条件的发展,集音频、视频、图像、文字、数据为一体的多媒体信息&#xff…...

SAP-ABAP:FOR ALL ENTRIES IN用法详解带实例代码

在 SAP ABAP 中&#xff0c;FOR ALL ENTRIES IN 是 SELECT 语句中一个非常常用的功能&#xff0c;用于根据内表中的数据查询数据库表。它的主要作用是将内表中的数据作为查询条件&#xff0c;从数据库表中筛选出符合条件的数据。 1. 基本语法 SELECT <fields>FROM <d…...

构建jdk17包含maven的基础镜像

1、先拉取jdk17基础镜像 docker pull openjdk:17-jdk-alpine 2、使用jdk17基础镜像创建容器 docker run -it openjdk:17-jdk-alpine sh 或 docker run -it --name jdk17 openjdk:17-jdk-alpine sh 3、修改镜像源地址 cat /etc/apk/repositories https://mirrors.aliyun.com…...

【Android】版本和API对应关系表

目录 版本和API对应关系表 不积跬步&#xff0c;无以至千里&#xff1b;不积小流&#xff0c;无以成江海。要沉下心来&#xff0c;诗和远方的路费真的很贵&#xff01; 版本和API对应关系表 版本名版本号名称APIAndroid 1616.0W36Android 1515.0V35Android 1414.0U34Android 1…...

Spring Boot 整合 JPA 实现数据持久化

目录 前言 一、JPA 核心概念与实体映射 1. 什么是 JPA&#xff1f; 2. JPA 的主要组件 3. 实体映射 4. 常见的字段映射策略 二、Repository 接口与自定义查询 1. 什么是 Repository 接口&#xff1f; 2. 动态查询方法 3. 自定义查询 4. 分页与排序 三、实战案例&…...

KUKA 机器人仿真——Simpro4.1和OfficeLite8.6.2 连接实现虚拟示教器

一、准备软件 1、Simpro4.1&#xff0c;是一机一密钥&#xff0c;不好破解&#xff0c;我在某宝买的&#xff0c;省事了。 2、OfficeLite8.6.2&#xff0c;看我的博文的第三步虚拟机内安装OfficeLite8.6.2 KUKA示教器仿真软件OfficeLite8.6.2&#xff0c;EthernetKRL3.1.3通信…...

IntelliJ IDEA使用经验(十三):使用Git克隆github的开源项目

文章目录 问题背景办法1、设置git代理&#xff1b;2、再次克隆项目&#xff1b;3、再次按常规方式进行git克隆即可。 问题背景 由于github在国外&#xff0c;很多时候我们在使用idea克隆开源项目的时候&#xff0c;没办法检出&#xff0c;提示 连接重置。 办法 1、设置git代…...

互联网大厂中面试的高频计算机网络问题及详解

前言 哈喽各位小伙伴们,本期小梁给大家带来了互联网大厂中计算机网络部分的高频面试题,本文会以通俗易懂的语言以及图解形式描述,希望能给大家的面试带来一点帮助,祝大家offer拿到手软!!! 话不多说,我们立刻进入本期正题! 一、计算机网络基础部分 1 先来说说计算机网…...

综合实验练习实验报告

一、需求分析 1.防火墙上配置DHCP服务&#xff0c;完成接口配置 2.用户建立以及认证策略建立 3.安全策略建立 二、详细配置 DHCP配置 [FW1]dhcp enable [FW1]int g1/0/1.1 [FW1-GigabitEthernet1/0/1.1]dhcp select interface [FW1]int g1/0/1.2 [FW1-GigabitEthernet…...

Ubuntu22.04 配置deepseek知识库

文章目录 安装 docker配置 dify配置 ollama创建大模型 安装 docker 更新系统&#xff1a;sudo apt update sudo apt upgrade -y安装必要的依赖&#xff1a;sudo apt install apt-transport-https ca-certificates curl software-properties-common -y添加 Docker 的官方 GPG 密…...

如何在WPS和Word/Excel中直接使用DeepSeek功能

以下是将DeepSeek功能集成到WPS中的详细步骤&#xff0c;无需本地部署模型&#xff0c;直接通过官网连接使用&#xff1a;1. 下载并安装OfficeAI插件 &#xff08;1&#xff09;访问OfficeAI插件下载地址&#xff1a;OfficeAI助手 - 免费办公智能AI助手, AI写作&#xff0c;下载…...

Mp4视频播放机无法播放视频-批量修改视频分辨率(帧宽、帧高)

背景 家人有一台夏新多功能 视频播放器(夏新多功能 视频播放器),用来播放广场舞。下载了一些广场舞视频, 只有部分视频可以播放,其他视频均无法播放,判断应该不是帧速率和数据速率的限制, 分析可能是播放器不支持帧高度大于720的视频。由于视频文件较多,需要借助视频编…...

jvm 线程监控调试

文章目录 前言一、使用JDK工具转储线程文件(如jstack)1. 找到Java进程的PID:2. 使用jstack生成线程转储文件:3.验证生成的线程转储文件:二、分析文件1.使用在线工具进行分析上传thread-dump文件,等待解析完成2.查看分析结果总结前言 提示:使用jdk自带工具转储线程监控文…...

超越 DeepSeek V3 -->【Qwen2.5-Max】

&#x1f525; 先说明&#xff0c;不是广子&#xff0c;不是广子&#xff01;&#xff01;&#xff01;单纯分享这个工具给大家&#xff0c;毕竟最近使用 DeepSeek 太容易崩了&#xff0c;每天深度思考一次之后就开始转圈圈用不了&#xff0c;然后就找到了这个工具使用 一、前言…...

301.华为交换机堆叠技术基础

华为交换机堆叠技术基础 一、概念及原理部分1.堆叠简介1.1 什么是堆叠1.2 可靠性网络架构1.3 华为堆叠设备1.4 其他厂商的堆叠2.堆叠的示意图3.堆叠的应用3.1 中小企业3.2 园区网4.堆叠的原理4.1基本的概念4.2 堆叠建立4.3 角色选举4.4 版本同步4.5 配置同步4.6 堆叠系统的登录…...

【开源AI】AI一页一页读PDF

【开源AI】AI一页一页读PDF 可以在这里看 : 让AI 处理 PDF 文件,提取其中的知识点,并生成总结。 只是无法修改,后续若有更新在csdn这里。 【OpenAI】 API 更新: JSON 结构化输出约束机制( JSON Schema) 的一次实战。知识库的JSON Schema形式 每一页都要总结,总结的知识…...

Spring AI 介绍

文章来源&#xff1a;AI 概念 (AI Concepts) _ Spring AI1.0.0-SNAPSHOT中文文档(官方文档中文翻译)|Spring 教程 —— CADN开发者文档中心 本节介绍 Spring AI 使用的核心概念。我们建议仔细阅读它&#xff0c;以了解 Spring AI 是如何实现的。 模型 AI 模型是旨在处理和生成…...

React - 事件绑定this

在 React 中&#xff0c;this 的绑定是一个常见问题&#xff0c;尤其在类组件中使用事件处理函数时。JavaScript 中的 bind 函数用于设置函数调用时 this 的值。 bind 函数的作用 bind() 方法创建一个新的函数&#xff0c;当被调用时&#xff0c;其 this 关键字被设置为提供的…...

【3.Git与Github的历史和区别】

目录 Git的历史和Github的区别本质和功能 Git的历史和Github的区别 Git是由Linux内核的创造者Linus Torvalds于2005年创建的。当时&#xff0c;Linux内核开源项目使用BitKeeper作为版本控制系统&#xff0c;但2005年BitKeeper的商业公司终止了与Linux社区的合作&#xff0c;收…...

【设计模式】【行为型模式】职责链模式(Chain of Responsibility)

&#x1f44b;hi&#xff0c;我不是一名外包公司的员工&#xff0c;也不会偷吃茶水间的零食&#xff0c;我的梦想是能写高端CRUD &#x1f525; 2025本人正在沉淀中… 博客更新速度 &#x1f4eb; 欢迎V&#xff1a; flzjcsg2&#xff0c;我们共同讨论Java深渊的奥秘 &#x1f…...

【算法学习】二分查找开区间写法总结

根据灵神教学中的二分查找开区间写法进行如下总结&#xff1a; 我们需要注意的是&#xff0c;lowerBound 模板求解的是 > target 的最小下标 private int lowerBound(int[] nums, int target) {int left -1;int right nums.length; // 开区间 (left, right)while (left …...

信息科技伦理与道德3-2:智能决策

2.2 智能推荐 推荐算法介绍 推荐系统&#xff1a;猜你喜欢 https://blog.csdn.net/search_129_hr/article/details/120468187 推荐系统–矩阵分解 https://blog.csdn.net/search_129_hr/article/details/121598087 案例一&#xff1a;YouTube推荐算法向儿童推荐不适宜视频 …...

【干活分享】2025年可以免费问答的一些GPT网站-deepseek等免费gpt

2025年已经到来&#xff0c;大家也都陆续回归到忙碌的工作中。在新的一年里&#xff0c;如何更高效地完成工作任务&#xff0c;提升工作效率&#xff0c;是很多人关心的问题。今天&#xff0c;就为大家分享一些实用性很强的GPT网站&#xff0c;帮助大家在工作中事半功倍。 Dee…...

webpack配置之---入口

entry 单入口 由于一般的单页面项目只有一个入口&#xff0c;也就是单入口&#xff0c;单入口的配置方式有以下三种方式&#xff0c;如果有遗漏的欢迎补充 1、字符串方式 以下这几行代码解释&#xff1a; entry&#xff1a;本项目的入口文件 output&#xff1a;本项目打包…...

Golang GORM系列:GORM CRUM操作实战

在数据库管理中&#xff0c;CRUD操作是应用程序的主干&#xff0c;支持数据的创建、检索、更新和删除。强大的Go对象关系映射库GORM通过抽象SQL语句的复杂性&#xff0c;使这些操作变得轻而易举。本文是掌握使用GORM进行CRUD操作的全面指南&#xff0c;提供了在Go应用程序中有效…...

[M模拟] lc380. O(1) 时间插入、删除和获取随机元素(模拟+数据结构+脑筋急转弯+数组快捷删除技巧+项目思考)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接&#xff1a;380. O(1) 时间插入、删除和获取随机元素 题单&#xff1a; 待补充 2. 题目解析 其实这个题目抽象一下的话在项目中也能出现&#xff0c;可能日常项目中没有算法基础的话&#xff0c;就很容易直接去进行新内…...

30~32.ppt

目录 30.导游小姚-介绍首都北京❗ 题目​ 解析 31.小张-旅游产品推广文章 题目 解析 32.小李-水的知识❗ 题目​ 解析 30.导游小姚-介绍首都北京❗ 题目 解析 新建幻灯片-从大纲-重置-检查设计→主题对话框→浏览主题&#xff1a;考生文件夹&#xff08;注意&#x…...

一键查看电脑各硬件详细信息 轻松查看电脑硬件参数

今天为大家推荐两款非常实用的电脑硬件查看软件&#xff0c;它们能够一键快速查看电脑的各种配置信息&#xff0c;使用起来非常方便。 一键查看电脑各硬件详细信息 这款软件是绿色版的&#xff0c;无需安装&#xff0c;打开即可使用&#xff0c;文件大小仅为900多KB&#xff0…...

java如何创建自定义异常?

在Java中&#xff0c;创建自定义异常通常需要继承Exception类或其子类。以下是创建自定义异常的基本步骤&#xff1a; 定义异常类&#xff1a;创建一个新的类&#xff0c;继承自Exception或RuntimeException&#xff08;根据需要选择&#xff09;。 构造方法&#xff1a;提供一…...

2025/2/10 心得

第一题。J. C - Grand Garden (AI) 问题陈述 在一个花坛里&#xff0c;有 NN 朵花&#xff0c;编号为 1,2,\ldots,N1,2,…,N。最初&#xff0c;所有花的高度都是 00。你将得到一个高度序列 h{h\_1,h\_2,h\_3,\ldots\} 作为输入。你希望通过重复以下“浇水”操作来将所有花的编…...

Visual Studio 2022 中使用 Google Test

要在 Visual Studio 2022 中使用 Google Test (gtest)&#xff0c;可以按照以下步骤进行&#xff1a; 安装 Google Test&#xff1a;确保你已经安装了 Google Test。如果没有安装&#xff0c;可以通过 Visual Studio Installer 安装。在安装程序中&#xff0c;找到并选择 Googl…...

软开关和硬开关

硬开关&#xff1a; 电路结构相对简单&#xff0c;一般只包含基本的开关管、电源、负载等元件&#xff0c;没有专门的谐振电路来辅助开关过程。 开关管在导通或关断时&#xff0c;电压或电流的变化率非常快&#xff0c;形成急剧的开关过程。开通时&#xff0c;开关器件的电流…...

C++17中的std::clamp:限制值的范围

文章目录 一、背景与动机二、std::clamp的定义三、使用示例示例1&#xff1a;基本用法示例2&#xff1a;浮点数和自定义类型 四、实际应用场景1. 游戏开发2. 图形处理3. 数值计算 五、注意事项六、总结 在C17中&#xff0c; std::clamp是一个极为实用的算法&#xff0c;它能够…...

Python的

& 运算符可用于不同集合类型&#xff0c;它主要用于集合的交集操作 下面分别介绍它在 set&#xff08;集合&#xff09;和 frozenset&#xff08;不可变集合&#xff09;这两种常见集合类型中的使用 set 类型 set 是 Python 中内置的可变集合类型&#xff0c;使用 & …...

计算机毕业设计Spark+大模型知网文献论文推荐系统 知识图谱 知网爬虫 知网数据分析 知网大数据 知网可视化 预测系统 大数据毕业设计 机器学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

13.8 聚焦应用场景的Prompt设计实战:从通用到领域专用的翻译质量跃升

聚焦应用场景的Prompt设计实战:从通用到领域专用的翻译质量跃升 关键词:领域特定Prompt设计、翻译质量优化、动态术语控制、多阶段推理链、Prompt版本管理 1. 翻译Prompt设计核心原则 1.1 领域知识深度渗透 def build_medical_prompt(): return ChatPromptTemplate.from_…...

基础入门-HTTP数据包红蓝队研判自定义构造请求方法请求头修改状态码判断

知识点&#xff1a; 1、请求头&返回包-方法&头修改&状态码等 2、数据包分析-红队攻击工具&蓝队流量研判 3、数据包构造-Reqable自定义添加修改请求 一、演示案例-请求头&返回包-方法&头修改&状态码等 数据包 客户端请求Request 请求方法 …...

Golang Web单体项目目录结构最佳实践

在Golang 开发Web 项目的过程中&#xff0c;如何组织目录结构是一项至关重要的任务。合理的目录结构不仅能提高代码的可维护性&#xff0c;还能为团队协作提供清晰的代码规范。 为什么要设计合理的目录结构&#xff1f; 在 Golang 项目中&#xff0c;代码的组织方式会影响开发…...

【系统架构设计师】体系结构文档化

目录 1. 说明2. 重要性3. 主要内容4. 编写原则5. 实践建议6. 例题6.1 例题1 1. 说明 1.绝大多数的体系结构都是抽象的&#xff0c;由一些概念上的构建组成。2.层的概念在任何程序设计语言中都不存在。3.要让系统分析员和程序员去实现体系结构&#xff0c;还必须将体系结构进行…...

C++性能优化—AI润色版

上接《C性能优化—人工底稿版》 C性能优化深度解析&#xff1a;从编码技巧到硬件协同 "过早优化是万恶之源" —— Donald Knuth 但合理的性能优化是优秀C工程师的核心能力。本文从编码实践到硬件原理&#xff0c;系统梳理C性能优化的知识体系。 一、性能优化的哲学…...

继承(python)

一、基础知识 &#xff08;一&#xff09;定义&#xff1a;子类能继承父类所有的公有属性和公有方法&#xff08;先使用子类的方法、属性&#xff09; &#xff08;二&#xff09;格式&#xff1a; class 子类名&#xff08;父类名&#xff09;&#xff1a; #父类 class Ph…...

jmap使用

常用命令 jmap -heap PID jmap -histo PID | head -20 jmap -dump:formatb,fileheap_dump.hprof PID jmap 是 Java 开发工具包&#xff08;JDK&#xff09;提供的一个命令行工具&#xff0c;用于生成 Java 进程的内存映射信息。它可以帮助开发者分析 Java 堆内存的使用情况…...

Android的MQTT客户端实现

在 Android 平台上实现 MQTT 客户端的完整技术方案&#xff0c;涵盖基础实现、安全连接、性能优化和最佳实践&#xff1a; 一、技术选型与依赖配置 推荐库 Eclipse Paho Android Service&#xff08;官方维护&#xff0c;支持后台运行&#xff09; gradle 复制 // build.gradl…...

Vue.js 如何自定义主题和样式

Vue.js 如何自定义主题和样式 今天我们来聊聊如何在 Vue 项目中自定义主题和样式。无论是你想让自己的应用看起来独一无二&#xff0c;还是想快速适配设计稿&#xff0c;自定义主题和样式都是必不可少的一环。下面我将和大家分享几种常见的自定义方法和技巧。 为什么要自定义…...

强化学习 DPO 算法:基于人类偏好,颠覆 PPO 传统策略

目录 一、引言二、强化学习基础回顾&#xff08;一&#xff09;策略&#xff08;二&#xff09;价值函数 三、近端策略优化&#xff08;PPO&#xff09;算法&#xff08;一&#xff09;算法原理&#xff08;二&#xff09;PPO 目标函数&#xff08;三&#xff09;代码示例&…...

线上HBase client返回超时异常分析 HBase callTimeout=60000

问题现象 HBase client直接返回超时异常 HBase callTimeout=60000, callDuration=60301: row ‘12649160863966c2790195059018040900010003320’ on table ‘Z_UPA’ at region=Z_UPA,1213d1a56,1184027415643. ba7224f83dbb09591a74b7059f17., hostname=abcd,60020,891863950…...

CTF中特别小的EXE是怎么生成的

我们在打CTF时候&#xff0c;出题的爷爷们给出的exe都很小 就10k左右&#xff0c;有的甚至就5k&#xff0c;那时候我很郁闷啊。现在我也能了啊哈哈 不多bb按如下操作&#xff1a; 我们来看看正常的release生成的代码# Copy #include "windows.h" int main(){ Messa…...

Python 字典(一个简单的字典)

在本章中&#xff0c;你将学习能够将相关信息关联起来的Python字典。你将学习如何访问和修改字典中的信息。鉴于字典可存储的信息量几乎不受限制&#xff0c;因此我们会演示如何遍 历字典中的数据。另外&#xff0c;你还将学习存储字典的列表、存储列表的字典和存储字典的字典。…...

爬虫技巧汇总

一、UA大列表 USER_AGENT_LIST 是一个包含多个用户代理字符串的列表&#xff0c;用于模拟不同浏览器和设备的请求。以下是一些常见的用户代理字符串&#xff1a; USER_AGENT_LIST [Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Hot Lingo 2.0),Mozilla…...