Spring Boot简介

news2025/1/21 2:59:33

文章目录

      • 一、引言
        • 1.1 初始化配置
        • 1.2 整合第三方框架
        • 1.3 后期维护
        • 1.4 部署工程
        • 1.5 敏捷式开发
      • 二、SpringBoot介绍
      • 三、SpringBoot快速入门【`重点`】
        • 3.1 快速构建SpringBoot
          • 3.1.1 选择构建项目的类型
          • 3.1.2 项目的描述
          • 3.1.3 指定SpringBoot版本和需要的依赖
          • 3.1.4 导入依赖
          • 3.1.5 编写了Controller
          • 3.1.6 测试
        • 3.2 SpringBoot的目录结构
          • 3.2.1 pom.xml文件
          • 3.2.2 .gitignore文件
          • 3.2.3 src目录
        • 3.3 SpringBoot三种启动方式
          • 3.3.1 运行启动类的main方法
          • 3.3.2 maven命令
          • 3.3.3 采用jar包的方式运行
      • 四、SpringBoot常用注解【`重点`】
        • 4.1 @Configuration和@Bean
        • 4.2 @SpringBootApplication
      • 五、SpringBoot常用配置【`重点`】
        • 5.1 SpringBoot的配置文件格式
        • 5.2 多环境配置
        • 5.3 引入外部配置文件信息
        • 5.4 热加载
          • 5.4.1 导入依赖
          • 5.4.2 settings配置
          • 5.4.3 重新构建工程
      • 六、SpringBoot整合Mybatis【`重点`】
        • 6.1 xml方式整合Mybatis
          • 6.1.1 导入依赖。
          • 6.1.2 编写配置文件
          • 6.1.3 准备Mybatis
          • 6.1.4 测试。
        • 6.2 注解方式整合Mybatis
          • 6.2.1 创建District的Mapper接口
          • 6.2.2 添加Mybatis注解
          • 6.2.3 添加配置
          • 6.2.4 测试,查看日志
        • 6.3 SpringBoot整合分页助手
          • 6.3.1 导入依赖
          • 6.3.2 测试使用
      • 七、SpringBoot整合JSP
        • 7.1 需要导入依赖
        • 7.2 创建JSP页面
        • 7.3 创建Contorller
        • 7.4 配置前缀和后缀
      • 八、SpringBoot练习
      • 九 静态资源
      • 十 @ControllerAdvice
      • 十一、异常处理
      • 十二、跨域的三种解决方案
      • 十三、过滤器的三种配置方式
      • 十四、构建 RESTful

一、引言


1.1 初始化配置

为了使用SSM框架去开发,准备SSM框架的模板配置。

1.2 整合第三方框架

为了Spring整合第三方框架,单独的去编写xml文件。

1.3 后期维护

后期SSM项目后期xml文件特别多,维护xml文件的成本是很高的

1.4 部署工程

SSM工程部署也是很麻烦,依赖第三方的容器

1.5 敏捷式开发

基于Java的SSM开发方式是很笨重,而现在的python,php,NodeJS的敏捷式开发已经盖过Java一头

二、SpringBoot介绍


SpringBoot是由Pivotal团队研发的,SpringBoot并不是一门新技术,只是将之前常用的Spring,SpringMVC,data-jpa等常用的框架封装到了一起,帮助你隐藏这些框架的整合细节,实现敏捷开发。

SpringBoot就是一个工具集。

SpringBoot特点:

  • SpringBoot项目不需要模板化的配置。
  • SpringBoot中整合第三方框架时,只需要导入相应的starter依赖包,就自动整合了。
  • SpringBoot默认只有一个.properties的配置文件,不推荐使用xml,后期会采用.java的文件去编写配置信息。
  • SpringBoot工程在部署时,采用的是jar包的方式,内部自动依赖Tomcat容器,提供了多环境的配置。
  • 后期要学习的微服务框架SpringCloud需要建立在SpringBoot的基础上。

三、SpringBoot快速入门【重点


3.1 快速构建SpringBoot

3.1.1 选择构建项目的类型
选择构建项目的类型
在这里插入图片描述
3.1.2 项目的描述
项目的描述
在这里插入图片描述
3.1.3 指定SpringBoot版本和需要的依赖
指定SpringBoot版本和需要的依赖
在这里插入图片描述
3.1.4 导入依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- 将上述内容修改为下面的效果 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
3.1.5 编写了Controller
@RestController
public class TestController {

    @GetMapping("/test")
    public String test(){
        return "Hello SpringBoot!";
    }

}
3.1.6 测试
效果
在这里插入图片描述

3.2 SpringBoot的目录结构

3.2.1 pom.xml文件
  • 指定了一个父工程: 指定当前工程为SpringBoot,帮助我们声明了starter依赖的版本。
  • 项目的元数据:包名,项目名,版本号。
  • 指定了properties信息:指定了java的版本为1.8
  • 导入依赖:默认情况导入spring-boot-starter,spring-boot-starter-test
  • 插件:spring-boot-maven-plugin
3.2.2 .gitignore文件

默认帮我们忽略了一些文件和目录,避免提交到Git仓库中

3.2.3 src目录
-src
  -main	  
    -java
      -包名
        启动类.java			# 需要将controller类,放在启动类的子包中或者同级包下
    -resources
      -static				  # 存放静态资源的
      -templates			   # 存储模板页面的
      application.properties	 # SpringBoot提供的唯一的配置文件
  -test   				      # 只是为了测试用的

3.3 SpringBoot三种启动方式

3.3.1 运行启动类的main方法

运行main方法即可

3.3.2 maven命令
mvn spring-boot:run
3.3.3 采用jar包的方式运行

将当前项目打包成一个jar文件,并通过java -jar jar文件

四、SpringBoot常用注解【重点


4.1 @Configuration和@Bean

  • 之前使用SSM去开发时,在xml文件中编写bean标签,但是SpringBoot不推荐使用xml文件。

  • @Configuration注解相当于beans标签

  • @Bean注解相当于bean标签

  • id=“方法名 | 注解中的name属性(优先级更高)”

  • class=“方法的返回结果”

@Configuration   // 代表当前类是一个配置类
public class UserConfig {
    
    
    @Bean(name = "user1")       // 构建一个实例,放到spring容器中
    public User user(){
        User user = new User();
        user.setId(1);
        user.setName("张三");
        return user;
    }
    
    /*
    <beans ....>            @Configuration
        <bean id="user1" class="com.qf.firstspringboot.entity.User" />
    </beans>
     */
}

4.2 @SpringBootApplication

@SpringBootApplication就是一个组合注解:

  • @SpringBootConfiguration就是@Configuration注解,代表启动类就是一个配置类。
  • @EnableAutoConfiguration帮你实现自动装配的,SpringBoot工程启动时,运行一个SpringFactoriesLoader的类,加载META-INF/spring.factories配置类(已经开启的),通过SpringFactoriesLoader中的load方法,以for循环的方式,一个一个加载。
    • 好处:无需编写大量的整合配置信息,只需要按照SpringBoot提供好了约定去整合即可。
    • 坏处:如果说你导入了一个starter依赖,那么你就需要填写他必要的配置信息。
    • 手动关闭自动装配指定内容:@SpringBootApplication(exclude = QuartzAutoConfiguration.class)
  • @ComponentScan就相当于<context:component-scan basePackage=“包名” />,帮助扫描注解的。

五、SpringBoot常用配置【重点


5.1 SpringBoot的配置文件格式

SpringBoot的配置文件支持properties和yml,甚至他还支持json。

更推荐使用yml文件格式:

  1. yml文件,会根据换行和缩进帮助咱们管理配置文件所在位置

  2. yml文件,相比properties更轻量级一些

yml文件的劣势:

  1. 严格遵循换行和缩进

  2. 在填写value时,一定要在: 后面跟上空格

类型安全的属性注入。

传统 Spring 中的属性注入有两种:

  1. xml
<context:property-placeholder location="classpath:userinfo.properties"/>

2.java

@Component
//@PropertySource 注解的作用等价于 <context:property-placeholder location=""/>
@PropertySource("classpath:book.properties")
public class Book {
    @Value("${book.name}")
    private String name;
    @Value("${book.author}")
    private String author;

两种方式都是通过 @Value 注解将值注入到具体的属性上。

这种方式有一个缺陷:属性名千万不能写错。要是属性很多,就容易写错。

Spring Boot 中推出了类型安全的属性注入,这种方式可以自动识别属性名称然后自动注入。

容器配置

5.2 多环境配置

在application.yml文件中添加一个配置项:

spring:
  profiles:
    active: 环境名

在resource目录下,创建多个application-环境名.yml文件即可

在部署工程时,通过 java -jar jar文件 --spring.profiles.active=环境

5.3 引入外部配置文件信息

和传统的SSM方式一样,通过@Value的注解去获取properties/yml文件中的内容。

如果在yml文件中需要编写大量的自定义配置,并且具有统一的前缀时,采用如下方式

// Java程序
@ConfigurationProperties(prefix = "aliyun")
@Component
@Data
public class AliyunProperties {

   private String xxxx;
    
   private ... ...;
}

// 配置文件
aliyun:
  xxxx: xxxxxxxxx
  ...

5.4 热加载

5.4.1 导入依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>
5.4.2 settings配置
修改settings中的配置
在这里插入图片描述
5.4.3 重新构建工程
build
在这里插入图片描述

六、SpringBoot整合Mybatis【重点


6.1 xml方式整合Mybatis

xml方式在编写复杂SQL时,更适合

6.1.1 导入依赖。
<!--        mysql驱动-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

<!--        druid连接-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</dependency>

<!--        mybatis-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>
6.1.2 编写配置文件
// 准备实体类
@Data
public class Air  implements Serializable {

	private Integer id;

	private Integer districtId;

	private java.util.Date monitorTime;

	private Integer pm10;

	private Integer pm25;

	private String monitoringStation;

	private java.util.Date lastModifyTime;

}
// ================================================
@Data
public class District  implements Serializable {

	private Integer id;

	private String name;

}
6.1.3 准备Mybatis
// 1. 接口
public interface AirMapper {

    List<Air> findAll();

}

// 2. 在启动类中添加直接,扫描Mapper接口所在的包
@MapperScan(basePackages = "com.qf.firstspringboot.mapper")

// 3. 准备映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qf.firstspringboot.mapper.AirMapper">

<!--    List<Air> findAll();-->
    <select id="findAll" resultType="Air">
        select * from air
    </select>

</mapper>


//4. yml文件
<!-- 添加yml文件配置信息 -->
# mybatis配置
mybatis:
  # 扫描映射文件
  mapper-locations: classpath:mapper/*.xml
  # 配置别名扫描的包
  type-aliases-package: com.qf.firstspringboot.entity
  configuration:
    # 开启驼峰映射配置
    map-underscore-to-camel-case: true
# 连接数据库的信息
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql:///air?serverTimezone=UTC
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource    
6.1.4 测试。
class AirMapperTest extends FirstSpringbootApplicationTests {

    @Autowired
    private AirMapper airMapper;

    @Test
    void findAll() {
        List<Air> list = airMapper.findAll();
        for (Air air : list) {
            System.out.println(air);
        }
    }
}

6.2 注解方式整合Mybatis

注解方式在编写配置简单,简单SQL推荐使用

6.2.1 创建District的Mapper接口
public interface DistrictMapper {
    
    List<District> findAll();
}
6.2.2 添加Mybatis注解

针对增删改查:@Insert,@Delete,@Update,@Select

还是需要在启动类中添加@MapperScan注解

@Select("select * from district")
List<District> findAll();


@Select("select * from district where id = #{id}")
District findOneById(@Param("id") Integer id);
6.2.3 添加配置
// yml文件
logging:
  level:
    com.qf.firstspringboot.mapper: DEBUG
6.2.4 测试,查看日志
class DistrictMapperTest extends FirstSpringbootApplicationTests {

    @Autowired
    private DistrictMapper mapper;

    @Test
    void findAll() {
        List<District> list = mapper.findAll();
        for (District district : list) {
            System.out.println(district);
        }
    }

    @Test
    void findOneById() {
        District district = mapper.findOneById(5);
        System.out.println(district);
    }
}

6.3 SpringBoot整合分页助手

6.3.1 导入依赖
<!--        pageHelper依赖-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.5</version>
</dependency>
6.3.2 测试使用
@Test
public void findByPage(){
    //1. 执行分页
    PageHelper.startPage(1,5);

    //2. 执行查询
    List<Air> list = airMapper.findAll();

    //3. 封装PageInfo对象
    PageInfo<Air> pageInfo = new PageInfo<>(list);

    //4. 输出
    for (Air air : pageInfo.getList()) {
        System.out.println(air);
    }
}

七、SpringBoot整合JSP


jsp、freemarker、thymeleaf

7.1 需要导入依赖

<!--        JSP核心引擎依赖-->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!--        JSTL-->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

7.2 创建JSP页面

创建webapp以及WEB-INF去存放JSP页面
在这里插入图片描述

7.3 创建Contorller

// Controller
@Controller
public class JspController {

    @GetMapping("/index")
    public String index(Model model){
        model.addAttribute("name","张三");
        return "index";
    }
}

7.4 配置前缀和后缀

spring:
  mvc:
    # 视图的前缀和后缀
    view:
      prefix: /WEB-INF/
      suffix: .jsp

八、SpringBoot练习


页面查询客户信息从ES中查询

完成客户模块的增删改,并且同步到ES中。

练习业务图
在这里插入图片描述

九 静态资源

Spring Boot 中默认提供了五个静态资源存储路径:

  • classpath:/META-INF/resources/
  • classpath:/resources/
  • classpath:/static/
  • classpath:/public/
  • /(webapp)

五个位置,优先级依次降低。

如果需要自定义静态资源位置,有两种方式:

  1. application.properties 中进行配置

    spring.mvc.static-path-pattern=/static/**
    spring.web.resources.static-locations=classpath:static/
    
  2. 写代码配置

    @Configuration
    public class WebMvcConfig implements WebMvcConfigurer {
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/static/**")
                    .addResourceLocations("classpath:static/");
        }
    }
    

十 @ControllerAdvice

三种用法:

  1. 全局异常处理
  2. 定义全局数据
  3. 请求参数预处理

十一、异常处理

整体来说两种方式:

  1. 静态页面展示异常
    • 明确展示(推荐)
    • 模糊展示
  2. 动态页面展示异常
    • 明确展示
    • 模糊展示(推荐)

具体查找方式:

  1. 先找明确的,再找模糊的
  2. 先找动态的,再找静态的

十二、跨域的三种解决方案

  1. @CrossOrigin 注解
  2. 全局配置
  3. 配置过滤器

十三、过滤器的三种配置方式

  1. 通过 @Component 注解注入到 Spring 容器中。这种方式有一个缺陷,无法配置拦截地址。但是这种方式可以通过 @Order 注解配置优先级。
  2. 使用 @WebFilter+@ServletComponentScan 注解的方式,这种方式可以配置拦截路径,但是无法配置优先级。
  3. FilterRegistrationBean:这种方式既可以配置拦截路径,也可以配置优先级。

十四、构建 RESTful

Spring Boot 中提供了一个快速构建 RESTful 服务的工具,就是

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>

该工具可以配合 Jpa、MongoDB 以及 ElasticSearch 一起使用。

以 Jpa 为例,使用时,只需要三步:

  1. 在 application.properties 文件中配置数据库和 JPA的基本信息。
  2. 提供一个实体类。
  3. 提供一个空接口。

然后启动项目,系统会自动生成如下接口。

  • GET http://localhost:8080/users ,这是一个分页查询接口,默认查询第一页,每页20条数据。users 是实体类名首字母小写后面加上 s。可以自行添加分页参数:http://localhost:8080/users?size=3&page=0
  • GET http://localhost:8080/users/1,这个是根据id查询数据的接口
  • POST http://localhost:8080/users,这个是添加数据的接口,添加的参数形式是 JSON。
  • PUT http://localhost:8080/users/6,这个是根据 id 修改数据的接口,参数的提交方式也是 JSON。
  • DELETE http://localhost:8080/users/6,这个是根据 id 删除数据。
  1. 定制请求路径。

    • exported:是否暴露当前接口。
    • collectionResourceRel:生成的数据集合的名字,默认是 users。
    • itemResourceRel:生成的每一项数据的名字,默认是 user。
    @RepositoryRestResource(exported = true,path = "us",collectionResourceRel = "us",itemResourceRel = "u")
    public interface UserDao extends JpaRepository<User, Long> {
    }
    
  2. 定制请求方法。

    @RepositoryRestResource(exported = true,path = "us",collectionResourceRel = "us",itemResourceRel = "u")
    public interface UserDao extends JpaRepository<User, Long> {
        List<User> findUserByUsernameStartingWith(@Param("username") String username);
    }
    

    此时,可以通过如下地址查看所有的查询接口。http://localhost:8080/us/search。

    可以看到,自定义的接口,调用方式如下:http://localhost:8080/us/search/findUserByUsernameStartingWith?username=王

    还可以定制方法名:

    @RepositoryRestResource(exported = true,path = "us",collectionResourceRel = "us",itemResourceRel = "u")
    public interface UserDao extends JpaRepository<User, Long> {
        @RestResource(path = "byname")
        List<User> findUserByUsernameStartingWith(@Param("username") String username);
    }
    

    此时的查询路径:http://localhost:8080/us/search/byname?username=王

  3. 其他配置

    # 配置统一前缀
    spring.data.rest.base-path=/api
    # 配置默认的页数
    spring.data.rest.default-page-size=0
    # 每页查询的记录数
    spring.data.rest.max-page-size=20
    # 分页参数的 key
    spring.data.rest.page-param-name=page
    # 分页参数 size 的key
    spring.data.rest.limit-param-name=size
    # 排序的参数的 key
    spring.data.web.sort.sort-parameter=sort
    # 创建成功时是否返回数据
    spring.data.rest.return-body-on-create=true
    # 更新成功时是否返回数据
    spring.data.rest.return-body-on-update=true
    

页面模板技术:

  • Jsp
  • Freemarker(SpringBoot2.2之前 .ftl,之后是 .ftlh)
  • Thymeleaf

JPA:Java Persistence API

Hibernate/OpenLink/EclipseLink。。。

JPA

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/925400.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

突破电商单一垂直赛道:Chewy宠物用品如何飙升至美国市场50%以上

《美国商业资讯》2023年5月31日报道&#xff0c;宠物品牌Chewy的最新市值为 143 亿美元&#xff0c;毛利率同比增长90个基点&#xff0c;在美国的宠物电商市场&#xff0c;实现超过50%的市场占有率。 Chewy是一个涵盖各类宠物用品与宠物医疗的新兴品牌&#xff0c;后疫情时代迎…

spring之Spring测试与集成

Spring测试与集成 摘要引言词汇解释详细介绍单元测试和集成测试单元测试和集成测试编写单元测试和集成测试代码单元测试示例集成测试示例 Spring Test和JUnit简介编写使用Spring Test和JUnit的测试代码UserService示例单元测试示例 使用Spring Test和JUnit 注意事项总结参考资料…

数据结构基础:P3-树(上)----编程作业02:List Leaves

本系列文章为浙江大学陈越、何钦铭数据结构学习笔记&#xff0c;系列文章链接如下&#xff1a; 数据结构(陈越、何钦铭)学习笔记 文章目录 一、题目描述二、整体思路与实现代码 一、题目描述 题目描述&#xff1a; 给定一棵树&#xff0c;按照从上到下、从左到右的顺序列出所有…

c语言练习题26:调整数组使奇数位于偶数前面

调整数组使奇数位于偶数前面 题目&#xff1a; 思路&#xff1a; 代码&#xff1a; #include<stdio.h> #include<string.h> void func(int* arr, int len) {int left 0;int right len - 1;while (left < right) {while (left < right && arr[lef…

1427205-93-3|Fmoc-Ser(Ac4Manα1-2Ac3Manα1-2Ac3Manα)-OH是指糖类与氨基酸通过糖苷键连接而成的化合物

糖基化氨基酸是指糖类与氨基酸通过糖苷键连接而成的化合物。这种糖苷键的形成是由于糖类的末端羟基与氨基酸的氨基之间发生脱水缩合反应糖。基化氨基酸具有多种生物学功能&#xff0c;如作为酶、激素和抗体的成分&#xff0c;参与细胞识别和信息传递等。 在生物体内&#xff0c…

resultType和parametertype的区别

文章目录 1. resultType&#xff1a;2. parameterType&#xff1a;3. 总结看这里就够啦&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;举例 1. resultType&#xff1a; 返回值类型&#xff0c;类型即为对象类型&#xff0c;返回结果字段与对象属性…

视频云存储/安防监控视频智能分析网关V3:占道经营功能详解

违规占道经营者经常会在人流量大、车辆集中的道路两旁摆摊&#xff0c;导致公路交通堵塞&#xff0c;给居民出行的造成不便&#xff0c;而且违规占路密集的地方都是交通事故频频发生的区域。 TSINGSEE青犀视频云存储/安防监控视频/AI智能分析网关V3运用视频AI智能分析技术&…

基于Java+SpringBoot+vue前后端分离夕阳红公寓管理系统设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

如何利用SFTP协议远程实现更安全的文件传输 ——【内网穿透】

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《高效编程技巧》《cpolar》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 1. 安装openSSH1.1 安装SSH1.2 启动ssh 2. 安装cpolar2.1 配置termux服务 3. 远程SFTP连接配置3.1 查看生成的随机公…

反转单链表的两种写法

一、反转链表&#xff08;循环写法&#xff09; #include<stdio.h> #include<stdlib.h> struct node{int val;node *next; }; void insert_tail(struct node **ptr, struct node *nd){while(*ptr ! NULL) {ptr &(*ptr)->next;}*ptr nd; } void traverse(…

Java网络编程(三)NIO|Netty实现多人聊天功能

NIO实现 服务端 package com.bierce.io; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.*; import java.nio.charset.Charset; import java.util.Iterator; import java.util.Set; //服务器端 publ…

记录--为什么要使用 package-lock.json?

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 前言 随着JavaScript在现代软件开发中的日益重要地位&#xff0c;Node.js生态系统中的npm成为了不可或缺的工具。在npm管理依赖的过程中&#xff0c;package-lock.json文件的作用日益凸显。本文将深入…

校园跑腿小程序开发方案详解

校园跑腿小程序App的功能有哪些&#xff1f; 1、用户注册与登录 用户可以通过手机号、社交账号等方式进行注册和登录&#xff0c;以便使用跑腿服务。 2、下单与发布任务 用户可以发布各类跑腿任务&#xff0c;包括食品外卖、快递代收、文件送达、帮我买、帮我取、帮我送等等…

【沐风老师】如何在3dMax中将3D物体转化为样条线构成的对象?

在3dMax中如何把三维物体转化为由样条线构成的对象&#xff1f;通常这样的场景会出现在科研绘图或一些艺术创作当中&#xff0c;下面给大家详细讲解一种3dmax三维物体转样条线的方法。 第一部分&#xff1a;用粒子填充3D对象&#xff1a; 1.创建一个三维对象&#xff08;本例…

CSS中如何改变鼠标指针样式(cursor)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ CSS中改变鼠标指针样式&#xff08;cursor&#xff09;⭐ 示例&#xff1a;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅…

1.linux的常用命令

目录 一、Linux入门 二、Linux文件系统目录 三、Linux的vi和vim的使用 四、Linux的关机、重启、注销 四、Linux的用户管理 五、Linux的运行级别 六、Linux的文件目录指令 七、Linux的时间日期指令 八、Linux的压缩和解压类指令 九、Linux的搜索查找指令 ​​​​​​…

idea新建Java-maven项目时,出现Dependency ‘ xxx(jar包名)‘ not found的解决方案

项目场景&#xff1a; 项目场景&#xff1a;使用idea创建maven项目时&#xff0c;导入简单依赖时&#xff08;本文以mysql-connector-java为例&#xff09;。 问题描述 问题&#xff1a; 首先&#xff0c;在创建新的maven项目中&#xff0c;出现下列两种情况&#xff1a; &am…

什么是响应式图片?如何在网页中实现响应式图片?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 响应式图片&#xff08;Responsive Images&#xff09;⭐ 实现响应式图片的方法1. 使用<img>标签的srcset属性2. 使用<picture>元素3. 使用CSS的max-width属性4. 使用响应式图片库 ⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&…

cs231n assignment3 q4 Generative Adversarial Networks

文章目录 嫌墨迹直接看代码Q4 :Generative Adversarial Networkssample_noise题面解析代码输出 discriminator题面解析代码输出 generator题面解析代码输出 discriminator_loss题面解析代码输出 generator_loss题面解析代码 get_optimizer题面解析代码输出 ls_discriminator_lo…

【Unity3D赛车游戏】【四】在Unity中添加阿克曼转向,下压力,质心会让汽车更稳定

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…