AutoSar架构学习笔记
1.AUTOSAR(Automotive Open System Architecture,汽车开放系统架构)是一个针对汽车行业的软件架构标准,旨在提升汽车电子系统的模块化、可扩展性、可重用性和互操作性。AUTOSAR的目标是为汽车电子控制单元(ECU)之间的软件开发提供统一的标准,以支持多种不同的硬件平台和操作系统,并促进供应商间的兼容性。
2.AUTOSAR Classic Platform架构如下图所示:
-
SWC(Application Software Components, 应用软件组件):这些是ECU上运行的实际应用程序,执行车辆功能的核心任务。例如,发动机控制、车辆安全、空调控制等。应用层组件与硬件和其他软件组件之间通过接口进行通信,通常通过AUTOSAR定义的标准接口。
-
RTE(Runtime Environment,运行时环境):RTE是AUTOSAR架构的核心部分,它是软件组件与基础软件层之间的中间件。RTE负责连接不同的应用软件组件,提供统一的通信机制,确保不同软件模块间的互操作性。RTE的作用是将应用软件与底层的硬件和服务隔离开,使得应用软件不依赖于具体的硬件平台和操作系统,增强了软件的可移植性。
-
BSW(Basic Software Layer,基础软件层):该层主要是为应用层提供基础服务,具体又可分为以下几层:
- Microcontroller Abstraction Layer(微控制器抽象层,MCAL):该层是对MCU芯片的抽象和封装,由于Autosar CP是基于MCU的软件架构,所以该层主要是实现MCU外设驱动)比如I/O驱动、Flash驱动、CAN驱动、看门狗驱动、定时器驱动等等。这一层是需要和硬件打交道的,这一层高度依赖MCU硬件,如果项目换MCU芯片,只需要修改这一层代码适配驱动即可。
- ECU Abstraction Layer(ECU抽象层):该层是对ECU的抽象和封装,ECU上面除了主芯片MCU,还有很多外围设备,比如外置Flash,外置电源管理芯等。这一层就是实现了整个ECU所有设备的封装。外围设备也是MCU主芯片控制的,这一层会使用到MCAL的接口。作为抽象层,屏蔽了下层驱动实现细节,将统一接口API暴露给上层以实现功能。该层从上层抽象MCAL层,并提供用于访问外部和内部的驱动程序的API。
- Services Layer(服务层):该层是向应用层提供服务的,这一将底层提供的服务封装起来供应用层使用。比如通信服务、存储服务、os 操作系统服务等。
- Complex Device Drivers(复杂驱动,CDD):指的是有些模块不适用于Autosar协议栈,通过手写代码自己封装成CDD模块,在项目开发中会经常有一些模块直接作为CDD使用。
3.AUTOSAR Adaptive Platform是面向服务的架构,如下图所示:
4.汽车电子开发流程:下图是标准AUTOSAR流程,OEM从需求生成最终的文件(给到每一个ECU制造厂商)的主要流程。图中流程需要软件工具支持(比如Vector的PREEvision),这样就能自动生成相应的描述文件了。图中绿色箭头的含义是:设计之初,需要反复修改,首先是列需求,通过三种文件描述这些需求:SWC描述文件、系统描述文件、ECU资源文件,然后将这三种文件导入到系统配置编辑工具中,生成系统配置描述文件。该文件就是整车描述文件最后将系统配置描述文件导入到系统配置提取工具中,导出每一个ECU相应的提取文件,该文件就包含每一个ECU需要用到的信息,比如通信矩阵、SWC信息。
上图中各个具体文件的作用是:
-
SWC描述文件:即应用层软件组件描述文件,包含的信息有:描述每个软件组件需要的资源(比如存储、CPU时间等),SWC直接的接口,运行机制
-
系统约束描述文件:主要是对整车公共资源的描述,包括网络拓扑、通信矩阵、总线波特率、各种协议等
-
ECU资源描述文件:描述每个ECU都需要实现什么功能,系统设计者通过该文件将不同功能的SWC分配到对应的ECU中,例如传感器、执行器、存储器、引脚分配
-
系统配置描述文件:上面3中文件的汇总
-
ECU提取文件:将系统配置描述文件信息分配给单个ECU,是单个ECU获取属于自己的信息
当供应商获取到OEM厂商提供的单个ECU的配置文件之后,可以进行具体的ECU软件开发,流程如下:
-
EB用来配置Mcal驱动,生成arxml导入到DavinciConfigurator(用来配置操作系统和协议栈)中生成代码。
-
Davinci Developer是用来配置App层框架的(对应AUTOSAR Classic Platform架构中的RTE部分),然后导入到Davinci Configurator中生成代码。
-
Davinci Developer生成的arxml还会给一份到应用工程师(导入到MATLAB)然后通过MATLAB自动生成软件框架,应用工程在里面添加模型代码即可。
-
做EB、DaVinci Developer、DaVinci Configrator和Simulink工程师可以同步开发,最终集成一下即可。
-
开发可以从上到下也可以从下到上,就是说可以在Developer中设计好AppL框架导入到Matlab做代码填充,也可以在Matlab中直接搭建好符合AutoSAR规范的代码,然后导出arxml,再导入到Developer中,也能自动生成框架
静态代码:不会改变的源码。动态代码:配置工具配置出来的代码xx_cfg.c、xx_cfg.h。
5.CAN通信:
从图中可以看出,CAN总线通信需要CPU、CAN控制器、CAN收发器参与。从CAN收发器引出两根线CAN_H_CAN_L,所有节点都挂接到这两根线上,就形成了CAN的网络结构。图中有两路CAN总线,带有终端电阻120欧的是高速CAN,没有带终端120欧的是低速容错CAN。
6.高速CAN总线的总线设计如图所示,仅支持总线型拓扑结构,当前汽车领域用的最多的是CAN控制器集成到MCU中,使用外置CAN收发器,也就是图中右边这种设计:
CAN总线信号由CAN_H_CAN_L两根线的差分信号,也就是通过CAN_H和CAN_L的电压差来决定0、1信号。总线规定隐性电平为信号1(即CAN不工作时),显性电平为信号0(即CAN工作时),其中隐形电平的时候CAN_H和CAN_L都为2.5V,此时电压差就是0V,而显性电平的时候CAN_H为3.5V, CAN_L为1.5V,此时电压差就是2V。高速CAN,总线长度最大为40m,也就是当总线长度超过40m之后,总线的速率会受到影响,支线长度(节点和总线之间的距离)最长为0.3米,节点距离长度最大也是40m。
7.低速CAN:低速容错CAN总线信号也是由CAN_H和CAN_L两根线的差分信号,也就是通过CAN_H和CAN_L的电压差来决定0、1信号。总线规定隐形电平为信号1显性电平为信号0。其中隐形电平的时候CAN_H为0V,CAN_L为5V,此时电压差就是-5V,显性电平的时候CAN_H为3.50V,CAN_L为1.5V,此时电压差就是2V。低俗容错CAN除了支持总线型还支持星型。
8.相关概念:
-
ECU(Electronic Control Unit):是电子控制单元的缩写,它是现代汽车、工业自动化、航空航天等领域中广泛使用的电子设备。ECU 主要用于控制和管理车辆或设备的各种电子系统,通过接收来自传感器的信号并执行相应的控制操作来提高设备的性能、可靠性和安全性。
-
OTA(Over-the-Air):是一种无线远程更新技术,主要用于通过无线网络(如Wi-Fi、蜂窝网络、蓝牙等)远程向设备推送软件、固件或配置更新。OTA 更新通常用于智能手机、汽车、物联网设备、嵌入式系统等领域,以便无需物理接触或连接外部设备的情况下,远程升级、修复漏洞、优化性能或增加新功能。
-
OEM(Original Equipment Manufacturer):指的是“原始设备制造商”,即生产原始设备的公司,它设计并制造产品或组件,并将其作为品牌产品的一部分提供给其他公司进行销售。OEM 通常指的是一个制造商生产的产品或部件,最终由另一家公司销售并以其品牌名推出市场。
-
BswM:管理整个BSW的模块
-
EcuM:管理ECU上下电等功能。
相关文章:
AutoSar架构学习笔记
1.AUTOSAR(Automotive Open System Architecture,汽车开放系统架构)是一个针对汽车行业的软件架构标准,旨在提升汽车电子系统的模块化、可扩展性、可重用性和互操作性。AUTOSAR的目标是为汽车电子控制单元(ECU…...
Scade pragma: separate_io
概述 在 Scade 语言中,支持对用户自定义算子使用 separate_io pragma 进行修饰。其形式如: function #pragma kcg separate_io #end N(x: int8) returns (y,z: int8) let y x;z x; tel在上例中,算子N 就被 pragma #pragma kcg separate_i…...
三天速成微服务
微服务技术栈 总结 微服务技术对比 技术栈 SpringCloud SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud Springboot和SpringCould兼容性 代码目录结构如下 用于远程调用Bean 代码 package cn.itcast.order.config;//import …...
【MySQL】九、表的内外连接
文章目录 前言Ⅰ. 内连接案例:显示SMITH的名字和部门名称 Ⅱ. 外连接1、左外连接案例:查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来 2、右外连接案例:对stu表和exam表联合查询,把…...
GitLab 创建项目、删除项目
1、创建项目 点击左上角图标,回到首页 点击 Create a project 点击 Create blank project 输入项目名称,点击Create Project 创建成功 2、删除项目 进入项目列表 点击对应项目,进入项目 进入Settings页面 拖到页面底部,展开Adva…...
python学opencv|读取图像(二十六)使用cv2.putText()绘制文字进阶-在图像上写文字
【1】引言 前序已经学会了在画布上绘制文字的大部分技巧,相关文章链接为: python学opencv|读取图像(二十三)使用cv2.putText()绘制文字-CSDN博客 python学opencv|读取图像(二十四)使用cv2.putText()绘制…...
Apache HTTPD 多后缀解析漏洞
目录 漏洞简介 漏洞环境 漏洞复现 漏洞防御 漏洞简介 Apache HTTPD 支持一个文件拥有多个后缀,并为不同后缀执行不同的指令。比如,如下配置文件: AddType text/html .html AddLanguage zh-CN .cn 以上就是Apache多后缀的特性。如果运维…...
(二)当人工智能是一个函数,函数形式怎么选择?ChatGPT的函数又是什么?
在上一篇文章中,我们通过二次函数的例子,讲解了如何训练人工智能。今天,让我们进一步探讨:面对不同的实际问题,应该如何选择合适的函数形式? 一、广告推荐系统中的函数选择 1. 业务目标 想象一下&#x…...
JavaScript学习-入门篇
JavaScript的运行环境 开发环境就是开发JavaScript代码所需的环境,一般建议新手刚刚开始使用一些记事本工具(如sublime、editPlus、VScode),锻炼代码的手感。等学习到一定阶段,就可以使用集成开发工具IDE࿰…...
今日头条ip属地根据什么显示?不准确怎么办
在今日头条这样的社交媒体平台上,用户的IP属地信息对于维护网络环境的健康与秩序至关重要。然而,不少用户发现自己的IP属地显示与实际位置不符,这引发了广泛的关注和讨论。本文将深入探讨今日头条IP属地的显示依据,并提供解决IP属…...
python之移动端测试---appium
Appium Appium介绍环境准备新版本appium的用法介绍元素定位函数被封装,统一使用By.xxx(定位方式):通过文本定位的写法 一个简单的请求示例APP操作api基础apk安装卸载发送,拉取文件uiautomatorviewer工具使用获取页面元素及属性模拟事件操作模…...
【网络安全实验室】基础关实战详情
须知少时凌云志,曾许人间第一流 1.key在哪里 url:http://rdyx0/base1_4a4d993ed7bd7d467b27af52d2aaa800/index.php 查看网页源代码的方式有4种,分别是:1、鼠标右击会看到”查看源代码“,这个网页的源代码就出现在你眼前了&…...
在DJI无人机上运行VINS-FUISON(PSDK 转 ROS)
安装ceres出现以下报错,将2版本的ceres换成1版本的ceres CMake did not find one.Could not find a package configuration file provided by "absl" with any ofthe following names:abslConfig.cmakeabsl-config.cmakeAdd the installation prefix of …...
MarkDown怎么转pdf;Mark Text怎么使用;
MarkDown怎么转pdf 目录 MarkDown怎么转pdf先用CSDN进行编辑,能双向看版式;标题最后直接导出pdfMark Text怎么使用一、界面介绍二、基本操作三、视图模式四、其他功能先用CSDN进行编辑,能双向看版式; 标题最后直接导出pdf Mark Text怎么使用 Mark Text是一款简洁的开源Mar…...
代码实战:基于InvSR对视频进行超分辨率重建
Diffusion Models专栏文章汇总:入门与实战 前言:上一篇博客《使用Diffusion Models进行图像超分辩重建》中讲解了InvSR的原理,博主实测的效果是非常不错的,和PASD基本持平。这篇博客就讲解如何利用InvSR对视频进行超分辨率重建。 目录 环境准备 代码讲解 环境准备...
解决HBuilderX报错:未安装内置终端插件,是否下载?或使用外部命令行打开。
版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 错误描述 在HBuilderX中执行npm run build总是提醒下载插件;图示如下: 但是,下载总是失败。运行项目时候依然弹出上述提醒。 解决方案 …...
邻接表深度优先遍历和广度优先遍历计算方法
DFS和BFS 一、 深度优先遍历次序(DFS)二、 深度优先遍历生成树三、 广度优先遍历次序(BFS)四、 广度优先遍历生成树示例说明1. DFS遍历2. BFS遍历 在图的遍历中,常用的两种算法是深度优先遍历(DFSÿ…...
计算机网络-数据链路层(CSMA/CD协议,CSMA/CA协议)
2.2 ppp协议 点对点协议ppp是目前使用最广泛的点对点数据链路层协议。 2.3 媒体接入控制基本概念 共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC。 2.3.1 静态划分信道 频分复用 时分复用 波分复用 码分复…...
网络安全的学习与实践经验(附资料合集)
学习资源 在线学习平台: Hack This Site:提供从初学者到高级难度的挑战任务,适合练习各种网络安全技术。XCTF_OJ:由XCTF组委会开发的免费在线网络安全网站,提供丰富的培训材料和资源。SecurityTube:提供丰…...
Navicat 17 for Mac 数据库管理软件
Mac分享吧 文章目录 效果一、准备工作二、开始安装1. 双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕。2. 应用程序/启动台显示Navicat图标,表示安装成功。 二、运行测试运行后提示:“Navicat Premium.pp”已损坏&#x…...
Json与jsoncpp
目录 一、关于Json 1.数据类型 2.语法规则 二、写Json相关API 1.Json::Value类 2.append方法 3.toStyledString方法 三、读Json相关API 1.Json::Reader类 2.parse方法 3.类型判断方法 4.类型转换方法 5.getMemberNames方法 四、完整代码 一、关于Json Json是一种轻…...
Webpack、Vite区别知多少?
前端的项目打包,我们常用的构建工具有Webpack和Vite,那么Webpack和Vite是两种不同的前端构建工具,那么你们又是否了解它们的区别呢?我们在做项目时要如何选择呢? 一、工具定义 1、Webpack:是一个强大的静态模块打包工…...
以太网ICMP协议(ping指令)——FPGA学习笔记25
--素材来源原子哥 一、IP协议 1、IP简介 IP是Internet Protocol(网际互连协议)的缩写。IP 协议是 TCP/IP 协议簇中的核心协议,它为上层协议提供无状态、无连接、不可靠的服务。IP 协议规定了数据传输时的基本单元和格式 。 IP协议是 OSI 参考模型中网络层…...
ESP32自动下载电路分享
下面是一个ESP32系列或者ESP8266等电路的一个自动下载电路 在ESP32等模块需要烧写程序的时候,需要通过将EN引脚更改为低电平并将IO0引脚设置为低电平来切换到烧写模式。 有时候也会采用先将IO接到一个按键上,按住按键拉低IO0的同时重新上电的方式进入烧写…...
数据结构(ing)
学习内容 指针 指针的定义: 指针是一种变量,它的值为另一个变量的地址,即内存地址。 指针在内存中也是要占据位置的。 指针类型: 指针的值用来存储内存地址,指针的类型表示该地址所指向的数据类型并告诉编译器如何解…...
STM32-笔记32-ESP8266作为服务端
esp8266作为服务器的时候,这时候网络助手以客户端的模式连接到esp8266,其中IP地址写的是esp8266作为服务器时的IP地址,可以使用ATCIFSR查询esp8266的ip地址,端口号默认写333。 当esp8266作为服务器的时候,需要完成哪些…...
[Day 12]904.水果成篮
今天给带来的题目是滑动窗口的另一种题目,之前我们讲了滑动窗口题目中长度最小的子数组,今天这个题目实际上是求长度最长的子数组 题目描述:力扣链接 904.水果成篮 你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整…...
检查字符是否相同
给你一个字符串 s ,如果 s 是一个 好 字符串,请你返回 true ,否则请返回 false 。 如果 s 中出现过的 所有 字符的出现次数 相同 ,那么我们称字符串 s 是 好 字符串。 输入:s "abacbc" 输出:t…...
专家混合(MoE)大语言模型:免费的嵌入模型新宠
专家混合(MoE)大语言模型:免费的嵌入模型新宠 今天,我们深入探讨一种备受瞩目的架构——专家混合(Mixture-of-Experts,MoE)大语言模型,它在嵌入模型领域展现出了独特的魅力。 一、M…...
CSS3 框大小
CSS3 框大小 CSS3 是网页设计和开发中不可或缺的一部分,它为开发者提供了更多样化、更灵活的样式和布局选择。在 CSS3 中,框大小(Box Sizing)是一个重要的概念,它决定了元素内容的宽度和高度以及元素整体的大小。本文将详细介绍 CSS3 框大小的概念、用法以及最佳实践。 …...
Vue动态控制disabled属性
参考:https://blog.csdn.net/guhanfengdu/article/details/126082781 在Vue中disabled:的值是受布尔值影响的,false为关闭禁用,true为开启禁用效果。 结果就是true会让按钮禁用 相反false会让按钮重新可以使用 那如果想要通过id属性值来判断是否禁用…...
Python入门教程 —— 列表
1.列表的基本使用 列表的介绍 前面学习的字符串可以用来存储一串信息,那么想一想,怎样存储咱们班所有同学的名字呢? 定义100个变量,每个变量存放一个学生的姓名可行吗?有更好的办法吗? 列表 列表的格式 定义列的格式:[元素1, 元素2, 元素3, ..., 元素n] 变量tmp的类型…...
CSS2笔记
一、CSS基础 1.CSS简介 2.CSS的编写位置 2.1 行内样式 2.2 内部样式 2.3 外部样式 3.样式表的优先级 4.CSS语法规范 5.CSS代码风格 二、CSS选择器 1.CSS基本选择器 通配选择器元素选择器类选择器id选择器 1.1 通配选择器 1.2 元素选择器 1.3 类选择器 1.4 ID选择器 1.5 基…...
对一个双向链表,从尾部遍历找到第一个值为x的点,将node p插入这个点之前,如果找不到,则插在末尾。使用C语言实现
以下是一个用C语言实现的双向链表(Doubly Linked List)插入操作的代码。该代码从尾部遍历找到第一个值为x的节点,并在其前插入新节点p,或者在未找到时将其插入链表末尾。 #include <stdio.h> #include <stdlib.h>// 定…...
C语言string函数库补充之strstr
这次讲解一个函数strstr 它的功能是在一个字符串(称为“主字符串”)中查找另一个字符串(称为“子字符串”)的第一个出现位置。如果找到了子字符串,strstr 函数会返回一个指向子字符串在主字符串中首次出现位置的指针&…...
SpringBoot整合Mapstruct转换器使用教程(提供Gitee源码)
前言:MapStruct 主要是为了简化 Java 应用程序中不同对象之间(特别是 DTO(Data Transfer Object)、VO(Value Object)、BO(Business Object)和数据库实体类等)数据转换的过程。 目录 一、什么是Mapstruct 二、导入Maven依赖 三、创建数据模型 四、创建Mapper接口 …...
vue cli更新遇到的问题(vue -V查询版本号不变的问题)
1.镜像地址选择 npm会去默认的registry远程仓库中下载指定内容 该过程可能十分缓慢 因此我们可以切换默认仓库为镜像地址 npm config set registry https://registry.npmmirror.com 通过该指令可以从最新的镜像地址下载指定内容(镜像地址可能会有变 有变请重新查询) 2.下载 …...
CSP初赛知识学习计划
CSP初赛知识学习计划 学习目标 在20天内系统掌握CSP初赛所需的计算机基础知识、编程概念、数据结构、算法等内容,为初赛取得优异成绩奠定坚实基础。 资料收集 整理的CSP知识点文档。相关教材,如《信息学奥赛一本通》等。在线编程学习平台,…...
Python 中常见的数据结构之二推导式
Python 中常见的数据结构之二推导式 使用推异式列表推导式字典推导式集合推导式 使用推异式 推导式是一种从已存在的序列中快速构建列表(list)、集合(set) 和 字典(dictionary)方式。Python 支持 3 种不同类型的推导式: 列表推导式;字典推导式…...
java.lang.Error: FFmpegKit failed to start on brand:
如果你使用FFmpegKit的时候遇到了这个问题: java.lang.Error: FFmpegKit failed to start on brand: Xiaomi, model: MI 8, device: dipper, api level: 29, abis: arm64-v8a armeabi-v7a armeabi, 32bit abis: armeabi-v7a armeabi, 64bit abis: arm64-v8a.at c…...
Gateway服务网关
一、初识Gateway服务网关 1.为什么需要网关? 在微服务中,各个模块之间的调用,也可以称其为远程调用!但是,如果是外部(用户)对微服务进行访问时,发的请求能不加处理的直接访问微服务…...
windows终端conda activate命令行不显示环境名
问题: 始终不显示环境名 解决 首先需要配置conda的环境变量 确保conda --version能显示版本 然后对cmd进行初始化,如果用的是vscode中的终端,那需要对powershell进行初始化 Windows CMD conda init cmd.exeWindows PowerShell conda …...
【网络】ARP表、MAC表、路由表
ARP表 网络设备存储IP-MAC映射关系的表,便于快速查找和转发数据包 ARP协议工作原理 ARP(Address Resolution Protocol),地址解析协议,能够将网络层的IP地址解析为数据链路层的MAC地址。 1.主机在自己的ARP缓冲区中建立…...
5.1 冒泡排序与选择排序
5.1 冒泡排序与选择排序 在计算机科学中,排序算法是最基础且最常用的算法之一。在这个部分,我们将探讨两种基础的排序算法:冒泡排序和选择排序。 冒泡排序 冒泡排序是一种简单的排序算法。它的基本思想是通过重复地遍历需要排序的序列&…...
vip与haproxy构建nginx高可用集群传递客户端真实ip
问题 系统使用了vip与haproxy实现高可用以及对nginx进行负载均衡,但是发现在上游的应用服务无法拿到客户端的请求ip地址,拿到的是主haproxy机器的ip,以下是nginx与haproxy的缩减配置: location ~* ^/(xx|xx) {proxy_pass http:/…...
049_小驰私房菜_MTK Camera debug,通过adb 命令读写Camera sensor寄存器地址的值
一、读取/写入 某个寄存器地址的值 设备先adb root 1)读取寄存器地址的值 /proc/driver # echo "0x0a34" > camsensor && dmesg |grep -i a34 2)往寄存器地址写值 /proc/driver # echo "0x3304 0x66” > camsensor && dmesg |grep -…...
《深入浅出HTTPS》读书笔记(24):椭圆曲线密码学
《深入浅出HTTPS》读书笔记(24):椭圆曲线密码学 为了保证DH的密钥对不被破解,提升安全性的主要手段就是增加密钥对的长度,但是长度越长,性能越低。 为了解决性能问题,需要…...
MIPI_DPU 综合(DPU+MIPI+Demosaic+VDMA 通路)
目录 1. 简介 2. 创建 Platform 2.1 Block Design 2.1.1 DPU PFM Lite 2.1.2 DPU prj 2.1.3 DPU MIPI Platform 2.2 pin 约束 2.2.1 GPIO 约束 2.2.2 IIC 约束 2.1.3 DPHY 约束 3. 报错总结 3.1 AXI_M 必须顺序引用 3.2 DPU 地址分配错误 4. Design Example 4.…...
开源模型应用落地-qwen2-7b-instruct-LoRA微调-Axolotl-单机多卡-RTX 4090双卡(七)
一、前言 本篇文章将使用Axolotl去高效微调QWen2系列模型,通过阅读本文,您将能够更好地掌握这些关键技术,理解其中的关键技术要点,并应用于自己的项目中。 二、术语介绍 2.1. LoRA微调 LoRA (Low-Rank Adaptation) 用于微调大型语言模型 (LLM)。 是一种有效的自适应策略,…...
电商项目-基于ElasticSearch实现商品搜索功能(一)
一、根据关键字查询商品 (1) shangcheng_service_search项目创建SearchService接口 public interface SearchService { /*** 全文检索* param paramMap 查询参数* return*/public Map search(Map<String, String> paramMap) throws Exception; }(2) shangcheng_serv…...