一消息代理(RabbitMQserver)配置 代码示例: js finalstaticStringBINDING_KEY="binding_key";//bindingkey publicfinalstaticStringROUTING_KEY="binding_key";//routingkey publicfinalstaticStringEXCHANGE_NAME="exchange_a";//交换机名 finalstaticStringQUEUE_NAME="queue_a";/...

  qbian   2019年11月12日   95   1   0 rabbitmqjava-eejava

一消息为什么丢失 RabbitMQ默认情况下的交换机和队列以及消息是非持久化的,也就是说在服务器重启或者宕机恢复后,之前创建的交换机和队列都将不复存在,之前未消费的消息也就消失不见了。原因在于每个队列和交换机的durable属性。该属性默认情况是false,它决定了RabbitMQ是否需要在崩溃或者重启之后重新创建队列(或者交换机)。 二持久化交换机和队列 将交换机和队列的durable属性设置为true,这样你就不需要在服务器断电后重新创建队列和交换机了。你也许会认为把队列和交换机的durable属性设置为true就足够可以让消息幸免于重启后丢失了,真的是这样吗?队列和交换机当然必须被...

  qbian   2019年11月12日   66   1   0 rabbitmqjava-eejava

RabbitMQ是AMQP(高级消息队列协议)协议的一种实现,RabbitMQ的基本讲解也就是围绕着AMQP协议的讲解。 一角色讲解 1.1消息代理(messagebrokers):大家可以理解为RabbitMQ服务器,起到了消息接收,持久化和转发等作用。 1.2发布者(publishers)或生产者(producers):消息的产生来源,具有生产消息的角色。 1.3消费者(consumers):消息的接收者,消费消息的角色。 1.4交换机(exchange):用于接收生产者生产的消息...

  qbian   2019年11月12日   69   1   0 rabbitmqjava-eejava

官网链接:https://react.docschina.org/ 一路由配置 1.1入口js导入路由配置文件 js //main.js即项目入口文件 importReactfrom'react'; importRctDOMfrom'react-dom'; importRouterMapfrom'./routes'; RctDOM.render(<RouterMap/,document.getElementById('app')); 1.2具体路由配置 js //路由配置 importReactfrom'react'; import{HashRouter,Route}from'r...

  qbian   2019年11月12日   66   1   0 javascriptreact.js

一环境安装 我们需要用到webpack打包工具将我们前端代码进入依赖构建,压缩打包等以减少我们发布的静态资源文件个数,减少网络请求,提高前端的用户体验。 所以需要安装node环境,借用node自带的npm包管理工具安装webpack打包工具。 node相当于JAVA的运行环境jdk,npm相当于JAVA的仓库管理工具maven,只是node自带了npm,maven还需要再次安装。 二初始化项目 js cd/aaa/bbb/ccc mkdirfirst-react cdfirst-react //初始化一个node项目,一路回车健 npminit 三初始化文件 编辑packa...

  qbian   2019年11月12日   96   1   0 javascriptreact.js

一初始化项目 html <!DOCTYPEhtml <htmllang="en" <head <metacharset="UTF-8" <metaname="viewport"content="width=device-width,initial-scale=1.0" <metahttp-equiv="X-UA-Compatible"content="ie=edge" <titleindex</title <style .box{ width:100px; height:100px; background-color:gray; } .red{ background-color:red; }...

  qbian   2019年11月12日   81   1   0 html5htmljavascriptreact.js

以下问题都是以es6为基础 一基础 有哪些数据类型? 字符串、数字、布尔、数组、对象、Null、Undefined 有哪些定义变量的方式? var、const、let 怎么初始化一个数组? js constarr=[1,"a",newDate()]; 数组有哪些操作方法? ![Array操作方法](https://static.developers.pub/js_array_method.png) 怎么初始化一个对象? js constobj={ age:20, name...

  qbian   2019年11月12日   74   1   0 javascriptreact.js

Java技术体系中所提倡的自动内存管理最终可以归结为自动化的解决了两个问题:给对象分配内存和回收分配给对象的内存。 一分配内存 1.1新生代和老龄代 对象的内存分配主要就是在堆上进行分配。所以我们先来看一下堆内部布局,堆可以划分为两大块内存:新生代和老龄代,如下图所示: ![堆内存布局](https://static.developers.pub/堆内存布局-新生代-老龄代.png) 堆内存大小=新生代+老龄代 针对新生代和老龄代的垃圾回收分别称为MinorGC和MajorGC/Fu...

  qbian   2019年11月10日   1086   2   0 java-eejvmjava

一对象的创建 Java语言是一门面向对象语言,在程序运行过程中无时无刻都有新的对象被创建出来。在Java程序中,创建对象的方式有多种,除了最常用的new关键字外,我们还可以通过反射机制、Object.clone方法、反序列化以及Unsafe.allocateInstance方法来新建对象。 其中,Object.clone方法和反序列化通过直接复制已有的数据,来初始化新建对象的实例字段。Unsafe.allocateInstance方法则没有初始化实例对象字段。而new语句和反射机制则是通过调...

  qbian   2019年11月10日   1108   2   0 java-eejvmjava

一运行时数据区域 ![JVM内存模型](https://static.developers.pub/JVM内存模型.png) 类加载器加载的class字节码保存到JVM内存的方法区,实例化类对象时在堆内存中生成对象信息,调用对象的方法时会在栈内存将方法进行压栈,如果发生线程切换,会将当前线程栈内存中调用信息保存到程序计数器中,当前线程获得CPU执行权时,将程序计数器中上次调用信息获取到,继续上次的位置接着执行。 二详解 2.1方法区 方法区是线程共享的一块内存区域,它用于存储已被虚拟机...

  qbian   2019年11月10日   1055   2   0 java-eejvmjava

一什么是类加载器 通过一个类的全限定名去获取描述此类的二进制字节流的动作被称为类加载器。这个动作被放到了Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。 二类与类加载器 类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远远不限于类加载阶段。对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性。也就是比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类是来源同一个clas...

  qbian   2019年11月10日   91   2   0 java-eejvmjava

一什么是类加载 上一章我们了解了class文件存储结构,在class文件中描述的各种信息,最终都需要加载到虚拟机中之后才能被运行和使用。而虚拟机是如何加载这些class文件的? 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 JVM中类型的加载和连接过程都是在程序运行期间完成的,这样会在类加载时稍微增加一些性能开销,但是却能为Java应用程序提供高度的灵活性,Java中天生可以动态扩...

  qbian   2019年11月10日   74   2   0 java-eejvmjava

各种不同平台的虚拟机与所有平台都统一使用的程序存储格式---字节码(ByteCode)是构成平台无关性的基石。 一.class文件的来源 计算机只认识0和1,所以我们写的程序需要被编译器翻译成由0和1构成的二进制格式才能被计算机执行。 JVM只认识.class字节码,所以想要在JVM上运行的所有语言都需要编译为JVM能识别的字节码格式。 二具体结构 2.1结构 整个class文件的结构基本保持了我们编写java源码程序的上下结构,其本质上就是一张表,如果所示: 名称|数量|描述 ---|---|--- magic|1|魔数 minor_version|1|次版本号 major_v...

  qbian   2019年11月10日   71   2   0 java-eejvmjava

一什么是打包 打包是将项目中编写的类、以及依赖第三方的jar包,合并到一个jar或war包内,并在打包后的项目的配置文件中指定入口类文件路径,以便JVM能够找到入口类并加载运行项目。 二为什么要打包 一个项目的开发可能会有很多人参与,产生大量的Java源码文件以及配置文件,类之间会相互调用从而配合完成某个功能。 项目中还会依赖第三方包提供的功能jar包,如数据库驱动包、数据库连接池druid、数据库访问层框架mybatis、IOC容器spring、RPC远程调用dubbo、注册中心zoo...

  qbian   2019年11月10日   78   2   0 java-eejvmjava

代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步 一什么是编译 编译是将一种抽象程度更高的语言转换为更贴近计算机能够识别的语言的过程。 在Java中存在两次编译,不过我们今天说的是其中的第一次编译,就是将.java源程序编译为.class字节码文件的过程。 二为什么要编译 2.1高级语言 在说为什么要编译之前我们先说一下什么是高级语言。 高级语言是相对的,如果比较的对象是最底层的机器码的话,C、C、Java等都是高级语言,如果比较的对象是...

  qbian   2019年11月10日   89   2   0 java-eejvmjava

一Java变量类型 1.1图解 ![Java数据类型](https://static.developers.pub/Java数据类型.png) 1.2描述 Java中的变量可以分为两大类: 基本数据类型:主要用来支持数值计算,因为使用基本类型能够在执行效率以及内存使用上提升软件性能(只需要保存数值,不需要保存指针)。 引用数据类型:可再分为数组类型、类类型、接口类型,主要用来支持面向对象的数据模型设计。 二基本类型 类型|值域|默认值 ---|---|--- boolean|{f...

  qbian   2019年11月10日   71   2   0 java-eejvmjava

一JDK组成架构 1.1图解 ![JDK组成架构](https://static.developers.pub/JDK组成架构.png) 1.2描述 上图的JDK组成架构可以看出,JDK由两部分组成。 一部分是Java工具包:javac、jar、javadoc等。 javac:编译器,将源程序.java编译成字节码.class文件; jar:打包工具,将相关的类文件或第三方jar包打包成一个jar文件; javadoc:文档生成器,从源码中将符合javadoc规范的注释提取文档; ...

  qbian   2019年11月10日   85   2   0 java-eejvmjava

一标记-清除算法 该算法的工作过程和其名字一样,分为标记和清除两个阶段;首先标记GCRoots不可达的对象为待回收状态,在标记完成后统一回收所有被标记的对象。 ![标记-清除算法](https://static.developers.pub/标记-清除.png) 1.1不足之处 1.效率不高,标记和清除两个阶段的效率都不高; 2.空间零碎,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能导致后面无法分配大对象,然后提前触发垃圾回收动作; 二复制算法 复制算法是为了解决标记-清...

  qbian   2019年11月10日   1073   1   0 java-eejvmjava

RabbitMQ是AMQP(高级消息队列协议)协议的一种实现,RabbitMQ的基本讲解也就是围绕着AMQP协议的讲解。 一、角色讲解 ------ 1.1消息代理(messagebrokers):大家可以理解为RabbitMQ服务器,起到了消息接收,持久化和转发等作用。 1.2发布者(publishers)或生产者(producers):消息的产生来源,具有生产消息的角色。 1.3消费者(consumers):消息的接收者,消费消息的角色。 1.4交换机(exchange):用于接收...

  qbian   2019年11月10日   58   0   0 java-eejava