一文带你深入SpringBoot,从入门到优化,你还不了解吗?

6、是微服务的入门级框架,SpringBoot是SpringCloud的基础

7、提供生产就绪功能:如指标、健康检查、外部配置等

三、环境创建

======

Maven 3.3.9 + JDK1.8 + IDEA (Ultimate)

四、创建首个SpringBoot项目

==================

新建Sring Initalizr项目

然后点击next,显示为下面这张图片

这里我就不建什么helloworld、hellospringboot之类的项目了,注意工程名字要全小写,package配置的是包名,可以根据自己的喜爱设置,然后点击next

这里我们选择web工程,然后next

这里是让我们选择自己的工作路径,建议不要包含中文路径,点击finish

下面,我们可以删除一些暂时用不到的文件夹和文件(一共是3个)

注意我使用的springboot版本号为2.0.1.RELEASE,尽量和我一致,不能然后面我所使用的方法你可能用不了。

如果这里显示为红色的话,是因为maven还没有把所需要的依赖下载到本地仓库。

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 http://maven.apache.org/xsd/maven-4.0.0.xsd”>

4.0.0

com.zmfx

dog

0.0.1-SNAPSHOT

jar

dog

Demo project for Spring Boot

org.springframework.boot

spring-boot-starter-parent

2.0.1.RELEASE

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>1.8</java.version>

org.springframework.boot

spring-boot-starter-web

c

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-maven-plugin

当所有的maven依赖下载完毕的时候,你项目的目录结构样子大体应该是这个样子的

依然是老套路,新建一个HelloController,来和SpringBoot打个招呼吧

package com.zmfx.hello;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RestController;

/**

  • 这里的@RestController 相当于@ResponseBody + @Controller

*/

@RestController

public class HelloController {

@RequestMapping(value = “/hello”,method = RequestMethod.GET)

public String helloSpringBoot(){

return “Hello SpringBoot!”;

}

}

我们点击IDEA的运行按钮,然后在控制台会看到SpringBoot内置的Tomcat访问的默认端口号8080

然后在网址中输入 http://127.0.0.1:8080/hello  页面会展示 Hello SpringBoot!

说明我们成功的使用SpringBoot项目和SpringBoot打过招呼了

这里需要说明一下,SpringBoot的启动类 DogApplication

package com.zmfx;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication //用来声明这是启动SpringBoot程序的启动类,必须有

public class DogApplication {

public static void main(String[] args) {

SpringApplication.run(DogApplication.class, args);

}

}

以上只是基础,接下来咱们再来看一下进阶一点的SpringBoot优化

在SpringBoot的Web项目中,默认采用的是内置Tomcat,当然也可以配置支持内置的jetty,内置有什么好处呢?

1. 方便微服务部署。

2. 方便项目启动,不需要下载Tomcat或者Jetty

针对目前的容器优化,目前来说没有太多地方,需要考虑如下几个点

  1. 线程数

  2. 超时时间

  3. jvm优化

针对上述的优化点来说,首先线程数是一个重点,初始线程数和最大线程数,初始线程数保障启动的时候,如果有大量用户访问,能够很稳定的接受请求,

而最大线程数量用来保证系统的稳定性,而超时时间用来保障连接数不容易被压垮,如果大批量的请求过来,延迟比较高,不容易把线程打满。这种情况在生产中是比较常见的

一旦网络不稳定,宁愿丢包也不愿意把机器压垮。

jvm优化一般来说没有太多场景,无非就是加大初始的堆,和最大限制堆,当然也不是无限增大,根据的情况进快速开始

在spring boot配置文件中application.yml,添加以下配置

server:

tomcat:

min-spare-threads: 20

max-threads: 100

connection-timeout: 5000

这块对tomcat进行了一个优化配置,最大线程数是100,初始化线程是20,超时时间是5000ms

Jvm优化


这块主要不是谈如何优化,jvm优化是一个需要场景化的,没有什么太多特定参数,一般来说在server端运行都会指定如下参数

初始内存和最大内存基本会设置成一样的,具体大小根据场景设置,-server是一个必须要用的参数,

至于收集器这些使用默认的就可以了,除非有特定需求。

总目录展示

该笔记共八个节点(由浅入深),分为三大模块。

高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。该笔记将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。

一致性。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。

高可用。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。


篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)

由于内容太多,这里只截取部分的内容。

及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。

高可用。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。


篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)

[外链图片转存中…(img-YBCcfDYg-1714543552970)]

[外链图片转存中…(img-BN05ASsz-1714543552970)]

由于内容太多,这里只截取部分的内容。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 13
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值