【鸿蒙】0x02-LiteOS-M基于Qemu RISC-V运行

OpenHarmony LiteOS-M基于Qemu RISC-V运行

  • 系列文章目录
  • 更新日志
  • OpenHarmony技术架构
    • OH技术架构
    • OH支持系统类型
      • 轻量系统(mini system)
      • 小型系统(small system)
      • 标准系统(standard system)
  • 简介
  • 环境准备
    • 安装QEMU
    • 其他
  • 代码
  • 预编译
  • 编译
    • 编译前注意事项
    • 执行编译
    • 编译产物
  • 在Qemu中运行OHOS_Image镜像
    • 不开启gdb调试
    • 开启gdb调试
    • gdb 运行
  • FAQ
    • [OHOS ERROR] ccache: error: Could not find compiler "riscv32-unknown-elf-gcc" in PATH
    • riscv32-unknown-elf-gdb: error while loading shared libraries: libncursesw.so.5: cannot open shared object file: No such file or directory
  • 参考资料


系列文章目录

【鸿蒙】0x00-OpenHarmony-4.1-Release DAYU200 RK3568开发环境总结(长文版)
【鸿蒙】0x01-LiteOS-M基于Qemu Arm Cortex-m55运行
【鸿蒙】0x02-LiteOS-M基于Qemu RISC-V运行


更新日志

日期变更内容
2025-01-17完成OpenHarmony轻量系统基于RISCV编译运行第一版

OpenHarmony技术架构

OH技术架构

OpenHarmony整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的组件。OpenHarmony技术架构如下所示:
在这里插入图片描述

  • 内核层

内核子系统:采用多内核(Linux内核或者LiteOS)设计,支持针对不同资源受限设备选用适合的OS内核。内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。

驱动子系统:驱动框架(HDF)是系统硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。

  • 系统服务层

系统服务层是OpenHarmony的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分:

系统基本能力子系统集:为分布式应用在多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、公共基础库、多模输入、图形、安全、AI等子系统组成。

基础软件服务子系统集:提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX(Design For X) 等子系统组成。

增强软件服务子系统集:提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务、IoT专有业务等子系统组成。

硬件服务子系统集:提供硬件服务,由位置服务、用户IAM、穿戴专有硬件服务、IoT专有硬件服务等子系统组成。

根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。

  • 框架层

框架层为应用开发提供了C/C++/JS等多语言的用户程序框架和Ability框架,适用于JS语言的ArkUI框架,以及各种软硬件服务对外开放的多语言框架API。根据系统的组件化裁剪程度,设备支持的API也会有所不同。

  • 应用层

应用层包括系统应用和第三方非系统应用。应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成。其中,FA有UI界面,提供与用户交互的能力;而PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。基于FA/PA开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验。

OH支持系统类型

轻量系统(mini system)

面向MCU类处理器例如Arm Cortex-M、RISC-V 32位的设备,硬件资源极其有限,支持的设备最小内存为128KiB,可以提供多种轻量级网络协议,轻量级的图形框架,以及丰富的IOT总线读写部件等。可支撑的产品如智能家居领域的连接类模组、传感器设备、穿戴类设备等。

小型系统(small system)

面向应用处理器例如Arm Cortex-A的设备,支持的设备最小内存为1MiB,可以提供更高的安全能力、标准的图形框架、视频编解码的多媒体能力。可支撑的产品如智能家居领域的IP Camera、电子猫眼、路由器以及智慧出行领域的行车记录仪等。

标准系统(standard system)

面向应用处理器例如Arm Cortex-A的设备,支持的设备最小内存为128MiB,可以提供增强的交互能力、3D GPU以及硬件合成能力、更多控件以及动效更丰富的图形能力、完整的应用框架。可支撑的产品如高端的冰箱显示屏。

简介

Qemu RISC-V虚拟化平台验证的OpenHarmony kernel_liteos_m的代码,目录名为riscv32_virt。 RISC-V 虚拟化平台是一个 qemu-system-riscv32 的目标设备,通过它来模拟一个通用的、基于RISC-V架构的单板。

这次模拟的配置是:RISC-V架构,1个CPU,128M内存。

提示: 系统内存硬编码为128MB。

环境准备

安装QEMU

sudo apt install build-essential zlib1g-dev pkg-config libglib2.0-dev  binutils-dev libboost-all-dev autoconf libtool libssl-dev libpixman-1-dev virtualenv flex bison
  • QEMU获取源码
wget https://download.qemu.org/qemu-6.2.0.tar.xz
  • 编译安装QEMU
tar -xf qemu-6.2.0.tar.xz
cd qemu-6.2.0
mkdir build && cd build
../configure --prefix=qemu_installation_path
make -j16等待编译结束, 执行安装命令:
make install
  • 环境变量
    最后将安装路径添加到环境变量中:
vim ~/.bashrc在~/.bashrc最末尾加入:
export PATH=$PATH:qemu_installation_path

其他

repo、python环境、hb命令安装等, 建议参考: 【鸿蒙】0x00-OpenHarmony-4.1-Release DAYU200 RK3568开发环境总结(长文版)

代码

  • 从版本分支获取源码。可获取该版本分支的最新源码,包括版本发布后在该分支的合入
repo init -u https://gitee.com/openharmony/manifest -b OpenHarmony-v5.0.0-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
  • 从版本发布Tag节点获取源码。可获取与版本发布时完全一致的源码。
repo init -u git@gitee.com:openharmony/manifest.git -b refs/tags/OpenHarmony-v5.0.0-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
  • 代码目录
(py3_env) ➜  rv_oh ll
total 76K
drwxrwxr-x   4 bigdark bigdark 4.0K  118 00:02 applications
drwxrwxr-x   6 bigdark bigdark 4.0K  118 00:03 arkcompiler
drwxrwxr-x  26 bigdark bigdark 4.0K  118 00:03 base
drwxrwxr-x  20 bigdark bigdark 4.0K  118 00:03 build
lrwxrwxrwx   1 bigdark bigdark   28  118 00:03 build.py -> build/build_scripts/build.py
lrwxrwxrwx   1 bigdark bigdark   28  118 00:03 build.sh -> build/build_scripts/build.sh
drwxrwxr-x   7 bigdark bigdark 4.0K  118 00:03 commonlibrary
drwxrwxr-x  14 bigdark bigdark 4.0K  118 00:03 developtools
drwxrwxr-x   5 bigdark bigdark 4.0K  118 00:03 device
drwxrwxr-x   6 bigdark bigdark 4.0K  118 00:04 docs
drwxrwxr-x   3 bigdark bigdark 4.0K  118 00:04 domains
drwxrwxr-x   7 bigdark bigdark 4.0K  118 00:04 drivers
drwxrwxr-x  19 bigdark bigdark 4.0K  118 00:05 foundation
drwxrwxr-x   3 bigdark bigdark 4.0K  118 00:05 ide
drwxrwxr-x   4 bigdark bigdark 4.0K  118 00:05 interface
drwxrwxr-x   6 bigdark bigdark 4.0K  118 00:06 kernel
drwxrwxr-x  10 bigdark bigdark 4.0K  118 00:06 napi_generator
drwxrwxr-x   3 bigdark bigdark 4.0K  118 00:06 productdefine
lrwxrwxrwx   1 bigdark bigdark   28  118 00:10 qemu-run -> vendor/ohemu/common/qemu-run
drwxrwxr-x   5 bigdark bigdark 4.0K  118 00:06 test
drwxrwxr-x 116 bigdark bigdark 4.0K  118 00:10 third_party
drwxrwxr-x   5 bigdark bigdark 4.0K  118 00:10 vendor
  • 文件占用空间
(py3_env) ➜  rv_oh du -d1 -h
18G     ./.repo
11G     ./third_party
66M     ./drivers
288K    ./productdefine
669M    ./applications
940M    ./developtools
39M     ./vendor
988K    ./domains
16G     ./prebuilts
12M     ./build
14M     ./commonlibrary
122M    ./interface
445M    ./arkcompiler
1.1G    ./test
2.1G    ./docs
475M    ./base
2.1G    ./foundation
733M    ./device
2.8G    ./kernel
49M     ./napi_generator
2.5M    ./ide
56G

就知道你们喜欢看图片~~
在这里插入图片描述

预编译

下载clang等编译工具链依赖。

bash build/prebuilts_download.sh

效果图:
在这里插入图片描述

编译

编译前注意事项

在开始正式编译之前,建议清空 ~/.ccache 目录, 执行 rm ~/.ccache

  • 开发板: riscv32_virt
  • 内核:liteos_m
  • 产品: qemu_riscv_mini_system_demo

执行编译

  • 在源码所在目录执行
./build.sh --product-name=qemu_riscv_mini_system_demo --device-name=qemu_riscv_mini_system_demo --no-prebuilt-sdk --jobs=4 --ccache
  • 编译过程
[OHOS INFO] [1379/1382] ACTION //build/ohos/packages:packer(//build/lite/toolchain:riscv32-unknown-elf)
[OHOS INFO] [1380/1382] STAMP obj/build/ohos/packages/packer.stamp
[OHOS INFO] [1381/1382] STAMP obj/build/ohos/images/make_images.stamp
[OHOS INFO] [1382/1382] STAMP obj/build/core/gn/images.stamp
[OHOS INFO] end hpm command
[OHOS INFO] The run time for _ninja is 59.1 s
[OHOS INFO] start run hpm command
[OHOS INFO] ccache_dir = /home/bigdark/.ccache, ccache_exec = /usr/bin/ccache
[OHOS INFO] --------------------------------------------
[OHOS INFO] ccache summary:
[OHOS INFO] ccache version: 4.5.1
[OHOS INFO] cache hit (direct): 0
[OHOS INFO] cache hit (preprocessed): 0
[OHOS INFO] cache miss: 1091
[OHOS INFO] hit rate: 0.00% 
[OHOS INFO] miss rate: 100.00% 
[OHOS INFO] Cache size (GB): 8.02 / 100.00 (8.02 %)
[OHOS INFO] ---------------------------------------------
[OHOS INFO] end hpm command
[OHOS INFO] start run hpm command
[OHOS INFO] end hpm command
[OHOS INFO] start run hpm command
[OHOS INFO] unrecognized ninja log format, we need # ninja log v5
[OHOS INFO] 
[OHOS INFO] end hpm command
[OHOS INFO] start run hpm command
[OHOS INFO] c targets overlap rate statistics
[OHOS INFO] subsystem           files NO.       percentage      builds NO.      percentage      overlap rate
[OHOS INFO] ability                   21        1.9%          21        1.9%    1.00
[OHOS INFO] arkui                    218        19.7%        218        19.7%   1.00
[OHOS INFO] bundlemanager             19        1.7%          19        1.7%    1.00
[OHOS INFO] commonlibrary              9        0.8%           9        0.8%    1.00
[OHOS INFO] distributeddatamgr         2        0.2%           2        0.2%    1.00
[OHOS INFO] global                    18        1.6%          18        1.6%    1.00
[OHOS INFO] graphic                   24        2.2%          24        2.2%    1.00
[OHOS INFO] hdf                       84        7.6%          84        7.6%    1.00
[OHOS INFO] hiviewdfx                 12        1.1%          12        1.1%    1.00
[OHOS INFO] kernel                    68        6.2%          68        6.2%    1.00
[OHOS INFO] startup                   26        2.4%          26        2.4%    1.00
[OHOS INFO] systemabilitymgr          15        1.4%          15        1.4%    1.00
[OHOS INFO] thirdparty               554        50.2%        554        50.2%   1.00
[OHOS INFO] 
[OHOS INFO] c overall build overlap rate: 1.00
[OHOS INFO] 
[OHOS INFO] 
[OHOS INFO] end hpm command
[OHOS INFO] qemu_riscv_mini_system_demo build success
[OHOS INFO] Cost Time:  0:01:08
=====build  successful=====
2025-01-18 00:59:40
++++++++++++++++++++++++++++++++++++++++
  • 给你配个图
    在这里插入图片描述

编译产物

构建会产生 OHOS_Image 的镜像文件,在构建完成之后,对应的镜像文件在如下目录:

out/riscv32_virt/qemu_riscv_mini_system_demo
  • 文件目录结构展示
(py3_env) ➜  out tree -L 3            
.
├── hb_args
├── ohos_config.json
├── preloader
│   └── qemu_riscv_mini_system_demo
│       ├── build_config.json
│       ├── build_gnargs.prop
│       ├── build.prop
│       ├── compile_env_allowlist.json
│       ├── compile_standard_whitelist.json
│       ├── exclusion_modules.json
│       ├── features.json
│       ├── mini_system
│       ├── parts_config.json
│       ├── parts.json
│       ├── platforms.build
│       ├── subsystem_config.json
│       ├── syscap.json
│       ├── system
│       └── SystemCapability.json
└── riscv32_virt└── qemu_riscv_mini_system_demo├── all_parts_host.json├── all_parts_info.json├── args.gn├── arkui├── binary_installed_parts.json├── build.1737131970.3223417.log├── build.1737132046.1569324.log├── build.1737132120.5011375.log├── build_configs├── build.log├── build.ninja├── build.ninja.d├── build.trace.gz├── bundlemanager├── config.gni├── config.h├── data├── error.log├── etc├── gen├── global├── hiviewdfx├── kconfig_env.txt├── kconfig_files.txt├── libs├── NOTICE_FILE├── NOTICE_FILES├── obj├── OHOS_Image├── OHOS_Image.asm├── OHOS_Image.bin├── OHOS_Image.map├── OHOS_Image.sym.sorted├── packages├── sorted_action_duration.txt├── src_installed_parts.json├── src_sa_infos_tmp.json├── startup├── system├── test_info├── thirdparty└── toolchain.ninja24 directories, 39 files

在Qemu中运行OHOS_Image镜像

a) 如果没有安装 qemu-system-riscv32 ,安装请参考链接:安装QEMU

不开启gdb调试

b) 运行

开启gdb调试

在代码所在目录下:

cd device/qemu/riscv32_virt
vim liteos_m/config.gni

board_opt_flags 中的

board_opt_flags = []

编译选项board_opt_flags修改为:

board_opt_flags = [ "-g" ]

在这里插入图片描述
保存并退出,在OHOS根目录重新编译:

./build.sh --product-name=qemu_riscv_mini_system_demo --device-name=qemu_riscv_mini_system_demo --no-prebuilt-sdk --jobs=4 --ccache

gdb 运行

在窗口①中输入命令:

./qemu-run -g会卡主在这里

在这里插入图片描述

在另一个窗口②中输入命令:

riscv32-unknown-elf-gdb out/riscv32_virt/qemu_riscv_mini_system_demo/OHOS_Image
(gdb) target remote localhost:1234
(gdb) b main

详细信息
在这里插入图片描述

同时第一控制台可以看到有窗口①处于运行模式:
在这里插入图片描述

FAQ

[OHOS ERROR] ccache: error: Could not find compiler “riscv32-unknown-elf-gcc” in PATH

参考: 安装riscv-gnu-toolchain交叉编译工具链

Compiler install:gcc_riscv32, Note: Downloadable directly

wget https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gztar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~
cd gcc_riscv32

编辑.bashrc文件, 我的是 .zshrc

vim ~/.bashrc

将以下命令拷贝到.bashrc文件的最后一行,保存并退出。

export PATH=~/gcc_riscv32/bin:$PATH

生效环境变量。

source ~/.bashrc

shell命令行中输入如下命令,如果能正确显示编译器版本号,表明编译器安装成功。

riscv32-unknown-elf-gcc -v		

riscv32-unknown-elf-gdb: error while loading shared libraries: libncursesw.so.5: cannot open shared object file: No such file or directory


sudo apt install libncursesw5

参考资料

  1. https://gitee.com/openharmony/manifest/tree/OpenHarmony-v5.0.0-Release/
  2. https://blog.csdn.net/bigdarknote/category_12749198.html
  3. https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-pkg-3861-tool.md

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/3717.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux系统编程】—— 深入理解Linux中的环境变量与程序地址空间

文章目录 环境变量常见的环境变量查看环境变量环境变量的修改与使用环境变量的组织⽅式环境变量的命令通过代码如何获取环境变量环境变量的继承 前言:在Linux系统中,环境变量和程序地址空间是系统管理和进程运行的重要组成部分。本文将详细探讨环境变量的…

深度学习 Pytorch 张量的线性代数运算

pytorch中并未设置单独的矩阵对象类型,因此pytorch中,二维张量就相当于矩阵对象,并且拥有一系列线性代数相关函数和方法。 在实际机器学习和深度学习建模过程中,矩阵或者高维张量都是基本对象类型,而矩阵所涉及到的线…

dl学习笔记:(4)简单神经网络

(1)单层正向回归网络 bx1x2z100-0.2110-0.05101-0.051110.1 接下来我们用代码实现这组线性回归数据 import torch x torch.tensor([[1,0,0],[1,1,0],[1,0,1],[1,1,1]], dtype torch.float32) z torch.tensor([-0.2, -0.05, -0.05, 0.1]) w torch.…

【Unity3D】利用Hinge Joint 2D组件制作绳索效果

目录 一、动态绳索 (可移动根节点) 二、静态绳索 三、利用Skinning Editor(Unity2022.3.15f1正常使用) 四、注意事项 一、动态绳索 (可移动根节点) 动态绳索 DynamicRope空物体 Anchor和whitecircle是相同位置的物体&#xff…

OSPF小实验

引言 在前面的博客中我们学习了ospf的基础理论知识与配置:ospf(2),相信大家对ospf已经有了一定的了解了,那么接下来我们就开始尝试做一个ospf的综合实验吧 实验拓扑 实验需求 r1-3为区域0,r3-r4为区域1&…

蓝桥杯刷题第二天——背包问题

题目描述 有N件物品和一个容量是V的背包。每件物品只能使用一次。第i件物品的体积是Vi价值是Wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式 第一行两个整数,N,V&am…

mono3d汇总

lidar坐标系 lidar坐标系可以简单归纳为标准lidar坐标系和nucense lidar坐标系&#xff0c;参考链接。这个坐标系和车辆的ego坐标系是一致的。 标准lidar坐标系 opendet3d&#xff0c;mmdetection3d和kitt都i使用了该坐标系 up z^ x front| /| /left y <------ 0kitti采…

接口防篡改+防重放攻击

接口防止重放攻击&#xff1a;重放攻击是指攻击者截获了一次有效请求(如交易请求),并在之后的时间里多次发送相同的请求&#xff0c;从而达到欺骗系统的目的。为了防止重放攻击&#xff0c;通常需要在系统中引入一种机制&#xff0c;使得每个请求都有一个唯一的标识符(如时间戳…

流程与管理篇:IPD核心思想与框架

关注作者 IPD是英文&#xff08;Integrated Product Development&#xff09;的写&#xff0c;中文 翻译为“集成产品开发”&#xff0c;它是一套产品开发的模式、理念与方法。 IPD整合了客户需求、市场分析和产品开发&#xff0c;建立了需求和产品之间的联系&#xff0c;开辟…

阿里云通义实验室自然语言处理方向负责人黄非:通义灵码2.0,迈入 Agentic AI

通义灵码是基于阿里巴巴通义大模型研发的AI 智能编码助手&#xff0c;在通义灵码 1.0 时代&#xff0c;我们针对代码的生成、补全和问答&#xff0c;通过高效果、低时延&#xff0c;研发出了国内最受欢迎的编码助手。 在通义灵码 2.0 发布会上&#xff0c;阿里云通义实验室自然…

记录 idea 启动 tomcat 控制台输出乱码问题解决

文章目录 问题现象解决排查过程 1. **检查 idea 编码设置**2. **检查 tomcat 配置**3.检查 idea 配置文件4.在 Help 菜单栏中&#xff0c;修改Custom VM Options完成后保存&#xff0c;并重启 idea 问题现象 运行 tomcat 后&#xff0c;控制台输出乱码 解决排查过程 1. 检查…

微透镜阵列精准全检,白光干涉3D自动量测方案提效70%

广泛应用的微透镜阵列 微透镜是一种常见的微光学元件&#xff0c;通过设计微透镜&#xff0c;可对入射光进行扩散、光束整形、光线均分、光学聚焦、集成成像等调制&#xff0c;进而实现许多传统光学元器件难以实现的特殊功能。 微透镜阵列&#xff08;Microlens Array&#x…

企业级NoSQL数据库Redis

1.浏览器缓存过期机制 1.1 最后修改时间 last-modified 浏览器缓存机制是优化网页加载速度和减少服务器负载的重要手段。以下是关于浏览器缓存过期机制、Last-Modified 和 ETag 的详细讲解&#xff1a; 一、Last-Modified 头部 定义&#xff1a;Last-Modified 表示服务器上资源…

金融项目实战 06|Python实现接口自动化——日志、实名认证和开户接口

目录 一、日志封装及应用&#xff08;理解&#xff09; 二、认证开户接口脚本编写 1、代码编写 1️⃣api目录 2️⃣script目录 2、BeautifulSoup库 1️⃣简介及例子 2️⃣提取html数据工具封装 3、认证开户参数化 一、日志封装及应用&#xff08;理解&#xff09; &…

Redis可视化工具--RedisDesktopManager的安装

需要安装使用&#xff0c;0.9.4以上是要收费的 下载地址&#xff1a;https://github.com/uglide/RedisDesktopManager/releases/download/0.9.3/redis-desktop-manager-0.9.3.817.exe 详情&#xff1a;https://blog.csdn.net/u012688704/article/details/82251338 点击进行安…

基于.Net Core+Vue的文件加密系统

1系统架构图 2 用例图 管理员角色的用例&#xff1a; 文件分享大厅&#xff1a;管理员可以访问文件分享大厅&#xff0c;下载文件。个人信息管理&#xff1a;管理员可以更新自己的个人信息&#xff0c;修改密码。用户管理&#xff1a;管理员负责创建、更新或删除用户账户&…

深入内核讲明白Android Binder【二】

深入内核讲明白Android Binder【二】 前言一、Binder通信内核源码整体思路概述1. 客户端向服务端发送数据流程概述1.1 binder_ref1.2 binder_node1.3 binder_proc1.4 binder_thread 2. 服务端的binder_node是什么时候被创建的呢&#xff1f;2.1 Binder驱动程序为服务创建binder…

Solidity01 Solidity极简入门

一、Solidity 简介 Solidity 是一种用于编写以太坊虚拟机&#xff08;EVM&#xff09;智能合约的编程语言。我认为掌握 Solidity 是参与链上项目的必备技能&#xff1a;区块链项目大部分是开源的&#xff0c;如果你能读懂代码&#xff0c;就可以规避很多亏钱项目。 Solidity …

LLM大语言模型的分类

从架构和功能的角度来看&#xff0c;LLM&#xff08;Large Language Model&#xff0c;大语言模型&#xff09;主要可以分为以下几种类型&#xff1a; **1. 基础语言模型&#xff1a;** * **定义:** 通过在大规模文本数据上进行预训练&#xff0c;学习语言的规律和模式&#…

JavaWeb简单开发

JavaWeb 开发是指基于 Java 技术栈进行 Web 应用开发的过程&#xff0c;主要依赖于 Java EE 或者 Spring 框架来构建服务器端应用。JavaWeb 的技术栈比较广泛&#xff0c;通常包括以下几个部分&#xff1a; 示例&#xff1a;简单的 JavaWeb 应用&#xff08;Spring Boot Thyme…