Createsequence's Blog

一个努力前进的程序猿


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

Springboot使用swagger2生成Api文档

发表于 2020-02-23 | 分类于 杂七乱八
字数统计: 1.5k

概述

之前开发项目的时候,需要写API文档,项目小接口少的时候一份word就能简单应付,但是随着项目的API的增加,对API文档的维护工作就会越来越繁琐,为此引入能自动生成RESTful接口文档的Swagger2框架就变得理所当然。

作为一个能够自动生成API文档的框架,其最大的优点有两个:

  1. 接口文档在线能够自动生成,文档随接口变动实时更新,节省维护成本
  2. 支持类似spring RESTful插件那样的在线接口测试,不依赖第三方工具

一、举个例子?

假设现在有一个TestController接口,里面有几个简单的API,通过swagger的注解添加接口描述

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Api(value = "Api-test", description = "测试接口")
@RequestMapping("/test/")
@RestController
public class TestController {

@ApiOperation("获取回复")
@GetMapping("aiTalk")
public String test(String str){
str.replace("吗?","");
return str;
}

... ... //下同,不再赘述
}

启动项目后访问特定页面即可看到以Controller分类的API文档,点击展开以,根据注解的详细程度,会有传入参数,返回类型等详细说明,除此之外,还会有类似springREST插件那样的在线测试功能

二、如何在项目中引入swagger2?

阅读全文 »

JDK1.8新特性(一):Stream

发表于 2019-12-01 | 分类于 java
字数统计: 1.9k

概述

Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。

这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。

元素流在管道中经过中间操作的处理,最后由最终操作得到前面处理的结果。

二. 举个例子?

现在有一个字符串集合,我们需要过滤掉集合里头长度小于2的字符串:

1
2
3
4
5
6
7
8
9
10
11
12
public static void main( String[] args ) {
List<String> strings = Arrays.asList("ab", "", "bc", "cd", "abcd","", "jkl");
List<String> stringList = new ArrayList<>();
for (String str : strings){
//如果长度大于2
if (str.length() >= 2){
//将字符串添加至新集合
stringList.add(str);
}
}
strings = stringList;
}

如果使用stream实现一模一样的效果:

1
2
3
4
5
6
7
8
9
public static void main( String[] args ) {
List<String> strings = Arrays.asList("ab", "", "bc", "cd", "abcd","", "jkl");
//通过stream操作集合
strings = strings.stream()
//去掉长度小于2的字符串
.filter(s -> s.length() >= 2)
//转回集合
.collect(Collectors.toList());
}
阅读全文 »

JDK1.8新特性(二):Collectors收集器类

发表于 2019-12-01 | 分类于 java
字数统计: 1.3k

概述

上文我们介绍了JDK8新添加的Stream流接口,借助Stream配合拉姆达表达式,我们可以很方便的处理流对象。

针对流的聚合操作,Stream有一个对应的收集器类Collectors,通过Stream中的collect和collectingAndThen方法,我们可以借助收集器类聚合流中的数据,例如将元素累积到集合中,并根据各种标准对元素进行汇总,分类等操作。

二. 举个例子?

1
2
3
4
5
6
7
8
//获取String集合
List<String> strings = Arrays.asList("ab", "", "bc", "cd", "abcd","", "jkl");
//通过stream操作集合
List<String> stringList = strings.stream()
//为集合中的每一个元素拼接“???”
.map(s -> s += "???")
//返回集合
.collect(Collectors.toList());

如代码所示,我们可以很方便的通过Collectors类对被处理的流数据进行聚合操作,包括并不仅限与将处理过的流转换成集合

三. 如何使用Collectors?

1. Collectors类中提供的方法

总结一下,就是以下几类方法:

1.1 转换成集合:toList(),toSet(),toMap(),toCollection()

阅读全文 »

Docker基本操作

发表于 2019-09-02 | 分类于 docker
字数统计: 3.4k

一、Docker常用命令

1
2
3
#镜像名			版本标签			镜像id			 创建时间			镜像大小
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest fce289e99eb9 6 months ago 1.84kB
1
2
3
4
docker version/info #查看版本/信息
docker --help #查看说明文档
docker logs -f -t --tail 日志条数 容器ID #查看容器日志
docker inspect #获取容器/镜像的元数据

二、镜像基本操作

1. 拉取

1
2
docker search [xxx] #查找名为xxx的镜像
docker pull [xxx]:版本号 # 拉取xxx镜像,不加版本号则默认拉取最新版本

2. 查看

1
docker images -a/-qa #列出本地全部镜像/全部镜像的ID

3. 删除

阅读全文 »

Docker安装

发表于 2019-08-28 | 分类于 docker
字数统计: 506

一. 安装docker

1. 删除已安装的docker

1
2
3
4
5
6
7
8
9
10
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

2. 确定yum更新到最新版本

1
sudo yum update -y

3. 安装需要的软件包

1
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 -y

4. 设置yum源

1
2
3
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#若出现错误则改为阿里云yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5.安装docker

阅读全文 »

linux下安装jdk

发表于 2019-07-24 | 分类于 linux
字数统计: 287

1.上传并解压jdk

1
2
3
4
#上传jdk至自己想要的文件夹,我的是/usr/local
tar -zxvf jdk-8u221-linux-i586.tar.gz
#解压完后是名为jdk1.8.0_221的文件夹
cd /usr/local/jdk1.8.0_221/

2.配置环境变量

1
2
3
4
5
6
#配置变量
vi /etc/profile
#添加
export JAVA_HOME=/usr/local/jdk1.8.0_221
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

1
2
3
4
5
#让配置生效
. /etc/profile

#验证安装成功
java -version

3.如果查看版本报错

当使用 java -version 的时候可能会报如下错误:

1
/usr/local/jdk1.8.0_144/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
阅读全文 »

linux下安装mysql

发表于 2019-07-24 | 分类于 linux
字数统计: 470

1.安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#获取安装用的Yum Repository
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
#安装MySQL服务
yum -y install mysql-community-server
#查看版本
mysql -v
#启动mysql
systemctl start mysqld.service

#找回初始密码并登录 jWTAeq-DF9tJ
grep 'temporary password' /var/log/mysqld.log
mysql -uroot -p
#注意;找不到初始密码及其他情况参考下文"修改密码"

#使用初始密码登录后需要先修改一次密码后才能操作
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

#为避免Repository每次yum操作都会自动更新
yum -y remove mysql57-community-release-el7-10.noarch

2.修改密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#1.找回密码
grep 'temporary password' /var/log/mysqld.log

#2.强制修改密码
systemctl stop mysqld #停止服务
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables" #跳过密码
systemctl start mysqld #启动服务
mysql -u root #登录
UPDATE mysql.user SET authentication_string = PASSWORD('新密码') WHERE User = 'root' AND Host = 'localhost'; #设置新密码
FLUSH PRIVILEGES; #刷新权限
quit #退出

#3.用操作系统账号修改密码
mysql -uroot -p #使用centos账号密码登录
UPDATE mysql.user SET authentication_string = PASSWORD('新密码') WHERE User = 'root' AND Host = 'localhost'; #设置新密码
FLUSH PRIVILEGES; #刷新权限
quit #退出

3.修改远程连接权限

1
2
3
4
5
6
7
8
9
10
11
#选择mysql
use mysql;

#授权远程连接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'YYBrhr_2018' WITH GRANT OPTION;

#注意:如果navicat远程连接报1521错误
GRANT ALL ON *.* TO 'root'@'%'; #远程连接授权
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #更改加密规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; #更改密码
FLUSH PRIVILEGES; #刷新权限

注意,这一步需要小心,在自己的服务器或者内网的服务器就算了,如果是在外网的生产服务器上,务必先咨询同事。

阅读全文 »

linux下安装tomcat

发表于 2019-07-24 | 分类于 linux
字数统计: 460

1. 安装

1
2
3
4
5
6
7
8
9
10
#上传tomcat至自己想要的文件夹,我的是/usr/local
tar -zxvf apache-tomcat-8.5.43.tar.gz
#解压完后是名为apache-tomcat-8.5.43的文件夹
cd /usr/local/apache-tomcat-8.5.43/

#配置tomcat环境变量
#用vim打开tomcat的bin目录下的setclasspath.sh
vim /usr/local/apache-tomcat-8.5.43/bin/setclasspath.sh
#添加JAVA_HOME变量
export JAVA_HOME=/usr/local/jdk1.8.0_221

1
2
3
4
#进入bin目录,启动或关闭tomcat
cd /usr/local/apache-tomcat-8.5.43/bin
./startup.sh #启动
./shutdown.sh #关闭

2.如果tomcat启动过慢

参考:https://www.liangzl.com/get-article-detail-2622.html

参考:https://www.liangzl.com/get-article-detail-2622.html

1
2
3
4
5
6
#如果tomcat启动过慢
#进入jre的bin中(根据需要换成自己的路径,下同)
cd /usr/local/jdk1.8.0_221/jre/lib/security/
#修改java.security
vim java.security
#将securerandom.source=file:/dev/random 替换为securerandom.source=file:/dev/./urandom

3.如果要直接使用tomcat的自带管理工具

1
2
3
4
5
6
7
8
9
#配置账号
#到conf目录 修改 tomcat-users.xml 配置文件(根据需要换成自己的路径,下同)
cd /usr/local/apache-tomcat-8.5.43/conf/
vim tomcat-users.xml

#在文件加上如下内容 账号密码自己设置
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="用户名" password="密码" roles="manager-gui,admin-gui"/>
阅读全文 »

使用SpringCache做简单缓存

发表于 2019-07-23 | 分类于 SpringBoot
字数统计: 1.6k

概述

从 spring3 开始,spring 开始支持缓存组件,并提供了一系列非常方便的注解。

其中,Cache 接口定义了基本的增删改查方法,Spring 提供了一些默认的实现,比如 RedisCache 等。 CacheManager 接口则用于接入并获取 Redis 这样的缓存组件。

在 springboot 中,当我们启用缓存以后,需要如果要将接入 Redis 作为缓存,就需要配置 RedisCacheManager,其他缓存组件亦同。当没有自定义的缓存的时候,就会使用默认的 ConcurrentMapCacheManager,即将缓存存入本地的一个 Map 集合中。

一、配置

1.添加依赖

在创建项目的时候直接在 springboot 启动器中配置,或在项目中添加 Maven 依赖:

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>

2. 启用注解

在启动类或者配置类里添加 @EnableCaching 注解开启缓存

阅读全文 »
1…910

99 日志
15 分类
22 标签
RSS
© 2022 Createsequence
主题 — NexT.Gemini v5.1.4
0%