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

【Spring】Spring的请求处理

欢迎来到啾啾的博客🐱。
记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。
欢迎评论交流,感谢您的阅读😄。

目录

  • 引言
  • HTTP/HTTPS协议
    • Spring Web与Spring Web MVC
    • Spring WebFlux
  • 自定义的TPC/IP协议
  • FTP、SMTP协议

引言

总所周知,服务间通信模式可分为同步、异步和流式通信。
同步通信以HTTP和RPC为主,这两者都是应用层的,属于TCP/IP协议族。
TCP/IP 是一组网络通信协议(Protocol Suite)。 它定义了数据如何在网络中被打包、寻址、传输、路由和接收的规则。
TCP/IP核心分层如下:

层次协议示例
应用层HTTP, HTTPS, FTP, SMTP, DNS, SSH, Telnet, gRPC, MQTT, Kafka
传输层TCP, UDP, SCTP
网际层(网络层)IP (IPv4/IPv6), ICMP, IGMP, ARP, RARP, RIP, OSPF, BGP
链路层以太网 (Ethernet), Wi-Fi (802.11), PPP (Point-to-Point Protocol)

而我的Spring框架专注于应用层的开发,下面,让我们一起看看Spring是如何处理应用层不同类型的协议请求的。

HTTP/HTTPS协议

Spring Web与Spring Web MVC

Spring框架提供Spring Web与SpringMVC模块处理应用层的HTTP/HTTPS协议。

Spring Web是Spring框架中处理Web功能的基础模块,提供HTTP请求处理、响应管理、远程服务集成等底层功能。
SpringWeb处理请求是基于Servlet API的。
Java Servlet规范定义了HttpServlet类,里面包含一系列的doXXX()方法,对应Http的各类型请求方法:Get\Post\Put\Delete\Head\Patch等。
![[Spring Web.png]]

另外还有会话管理、RESTful支持等。

Spring MVC模块全程Spring Web MVC,是基于Spring Web的处理HTTP/HTTPS协议的上层模块。
Spring MVC提供有常用的@RestController注解,这个注解就依赖于Spring Web的@RequestMapping和@ResponseBody。

Spring MVC执行流程如下:
![[【Spring】请求处理.png]]

其中核心组件为前端控制器DispatcherServlet,将 URL 映射到具体的控制器方法的HandlerMapping,将逻辑视图名称解析为实际视图(如 JSP 页面)的ViewResolver,适配不同类型的控制器(如注解式控制器)的HandlerAdapter

PS:在Spring Boot项目中,添加 spring-boot-starter-web 会同时引入 Spring Web 和 Spring MVC 的能力。

Spring WebFlux

Spring框架提供Spring WebFlux模块来支持响应式编程。Spring WebFlux是Spring 5.0引入的,是Spring框架中与Spring MVC并行的一个方案,专门用于构建完全非阻塞、事件驱动的应用程序,能够更好地利用服务器资源,尤其是在高并发、I/O密集型场景下。

要理解 WebFlux,首先要理解响应式编程。它的核心思想是:

  1. 数据流 (Data Streams): 数据被看作是异步发出的事件流。
  2. 非阻塞 (Non-blocking): 操作不会阻塞当前线程。当一个操作(如数据库查询、网络调用)需要等待时,线程会被释放去处理其他任务,而不是空等。当操作完成时,会通过回调或事件通知来继续处理。
  3. 背压 (Backpressure): 消费者可以控制生产者发送数据的速率,防止消费者被过快的数据流淹没。

WebFlux 的关键组件和特性:

  1. Project Reactor: WebFlux 底层依赖于 Project Reactor,这是一个实现了 Reactive Streams 规范的响应式库。Reactor 提供了两种核心的发布者(Publisher)类型:

    • Mono<T>: 代表 0 或 1 个元素的异步序列(例如,获取单个用户信息)。
    • Flux<T>: 代表 0 到 N 个元素的异步序列(例如,获取用户列表,或者一个无限的事件流)。
  2. 两种编程模型:

  • 注解驱动 (Annotation-based)
    非常类似于 Spring MVC。可以使用 @Controller、@RestController 以及 @GetMapping、@PostMapping 等注解。不同的是,控制器方法的参数和返回值通常是 Mono 或 Flux。
@RestController
public class UserController {@GetMapping("/users/{id}")public Mono<User> getUserById(@PathVariable String id) {// 异步获取用户return userService.findById(id);}@GetMapping("/users")public Flux<User> getAllUsers() {// 异步获取所有用户流return userService.findAll();}
}
  • 函数式路由 (Functional Endpoints / RouterFunctions)
    这是一种更轻量级、更函数式的编程模型,请求被路由到处理器函数(HandlerFunction)。
@Configuration
public class UserRoutes {@Beanpublic RouterFunction<ServerResponse> userRoutes(UserHandler handler) {return RouterFunctions.route(GET("/functional/users/{id}"), handler::getUserById).andRoute(GET("/functional/users"), handler::getAllUsers);}
}// UserHandler.java
@Component
public class UserHandler {public Mono<ServerResponse> getUserById(ServerRequest request) {String id = request.pathVariable("id");Mono<User> userMono = userService.findById(id);return ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).body(userMono, User.class);}// ... getAllUsers ...
}
  1. 非阻塞服务器: WebFlux 默认运行在像 Netty 这样的非阻塞 I/O 服务器上。它也可以运行在支持 Servlet 3.1+ 非阻塞 I/O 的传统 Servlet 容器(如 Tomcat, Jetty, Undertow)上,但 Netty 是更自然的选择,因为它本身就是完全异步事件驱动的。

  2. 客户端: Spring WebFlux 还包含一个响应式的 HTTP 客户端 WebClient,用于非阻塞地调用外部服务。

什么时候考虑使用 WebFlux?

  • 需要处理高并发连接的应用,如微服务网关、聊天应用、实时数据仪表盘。
  • I/O 密集型应用,其中大部分时间花在等待网络或磁盘操作。
  • 需要流式处理数据的场景(例如,视频流、Server-Sent Events)。
  • 希望构建一个完全响应式的系统。

需要注意的点:

  • 学习曲线: 响应式编程范式与传统的命令式编程有较大差异,需要一定的学习成本。调试响应式代码也可能更复杂。
  • “传染性”: 为了充分发挥响应式编程的优势,最好整个调用链都是响应式的。如果在一个响应式流中调用了一个阻塞的库,那么整个流的非阻塞优势就会被破坏。
  • 并非银弹: 对于CPU密集型任务或者并发量不高的应用,WebFlux 可能不会带来显著的性能提升,甚至可能因为额外的复杂性而得不偿失。

自定义的TPC/IP协议

一些RPC框架会有自定义的TCP/IP协议,这时请求就不是通过Servlet处理的。
例如传统的gRPC、Apache Dubbo默认使用自定义的Dubbo协议、Thrift等。

它们通常直接在TCP套接字上监听特定端口。它们有自己的网络通信层,负责接收原始的TCP数据包,根据RPC框架定义的协议格式进行解码、反序列化、找到对应的服务和方法、执行调用、序列化结果、编码并通过TCP连接返回给客户端。
这种情况下,通常不需要Servlet容器(如Tomcat),RPC服务可以作为独立的Java应用运行(可能内嵌一个Netty等NIO服务器)。
在这里插入图片描述

这种RPC自定义协议的情况下,RPC框架自己实现了完整的网络通信、协议解析、请求分发、序列化等功能,不依赖于Servlet容器和HTTP协议。
也不需要Spring做处理。

FTP、SMTP协议

Spring框架提供Spring Integration配合Apache Commons VFS可以处理FTP与SMTP,从而传输文件与发送邮件。
当然,使用Spring MVC的MultipartFile也可以处理HTTP请求中的文件上传。但是MultipartFile不支持复杂的文件传输流程(如定时任务、错误重试)。

相关文章:

【Spring】Spring的请求处理

欢迎来到啾啾的博客&#x1f431;。 记录学习点滴。分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 欢迎评论交流&#xff0c;感谢您的阅读&#x1f604;。 目录 引言HTTP/HTTPS协议Spring Web与Spring Web MVCSpring WebFlux 自定义的TPC/IP协议FTP、S…...

现代健康生活养生指南

现代社会中&#xff0c;熬夜加班、久坐不动、饮食不规律成为许多人的生活常态&#xff0c;由此引发的健康问题也日益增多。想要摆脱亚健康&#xff0c;不必依赖中医理念&#xff0c;从以下这些现代科学养生方法入手&#xff0c;就能逐步改善身体状况。​ 饮食上&#xff0c;注…...

使用tensorRT10部署低光照补偿模型

1.低光照补偿模型的简单介绍 作者介绍一种Zero-Reference Deep Curve Estimation (Zero-DCE)的方法用于在没有参考图像的情况下增强低光照图像的效果。 具体来说&#xff0c;它将低光照图像增强问题转化为通过深度网络进行图像特定曲线估计的任务。训练了一个轻量级的深度网络…...

题单:表达式求值1

题目描述 给定一个只包含 “加法” 和 “乘法” 的算术表达式&#xff0c;请你编程计算表达式的值。 输入格式 输入仅有一行&#xff0c;为需要计算的表达式&#xff0c;表达式中只包含数字、加法运算符 和乘法运算符 *&#xff0c;且没有括号。 所有参与运算的数字不超过…...

【ant design】ant-design-vue 4.0实现主题色切换

官网&#xff1a;Ant Design Vue — An enterprise-class UI components based on Ant Design and Vue.js 我图方便&#xff0c;直接在 app.vue 中加入的 <div class"app-content" v-bind:class"appOption.appContentClass"><a-config-provider…...

MinIO深度解析:从入门到实战——对象存储系统全指南

在当今数字化时代&#xff0c;数据存储至关重要。MinIO作为一款高性能的对象存储系统&#xff0c;正逐渐受到广泛关注。它与云原生存储系统相媲美&#xff0c;并且其API与Amazon S3完全兼容。本文将带您快速了解MinIO&#xff0c;并探讨其在实际中的应用场景。 一、关于MinIO …...

(8)python开发经验

文章目录 1 下载python2 pip安装依赖无法访问3 系统支持4 下载python文档5 设置虚拟环境6 编译安装python 更多精彩内容&#x1f449;内容导航 &#x1f448;&#x1f449;Qt开发 &#x1f448;&#x1f449;python开发 &#x1f448; 1 下载python 下载地址尽量不要下载最新版…...

uniapp自动构建pages.json的vite插件

对于 uniapp 来说&#xff0c;配置 pages.json 无疑是最繁琐的事情&#xff0c;具有以下缺点&#xff1a; 冗长&#xff0c;页面很多时 pages 内容会很长难找&#xff0c;有时候因为内容很长&#xff0c;导致页面配置比较难找&#xff0c;而且看起来比较凌乱json弊端&#xff…...

【MySQL进阶】如何在ubuntu下安装MySQL数据库

前言 &#x1f31f;&#x1f31f;本期讲解关于如何在ubuntu环境下安装mysql的详细介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f3…...

解放双手的全自动抠图工具

软件介绍 本文要介绍的这款软件是Teorex PhotoScissors&#xff0c;是一款全自动抠图软件。 第二段&#xff1a;软件便捷性 这款来自国外的软件堪称神器&#xff0c;目前已解锁可无限使用。使用起来特别方便&#xff0c;无需安装&#xff0c;打开即可直接操作&#xff0c;并…...

Python多进程编程执行任务

我的需求如下&#xff1a;现有一批任务&#xff0c;使用进程池执行&#xff0c;每个任务执行耗时不一样&#xff0c;任务并发执行期间&#xff0c;需要每隔一段时间监控任务执行进度 直接贴代码&#xff1a; import multiprocessing import time import random from multiproc…...

【Linux笔记】——Linux线程封装

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;Linux &#x1f339;往期回顾&#x1f339;&#xff1a;【Linux笔记】——Linux线程控制创建、终止与等待|动态库与内核联动 &#x1f516;流水不争&#xff0c;争的是…...

ChatGPT + DeepSeek 联合润色的 Prompt 模板指令合集,用来润色SCI论文太香了!

对于非英语母语的作者来说,写SCI论文的时候经常会碰到语法错误、表达不够专业、结构不清晰以及术语使用不准确等问题。传统的润色方式要么成本高、效率低,修改过程又耗时又费力。虽然AI工具可以帮助我们来润色论文,但单独用ChatGPT或DeepSeek都会存在内容泛泛、专业性不足的…...

【typenum】 9 与常量泛型桥接(generic_const_mappings.rs)

一、源码 该代码提供了常量结构体与库类型的转换。 // THIS IS GENERATED CODE //! Module with some const-generics-friendly definitions, to help bridge the gap //! between those and typenum types. //! //! - It requires the const-generics crate feature to be…...

并发学习之synchronized,JVM内存图,线程基础知识

文章目录 Java内存图内存图区域介绍执行流程 进程和线程概念解释线程的6种状态简述等待队列和同步队列&#xff08;阻塞队列&#xff09;线程之间是独立的 synchronized静态方法非静态方法代码块 知识总结&#xff1a; 方法区存储类信息正在执行的程序叫进程&#xff0c;进程会…...

使用Docker部署Nacos

sudo systemctl start docker sudo systemctl enable docker docker --version 步骤 2: 拉取 Nacos Docker 镜像 拉取 Nacos 镜像&#xff1a; 你可以从 Docker Hub 上拉取官方的 Nacos 镜像&#xff0c;使用以下命令&#xff1a; docker pull nacos/nacos-server 这会从 …...

如何 naive UI n-data-table 改变行移动光标背景色

默认是light 灰&#xff0c;想换个显眼包色&#xff0c;折腾半天&#xff0c;可以了。 无废话上代码&#xff1a; <template><n-data-tablesize"small":columns"columns":data"sortedDataList":bordered"true":row-key"…...

Maven 插件扩展点与自定义生命周期

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

Redis的发布订阅模型是什么,有哪些缺点?

Redis 发布订阅模型概述 Redis 发布订阅&#xff08;Pub/Sub&#xff09;是一种消息广播模式&#xff0c;核心角色包括&#xff1a; 发布者&#xff08;Publisher&#xff09;&#xff1a;向指定频道&#xff08;Channel&#xff09;发送消息。频道&#xff08;Channel&#…...

【EDA软件】【联合Modelsim仿真使用方法】

背景 业界EDA工具仿真功能是必备的&#xff0c;例如Vivado自带仿真工具&#xff0c;且无需联合外部仿真工具&#xff0c;例如MoodelSim。 FUXI工具仿真功能需要联合Modelsim&#xff0c;才能实现仿真功能。 方法一&#xff1a;FUXI联合ModelSim 1 添加testbench文件 新建to…...

C语言_动态内存管理

1. 为什么存在动态内存分配 ? 当前&#xff0c;我们掌握的内存开辟方式有&#xff1a; int val22;// 在栈空间上开辟四个字节 char arr[10]{0};// 在栈空间上开辟10个字节的连续空间而上述的开辟空间的方式有两个特点&#xff1a; 空间开辟大小示固定的数组在申明的时候&am…...

使用Langfuse和RAGAS,搭建高可靠RAG应用

大家好&#xff0c;在人工智能领域&#xff0c;RAG系统融合了检索方法与生成式AI模型&#xff0c;相比纯大语言模型&#xff0c;提升了准确性、减少幻觉且更具可审计性。不过&#xff0c;在实际应用中&#xff0c;当建好RAG系统投入使用时&#xff0c;如何判断接收信息是否正确…...

MySQL 数据库优化:ShardingSphere 原理及实践

在高并发、大数据量的业务场景下,MySQL 作为关系型数据库的核心存储引擎,其性能和扩展性面临严峻挑战。ShardingSphere 作为 Apache 顶级开源项目,提供了分布式数据库解决方案,通过分库分表、读写分离、弹性迁移等能力,帮助开发者实现 MySQL 的水平扩展与性能优化。 本文…...

【Redis】零碎知识点(易忘 / 易错)总结回顾

一、Redis 是一种基于键值对&#xff08;key-value&#xff09;的 NoSQL 数据库 二、Redis 会将所有数据都存放在内存中&#xff0c;所以它的读写性能非常惊人 Redis 还可以将内存的数据利用快照和日志的形式保存到硬盘上&#xff0c;这样在发生类似断电或者机器故障时&#xf…...

谷歌浏览器(Google Chrome)136.0.7103.93便携增强版|Win中文|安装教程

软件下载 【名称】&#xff1a;谷歌浏览器&#xff08;Google Chrome&#xff09;136.0.7103.93 【大小】&#xff1a;170M 【语言】&#xff1a;简体中文 【安装环境】&#xff1a;Win10/Win11 【夸克网盘下载链接】&#xff08;务必手机注册&#xff09;&#xff1a; h…...

【滑动窗口】LeetCode 209题解 | 长度最小的子数组

长度最小的子数组 前言&#xff1a;滑动窗口一、题目链接二、题目三、算法原理解法一&#xff1a;暴力枚举解法二&#xff1a;利用单调性&#xff0c;用滑动窗口解决问题那么怎么用滑动窗口解决问题&#xff1f;分析滑动窗口的时间复杂度 四、编写代码 前言&#xff1a;滑动窗口…...

WebXR教学 07 项目5 贪吃蛇小游戏

WebXR教学 07 项目5 贪吃蛇小游戏 index.html <!DOCTYPE html> <html> <head><title>3D贪吃蛇小游戏</title><style>body { margin: 0; }canvas { display: block; }#score {position: absolute;top: 20px;left: 20px;color: white;font-…...

2.1.3

# Load the data file_path finance数据集.csv data pd.__________(file_path) --- data pd.read_csv(file_path) # 识别数值列用于箱线图 numeric_cols data.select_dtypes(include[float64, int64]).__________ --- numeric_cols data.select_dtypes(include[flo…...

StreamCap v0.0.1 直播录制工具 支持批量录制和直播监控

—————【下 载 地 址】——————— 【​本章下载一】&#xff1a;https://drive.uc.cn/s/2fa520a8880d4 【​本章下载二】&#xff1a;https://pan.xunlei.com/s/VOQDt_3v0DYPxrql5y2zxgO1A1?pwd2kqi# 【百款黑科技】&#xff1a;https://ucnygalh6wle.feishu.cn/wiki/…...

小蜗牛拨号助手用户使用手册

一、软件简介 小蜗牛拨号助手是一款便捷实用的拨号辅助工具&#xff0c;能自动识别剪贴板中的电话号码&#xff0c;支持快速拨号操作。最小化或关闭窗口后&#xff0c;程序将在系统后台运行&#xff0c;还可设置开机自启&#xff0c;方便随时使用&#xff0c;提升拨号效率。 …...

​哈夫曼树(Huffman Tree)

​​1. 基本概念​ 哈夫曼树&#xff08;Huffman Tree&#xff09;&#xff0c;又称最优二叉树&#xff0c;是一种带权路径长度&#xff08;WPL, Weighted Path Length&#xff09;最短的二叉树。它主要用于数据压缩和编码优化&#xff0c;通过为不同权值的节点分配不同长度的…...

布隆过滤器和布谷鸟过滤器

原文链接&#xff1a;布隆过滤器和布谷鸟过滤器 布隆过滤器 介绍 布隆过滤器&#xff08;Bloom Filter&#xff09;是 1970 年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数&#xff0c;检查值是“可能在集合中”还是“绝对不在集合中” 空间效率高&a…...

Vue+Vite学习笔记

Cesium与Vue集成&#xff1a;详解Cesium-Vue项目搭建与运行步骤指南 - 云原生实践 为什么按照这篇↑完成三步会有能打开的网址&#xff0c;不止localhost8080还有用127.0.0.1那个表示的。 用这个构建&#xff0c;出来的是localhost:5173&#xff1f;...

UE 材质基础 第一天

课程&#xff1a;虚幻引擎【UE5】材质宝典【初学者材质基础入门系列】-北冥没有鱼啊_-稍后再看-哔哩哔哩视频 随便记录一些 黑色是0到负无穷&#xff0c;白色是1到无穷 各向异性 有点类似于高光&#xff0c;可以配合切线来使用&#xff0c;R G B 相当于 X Y Z轴&#xff0c;切…...

网络编程中的直接内存与零拷贝

本篇文章会介绍 JDK 与 Linux 网络编程中的直接内存与零拷贝的相关知识&#xff0c;最后还会介绍一下 Linux 系统与 JDK 对网络通信的实现。 1、直接内存 所有的网络通信和应用程序中&#xff08;任何语言&#xff09;&#xff0c;每个 TCP Socket 的内核中都有一个发送缓冲区…...

语音转文字

语音转文字工具大全 1. 网易 网易见外&#xff08;网页&#xff09; 地址&#xff1a;网易见外 - AI智能语音转写听翻平台 特点&#xff1a;完全免费&#xff0c;支持音频转文字&#xff0c;每日上限2小时 有道云笔记&#xff08;安卓&#xff0f;iOS&#xff09; 地址&a…...

软件设计师考试《综合知识》创建型设计模式考点分析

软件设计师考试《综合知识》创建型设计模式考点分析 1. 分值占比与考察趋势&#xff08;75分制&#xff09; 模式名称近5年题量分值占比高频考察点最新趋势抽象工厂模式45.33%产品族创建/跨平台应用结合微服务配置考查(2023)工厂方法模式56.67%单一产品扩展/日志系统与IoC容器…...

【八股战神篇】Java集合高频面试题

专栏简介 八股战神篇专栏是基于各平台共上千篇面经&#xff0c;上万道面试题&#xff0c;进行综合排序提炼出排序前百的高频面试题&#xff0c;并对这些高频八股进行关联分析&#xff0c;将每个高频面试题可能进行延伸的题目再次进行排序选出高频延伸八股题。面试官都是以点破…...

STM32F103定时器1每毫秒中断一次

定时器溢出中断&#xff0c;在程序设计中经常用到。在使用TIM1和TIM8溢出中断时&#xff0c;需要注意“TIM_TimeBaseStructure.TIM_RepetitionCounter0;”&#xff0c;它表示溢出一次&#xff0c;并可以设置中断标志位。 TIM1_Interrupt_Initializtion(1000,72); //当arr1…...

BC 范式与 4NF

接下来我们详细解释 BC 范式&#xff08;Boyce-Codd范式&#xff0c;简称 BCNF&#xff09;&#xff0c;并通过具体例子说明其定义和应用。 一、BC范式的定义 BC范式&#xff08;Boyce-Codd范式&#xff0c;BCNF&#xff09;是数据库规范化理论中的一种范式&#xff0c;它比第…...

Data whale LLM universe

使用LLM API开发应用 基本概念 Prompt Prompt 最初指的是自然语言处理研究人员为下游任务设计的一种任务专属的输入模板。 Temperature 使用Temperature参数控制LLM生成结果的随机性和创造性&#xff0c;一般取值设置在0~1之间&#xff0c;当取值接近1的时候预测的随机性较…...

数据结构第七章(四)-B树和B+树

数据结构第七章&#xff08;四&#xff09; B树和B树一、B树1.B树2.B树的高度 二、B树的插入删除1.插入2.删除 三、B树1.B树2.B树的查找3.B树和B树的区别 总结 B树和B树 还记得我们的二叉排序树BST吗&#xff1f;比如就是下面这个&#xff1a; 结构体也就关键字和左右指针&…...

如何利用 Python 获取京东商品 SKU 信息接口详细说明

在电商领域&#xff0c;SKU&#xff08;Stock Keeping Unit&#xff0c;库存进出计量的基本单元&#xff09;信息是商品管理的核心数据之一。它不仅包含了商品的规格、价格、库存等关键信息&#xff0c;还直接影响到库存管理、价格策略和市场分析等多个方面。京东作为国内知名的…...

【机器学习】第二章模型的评估与选择

A.关键概念 2.1 经验误差和过拟合 经验误差与泛化误差&#xff1a;学习器在训练集上的误差为经验误差&#xff0c;在新样本上的误差为泛化误差 过拟合&#xff1a;学习器训练过度后&#xff0c;把训练样本自身的一些特点当作所有潜在样本具有一般性质&#xff0c;使得泛化性能…...

[PMIC]PMIC重要知识点总结

PMIC重要知识点总结 摘要&#xff1a;PMIC (Power Management Integrated Circuit) 是现代电子设备中至关重要的组件&#xff0c;负责电源管理&#xff0c;包括电压调节、电源转换、电池管理和功耗优化等。PMIC 中的数字部分主要涉及控制逻辑、状态机、寄存器配置、通信接口&am…...

LVGL- Calendar 日历控件

1 日历控件 1.1 日历背景 lv_calendar 是 LVGL&#xff08;Light and Versatile Graphics Library&#xff09;提供的标准 GUI 控件之一&#xff0c;用于显示日历视图。它支持用户查看某年某月的完整日历&#xff0c;还可以实现点击日期、标记日期、导航月份等操作。这个控件…...

ubuntu安装google chrome

更新系统 sudo apt update安装依赖 sudo apt install curl software-properties-common apt-transport-https ca-certificates -y导入 GPG key curl -fSsL https://dl.google.com/linux/linux_signing_key.pub | gpg --dearmor | sudo tee /usr/share/keyrings/google-chrom…...

如何开发专业小模型

在专业领域场景下&#xff0c;通过针对性优化大模型的词汇表、分词器和模型结构&#xff0c;确实可以实现参数规模的显著缩减而不损失专业能力。这种优化思路与嵌入式设备的字库剪裁有相似性&#xff0c;但需要结合大模型的特性进行系统性设计。以下从技术可行性、实现方法和潜…...

EXO 可以将 Mac M4 和 Mac Air 连接起来,并通过 Ollama 运行 DeepSeek 模型

EXO 可以将 Mac M4 和 Mac Air 连接起来&#xff0c;并通过 Ollama 运行 DeepSeek 模型。以下是具体实现方法&#xff1a; 1. EXO 的分布式计算能力 EXO 是一个支持 分布式 AI 计算 的开源框架&#xff0c;能够将多台 Mac 设备&#xff08;如 M4 和 Mac Air&#xff09;组合成…...

Git Worktree 使用

新入职了一家公司&#xff0c;发现不同项目用的使用一个 git 仓库管理。不久之后我看到这篇文章。 Git 的设计部​​分是为了支持实验。一旦你确定你的工作被安全地跟踪&#xff0c;并且存在安全的状态&#xff0c;以便在出现严重错误时可以恢复&#xff0c;你就不会害怕尝试新…...