CompletableFuture实践用法 import com.atguigu.common.utils.R;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.concurrent....
多线程CompletableFuture用法 import java.util.concurrent.*;public class ThreadTest { private static ExecutorService service = Executors.newFixedThreadPool(10); public static void main(String[] args) throws Exception {// runAsync();// supplyAsync();/...
docker swarm集群搭建高可用mysql主备 docker swarm集群搭建高可用mysql主备前提:为了避免mysql单点故障,很有必要引进mysql主备。主和备分别在不同机器,并且需要保持数据一致性技术:这里用到nginx+mysql+mysql做高可用的主备,利用nginx做反向代理,当其中一台mysql服务器宕机后,自动切换另一台,注意这里不能做负载均衡,因为高并发是有存在问题的。一,启动docker swarm集群1,docker stack 配置如下图,如果不会搭建docker swarm 集群的,参考文章:搭建.
docker整合redis哨兵模式(一主二从三哨兵) docker整合redis哨兵模式(一主二从三哨兵)Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自动切换。Sentinel由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个
搭建docker swarm高可用集群以及常用命令 Swarm 是 Docker 官方提供的一款集群管理工具,其主要作用是把若干台 Docker 主机抽象为一个整体,并且通过一个入口统一管理这些 Docker 主机上的各种 Docker 资源为了利用swarm模式的容错功能,应保持集群中奇数管理员来支持manager节点故障。当leader故障时,会选举新的leader。注意:三个manage只允许一个manage故障,如果swarm失去法定人数,swarm不能自动恢复,工作节点上的任务继续运行,不受影响,但无法执行管理任务,包括扩..
docker容器mysql开启binlog和定时备份 为了保证mysql数据库的数据完整性,除了数据库的数据挂到宿主机做持久化外,还需要做binlog和定时备份数据1, 添加mysql的文件映射到docker-stack 文件中 #指定开启binlog的配置文件 - /home/test/binlog/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf #指定备份数据库的定时任务执行shell文件 - /home/test/binlog/mysql-dump.
springboot构建docker集群实践部署 为啥要用Docker?为啥要用Docker?这要从目前软件行业的痛点来讲起 软件更新发布及部署低效,过程繁琐且需要人工介入 环境一致性难以保证 不同环境之间迁移成本太高 既然docker那么火那么热,那我们不妨学习一下如何构建自己的docker镜像通过dockerFile构建自己的镜像# 基于java镜像创建新镜像FROM java:8# 作者MAINTAINER 杨汉奇 #在容器内创建创建目录,创建的目录之后需要挂载到宿主机外,实现持久化.
jekins+docker+git整合 此文章针对的是java项目,如上图,选择构建一个maven项目如上图,填写git的地址,添加密钥,以及指定哪个分支触发jekins如上图,构建触发器如上图,构建环境指定输入日志如上图,指定pom.xml文件,指定打包命令,指定构建完jar包时生成的镜像名称如上图,通过ssh连接到服务器,push生成的镜像,(并且重启项目),以及生成api文档注意:jekins的工作目录为:/data/jekins_home/workspace (宿主机)...
Mysql从索引原理对SQL分析优化实战 Mysql从索引原理对SQL分析优化实战无论是在大型项目,还是小型项目中,随着业务的迭代,用户的增长,数据库数据往往都是成百万级别的,这时候普通的sql语句执行起来是**非常慢**的,这时候就需要对sql进行优化啦,接下来将手把手从索引原理带你学会如何分析优化,写出一手逼格的sqlMysql的索引存储原理:mysql有两种索引:**hash**和**b+tree**select * from user where age = 10(生效)select * from ...
go的同步机制(sync.Mutex) 一,并发进行i++操作type atomicInt struct { value int lock sync.Mutex}func (a *atomicInt) increment() { fmt.Println("safe increment") fmt.Println(a.value) func() { a.lock.Lock() defer a.lock.Unlock() a.value++ }()}func (a *atomicInt) get() .
go的闭包(累加之和) 问题:从1到10累加并且输出:它是通过自由变量实现的。如代码:sum为自由变量func add() func(int) int{ sum := 0 return func(i int) int{ sum += i return sum }}func main() { a := add() for i:=0;i<10;i++{ fmt.Printf("0+.......+%d: %d",i,a(i)) }}...
go多线程通信以及控制协程与主线程关闭问题(sync.WaitGroup) 一,需要分配10个协程去接收20个任务,每个协程接收2个任务。问题1:每个协程通过通道(chan int)接收的任务是否完成,主线程不知道?问题2:主线程如果执行完了,则在主线程的协程则会自动结束,未接收完的协程则自动被杀掉。解决方案如下:通过sync.WaitGroupwg.Add(n) :为wg添加 n 个任务,wg.Done() :减掉一个任务wg.Wait() : 这个用于主线程等待,等到所有任务执行完了。则就会结束。type Worker struct { ...
springboot+dubbo+zookeeper(微服务生产者与消费者实战) 一,生产者配置:1,导入依赖<!-- dubbo --> <dependency> <groupId>io.dubbo.springboot</groupId> <artifactId>spring-boot-starter-dubbo</artifactId> <v...
maven打包配置 springboot项目maven打包配置:1,配置打包类型:<packaging>jar</packaging>不配置<packaging>jar</packaging>,默认是jar,有war,pom,jar三种。2,配置打包插件: <build> <!-- 名字与artifactI...
Kaptcha图片验证码整合 流程:生成图片---->把验证码数据放到session中---->登录接口进行比较。这里对session解释下:当服务端在getSession(true)时创建了Session的同时,服务器会为该Session生成唯一的Session id,而这个Session id在随后的请求中会被用来重新获得已经创建的Session;在Session被创建之后,就可以调用Session相关的方...
java NIO方式读写文件 Java NIO(new/inputstream outputstream)使用通道、缓冲来操作流,所以要深刻理解这些概念,尤其是,缓冲中的数据结构(当前位置(position)、限制(limit)、容量(capacity))。Channel(通道)、Buffer(缓冲区)、Selector(选择器)/** * @author sy * @date 2020/2/13 19:31 ...
防止Xss攻击 原理:通过过滤request请求的url进行处理。1,编写xssFilter类,public class XssFilter implements Filter { FilterConfig filterConfig = null; private List<String> urlExclusion = null; public void in...