Mysql集群部署

环境说明:

服务器 角色 说明
192.168.0.11 管理节点 Centos 64位
192.168.0.12 数据节点、SQL节点 Centos 64位
192.168.0.13 数据节点、SQL节点 Centos 64位

安装Mysql Cluster

下载Mysql Cluster

下载地址:https://dev.mysql.com/downloads/cluster/
选择:Linux-Generic,这边是64位机器,所以下载 mysql-cluster-gpl-7.5.9-linux-glibc2.12-x86_64.tar.gz

redis集群部署

安装Redis

下载Redis

下载地址:http://download.redis.io/releases/
本次集群部署使用的是最新版本4.0.9

上传并解压Rdis

1
tar -zxvf redis-4.0.9.tar.gz -C ../softs/ #路径自定义

进入到源码包中,编译并安装Redis

1
2
cd ../softs/ #与上面的路径保持一致
make && make install

手动变速箱原理

概述

最近有很多小伙伴都拿到了驾照,但是想要尽快成为一名老司机,对于汽车的一些运作原理我们还是要了解的,做到知其所以然,才可以更好地去驾驶汽车。下面我们就来聊一聊手动变速箱的原理。 🚘

为什么需要变速箱

手动变速箱已经成功地被运用到汽车上长达数十年了,到今天为止,它仍是最受欢迎的变速箱之一,那么变速箱的作用到底有哪些呢?

发动机产生的动力,在到达驱动轮之前会先经过变速箱,变速箱最基本的功能就是控制在不同路况的条件下,控制输送到驱动轮的速度与扭矩。简单来说就是控制速度的不同(废话 😅 ),还记得初中物理课上老师提问过我们,汽车在上坡时应该降低速度,还是提高速度?答案是降低速度,因为在上坡时我们需要更多的扭矩(动力),而在发动机的功率一定时,由能量守恒定律可知,降低速度可以增大扭矩(见下图)。相应地,如果扭矩需求变低,我们就可以增加变速箱的输出速度。

深入理解JVM——类加载机制

什么是类加载机制

虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。

使用类加载机制的好处

  • 在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是会为Java应用程序提供高度的灵活性,Java里天生可以动态扩展的语言特性就是依赖运行期动态加载和动态连接这个特点实现的。
  • 如果编写一个面向接口的应用程序,可以等到运行时再指定其实际的实现类;用户可以通过Java预定义的和自定义类加载器,让一个本地的应用程序可以在运行时从网络或其他地方加载一个二进制流作为程序代码的一部分,这种组装应用程序的方式目前已广泛应用于Java程序之中。从最基础的Applet、JSP到相对复杂的OSGi技术,都使用了Java语言运行期类加载的特性。

深入理解JVM——类文件结构

代码

  • Test.java 内容如下所示:
1
2
3
4
5
6
public class Test{
private int m;
public int inc(){
return m+1;
}
}
  • 在命令行窗口中执行javac Test.java来生成对应的class文件
  • 使用二进制编辑器打开二进制文件,我的的jdk版本是1.8.0_151,不同版本的jdk编译出来的代码可能会有一些差别,得到如下的二进制代码(这里用十六进制来简化表示):

深入理解JVM——垃圾收集

对象已死?

在堆里面存放这Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收之前,首先要判断的事情是这些对象中哪些还“存活”着,哪些已经“死去”(即不可能再被任何途径使用的对象)

引用计数算法

  • 定义:给对象中添加一个引用计数器,每当有一个地方引用他时,计数器的值就+1;当引用失效时,计数器值就-1;任何时候计数器值为0的对象就是不能再被使用的。
  • 优点:实现简单,判定效率较高。
  • 缺点:难以解决对象之间相互循环引用的问题,主流的Java虚拟机里面没有选用引用计数的方法来进行内存管理。

深入理解JVM——对象初探

以常用的虚拟机HotSpot和常用的内存区域Java堆为例,探讨HotSpot虚拟机在Java堆中对象分配,布局和访问的全过程。

对象的创建

  • 当虚拟机遇到一条new指令时,首先将去检查这个指令的参数能否在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经加载、解析和初始化的过。如果没有,那么先执行初始化过程。
  • 类加载检查通过之后,虚拟机将为新生对象分配内存。对象所需的内存大小在类加载完成之后就可以完全确定,为对象分配空间的任务等同于把一块确定大小的内存从Java堆中划分出来。

Java Dynamic Proxy Class

What is Dynamic Proxy

  • A dynamic proxy class is a class that implements a list of interfaces specified at runtime when the class is created.
  • a method invocation through one of the interfaces on an instance of the class will be encoded and dispatched to another object through a uniform interface
  • a dynamic proxy class can be used to create a type-safe proxy object for a list of interfaces without requiring pre-generation of the proxy class

深入理解JVM——内存初探

Java虚拟机在执行java程序的过程过,会把内存进行划分,jvm管理的内存区域主要包括以下的几个区域:(图片来自于网络)

内存数据区域

程序计数器

  • 程序计数器用来记录当前指令执行到的位置
  • 在任何时刻,一个处理器都只会执行一条指令,所以为了线程切换后能恢复到正确的执行位子,每条线程都需要有一个独立的程序计数器,各条线程之间互不影响,独立存储,所以我们称这类内存为“线程私有”的内存
  • 如果虚拟机执行的是Native方法,即操作系统提供的本地方法,则这个计数器的值为空
  • 此内存区域没有规定任何OutOfMenoryError的异常