大图
导图:
导图:
springboot高级特性:
为了方便多环境适配,springboot简化了profile功能。
官方文档 https://junit.org/junit5/
Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库,以前用的是JUnit4。
作为最新版本的JUnit框架,JUnit5与之前版本的Junit框架有很大的不同。由三个不同子项目的几个不同模块组成。
JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage
在window上安装kafka很简单,首先从kafak官网下载对应版本的kafka。
然后将下载的zip包进行加压缩,就可以看到kafka的源码包了。
每天早上在启动springboot程序时候,要定时去数据库中加载有代表性利率债券,然后在盘中时候,根据有代表性利率债清单将有代表性的债券行情发送到CDMS数据发布系统上供会员使用,因此,本文总结一下在spring容器启动时,对缓存的几种初始化方式。
首先我们需要定义一个缓存,因为有代表性利率债清单只有很小一部分,因此我们选择内存缓存,并且在对有代表性行情的时候,我们只需要用到债券ID一个属性,因此我们在选择内存缓存的时候,使用Set数据结构存储债券ID,这样保证最小存储代价并且最快速的查找到债券ID,所以定义缓存对象如下:
@Component
public class Cache {
private static final Logger log = LoggerFactory.getLogger(Cache.class);
// 缓存结构
private final Set<Integer> cache = new HashSet<>();
// 读写锁,防止线程不安全
private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
private final Lock readLock = lock.readLock();
private final Lock writeLock = lock.writeLock();
// 初始化缓存
public void initCache(){
for(int i=0;i<3;i++){
if(i%2 == 0){
cache.add(i);
}
}
}
// 缓存更新
public boolean updateCache(int number){
try {
writeLock.lock();
cache.add(number);
System.out.print("数据更新成功,正在休眠.......缓存数据为:");
cache.stream().forEach(System.out::println);
Thread.sleep(5000);
} catch (InterruptedException e) {
log.info("缓存数据更新失败:"+number);
e.printStackTrace();
return false;
}finally {
writeLock.unlock();
}
return true;
}
// 读缓存判断
public boolean isContain(int num){
try {
readLock.lock();
if(cache.contains(num)){
return true;
}else {
return false;
}
}finally {
readLock.unlock();
}
}
}
需求:浏览发送/hello请求,响应 Hello,Spring Boot 2
引入依赖
<!--引入springboot的父工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
</parent>
<dependencies>
<!--要用springboot开发web场景模块,就引入springboot对应web模块的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!--指定编译构建的jdk版本,不需要在服务期安装部署tomcat,只需要将程序打成jar包,
//在服务期上执行即可-->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.4</version>
<!-- 下面指定为自己需要的版本 -->
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具。
一个 Maven 工程有约定的目录结构,约定的目录结构对于 Maven 实现自动化构建而言是必不可少的一环,就拿自动编译来说,Maven必须能找到 Java 源文件,下一步才能编译,而编译之后也必须有一个准确的位置保持编译得到的字节码文件。我们在开发中如果需要让第三方工具或框架知道我们自己创建的资源在哪,那么基本上就是两种方式:
官网地址
微服务
一个项目进行拆分成单个小服务。
springboot基于spring framework,简化了spring framework的复杂配置。
可以整合spring生态中的其它技术栈,免于写复杂的配置。
响应式编程
基于异步非阻塞的方式,通过应用之间构建异步数据流的方式,异步数据流允许我们只用少量的线程资源,
构建高吞吐量的应用。
分布式云
项目拆分成微服务后,变成分布式应用。spring cloud用于解决这种情况。
WEB项目开发
例如springmvc开发web项目。
无服务开发,
FaaS,Function as a Service,"功能即服务"(也译作“函数即服务”)无需购买服务器,直接将服务
上传到云平台,动态分配资源,
事件驱动
spring可将整个分布式系统构建出,一个基于事件方式的实时数据流。通过该数据流,就能通过响应式的方式
,占用少量的资源实现高吞吐量的业务需求。
批处理。