- 博客(203)
- 资源 (8)
- 收藏
- 关注
原创 mysql5.7.14 windows主从配置简记
关键命令:master:SHOW MASTER STATUS;SHOW PROCESSLIST;FLUSH LOGS;GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' IDENTIFIED BY 'root'; FLUSH PRIVILEGES;slave:SHOW SLAVE S
2016-07-31 18:43:47
838
原创 paxos和分布式系统
1.paxos解决的问题 用来确定一个不可变变量的取值,取值可以是任意二进制数据,该变量的取值一旦确定将不再更改,并且可以被获取到(不可变性,可读取性) 2.分布式存储系统中paxos应用: <1>数据本身可变,采用多副本进行存储 <2>多个副本的更新操作序列【Op1,Op2,…,Opn】是相同的,就变的 <3>用Paxos依次来确定
2016-03-11 17:16:18
884
原创 Paxos和分布式存储系统
1.paxos解决的问题 用来确定一个不可变变量的取值,取值可以是任意二进制数据,该变量的取值一旦确定将不再更改,并且可以被获取到(不可变性,可读取性) 2.分布式存储系统中paxos应用: <1>数据本身可变,采用多副本进行存储 <2>多个副本的更新操作序列【Op1,Op2,…,Opn】是相同的,就变的 <3>用Paxos依次来确定
2016-03-11 17:11:59
1034
原创 JVM虚拟机-类加载器
1.概述: 实现通过一个类的全限定名来获取描述此类的二进制字节流的代码模块称之为类加载器,通常在JVM外部实现 2.类与类加载器 对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在JVM中的唯一性。比较两个类是否相等,只有在这两个类是由同一个类加载器加载的前提下才意义,否则即使两个类来源于同一个Class文件,被同一个虚拟机加载,只要加载它的classloader
2016-03-05 10:41:25
447
原创 JVM虚拟机-类加载
加载机制: JVM把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被JVM直接使用的java类型。 2.类的生命周期 类从被加载到jvm内存中开始,到卸载出内存为止,生命周期包括: 加载(loading) 验证(Verification) 准备(Preparation) 解析(Resolution) 初始化(Initialization)
2016-03-04 15:09:44
451
原创 JVM虚拟机-内存分配与回收策略
1.概述: 对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况下也可能会直接分配在老年代中,分配的规则取决于使用的垃圾收集器组合和虚拟机中与内存相关的参数设置. 2.对象优先在Eden分配 对象在新生代Eden区中分配,Eden没有足够空间进行分配时,jvm将发起一次Minor GC (内存回收日志打钱:-XX:+P
2016-03-04 10:50:41
469
原创 JVM虚拟机-GC(算法)
标记-清除算法 <1>原理:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记对象 <2>缺点: a. 标记和清除两个过程的效率都不高 b.空间问题:标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后, 在程序运行过程中需要分配较大对象时,无法找到足够的连续内存不得不提前触发一次GC 复制算法 <1>原理:将可用内
2016-03-01 17:35:41
373
原创 JVM虚拟机-GC(对象)
1.概述: 内存运行时区域的各个部分,其中程序计数器,虚拟机栈,本地方法栈随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出有条不紊执行入栈和出栈操作。每个栈桢分配内存数在类结构确定就是已知的。这几个区域不需要过多考虑回收的问题,在方法或线程结束时内存就自然回收了。 java堆和方法区因为只有在程序处于运行期间时才能知道会创建哪些对象,内存的分配和回收是动态的。GC主要关注
2016-03-01 17:10:34
622
原创 JVM虚拟机-OOM
1.java堆: java堆大小配置: 最大值:-Xmx 最小值:-Xms 当两个参数设置为一样时可以避免自动扩展 java堆内存中的OOM异常是实际应用中常见的内存溢出异常情况,当java堆出现内存溢出时,异常堆栈信息”java.lang.OutOfMemoryError”会跟着进一步提示”java heap space”.
2016-03-01 13:50:45
437
原创 JVM虚拟机-对象(HotSpot)
备注:本文涉及对象仅限于普通的java对象,不包括数组和class对象等1. 对象创建 流程: <1>jvm遇到new指令时,首先检查该指令参数是否能在常量池中定位类的符号引用,同时检查该类符号是否被加载,解析,初始化过,没有则执行类的加载过程(详见类的加载) <2>jvm分配内存: 方式: a.指针碰撞:假设
2016-02-29 16:48:38
380
原创 JVM虚拟机-内存划分
1.图示: 2.内存区域介绍: <1>程序计数器(Program Counter Register) 占用的内存较小,当前线程所执行的字节码的行号指示器,字节码解释器工作时通过改变这个计数器的值为选取下一条需要执行的字节码指令。 java虚拟机线程通过线程轮流切换并分配处理器执行时间方式来实现,因此在任何一个确定时间,一个处理器(内核)只会执行一条
2016-02-29 13:34:45
400
原创 Netty-私有协议栈
1.用于内部各模块之间的通信,基于TCP/IP协议栈,类HTTP应用层协议 2.网络拓扑图: 分布式组网环境下,每个netty节点之间建立长连接,使用Netty协议进行通信,每个节点可以同时做为服务端和客户端 3.功能描述: 承载业务内部各模块之间的消息交互和服务调用 <1>提供高性能的异步通信能力 <2>提供消息的编解码框架,可以实现的POJO的序列化和
2016-02-24 17:13:16
1213
原创 JAVA_NIO
1.定义:NIO-Non Block IO非阻塞io 2.组成核心类库: <1>缓冲区Buffer 1)定义:buffer是一个对象,包含要写入或者要读出数据。在NIO中所有的数据都是用缓存区处理的,在读取数据时,直接读取到缓存区中;在写入数据时,写入到缓存区中。任何访问NIO的数据都是通过缓冲区进行的。 2)本质:数组,同时提供了对数据的结构化访问以
2016-02-24 11:30:09
404
原创 JAVA-BIO
1.网络编程: 基本模型是Client/Server模型,也就是两个进程之间进行相互通信,其中服务端提供位置信息(绑定的IP地址和监听端口),客户端通过连接操作向服务端监听的地址发起请求,通过三次握手建立连接,如果连接建立成功,双方就可以通过网络套接字(socket)进行通信 传统同步阻塞模型,ServerSocket负责绑定IP地址,启动监听端口,Socket负责发起连接操作。连接成功后,双方
2016-02-23 17:30:49
311
原创 LVS_keepalived
1.原理: keepalived功能就像是两个人互相看着一个工作,如果一个人离开岗位,另一个人会马上接手 2.作用: 检测web服务器的状态,如果有一台服务器死机,或工作出现故障,keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后keepalived自动将web服务器加入到服务器集群中,这些工作全部自动完成 keepalive
2016-02-22 16:26:23
405
原创 LVS-安装
1.环境需求 LVS负载均衡器:192.168.20.150 VIP地址:192.168.20.100 http服务器1:192.168.20.152 http服务器2:192.168.20.153 2.安装IPVSADM: IPVS管理工具,LVS的核心就是IPVS(IP Virtual Server),从Linux内核2.6开始,IPVS模块已经编译进
2016-02-22 16:17:05
602
原创 LVS-使用小结
1.LVS体系结构 LVS全称Linux virtual server即linux 虚拟服务器 LVS集群负载均衡器接收服务的所有客户端请求,然后根据调度算法决定由集群中的哪个节点处理并回复客户端 LVS虚拟服务器体系:一组服务器通过高速的局域网或者地理分布的广域网相互连接,在服务器之前有一个负载调度器(Load Balance).负载调度器负责将客户调度到真实的服务器
2016-02-22 14:57:44
1992
原创 设计模式-备忘录
1.核心:保存某个对象内部状态的copy,可以将该对象恢复到原先的状态 2.结构: <1>发起人(Originator):要被备分的成员,提供创建备忘录的方法,就是将它自身的某些信息copy一份到一个备忘录对象中。并提供另外一个方法将备忘录中的信息覆盖自身的信息 <2>备忘录(Memeto):备忘录对象中包含存储发起人状态的成员变量,它提供set,get或构造方法保存发起人状及
2016-02-20 18:27:51
430
原创 设计模式-观察者
1.核心: -观察者模式主要用于1:N的通知。当一个对象(目标对象Subject或者Objservable)的状态变化时,需要告知一系列对象(观察者对象,Observer),让他们做出响应 -通知观察者的方式: 推:每次都把通知以广播的方式发送给所有观察者,所有观察者只能被动接收 拉:观察者知道有消息,至于什么时候获取出内容,获取什么内容都可以
2016-02-17 16:49:07
359
原创 设计模式-状态
1.核心:用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题 2.角色: <1>Context环境类:维护一个State对象,定义了当前的状态,并控制状态的切换 <2>State抽象状态类 <3>ConcreteState具体状态类:每一个类封装一个状态对应的行为 3.开发中的场景: -银行系统中账号状态的管理 -OA系统中公文状态的管
2016-02-17 15:57:02
302
原创 设计模式-模板方法
1.模板方法模式是编程中经常用得到的模式,定义了一个操作中的算骨架,将某些步骤延迟到子类中实现。这样新的子类可以不改变一个算法结构的前提下重新定义该算法的某些步骤 2.核心: 处理某个流程的代码已经都具备,但是基中某个节点的代码暂时不能确定,因此采用工厂方法模式,将这个节点的代码实现转移给子类完成,即:处理步骤父类中定义好,具体实现延迟到子类中定义 3.方法回调(钩子方法)
2016-02-17 15:14:48
386
原创 设计模式-策略
1.核心:对应于解决某个问题的一个算法族,允许用户从该算法族中任选一个算法解决某一问题,同时可以方便的更换算法或增加新的算法,由客户端决定调用哪个算法 2.角色: <1>上下文对象:该类中实现了对抽象策略中定义的接口或抽象类的引用 <2>抽象策略对象:通常由一个接口或抽象类实现,给出所有的具体策略类所需的接口 <3>具体策略:封装了实现不同功能的不同算法 3.开发业
2016-02-17 14:20:39
257
原创 设计模式-访问者
1.处理问题:对于存储在一个集合的对象,可能具有不同的类型(即使有一个公共的接口),对于该集合的对象,可以接受一类称为访问者的对象来访问,不同的访问者其访问方式也有所不同 2.定义:表示一个作用于某对象结构中的各元素的操作,使用该模式可以在不改变各个元素的类的前提下定义作用于这些元素的新操作 3.开发场景: -XML文档解析设计 -编译器的设计 -复杂集合对象的处理
2016-02-17 12:57:50
329
原创 设计模式-解释器
1.用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器模式 2.开发中常见情景: -EL表达式的处理 -正则表达式解释器 -SQL语法的解释器 -数学表达式解析器
2016-02-17 12:53:16
392
原创 设计模式-命令
1.核心:将一个请求转化为一个对象,从而可以使用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。也称之为:动作Action模式,事务transaction模式 2.开发常见情景: -struts2,action的整个调用过程中就有命令模式 -数据库事务机制的底层实现 -命令的撤销和恢复 3.角色: <1>Command抽象命令
2016-02-17 12:40:01
425
原创 设计模式-中介者
1.核心: -如果一个系统中对象之间的联系呈现网状结构,对象之间存在大量多对多关系,将导致关系复杂,这些对象称之为”同事对象”,可以引入一个中介者对象,使各个同事对象只跟中介者对象打交道,将复杂的网络结构化解为星形结构,通过中介者对象,统一协调各个同事对象之间的关系。 2.中介者模式类图: 3.理解:该模式本质就是解耦多个同事对象之间的交互关系。每个对象都持有中介者对象
2016-02-17 10:55:02
360
原创 设计模式-迭代器
1.场景: -提供一种可以遍历聚合对象的方式。又称为:游标cursor模式 -聚合对象:存储数据 -迭代器:遍历数 2.开发场景: -JDK内置迭代器 3.开发示例: <1>抽象迭代器对象//抽象迭代角色public interface MyIterator { void first();//将游标指向聚合对象的第一个对象 vo
2016-02-17 09:50:25
291
原创 设计模式-责任链
1.模式分类: 行为型模式:关注系统中对象之间的相互交互,研究系统在运行进对象之间的相互通信和协作,进一步明确对象的职责,共有11种:责任链,观察者,迭代器,中介者,备忘录,状态,策略,命令,解释器,访问者,模板 创建型模式:关注对象的创建过程,共有4种:单例,原型,工厂(简单工厂,工厂方法,抽象工厂),建造 结构型模式:关注对象和类的组织,共有7种:代理,装饰,外观,
2016-02-16 17:22:08
452
原创 设计模式-结构型模式汇总
1.代理模式:为真实对象提供一个代理,从而控制对真实对象的访问 2.适配模式:使原本由于接口不兼容不能一起工作的类可以一起工作 3.桥接模式:处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展,在抽象层建立关联 4.组合模式:将对象组合成树状结构,以表示“部分和整体”层次结构,使得客户可以统一的调用叶子对象和容器对象 5.装饰模式:动态地给一个对
2016-02-16 15:23:53
353
原创 设计模式-享元
1.场景:内存属于稀缺资源,不能随便浪费,如果有很多个完全相同或相似的对象,可以通过享元模式,节省内存(各种池) 2.核心: <1>享元模式以共享的方式高效地支持大量细粒度对象的重用 <2>享元对象能做到共享的关键是区分了内部状态和外部状态 内部状态:可以共享,不会随环境变化而变化 外部状态:不可以共享,会随环境变化而变化 3.角色:
2016-02-16 15:15:07
293
原创 设计模式-外观
1.迪米特法则:(最少知识原则)一个软件实体与另一个软件实体发生关系时,当前软件实体应当尽可能少的了解软件实体的内容,(不和陌生人说话)。设计初衷在于降低类之间的耦合 2. 3.外观模式(门面模式)核心:为子系统提供统一的入口,封装子系统的复杂性,便于客户端调用 4.开发中常见的场景: 出现的频率很高,JDBC封装后的commons提供的DBUtils类,hibernate提供的
2016-02-16 13:45:56
400
原创 设计模式-装饰
1.职责: <1>动态为一个新的对象增加新的功能 <2>装饰模式是一种用于代替继承的技术,无须通过继承增加子类就能扩展对象的功能。使用对象的关联关系代替继承关系,更加灵活,避免了类型体系的快速膨胀。 2.角色: <1>Component抽象构件角色 真实对象和装饰对象拥有相同的接口。这样客户端对象就能够以与真实对象相同的方式和装饰对象
2016-02-16 11:37:01
301
原创 设计模式-组合
1.场景:把部分和整体的关系用树形结构表,从而使客户端可以使用统一的方式处理部分对象和整体对象 2.角色: <1>抽象构件(Component)角色:定义叶子和容器构件的共同点 <2>叶子(Leaf)构件角色:无子节点,实现抽象构件的抽象方法 <3>容器(Composite)构件角色:有容器特征,可以包含子节点 3. 4.开发中的应用场景: <1>操作系
2016-02-16 10:22:55
314
原创 设计模式-桥接
1.核心要点:处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联 2.备注:桥接模式可以取代多层继承的方案。多层继承违背了单一职责的原则,复用性较差,会导致类的数量显著增多。使用桥接模式可以极大的减少子类的个数,降低管理和维护成本 桥接模式极在的提高了系统可展性,在两个变化维度中任意扩展一个维度,都不需要修改原有的系统,符合ocp原则
2016-02-15 17:23:10
337
原创 设计模式-代理
1.代理模式:通过代理,控制对对象访问。可以详细控制访问某个类(对象)的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理 2.角色: <1>抽象角色:定义代理角色和真实角色的公共对外方法 <2>真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色使用(关注真正的业务逻辑) <3>代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方
2016-02-15 16:35:07
313
原创 设计模式-适配器
1.结构型模式:从程序结构上实现松藕合,从而可以扩大整体的类结构,用来解决更大的问题 分类:适配器模式,代理模式,桥接模式,装饰模式,组合模式,外观模式,享元模式 2.适配器模式:将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能在一起工作的类可以在一起工作 3.适配器模式中的角色: <1>目标接口(Target):客户所期待的接口。目标可
2016-02-15 15:19:46
358
原创 设计模式-原型
1.使用场景 <1>通过new产生一个对象需要非常繁琐的数据准备或访问权限,可以使用原型模式 <2>java中的克隆技术以某个对象为原型,复制出新的对象,显然新的对象具备原对象的特点。克隆类似于new,但是不同于new。new创建新的对象属性采用的是默认值。克隆出的对象的属性值完全和原型对象相同 2.优势 效率高(直接克隆,避免了重新执行构造过程的步骤) 3.实现
2016-02-15 14:00:23
329
原创 设计模式-建造者
1.场景:建造一个复杂的产品,或者构建一个复杂对象需要很多步骤,而且步骤之间有一定的顺序 2.本质: <1>分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构造过程复杂的情况下使用。 <2>由于实现了构建和装配的解蕅。不同的构建 器,相同的装配,也可以装配出不同的对象;相同的构建器,不同的
2016-02-15 11:44:03
354
原创 设计模式-工厂
通用类:public interface Car { void run();}public class Benz implements Car { @Override public void run() { System.out.println("Benz is Running"); }}public class Audi implements
2016-02-14 17:33:53
348
原创 设计模式-单例
单例模式简要总结: 1.饿汉模式import java.io.Serializable;/** * 饿汉式(线程安全,调用效率高,不能延迟加载) * @author Administrator * */public class SinglePatternDemo1 implements Serializable { //私用构造方法 private SinglePatt
2016-02-14 14:42:15
433
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人