springboot系列七: Lombok注解,Spring Initializr,yaml语法
老韩学生
- Lombok
- Lombok介绍
- Lombok常用注解
- Lombok应用实例
- 代码实现
- idea安装lombok插件
- Spring Initializr
- Spring Initializr介绍
- Spring Initializr使用演示
- 需求说明
- 方式1: IDEA创建
- 方式2: start.spring.io创建
- 注意事项和说明
- yaml语法
- yaml介绍
- 使用文档
- yaml基本语法
- 数据类型
- 字面量
- 对象
- 数组
- yaml应用实例
- 需求图解
- 代码实现
- 注意事项和使用细节
⬅️ 上一篇: springboot系列六: springboot底层机制实现 下
🎉 欢迎来到 springboot系列七: Lombok注解,Spring Initializr,yaml语法 🎉
在本篇文章中,我们将探索 Lombok 注解的使用,Spring Initializr 的功能以及 yaml 语法的基本用法。这些工具和技术将帮助您更高效地开发 Spring Boot 应用程序。
🔧 本篇需要用到的项目: quickstart项目
Lombok
Lombok介绍
●Lombok介绍
1.简化JavaBean
开发, 可以使用Lombok
的注解让代码更加简洁. mybatis中学习过
2.Java项目中, 很多没有技术含量又必须存在的代码, POJO的getter/setter/toString;异常处理;I/O流的关闭操作等等,这些代码既没有技术含量,又影响着代码的美观,Lombok应运而生。
●SpringBoot和IDEA官方支持
1.IDEA 2020已经内置了Lombok插件
2.SpringBoot 2.1.x之后的版本也在Starter中内置了Lombok依赖
Lombok常用注解
Lombok应用实例
代码实现
●需求说明
回到我们的 quickstart 项目, 使用Lombok简化Furn.java代码, 让代码简洁高效
1.在pom.xml
中引入lombok
引入lombok, 版本在spring-boot-dependencies-2.5.3.pom已经指定了, 把光标放在lombok, ctrl+b 可以看到. springboot依赖管理
2.修改Furn.java, 使用Lombok注解简化代码. 提示: 可以通过idea自带的反编译功能, 看Furn.class的源代码
@Component
@ToString //编译时, 生成toString方法, 默认情况下, 会生成一个无参构造器
@ConfigurationProperties(prefix = "furn01")
public class Furn {private Integer id;private String name;private BigDecimal price;
}
3.@Data
注解
@Component
@ConfigurationProperties(prefix = "furn01")
/*** 说明:* 1. Equivalent to {@code @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode}.* 2. @Data 注解等价使用了 如下注解* @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode* 3. @RequiredArgsConstructor, 单独地说一下*/
@Data
public class Furn {private Integer id;private String name;private BigDecimal price;
}
编译后
4.@RequiredArgsConstructor
详解
在我们写controller或者Service层的时候,需要注入很多的mapper接口或者另外的service接口,这时候就会写很多的@Autowired注解,代码看起来很乱
lombok
提供了一个注解:
@RequiredArgsConstructor(onConstructor = @_(@Autowired))
写在类上可以代替@Autowired注解,需要注意的是在注入时需要用final定义,或者使用@notnull注解
5.@NoArgsConstructor
详解
/*** 说明: @NoArgsConstructor 在编译时, 会生成无参构造器, 前面我们说过, 默认情况下, 会生成一个无参构造器* 说明: 当我们有其它构造器生成时, 如果你希望仍然有无参构造器, 就需要使用@NoArgsConstructor显示声明一下* , 否则就会覆盖无参构造器, 从而造成代码错误*/
//@NoArgsConstructor/*** @allArgsConstructor 在编译时, 会生成全参构造器, 造成覆盖掉无参构造器, 项目启动, 报错* 解决方案一: 取消Furn作为Bean注入, 那么在需要自动装配Furn的位置, 通通注释掉* 解决方案二: 显式声明一下无参构造器, 可以手写, 也可以用@NoArgsConstructor*/
@AllArgsConstructor
public class Furn {private Integer id;private String name;private BigDecimal price;
}
idea安装lombok插件
1.不装插件也可以使用基本的注解, 比如 @Data, @Getter 等.
2.但是不能使用其扩展功能, 比如 日志输出, 如意我们还是安装一下, 也比较简单.
3.演示使用Lombok
支持日志输出(建议使用slf4j), 修改src/main/java/com/zzw/HiController.java
@RequestMapping("/furn")
@ResponseBody
public Furn furn() {//System.out.println("furn = " + furn);//使用slfj日志输出//普通方式log.info("furn-" + furn);//占位符方式输出log.info("furn={}, myfurn={}", furn, furn);return furn;
}
4.浏览器访问 http://localhost:8088/furn
前端显示
后端显示
2024-06-17 13:38:33.476 INFO 11584 — [nio-8088-exec-3] com.zzw.HiController : furn-Furn(id=100, name=家居, price=6000)
2024-06-17 13:38:33.476 INFO 11584 — [nio-8088-exec-3] com.zzw.HiController : furn=Furn(id=100, name=家居, price=6000), myfurn=Furn(id=100, name=家居, price=6000)
前提:
1.Furn实体类要有toString方法, 否则后端输出对象地址.
2.Furn实体类要有setter方法, 因为application.properties中的属性通过setter方法设置, 否则后端输出null.
3.Furn实体类要有getter方法, 因为furn.id furn.name是通过getId和getName方法获取的, 否则前端不输出JSON信息.
Spring Initializr
Spring Initializr介绍
●Spring Initializr作用
1.程序员通过Maven Archetype
来生成Maven
项目, 项目原型相对简陋, 需要手动配置, 但是比较灵活.
2.通过Spring
官方提供的Spring Initializr
来构建Maven
项目, 能完美支持IDEA
和`Eclipse, 让程序员来选择需要的开发场景(starter), 还能自动生成启动类和单元测试代码.
3.Spring Initializr
对 Idea
版本有要求, 同时还要走国外网络, 我们还是习惯使用Maven Archetype
来生成Maven
项目. 但是作为知识点, 还是要介绍一下.
Spring Initializr使用演示
需求说明
使用Spring Initializr创建SpringBoot项目, 并支持web应用场景, 支持MyBatis.
方式1: IDEA创建
1.创建项目
2.选择 Spring Initializr. 如果没有看到这个选项, 需要安装Spring Initializr插件
3.项目设置
4.选择需要的开发场景
5.项目创建好后, 自动生成启动类和单元测试代码
方式2: start.spring.io创建
https://start.spring.io/
注意事项和说明
1.如果通过Spring Initializr
创建项目, pom.xml
爆红
2.解决方案: 指定版本和当前的springboot
一致, 刷新maven
即可解决
yaml语法
yaml介绍
●基本说明
1.YAML是"YAML Ain’t Markup Language"(YAML不是一种标记语言)的递归缩写. 在开发这种语言时, YAML的意思其实是: “Yet Another Markup Language”(仍是一种标记语言), 是为了强调这种语言以数据作为中心, 而不是以标记语言为重点, 而用反向缩略语重命名. 百度百科
●解读
1.YAML 以数据作为中心, 而不是以标记语言为重点.
2.YAML 仍然是一种标记语言, 但是和传统的标记语言不一样, 是以数据为中心的标记语言.
3.YAML 非常适合用来做以数据为中心的配置文件 [springboot: application.yml]
使用文档
官方文档: https://yaml.org/
yaml for java: https://www.cnblogs.com/strongmore/p/14219180.html
yaml基本语法
1.形式为 key: value, 注意: 后面有空格
2.区分大小写:
3.使用缩进表示层级关系
4.缩进不允许使用tab, 只允许空格 [有些地方也是别tab, 推荐使用空格]
5.缩进的空格数不重要, 只要相同层级的元素左对齐即可
6.字符串无需加引号
7.yaml中, 注释使用 #
数据类型
字面量
1.字面量: 单个的, 不可再分的值. date, boolean, string, number, null
2.number可以表示整数, 浮点数.
3.保存形式为key: value
对象
1.对象: 键值对的集合, 比如map, hash, object
行内写法: k: {k1: v1, k2: v2, k3: v3}
monster: {id: 100, name: 牛魔王}
或
换行形式:
k:
k1: v1
k2: v2
k3: v3
monster:
id: 100
name: 牛魔王
skill: 芭蕉扇
2.举例说明
数组
1.数组: 一组按次序排列的值, 比如 array, list, set, queue
行内写法: k: [v1, v2, v3]
hobby: [打篮球, 踢足球, 打羽毛球]
或
换行形式:
k:
- v1
- v2
- v3
hobby:
- 打篮球
- 踢足球
- 打羽毛球
2.举例说明
yaml应用实例
需求图解
需求: 使用yaml配置文件 和 JavaBean 进行数据绑定, 体会 yaml 使用方式
1.创建项目 configuration, 完成yaml的使用
2.运行效果
代码实现
1.创建一个新的 SpringBoot 项目 configuration, 我们这里用灵活配置的方式创建.
2.在pom.xml引入lombok
, 并切换一下springboot
版本
<!--导入springboot父工程-规定写法-->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.3</version>
</parent><dependencies><!--导入web项目场景启动器, 会自动地导入和web开发相关的所有依赖[库/jar]--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--引入lombok, 使用版本仲裁--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>
</dependencies>
3.创建src/main/java/com/zzw/springboot/bean/Car.java
.
小细节: 创建的bean
需要在SpringBootApplication
包或者其子包, 否则默认不会被扫描, 同时也不能完全使用lombok
的相关简化注解.
@Data
public class Car {private String name;private double price;
}
4.创建src/main/java/com/zzw/springboot/bean/Monster.java
@Component
@Data
public class Monster {private Integer id;private String name;private Integer age;private Boolean isMarried;private Date birth;private Car car;private String[] skill;private List<String> hobby;private Map<String, Object> wife;private Set<Double> salaries;private Map<String, List<Car>> cars;
}
5.创建src/main/java/com/zzw/springboot/controller/HiController.java
@RestController
public class HiController {@Autowiredprivate Monster monster;@RequestMapping("/monster")public Monster monster() {return monster;}
}
6.创建src/main/java/com/zzw/springboot/Application.java
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
7.启动项目, 进行测试. 为空, 说明还没有对数据进行配置绑定.
8.创建src/main/resources/application.yml
, 演示各种写法. 提示: 编写application.yml 时, 这些Bean的字段是可以通过安装插件或jar来自动提示的, 后面会学到, 现在先苦后甜.
monster:id: 100name: 牛魔王age: 200isMarried: truebirth: 2000/10/15
9.配置Furn
. 参考properties的配置绑定
@ConfigurationProperties(prefix = "monster")
public class Monster {}
10.重启,测试
11.完成后面数据的绑定
monster:id: 100name: 牛魔王age: 200isMarried: truebirth: 2000/10/15#对象
# car: {name: 奔驰, price: 120000} #行内风格car:name: 奔驰price: 160000 #换行风格#数组
# skill: [芭蕉扇, 七十二变, 刀枪不入] #行内风格skill:- 芭蕉扇~- 七十二变~- 刀枪不入~ #换行风格hobby:- 喝酒- 吃肉- 陪老婆 #换行风格#map-属于对象
# wife: {no1: 铁扇公主, no2: 狐狸精} #行内风格wife:no1: 铁扇公主no2: 狐狸精 #换行风格#set-属于对象
# salaries: [10000, 20000, 30000] #行内风格salaries:- 10000- 20000- 30000 #换行风格cars: # 因为cars k-v v是List<Car> 所以我们使用换行风格group1:- {name: 奔驰, price: 120000}- name: 奥迪price: 130000group2:- {name: 宝马, price: 110000}- name: 兰博基尼price: 300000
注意事项和使用细节
1.如果application.properties
和 application.yml
有相同的前缀值绑定, 则application.properties
优先级高, 开发时, 应当避免.
2.字符串无需加引号, 如果你用" " 或者 ’ ’ 包起来, 也可以.
3.解决yaml
和 properties
配置文件, 不提示字段信息问题
1)如图, 我们可以知道, 在编写application.yaml
文件时, 不提示Monster
的字段信息, 非常不方便
2)在pom.xml
加入spring-boot-configuration-processor
依赖, 可以从quickstart
项目拷贝.
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><!--这里我们配置optional为true说明: 表示防止将此依赖传递到其它模块--><optional>true</optional>
</dependency>
3)对application.yml
文件编辑, 就会提示字段. 提示: 输入你在Bean
中配置的prefix
, 就会提示
4)提示: 如果还没有提示, 可以安装一个yaml
插件来搞定.
🔜 下一篇预告: [即将更新,敬请期待]
📚 目录导航 📚
- springboot系列一: springboot初步入门
- springboot系列二: sprintboot依赖管理
- springboot系列三: sprintboot自动配置
- springboot系列四: sprintboot容器功能
- springboot系列五: springboot底层机制实现 上
- springboot系列六: springboot底层机制实现 下
- springboot系列七: Lombok注解,Spring Initializr,yaml语法
…
💬 读者互动 💬
在使用 Lombok 注解,Spring Initializr 和 yaml 语法的过程中,您有哪些体会或问题?欢迎在评论区留言,让我们一起讨论吧!😊
相关文章:
![](https://img-blog.csdnimg.cn/direct/923df8f8c1924b3d975dd895c0497843.png)
springboot系列七: Lombok注解,Spring Initializr,yaml语法
老韩学生 LombokLombok介绍Lombok常用注解Lombok应用实例代码实现idea安装lombok插件 Spring InitializrSpring Initializr介绍Spring Initializr使用演示需求说明方式1: IDEA创建方式2: start.spring.io创建 注意事项和说明 yaml语法yaml介绍使用文档yaml基本语法数据类型字面…...
![](https://img-blog.csdnimg.cn/direct/9cb9ae65ff804902af353c013d4ffd62.jpeg#pic_center)
专访ATFX首席战略官Drew Niv:以科技创新引领企业高速发展
在金融科技创新的浪潮中,人才是推动企业高速发展的核心驱动力,优质服务是引领企业急速前行的灯塔。作为差价合约领域的知名品牌,ATFX高度重视人才引进工作,秉持“聚天下英才而用之”的理念,在全球范围内广揽科技精英&a…...
![](https://img-blog.csdnimg.cn/direct/817f283021ed4fa9af785748480126c1.png)
关于FPGA对 DDR4 (MT40A256M16)的读写控制 4
关于FPGA对 DDR4 (MT40A256M16)的读写控制 4 语言 :Verilg HDL 、VHDL EDA工具:ISE、Vivado、Quartus II 关于FPGA对 DDR4 (MT40A256M16)的读写控制 4一、引言二、DDR4 SDRAM设备中模式寄存器重要的模式寄存…...
![](https://www.ngui.cc/images/no-images.jpg)
android——Livedata、StateFlow、ShareFlow和Channel的介绍和使用
目录 一、LiveData介绍 二、StateFlow介绍 三、ShareFlow介绍 四、Channel介绍 小结 一、LiveData介绍 LiveData是一种在Android开发中用于观察数据变化的组件。它可以被观察者注册并在数据变化时通知观察者,从而实现数据的实时更新。LiveData具有生命周期感知能力&…...
![](https://www.ngui.cc/images/no-images.jpg)
Debezium 同步 MySQL 实时数据并解决数据重复消费问题
我们使用 Debezium 实时同步一个 MySQL 的数据到另一个 MySQL,代码网上基本都有,都是在引入 debezium-api,debezium-embedded 后写 Java 代码,做好了基本配置后启动程序,Debezium 会自动读取 MySQL 的实时 binlog&…...
![](https://www.ngui.cc/images/no-images.jpg)
【图像处理】1、使用OpenCV库图像轮廓的检测和绘制
OpenCV (Open Source Computer Vision Library) 是一个用于计算机视觉和图像处理的开源库。它提供了数百种用于图像和视频分析的算法,并被广泛应用于研究和商业领域。OpenCV 支持多种编程语言,包括 C、Python、Java 等,具有跨平台的特性&…...
![](https://img-blog.csdnimg.cn/img_convert/c34dc7d8c64fdf7f7eb0be2ebc3bb367.png)
【AI编译器】triton学习:矩阵乘优化
Matrix Multiplication 主要内容: 块级矩阵乘法 多维指针算术 重新编排程序以提升L2缓存命 自动性能调整 Motivations 矩阵乘法是当今高性能计算系统的一个关键组件,在大多数情况下被用于构建硬件。由于该操作特别复杂,因此通常由软件提…...
![](https://www.ngui.cc/images/no-images.jpg)
动静分离网络
动静分离网络的主要目的是分别处理视频帧中的静止区域和运动区域,以便对不同区域采用不同的去噪策略。这里提供一个实现思路,通过两个分支网络分别处理静止区域和运动区域,然后将两者的输出融合起来。 实现步骤 帧差图生成:计算…...
![](https://www.ngui.cc/images/no-images.jpg)
Python商务数据分析知识专栏(三)——Python数据分析的应用①Matplotlib数据可视化基础
Python商务数据分析知识专栏(三)——Python数据分析的应用①Matplotlib数据可视化基础 Matplotlib数据可视化基础1.掌握绘图基本语法与常用绘图2.分析特征间关系3.分析特征内部数据分布与分散情况 Matplotlib数据可视化基础 1.掌握绘图基本语法与常用绘…...
![](https://img-blog.csdnimg.cn/direct/1dde45f9ce9c4dbc8d82926883e9da1d.png)
DataV大屏组件库
DataV官方文档 DataV组件库基于Vue (React版 (opens new window)) ,主要用于构建大屏(全屏)数据展示页面即数据可视化,具有多种类型组件可供使用: 源码下载...
![](https://www.ngui.cc/images/no-images.jpg)
paraview跨节点并行渲染
参考: https://cloud.tencent.com/developer/ask/sof/101483588 ParaView 支持使用其内置的网络拓扑来进行跨节点的并行渲染。以下是一个简单的步骤来设置和运行跨节点的并行渲染: 确保你的计算环境支持多节点计算,比如通过SSH、MPI或其他集…...
![](https://www.ngui.cc/images/no-images.jpg)
Java中相等比较详解
本文对Java中的相等判断进行详细解释,包括,equals和compareTo等。 一、 运算符 1. 用途 基本数据类型:用于比较两个基本数据类型的值是否相等。 引用类型:用于比较两个对象引用是否指向同一个对象。 2. 示例 // 基本数据类型比…...
![](https://img-blog.csdnimg.cn/direct/156b3fd8d2c84cd381e8c7e8e9d1ccb4.png)
HBuilder X 小白日记01
1.创建项目 2.右击项目,可创建html文件 3.保存CtrlS,运行一下 我们写的内容,一般是写在body里面 注释的快捷键:Ctrl/ h标签 <h1> 定义重要等级最高的(最大)的标题。<h6> 定义最小的标题。 H标签起侧重、强调的作用…...
![](https://www.ngui.cc/images/no-images.jpg)
使用Protocol Buffers优化数据传输
使用Protocol Buffers优化数据传输 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 什么是Protocol Buffers? Protocol Buffers(简称P…...
![](https://img-blog.csdnimg.cn/img_convert/2cbab530f1c2ff5e3ecd58f0ca90a775.png)
如何把mkv转成mp4?介绍一下将mkv转成MP4的几种方法
如何把mkv转成mp4?如果你有一个MKV格式的视频文件,但是需要将其转换为MP4格式以便更广泛地在各种设备和平台上播放和共享,你可以通过进行简单的文件格式转换来实现。转换MKV到MP4格式可以提供更好的兼容性,并确保你的视频文件能够…...
![](https://img-blog.csdnimg.cn/direct/c26a6a0c6d81481e9508026f0a4f3758.png)
PHP语言学习02
好久不见,学如逆水行舟,不进则退,真是这样。。。突然感觉自己有点废。。。 <?php phpinfo(); ?> 新生第一个代码。 要想看到运行结果,打开浏览器(127.0.0.1/start/demo01.php) 其中,…...
![](https://www.ngui.cc/images/no-images.jpg)
PX2资料及问题记录
PX2的一些资料 官方论坛:https://devtalk.nvidia.com/default/board/182/drive-px2/ 官方网站:https://www.nvidia.com/en-us/self-driving-cars/ap2x/ 开发网站:https://developer.nvidia.com/drive/downloads docker docker run --devic…...
![](https://img-blog.csdnimg.cn/direct/30f6ce2396df4fb7aa2c599b642228f3.png)
Jenkins容器的部署
本文主要是记录如何在Centos7上安装docker,以及在docker里面配置tomcat、mysql、jenkins等环境。 一、安装docker 1.1 准备工作 centos7、VMware17Pro 1.2 通过yum在线安装dokcer yum -y install docker1.3 启动docker服务 systemctl start docker.service1.4 查看docke…...
![](https://www.ngui.cc/images/no-images.jpg)
QT 自绘树形控件
资源来自:https://gitee.com/qt-open-source-collection/NavListView/blob/master/navlistview.h 1、解决的问题:一处编译报错;空白区域绘制背景;点击页面崩溃 2、源码: #ifndef NAVLISTVIEW_H #define NAVLISTVIEW_H/*** 作者:feiyangqingyun(QQ:517216493) 2016-10-1…...
![](https://img-blog.csdnimg.cn/direct/cb98354fb21945bba9f1dbee11719ecd.png)
axios之CancelToken取消请求
从 v0.22.0 开始,Axios 支持以 fetch API 方式—— AbortController 取消请求 此 API 从 v0.22.0 开始已被弃用,不应在新项目中使用 官网链接 1. 背景 最近项目中遇到一个场景,当连续触发一个请求时,如果是同一个接口…...
![](https://www.ngui.cc/images/no-images.jpg)
Unity | API鉴权用到的函数汇总
目录 一、HMAC-SHA1 二、UriEncode 三、Date 四、Content-MD5 五、参数操作 六、阿里云API鉴权 一、HMAC-SHA1 使用 RFC 2104 中定义的 HMAC-SHA1 方法生成带有密钥的哈希值: private static string CalculateSignature(string secret, string data){byte[] k…...
![](https://img-blog.csdnimg.cn/direct/19fdf0bd556e4f53a833f428d1def6ec.png)
【python】socket通信代码解析
目录 一、socket通信原理 1.1 服务器端 1.2 客户端 二、socket通信主要应用场景 2.1 简单的服务器和客户端通信 2.2 并发服务器 2.3 UDP通信 2.4 文件传输 2.5 HTTP服务器 2.6 邮件发送与接收 2.7 FTP客户端 2.8 P2P文件共享 2.9 网络游戏 三、python中Socket编…...
FastGPT 手动部署错误:MongooseServerSelectionError: getaddrinfo EAI_AGAIN mongo
在运行 FastGPT 时,mongodb 报如下错误: MongooseServerSelectionError: getaddrinfo EAI_AGAIN mongo 这是因为 mongo 没有解析出来,在 hosts 文件中添加如下信息: 127.0.0.1 mongo 重新运行 FastGPT 即可。 参考链接ÿ…...
![](https://img-blog.csdnimg.cn/direct/335b00daeeaa4b2b8bfb4b411e237c86.png)
用英文介绍芝加哥(1):Making Modern Chicago Part 1 Building a Boomtown
Making Modern Chicago | Part 1: Building a Boomtown Link: https://www.youtube.com/watch?vpNdX0Dm-J8Y&listPLmSQiOQJmbZ7TU39cyx7gizM9i8nOuZXy&index4 Summary Summary of Chicago’s History and Development Urban Planning and Growth Chicago, often r…...
![](https://img-blog.csdnimg.cn/direct/2f746ea4ae4343a4bf361221cf3a014f.jpeg)
【启明智显分享】低成本RISC-V工业级HMI方案推荐
伴随着工业4.0的迅猛发展,工业HMI以方便、快捷的特点逐渐成为工业的日常应用,成为备受追捧的全新多媒体交互设备。 什么是工业HMI?工业HMI是用于工业自动化系统中的人机交互界面,通常由触摸屏、按钮、指示灯、显示器等组成&#…...
![](https://www.ngui.cc/images/no-images.jpg)
深入探索STM32的SPI功能:W25Q64 Flash存储器全攻略
摘要 随着嵌入式系统对存储需求的增长,选择合适的存储设备变得尤为重要。W25Q64 Flash存储器以其8Mbit的存储容量和SPI接口的便捷性,成为STM32微控制器项目中的优选存储方案。本文将深入探索STM32的SPI功能,提供W25Q64 Flash存储器的全面集成…...
![](https://img-blog.csdnimg.cn/direct/397afba409dc46e1be2788a61e9c29db.png)
【SQL Server数据库】带函数查询和综合查询(1)
目录 1.统计年龄大于30岁的学生的人数。 2.统计数据结构有多少人80分或以上。 3.查询“0203”课程的最高分的学生的学号。 4.统计各系开设班级的数目(系名称、班级数目),并创建结果表。 5.选修了以“01”开头的课…...
![](https://www.ngui.cc/images/no-images.jpg)
使用WebService接口进行数据通信
使用WebService接口进行数据通信 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何使用WebService接口进行数据通信。WebService是一种基于Web…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
AI进阶指南第五课,大模型相关概念(知识库,微调)
虽然前面大概讲了一下大模型的一些基本概念,但是那些都比较偏向于大模型本身,但是我们使用的时候如果只靠大模型肯定是不行的。 就好比如果一个人只有一个脑子,其他什么部位也没有的话,那场面。(感觉现在网上的AI图片…...
![](https://www.ngui.cc/images/no-images.jpg)
【深度学习基础】`view` 和 `reshape` 的参数详解
目录 基本概念参数详解 示例view 和 reshape 在具体应用中的参数解释参数解释 更多示例高维张量示例非连续内存示例 总结 基本概念 view 和 reshape 都用于调整张量的形状,它们的参数是新的形状,每个维度的大小可以指定为具体的数值或者 -1。-1 表示这个…...
![](https://img-blog.csdnimg.cn/direct/c622bf228e034f27b20f352728c596da.png)
【笔记】Spring Cloud Gateway 实现 gRPC 代理
Spring Cloud Gateway 在 3.1.x 版本中增加了针对 gRPC 的网关代理功能支持,本片文章描述一下如何实现相关支持.本文主要基于 Spring Cloud Gateway 的 官方文档 进行一个实践练习。有兴趣的可以翻看官方文档。 由于 Grpc 是基于 HTTP2 协议进行传输的,因此 Srping …...
![](https://img-blog.csdnimg.cn/direct/fa793ea5619a49e586feabbe1dda4c6a.png)
云顶之弈数据网站
摘要:随着云顶之弈游戏的广泛流行,玩家对于游戏数据的查询和最新资讯的获取需求呈现出显著增长的趋势。设计一款云顶之弈数据网站,为玩家提供便捷、高效的数据查询和资讯浏览服务,能满足玩家对于游戏数据的快速查询和实时资讯获取…...
![](https://www.ngui.cc/images/no-images.jpg)
Linux(Ubuntu)下源码开发整个流程完成版本(下载->编译->模拟器运行)
写这篇文章没别的意思, 年纪大了记性不好, 这次工作中下载,编译遇到了一些之前没遇到的问题,所以就所幸记录一下, 以便日后能快速查阅 好了, 正题开始 首先我们下载AOSP源代码开始 AOSP源代码下载 首先找到官网https://source.android.google.cn/ 进入后最上面点击获取源代…...
![](https://www.ngui.cc/images/no-images.jpg)
el-form表单实现校验
前端表单实现, rules 属性传入约定的验证规则,并将 form-Item 的 prop 属性设置为需要验证的特殊键值即可。 <el-form ref"ruleFormRef" :model"interviewForm" label-position"left" require-asterisk-position"…...
![](https://www.ngui.cc/images/no-images.jpg)
一台TrinityCore服务器客户端连接网速慢(未解决)
在FreeBSD开bhyve安装Ubuntu,然后安装了TrinityCore服务器,在只是经过一层NAT,两边都是局域网的情况下,连接速度竟然很慢,慢到600ms。 服务器安装见:尝试在FreeBSD 的jail、bhyve里安装TrinityCore-CSDN博…...
![](https://img-blog.csdnimg.cn/direct/59c0aa8eaf5f457894b504fbae7e85a5.png)
[系统运维|Xshell]宿主机无法连接上NAT网络下的虚拟机进行维护?主机ping不通NAT网络下的虚拟机,虚拟机ping的通主机!解决办法
遇到的问题:主机ping不通NAT网络下的虚拟机,虚拟机ping的通主机 服务器:Linux(虚拟机) 主机PC:Windows 虚拟机:vb,vm测试过没问题,vnc没测试不清楚 虚拟机网络࿱…...
![](https://www.ngui.cc/images/no-images.jpg)
C 语言实例 - 查找数组中最大的元素值
查找数组中最大的元素值。 实例 1 #include <stdio.h>int main() {int array[10] {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};int loop, largest;largest array[0];for(loop 1; loop < 10; loop) {if( largest < array[loop] ) largest array[loop];}printf("最大…...
![](https://www.ngui.cc/images/no-images.jpg)
MySQL之可扩展性(七)
可扩展性 通过集群扩展 理想的扩展方案时单一逻辑数据库能够存储尽可能多的数据,处理尽可能多的查询,并如期望的那样增长。许多人的第一想法就是建立一个"集群"或者"网格"来无缝处理这些事情,这样应用就无须去做太多工…...
![](https://img-blog.csdnimg.cn/direct/7a6cb3e136c1422f9829c181cadbf1f0.png)
微服务框架中Nacos的个人学习心得
微服务框架需要学习的东西很多,基本上我把它分为了五个模块: 第一:微服务技术模块 分为三个常用小模块: 1.微服务治理: 注册发现 远程调用 配置管理 网关路由 2.微服务保护: 流量控制 系统保护 熔断降级 服…...
![](https://img-blog.csdnimg.cn/direct/a795e0f98e7648dea2754d064fb778ac.png)
Unity Animator 运行时修改某个动画状态的播放速度
1.添加动画参数,选择需要动态修改速度的动画状态 2.在属性面板种设置速度倍速参数...
![](https://img-blog.csdnimg.cn/direct/4f415a0a41084562ab867cec2b2a1fee.png)
阿里云常用的操作
阿里云常见的产品和服务 容器服务 可以查看容器日志、监控容器cpu和内存, 日志服务 SLS 可以查看所有服务的日志, Web应用防火墙 WAF 可以查看 QPS. 阿里云查看集群: 点击 “产品和服务” 中的 容器服务,可以查看 集群列表&…...
![](https://img-blog.csdnimg.cn/direct/334ac8248b044115935b537b6aa99ff0.png)
【MATLAB源码-第231期】基于matlab的polar码编码译码仿真,对比SC,SCL,BP,SCAN,SSC等译码算法误码率。
操作环境: MATLAB 2022a 1、算法描述 极化码(Polar Code) 极化码(Polar Code)是一种新型的信道编码技术,由土耳其裔教授Erdal Arıkan在2008年提出。极化码在理论上被证明能够在信道容量上达到香农极限…...
![](https://img-blog.csdnimg.cn/direct/54c6a92dd39d4e76ab50ef22b2465aeb.png)
创新实训(十三) 项目开发——实现用户终止对话功能
思路分析: 如何实现用户终止AI正在进行的回答? 分析实现思路如下: 首先是在用户点击发送后,切换终止对话,点击后大模型终止对话,停止sse,不再接收后端的消息。同时因为对话记录存入数据库是后…...
![](https://img-blog.csdnimg.cn/direct/9eb3cc9cdeca4be39b4f584fa4dd30dd.png)
基于Java+MySQL停车场车位管理系统详细设计和实现(源码+LW+调试文档+讲解等)
💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,…...
![](https://www.ngui.cc/images/no-images.jpg)
LeetCode 53.最大子数组和(dp)
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,4] 输出:…...
![](https://img-blog.csdnimg.cn/direct/04aa268893344d0b9d71d4740fe69f72.png)
IOS17闪退问题Assertion failure in void _UIGraphicsBeginImageContextWithOptions
最近项目更新到最新版本IOS17,发现一个以前的页面突然闪退了。原来是IOS17下,这个方法 UIGraphicsBeginImageContext(CGSize size) 已经被移除,原参数如果size为0的话,会出现闪退现象。 根据说明,上述方法已经被替换…...
![](https://img-blog.csdnimg.cn/2d61eca442984641b8abef076b4951b4.jpg)
float8格式
产生背景 在人工智能神经元网络中,一个参数用1字节表示即可,或者说,这是个猜想:因为图像的颜色用8比特表示就够了,所以说,猜想神经元的区分度应该小于256。 数字的分配 8比特有256个码位,分为…...
![](https://img-blog.csdnimg.cn/direct/011df70966a14d8cb89fdbcd22399c1e.png)
云效BizDevOps上手亲测
云效BizDevOps上手亲测 什么是云效项目协作Projex配置2023业务空间原始诉求字段原始诉求工作流创建原始诉求配置2023产品空间创建主题业务原始诉求关联主题配置2023研发空间新建需求需求关联主题 与传统区别云效开发流程传统开发流程云效BizDevOps 操作体验 什么是云效 在说到…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
亚太杯赛题思路发布(中文版)
导读: 本文将继续修炼回归模型算法,并总结了一些常用的除线性回归模型之外的模型,其中包括一些单模型及集成学习器。 保序回归、多项式回归、多输出回归、多输出K近邻回归、决策树回归、多输出决策树回归、AdaBoost回归、梯度提升决策树回归…...
![](https://www.ngui.cc/images/no-images.jpg)
【Linux】部署 GitLab 服务
1、配置实验环境 安装git apt install git 安装docker apt install docker 安装tree apt install tree 2、安装 Gitlab 下载官方库与安装包 下载官方库的安装脚本 curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bas…...
![](https://img-blog.csdnimg.cn/img_convert/0cbaba4304875318ab36064bb957f4fe.png)
信息学奥赛初赛天天练-41-CSP-J2021基础题-n个数取最大、树的边数、递归、递推、深度优先搜索应用
PDF文档公众号回复关键字:20240701 2021 CSP-J 选择题 单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项) 4.以比较作为基本运算,在N个数中找出最大数,最坏情况下所需要的最少比…...
![](https://img-blog.csdnimg.cn/direct/39ac5a84d9f04ae39075c9ab5c6accce.png)
【论文复现|智能算法改进】基于自适应动态鲸鱼优化算法的路径规划研究
目录 1.算法原理2.改进点3.结果展示4.参考文献5.代码获取 1.算法原理 SCI二区|鲸鱼优化算法(WOA)原理及实现【附完整Matlab代码】 2.改进点 非线性收敛因子 WOA 主要通过控制系数向量 A 来决定鲸鱼是搜索猎物还是捕获猎物,即系数向量 A 可…...
![](https://img-blog.csdnimg.cn/direct/70e62a1b507e4708bf56d8dd82f0776f.png)
20240702 每日AI必读资讯
🔍GPTPdf:使用类似GPT-4o的多模态LLM分析PDF文件 - 使用类似 GPT-4o 多模态模型解析 PDF 文件,转换为 Markdown 格式。 - 代码简洁高效,仅293行。 - 解析结果几乎完美包括排版、数学公式、表格、图片、图表等内容。 …...
![](https://img-blog.csdnimg.cn/direct/9b12c404db9941d892ab77e3467a6d7d.png)
java生成excel,uniapp微信小程序接收excel并打开
java引包,引的是apache.poi <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version></dependency> 写一个测试类,把excel输出到指定路径 public s…...
![](https://img-blog.csdnimg.cn/direct/67b871add0714733a9b8f001b23fb968.png)
DP:斐波那契数列模型
文章目录 什么是动态规划?斐波那契数列模型的dp问题应该如何分析?有关题目1.第n个太波那契数2.三步问题3.使用最小花费爬楼梯4.解码方法 总结 什么是动态规划? 动态规划(Dynamic Programming,简称DP)是一种…...
![](https://www.ngui.cc/images/no-images.jpg)
【鸿蒙学习笔记】@Styles装饰器:定义组件重用样式
原文链接:Styles装饰器:定义组件重用样式 目录标题 [Q&A] Styles装饰器作用 [Q&A] Styles装饰器特点使用场景 [Q&A] Styles装饰器作用 Styles 表示公共样式,每个组件都可以复用。如果相同样式在各个组件里复制一遍,…...
![](https://www.ngui.cc/images/no-images.jpg)
入境游复苏拉动旅游消费,免税、餐饮、酒店等行业迎来利好
随着疫情防控常态化,中国入境旅游市场正逐步回暖,跨境游消费呈现复苏态势。有分析预测,入境游景气复苏将与消费内生增长动力恢复形成合力,对服务消费相关的多业态产生正向辐射效应。免税、餐饮、酒店作为旅游消费三大支柱行业,有望受益于入境游复苏带来的红利。免税行业迎…...
![](https://www.ngui.cc/images/no-images.jpg)
Java基础学习:深入解析Java中的位运算符
在Java中,位运算符用于对整数类型的值进行位运算。以下是Java中的位运算符: 位与(&):两位都为1时,结果为1,否则为0。 位或(|):两位中有1个为1,结果为1。 位非(~):位的反&#…...
![](https://www.ngui.cc/images/no-images.jpg)
Flutter 中的 Viewport 小部件:全面指南
Flutter 中的 Viewport 小部件:全面指南 Flutter 是一个现代的移动和 web 应用开发框架,它允许开发者以一种非常直观和高效的方式构建用户界面。在 Flutter 中,Viewport 是一个非常重要的小部件,它提供了一个滚动视口,…...
![](https://img-blog.csdnimg.cn/direct/7d02f6bb78724ba89c2d8b6ddda7e2b9.gif)
格式化字符串
自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 格式化字符串是指先制定一个模板,在这个模板中预留几个空位,然后再根据需要填上相应的内容。这些空位需要通过指定的符号标记…...
![](https://img-blog.csdnimg.cn/direct/00c20f9af7ba4e91a1f989d083267982.png)
量化交易:如何在QMT中运行Python策略并在VSCode中高效调试?
哈喽,大家好,我是木头左! 为何选择QMT和VSCode进行量化策略开发? 在量化交易的世界里,选择正确的工具与拥有优秀的策略同等重要。调用用Visual Studio Code(简称VSCode)或pycharm,方…...
![](https://www.ngui.cc/images/no-images.jpg)
python class __getattr__ 与 __getattribute__ 的区别
在Python中,__getattr__是一个特殊的方法,用于处理访问不存在的属性时的行为。它通常在类中被重写,以便在属性访问失败时提供自定义的处理逻辑。 __getattr__ 的使用 1. 基本用法 __getattr__方法在访问类实例的某个不存在的属性时自动调用…...