【前置内容】Spring 学习笔记全系列传送门:
【前置内容】SpingMVC 学习笔记全系列传送门:
创建新模块,选择Spring初始化,并配置模块相关基础信息
选择当前模块需要使用的技术集
开发控制器类
运行自动生成的Application类
选择 Spring Initializr ,用来创建 SpringBoot 工程
打包方式这里需要设置为 Jar
选中 Web,然后勾选 Spring Web
Java 版本选 Java8
pom.xml 文件预览
需要注意:
- 父包 spring-boot-starter-parent 的版本手动更改为了 2.6.3,jdk版本1.8 与 spring boot 3.0.0 版本不匹配,会报错
- <java.version> 修改为了1.8
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>priv.dandelion</groupId>
<artifactId>springboot_01_quickstart</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
@RestController
@RequestMapping("/books")
public class BookController {
@GetMapping("/{id}")
public String getById(@PathVariable Integer id) {
System.out.println("id = " + id);
return "hello boot!";
}
}
直接运行引导类即可
坐标
Spring 程序中的坐标需要自己编写,而且坐标非常多SpringBoot 程序中的坐标是我们在创建工程时进行勾选自动生成的web3.0配置类
Spring 程序需要自己编写这个配置类。这个配置类大家之前编写过,肯定感觉很复杂SpringBoot 程序不需要我们自己书写配置类
注意:基于Idea的
Spring Initializr快速构建SpringBoot工程时需要联网。
Spring/SpringMVC 程序的配置类需要自己书写。而 SpringBoot 程序则不需要书写。SpringBoot官网:https://spring.io/projects/spring-boot
点击下方的 Quickstart 中的 Spring Initializr,开始快速创建项目,如下图所示

- SpringBoot 程序服务器运行在本机
- 当进行前后端联调时,按理说前端需要连接后端开发的机器,比较麻烦
- 是否有更好的方式?
后端可以将 SpringBoot 工程打成 jar 包
jar 包运行不依赖于 Tomcat 和 Idea也可以正常运行jar 包在运行过程中连接和我们自己程序相同的 Mysql 数据库即可首先必须在 pom.xml 中配置如下插件
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
使用 Maven 的 package 指令打包就会在 target 目录下生成对应的 Jar 包
注意:
在运行 package 指令之前,最好先运行一次clean指令,防止出现问题
如果配置文件中包含中文,最好在设置中设置编码为 UTF-8 并重新检查配置文件中的中文,避免出现乱码问题导致配置文件无法使用,具体操作如下

进入 jar 包所在目录,使用 cmd 输入命令
java -jar springboot_01_quickstart-0.0.1-SNAPSHOT.jar
原始
Spring环境搭建和开发存在以下问题:
- 配置繁琐
- 依赖设置繁琐
SpringBoot程序优点恰巧就是针对Spring的缺点
- 自动配置。这个是用来解决
Spring程序配置繁琐的问题- 起步依赖。这个是用来解决
Spring程序依赖设置繁琐的问题- 辅助功能(内置服务器,...)。在启动
SpringBoot程序时既没有使用本地的tomcat也没有使用tomcat插件,而是使用SpringBoot内置的服务器。
以后需要使用技术,只需要引入该技术对应的起步依赖即可
使用 Spring Initializr 方式创建的 Maven 工程的的 pom.xml 配置文件中自动生成了很多包含 starter 的依赖,这些以来就是启动依赖,如下
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.8</version>
</parent>
<!--
...
-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
进入父工程 spring-boot-starter-parent 中,其也有一个父工程
进入 spring-boot-starter-parent 的父工程 spring-boot-dependencies 中,其中包含:
<properties...> 标签中定义了各个技术软件依赖的版本,避免了我们在使用不同软件技术时考虑版本的兼容问题。在 properties 中可以找到各种技术的版本。<dependencyManagement...> 标签是进行依赖版本锁定,但是并没有导入对应的依赖;如果我们工程需要那个依赖只需要引入依赖的 groupid 和 artifactId 不需要定义 version。<build...> 标签中对插件的版本进行了锁定本工程中添加了如下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
可以看到 spring-boot-starter-web 引入了如下依赖
- 引入了
spring-web和spring-webmvc的依赖,这就是为什么我们的工程中没有依赖这两个包还能正常使用springMVC中的注解的原因。- 而依赖
spring-boot-starter-tomcat,从名字基本能确认内部依赖了tomcat,所以我们的工程才能正常启动。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.7.8</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
<version>2.7.8</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.7.8</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.25</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.25</version>
<scope>compile</scope>
</dependency>
</dependencies>
starter
SpringBoot 中常见项目名称,定义了当前项目使用的所有项目坐标,以达到减少依赖配置的目的parent
SpringBoot 项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的实际开发
使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供
G:groupid
A:artifactId
V:version
如发生坐标错误,再指定version(要小心版本冲突)
引导类
@SpringBootApplication
public class Springboot01QuickstartApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot01QuickstartApplication.class, args);
}
}
注意
SpringBoot 在创建项目时,采用 jar 的打包方式SpringBoot 的引导类是项目的入口,运行 main 方法就可以启动项目pom.xml 中配置了 spring-boot-starter-web 依赖,而该依赖中依赖 tomcat ,所以运行 main 方法就可以使用 tomcat 启动工程。目前启动工程使用的是 tomcat 服务器,spring-boot-starter-web 依赖中依赖了 tomcat
如果要使用其他服务器就需要将 tomcat 排除,更换为 jetty
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-tomcat</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
- 当三种配置文件均存在时,优先级
application.properties>application.yml>application.yamlSpringBoot程序的配置文件名必须是application,只是后缀名不同
application.properties
server.port=80
application.yml(常用)
server:
port: 81
application.yaml
server:
port: 82
特点
YAML(YAML Ain't Markup Language),一种数据序列化格式。
相比于 xml 和 properties 而言重数据,轻格式
优点
容易阅读
yaml 类型的配置文件比 xml 类型的配置文件更容易阅读,结构更加清晰容易与脚本语言交互
以数据为核心,重数据轻格式
yaml 更注重数据,而 xml 更注重格式扩展名
.yml (主流).yaml规则
大小写敏感
属性层级关系使用多行描述,每行结尾使用冒号结束
使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键),空格的个数并不重要,只要保证同层级的左侧对齐即可。
属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
# 表示注释
示例
# 层级关系
enterprise:
name: dandelion
age: 16
tel: 12345456767
# 数组格式
subject:
- Java
- C++
- 算法
准配配置文件 application.yaml
lesson: SpringBoot
server:
port: 80
enterprise:
name: dandelion
age: 16
tel: 12345456767
subject:
- Java
- C++
- 算法
直接使用
@Value("${ }")注解进行注入,用于读取单个数据,参数为${ }包裹的数据名称的字符串
Controller 示例
@RestController
@RequestMapping("/books")
public class BookController {
// 读取数据
@Value("${lesson}")
private String lesson;
// 多级数据
@Value("${server.port}")
private Integer port;
// 数组元素
@Value("${enterprise.subject[0]}")
private String subject_00;
@GetMapping("/{id}")
public String getById(@PathVariable Integer id) {
System.out.println(lesson);
System.out.println(port);
System.out.println(subject_00);
return "hello boot!";
}
}
用于获取全部数据,使用时对
Environment类型的属性进行自动装配,使用其getProperty()方法来获取数据
Controller 示例
import org.springframework.core.env.Environment;
// import ...
@RestController
@RequestMapping("/books")
public class BookController {
// 获取全部数据,注入到Environment类型中
@Autowired
private Environment environment;
@GetMapping("/{id}")
public String getById(@PathVariable Integer id) {
//
System.out.println(environment.getProperty("lesson"));
System.out.println(environment.getProperty("server.port"));
System.out.println(environment.getProperty("enterprise.age"));
System.out.println(environment.getProperty("enterprise.subject[1]"));
return "hello boot!";
}
}
该方式用于读取任意数据,将其封装为实体类,使用注解绑定获取数据的范围,在获取时,通过自动注入获取该实体类对象并进行操作
定义数据的实体类,和配置文件中保持一致,并实现其 Getter 和 Setter
- 后续要使用自动装配,故要添加 @Component 注解,将这个类交给 Spring 管理
- 使用
@ConfigurationProperties(prefix = "enterprise")注解,prefix属性值表示读取配置文件的哪一部分数据,此处代表读取enterprise中的数据
@Component
@ConfigurationProperties(prefix = "enterprise")
public class Enterprise {
private String name;
private int age;
private String tel;
private String[] subject;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String[] getSubject() {
return subject;
}
public void setSubject(String[] subject) {
this.subject = subject;
}
@Override
public String toString() {
return "Enterprise{" +
"name='" + name + '\'' +
", age=" + age +
", tel='" + tel + '\'' +
", subject=" + Arrays.toString(subject) +
'}';
}
}
Controller 示例
@RestController
@RequestMapping("/books")
public class BookController {
@Autowired
private Enterprise enterprise;
@GetMapping("/{id}")
public String getById(@PathVariable Integer id) {
System.out.println(enterprise);
return "hello boot!";
}
}
简单书写
- 使用
spring.profiles设定环境的名称- 使用
---将不同的环境进行分隔- 使用
spring.profiles.active设置启动项目时使用的环境- 公用的配置可以写在第一部分中
#设置启用的环境
spring:
profiles:
active: test
---
#开发环境
spring:
profiles: dev
server:
port: 80
---
#测试环境
spring:
profiles: test
server:
port: 81
---
#生产环境
spring:
profiles: pro
server:
port: 82
标注书写
简单书写部分中,设定环境的名称的
spring.profiles的书写格式并不规范,规范的书写格式如下
#开发环境
spring:
config:
activate:
on-profile: dev
server:
port: 80
- 与 yaml 文件不同,properties 的多环境配置写在不同的文件中,并在主配置文件中指定使用的环境
- 多个环境使用文件名进行区分和定义,
application-环境名.properties- 公用的配置可以写
application.properties中
主配置文件application.properties
#设置启用的环境
spring.profiles.active=dev
开发环境和测试环境
开发环境application-dev.properties
server.port=80
测试环境application-test.properties
server.port=81
命令行临时配置
可以在启动指令后添加参数来临时覆盖配置文件中的内容,参数可以有多个,每一个参数的格式为
-- 空格 使用.连接的配置属性名称=属性值,如下
java -jar springboot_01_quickstart-0.0.1-SNAPSHOT.jar -- spring.profiles.active=test -- server.port=88
配置的优先级
- 如上,命令中添加参数的优先级大于原本配置文件的优先级
SpringBoot官网对于优先级已经进行了说明,参见:
- 官方文档:Externalized Configuration
- 中文手册:外化配置
命令行启动参数配置存在问题
解决方案:额外的配置类
SpringBoot 配置文件中 4 级配置文件位置及其优先级(优先级逐级提升):
说明
创建新的模块,不需要依赖
Service 实现类(接口不表)
@Service
public class BookServiceImpl implements BookService {
@Override
public void save() {
System.out.println("book save!");
}
}
测试类中(@SpringBootTest 修饰),将 BookService 注入
如果测试类和引导类的包名不一致,需要为
@SpringBootTest的 class 属性手动指定引导类的字节码对象,如@SpringBootTest(classes = Springboot02TestApplication.class)
@SpringBootTest
class Springboot02TestApplicationTests {
@Autowired
private BookService bookService;
@Test
void contextLoads() {
bookService.save();
}
}
依赖
public class Book {
private Integer id;
private String name;
private String type;
private String description;
// Getter、Setter、toString...
}
数据库SQL见前置内容,tbl_book 表SQL,此处不再赘述
dao (报错)
public interface BookDao {
@Select("select * from tbl_book where id = #{id}")
public Book getById(Integer id);
}
存在问题及解决方案
报错:No qualifying bean of type 'priv.dandelion.dao.BookDao' available
错误信息显示在
Spring容器中没有BookDao类型的bean
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'priv.dandelion.dao.BookDao' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1801) ~[spring-beans-5.3.25.jar:5.3.25]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1357) ~[spring-beans-5.3.25.jar:5.3.25]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311) ~[spring-beans-5.3.25.jar:5.3.25]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:657) ~[spring-beans-5.3.25.jar:5.3.25]
... 74 common frames omitted
原因
Mybatis会扫描接口并创建接口的代码对象交给Spring管理,但是现在并没有告诉Mybatis哪个是dao接口- 注意:Mysql驱动版本大于8.0时,需要在url连接串中配置时区
jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC,或在MySQL数据库端配置时区解决此问题
解决方案:在BookDao 接口上使用 @Mapper
@Mapper
public interface BookDao {
@Select("select * from tbl_book where id = #{id}")
public Book getById(Integer id);
}
@SpringBootTest
class Springboot03MybatisApplicationTests {
@Autowired
private BookDao bookDao;
@Test
void contextLoads() {
Book book = bookDao.getById(1);
System.out.println(book);
}
}
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db
username: root
password: 123456
添加依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
添加配置,指定使用 Druid 数据源
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db
username: root
password: 123456
type: com.alibaba.druid.pool.DruidDataSource
- 本节内容是对上一篇 SSM 整合案例的改进,可参见SpingMVC 学习笔记 - 第二章 -SSM整合案例
- 开发步骤
pom.xml:配置起步依赖,必要的资源坐标(druid)
application.yml:设置数据源、端口等
配置类:现在不需要了
dao:设置@Mapper
测试类
页面:放置在resources目录下的static目录中
依赖
引入Druid
添加依赖
<!-- TODO 添加必要的依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
config 包,对比 SSM 项目全部删除,现在不需要了
entity 包,实体,无变化
dao,添加@Mapper注解
// TODO 添加@Mapper
@Mapper
public interface BookDao {
@Insert("insert into tbl_book values(null,#{type},#{name},#{description})")
// @Insert("insert into tbl_book (type,name,description) values(#{type},#{name},#{description})")
public int save(Book book);
@Update("update tbl_book set type = #{type}, name = #{name}, description = #{description} where id = #{id}")
public int update(Book book);
@Delete("delete from tbl_book where id = #{id}")
public int delete(Integer id);
@Select("select * from tbl_book where id = #{id}")
public Book getById(Integer id);
@Select("select * from tbl_book")
public List<Book> getAll();
}
service,无变化
exception,无变化
controller,无变化
测试类,使用了 @SpringBootTest 注解,更换了使用的包
// import org.junit.Test;
import org.junit.jupiter.api.Test;
// import ...
//@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration(classes = SpringConfig.class)
// TODO 将原先使用的注解更改为 @SpringBootTest
@SpringBootTest
public class BookServiceTest {
@Autowired
private BookService bookService;
// TODO 原先使用的 @Test 注解 现在需要重新导包
@Test
public void testGetById() {
Book byId = bookService.getById(1);
System.out.println(byId);
}
@Test
public void testGetAll() {
List<Book> all = bookService.getAll();
System.out.println(all);
}
}
#TODO 配置端口和数据源相关信息
server:
port: 80
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db
username: root
password: 123456
静态资源存放在 resources 目录下的 static 目录下
配置主页 index.html
<!--TODO 配置主页-->
<script>
document.location.href="pages/books.html";
</script>

我有一个在Linux服务器上运行的ruby脚本。它不使用rails或任何东西。它基本上是一个命令行ruby脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg
最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
在编写Ruby(客户端脚本)时,我看到了三种构建更长字符串的方法,包括行尾,所有这些对我来说“闻起来”有点难看。有没有更干净、更好的方法?变量递增。ifrender_quote?quote="NowthatthereistheTec-9,acrappyspraygunfromSouthMiami."quote+="ThisgunisadvertisedasthemostpopularguninAmericancrime.Doyoubelievethatshit?"quote+="Itactuallysaysthatinthelittlebookthatcomeswithit:themo
一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal