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

LLM评估与优化技术解析

标题:LLM评估与优化技术解析

文章信息摘要:
LLM的评估方法主要包括自动化基准测试、人工评估和基于模型的评估,每种方法各有优缺点。自动化测试快速但难以捕捉细微差别,人工评估细致但成本高,基于模型的评估结合了两者优点但依赖评估模型质量。量化技术通过降低模型参数精度来减少计算和内存成本,基础量化技术简单直接,高级量化技术如GPTQ、AWQ则进一步优化了量化过程。LLM领域的新趋势包括模型合并、多模态模型、可解释性和测试时计算扩展,这些趋势推动了技术进步和应用场景的扩展。构建LLM应用程序需关注模型运行、向量存储构建和检索增强生成(RAG)等关键技术,以提升性能和精度。

==================================================

详细分析:
核心观点:LLM的评估方法主要包括自动化基准测试、人工评估和基于模型的评估,每种方法都有其独特的优缺点。自动化基准测试能够快速、大规模地评估模型性能,但可能无法捕捉到人类感知的细微差别;人工评估则能提供更细致的反馈,但成本较高且难以规模化;基于模型的评估则结合了前两者的优点,但依赖于评估模型的质量。
详细分析:
LLM的评估方法确实是一个复杂而多维的话题,每种方法都有其独特的价值和局限性。让我们更深入地探讨一下这些评估方法:

自动化基准测试
这种方法就像给模型进行一场标准化的考试,使用精心设计的测试集和指标(如MMLU)来评估模型的表现。它的优势在于能够快速、大规模地评估模型性能,尤其是在处理具体任务时效果显著。然而,它也有明显的局限性:对于抽象和创造性任务,自动化测试往往难以准确评估;此外,数据污染问题也可能影响评估结果的可靠性。

人工评估
这种方法更像是让模型参加一场面试,由人类评估者根据模型的表现打分。评估方式可以从简单的"感觉"判断到系统化的标注和社区投票(如Chatbot Arena)。人工评估在处理主观性任务时表现出色,能够捕捉到人类感知的细微差别。但它的缺点也很明显:成本高、耗时长,且难以大规模实施,特别是在评估事实准确性方面可能不够可靠。

基于模型的评估
这种方法可以看作是一种"同行评审",使用专门的评估模型(如judge模型和reward模型)来评估其他模型的输出。它的优势在于能够结合自动化和人工评估的优点,且与人类偏好高度相关。然而,这种方法也存在一些挑战:评估模型可能会偏向自己的输出,评分标准可能不一致,且评估结果的质量很大程度上取决于评估模型本身的质量。

每种评估方法都有其适用的场景和局限性,在实际应用中,往往需要根据具体需求选择合适的方法,或者将多种方法结合使用,以获得更全面、准确的评估结果。例如,可以先使用自动化基准测试进行初步筛选,再结合人工评估对关键任务进行深入分析,最后使用基于模型的评估进行持续监控和优化。这种多层次的评估策略可以帮助我们更好地理解和提升LLM的性能。

==================================================

核心观点:量化技术是减少LLM计算和内存成本的重要手段,包括基础量化技术和高级量化技术如GPTQ、AWQ等。基础量化技术通过降低模型参数的精度来减少计算资源消耗,而高级量化技术则进一步优化了量化的过程,使得在保持模型性能的同时,显著降低了计算和内存需求。
详细分析:
量化技术确实是大语言模型(LLM)优化中的关键手段,尤其是在减少计算和内存成本方面。它通过降低模型参数的精度来实现这一目标,同时尽量保持模型的性能。让我们从基础量化技术和高级量化技术两个方面来展开讨论。

基础量化技术

基础量化技术的核心思想是将模型参数从高精度(如FP32,即32位浮点数)转换为低精度(如FP16、INT8等)。这种转换可以显著减少模型的内存占用和计算开销。常见的量化方法包括:

  1. AbsMax量化:通过将参数缩放到一个固定范围内,然后将其转换为低精度表示。这种方法简单直接,但可能会导致精度损失。
  2. Zero-Point量化:在AbsMax的基础上,引入一个零点偏移量,以更好地处理负数和零值,从而减少量化误差。

这些基础技术虽然有效,但在极端低精度(如4位或更低)的情况下,可能会导致模型性能的显著下降,尤其是在处理复杂任务时。

高级量化技术

为了在极低精度下保持模型性能,研究人员开发了多种高级量化技术,如GPTQ、AWQ等。这些技术通过更精细的校准和优化,进一步减少了量化带来的性能损失。

  1. GPTQ:GPTQ(Generalized Post-Training Quantization)是一种逐层校准的量化技术。它通过动态缩放和选择性跳过或重新调整最重的参数,来减少量化过程中的异常值。这种方法在保持模型性能的同时,显著降低了计算和内存需求。
  2. AWQ:AWQ(Activation-Aware Weight Quantization)是一种基于激活感知的量化技术。它通过分析激活值的分布,动态调整权重的量化策略,从而在极低精度下保持模型性能。AWQ特别适合处理那些对量化敏感的模型层。

量化技术的应用场景

量化技术不仅在学术研究中得到了广泛应用,也在实际生产中发挥了重要作用。例如,通过量化,开发者可以在消费级硬件上运行大型语言模型,而无需依赖昂贵的高性能计算资源。这对于边缘计算、移动设备等场景尤为重要。

量化技术的挑战

尽管量化技术带来了显著的计算和内存节省,但它也面临一些挑战。例如,在极低精度下,模型可能会出现性能下降,尤其是在处理复杂或抽象任务时。此外,量化过程本身也需要一定的计算资源,尤其是在进行逐层校准时。

总的来说,量化技术是大语言模型优化的重要手段,它通过降低模型参数的精度,显著减少了计算和内存成本。随着高级量化技术的不断发展,我们有望在保持模型性能的同时,进一步降低资源消耗,推动大语言模型在更广泛场景中的应用。

==================================================

核心观点:LLM领域的新趋势包括模型合并、多模态模型、可解释性和测试时计算扩展。模型合并通过整合多个模型的优势来提升性能;多模态模型则能够处理多种类型的数据,如图像、文本和音频;可解释性研究旨在提高模型的透明度和可理解性;测试时计算扩展则通过动态调整计算资源来优化模型的表现。
详细分析:
在LLM(大语言模型)领域,新趋势正在不断涌现,这些趋势不仅推动了技术的进步,也为应用场景带来了更多可能性。让我们深入探讨一下这些新趋势:

  1. 模型合并
    模型合并是一种无需微调就能提升模型性能的技术。通过将多个训练好的模型进行整合,可以创造出更强大的模型。这种方法特别适合那些希望快速获得高性能模型的研究者和开发者。常见的合并方法包括SLERP、DARE和TIES等,这些方法通过不同的策略来平衡和优化模型的参数。例如,SLERP(球面线性插值)可以在两个模型之间进行平滑过渡,而DARE(数据增强随机擦除)则通过随机删除部分参数来减少冗余。

  2. 多模态模型
    多模态模型能够处理多种类型的数据,如文本、图像和音频。这类模型通过统一的嵌入空间将不同模态的数据进行融合,从而解锁了许多强大的应用场景。例如,CLIP模型可以将图像和文本进行关联,Stable Diffusion则可以根据文本生成高质量的图像,而LLaVA则结合了语言和视觉的能力。多模态模型的出现,使得AI能够更好地理解和处理复杂的世界,为创意、医疗、教育等领域带来了新的可能性。

  3. 可解释性
    随着模型变得越来越复杂,如何理解其内部工作机制成为了一个重要课题。可解释性研究旨在提高模型的透明度和可理解性,帮助开发者和用户更好地信任和使用这些模型。例如,稀疏自编码器(SAEs)通过识别模型中的关键特征来提供洞察,而“abliteration”技术则允许在不重新训练模型的情况下修改其行为。这些技术不仅有助于调试和优化模型,还能帮助识别和消除潜在的偏见和错误。

  4. 测试时计算扩展
    测试时计算扩展是一种动态调整计算资源以优化模型表现的技术。通过增加测试时的计算预算,模型可以在处理复杂任务时表现得更好。例如,使用过程奖励模型(PRM)进行多次迭代和精确评分,可以显著提高模型在复杂推理任务中的表现。这种方法特别适合那些需要高精度和复杂推理的应用场景,如数学问题求解和科学计算。

这些新趋势不仅展示了LLM领域的多样性和创新性,也为未来的研究和应用提供了广阔的空间。无论是通过模型合并提升性能,还是通过多模态模型处理复杂数据,亦或是通过可解释性和测试时计算扩展提高透明度和效率,这些技术都在不断推动着AI的边界。

==================================================

核心观点:构建LLM应用程序需要关注多个关键技术,包括模型的运行、向量存储的构建和检索增强生成(RAG)等。模型的运行涉及如何高效地部署和推理;向量存储的构建则是为了支持大规模数据的快速检索;检索增强生成技术则通过结合检索和生成过程,提升模型在特定任务上的表现。
详细分析:
构建LLM应用程序确实是一个复杂但极具潜力的过程,涉及多个关键技术的整合与优化。让我们深入探讨这些技术点:

  1. 模型的运行
    模型的运行是LLM应用程序的基础,它决定了应用程序的性能和可扩展性。运行LLM时,开发者需要根据具体需求选择合适的方式:

    • API调用:对于资源有限或需要快速上线的场景,使用现成的API(如OpenAI的GPT-4或Google的Gemini)是最便捷的选择。这种方式无需担心硬件配置,但可能受限于API的调用频率和成本。
    • 本地部署:对于需要更高定制化或数据隐私的场景,可以选择在本地运行开源模型(如Llama 2或Mistral)。这通常需要高性能的硬件支持,但提供了更大的灵活性和控制权。
    • 提示工程:无论是通过API还是本地运行,提示工程都是优化模型输出的关键。通过设计有效的提示词(如零样本提示、链式思维等),可以显著提升模型的表现。
  2. 向量存储的构建
    向量存储是支持大规模数据检索的核心技术,尤其在处理非结构化数据(如文本、图像)时尤为重要:

    • 文档处理:首先需要将原始文档加载并分割成语义上有意义的片段。常见的分割方式包括按段落、标题或递归分割,以确保每个片段都能独立表达完整的信息。
    • 嵌入模型:嵌入模型将文本转换为高维向量,这些向量能够捕捉文本的语义信息。选择合适的嵌入模型(如Sentence Transformers)是提升检索精度的关键。
    • 向量数据库:向量数据库(如Pinecone、FAISS)专门用于存储和检索高维向量。它们通过高效的相似度搜索算法,能够快速找到与查询最相关的数据。
  3. 检索增强生成(RAG)
    RAG技术通过结合检索和生成过程,显著提升了模型在特定任务上的表现:

    • 检索阶段:在生成答案之前,模型会从向量数据库中检索与查询相关的文档。这一步骤确保了模型能够基于最新的、特定领域的信息生成答案。
    • 生成阶段:在检索到相关文档后,模型会将这些文档作为上下文,生成更准确、更相关的答案。这种方式特别适用于需要高精度和事实性支持的场景。
    • 评估与优化:为了确保RAG系统的有效性,开发者需要评估检索和生成两个阶段的表现。常见的评估指标包括上下文精度、答案相关性等。

总之,构建LLM应用程序需要综合考虑模型的运行效率、数据存储的优化以及生成过程的增强。通过合理整合这些技术,开发者能够打造出高性能、高精度的LLM应用,满足多样化的业务需求。

==================================================

相关文章:

LLM评估与优化技术解析

标题:LLM评估与优化技术解析 文章信息摘要: LLM的评估方法主要包括自动化基准测试、人工评估和基于模型的评估,每种方法各有优缺点。自动化测试快速但难以捕捉细微差别,人工评估细致但成本高,基于模型的评估结合了两者…...

SpringBoot 原理分析

SpringBoot 原理分析 依赖管理相关 启动器 starter Spring Boot 的 Starter 是预定义依赖项集合,可简化 Spring 应用配置与构建,启动时自动引入所需库、配置和功能。 Spring Boot 有很多预定义 Starter,如 spring - boot - starter - web 用…...

go入门Windows环境搭建

简介 Go 即 Golang,是 Google 公司 2009 年 11 月正式对外公开的一门编程语言。 根据 Go 语言开发者自述,近 10 多年,从单机时代的 C 语言到现在互联网时代的 Java,都没有令人满意的开发语言,而 C往往给人的感觉是&a…...

拦截器快速入门及详解

拦截器Interceptor 快速入门 什么是拦截器? 是一种动态拦截方法调用的机制,类似于过滤器。 拦截器是Spring框架中提供的,用来动态拦截控制器方法的执行。 拦截器的作用:拦截请求,在指定方法调用前后,根…...

Fort Firewall:全方位守护网络安全

Fort Firewall是一款专为 Windows 操作系统设计的开源防火墙工具,旨在为用户提供全面的网络安全保护。它基于 Windows 过滤平台(WFP),能够与系统无缝集成,确保高效的网络流量管理和安全防护。该软件支持实时监控网络流…...

第3章 基于三电平空间矢量的中点电位平衡策略

0 前言 在NPC型三电平逆变器的直流侧串联有两组参数规格完全一致的电解电容,由于三电平特殊的中点钳位结构,在进行SVPWM控制时,在一个完整开关周期内,直流侧电容C1、C2充放电不均匀,各自存储的总电荷不同,电容电压便不均等,存在一定的偏差。在不进行控制的情况下,系统无…...

九大服务构建高效 AIOps 平台,全面解决GenAI落地挑战

最近,DevOps运动的联合创始人Patrick Debois分享了他对AI平台与软件研发关系的深刻见解,让我们一起来探讨这个话题。 在AI的落地过程中,我们面临着两个主要难题: 引入AI编码工具后的开发者角色转变:随着像GitHub Copilot这样的AI工具的普及,工程师的角色正在发生深刻变革…...

Leetcode 131 分割回文串(纯DFS)

131. 分割回文串https://leetcode.cn/problems/palindrome-partitioning/https://leetcode.cn/problems/palindrome-partitioning/ 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 示例 1&#xff1a…...

我的AI工具箱Tauri+Django内容生产介绍和使用

在现代内容生产环境中,高效、自动化的工具能够显著提升生产力,降低人工成本。Tauri 与 Django 结合打造的工作箱,集成了强大的 音频处理、视频剪辑、内容下载 以及 AI 文章撰写 等模块,帮助用户在多媒体内容生产的各个环节实现高效…...

“星门计划对AI未来的意义——以及谁将掌控它”

“星门计划对AI未来的意义——以及谁将掌控它” 图片由DALL-E 3生成 就在几天前,唐纳德特朗普宣布了“星门计划”,OpenAI随即跟进,分享了更多细节。他们明确表示,计划在未来四年内投资5000亿美元,在美国为OpenAI构建一…...

论文阅读(八):结构方程模型用于研究数量遗传学中的因果表型网络

1.论文链接:Structural Equation Models for Studying Causal Phenotype Networks in Quantitative Genetics 摘要: 表型性状可能在它们之间发挥因果作用。例如,农业物种的高产可能会增加某些疾病的易感性,相反,疾病的…...

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.25 视觉风暴:NumPy驱动数据可视化

1.25 视觉风暴:NumPy驱动数据可视化 目录 #mermaid-svg-i3nKPm64ZuQ9UcNI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-i3nKPm64ZuQ9UcNI .error-icon{fill:#552222;}#mermaid-svg-i3nKPm64ZuQ9UcNI …...

Linux Samba 低版本漏洞(远程控制)复现与剖析

目录 前言 漏洞介绍 漏洞原理 产生条件 漏洞影响 防御措施 复现过程 结语 前言 在网络安全的复杂生态中,系统漏洞的探索与防范始终是保障数字世界安全稳定运行的关键所在。Linux Samba 作为一款在网络共享服务领域应用极为广泛的软件,其低版本中…...

solidity基础 -- 可视范围

在 Solidity 编程语言中,可视范围(Visibility)用于控制合约中变量和函数的访问权限。这对于确保合约的安全性、模块化以及代码的可维护性至关重要。Solidity 提供了四种可视范围修饰符:public、private、external 和 internal。以…...

Spring Boot - 数据库集成07 - 数据库连接池

数据库连接池 文章目录 数据库连接池一:知识准备1:什么是数据库连接池?2:数据库连接池基本原理 二:HikariCP连接池1:简单使用2:进一步理解2.1:是SpringBoot2.x默认连接池2.2&#xf…...

智云-一个抓取web流量的轻量级蜜罐-k8s快速搭建教程

智云-一个抓取web流量的轻量级蜜罐-k8s快速搭建教程 github地址 https://github.com/xiaoxiaoranxxx/POT-ZHIYUN k8s搭建教程 首先下载代码文件 git clone https://github.com/xiaoxiaoranxxx/POT-ZHIYUN.git cd POT-ZHIYUN编译镜像 代码相关文件在github https://github.com/x…...

MySQL 事件调度器

MySQL 事件调度器确实是一个更方便且内置的解决方案,可以在 MySQL 服务器端自动定期执行表优化操作,无需依赖外部工具或应用程序代码。这种方式也能减少数据库维护的复杂性,尤其适用于在数据库频繁更新或删除时进行自动化优化。 使用 MySQL …...

3 Spark SQL

Spark SQL 1. 数据分析方式2. SparkSQL 前世今生3. Hive 和 SparkSQL4. 数据分类和 SparkSQL 适用场景1) 结构化数据2) 半结构化数据3) 总结 5. Spark SQL 数据抽象1) DataFrame2) DataSet3) RDD、DataFrame、DataSet 的区别4) 总结 6. Spark SQL 应用1) 创建 DataFrame/DataSe…...

多头潜在注意力(MLA):让大模型“轻装上阵”的技术革新——从DeepSeek看下一代语言模型的高效之路

多头潜在注意力(MLA):让大模型“轻装上阵”的技术革新 ——从DeepSeek看下一代语言模型的高效之路 大模型的“内存焦虑” 当ChatGPT等大语言模型(LLM)惊艳世界时,很少有人意识到它们背后隐藏的“内存焦虑”…...

Spring AI 在微服务中的应用:支持分布式 AI 推理

1. 引言 在现代企业中,微服务架构 已成为开发复杂系统的主流方式,而 AI 模型推理 也越来越多地被集成到业务流程中。如何在分布式微服务架构下高效地集成 Spring AI,使多个服务可以协同完成 AI 任务,并支持分布式 AI 推理&#x…...

赛博算卦之周易六十四卦JAVA实现:六幺算尽天下事,梅花化解天下苦。

佬们过年好呀~新年第一篇博客让我们来场赛博算命吧! 更多文章:个人主页 系列文章:JAVA专栏 欢迎各位大佬来访哦~互三必回!!! 文章目录 #一、文化背景概述1.文化起源2.起卦步骤 #二、卦象解读#三、just do i…...

数据分析系列--⑤RapidMiner进行关联分析(中文数据案例)

一、数据集 二、数据预处理 1.读取数据、拆分、重命名 2.数据预处理 三、关联分析 四、结论 一、数据集 点击下载数据集shopping_basket.xlsx ,这个数据集专门使用中文数据来进行分析. 二、数据预处理 1.读取数据、拆分、重命名 2.数据预处理 三、关联分析 四、结论 Ok…...

fpga系列 HDL:XILINX Vivado Vitis 高层次综合(HLS) 实现 EBAZ板LED控制(下)

补充代码,将clk之外的输入都设置能使其运行的默认值 timescale 1ns / 1ps module HLSLED(input wire clk ,input wire rst_n ,output wire led);wire led_o_i 0;reg rst 0;wire led_o_o_ap_vld;hlsv1_0 your_instance_name (.led_o_o_ap_vld(led_o_o_ap_vld), /…...

设计模式面试题

一、工厂方法模式: 1.简单工厂模式: (1).抽象产品:定义了产品的规范,描述了产品的主要特性和功能 (2).具体产品:实现或继承抽象产品的子类 (3).具体工厂:提供了创建产品的方法,调用者通过该方法来获取产品 所有产品都共有一个工厂,如果新…...

7层还是4层?网络模型又为什么要分层?

~犬📰余~ “我欲贱而贵,愚而智,贫而富,可乎? 曰:其唯学乎” 一、为什么要分层 \quad 网络通信的复杂性促使我们需要一种分层的方法来理解和管理网络。就像建筑一样,我们不会把所有功能都混在一起…...

12.udp

12.udp **1. UDP特性****2. UDP编程框架(C/S模式)****3. UDP发送接收函数****4. UDP编程练习** 1. UDP特性 连接特性:无链接,通信前无需像TCP那样建立连接。可靠性:不可靠,不保证数据按序到达、不保证数据…...

【Leetcode 热题 100】32. 最长有效括号

问题背景 给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号 子串 的长度。 数据约束 0 ≤ s . l e n g t h ≤ 3 1 0 4 0 \le s.length \le 3 \times 10 ^ 4 0≤s.length≤3104 s [ i ] s[i] s[i] 为 ‘(’ 或 ‘…...

Python NumPy(8):NumPy 位运算、NumPy 字符串函数

1 NumPy 位运算 位运算是一种在二进制数字的位级别上进行操作的一类运算,它们直接操作二进制数字的各个位,而不考虑数字的整体值。NumPy 提供了一系列位运算函数,允许对数组中的元素进行逐位操作,这些操作与 Python 的位运算符类似…...

Fork/Join框架_任务分解与并行执行

1 概述 Fork/Join框架是Java 7引入的一个用于并行执行任务的框架。它特别适用于可以递归分解为多个子任务的工作,每个子任务可以独立执行,并且结果可以合并以获得最终结果。Fork/Join框架通过工作窃取(work-stealing)算法提高了多核处理器上的任务执行效率。 2 核心组件 …...

【大厂AI实践】OPPO:大规模知识图谱及其在小布助手中的应用

导读:OPPO知识图谱是OPPO数智工程系统小布助手团队主导、多团队协作建设的自研大规模通用知识图谱,目前已达到数亿实体和数十亿三元组的规模,主要落地在小布助手知识问答、电商搜索等场景。 本文主要分享OPPO知识图谱建设过程中算法相关的技…...

SOME/IP--协议英文原文讲解2

前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 4.1 Speci…...

为大模型提供webui界面的利器:Open WebUI 完全本地离线部署deepseek r1

为大模型提供webui界面的利器:Open WebUI Open WebUI的官网:🏡 Home | Open WebUI 开源代码:WeTab 新标签页 Open WebUI是一个可扩展、功能丰富、用户友好的自托管AI平台,旨在完全离线运行。它支持各种LLM运行程序&am…...

Cyber Security 101-Build Your Cyber Security Career-Security Principles(安全原则)

了解安全三元组以及常见的安全模型和原则。 任务1:介绍 安全已成为一个流行词;每家公司都想声称其产品或服务是安全的。但事实真的如此吗? 在我们开始讨论不同的安全原则之前,了解我们正在保护资产的对手至关重要。您是否试图阻止蹒跚学步…...

react-native网络调试工具Reactotron保姆级教程

在React Native开发过程中,调试和性能优化是至关重要的环节。今天,就来给大家分享一个非常强大的工具——Reactotron,它就像是一个贴心的助手,能帮助我们更轻松地追踪问题、优化性能。下面就是一份保姆级教程哦! 一、…...

Progressive Pretext Task Learning for Human Trajectory Prediction | 文献翻译

祥龙回首留胜景,金蛇起舞贺新程。 概述 行人轨迹预测是一项旨在预测行人未来位置的任务,它通常涵盖了从短期到长期的整个时间范围内的轨迹。然而,现有的研究试图通过单一、统一的训练范式来解决整个轨迹预测问题,往往忽视了行人轨…...

并发编程基础 - 并发编程的概念(C++)

前言 在当今多核处理器普及的时代,并发编程成为开发高性能应用程序的关键技术之一。无论是服务器端应用,桌面软件,还是移动应用,并发编程都扮演着重要角色。本文将详细介绍并发编程的基本概念,结合C语言特性&#xff…...

ARM嵌入式学习--第十天(UART)

--UART介绍 UART(Universal Asynchonous Receiver and Transmitter)通用异步接收器,是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用来与PC进行通信,包括与监控…...

OpenEuler学习笔记(十七):OpenEuler搭建Redis高可用生产环境

在OpenEuler上搭建Redis高可用生产环境,通常可以采用Redis Sentinel或Redis Cluster两种方式,以下分别介绍两种方式的搭建步骤: 基于Redis Sentinel的高可用环境搭建 安装Redis 配置软件源:可以使用OpenEuler的默认软件源&#…...

CTF从入门到精通

文章目录 背景知识CTF赛制 背景知识 CTF赛制 1.web安全:通过浏览器访问题目服务器上的网站,寻找网站漏洞(sql注入,xss(钓鱼链接),文件上传,包含漏洞,xxe,ssrf,命令执行&#xff0c…...

java入门笔记基础语法篇(4)

变量 在Java中,每个变量都有一个类型(type)。在声明变量时,变量的类型位于变量 名之前。例如: int days; double salary; long earthPopulation; boolean done; 在Java中,每个声明以分号结束。变量名必须…...

【RocketMQ 存储】- broker 端存储单条消息的逻辑

文章目录 1. 前言2. DefaultMessageStore#asyncPutMessage 添加单条消息2.1 DefaultMessageStore#checkStoreStatus 检查存储服务的状态2.2 DefaultMessageStore#checkMessage 校验消息长度是否合法2.3 CommitLog#asyncPutMessage 核心存储逻辑2.4 MappedFile#appendMessage2.5…...

爬虫基础(四)线程 和 进程 及相关知识点

目录 一、线程和进程 (1)进程 (2)线程 (3)区别 二、串行、并发、并行 (1)串行 (2)并行 (3)并发 三、爬虫中的线程和进程 &am…...

29. C语言 可变参数详解

本章目录: 前言可变参数的基本概念可变参数的工作原理如何使用可变参数 示例:计算多个整数的平均值解析: 更复杂的可变参数示例:打印可变数量的字符串解析: 总结 前言 在C语言中,函数参数的数量通常是固定的&#xff…...

Java CAS操作

通过前面的学习认识到了CPU缓存,Java内存模型,以及线程安全的原子、可见、顺序三大特性。本文则重点认识CAS操作,这是Java并发编程常见的一个操作,AbstractQueuedSynchronizer基于此操作提供了丰富的同步器和各种锁。 CAS&#x…...

KNIME:开源 AI 数据科学

KNIME(Konstanz Information Miner)是一款开源且功能强大的数据科学平台,由德国康斯坦茨大学的软件工程师团队开发,自2004年推出以来,广泛应用于数据分析、数据挖掘、机器学习和可视化等领域。以下是对KNIME的深度介绍…...

超级强大的压缩和解压工具,免费解压

软件介绍 今天要给大家分享一款超厉害的软件 ——ZArchiver,在我心中,它堪称安卓平台目前最为强大的解压软件。 之前,我一直使用 MT 管理器来解压文件。然而,MT 管理器存在一些局限性。比如在处理解压分卷文件时,它有时…...

代码随想录_栈与队列

栈与队列 232.用栈实现队列 232. 用栈实现队列 使用栈实现队列的下列操作: push(x) – 将一个元素放入队列的尾部。 pop() – 从队列首部移除元素。 peek() – 返回队列首部的元素。 empty() – 返回队列是否为空。 思路: 定义两个栈: 入队栈, 出队栈, 控制出入…...

基于STM32的智能停车场管理系统设计

目录 引言系统设计 硬件设计软件设计 系统功能模块 车辆识别与进出管理模块车位检测与引导模块计费与支付模块数据存储与查询模块远程监控与异常报警模块 控制算法 车牌识别与车辆进出管理算法车位检测与引导算法计费与支付处理算法数据存储与远程反馈算法 代码实现 车辆检测与…...

告别重启!Vue CLI 动态代理配置实战:实现热更新与灵活配置

在前端开发中,代理配置是解决跨域问题的常见手段。尤其是在使用 Vue CLI 进行开发时,我们经常需要通过 devServer.proxy 来配置代理。然而,传统的代理配置通常是静态的,修改后需要重启开发服务器,这在频繁调整代理配置…...

Cocos Creator 3.8 2D 游戏开发知识点整理

目录 Cocos Creator 3.8 2D 游戏开发知识点整理 1. Cocos Creator 3.8 概述 2. 2D 游戏核心组件 (1) 节点(Node)与组件(Component) (2) 渲染组件 (3) UI 组件 3. 动画系统 (1) 传统帧动画 (2) 动画编辑器 (3) Spine 和 …...