React + Umi(Umijs/Max) 搭建项目及配置
文章标题
- 01 环境准备
- 02 快速构建
- 2.1 参数选项
- 2.2 umi@x 还是 @umijs/max
- 2.3 使用 pnpm (推荐)
- 2.4 使用 npm 和 yarn
- 2.5 启动项目
- 2.6 启用 Prettier(可选)
- 2.7 打包部署发布
- 03 Tailwind CSS 插件(可选)
- 3.1 安装配置
- 3.2 可能遇到的问题
- 04 React 中的 classnames
- 4.1 安装
- 4.2 使用
- 参考示例如下
- 在React中使用
01 环境准备
首先得有 node
,并确保 node 版本是 18 或以上。
- windows 下推荐用 nvm 来管理 node 版本(nvm中文文档)
- mac 下推荐使用 n 来管理 node 版本(npm-n 官方文档)
安装 node 👇
# windows: nvm 操作
$ nvm install 18.20.0
$ nvm use 18.20.0
$ node -v
v18.20.0# mac: n 操作
$ sudo n 18.20.0
$ node -v
v18.20.0
还需要包管理工具,node 默认包含 npm
,但也可以选择其他方案,如:pnpm
、yarn
此处选择安装 pnpm👇
# 方式1: 一个普通版本,它需要Node.js来运行。
npm install -g pnpm# 方式2: 与Node.js一起打包成一个可执行文件,所以它可以在没有安装Node.js的系统上使用。
npm install -g @pnpm/exe
02 快速构建
2.1 参数选项
使用 create-umi 创建项目时,可用的参数如下:
option(可选参数) | 描述 |
---|---|
–no-git | 创建项目,但不初始化 Git |
–no-install | 创建项目,但不自动安装依赖 |
2.2 umi@x 还是 @umijs/max
使用 create-umi 选择 Ant Design Pro
模板,就能使用 @umijs/max
来创建项目了
$ npx create-umi@latest
? Pick Umi App Template › - Use arrow-keys. Return to submit.Simple App
❯ Ant Design ProVue Simple App
在 Umi Max 项目中命令行请使用 max{:bash}
,而不是原来的 umi{:bash}
,示例如下 👇
$ npx max g jest
历史项目升级:如果使用了 @umijs/max
可以使用 max
命令来替换 umi
,如 max dev,max build 等。而 umi@4
将一些项目前置操作放到了 setup
命令中,如 umi@3
中的 umi g tmp
等命令,需要使用 umi setup
替换,示例如下 👇
// package.json
{"scripts": {
- "build": "umi build",
+ "build": "max build",
- "postinstall": "umi g tmp",
+ "postinstall": "max setup",
- "start": "umi dev",
+ "start": "max dev",}
}
详细升级步骤参考 升级到 Umi 介绍
2.3 使用 pnpm (推荐)
国内建议选 pnpm + taobao 源,速度提升明显。这一步会自动安装依赖,同时安装成功后会自动执行 umi setup
做一些文件预处理等工作。
$ pnpm dlx create-umi@latest
✔ Install the following package: create-umi? (Y/n) · true
┌ create-umi
│
○ What's the target folder name?
│ my-app
│
○ Pick Umi App Template
│ ● Simple App
│ ○ Ant Design Pro
│ ○ Vue Simple App
│ ○ Umi Plugin
│
○ Pick Npm Client
│ ○ npm
│ ○ cnpm
│ ○ tnpm
│ ○ yarn
│ ● pnpm (recommended)
│
○ Pick Npm Registry
│ ○ npm
│ ● taobao
│
└ You're all set!...Done in 1m 45.8s using pnpm v10.10.0
2.4 使用 npm 和 yarn
# npm
$ npx create-umi@latest
Need to install the following packages:create-umi@latest
Ok to proceed? (y) y
...# yarn
yarn create umi
success Installed "create-umi@4.0.6" with binaries:- create-umi
...
2.5 启动项目
执行 pnpm dev
命令,在浏览器里打开 http://localhost:8000/
,就能看到项目界面
$ pnpm dev
...╔════════════════════════════════════════════════════╗║ App listening at: ║║ > Local: http://localhost:8000 ║
ready - ║ > Network: http://192.168.11.188:8000 ║║ ║║ Now you can open browser with the above addresses↑ ║╚════════════════════════════════════════════════════╝
...
2.6 启用 Prettier(可选)
如果需要用 prettier
做项目代码的自动格式化,执行 pnpm umi g
命令
$ pnpm umi g
✔ Pick generator type › Enable Prettier -- Enable Prettier
info - Write package.json
info - Write .prettierrc
info - Write .prettierignore
info - Install dependencies with pnpm
2.7 打包部署发布
执行 pnpm build
命令
$ pnpm build
event - compiled successfully in 1179 ms (567 modules)
event - build index.html
打包文件默认会生成到 ./dist
目录下
./dist
├── index.html
├── umi.css
└── umi.js
完成构建后,就可以把 dist
目录部署到服务器上了。
03 Tailwind CSS 插件(可选)
3.1 安装配置
在 Umi 和 Umi Max 项目使用 Tailwind CSS 功能,使用微生成器一键开启该插件
Umi 项目
$ npx umi g tailwindcss
info - Update package.json for devDependencies
set config:tailwindcss on /project/max-playground/.umirc.ts
info - Update .umirc.ts
info - Write tailwind.config.js
info - Write tailwind.css
Umi Max 项目
$ npx max g tailwindcss
info - Update package.json for devDependencies
set config:tailwindcss on /project/max-playground/.umirc.ts
info - Update .umirc.ts
info - Write tailwind.config.js
info - Write tailwind.css
至此就可以在项目中使用 Tailwind CSS 的样式,并且可以在项目根目录的 tailwind.config.js
和 tailwind.css
根据需要修改配置。
注意需要同步插件依赖 👇
$ pnpm i
在项目根目录添加 .env
文件,添加 CHECK_TIMEOUT
变量,用于设置 Tailwind CSS 插件的检查间隔时间。
# Default: 5
CHECK_TIMEOUT=10
3.2 可能遇到的问题
(1)终端报错 Unexpected unknown at-rule “@tailwind” at-rule-no-unknown
问题描述:因为 @umijs/max
项目已经添加 husky,并为项目生成 precommit 配置(即 git commit message 格式校验行为),在每次 git commit
前会将 Git 暂存区的代码默认格式化。 但使用 vscode 用户,在 commit 代码时可能会遇到下面这样的问题:
tailwind.css1:1 ✖ Unexpected unknown at-rule "@tailwind" at-rule-no-unknown2:1 ✖ Unexpected unknown at-rule "@tailwind" at-rule-no-unknown3:1 ✖ Unexpected unknown at-rule "@tailwind" at-rule-no-unknownhusky - pre-commit script failed (code 1)
问题原因:vscode 编辑器可能识别不了 “@tailwind” 导致 pre-commit 没有通过
解决方案1:找到 .husky
下的 pre-commit
文件进行删除
解决方案2:在 commit 时加上 --no-verify
参数绕过检查
git commit -m "xxx" --no-verify
解决方案3: https://github.com/tailwindlabs/tailwindcss/discussions/5258
1.在项目的根目录下创建 .vscode
,并用两个名为 settings.json
、tailwind.json
2.更新 settings.json
和 tailwind.json
文件
// settings.json
{"css.customData": [".vscode/tailwind.json"],// (识别您正在使用的文件类型,例如css)"css.lint.unknownAtRules": "ignore"
}// tailwind.json
{"version": 1.1,"atDirectives": [{"name": "@tailwind","description": "Use the `@tailwind` directive to insert Tailwind's `base`, `components`, `utilities` and `screens` styles into your CSS.","references": [{"name": "Tailwind Documentation","url": "https://tailwindcss.com/docs/functions-and-directives#tailwind"}]},{"name": "@apply","description": "Use the `@apply` directive to inline any existing utility classes into your own custom CSS. This is useful when you find a common utility pattern in your HTML that you’d like to extract to a new component.","references": [{"name": "Tailwind Documentation","url": "https://tailwindcss.com/docs/functions-and-directives#apply"}]},{"name": "@responsive","description": "You can generate responsive variants of your own classes by wrapping their definitions in the `@responsive` directive:\n```css\n@responsive {\n .alert {\n background-color: #E53E3E;\n }\n}\n```\n","references": [{"name": "Tailwind Documentation","url": "https://tailwindcss.com/docs/functions-and-directives#responsive"}]},{"name": "@screen","description": "The `@screen` directive allows you to create media queries that reference your breakpoints by **name** instead of duplicating their values in your own CSS:\n```css\n@screen sm {\n /* ... */\n}\n```\n…gets transformed into this:\n```css\n@media (min-width: 640px) {\n /* ... */\n}\n```\n","references": [{"name": "Tailwind Documentation","url": "https://tailwindcss.com/docs/functions-and-directives#screen"}]},{"name": "@variants","description": "Generate `hover`, `focus`, `active` and other **variants** of your own utilities by wrapping their definitions in the `@variants` directive:\n```css\n@variants hover, focus {\n .btn-brand {\n background-color: #3182CE;\n }\n}\n```\n","references": [{"name": "Tailwind Documentation","url": "https://tailwindcss.com/docs/functions-and-directives#variants"}]}]
}
04 React 中的 classnames
classnames
是一个强大的工具,可以帮助你在 React 项目中更优雅地处理 className。通过它,你可以轻松地根据条件动态生成 className,从而使代码更加简洁和易读。它还支持混合对象、数组和字符串参数,使得支持可选的 className 属性更加简单。通过使用 classnames
,你可以避免手动拼接字符串,从而减少错误并提高代码的可维护性。
4.1 安装
$ npm install classnames
# 或者
$ yarn add classnames
# 或者
$ pnpm i classnames
4.2 使用
参考示例如下
// classNames函数接受任意数量的参数,这些参数可以是字符串或对象
classNames('foo', 'bar'); // => 'foo bar'
classNames('foo', { bar: true }); // => 'foo bar'
classNames({ 'foo-bar': true }); // => 'foo-bar'
classNames({ 'foo-bar': false }); // => ''
classNames({ foo: true }, { bar: true }); // => 'foo bar'
classNames({ foo: true, bar: true }); // => 'foo bar'
classNames('foo', { bar: true, duck: false }, 'baz', { quux: true }); // => 'foo bar baz quux'
classNames(null, false, 'bar', undefined, 0, 1, { baz: null }, ''); // => 'bar 1'
// 数组也可以按照上述规则递归平展:
const arr = ['b', { c: true, d: false }];
classNames('a', arr); // => 'a b c'
在React中使用
import React, { useState } from 'react';
import classNames from 'classnames';export default function Test() {return (<><div className={classNames('foo', 'bar')}>classNames基础使用实例</div><div className={classNames('foo', 'bar')}><span> classNames+TailwindCss 使用实例</span><span className={classNames('title', '!text-red-600')}>单独为特定原子化CSS增加"!"前辍让它生成的原子化CSS添加"!important"后辍来提高样式优先级</span></div> </>
);
}
参考 Umijs官网
相关文章:
React + Umi(Umijs/Max) 搭建项目及配置
文章标题 01 环境准备02 快速构建2.1 参数选项2.2 umix 还是 umijs/max2.3 使用 pnpm (推荐)2.4 使用 npm 和 yarn2.5 启动项目2.6 启用 Prettier(可选)2.7 打包部署发布 03 Tailwind CSS 插件(可选)3.1 安…...
React 第六十四节Router中HashRouter的使用详细介绍及案例分析
前言 HashRouter 是 React Router 提供的一种路由实现方案,它使用 URL 的 hash 部分(# 后面的内容)来实现客户端路由功能。 一、HashRouter 的核心用途 客户端路由:在不刷新页面的情况下管理应用导航兼容性:支持不支…...
Linux RDMA网络配置手册
一、配置前准备工作 在进行 RDMA 网络配置之前,请确保以下准备工作已完成: 硬件环境 确保服务器支持 RDMA 功能,例如支持 InfiniBand 或 RoCE(RDMA over Converged Ethernet)的网卡。确保网络交换设备支持 RDMA 协议…...
sentinel与seata组件在微服务中的基本作用
微服务基础内容: 在微服务中,首先学习了微服务的横向拆分与纵向拆分,纵向拆分指按照功能拆分模块,横向拆分指将高复用的模块单独拆分,使纵向拆分的模块去调用这部分内容。 学习了基本拆分后,需要知道微服…...
Springboot 集成多数据源pgSql+mysql,启动报错
一.错误信息: 2025-06-25 20:25:50.870 ERROR [ai-manage-center,,] --- [ruid-ConnectionPool-Create-1057240219] DruidDataSource : create connection SQLException, url: jdbc:postgresql://10.10.60.227:5432/ai_dify1?sslmodedisable¤tSchemapub…...
南宫28NG相信品牌力量/Vue 3 中的组合式 API(Composition API)进阶实战
南宫28NG相信品牌力量【罔丨止:MGTY.PW】 点击此处复制到浏览器打开 随着 Vue 3 的普及,Composition API 已成为现代 Vue 开发的主流。本节我们将深入掌握组合式 API 的进阶用法,涵盖响应式工具、生命周期钩子封装、自定义逻辑抽离等关键技术…...
实战使用 Docker Compose 搭建 Redis Cluster 集群
文章目录 前言技术积累Docker Compose简介Redis Cluster简介Redis Cluster 解决的问题 实战演示部署环境创建目录编写Redis配置文件编写Docker-Compose.yml执行yml文件,启动容器查看容器状态创建集群验证集群集群数据验证 总结 前言 随着互联网技术的发展ÿ…...
Tauri(2.5.1)+Leptos(0.8.2)开发自用桌面小程序--DeepSeek辅助编程(俄罗斯方块)
在之前工作基础上(Tauri(2.5.1)Leptos(0.8.2)开发自用桌面小程序-CSDN博客),继续进行自用桌面小程序的开发,这次完全使用DeepSeek辅助编程做一个俄罗斯方块游戏,大部分代码由DeepSeek自主完成,Bug扔给DeepS…...
flex布局实例:把色子放进盒子里
目录 一、flex布局实例:把色子放进盒子里 1、基础样式 二、justify-content 属性 三、flex-direction 属性 四、align-items 属性 五、flex-wrap 属性 二、flex布局应用到常见场景 非常详细的讲解flex布局,看一看,练一练! …...
【启发式算法】RRT*算法详细介绍(Python)
📢本篇文章是博主人工智能(AI)领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对相关等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅…...
基于R语言的亚组分析与森林图绘制1
亚组分析是临床研究中的重要分析方法,其核心是通过将研究对象按基线特征(如年龄、性别或吸烟状况等)划分为不同亚组,进而评估干预措施或暴露因素在各亚组中对结局影响的差异性。 在亚组分析中,交互作用(P for interaction)是关键指标,用于判断干预措施或暴露因素与亚组…...
idea, CreateProcess error=206, 文件名或扩展名太长
idea, CreateProcess error206, 文件名或扩展名太长 解决 “CreateProcess error206, 文件名或扩展名太长” 错误 CreateProcess error206 是 Windows 系统特有的错误,表示命令行参数超出了 Windows 的 32767 字符限制。这个问题在 Java 开发中尤其常见,…...
aspose.word在IIS后端DLL中高并发运行,线程安全隔离
aspose.word在IIS后端DLL中运行,加载很慢,如何为全部用户加载,再每个用户访问时在各自线程中直接可以打开WORD文件处理 Aspose.Words 在 IIS 中优化加载性能方案 针对 Aspose.Words 在 IIS 后端 DLL 中加载缓慢的问题,我们可以通过单例模式预加载组件并结合线程安…...
day042-负载均衡与web集群搭建
文章目录 0. 老男孩思想-面试官问:你对加班的看法?1. 负载均衡2. 搭建负载均衡的WordPress集群2.1 负载均衡服务器2.2 配置web服务器2.3 测试 踩坑记录1. /var/cache/nginx权限问题 0. 老男孩思想-面试官问:你对加班的看法? 互联网公司没有不加班的&a…...
DuDuTalk | 武汉赛思云科技有限公司通过武汉市人工智能企业认定!
近日,2025年武汉市人工智能企业名单正式公布!武汉赛思云科技有限公司(以下简称赛思云科技)凭借卓越的技术实力与创新成果,成功入选武汉市人工智能企业。这是对公司长期深耕AI语音智能领域、推动数字化转型的高度认可&a…...
Tita CRM飞书协同版:解锁企业销售与交付管理新效能
数字化转型的破局之道 在数字经济加速发展的今天,传统管理模式正面临前所未有的挑战: • 销售过程缺乏可视化管控手段 • 项目执行存在严重的信息孤岛 • 跨部门协作效率持续低下 • 绩效考核缺乏客观数据支撑 Tita CRM作为专业的智能化管理平台&#x…...
web安全之h2注入系统学习
起初是在N1 Junior 2025 上面碰到一题,考点是h2的sql注入。由于之前没有见过,趁此机会系统学习一番 实验代码 public class H2Inject {public static void main(String[] args) throws Exception{JdbcDataSource dataSource new JdbcDataSource();dataS…...
LVS-DR负载均衡群集深度实践:高性能架构设计与排障指南
目录 一、核心原理与理论 二、背景与架构设计 三、全流程部署步骤 1. NFS共享存储配置(192.168.7.100) 2. Real Server节点配置(四台服务器) 3. Director服务器配置 四、常见问题解决方案 五、生产环境总结 拓扑示意图&am…...
Java如何导出word(根据模板生成),通过word转成pdf,放压缩包
<!-- 导出word文档所需依赖--><dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.10.0-beta</version></dependency><dependency><groupId>org.apache.poi</gr…...
.NET 7.0 EF Core:一、创建Web API 项目基础框架和用户表的增删改查
demo 地址: https://github.com/iotjin/Jh.Admin.NETCore 代码不定时更新,请前往github查看最新代码 .NET 7.0 EF Core:一、创建Web API项目 官方教程序一、项目目录结构各层职责说明1️⃣ Admin.NETCore.API(接口层)2️⃣ Admin.…...
一篇文章了解XML
一、什么是 XML? XML 是一种结构化数据的标记语言,用来存储、传输和描述数据。 它和 HTML 很像,但它的标签是自定义的,不限定格式和外观,而是强调数据的结构和含义。 XML不是用来展示数据的,HTML是用来展…...
Windows下安装zookeeper
有关Linux安装zk的文章可以参考下我之前写的: Zookeeper 3.8.4 安装和参数解析 Windows下的下载和Linux是一样的,都是同一个包,目前zk稳定版是 3.8.4 下载解压后 在根目录下创建 data 文件夹用来存放数据文件 在 conf 文件夹中,…...
计算机网络 网络层:控制平面
在本章中,包含网络层的控制平面组件。控制平面作为一种网络范围的逻辑,不仅控制沿着从源主机到目的主机的端到端路径间的路由器如何转发数据报,而且控制网络层组件和服务如何配置和管理。5.2节,传统的计算图中最低开销路径的路由选…...
探索阿里云智能媒体管理IMM:解锁媒体处理新境界
一、引言:开启智能媒体管理新时代 在数字化浪潮的席卷下,媒体行业正经历着前所未有的变革。从传统媒体到新媒体的转型,从内容生产到传播分发,每一个环节都在寻求更高效、更智能的解决方案。而云计算,作为推动这一变革…...
微信点餐小程序—美食物
本项目是基于WAMP Server 和PHP 动态网页技术构建的微信小程序点餐系统,该系统主要分为前端(微信小程序)和后端(基于PHPMySQL服务器端) 整体架构流程 1、前端部分 用户界面:展示菜品、处理用户点餐操作、…...
Python零基础入门到高手8.5节: 实现选择排序算法
目录 8.5.1 排序算法简介 8.5.2 选择排序算法 8.5.3 好好学习,天天向上 8.5.1 排序算法简介 所谓排序,是指将数据集合中的元素按从小到大的顺序进行排列,或按从大到小的顺序进行排列。前者称为升序排序,后者称为降序排序。在数…...
JavaEE初阶第四期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(二)
专栏:JavaEE初阶起飞计划 个人主页:手握风云 目录 一、Thread类及常用方法 2.1. Thread的常见构造方法 2.2. Thread的常见属性 2.3. 启动一个线程 2.4. 中断一个线程 2.5. 等待一个线程 2.6. 休眠当前线程 一、Thread类及常用方法 2.1. Thread的…...
Metasploit常用命令详解
一、Metasploit 概述 Metasploit是一款开源的渗透测试框架,由 H.D. Moore 于 2003 年首次发布,目前由 rapid7 公司维护。它整合了大量漏洞利用模块、后渗透工具和漏洞扫描功能,已成为网络安全工程师、红队 / 蓝队成员及安全研究人员的核心工…...
2025.6.24总结
今天发生了两件事,这每件事情都足以影响我的工作状态。 1.团队中有人要转岗 这算是最让我有些小震惊的事件了。我不明白,那个同事干得好好的,为啥会转岗,为啥会被调到其他团队。虽然团队有正编,有od,但我自始自终觉得…...
2023年全国青少年信息素养大赛Python 复赛真题——玩石头游戏
今日python每日练习题为——玩石头游戏,大家记得坚持刷题哦,闯入国赛~ 每轮可拿 1-3 块石头,双方均采取最优策略。若石头数 n 为 4 的倍数,无论先手取 k 块(1≤k≤3),后手总能取 4-k 块…...
MySQL之SQL性能优化策略
MySQL之SQL性能优化策略 一、主键优化策略1.1 主键的核心作用1.2 主键设计原则1.3 主键优化实践 二、ORDER BY优化策略2.1 ORDER BY执行原理2.2 ORDER BY优化技巧2.3 处理大结果集排序 三、GROUP BY优化策略3.1 GROUP BY执行原理3.2 GROUP BY优化方法 四、LIMIT优化策略4.1 LIM…...
AI时代工具:AIGC导航——AI工具集合
大家好!AIGC导航是一个汇集多种AIGC工具的平台,提供了丰富的工具和资源。 工具功能: 该平台整合了多样的AIGC工具,涵盖了绘画创作、写作辅助以及视频制作等多个领域。绘画工具能够生成高质量的图像作品;写作工具支持从构思到润色的全流程写…...
性能测试-jmeter实战4
课程:B站大学 记录软件测试-性能测试学习历程、掌握前端性能测试、后端性能测试、服务端性能测试的你才是一个专业的软件测试工程师 性能测试-jmeter实战4 jmeter环境搭建1. 安装Java环境(必需) JMeter环境搭建完整指南1. 安装Java࿰…...
C++字符串的行输入
1、字符串的输入 下面用一个真实的示例来进行演示: #include<iostream> #include<string>int main() {using namespace std;const int ArSize 20;char name[ArSize];char dessert[ArSize];cout << "Enter your name:\n";cin >>…...
【Linux网络与网络编程】15.DNS与ICMP协议
1. DNS 1.1 DNS介绍 TCP/IP 中使用 IP 地址和端口号来确定网络上的一台主机的一个程序,但是 IP 地址不方便记忆,于是人们发明了一种叫主机名的字符串,并使用 hosts 文件来描述主机名和 IP 地址的关系。最初, 通过互连网信息中心(SRI-NIC)来…...
Python训练营-Day40-训练和测试的规范写法
1.单通道图片训练 # import torch # import torch.nn as nn # import torch.optim as optim # from torchvision import datasets, transforms # from torch.utils.data import DataLoader # import matplotlib.pyplot as plt # import numpy as np# # 设置中文字体支持 # plt…...
【Python-Day 29】万物皆对象:详解 Python 类的定义、实例化与 `__init__` 方法
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
内存泄漏和内存溢出的区别
内存泄漏(Memory Leak)和内存溢出(Memory Overflow / Out Of Memory, OOM)是软件开发中两个密切相关但又本质不同的内存问题: 核心区别一句话概括: 内存泄漏: 有垃圾对象占用内存却无法被回收&…...
Linux系统---Nginx配置nginx状态统计
配置Nignx状态统计 1、下载vts模块 https://github.com/vozlt/nginx-module-vts [rootclient ~]# nginx -s stop [rootclient ~]# ls anaconda-ks.cfg nginx-1.27.3 ceph-release-1-1.el7.noarch.rpm nginx-1.27.3.tar.gz info.sh …...
linux操作系统的软件架构分析
一、linux操作系统的层次结构 1.内核的主要功能 1)进程管理 2)内存管理 3)文件系统 4)进程间通信、I/O系统、网络通信协议等 2.系统程序 1)系统接口函数库,比如libc 2)shell程序 3)编译器、编辑…...
快速手搓一个MCP服务指南(三):FastMCP的核心组件-构建MCP服务的关键技术实现
FastMCP 是一套面向 LLM 应用开发的工具框架,通过标准化协议衔接大语言模型与外部功能组件,构建「LLM工具」的闭环交互体系。其核心技术体系包含四大模块:工具系统将 Python 函数转化为 LLM 可调用的能力单元,通过类型注解实现参数…...
创建首个 Spring Boot 登录项目
📌 摘要 在 Java Web 开发中,登录功能是最基础也是最重要的模块之一。本文将手把手带你使用 IntelliJ IDEA 和 Maven 构建一个基于 Spring Boot 的简单登录系统,涵盖: 使用 IDEA 创建 Spring Boot 项目配置 Maven 依赖ÿ…...
order、sort、distribute和cluster by(Spark/Hive)
1. abstract ORDER BY:完整查询结果的全局行排序。与SORT BY、CLUSTER BY、DISTRIBUTE BY互斥,不能同时使用。 示例SELECT * FROM table_name ORDER BY column_name;SORT BY:只在每个分区内排序,局部排序结果不是全局有序。与ORD…...
# Python中等于号的使用
# Python中等于号的使用 ## 1. 问题的分析与思考 在Python中,等于号()是一个赋值运算符,用于将右侧的值或表达式的结果赋给左侧的变量。这是Python(以及许多其他编程语言)中非常基础且核心的一个概念。理…...
无人机神经网络模块运行与技术难点
一、神经网络模块的运行方式 1. 分层处理架构 感知层 多模态数据融合:通过八元数卷积网络(OCNN)统一处理LiDAR、摄像头、IMU等异构传感器数据,将点云坐标(x/y/z)、图像RGB与光流信息编码至8维虚部&#…...
宝塔服务器调优工具 1.1(Opcache优化)
第一步:宝塔服务器调优工具 1.1(按照下面的参数填写) 第二步:路径/www/server/php/80/etc/php.ini 搜索jit jit1235 其中1235根据服务器情况修改 第三步:路径/www/server/php/80/etc/php-cli.ini 搜索 jit1235 其中…...
day041-web集群架构搭建
文章目录 0. 老男孩思想-高薪四板斧1. web集群架构图2. 搭建异地备份服务2.1 服务端-阿里云服务器2.1.1 查看rsync软件包2.1.2 添加rsync配置文件2.1.3 添加虚拟用户2.1.4 创建校验用户密码文件2.1.5 创建备份目录2.1.6 启动服务2.1.7 开放安全组端口2.1.8 发送检查邮件 2.2 客…...
国产化条码类库Spire.Barcode教程:如何使用 C# 读取 PDF 中的条码(两种方法轻松实现)
在 PDF 文档的 .NET 平台处理流程中,使用 C# 读取 PDF 条码 是一项常见需求,特别适用于处理扫描件或电子表单。无论是物流、金融、医疗还是制造行业,PDF 文档中经常包含用于追踪或识别的条码。这些条码可能是嵌入图像,也可能是矢量…...
vue 3 计算器
效果: <template><div class"calculator-container"><div class"calculator"><!-- 显示区域 --><div class"display">{{ formattedDisplay }}</div><!-- 按钮区域 --><div class"…...
CRMEB PHP多门店版v3.2.1系统全开源+Uniapp前端+搭建教程
一.介绍 CRMEB多店版是一款为品牌连锁门店打造的私域电商解决方案,以三大运营模式为核心,助力品牌连锁门店轻松构建全渠道、一体化的私域电商生态,促进“线上电商”与“线下门店”销售运营融合,加速品牌数字化转型,为…...