摘要: 一、分布式架构 1、分布式特点 分布性 对等性。分布式系统中的所有计算机节点都是对等的 并发性。多个节点并发的操作一些共享的资源 缺乏全局时钟。节点之间通过消息传递进行通信和协调,因为缺乏全局时钟,很难定义两个事件谁先谁后 故障总是会发生。系统设计时,需要考虑到任何异常情况 2、分布式环境的各种问题 阅读全文
posted @ 2018-05-14 18:59 leon66666 阅读(4156) 评论(1) 推荐(0) 编辑
摘要: 第一部分 走进Java 一、走进Java 1、概述 java广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合,摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想 2、java技术体系结构 按照功能来划分 包括以下几个组成部分:Java程序设计语言,各种硬件平台的java虚拟机,Ja 阅读全文
posted @ 2018-04-24 21:05 leon66666 阅读(12984) 评论(1) 推荐(4) 编辑
摘要: 一、@interface Java用 @interface Annotation{ } 定义一个注解 @Annotation,一个注解是一个类。 二、@Override,@Deprecated,@SuppressWarnings 注解相当于一种标记,在程序中加上了注解就等于为程序加上了某种标记,以后 阅读全文
posted @ 2017-05-09 15:53 leon66666 阅读(1215) 评论(2) 推荐(0) 编辑
摘要: 【放弃了原文访问者模式的Demo,自己写了一个新使用场景的Demo,加上了自己的理解】 【源码地址:https://github.com/leon66666/DesignPattern】 一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造 阅读全文
posted @ 2017-01-03 18:01 leon66666 阅读(39340) 评论(2) 推荐(5) 编辑
摘要: -XX 开头,这些是 JVM 的所有实现 都支持的 最常用的选项。 bool类型的开关选项(+开启、-关闭) -XX:+UseG1GC 使用G1GC-XX:+PreserveFramePointer 使用FP寄存器来保存帧指针,而不是作为通用寄存器。解决了stack不完整的问题-XX:+PrintG 阅读全文
posted @ 2021-10-28 14:57 leon66666 阅读(514) 评论(0) 推荐(0) 编辑
摘要: 一、概述 所谓“5WHY”分析法,又称“5问法”,就是连续反复使用5次“为什么”方式自问,以打破砂锅问到底方式寻找问题的根本原因的方法。“5WHY”不限定必须或只做5次为什么的提问,以找到问题根因为准,也许是3次,也许是10几次都有可能。一般经验而言,反复提出5次为什么基本就可以寻找到问题的根因。 阅读全文
posted @ 2019-09-23 11:52 leon66666 阅读(2676) 评论(0) 推荐(0) 编辑
摘要: Git 命令 分支相关: 查看分支:git branch 创建分支:git branch <name> 切换分支:git checkout <name> 创建+切换分支:git checkout -b <name> 合并某分支到当前分支:git merge <name> 查看当前的git分支是基于哪 阅读全文
posted @ 2019-09-19 16:12 leon66666 阅读(436) 评论(0) 推荐(0) 编辑
摘要: 一、存储引擎 1、InnoDB引擎 设计目标是面向在线事务(OLTP)处理的应用。 支持事务、行级锁、通过多版本并发控制(MVCC)支持高并发、提供一致性非锁定读、next-key locking避免幻读、主键聚集索引 2、MyISAM引擎 设计目标是面向OLAP应用。 不支持事务、不支持行锁、表锁 阅读全文
posted @ 2019-09-17 17:49 leon66666 阅读(816) 评论(0) 推荐(0) 编辑
摘要: 一、概述 我们知道在JDK1.5之前synchronized是一个重量级锁,相对于j.u.c.Lock,它会显得那么笨重,以至于我们认为它不是那么的高效而慢慢摒弃它。 不过,随着后续Java版本更新对synchronized进行的各种优化后,synchronized并不会显得那么重了。比如在jdk1 阅读全文
posted @ 2019-09-09 16:52 leon66666 阅读(561) 评论(0) 推荐(0) 编辑
摘要: 1、区别 1) 二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列。 2) 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。要特别注意的是,二叉树的深度优先遍历比较特殊,可以细分为先序遍历、中序遍历、后序遍历。具体说明如下: 阅读全文
posted @ 2019-08-22 11:12 leon66666 阅读(592) 评论(0) 推荐(0) 编辑
摘要: Kafka在0.11.0.0之前的版本中只支持At Least Once和At Most Once语义,尚不支持Exactly Once语义。 但是在很多要求严格的场景下,如使用Kafka处理交易数据,Exactly Once语义是必须的。我们可以通过让下游系统具有幂等性来配合Kafka的At Le 阅读全文
posted @ 2019-08-21 16:47 leon66666 阅读(769) 评论(0) 推荐(0) 编辑
摘要: 一、前言 只有InnoDB引擎支持事务,下边的内容均以InnoDB引擎为默认条件 二、常见的并发问题 1、脏读 一个事务读取了另一个事务未提交的数据 2、不可重复读 一个事务对同一数据的读取结果前后不一致。两次读取中间被其他事务修改了 3、幻读 幻读是指事务读取某个范围的数据时,因为其他事务的操作导 阅读全文
posted @ 2019-08-17 22:13 leon66666 阅读(478) 评论(0) 推荐(0) 编辑
摘要: 一、业务场景 同一个jvm里多个线程操作同一个有状态的变量,可以通过JVM内的锁保证线程安全。 如果是多个JVM操作同一个有状态的变量,如何保证线程安全呢? 这时候就需要分布式锁来发挥它的作用了 二、特点 分布式系统往往业务流量比较大、并发较高,对分布式锁的高可用和高性能有较高的要求。一般分布式锁的 阅读全文
posted @ 2019-07-23 20:15 leon66666 阅读(1857) 评论(0) 推荐(0) 编辑
摘要: 一、分类 MySQL的锁机制不同的存储引擎支持不同的锁机制,分为表级锁、行级锁、页面锁。MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁( 阅读全文
posted @ 2019-07-19 19:44 leon66666 阅读(658) 评论(0) 推荐(0) 编辑
摘要: 一、和CMS对比 G1 CMS 设计原则 首先收集尽可能多的垃圾(Garbage First) 尽可能少而块地执行GC,以停顿时间为目标 垃圾回收时机 启发式算法,在老年代找出具有高收集收益的分区进行收集 内存耗尽(新生代)或者快耗尽(老年代) 内存划分 将内存划分为一个个相等大小的内存分区(Reg 阅读全文
posted @ 2019-07-17 14:52 leon66666 阅读(1947) 评论(0) 推荐(0) 编辑
摘要: 一、简介 Concurrent Mark Sweep,是一种以获取最短回收停顿时间为目标的收集器,尤其重视服务的响应速度。 CMS是老年代垃圾回收器,基于标记-清除算法实现。新生代默认使用ParNew收集器,基于复制算法 二、垃圾回收过程 分为四个步骤进行垃圾回收:初始标记,并发标记,重新标记,并发 阅读全文
posted @ 2019-07-15 20:59 leon66666 阅读(3095) 评论(0) 推荐(1) 编辑
摘要: 一、简介 大家都知道,HashMap中定位到桶的位置 是根据Key的hash值与数组的长度取模来计算的。 JDK8中的hash 算法: 取模算法: 二、深入分析 1、取模算法为什么用的是位与运算? 由于位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快。 对2的倍数取模,只要将数与2 阅读全文
posted @ 2019-07-02 17:26 leon66666 阅读(2459) 评论(0) 推荐(0) 编辑
摘要: 一、简介 MyBatis 是一款优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集 Mybatis可以将Sql语句配置在XML文件中,避免将Sql语句硬编码在Java类中。与JDBC相比: 二、架构 我们把Mybatis的功能架构分为三层: (1)API接 阅读全文
posted @ 2019-06-28 18:01 leon66666 阅读(2948) 评论(0) 推荐(1) 编辑
摘要: 一、介绍 是指依赖于第三方应用程序或服务来管理服务器端逻辑的应用程序。 此类应用程序是基于云的数据库(如Google Firebase)或身份验证服务。 无服务器也意味着开发为事件触发的代码,并且在无状态计算容器中执行。 这种架构通常称为功能即服务(FaaS)。 FaaS(Function as a 阅读全文
posted @ 2019-06-28 17:19 leon66666 阅读(891) 评论(0) 推荐(0) 编辑
摘要: 1、简介 首先,他是一个全新的基于容器技术的分布式架构领先方案。Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg)。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。 Kube 阅读全文
posted @ 2019-06-28 11:27 leon66666 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 1、简介 系统服务化之后,服务间通信需要关注什么? 服务发现、负载均衡、路由、流控、通信可靠性、弹性、安全、监控、日志 API网关可以集中式的管理这些功能,但是会出现单点故障,并且实现起来网关会变得越来越臃肿。 并且网关是一个集中式的处理 Service Mesh是网络通信基础设施,可以将网络功能从 阅读全文
posted @ 2019-06-28 11:12 leon66666 阅读(675) 评论(0) 推荐(0) 编辑
摘要: 1、简介 SOA(Service Oriented Architecture)“面向服务的架构”:他是一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能。一个服务 通常以独立的形式存在与操作系统进程中。各个服务之间 通过网络调用。 2、和微服务对比 微服务架构其实和 SOA 阅读全文
posted @ 2019-06-27 19:59 leon66666 阅读(1716) 评论(0) 推荐(0) 编辑
摘要: 1、微服务简介 微服务是一种软件架构模式。 它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务和服务之间采用轻量级的通信机制相互沟通(通常是基于HTTP的Restful API).每个服务都围绕着具体的业务进行构建,并且能够被独 阅读全文
posted @ 2019-06-27 19:45 leon66666 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 一、RPC基本原理 1、开发步骤 RPC(Remote Procedure Call),远程过程调用,大部分的RPC框架都遵循如下三个开发步骤: 1. 定义一个接口说明文件:描述了对象(结构体)、对象成员、接口方法等一系列信息;2. 通过RPC框架所提供的编译器,将接口说明文件编译成具体的语言文件; 阅读全文
posted @ 2019-06-26 15:22 leon66666 阅读(1024) 评论(0) 推荐(0) 编辑