@JsonView + 单一 DTO:如何实现多场景 JSON 字段动态渲染
@JsonView + 单一 DTO:如何实现多场景 JSON 字段动态渲染
- @JsonView + 单一 DTO:如何实现多场景 JSON 字段动态渲染
- 1、@JsonView 注解产生的背景
- 2、为了满足不同场景下返回对应的属性的做法有哪些?
- 2.1 最快速的实现则是针对不同场景新建不同的 DTO 对象
- 2.2 使用 @JsonView 注解实现不同DTO对象的返回
- 2.2.1 定义同一个 DTO 对象
- 2.2.2 区分不同的响应视图
- 2.2.3 Controller 层的调用
- 2.2.4 简要信息 视图 DTO
- 2.2.5 详情信息 视图 DTO
- 2.3 问题已解决(引入原理实现篇)
- 3、Debug调试篇
- 3.1 SpringMvc 切入点 对应的核心代码片段
- 3.2 字段属性序列化核心逻辑
- 3.3 多种 DTO 视图 Demo 验证
- 3.3.1 ObjectMapper 配置视图 View
- 3.3.2 ObjectWriter 配置视图 View
- 3.4 小结
- 4、扩展点
- 4.1 ResponseBodyAdvice接口
- 4.2 RequestBodyAdvice接口
@JsonView + 单一 DTO:如何实现多场景 JSON 字段动态渲染
1、@JsonView 注解产生的背景
@JsonView 是 Jackson 库提供的一个注解,用于控制 Java 对象序列化为 JSON 时的字段可见性。通过定义不同的“视图”(View),可以灵活地决定哪些字段在特定场景下被序列化,从而避免为不同接口编写多个相似的 DTO 类。
2、为了满足不同场景下返回对应的属性的做法有哪些?
2.1 最快速的实现则是针对不同场景新建不同的 DTO 对象
细心的童鞋可以发现:虽然是不同的 DTO,但是存在共同的属性,而且比如后面再来一个需求,这个接口仅返回基本信息的字段(外加一个手机号字段),那么我们是不是还需要创建一个新的 DTO 对象呢?如果针对每一个接口返回都定义一个 DTO 对象的话,对于后端代码的维护也是相当的冗余操作,鉴于这种需求,有没有一种对应后端的 其他 解决方案呢?答案是有的。即就是(@JsonView注解)。
2.2 使用 @JsonView 注解实现不同DTO对象的返回
2.2.1 定义同一个 DTO 对象
/*** @Description 用户DTO* @Author Mr.Gao* @Date 2025/4/16 23:43*/
@Getter
@Setter
public class User {/*** 用户姓名*/@JsonView(SimpleInfoView.class)private String username;/*** 用户年龄*/@JsonView(SimpleInfoView.class)private Integer age;/*** 用户性别*/@JsonView(SimpleInfoView.class)private String sex;/*** =================以下信息为用户敏感信息不能给用户返回================*//*** 手机号码*/@JsonView(SensitiveInfoView.class)private String mobileNo;/*** 登录密码*/@JsonView(SensitiveInfoView.class)private String loginPwd;/*** 支付密码*/@JsonView(SensitiveInfoView.class)private String payPwd;
}
2.2.2 区分不同的响应视图
/*** @Description 简单视图展示View信息* @Author Mr.Gao*/
public interface SimpleInfoView {
}------ 视图与视图之间是可以继承的,那么也就实现既包含基础信息字段又包含需要的字段,进而实现不同DTO的返回 ---
/*** @Description 敏感信息* @Author Mr.Gao*/
public interface SensitiveInfoView extends SimpleInfoView {
}
2.2.3 Controller 层的调用
/*** @Description 用户控制层* @Author Mr.Gao* @Date 2025/4/16 23:50*/
@RestController
public class UserController {/*** 模拟从数据库获取用户信息** @return*/public static User getUserInfoFromDB() {User user = new User();user.setUsername("Mr.Gao");user.setAge(18);user.setSex("男");user.setMobileNo("12345678901");user.setLoginPwd("123456");user.setPayPwd("123456");return user;}/*** 获取用户简要信息** @return*/@JsonView(SimpleInfoView.class) // 返回简要信息的视图DTO@GetMapping("/user/getUserSimpleInfo")public User getUserSimpleInfo() {return getUserInfoFromDB();}/*** 获取用户详细信息** @return*/@JsonView(SensitiveInfoView.class)// 返回详情信息的视图DTO@GetMapping("/user/getUserDetailInfo")public User getUserDetailInfo() {return getUserInfoFromDB();}}
2.2.4 简要信息 视图 DTO
2.2.5 详情信息 视图 DTO
2.3 问题已解决(引入原理实现篇)
经过上述代码案例操作,确实是可以解决我们后端程序猿的新建多个 DTO 对象的冗余问题,童鞋们可以都试试,但是出于好奇,为了什么在 一个实体对象 DTO 和 controller 层的方法 增加 @JsonView 注解之后就能实现不同视图的效果呢?其中究竟是使用了什么魔法呢?接下来我们继续进入 Debug 调试篇,继续 gank 它。
3、Debug调试篇
3.1 SpringMvc 切入点 对应的核心代码片段
3.2 字段属性序列化核心逻辑
经过上述分析可得,设置视图的核心代码为 objectMapper.writerWithView(serializationView) ,然后调用 objectMapper.writeValueAsString 方法是否可以实现不同视图的 DTO 输出呢?
3.3 多种 DTO 视图 Demo 验证
3.3.1 ObjectMapper 配置视图 View
@Test
public void testJsonViewAnnotationConvertMutiDTOByObjectMapper() throws JsonProcessingException {User user = UserController.getUserInfoFromDB();// @1: 设置序列化视图为SimpleInfoView(输出简要信息)objectMapper.setConfig(objectMapper.getSerializationConfig().withView(SimpleInfoView.class));// @2: 设置序列化视图为SensitiveInfoView(输出详细信息)//objectMapper.setConfig(objectMapper.getSerializationConfig()// .withView(SensitiveInfoView.class));System.out.println("采用Object序列化视图:" + objectMapper.getSerializationConfig().getActiveView());String JsonResult = objectMapper.writeValueAsString(user);System.out.println(JsonResult);
}
3.3.2 ObjectWriter 配置视图 View
@Test
public void testJsonViewAnnotationConvertMutiDTOByObjectWriter() throws JsonProcessingException {User user = UserController.getUserInfoFromDB();// @1: 设置序列化视图为SimpleInfoView(输出简要信息)//ObjectWriter objectWriter = objectMapper.writerWithView(SimpleInfoView.class);// @2: 设置序列化视图为SensitiveInfoView(输出详细信息)ObjectWriter objectWriter = objectMapper.writerWithView(SensitiveInfoView.class);System.out.println("ObjectWriter中的序列化视图为: " + objectWriter.getConfig().getActiveView());String JsonResult = objectWriter.writeValueAsString(user);System.out.println(JsonResult);
}
3.4 小结
最后,我本地的项目 SpringBoot 版本是 2.6.13,而我的 Pom 文件依赖中仅仅引入了spring-boot-starter-web,我可以确定的是没有引入任何 jackson 包的依赖的,而@JsonView 注解是 jackson 包下的注解,那么只有一种可能,那就是对应的 springboot 的 web 依赖集成了对应 jackson 相关 jar 包,出于好奇的我还是点开了 spring-boot-starter-web 依赖,结果发现确实是这样。
4、扩展点
4.1 ResponseBodyAdvice接口
对响应的内容可以进行二次包装处理,例如对响应参数内容统一进行签名、加密等逻辑处理。
4.2 RequestBodyAdvice接口
用来对请求的内容进行请求参数重写处理,例如对接收到请求参数统一进行验签、解密等逻辑处理。
综上所述,相信我们已经掌握了 如何通过一个 DTO 对象来渲染不同需求场景下的 DTO 对象,不过存在唯一的缺点,经过 Debug 调试篇我们可以发现,只有在 序列化的时候才会过滤对应的字段,那么如果一个 DTO 对象的属性太多,根据类的单一设计原则还是建议使用新建新的 DTO 对象来完成。所以我觉得可以视情况而定,想要代码的逻辑清晰一些就新建 DTO 实体,想要减少的代码的编码量(即减少 DTO 实体对象)那么就用@JsonView注解实现。
相关文章:
@JsonView + 单一 DTO:如何实现多场景 JSON 字段动态渲染
JsonView 单一 DTO:如何实现多场景 JSON 字段动态渲染 JsonView 单一 DTO:如何实现多场景 JSON 字段动态渲染1、JsonView 注解产生的背景2、为了满足不同场景下返回对应的属性的做法有哪些?2.1 最快速的实现则是针对不同场景新建不同的 DTO…...
《深入探秘JavaScript原型链与继承机制:解锁前端编程的核心密码》
在JavaScript的奇妙世界里,原型链与继承机制犹如隐藏的宝藏,掌握它们,就如同拿到了开启高效编程大门的钥匙。对于前端开发者来说,这不仅是写出简洁、可维护代码的关键,更是深入理解JavaScript面向对象编程的基石。今天…...
Cursor 生成java测试用例
1. 安装cursor 站点:https://www.cursor.com/cn 安装后登录 2. 使用cursor 2.1 安装扩展: 组合键 CtrlShiftX,进入扩展程序页面,安装如下: Chinese:中文支持, 安装后 CtrlShiftP࿰…...
常见免杀框架的使用(3款)---【AniYaGUI1.2.0、AV_Evasion_Tool掩日、FoxBypass_V1.0】
一、AniYaGUI1.2.0免杀框架 环境:虚拟机Win10 、云服务器 工具:Xshell、CobaltStrike 项目下载地址: https://github.com/piiperxyz/AniYa 1. 安装Go语言环境 确保Win10虚拟机安装 Golang 且环境变量中包含 go 否则⽆法编译(注…...
PHP腾讯云人脸核身生成 SDK 接口调用步骤使用签名
参考腾讯云官方文档: 人脸核身 生成 SDK 接口调用步骤使用签名_腾讯云 前提条件:成功获取NonceTicket。 获取参考文档: PHP腾讯云人脸核身获取NONCE ticket-CSDN博客 function getTxFaceSign(){$appId ;$userId ;$version 1.0.0;$tic…...
LINUX418 加载YUM源 wireshark ping程序 解析
未找到挂载点 未连接 怪不得找不到 计划重启 sr0文件有了 挂载 删除 新建、修改配置文件 清空yum缓存 创建yum缓存 1.检查相关设置:虚拟机两个打钩 2.df -h查看光盘文件 3.挂载在/mnt mount -o ro /dev/sr0 /mnt 4.删除/etc/yum.repos.d 下的文件 5.新建local…...
解决Windows安全中心显示空白页面
1、电脑重装系统后,发现原本一些软件打不开了,电脑莫名认为有病毒,自动删除插件。附图。 2、第一反应是电脑防火墙的原因,默认威胁防护识别到了病毒软件,自动删除。在开始屏幕搜Windows安全中心,打开之后发…...
2.1 SQL server的安装以及一个数据表的创建
Microsoft SQL Server 2014 Express 是一个免费的、功能强大的可靠数据管理系统,为轻型网站和桌面应用程序提供丰富可靠的数据存储. 1. 下载软件并安装 https://www.microsoft.com/zh-cn/download/details.aspx?id42299 勾选SQLEXPRADV_X64_CHS.exe就够了。 可以更…...
楼梯上下检测数据集VOC+YOLO格式5462张2类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):5462 标注数量(xml文件个数):5462 标注数量(txt文件个数):5462 …...
Excel提取图片并自动上传到文件服务器(OOS),获取文件链接
Excel提取图片并自动上传到接口 在实际项目中,我们可能经常会遇到需要批量从Excel文件(.xlsx)中提取图片并上传到特定接口的场景。今天,我就详细介绍一下如何使用Python实现这一功能,本文会手把手教你搭建一个完整的解…...
python有序列表
您的代码整体结构良好,但存在一些关键错误和优化点。以下是对代码的详细评价及改进建议:---### 主要问题1. **add方法中的链表断裂问题**- **问题描述**:当向链表中间插入节点时,未正确设置新节点的next,导致后续节点丢…...
Python(23)Python异常处理完全指南:从防御到调试的工程实践
目录 一、异常处理的核心价值与行业现状二、Python异常体系深度解析2.1 内置异常分类树2.2 七大高频异常处理方案2.2.1 文件操作异常链2.2.2 类型校验防御策略 三、企业级异常处理架构3.1 分布式系统异常封装3.2 上下文管理器资源保护 四、五大核心处理原则1. 精准捕获原则2.…...
LangChain4j-第一篇 |几分钟完成deepseek 在线集成
引言:AI 集成的Hello world 在AI迅猛增长的势头下,作为Java 程序员,也想学习开发AI 的应用产品。好在Java AI 生态也在逐步的完善,我们也可以使用java 语言开发属于自己的应用产品。LangChain4j通过声明式编程模型,将…...
C语言==》字符串断行
示例代码 #include <stdio.h>int main(void) {printf("Heres one way to print a ");printf("long string.\n");printf("Heres another way to print a \ long string.\n");printf("Heres the newest way to print a ""lo…...
springboot全局异常捕获处理
一、需求 实际项目中,经常抛出各种异常,不能直接抛出异常给前端,这样用户体验相当不好,用户看不懂你的Exception,对于一些sql异常,直接抛到页面上也不安全。所以有没有好的办法解决这些问题呢,当然有了&am…...
使用Jasypt对配置文件内容加密
使用Jasypt 配置文件内容加密 一、背景 在软件开发过程中,配置文件扮演着至关重要的角色,它存储着应用程序运行所需的各种参数和设置,例如数据库连接信息、API 密钥、第三方服务的认证信息等。然而,这些配置文件中的信息往往包含…...
opencv函数展示3
一、图像平滑(模糊) 线性滤波(速度快): 1.cv2.blur() 2.cv2.boxFilter() 3.cv2.GaussianBlur() 非线性滤波(速度慢但效果好): 4.cv2.medianBlur() 5.cv2.bilateralFilter() 二、锐…...
linux 4.14内核jffs2文件系统不自动释放空间的bug
前段时间在做spi-nor flash项目的时候,使用jffs2文件系统,发现在4.14内核下存在无法释放空间的bug,后来进行了修复,修复后功能正常,现将修复patch公开,供后来者学习: diff --git a/fs/jffs2/ac…...
华为仓颉智能体开发框架 Cangjie Magic深度解析
华为仓颉智能体开发框架 Cangjie Magic 深度解析 华为仓颉社区推出的 Cangjie Magic 是全球首个基于自研仓颉编程语言原生构建的 LLM Agent(大语言模型智能体) 开发框架,通过三大核心技术突破重构了智能体开发范式,为全场景智能化应用开发提供了全新工具链。以下从核心技术…...
Harmony5.0 设置应用全屏模式,隐藏导航栏和状态栏
Harmony5.0 设置应用全屏模式,隐藏导航栏和状态栏 在应用入口EntryAbility里添加 完整代码如下: import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from @kit.AbilityKit; import { hilog } from @kit.PerformanceAnalysisKit; import { window } fro…...
6. 实战(二):用Spring AI+OpenAI构建企业级智能客服
1、引言 前面几篇已经加深了我们对Spring Ai的体系结构,核心概念,以及也有初步集成实现了一个简单demo。今天,我们通过使用Spring AI框架与OpenAI API集成,构建一个功能完善的智能对话系统,加深我们对Spring AI从概念…...
线上健身预约小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的一款线上健身预约小程序源码,其主要功能包括搜索教练、课程、门店,以及轻松预约健身项目。 用户只需通过指尖轻点,即可快速查找并预约心仪的健身课程,无需繁琐的线下操作步骤。此外,…...
掌握MySQL:基本查询指令与技巧
🍑个人主页:Jupiter. 🚀 所属专栏:MySQL初阶学习笔记 欢迎大家点赞收藏评论😊 目录 表的增删查改1 CreateInsert1.1 单行数据 全列插入指定列插入1.2 多行数据插入 指定列插入1.3 插入否则更新 1.4 替换 2 Retrieve …...
本地生活服务信息分类信息系统
最近在找分类信息系统,看了很多市面上常见的分类信息系统: 1,私集分类信息系统 2,火鸟分类信息系统 3,觅分类信息系统 4,框分类信息系统 5,蚂蚁分类信息系统 发现很多分类信息系统,…...
视频编解码种类/技术/区别/优缺点汇总
视频编解码种类/技术/区别/优缺点汇总 按国家/机构划分的全球主要视频编码标准 (含优缺点)视频编解码涉及到的主要技术及通俗解释主流视频编码标准的实现方式 按国家/机构划分的全球主要视频编码标准 (含优缺点) 组织/国家分类标准名称 (常用名/别名)推出年份 (约)主要制定组织…...
【专题刷题】双指针(四):最接近的三数之和,接雨水
📝前言说明: 本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,按专题划分每题主要记录:(1)本人解法 本人屎山代码;(2)优质解法 优质代码;ÿ…...
星露谷物语 7000+ 大型MOD整合包
衣服美化、家具美化、地图美化、人物肖像美化 全地图装修存档、人物美化、扩展包、环境美化、家具、动植物、通用前置包、新增NPC、功能、服装发饰妆 帽子发型农场小镇美化大型玩法拓展实用功能mod 动漫人物形象MOD 地点/动物/地图/功能/机械/家具/建筑/界面美化/扩展/农场/食谱…...
Vue自定义指令-防抖节流
Vue2版本 // 防抖 // <el-button v-debounce"[reset,click,300]" ></el-button> // <el-button v-debounce"[reset]" ></el-button> Vue.directive(debounce, { inserted: function (el, binding) { let [fn, event "cl…...
几款开源C#插件框架
有几个优秀的开源C#插件框架可供选择,它们提供了更完善的功能和更好的扩展性。以下是几个主流的开源C#插件框架: 1. MEF (Managed Extensibility Framework) 官方库:System.ComponentModel.Composition 特点: .NET官方提供的插件系统 基于特性(Attribute)的声明式组件注册…...
PHP使用pandoc把markdown文件转为word
文章目录 首先安装pandocPHP处理 服务器操作系统是Linux,centos 首先安装pandoc yum install -y pandoc安装完成后输入如下代码,检查安装是否成功 pandoc --versionPHP处理 我把markdown内容存到了数据库里,所以要从数据库读取内容。对内容…...
Vmware esxi 查看硬盘健康状况
起因 硬盘掉盘 - - 使用自带的命令esxcli 列出所有硬盘 esxcli storage core device list[rootlocalhost:~] esxcli storage core device list t10.NVMe____INTEL_MEMPEK1W016GAL____________________PHBT83660BYP016D____00000001Display Name: Local NVMe Disk (t10.NVMe…...
vue3中ref创建的变量使用`.value`(可以使用volar插件自动添加`.value)
1.安装volar插件 2.打开>设置 >扩展...
Docker中镜像、容器、仓库三者之间的关系
镜像: 定义: 镜像只是一个静态的、只读的模板,包括了创建容器所需的文件系统、依赖库、和配置。类似于操作系统之中的安装光盘或虚拟机的磁盘镜像。 特点和作用 特点: 分层存储:镜像由多个只读层(Layer)叠加而成,每一层代表一…...
【刷题Day19】HTTP的各个版本(浅)
HTTP 1.0 和 2.0 有什么区别? HTTP/1.0 版本主要增加以下几点: 增加了HEAD、POST等新方法。增加了响应状态码。引入了头部,即请求头和响应头在请求中加入了HTTP版本号引入了Content-Type,使得传输的数据不再限于文本。 HTTP/1.…...
浅析StringBuilder和StringBuffer的区别和联系?
区别 1. 线程安全性 StringBuilder:是非线程安全的。这意味着在多线程环境下,如果多个线程同时访问并修改同一个 StringBuilder 对象,可能会导致数据不一致或其他并发问题。不过,由于不需要考虑线程安全的额外开销,它…...
【数据融合实战手册·实战篇】二维赋能三维的5种高阶玩法:手把手教你用Mapmost打造智慧城市标杆案例
在当今数字化时代,二三维数据融合技术的重要性不言而喻。二三维数据融合通过整合二维数据的结构化优势与三维数据的直观性,打破了传统数据在表达和分析上的局限,为各行业提供了更全面、精准的数据分析手段。从智慧城市建设到工业智能制造&…...
Linux 系统编程 day5 进程管道
进程间通信(IPC) Linux环境下,进程地址空间相互独立,任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能互相访问,要交换数据必须通过内核,在内核中开辟一块缓冲区…...
【项目管理】第19章 配置与变更管理-- 知识点整理
项目管理-相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 项目管理知识域 知识点: (项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域) 对应:第6章-第19章 第6章 项目管理概论 4分第13章 项目资源管理 3-4分第7章 项目…...
C语言---FILE结构体
一、FILE 结构体的本质与定义 基本概念 FILE 是 C 语言标准库中用于封装文件操作的结构体类型,定义于 <stdio.h> 中。它代表一个“文件流”,可以是磁盘文件、标准输入输出(stdin/stdout/stderr)或其他输入输出设备。 实现特…...
C# 高级编程:Lambda 表达式
在 C# 的高级编程中,Lambda 表达式是一个强大而灵活的工具,广泛应用于 LINQ 查询、委托、事件处理以及函数式编程等多个领域。它不仅使代码更简洁、表达更直接,而且在某些场景中能极大提高代码的可读性与可维护性。本文将从 Lambda 表达式的基本语法入手,深入探讨其原理、常…...
【Python语言基础】22、异常处理
文章目录 1. 异常1.1 简介1.2 为什么需要异常处理 2. 基本语法2.1 各部分详解 3. 异常处理流程3.1 执行try代码块3.2 异常发生检查3.3 异常捕获与匹配3.4 执行匹配的 except 代码块3.5 执行 else 代码块(可选)3.6 执行 finally 代码块(可选&a…...
7、生命周期:魔法的呼吸节奏——React 19 新版钩子
一、魔法呼吸的本质 "每个组件都是活体魔法生物,呼吸节奏贯穿其生命始终,"邓布利多的冥想盆中浮现三维相位图,"React 19的呼吸式钩子,让组件能量流转如尼可勒梅的炼金术!" ——以霍格沃茨魔法生理…...
Echart 地图放大缩小
在 ECharts 中,可以通过设置地图的 roam 属性以及相关事件监听来实现地图的放大、缩小功能。以下是实现地图放大缩小的常用方法: 1. 开启 roam 属性 roam 是 ECharts 地图组件中的一个重要属性,用于控制地图是否支持平移和缩放操作。 roam:…...
Django ORM 定义模型
提示:定义模型字段的类型 文章目录 一、字段类型二、字段属性三、元信息 一、字段类型 常用字段 字段名描述备注AutoFieldint 自增必填参数 primary_keyTrue,无该字段时,django自动创建一个 BigAutoField,一个model不能有两个Au…...
Linux和Ubuntu的驱动适配情况
旧 一、Linux Yocto3.0 二、Ubuntu 1.驱动 1.rtc正常 2.led正常 3.加密芯片正常 4.硬件看门狗不行,驱动已经适配好,等硬件修复后,直接使用脚本就可以 5.千兆网口可以,两个百兆网口不行 6.USB上面和下面都可以(插u盘…...
JavaScript 性能优化实战
一、代码执行效率优化 1. 减少全局变量的使用 全局变量在 JavaScript 中会挂载在全局对象(浏览器环境下是window,Node.js 环境下是global)上,频繁访问全局变量会增加作用域链的查找时间。 // 反例:使用全局变量 var globalVar = example; function someFunction() {con…...
b站PC网页版视频播放页油猴小插件制作
文章目录 前言需求分析实施观察页面起始渲染编码效果展示 总结 前言 新手上路,欢迎指导 需求分析 想要一个简约干净的界面,需要去除推荐栏和广告部分. 想要自由调节视频播放速率,需要在视频控制栏加一个输入框控制视频倍速 实施 观察页面起始渲染 因为要使用MutationObse…...
C#获取当前方法的命名空间、类名称、方法名称以及方法的参数信息
C#获取当前方法的命名空间、类名称、方法名称以及方法的参数信息 输出示例模块示例 输出示例 获取信息:WindowsFormsApp1.Form1.button1_Click(System.Object sender,System.EventArgs e) 引发的异常:“System.IndexOutOfRangeException”(位于 WindowsFormsApp1.ex…...
git常用的命令
最近使用git进行团队开发遇到的一些分支的问题需要使用各种命令,整理一下方便日后使用 1.常用的Git命令 1.初始化仓库 git init //创建一个新的Git仓库2. 克隆仓库 git clone <repository-url> //克隆远程仓库到本地。3.查看当前的状态 git status …...
大语言模型的训练、微调及压缩技术
The rock can talk — not interesting. The rock can read — that’s interesting. (石头能说话,不稀奇。稀奇的是石头能读懂。) ----硅谷知名创业孵化器 YC 的总裁 Gar Tan 目录 1. 什么是大语言模型? 2. 语言建模ÿ…...