Springboot项目docker部署配置文件外挂载
利用docker对一个Springboot打包时会遇到要及时更改相关数据库或者外部接口的ip及port,如果每次都进到容器内部修改,那一定非常麻烦,这里我想到了两种解决方案,并最终使用了后者。两种方法类似,无论哪种,都必须经过外挂载的步骤,也就是要把配置文件放到一个和宿主机映射的目录下:如图,这里采用的是docker-compose.yaml容器编排方式,不赘述:将配置文件放在宿主机目录的config下,代码中写到“/usr/app_file/config/config/json”即可被容器访问到!
方法一:容器内运行jar包的CMD采用指定外部application.yml的命令:类似:
1nohup jdk1.8.0_131/bin/java -jar -Dspring.config.location=tmp/springboottmp/xxx.yaml tmp/service.jar --spring.profiles.active=test > logs/xxxlog.log 2> ...
Websocket通信实战
引言 最近给实验室做的个系统需要用docker打包到对方服务器上,并提供多个URL页面以及接口,需求是要将提供的URL页面通过Iframe方式集成到他们的系统去,他们向我们的后端接口发送数据请求,渲染结果到我们的URL页面上,不了解WebSocket前把我难住了,我想到了设置时间间隔 不断向后端请求 也可以解决问题,但是并不优雅,请求数据过大时,时间间隔也不好设定。直到实验室李师兄通过WebSocket技术给我做了示范,原来前后端Http通信除了Ajax之外 还有WebSocket这种客户端和服务端的双向长连接通信。
WebSocket与Ajax轮询
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
WebSocket 允许服务端主动向客户端推送数据。在 WebSocket API 中, ...
实验室学姐问到可见性细节,被批浮于表面【可见性的原理初探】
之前也只是知道有可见性这么回事,但是原理不算很明白!今天把多线程的可见性原理梳理一下,原理弄懂,而非死记硬背! 先看多线程例子:
12345678910111213141516171819202122232425262728293031323334public class Demo { public static void main(String[] args) { //1. 启动线程 MyThread t = new MyThread(); t.start(); //2.主线程继续 while (true){ if (MyThread.a ==1){ System.out.println("主线程读到了a=1"); bre ...
对多线程稍作整理【多线程】
并发与并行
并发:指两个或多个事件在同一个时间段内发生。
并行:指两个或多个事件在同一时刻发生(同时发生)。
注意辨析宏观与微观的理解
在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,这在单 CPU 系统中,每 一时刻只能有一道程序执行,即微观上这些程序是分时的交替运行,只不过是给人的感觉是同时运行,那是因为分 时交替运行的时间是非常短的。
而在多个 CPU 系统中,则这些可以并发执行的程序便可以分配到多个处理器上(CPU),实现多任务并行执行, 即利用每个处理器来处理一个可以并发执行的程序,这样多个程序便可以同时执行。目前电脑市场上说的多核 CPU,便是多核处理器,核越多,并行处理的程序越多,能大大的提高电脑运行的效率。
注意:单核处理器的计算机肯定是不能并行的处理多个任务的,只能是多个任务在单个CPU上并发运行。同理,线程也是一样的,从宏观角度上理解线程是并行运行的,但是从微观角度上分析却是串行运行的,即一个 线程一个线程的去运行,当系统只有一个CPU时,线程会以某种顺序执行多个线程,我们把这种情况称之为线程调度。
线程与进程
进程:是指一 ...
二维码也不过如此嘛,手写二维码玩一下【计算机基础:二进制+字节+移位运算】
引言 其实二维码就是由URL字符串转换得到的,那么手写一个最简单的字符与图像的转换如何实现呢?下面请看
字符串转二维码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192import java.awt.Color;import java.awt.Graphics;import java.awt.image.BufferedImage;import javax.swing.JFrame;public class BinaryString extends JFrame { public BinaryString() { setTitle("二维码"); setSize(800, 600); ...
原码、补码,字符串的底层存储都不懂,还敢说学过计算机?【计算机基础:二进制+字节+移位运算】
二进制提到二进制,为啥计算机底层数据存储都采用二进制呢?计算机内部事由IC电子部件构成,IC的一个引脚,只能表示两个状态(《程序是怎样跑起来的》第二章)
字节二进制的数一般是8位、16、32,8位的二进制数被称为一个字节,字节是最基本的信息计量单位,而位是最小单位,字节是基本单位,内存和磁盘都是用字节来储存和读写数据,使用位单位则无法读写数据,因此,字节是基本单位
位bitbit位:位是==计算机存储的最小单位==简称为b也称为比特(bit)例如1b,2b,3bbyte字节:byte字节是计算机用于计量存储容量的,一种计量单位1byte= 8bit1byte =1B1byte=存1个字母2byte=存一个汉字
32位和62位系统有什么区别:
处理数据能力不同:64位的一次可以处理64位的数据,向下兼容,比如32位 16位
支持的内存不同,或者说寻址能力不同:32位的最多支持4gb的内存,而64最多支持上百g的内存
架构不同
对配置要求不同,32位系统需要32位的配套系统安装
疑问:既然有32 64,那有没有128位呢?
字符:电子计算机或者说是无线电通信中字母、数字、符号的统 ...
儿子到底继承了爸爸哪些优良传统?【OOP+继承+接口】
引言在Java中,继承是类与类之间的一种关系,分为父类和子类两种。这里和接口区分一下:一个类只能继承一个父类,而不能继承多个——即单继承关系;而一个类却可以实现多个接口。如下示例:
1如:public class 子类 extends 父类{}
子类继承了父类的所有内容,但是对于不同访问修饰父类修饰的属性方法,子类所调用的权限也不相同。对于public关键词修饰的属性和方法,子类同一个项目下都可以继承和调用。protected关键词修饰的属性和方法,可以在同包下和子类继承关系下继承和调用。对于缺省关键词的方法和属性,只能在同包下继承的调用,但是对于private修饰符修饰的属性和方法,只能自己该类使用。子类继承父类的方法后,还可以根据需要重写其该方法。重写方法的名称必须与父类相同,访问修饰符可以和父类相同也可以比父类权限更大、返回值类型可以和父类相同也可以是父的子类,这样可以丰富扩展子类继承父类的方法。对于继承父类的子类方法,在初始化方法时可以使用父类容器来初始化子类
OOP继承继承的内容
子类继承到父类的哪些东西?
所有
子类以及子类对象可以调用到继承的哪些属 ...
Docker 集成多容器镜像实 践:Jdk8,py37,Mysql,es,采用Dockfile+docker-compose编排
前言
对于一个较大的项目(Jdk8+py37+Mysql+es),如果仅仅使用一个容器做部署,安装过程可能会极其复杂,并且并不利于后期各模块的更新,为了方便他人,也为了快速生成镜像部署,对于多服务的项目,我采用了Dock-compose技术生成多容器,并进行编排,第一次做,耗时3天成功,有不少经验分享于此,便于以后快速部署环境!
1. Mysql 强烈不建议自己先生成一个干净的centos,然后进到容器里面安装Mysql,这个过程谁试过谁知道,很耗时间并且不易成功! 一开始我已经调通了Springboot和es在一个容器,本想着装一个Mysql就基本结束了,谁料这将会是一个大坑!!最终的Mysql方案,直接采用Dockerhub官方镜像, 这里补充几点, ...
【Springboot】用户权限框架:Spring security & Shiro
1、Shiro简介1.1、Shiro 是什么?
Apache Shiro 是 Java 的一个安全(权限)框架。
Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE 环境,也可以用在 JavaEE 环境。
Shiro 可以完成:认证、授权、加密、会话管理、与Web 集成、缓存等。
下载地址
官网:http://shiro.apache.org/
github:https://github.com/apache/shiro
1.2、有哪些功能?
Authentication:身份认证/登录,验证用户是不是拥有相应的身份
Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能进行什么操作,如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限
Session Management:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境,也可以是Web 环境的
Cryptography:加密,保护数据的安全性,如密码加密 ...
【Springboot】Mybatis-plus学习笔记:大大简化Mybatis 无须繁琐CRUD
MyBatisPlus概述需要的基础:把我的MyBatis、Spring、SpringMVC就可以学习这个了! 为什么要学习它呢?MyBatisPlus可以节省我们大量工作时间,所有的CRUD代码它都可以自动化完成! JPA 、 tk-mapper、MyBatisPlus偷懒的!
简介是什么? MyBatis 本来就是简化 JDBC 操作的! 官网:https://mp.baomidou.com/ MyBatis Plus,简化 MyBatis !
快速搭建导入依赖1234567891011121314151617<!-- mybatis-plus --> <!-- mybatis-plus 是自己开发,并非官方的! --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> ...














