自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 The valid characters are defined in RFC 7230 and RFC 3986异常处理

RFC 3986文档规定,Url中只允许包含英文字母(a-z,A-Z)、数字(0-9)、- _ . ~ 4个特殊字符以及所有保留字符。RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ]

2022-08-01 18:16:43 625 1

原创 设计模式:03-单例模式

单例的实现分为饿汉模式和懒汉模式。顾名思义,饿汉模式就好比他是一个饿汉,而且有一定的危机意识,他会提前把食物囤积好,以备饿了之后直接能吃到食物。对应到程序中指的是,在类加载时就会进行单例的初始化,以后访问时直接使用单例对象即可。饿汉模式的实现代码如下:以上程序的执行结果为:从上述结果可以看出,单例对象已经被成功获取到并顺利地执行了类中的方法。它的优点是线程安全,因为单例对象在类加载的时候就已经被初始化了,当调用单例对象时只是把早已经创建好的对象赋值给变量;它的缺点是可能会造成资源浪费,如果类加载了单例对

2022-06-27 17:38:45 171

原创 Java中关键字synchronized的使用方法详解

synchronized是Java里的一个关键字,起到的一个效果是“监视器锁”,它的功能就是保证操作的原子性,同时禁止指令重排序和保证内存的可见性!此时的线程就是不安全的,如何解决呢?给我们的Counter对象里的add方法加上synchronized关键字,针对这个方法进行了加锁操作。进入代码块(调用方法)自动加锁,出了代码块(方法结束),自动解锁。那么这里的代码是如何保证正确的呢?使用synchronized 就相当于在我们执行的指令里又加入了2条新指令。LOCK (加锁)UNLOCK (解锁)

2022-06-27 14:57:11 751

原创 Docker 网络连通

网络连通# 测试打通tomcat01到tomcat-net-01[root@master ~]# docker network connect mynet tomcat01[root@master ~]# docker network inspect mynet[ { "Name": "mynet", "Id": "5f1e38310933ce7dbe7773742a53ec94bca5866d12b989127911cafe508d70fd",

2022-05-10 16:23:52 355

原创 Docker 自定义网络

自定义网络查看所有的docker网络网络模式bridge:桥接 docker(默认)none:不配置网络host:和宿主机共享网络container:容器网络连通!(用的少!局限很大)测试# 我们直接启动的命令,默认有 --net bridge ,而这个就是我们的docker0docker run -d -P --name tomcat01 tomcat:8.0docker run -d -P --name tomcat01 --net bridge tomcat:8.0# d

2022-05-10 16:06:07 1386

原创 Docker 容器互联--link

问题引入思考一个场景,我们编写了一个微服务,当中数据库的配置database url=ip:3306,我们想要项目不重启,将数据库ip换掉(停掉容器,重启),我们希望可以用名字来进行访问容器[root@master ~]# docker exec -it tomcat02 ping tomcat01ping: unknown host tomcat01# 如何可以解决呢?[root@master ~]# docker exec -it tomcat02 ping tomcat01ping:

2022-05-10 15:22:04 427

原创 Docker网络

理解Docker 0三个网络# docker 是如何处理容器网络访问的?[root@master dockerfile]# docker run -d -P --name tomcat02 tomcat:8.0# 查看容器的内部网络地址 ip addr ,发现容器启动的时候会得到一个 eth0@if105 ip地址,docker分配的![root@master dockerfile]# docker exec -it tomcat02 ip addr1: lo: <LOOPBACK

2022-05-06 18:29:07 376

原创 Docker镜像发布到阿里云镜像服务

1、登陆阿里云2、找到容器镜像服务3、创建命名空间4、创建镜像仓库5、浏览阿里云阿里云容器镜像参考官方步骤!

2022-05-06 15:19:38 509

原创 Docker发布镜像到DockerHub

DockerHub1、地址https://hub.docker.com/注册自己的账号!2、确定这个账号可以登录3、在我们的服务器上提交自己的镜像[root@master ~]# docker login --helpUsage: docker login [OPTIONS] [SERVER]Log in to a Docker registry.If no server is specified, the default is defined by the daemon.Opt.

2022-05-06 14:47:46 546

原创 DockerFile 制作tomcat镜像

1、准备镜像文件 tomcat压缩包,jdk压缩包2、编写dockerfile文件,官方命名Dockerfile,build 会自动寻找这个文件,就不需要-f 指定了!FROM centos:7MAINTAINER xiaowei<2541341974@qq.com>COPY readme.txt /usr/local/readme.txtADD apache-tomcat-9.0.62.tar.gz /usr/local/ADD jdk-8u291-linux-x64.tar.

2022-04-26 18:14:28 1316

原创 DockerFile中 CMD和ENTRYPOINT的区别

CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令测试cmd# 编写 dockerfile 文件[root@master dockerfile]# vi dockerfile-cmd-testFROM centos:7CMD ["ls","-a"]# 构建镜像[root@master dockerfile]# docker build -f dockerfile-.

2022-04-26 15:04:56 138

原创 DockerFile 构建centos

Docker Hub 中99%镜像都是从这个基础镜像过来的 FROM scratch,然后配置需要的软件和配置来进行构建创建一个自己的centos# 1、编写DockerFile的文件[root@master dockerfile]# cat mydockerfile-centos FROM centos:7MAINTAINER xiaowei<2541341974@qq.com>ENV MYPATH /usr/localWORKDIR $MYPATHRUN yum -

2022-04-25 18:39:00 282

原创 DockerFile指令

FROM # 基础镜像,一切从这里开始构建MAINTAINER # 镜像是谁写的,姓名+邮箱RUN # 镜像构建的时候需要运行的命令ADD # 步骤:tomcat镜像,这个tomcat压缩包!添加内容WORKDIR # 镜像的工作目录VOLUME # 挂载的目录EXPOSE # 暴露端口配置CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代ENTRYPOINT # 指定这个容器启动的时候要运行的

2022-04-25 17:44:32 169

原创 DockerFile

DockerFile介绍dockerfile是用来构建docker镜像的文件!命令参数脚本!构建步骤:1、编写一个dockerfile文件2、docker build 构建成为一个镜像3、docker run 运行镜像4、docker push 发布镜像(DockerHub、阿里云镜像仓库)查看一下官方是怎么做的?很多官方的镜像都是基础包,很多功能没有,我们通常会自己搭建自己的镜像!官方既然可以制作镜像,我们也可以!DockerFile构建过程基础知识:1、每个保留关键字(指令)

2022-04-25 17:04:28 64

原创 数据卷容器

多个MySQL同步数据!# 启动3个容器,通过我们自己写的镜像启动删除docker01容器之后,docker02中的数据依然存在多个MySQL实现数据共享docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7docker run -d -p 3310:3306 -e MYSQL_ROOT_PAS

2022-04-24 15:46:35 699

原创 Dockerfile 挂载数据卷

Dockerfile就是用来构建docker镜像的构建文件!命令脚本!通过这个脚本可以生成镜像,镜像是一层一层的,脚本是一个一个的命令,每个命令是一层!# 创建一个dockerfile文件,名字可以随机,建议Dockerfile# 文件中的内容 指令(大写) 参数FROM centosVOLUME ["volume01","volume02"]CMD echo "-----end------"CMD /bin/bash# 这里的每个命令,就是镜像的一层!启动自己的容器这

2022-04-24 15:02:11 1140

原创 具名和匿名挂载

具名和匿名挂载# 匿名挂载-v 容器内路径docker run -d -P --name nginx01 -v /etc/nginx nginx# 查看所有的volume的情况 [root@master ~]# docker volume lsDRIVER VOLUME NAMElocal d7dedc6c8032d006ae5a59cb298c9a5c94110de61eb8b221277b837a247127c3# 这里发现,这种就是匿名挂载,我们在-v 只写了容器内的

2022-04-24 14:30:10 2426

原创 Maven项目的简单打包

最简单的方法首先是在maven项目的pom.xml中添加打包的插件,这里有很多种方式的。最最简单的就是只使用maven-compiler-plugin、maven-jar-plugin插件,并且指定程序入口。相关代码如下:pom.xml文件:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3

2022-04-21 10:37:33 4836

原创 Docker 安装MySQL并持久化数据

# 获取镜像docker pull mysql:5.7# 运行容器,需要做数据挂载 # 安装启动mysql,需要配置密码,注意!!# 启动镜像-d 后台运行-p 端口映射-v 卷挂载-e 环境配置--name 容器命名docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --nam

2022-04-06 16:42:15 2081

原创 【Docker】容器数据卷

docker的理念回顾将应用和环境打包成一个镜像!数据?如果数据都在容器中,那么我们容器删除,数据就会丢失!需求:数据可以持久化MySQL,容器删了,删库跑路!需求:MySQL数据可以存储在本地!容器之间可以有一个数据共享的技术!Docker容器中产生的数据,同步到本地!这就是卷技术!说白了就是目录的挂载,将我们容器内的目录,挂载到Linux上面!...

2022-04-06 11:29:49 108

原创 [Docker]commit镜像

docker commit 提交容器成为一个新的副本# 命令和git原理类似docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]实战测试# 1、启动一个默认的tomcat# 2、发现默认的tomcat是没有webapps应用,镜像的原因,官方的镜像默认webapps下面是没有文件的!# 3、我自己拷贝进去了基本的文件# 4、将我们操作过的容器通过commit提交为一个镜像,我们以后就使用我们修改过的镜像即可,这就是我们自己的一个修改过

2022-04-02 17:39:59 520

原创 Portainer可视化面板安装

portainer(先用这个)docker run -d -p 8088:9000 \--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainerRancher(CI/CD再用) 持续集成和持续部署什么portainer?Docker图形化界面管理工具!提供一个后台面板供我们操作!docker run -d -p 8088:9000 \--res.

2022-04-02 15:22:02 404

原创 docker 安装tomcat

# 官方的使用docker run -it --rm tomcat:9.0# 我们之前的启动都是后台,停止了容器之后,容器还可以查到,docker run -it --rm tomcat:9.0 一般用来调试,用完就删除# 下载tomcat 镜像docker pull tomcat# -d 后台启动tomcat, -p 外部端口:容器内部端口 --name 为该容器命名docker run -d -p 3355:8080 --name tomcat01 tomcat# 进入容器do

2022-04-02 14:37:43 1716

原创 docker 安装nginx

# 搜索镜像docker search nginx# 下载镜像docker pull nginx # 没有指定版本,则下载最新版本# 启动nginx,-p 外部服务器暴露端口号为3344,对应nginx容器内部的80, -d 后台运行, --name 给容器命名[root@master /]# docker run -d --name nginx01 -p 3344:80 nginx769c82b09957a5fda4f4fa5eb33ed76786ff8919cd950ede2d454d

2022-04-01 19:05:39 2278

原创 docker 的常用命令

帮助命令docker version # 显示docker的版本信息docker info # 显示docker的系统详细信息, 包括镜像和容器的数量docker 命令 --help # 帮助命令帮助文档的地址:https://docs.docker.com/reference/镜像命令docker images 查看所有本地的主机上的镜像[root@master mysql]# docker imagesREPOSITORY TAG IMAGE ID

2022-04-01 16:09:26 271

原创 docker 底层原理

docker是怎么工作的?docker是一个client - server结构的系统,docker的守护进程运行在主机上,同过socket从客户端访问!docker server接收到docker client的指令,就会执行这个命令docker为什么比VM快1、docker有着比虚拟机更少的抽象层2、docker用的是宿主机的内核,VM需要虚拟硬件与内核所以说,新建一个容器的时候,docker不需要像VM一样重新加载一个操作系统内核,避免引导。虚拟机是加载Guest OS ,分钟级别。而do

2022-03-24 17:41:38 1290

原创 docker 安装

环境准备1、需要会一点linux2、centos 7 的服务器3、Xshell环境查看# 系统内核是 3.10以上的[root@master ~]# uname -r3.10.0-1127.19.1.el7.x86_64# 系统版本[root@master ~]# cat /etc/os-release NAME="CentOS Linux"VERSION="7 (Core)"ID="centos"ID_LIKE="rhel fedora"VERSION_ID="7.

2022-03-18 18:47:43 67

原创 MyBatis动态SQL

配置依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency>在Spri.

2022-01-14 16:14:24 258

原创 mybatis使用注解方式插入数据后获取自增长的主键值

步骤有三:写SQL,但不要自己插入主键值配置@Options(useGeneratedKeys=true, keyProperty=“对象.属性”)这个的作用是设置是否使用JDBC的getGenereatedKeys()方法获取主键并赋值到keyProperty设置的对象的属性中,说白了就是把自增长的主键值赋值给对象相应的属性3. 在插入后,使用对象.主键属性的getXXId()方法获取主键值@Insert("INSERT INTO api(component, clientAp

2021-12-22 18:51:10 124

原创 设计模式:02-观察者模式

一、使用场景: 适用于当一个对象的状态发生变化时主动去通知另一个对象的场景。二、使用步骤:1.定义被观察者类,该类继承java.util.Observable,并在类中提供一个给外部进行调用的方法,在该方法中需要进行两部操作:setChanged();notifyObservers(xxx);其中第二个方法调用中传入的值就是观察者收到的值。示例类如下:package com.observer;import java.util.Observable;public class ShareO

2021-12-17 11:29:46 55

转载 设计模式:01-代理模式

一、使用代理模式的场景:对已经开发好的类进行功能增强(添加或修改),比如有一个接口:package com.proxy;public interface Animal { void dog(); void cat(); void monkey();}以及该接口的一个实现类:package com.proxy;public class Dog implements Animal { @Override public void dog() {

2021-12-16 17:21:54 62

原创 将excel数据导入mongoDB数据库

以BDCM-210410.xlsx文件为例步骤一、将BDCM-210410.xlsx 另存为 BDCM-210410.csv步骤二、执行 imongoimport命令mongoimport -d vstudio -c signals --type csv --headerline --file BDCM-210410.csv参数说明:d:数据库名c:collection名type:文件类型,指明是csv文件headline:指明第一行是列名,不需要导入file:csv文件路径及名字

2021-04-14 15:51:27 3023

原创 Java 复制zip文件到指定目录

工具类:import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.File;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;public class FileHelpUtils { /** The Constant LOG. */ private static final L

2020-12-28 16:10:07 776 1

原创 ftp连接服务器500 Illegal PORT command. ftp: bind: Address already in use解决

ftp连接服务器,用ls查看列表时报错ftp> ls500 Illegal PORT command.ftp: bind: Address already in use解决如下ftp> passivePassive mode on然后ls还是报错ftp> ls227 Entering Passive Mode (192,168,0,112,169,241).425 Security: Bad IP connecting.这个原因是因为服务器本身设置了两个ip地址解决

2020-12-16 16:25:25 2799 2

原创 Gson的使用

public class test { public static void main(String []args){ String postResult ="{\"code\":200,\"message\":\"success\",\"data\":[{\"name\":\"n1\",\"result\":\"1\"}]}"; Gson gson = new Gson(); JsonObject jsonObject = gson.fromJson

2020-12-15 10:41:36 395 2

原创 JSONArray遍历取值

JSONArray jsonArray = (JSONArray) object.get("data"); for(int i = 0; i < jsonArray.size(); i++) { JSONObject obj = jsonArray.getJSONObject(i); Integer del = (Integer) obj.get("del"); String bookId = (String) obj

2020-12-02 14:34:36 18214

转载 Swagger的增强,knife4j的使用

Swagger作为一款API文档生成工具,虽然功能已经很完善了,但是还是有些不足的地方。偶然发现knife4j弥补了这些不足,赋予了Swagger更多的功能,今天我们来讲下它的使用方法。knife4j简介knife4j是springfox-swagger的增强UI实现,为Java开发者在使用Swagger的时候,提供了简洁、强大的接口文档体验。knife4j完全遵循了springfox-swagger中的使用方式,并在此基础上做了增强功能,如果你用过Swagger,你就可以无缝切换到knife4j。.

2020-11-18 16:50:15 15565

转载 SpingBoot 集成 Swagger2

在团队开发中,一个好的 API 文档不但可以减少大量的沟通成本,还可以帮助一位新人快速上手业务。传统的做法是由开发人员创建一份 RESTful API 文档来记录所有的接口细节,并在程序员之间代代相传。这种做法存在以下几个问题:**1.**API 接口众多,细节复杂,需要考虑不同的HTTP请求类型、HTTP头部信息、HTTP请求内容等,想要高质量的完成这份文档需要耗费大量的精力;**2.**难以维护。随着需求的变更和项目的优化、推进,接口的细节在不断地演变,接口描述文档也需要同步修订,可是文档和代码处

2020-11-18 14:53:29 89

原创 Centos7下载

阿里云站点:http://mirrors.aliyun.com/centos/7/isos/x86_64/每个链接都包括了镜像文件的地址、类型及版本号等信息进入阿里云站点,选择 CentOS-7-x86_64-DVD-1810.iso下载各个版本的ISO镜像文件说明:CentOS-7-x86_64-DVD-1810.iso 标准安装版(推荐)CentOS-7-x86_64-Everything-1810.iso 完整版,集成所有软件(以用来补充系统的软件或者填充本地镜像)CentOS-7-x8

2020-11-10 14:44:34 318

原创 拦截器中通过response返回JSON数据

做接口的拦截器时,需在拦截器中通过response返回JSON信息 response.setCharacterEncoding( "UTF-8"); response.setContentType( "application/json; charset=utf-8"); PrintWriter out = null ; try{ JSONObject res = new JSONObject();

2020-10-22 16:24:49 2314 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除