分布式系统一致性协议 为了解决分布式系统的一致性问题,在长期的探索研究过程中,涌现出了一大批经典的一致性协议和算法,其中最著名的就是二阶段提交协议、三阶段提交协议和Paxos算法。 2PC与3PC在分布式系统中,每一个机器节点虽然都能够明确地知道自己在进行事务操作过程中的结果是成功或失败,但却无法直接获取到其他分布式节点的操作结果。因此,当一个事务操作需要跨越多个分布式节点的时候,为了保持事务处理的ACID特性,就需要 2019-12-04 分布式
JVM & GC 内存空间线程私有的: 程序计数器 虚拟机栈 本地方法栈 线程共享的: 堆 方法区 直接内存 (非运行时数据区的一部分) 1.8以后方法区改为了元空间,并放在了直接内存中。 程序计数器程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计 2019-10-10 Java
反射与代理 反射反射机制的定义: 是在运行状态中,对于任意的一个类,都能够知道这个类的所有属性和方法,对任意一个对象都能够通过反射机制调用一个类的任意方法,这种动态获取类信息及动态调用类对象方法的功能称为java的反射机制。 反射的作用: 1、动态地创建类的实例,将类绑定到现有的对象中,或从现有的对象中获取类型。 2、应用程序需要在运行时从某个特定的程序集中载入一个特定的类 反射 一般使用 Class.fo 2019-10-01 Java
算法 算法排序算法 shell排序思想:用步长分成不同的组进行插入排序 快排思想,设立划分区间,然后进行分治 冒泡:逐个交换 归并:分组然后合并排序 基数排序:对不同关键字依次进行排序 堆排序:建立大根堆,然后交换堆顶和堆低,调整堆,重复。 不稳定:快希选一堆(快些选一堆) 动态规划可以采用动态规划解决的问题: 具有最有子结构性质,即最优解包含的子问题的解也是最优解 无后效性,当前状态不受之后的影响 2019-09-29 计算机基础
Java单元测试 JunitJUnit4是一个易学易用的Java单元测试框架,一般我们在写完一段代码或一个方的时候,都要测试一下这段代码和这个方法的逻辑是不是正确,输入一定的数据,返回的数据是不是我们想要的结果,即我们在写单个业务代码针对结果进行测试。这时Junit就派上了大用场了。 在写完一个类或者方法后可以添加测试类进行测试 Junit中集中基本注解,是必须掌握的 @BeforeClass – 表示在类中的任意 2019-09-23 Java
数据库 数据库语言DDL,DML,DQL,DCL 数据定义语言(Data Definition Language,DDL) 数据操作语言(Data Manipulation Language,DML) 数据查询语言(Data Query Language,DQL) 数据控制语言(Data Control Language,DCL) 数据库三范式:123第一范式:要求有主键,并且要求每一个字段原子性不可再分 2019-09-20 数据库
HashMap HashMap简介HashMap 主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一。 JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突).JDK1.8 以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)时,将链表转化为红黑树,以减少搜索时间。 HashMa 2019-08-20 Java
计算机网络相关知识 五层模型及对应的协议:应用层:http.SMTP 数据单元 报文 传输层:tcp,udp 网络层:IP,相关的路由协议 数据链路层:PPP and 以太网 物理层:相关的物理协议 TCP连接建立与断开过程图: TCP建立的三次握手: 1、发送端发送一个SYN报文段(SYN位被置位),SYN中包含TCP目的端口和发送端的初始序列号(图中ISN(c)),同时携带着TCP选项数据。 2、接收端 2019-08-20 计算机基础
笔面试记录 此篇博文主要用于记录,在准备秋招的笔试和面试过程中,遇到了一些自己认为该注意的点,不定期更新~。 一些知识点的记录:continue 结束本次循环,进入下一轮 break 结束循环 “\n”换行 “\r”回车 “%n” 平台无关换行 import问题在同一个包下,一个类访问另一个类的静态成员变量无需import 只要直接 类名.成员名即可 ceil()和floor()区别ceil()对整形变量 2019-07-29 Java 面试
javaIO Java 中的 BIO、NIO和 AIO 理解为是 Java 语言对操作系统的各种 IO 模型的封装。 BIO、NIO、AIO的区别 BIO 就是传统的 java.io 包,它是基于流模型实现的,交互的方式是同步、阻塞方式,也就是说在读入输入流或者输出流时,在读写动作完成之前,线程会一直阻塞在那里,它们之间的调用时可靠的线性顺序。它的有点就是代码比较简单、直观;缺点就是 IO 的效率和扩展性很低, 2019-07-10 Java