五、Spring Boot - 上手篇(1)

🌻🌻目录

  • 一、快速入门:创建第一个SpringBoot 工程
    • 1.1 点击File--->New--->Project...
    • 1.2 选择版本和依赖的相关骨架包
    • 1.3 设置项目保存目录
    • 1.4 项目创建完成,工程主界面如下
    • 1.5 项目说明
    • 1.6 启动项目
    • 1.7 编写 HelloController
  • 二、SpringBoot 基于web应用开发
    • 2.1 SpringBoot json支持
    • 2.2 SpringBoot 请求传递参数
      • 2.1.1 第一类:请求路径传参
      • 2.1.2 第二类:@RequestBody 参数
    • 2.3 SpringBoot 静态资源
      • 2.3.1 默认静态资源映射
      • 2.3.2 自定义静态资源访问
  • 三、SpringBoot 属性配置
    • 3.1 项目默认属性配置文件所在位置及配置实例
    • 3.2 实体类属性赋值
    • 3.3 自定义配置文件
    • 3.4 多环境配置文件

Spring Boot 涉及底层核心源码,建议先看上手篇

一、快速入门:创建第一个SpringBoot 工程

前提电脑安装了jdk,maven并且在IDEA中作了配置

1.1 点击File—>New—>Project…

创建可以参考 Spring Boot

创建SpringBoot时候报错解决,------------------------- 官网创建下载导入地址

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

输入maven属性,注意Artifact不要出现大写、特殊字符.

1.2 选择版本和依赖的相关骨架包

选择SpringBoot版本,选择项目需要依赖的相关骨架包

注意:一定要选择springBoot版本2.1.9(没有的话选择低版本,下面手动改)

在这里插入图片描述

1.3 设置项目保存目录

在这里插入图片描述

1.4 项目创建完成,工程主界面如下

在这里插入图片描述

手动修改版本:

在这里插入图片描述

1.5 项目说明

  • (1)默认有个DemoApplication类,里面是spring boot的载入函数
  • (2)resource目录下有个application.properties文件,这个是Spring boot的配置文件
  • (3)test目录下有个测试类DemoApplicationTests,这个是spring boot的单元测试
  • (4)pom.xml文件
<?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.1.9.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><!-- Generated by https://start.springboot.io --><!-- 优质的 spring/boot/data/security/cloud 框架中文文档尽在 => https://springdoc.cn --><groupId>com.gansu</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><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>

注意观察

  • 一个继承spring-boot-starter-parent,

两个依赖,

  • spring-boot-starter-web web 项目依赖必须,
  • spring-boot-starter-test spring boot 项目单元测试依赖

注意,很多人配置的maven加速镜像,其中很多配置的阿里云maven镜像,在这会有找不到最新Springboot相关包的问题,也可以把加速镜像指向华为云:

2. Maven镜像配置

1.6 启动项目

通过spring boot的启动类,这里是DemoApplication,选中类,右键选择–>Run‘DemoApplication

在这里插入图片描述

在控制台出现如下输出:

在这里插入图片描述

找到如下文字,表明SpringBoot已经成功启动:

在这里插入图片描述

  • tomcat启动在8080端口,http协议,启动花费了3.184秒
    打开浏览器,输入地址:http://localhost:8080 ,出现如下画面

在这里插入图片描述

出现上图404错误是正常的,因为我们什么都没写。

1.7 编写 HelloController

在这里插入图片描述

注意HelloController所在包,必须在com.gansu.demo包,或者子包下面。

package com.gansu.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
public class HelloController {@RequestMapping("/hello")@ResponseBodypublic String hello(){return "Hello Spring boot!!!";}
}

重启应用,看控制台输出:

重启发现刚才写的hello已经映射出来了
访问http://localhost:8080/hello

在这里插入图片描述

二、SpringBoot 基于web应用开发

2.1 SpringBoot json支持

(1)、创建实体bean Car

Lombok使用

  • 1、导入依赖库

在这里插入图片描述

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.6</version>
</dependency>
  • 2、安装插件

在这里插入图片描述

  • 3、在实体bean使用插件注解或直接生成
    @Data //get 、set
    @AllArgsConstructor //所有参数的有参数构造函数
    @NoArgsConstructor //无参数构造函数

在这里插入图片描述

package com.gansu.pojo;import java.io.Serializable;public class Car implements Serializable {private Integer id;private String name;private Float price;public Car() {}public Car(Integer id, String name, Float price) {this.id = id;this.name = name;this.price = price;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Float getPrice() {return price;}public void setPrice(Float price) {this.price = price;}@Overridepublic String toString() {return "Car{" +"id=" + id +", name='" + name + '\'' +", price=" + price +'}';}
}

(2)、创建Controller CarController

在这里插入图片描述

package com.gansu.controller;import com.gansu.pojo.Car;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/car")
public class CarController {@RequestMapping("/findOne")public Car findOne(){Car car = new Car(1,"喵喵",23F);return car;}
}

说明:@RestController 注解,等于@Controller 与 @ResponseBody 一起使用

(3)、测试获取单个对象json

开启postman,设置发出get请求,请求地址:

http://localhost:8080/car/findOne

在这里插入图片描述

在这里插入图片描述

(4)、修改Controller CarController新增返回list集合方法

在这里插入图片描述

@RequestMapping("/getAllCar")
public List<Car> getAllCar(){ArrayList list = new ArrayList();Car car1 = new Car(1,"喵喵1",231F);Car car2 = new Car(2,"喵喵2",232F);Car car3 = new Car(3,"喵喵3",233F);Car car4 = new Car(4,"喵喵4",234F);Car car5 = new Car(5,"喵喵5",235F);Car car6 = new Car(6,"喵喵6",236F);list.add(car1);list.add(car2);list.add(car3);list.add(car4);list.add(car5);list.add(car6);return list;
}

(5)、测试获取集合多个对象json

开启postman,设置发出get请求,请求地址:http://localhost:8080/car/getAllCar

在这里插入图片描述

在这里插入图片描述

2.2 SpringBoot 请求传递参数

2.1.1 第一类:请求路径传参

@PathVariable 获取路径参数。即url/{id} 这种形式
@RequestParam 获取查询参数。即url?name=value 这种形式

(1)、修改Controller CarController新增接收参数,返回单个对象方法

在这里插入图片描述

@RequestMapping("/getCarById/{id}")
public Car geteCarById(@PathVariable("id") Integer id, @RequestParam("name") String name){Car car = new Car();car.setId(id);car.setName(name);car.setPrice(999.9f);return car;
}

(2)、测试传递参数获取单个对象json

在这里插入图片描述

2.1.2 第二类:@RequestBody 参数

(3)、修改Controller CarController新增接收封装对象参数,返回单个及多个对象方法

在这里插入图片描述

@RequestMapping("/getCar")
public Car getCar(Car car){return car;
}

(6)、测试传递普通body参数获取单个对象json

开启postman,设置发出post请求,请求地址:
http://localhost:8080/car/getCar

请求参数,选择body

在这里插入图片描述

2.3 SpringBoot 静态资源

2.3.1 默认静态资源映射

Spring Boot 对静态资源映射提供了默认配置
Spring Boot 默认将 /** 所有访问映射到以下目录:

  • classpath:/static
  • classpath:/public
  • classpath:/resources
  • classpath:/META-INF/resources
    如:在resources目录下新建 publicresourcesstatic 三个目录,并分别放入 a.jpg b.jpg c.jpg 图片

图片素材:👇👇

在这里插入图片描述

在这里插入图片描述

浏览器分别访问:

  • http://localhost:8080/a.jpg
  • http://localhost:8080/b.jpg
  • http://localhost:8080/c.jpg

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

均能正常访问相应的图片资源。那么说明,Spring Boot 默认会挨个从 public resources static 里面找是否存在相应的资源,如果有则直接返回。

2.3.2 自定义静态资源访问

试想这样一种情况:一个网站有文件上传文件的功能,如果被上传的文件放在上述的那些文件夹中会有怎样的后果?
网站数据与程序代码不能有效分离;当项目被打包成一个.jar文件部署时,再将上传的文件放到这个.jar文件中是有多么低的效率;网站数据的备份将会很痛苦。此时可能最佳的解决办法是将静态资源路径设置到磁盘的基本个目录。

第一种方式

  • 1、配置类

在这里插入图片描述

package com.gansu.config;import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class WebMvcConfig implements WebMvcConfigurer {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/myPic/**").addResourceLocations("file:D:\\develop\\ideaIU-2018.2.5\\ideaIU-2018.2.5\\idea_workspace\\pic\\");}
}

上面的意思就是:将所有D:\develop\ideaIU-2018.2.5\ideaIU-2018.2.5\idea_workspace\pic\ 访问都映射到/myPic/** 路径下

2、重启项目
例如,在D:\develop\ideaIU-2018.2.5\ideaIU-2018.2.5\idea_workspace\pic\中有一张a.jpg图片

在这里插入图片描述

在浏览器输入:http://localhost:8080/myPic/a.jpg即可访问。

在这里插入图片描述

第二种方式

首先,我们配置application.properties

web.upload-path=D:/develop/ideaIU-2018.2.5/ideaIU-2018.2.5/idea_workspace/pic/
spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,\
classpath:/static/,classpath:/public/,file:${web.upload-path}

注意:
web.upload-path:这个属于自定义的属性,指定了一个路径,注意要以/结尾;
spring.mvc.static-path-pattern=/**:表示所有的访问都经过静态资源路径;
spring.resources.static-locations:在这里配置静态资源路径,前面说了这里的配置是覆盖默认配置,所以需要将默认的也加上否则static、public等这些路径将不能被当作静态资源路径,在这个最末尾的file:${web.upload-path}之所有要加file:是因为指定的是一个具体的硬盘路径,其他的使用classpath指的是系统环境变量。

然后,重启项目
例如,在D:/develop/ideaIU-2018.2.5/ideaIU-2018.2.5/idea_workspace/pic/中有一张a.jpg图片

在浏览器输入:http://localhost:8080/a.jpg 即可访问。

在这里插入图片描述

三、SpringBoot 属性配置

Spring Boot并不真正是所谓的『零配置』,他的理念是“习惯优于配置”采用了一些默认的习惯性配置,让你无需手动进行配置,从而让你的项目快速运行起来。所以要想玩转Spring Boot,了解这些默认配置还是必不可少的。

3.1 项目默认属性配置文件所在位置及配置实例

创建Spring Boot项目时,会默认生成一个全局配置文件application.properties(可以修改后缀为.yml),在src/main/resources目录下或者类路径的/config下。我们可以通过修改该配置文件来对一些默认配置的配置值进行修改。

在这里插入图片描述

【修改默认配置】

  • 1、spring boot 开发web应用的时候,默认tomcat的启动端口为8080,如果需要修改默认的端口,则需要在application.yml添加以下记录:
server:port: 8081

重启项目,启动日志可以看到:Tomcat started on port(s): 8081 (http) 启动端口为8081 ,浏览器中访问 http://localhost:8081 能正常访问。

在这里插入图片描述

在这里插入图片描述

  • 2、spring boot 开发web应用的时候,访问路径为 /,如果需要修改访问路径,则需要在application.yml添加以下记录:

在这里插入图片描述

server:port: 8081servlet:context-path: /demo

重启项目,启动日志就可以看到:Tomcat started on port(s): 8081(http) with context path ‘/demo’,浏览器中访问 http://localhost:8081/demo/a.jpg能正常访问。

在这里插入图片描述

3.2 实体类属性赋值

当属性参数变多的时候,我们习惯创建一个实体,用实体来统一接收赋值这些属性。

(1)、定义配置文件

在这里插入图片描述

server:port: 8081servlet:context-path: /demoUserBody:username: zhangsanpassword: 123age: 22birthday: 2024-7-27spring:jackson:date-format: yyyy-MM-ddtime-zone: GMT+8

(2)、创建实体类 UserBody

在这里插入图片描述

package com.gansu.pojo;import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.format.annotation.DateTimeFormat;import java.io.Serializable;
import java.util.Date;@Configuration
@ConfigurationProperties(prefix = "userbody")    //prefix 参数必须全部为小写
public class UserBody implements Serializable {private String username;private String password;private Integer age;@DateTimeFormat(pattern = "yyyy-MM-dd")private Date birthday;public UserBody() {}public UserBody(String username, String password, Integer age, Date birthday) {this.username = username;this.password = password;this.age = age;this.birthday = birthday;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}@Overridepublic String toString() {return "UserBody{" +"username='" + username + '\'' +", password='" + password + '\'' +", age=" + age +", birthday='" + birthday + '\'' +'}';}
}

需要在实体类上增加注解@ConfigurationProperties,并指定prefix前缀。prefix为全小写。

(3)、编写Controller调用属性bean

在这里插入图片描述

package com.gansu.controller;import com.gansu.pojo.UserBody;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@EnableConfigurationProperties({UserBody.class})
public class UserBodyController {@AutowiredUserBody userBody;@GetMapping("/getUser")public String getUser(){return userBody.toString();}
}

EnableConfigurationProperties注解需要加在调用类上,或者加在启动类SpringbootSimpleApplication上也可以。

访问地址:http://localhost:8081/demo/getUser

可以看到返回值:

在这里插入图片描述

3.3 自定义配置文件

application.yml是系统默认的配置文件,当然我们也可以创建自定义配置文件,在路径src/main/resources下面创建文件test.properties

注意:spring boot1.5 版本后@PropertySource注解就不能加载自定义的yml配置文件了

(1)、定义userBody.properties 删除或修改之前的yml,不然不生效

在这里插入图片描述

userbody.username=zhangsan88
userbody.password=12312388
userbody.age=228
userbody.birthday=2024-7-27

(2)、将配置赋值到 javabean

在这里插入图片描述

@PropertySource("classpath:userBody.properties")

@Configuration 注解包含@Component注解
1.5版本后需要通过@PropertySource(“classpath:userBody.properties”)指定配置文件

(3)、Controller 读取配置和上面一致

访问地址:http://localhost:8080/getUser 可以看到返回值:

在这里插入图片描述

3.4 多环境配置文件

使用多个yml配置文件进行配置属性文件
可以使用多个yml来配置属性,将与环境无关的属性放置到application.yml文件里面;通过与配置文件相同的命名规范,创建application-{profile}.yml文件 存放不同环境特有的配置,例如 application-test.yml 存放测试环境特有的配置属性,application-prod.yml 存放生产环境特有的配置属性。

通过这种形式来配置多个环境的属性文件,在application.yml文件里面spring.profiles.active=xxx来指定加载不同环境的配置,如果不指定,则默认只使用application.yml属性文件,不会加载其他的profiles的配置。

(1)、创建application-dev.yml

server:port: 8082servlet:context-path: /demo2

(2)、创建application-test.yml

server:port: 8083servlet:context-path: /demo3

(3)、创建application-prod.yml

server:port: 8084servlet:context-path: /demo4

(4)、修改application.yml

spring:profiles:active: prod

通过设置,active: 的值对应不同的{profile}就可以使对应的配置文件生效。

在这里插入图片描述

文章源码

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

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

相关文章

IDEA Maven使用HTTP代理,解决Could not transfer artifact org.xxx问题

文章目录 一、前言二、遇到问题三、分析问题四、HTTP代理五、重新编译验证 一、前言 遇到这个问题&#xff0c;有两种解决办法 IDEA Maven使用HTTP代理&#xff0c;解决Could not transfer artifact org.xxx问题IDEA Maven使用国内镜像&#xff0c;解决Could not transfer arti…

【PHP】ThinkPHP基础

官方手册&#xff1a;ghttps://doc.thinkphp.cn/v8_0/setup.html ghttps://doc.thinkphp.cn/v8_0/setup.html 一、部署ThinkPHP 1.安装composer composer是 PHP 的一个依赖管理工具,类似于python中的pip。 下载地址&#xff1a; https://getcomposer.org/Composer-Setup.…

低功耗单声道音频编解码器ES8311中文规格书介绍

特征 具有ADC和DAC的低功耗单声道音频编解码器ES8311。 ES8311 QFN20封装的外形和丝印 系统 • 高性能、低功耗多位 delta-sigma 音频 ADC 和 DAC • I2S/PCM 主站或从站串行数据端口 • 256/384Fs、USB 12/24 MHz 和其他非标准音频系统时钟 • I2C 接口 模数转换器 • 24…

网络安全自学从入门到精通的制胜攻略!!!

在信息时代&#xff0c;网络安全已成为至关重要的领域。越来越多的人希望通过自学掌握这门技术&#xff0c;开启充满挑战与机遇的职业道路。以下是一份精心为您打造的网络安全自学攻略&#xff0c;助您在自学之旅中乘风破浪。 一、明确目标与兴趣方向 网络安全涵盖众多领域&am…

01、爬虫学习入门

爬虫&#xff1a;通过编写程序&#xff0c;来获取获取互联网上的资源 需求&#xff1a;用程序模拟浏览器&#xff0c;输入一个网址&#xff0c;从该网址获取到资源或内容 一、入门程序 #使用urlopen来进行爬取 from urllib.request import urlopen url "http://www.ba…

AI如何助力UI设计师互联网学习?

嘿&#xff0c;咱 UI 设计师想用互联网学习&#xff0c;可真不容易&#xff01;资料筛选难&#xff0c;学习资源杂&#xff0c;真让人头疼。不过还好有 AI 工具能帮忙&#xff0c;提效率&#xff01; 这一年多来&#xff0c;我在 ai123.cn 这个平台上&#xff0c;可算是找到了…

20240724----安装git和配置git的环境变量/如何用命令git项目到本地idea

备注参考博客&#xff1a; 1&#xff09;可以参考博客&#xff0c;用git把项目git到本地 2&#xff09;可以参考博客vcs没有git 3)git版本更新&#xff0c;覆盖安装 &#xff08;一&#xff09;安装git &#xff08;1&#xff09;官网下载的链接 https://git-scm.com/downlo…

reshape函数介绍及应用

reshape 函数在 MATLAB 中是一个非常有用的函数&#xff0c;通过重新排列现有元素来重构数组。它允许你重新调整数组&#xff08;或矩阵&#xff09;的尺寸&#xff0c;而不改变其数据。这个函数特别适用于当你需要将一个矩阵或数组从一种结构转换为另一种结构时&#xff0c;只…

二阶段测试:

二阶段测试&#xff1a; 架构&#xff1a; 服务器类型部署组件ip地址DR1调度服务器 主&#xff08;ha01&#xff09;KeepalivedLVS-DR192.168.60.30DR2调度服务器 备 (ha02)KeepalivedLVS-DR192.168.60.40web1节点服务器 (slave01)NginxTomcatMySQL 备MHA managerMHA node192.…

Unity横板动作游戏 -项目准备

项目准备 这是一篇 Unity 2022 最新稳定版本的教程同步笔记&#xff0c;本文将会讲解一些开始学习必须的条件。 安装环境 首先是安装 UnityHub&#xff0c;然后在 UnityHub 中安装 Unity 的版本(2022)。 只需要安装 开发者工具 和文档即可&#xff0c;导出到其他平台的工具等…

大厂面试官问我:ConcurrentHashMap底层原理?【后端八股文十五:Java集合合集】

本文为【Java集合 合集】初版&#xff0c;后续还会进行优化更新&#xff0c;欢迎大家关注交流~ hello hello~ &#xff0c;这里是绝命Coding——老白~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#…

Scrapy 爬取旅游景点相关数据(四)

本节内容主要为&#xff1a; &#xff08;1&#xff09;创建数据库 &#xff08;2&#xff09;创建数据库表 &#xff08;3&#xff09;爬取数据进MYSQL库 1 新建数据库 使用MYSQL数据库存储数据&#xff0c;创建一个新的数据库 create database scrapy_demo;2 新建数据表 CR…

前端JS特效第57波:响应式博客网站图文幻灯片

响应式博客网站图文幻灯片&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"><head> <meta charset"utf-8"> <title>响应式博客幻灯片演示</title><link …

记录|C#批量修改文件后缀

文章目录 前言一、.CHK 批量修改成 .mp3更新时间 前言 针对昨天博文&#xff1a;记录&#xff5c;cmd方式恢复U盘中的数据中的文件修复为.CHK格式后&#xff0c;如果将大量的.CHK后缀改为.mp3后缀的问题进行了编写。 主要是&#xff0c;现在网上的批量修改后缀的软件竟然要开会…

Unity横板动作游戏 - 素材导入和整理

导入素材 编辑器布局 点击每个窗口右上角的三个点可以有更多的窗口选项。 在屏幕的右上角有一个菜单可以保存布局或读取已经报错的布局。 工具按钮 编辑器上的工具按钮在启动的时候是蓝色的&#xff0c;在不启动的时候是灰色的。 这个按钮将会决定场景中的物体是以锚点显示还…

Python包管理工具pip

1、安装pip cmd管理员模式打开控制台 python -m pip install --upgrade pip 2、添加pip环境变量 pip 路径 C:\Users\1\AppData\Local\Programs\Python\Python312\Scripts

【Rust】所有权OwnerShip

什么是所有权 rust使用由编译器检查的一些规则构成的所有权系统来管理内存。且这不会影响程序的运行效率。 所有权规则 rust中每一个每一个值都有一个owner。在同一时刻&#xff0c;只能有一个owner。当这个owner超过范围&#xff0c;则该值会被丢弃。 String类型 为什么需…

斯坦福UE4 C++课学习补充 14:UMG-优化血量条

文章目录 一、优化执行效率二、简单脉冲动画 一、优化执行效率 绑定事件需要每一帧检查绑定对象是否有变化&#xff0c;势必造成CPU资源的浪费&#xff0c;因此优化执行效率的思路是&#xff1a;UI组件不再自行每帧查询血量&#xff0c;而是让血量自己在发生变化的同时通知UI进…

0727,学什么学,周六就应该休息!!!!!

周六就应该休息&#xff0c;一天就忙了两小时也不是我的错喵 目录 UDP的小总结 01&#xff1a;使用select实现一个基于UDP的一对一即时聊天程序。 1.0 复读机服务器和树洞客户端 2.0 byby不了一点的敬业服务器&#xff01;&#xff01;&#xff01; 今天到此为止&#x…

buu做题(8)

[安洵杯 2019]easy_web 查看源代码可以发现一长串的base64编码 就是页面上的一张图片 回到原页面,url上面也有一些奇怪的参数 经过两次base64和一次hex 解密后得到 555.png 应该就是包含着页面上的这张图片 然后尝试将index.php 按照这样的方式编码, 看看能不能包含到 TmprMl…