零基础快速入门SpringBoot2.0教程 (二)

SpringBoot 快速入门(保姆级详细教程) SpringBoot快速入门,保姆级别超详细,解决IDEA创建SpringBoot项目一直转圈圈。 阅读详情
一、SpringBoot2.x使用Dev-tool热部署
	简介:介绍什么是热部署,使用springboot结合dev-tool工具,快速加载启动应用

	官方地址:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#using-boot-devtools
	核心依赖包:
		<dependency>  
		     <groupId>org.springframework.boot</groupId>  
		     <artifactId>spring-boot-devtools</artifactId>  
		     <optional>true</optional>  
		 </dependency>
	添加依赖后,在ide里面重启应用,后续修改后马上可以生效

	classloader
 	
 	不被热部署的文件
 		1、/META-INF/maven, /META-INF/resources, /resources, /static, /public, or /templates
 		2、指定文件不进行热部署 spring.devtools.restart.exclude=static/**,public/**
 		3、手工触发重启 spring.devtools.restart.trigger-file=trigger.txt
 			改代码不重启,通过一个文本去控制

 		https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#using-boot-devtools-restart-exclude

 	注意点:生产环境不要开启这个功能,如果用java -jar启动,springBoot是不会进行热部署的


二、SpringBoot2.x配置文件讲解
	简介:SpringBoot2.x常见的配置文件 xml、yml、properties的区别和使用

		xml、properties、json、yaml
		1、常见的配置文件 xx.yml, xx.properties,
			1)YAML(Yet Another Markup Language)
				写 YAML 要比写 XML 快得多(无需关注标签或引号)
				使用空格 Space 缩进表示分层,不同层次之间的缩进可以使用不同的空格数目
				注意:key后面的冒号,后面一定要跟一个空格,树状结构
			application.properties示例
				server.port=8090  
				server.session-timeout=30  
				server.tomcat.max-threads=0  
				server.tomcat.uri-encoding=UTF-8 

			application.yml示例
				server:  
	  				port: 8090  
	  				session-timeout: 30  
	  				tomcat.max-threads: 0  
	  				tomcat.uri-encoding: UTF-8 


		2、默认示例文件仅作为指导。 不要将整个内容复制并粘贴到您的应用程序中,只挑选您需要的属性。
		
		3、参考:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#common-application-properties

		如果需要修改,直接复制对应的配置文件,加到application.properties里面



三、SpringBoot注解配置文件自动映射到属性和实体类实战
	简介:讲解使用@value注解配置文件自动映射到属性和实体类
			
	1、配置文件加载
		方式一
			1、Controller上面配置
			   @PropertySource({"classpath:resource.properties"})
			2、增加属性
				 @Value("${test.name}")
		 		 private String name;

		方式二:实体类配置文件
		步骤:
			1、添加 @Component 注解;
			2、使用 @PropertySource 注解指定配置文件位置;
			3、使用 @ConfigurationProperties 注解,设置相关属性;

			4、必须 通过注入IOC对象Resource 进来 , 才能在类中使用获取的配置文件值。
				@Autowired
	    		private ServerSettings serverSettings;

	    		例子:
	    			@Configuration
					@ConfigurationProperties(prefix="test")
					@PropertySource(value="classpath:resource.properties")
					public class ServerConstant {


			常见问题:
				1、配置文件注入失败,Could not resolve placeholder
					解决:根据springboot启动流程,会有自动扫描包没有扫描到相关注解, 
					默认Spring框架实现会从声明@ComponentScan所在的类的package进行扫描,来自动注入,
					因此启动类最好放在根路径下面,或者指定扫描包范围
					spring-boot扫描启动类对应的目录和子目录
				2、注入bean的方式,属性名称和配置文件里面的key一一对应,就用加@Value 这个注解
					如果不一样,就要加@value("${XXX}")



四、SpringBoot个性化启动banner设置和debug日志
	简介:自定义应用启动的趣味性日志图标和查看调试日志

		1、启动获取更多信息 java -jar xxx.jar --debug
		
		2、修改启动的banner信息
			1)在类路径下增加一个banner.txt,里面是启动要输出的信息
			2)在applicatoin.properties增加banner文件的路径地址 
				spring.banner.location=banner.txt

			3)官网地址 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-banners


五、SpringBoot2.x配置全局异常实战
	讲解:服务端异常讲解和SpringBoot配置全局异常实战

		1、默认异常测试  int i = 1/0,不友好
		
		2、异常注解介绍
			@ControllerAdvice 如果是返回json数据 则用 RestControllerAdvice,就可以不加 @ResponseBody
			
			//捕获全局异常,处理所有不可知的异常
			@ExceptionHandler(value=Exception.class)

六、SpringBoot2.x配置全局异常返回自定义页面
	简介:使用SpringBoot自定义异常和错误页面跳转实战

	1、返回自定义异常界面,需要引入thymeleaf依赖
		<dependency>
		   <groupId>org.springframework.boot</groupId>
		   <artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>


	2、resource目录下新建templates,并新建error.html
		ModelAndView modelAndView = new ModelAndView();
	    modelAndView.setViewName("error.html");
	    modelAndView.addObject("msg", e.getMessage());
	    return modelAndView;
	    https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-error-handling


七、SpringBoot启动方式讲解和部署war项目到tomcat9
简介:SpringBoot常见启动方式讲解和部署war项目Tomcat

	1、ide启动
	2、jar包方式启动
				maven插件:
				<build>
				<plugins>
					<plugin>
						<groupId>org.springframework.boot</groupId>
						<artifactId>spring-boot-maven-plugin</artifactId>
					</plugin>
				</plugins>
				</build>
				如果没有加,则执行jar包 ,报错如下
					java -jar spring-boot-demo-0.0.1-SNAPSHOT.jar
					no main manifest attribute, in spring-boot-demo-0.0.1-SNAPSHOT.jar
				如果有安装maven 用 mvn spring-boot:run
		项目结构
			example.jar
					 |
					 +-META-INF
					 |  +-MANIFEST.MF
					 +-org
					 |  +-springframework
					 |     +-boot
					 |        +-loader
					 |           +-<spring boot loader classes>
					 +-BOOT-INF
					    +-classes
					    |  +-mycompany
					    |     +-project
					    |        +-YourClasses.class
					    +-lib
					       +-dependency1.jar
					       +-dependency2.jar
	目录结构讲解
	https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#executable-jar-jar-file-structure

	3、war包方式启动
		1)在pom.xml中将打包形式 jar 修改为war  <packaging>war</packaging>

		构建项目名称 <finalName>xdclass_springboot</finalName>

		2)tocmat下载 https://tomcat.apache.org/download-90.cgi
		
		3)修改启动类
			public class XdclassApplication extends SpringBootServletInitializer {

			    @Override
			    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
			        return application.sources(XdclassApplication.class);
			    }

			    public static void main(String[] args) throws Exception {
			        SpringApplication.run(XdclassApplication.class, args);
			    }

			}

		4)打包项目,启动tomcat

	4、启动容器介绍和第三方测试数据讲解
	
	使用Jmter测试工具测试性能,QPS,TPS,RT

	https://examples.javacodegeeks.com/enterprise-java/spring/tomcat-vs-jetty-vs-undertow-comparison-of-spring-boot-embedded-servlet-containers/


八、深入SpringBoot过滤器和Servlet3.0配置过滤器实战
	简介:讲解SpringBoot里面Filter讲解和使用Servlet3.0配置自定义Filter实战
		
		filter简单理解:人--->检票员(filter)---> 景点

		1、SpringBoot启动默认加载的Filter 
			characterEncodingFilter
			hiddenHttpMethodFilter
			httpPutFormContentFilter
			requestContextFilter
				
		2、Filter优先级

			Ordered.HIGHEST_PRECEDENCE
			Ordered.LOWEST_PRECEDENCE

			低位值意味着更高的优先级 Higher values are interpreted as lower priority
			自定义Filter,避免和默认的Filter优先级一样,不然会冲突

			注册Filter的bean FilterRegistrationBean
			同模块里面有相关默认Filter
				web->servlet->filter


		3、自定义Filter
			1)使用Servlet3.0的注解进行配置
			2)启动类里面增加 @ServletComponentScan,进行扫描
			3)新建一个Filter类,implements Filter,并实现对应的接口
			4) @WebFilter 标记一个类为filter,被spring进行扫描 
				urlPatterns:拦截规则,支持正则

			6)控制chain.doFilter的方法的调用,来实现是否通过放行
			   不放行,web应用resp.sendRedirect("/index.html");
				场景:权限控制、用户登录(非前端后端分离场景)等
			

1、	官网地址:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-embedded-container-servlets-filters-listeners


九、Servlet3.0的注解原生Servlet实战
	讲解:使用 Servlet3.0的注解自定义原生Servlet和Listener
		1、自定义原生Servlet

			@WebServlet(name = "userServlet",urlPatterns = "/test/customs")
			public class UserServlet extends HttpServlet{

				 @Override
			     public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
			         resp.getWriter().print("custom sevlet");
			         resp.getWriter().flush();
			         resp.getWriter().close();
			     }

			     @Override
			     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
			         this.doGet(req, resp);
			     }
			}

十、Servlet3.0的注解原生Listener监听器实战
		简介:监听器介绍和Servlet3.0的注解自定义原生Listener监听器实战

		1、自定义Listener(常用的监听器 servletContextListener、httpSessionListener、servletRequestListener)
			@WebListener
			public class RequestListener implements ServletRequestListener {

			@Override
			public void requestDestroyed(ServletRequestEvent sre) {
				// TODO Auto-generated method stub
				System.out.println("======requestDestroyed========");
			}

			@Override
			public void requestInitialized(ServletRequestEvent sre) {
				System.out.println("======requestInitialized========");
				
			}

十一、SpringBoot2.X拦截器实战及新旧配置对比
	简介: 讲解拦截器使用,Spingboot2.x新版本配置拦截拦截器和旧版本SpringBoot配置拦截器区别讲解
	
	1、@Configuration
		继承WebMvcConfigurationAdapter(SpringBoot2.X之前旧版本)

		SpringBoot2.X 新版本配置拦截器 implements WebMvcConfigurer

	2、自定义拦截器 HandlerInterceptor
		preHandle:调用Controller某个方法之前
		postHandle:Controller之后调用,视图渲染之前,如果控制器Controller出现了异常,则不会执行此方法
		afterCompletion:不管有没有异常,这个afterCompletion都会被调用,用于资源清理
	
	3、按照注册顺序进行拦截,先注册,先被拦截

	拦截器不生效常见问题:
		1)是否有加@Configuration
		2)拦截路径是否有问题 **  和 * 
		3)拦截器最后路径一定要 “/**”, 如果是目录的话则是 /*/

	Filter
		是基于函数回调 doFilter(),而Interceptor则是基于AOP思想
		Filter在只在Servlet前后起作用,而Interceptor够深入到方法前后、异常抛出前后等

		依赖于Servlet容器即web应用中,而Interceptor不依赖于Servlet容器所以可以运行在多种环境。
	
		在接口调用的生命周期里,Interceptor可以被多次调用,而Filter只能在容器初始化时调用一次。
		
		Filter和Interceptor的执行顺序
     	
    	过滤前->拦截前->action执行->拦截后->过滤后

可结合之前的博文 2018最新SpringBoot2.0教程(零基础入门)观看理解

更多学习资料可参考:https://www.xdclass.net/#/coursecatalogue?video_id=4

https://ke.qq.com/course/299498

 

 

查看关于springboot2.0的更多教程

零基础快速入门SpringBoot2.0教程 (三)

零基础快速入门SpringBoot2.0 (一)

零基础快速入门SpringBoot2.0教程 (四)

Springboot快速入门详细教程 如何搭建一个Springboot应用一、springboot是什么,为什么要用springboot二、快速搭建一个springboot应用1、在线创建2、使用IDEA创建创建(需要连接网络)三、springboot-yum配置文件 目录 一、springboot是什么,为什么要用springboot SpringBoot是由Pivotal团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来 阅读详情

相关推荐

SpringBoot-3.3.4最新快速入门教程二整合Mybatis

在上一篇教程中简单说了一下SpringBoot最新版本怎么快速入门,就有小伙伴在问,那怎么使用SpringBoot代替原来的SSM框架作为开发呀,好啦,本篇教程就是教你怎么用SpringBoot替代SSM,感受开发效率翻倍的快乐。本篇就是通过SpringBoot框架代替Spring+SpringMVC,整合Mybatis框架,来感受一下快速开发,SpringBoot框架推荐使用注解,并且只需application配置文件,就可以代替原来SSM的所有配置文件,那么咱们就开始吧。

程序员Feri 2776

Spring-boot2.0.1.BUILD-SNAPSHOT整合Elasticsearch报failed to load elasticsearch nodes错误解决办法...

spring-boot整合es的application.properties的默认配置为: spring.data.elasticsearch.cluster-nodes=localhost:9200   将端口号改成9300即可解决failed to load elasticsearch nodes错误 拓展:如果es的安装版本为2.x,那么spr...

ajamzvqy27722的博客 683

SpringBoot快速入门

引言 现在是晚上的12点整,一个人学习到深夜无疑也是一种快乐啊。不过大量新知识的摄入,也着实让自己的头脑有点晕,趁着还没有睡意,赶紧来写一篇博客压压惊——SpringBoot的HelloWorld案例,通过这个案例对SpringBoot来一个快速入门。 SpringBoot简介 按照惯例,在学习SpringBoot之前,我们需要了解一下什么是SpringBoot? Spring Boot是由Piv...

。。。 2805

SpringBoot2.1.0的官网配置文件application.properties(根据需要摘取)

# =================================================================== # COMMON SPRING BOOT PROPERTIES # # This sample file is provided as a guideline. Do NOT copy it in its # entirety to your own appl...

HaleyTiger的博客 2445

spring-boot-2.1.0.BUILD-SNAPSHOT:Spring启动学习

spring-boot-2.1.0.BUILD-SNAPSHOT

【隐私计算】从本地加法到在线乘法:Beaver Triple如何重塑算术秘密分享的运算效率

本文深入探讨了Beaver Triple在算术秘密分享中的关键作用,显著提升了隐私计算中的乘法运算效率。通过对比加法与乘法的实现差异,详细解析了Beaver Triple的预处理机制和在线计算优化,展示了其在减少通信量和计算时间方面的革命性突破。

weixin_29227585的博客 435

Spring Boot Gradle Plugin_2.1.0参考指南

作者简介 陈喆,现就职于中科院某研究所担任副研究员,专注于工业云平台、MES系统的设计与研发。 内容来源:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/gradle-plugin/reference/html/ 1.简介 Spring Boot Gradle 插件对Gradle项目提供了Spring Boot支...

陈喆小博 1万+

模拟调制系统实战:从AM到FM的5种调制方式对比与选型指南

本文深度解析AM、DSB、SSB、VSB、FM五种经典模拟调制方式,从实现电路、频谱效率、抗噪性能及工程成本等维度进行实战对比。通过MATLAB/Simulink仿真案例,提供清晰的选型决策框架,帮助工程师在无人机图传、短波通信、广播系统等具体项目中,根据带宽、功耗和抗干扰需求选择最优方案。

study的专栏 930

java io 自动刷新,使用Spring Boot开发者工具进行自动重启和页面自动刷新

简介大家可能都听说过开发Node.js应用时可以使用多种工具对开发者提供便利,如WebPack提供了开发者服务器来支持js应用动态更替,并在保存文件时自动刷新浏览器。Spring Boot也提供了相似的开发者工具,让我们更快速、更舒心的开发Spring Boot应用。大家看完本教程就可以学会如何如用Spring Boot开发者工具进行自动重启和自动刷新页面。自动重启原理Spring Boot的开发...

weixin_29911569的博客 295

基于STM32-XPC仿真平台的构架

基于STM32-XPC仿真平台的构架 xPC Target是MathWorks公司的MATLAB提供的一个基于RTW(Real-Time Workshop)体系框架的附加产品,是一种用于产品原型开发、测试和配置实时系统的PC机解决途径。xPC目标实时仿真系统能够使开发者在产品开发前进行产品原型的快速实现、测试和评估,是 Simulink 工具集下用于产品原型开发设计测试集于一体的工具箱。

sujianbonwpu的博客 4487

BAT007:批量为当前目录下的文件夹添加前缀或后缀

摘要:编写批处理程序,实现批量为当前目录下的文件夹添加前缀或后缀。

qq_31762031的博客 4052

零基础快速入门SpringBoot2.0 教程(二)

一、SpringBoot2.x使用Dev-tool热部署简介:介绍什么是热部署,使用springboot结合dev-tool工具,快速加载启动应用 官方地址:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#using-boot-devtools 核心依赖包: <dep...

weixin_34290000的博客 142

Python re库【正则表达式操作库】全面讲解及代码示例

以下是Pythonre库的全面讲解,包含主要功能、常用方法及代码示例。完整代码和注释附后。正则表达式(Regular Expression)是用于匹配、查找、替换字符串的工具,通过特定语法定义模式。?{n}[...][a-z]A|B\d[0-9]\D\s\S\w\Wre从字符串匹配模式,返回Match对象或None。在字符串中第一个匹配项,返回Match对象或None。返回所有匹配项的。返回所有匹配项的Match对象)。替换匹配项,返回新字符串。根据模式分割字符串,返回列表。通过。

记录点滴 1161

springboot快速入门一篇文章全

目录1、pom.xml2、项目层次3、启动文件【com.item/Action.java】4、controller文件5、启动测试(数据是跨域的) 2、项目层次 其中@RestController = @Controller + @ResponseBody; 5、启动测试(数据是跨域的) 访问路径:【http://127.0.0.1:8080/GetInfo】目录1、修改打包方式2、修改启动文件【Action.java】3、打包命令4、打包效果:在【pom.xml】文件中修改默认的打包方式

红目香薰 5万+

【WRF-Chem Emissions教程第一期】WRF-Chem 排放概述

WRF-Chem 排放概述

WW、forever的博客 852

[HQChart教程] 去掉“仅学习使用”文字提示的小技巧

最近用 HQChart 做图表时,发现左下角有“仅学习使用”的字样。这种水印虽然是默认的,但如果要展示给客户,可能会显得不够专业。还好,这个问题很好解决,只需要简单修改一下配置。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 598

(二)SpringBoot2.0-快速入门

SpringBoot2.0-快速入门一. pom文件引入依赖二. 编写Controller层三. @RestController四. @EnableAutoConfiguration五. 启动方式1. 方式一2. 方式二3. 方式三 一. pom文件引入依赖 pom.xml文件如下: <parent> <groupId>org.springframework.boot&...

Autism、陌亡 839

NVP6324、NVP6188、NVP6158C的区别详解

根据搜索结果,NVP6324、NVP6188、NVP6158C是Nextchip公司推出的不同型号视频处理芯片,主要区别体现在应用场景、功能特性、接口支持及封装规格等方面。如需进一步技术细节(如寄存器配置或开发支持),可参考具体型号的规格书或联系Nextchip代理商。

小灰灰的博客 2998

零基础快速入门SpringBoot2.0

北大青鸟深圳嘉华学校-零基础快速入门SpringBoot2.0 1、SpringBoot2.x课程全套介绍和高手系列知识点 简介:介绍SpringBoot2.x课程大纲章节 java基础,jdk环境,maven基础 2、SpringBoot2.x依赖环境和版本新特性说明 简介:讲解新版本依赖环境和springboot2新特性概述 1、依赖版本jdk8以上, Springboot2.x用JDK8,...

Java编程基础 296

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SpringBoot2学习总结一:SpringBoot2入门

本文章总结自尚硅谷SpringBoot2,视频链接:尚硅谷雷神SpringBoot2零基础入门springboot全套完整版(spring boot2) 在学习SpringBoot之前,我们需要了解什么是SpringBoot? 1. SpringBoot是什么? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发

Baridhu的博客 2495

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

springboot快速入门

springboot快速入门快速入门两种方式开发环境https://start.spring.io/构建使用maven构建 快速入门两种方式 1.访问官网https://start.spring.io/构建 2.使用maven构建 开发环境 jdk:jdk1.8.0_212 maven:apache-maven-3.6.2 springboot版本:2.2.0 https://start.sp...

write less , do more 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

2018最新SpringBoot2.0教程(零基础入门)

一、零基础快速入门SpringBoot2.0 1、SpringBoot2.x课程介绍和高手系列知识点 简介:介绍SpringBoot2.x课程大纲章节 java基础,jdk环境,maven基础 2、SpringBoot2.x依赖环境和版...

chouzhu2348的博客 229

01-SpringBoot2.0快速入门

学习目标 (1)spring boot核心 (2)spring boot整合 Spring Boot课程内容介绍 (1)Spring Boot简介 (2)Spring Boot快速入门 (3)Spring Boot原理分析 (4)Spring Boot配置文件 (5)Spring Boot与其他框架的整合 Spring回顾 (1)Spring是什么? Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的全栈,轻量级代替品 (2)Spring核心是?

翁老师的教学团队 672

零基础快速入门SpringBoot2.0 (一)

零基础快速入门SpringBoot2.0 (一) 一、SpringBoot2.x依赖环境和版本新特性说明 简介:讲解新版本依赖环境和springboot2新特性概述 1、依赖版本jdk8以上, Springboot2.x用JDK8, 因为底层是 S...

chouzhu2348的博客 147

Spring Boot 2 快速教程:WebFlux 快速入门(二)

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 02:WebFlux 快速入门实践 文章工程: JDK 1.8 Maven 3.5.2 Spring Boot 2.1.3.RELEASE 工程名:springboot-webflux-1-quickstart 工程地址:见文末 一、Spring ...

程序员泥瓦匠 1087
上一篇: 18年新Jenkins持续集成 Git Gitlab Sonar视频教程-张颜源-专题视频课程
下一篇: 2018年分布式架构教程 SpringCloud+Docker基础入门到实战-张颜源-专题视频课程
dev666
博客等级 码龄9年 100粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dev666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值