portainer管理Docker swarm集群 Centos7 部署情况:ip1 managerip2 worker1在manager上面部署portainer,访问ip1:9000后,选择remote,配置Docker时,输入ip1:2377,连接失败!使用命令docker logs portainerId查看错误提示:http error: Unable to ping Docker environment (e...
多进程模式下php的单例模式 Java中对static修饰的类变量可以保证整个应用中只有一份变量,而在php中由于其多进程模式,导致static修饰的类变量并不能保证只存在一份。 每一个http请求,都会创建一个进程来处理,所以每个进程中都会有一个static修饰的类变量,并且进程间是不共享数据的。所以当我们的php应用需要确保整个应用中只有一份时,使用static修饰的静态类变量无法做到。只能借助第三方存储比如red...
Spring Boot使用RabbitMQ出现诡异异常:Failed to send reply with payload 'OK',Cannot determine ReplyTo message 今天项目中出现一个诡异的异常:org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Listener threw exception at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContain...
svn提交重命名文件失败得劲解决方法 当本地修改了文件名,或者删除了文件,svn直接commit提交会失败,报错:'filename' because it was moved from 'filename' which is not part of the commit; both sides of the move must be committed together,这时,只需要再提交的时候提交文件夹或者把删除的文件一起提交即可...
Spring Boot学习(1)—— mac上Intellij使用Gradle构建Spring Boot项目,并使用Groovy 首先,需要自己下载Intellij、Gradle、Groovy。 1,Intellij创建项目,选择Spring Initializr,然后next 2,设置group、artifact,Type选择Gradle Project,Language我选择的是Groovy,使用Java就选择Java,然后next 3,选择需要的组件,我新建的是一个web项目,所以勾选了...
ThreadLocal详解 ThreadLocal为每一个使用该变量的线程提供一个变量副本,每个线程可以独立操作变量副本而不会对其他线程产生干扰和冲突,在线程中使用ThreadLocal得到变量副本来使用。这样多个线程就不会因为竞争使用一个变量而被阻塞影响性能!这样就隔离了多个线程对数据的数据共享!但是ThreadLocal是耗费内存来提高性能的!ThreadLocal为每个线程保存了变量的副本,这样每个线程在使用变量时
细说HTTPS 之前,我们在网络中的信息传输一直使用明文的方式,没有任何加密措施,坏人很容易就看到了传输的信息。之后,人们想到了使用加密的方式。1,对称加密:最初使用对称加密,双方约定使用同一个密钥,发送方使用密钥加密后发送,接收方接收到加密后的消息,然后使用同一个密钥进行解密,但是这有一个隐患,双方在约定密钥的时候,发送密钥时,坏人可以截获这个密钥,从而将拦截的信息解密,所以人们发现,双方使用同一个密钥很容...
MySQL之聚簇索引 通过聚簇索引得到的三个建议:1,每个InnoDB的表有一个特殊的索引:聚簇索引,存储了行的数据。通常聚簇索引就是指的主键索引,即InnoDB会用有主键的每张表的主键PRIMARY KEY创建聚簇索引,索引的每个节点保存了行数据,如果没有PRIMARY KEY主键,InnoDB则选择第一个UNIQUE NOT NULL的键用作创建聚簇索引,如果UNIQUE NOT NULL的键也没用,则 I
Spring boot之读取自定义配置文件 1,定义配置文件mypro.properties#自定义配置base.redis.url=localhost:434342,在启动类上加上配置注解:@PropertySource("classpath:mypro.properties")public class Application {}这是定义要读取的properties文件的位置,另外,假如只读取该文件中的
Spring boot之使用Junit测试 1,pom.xml引入junit依赖dependency> groupId>org.springframework.bootgroupId> artifactId>spring-boot-starter-testartifactId> scope>testscope>dependency>2,编写测试类@RunWith(SpringJUnit4Cl
Spring boot之使用Druid并配置SQL监控 1,pom.xml文件中引入Druid依赖dependency> groupId>com.alibabagroupId> artifactId>druid-spring-boot-starterartifactId> version>1.1.1version>dependency>2,application.properties中配置druid参数
二叉查找树(二叉排序树)Java实现 package com.demo;/** * 二叉排序树(查找树) */public class BiTree { private BiNode root; public void insertNode(int data){ BiNode node = new BiNode(data, null, null); if(root == null){
MyBatis之缓存(一级缓存、二级缓存) 1, MyBatis的解析MyBatis的解析工作由XmlConfiguraBuilder类来实现的,它将MyBatis的所有配置信息解析到Configuration中,为之后的使用提供支持。2, MyBatis的一级缓存MyBatis的一级缓存是SqlSession级别的缓存,每个SqlSession都有一个以及缓存。我们在对数据库进行操作时,会创建一
远程服务调用之RMI、Hessian、Burlap、Spring的HTTPinvoker RMI:在服务端,使用RmiServiceExporter把POJO包装到RMI服务适配器中,并将服务适配器绑定到RMI注册表中,从而将POJO转换为RMI服务,在客户端,RMI服务将远程服务使用一个代理装配进来,使得我们可以像使用本地服务一样使用远程服务;它使用二进制协议,使用Java标准的对象序列化机制,只能服务于Java服务。Hessian、Burlap:Hessian和Burlap一样
Spring消息(2)之AMQP(RabbitMQ) 上一篇博客粗略地说了一下AMQP,它是一个二进制传输协议,基于AMQP的消息模型,比JMS的功能更加丰富,提供了不局限于点对点和发布-订阅等多种模式。这一篇讲的是AMQP的实现:RabbitMQ,以及在Spring中的支持。RabbitMQ是一个开源的消息代理,它实现了AMQP,而Spring AMQP为RabbitMQ提供了支持,包括了RabbitMQ连接工厂,模板以及Spring配置命名空
AMQP浅谈 AMQP,高级消息队列协议(Advanced Message Queuing Protocol),是一个异步消息传递所使用的应用层协议规范,和JMS不同,JMS是一组API,而AMQP是一个规范,是一个二进制协议。AMQP采用了分层的协议架构,共分为三层,包括Model Layer、Session Layer、Transport Layer,Model层定义了基本域模型(exchange、
Spring消息(1)之 JMS 主要有两个用户:1) 程序之间的通信,当其中一方出现问题之后,消息会丢失,所以我们把消息放到消息队列中,接收方任何时候都可以接收消息,不会丢失;2) 用户注册流程一般包括:插入用户数据到数据库,发送激活邮件到用户邮箱等一列操作,当用户点击注册之后,等到后台一系列都完成之后才响应,这会大大影响操作体验,所以我们需要采用异步消息。JMS(Java Message Service),是一个J