![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习笔记
文章平均质量分 98
Zach_ZSZ
IT攻城狮,喜爱研究技术,希望通过不断的学习,将来能更多的分享技术,更好的使用技术。
展开
-
理解一致性哈希算法的原理
1. 什么是一致性哈希一致性哈希算法核心思想,就是通过构造一个长度为2^32的整数环,这个环也被称为一致性Hash环(只是逻辑上的环),将缓存服务器的节点名称的哈希值均匀的分布在[0,2^32-1]的Hash环上,然后根据需要缓存的Key值计算得到其Hash值,然后在Hash环上顺时针查找距离Key的Hash值最近的服务器节点,完成Key到服务器的映射查找;如下图所示2. 一致性哈希解决了什么问题Hash算法解决的是集群管理中请求访问的路由的问题,一般是根据一个请求的某个key值取余,路由到原创 2020-08-20 23:36:11 · 844 阅读 · 0 评论 -
Java 项目中异常的统一处理
1. 前言Java中的异常处理,常用的处理方式,直接throw 一个异常对象,或者捕获catch一个异常,让程序继续执行,但是在一个项目中,这种简单处理异常的方式并不可取,因为在业务代码中直接抛出或者捕获异常,跟业务的耦合性都太高,而且代码冗余不利于维护;更好的处理方式,应该是利用切面编程的思想,自定义一个全局异常类,返回一个统一规范的异常信息;2. 对Java中异常的理解首先我们先理...原创 2020-05-04 17:02:22 · 3356 阅读 · 0 评论 -
深入理解Java类加载器(一):Java类加载原理解析
一、引子每个开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,其实,这个异常背后涉及到的是Java技术体系中的类加载。Java类加载机制虽然和大部分开发人员直接打交道的机会不多,但是对其机理的理解有助于排查程序出现的类加载失败等技术问题,对理解Java虚拟机的连接模型和Java语言的动态性都有很大帮助。二. Java 虚拟机类加载器结构简述...转载 2019-11-03 20:40:54 · 285 阅读 · 0 评论 -
对象间的联动----观察者模式
1. 观察者模式概述 在软件系统中,有些对象之间存在类似交通信号灯和汽车之间的关系,一个对象的状态或行为的变化将导致其他对象的状态或行为也发生改变,它们之间将产生联动,为了更好的描述对象之间存在的这种一对多或一对一的联动,就产生了观察者模式观察者模式,用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将会自动通知其他对象,其他对象作出相应的反应,在观察者模式中,发生改变的对象称为...原创 2018-08-06 22:54:32 · 305 阅读 · 0 评论 -
Java线程池-ThreadPoolExecutor原理分析与实战
1. 为什么要用线程池减少资源的开销 减少了每次创建线程、销毁线程的开销。 提高响应速度 ,每次请求到来时,由于线程的创建已经完成,故可以直接执行任务,因此提高了响应速度。 提高线程的可管理性 ,线程是一种稀缺资源,若不加以限制,不仅会占用大量资源,而且会影响系统的稳定性。 因此,线程池可以对线程的创建与停止、线程数量等等因素加以控制,使得线程在一种可控的范围内运行,不仅能保证系统稳定...原创 2018-08-14 22:49:13 · 37524 阅读 · 14 评论 -
深入理解Synchronized原理和应用以及锁的优化策略
Synchronized实现同步的几种方式分别为:普通同步方法:锁是当前的实例对象 静态同步方法: 锁是当前类的Class对象 同步方法块: 锁是Synchronized括号里配置的对象Synchronized可以保证方法或者代码块运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性同步原理:JVM规范规定JVM基于进入和退出Monitor对...原创 2018-09-02 17:02:35 · 333 阅读 · 0 评论 -
ReentrantLock实战之生产者与消费者模式的实现
JUC锁之互斥锁ReentrantLock概述 ReentrantLock锁在同一个时间点只能被一个线程持有;而可重入的ReentrantLock可以被单个线程多次获取, ReentrantLock分为公平锁和非公平锁,区别体现在获取锁的机制上是否公平;默认是实现是非公平锁,其性能更好一些,ReentrantLock是通过一个FIFO的等待队列来管理获取该锁所有的线程,在公平锁机制下...原创 2018-09-02 21:25:31 · 482 阅读 · 0 评论 -
MySql语法简单总结
一、背景:最近经历了一次跳槽,在找工作的过程中,我发现笔试题中除了考java相关的知识点,还会考数据库相关的知识点,如果基本的知识点不过关,那么整个面试过程会很被鄙视,sql如果长久不用,或者不总结又容易遗忘,所以我写下这篇文章,希望对数据库相关的知识点做一个梳理总结,以备不时之需MySql中语句的执行顺序from on join where group by ...原创 2018-11-11 18:02:57 · 169 阅读 · 0 评论 -
Java 8 中 Lambda 与 Stream 特性的介绍
引言 本来早就想总结一下Lambda与Stream的使用,由于拖延症犯了,就一直拖到现在,但是我心里一直放不下这个执念,因为我觉得作为一个搞技术的,学习就是一种修行,不管怎样都要坚持,为什么要学习Lambda和Stream,我的理由很简单,好用,实现同样的功能,能少写一些代码.Lambda表达式 1. 语法 1) Lambda表达式的语法其实比较简单.主要有以下2种 (p...原创 2018-11-19 17:53:37 · 152 阅读 · 0 评论 -
Annotation的理解与运用
一、引言 作为Java开发人员,注解想必大家都不会陌生,在日常的工作,我们也会经常用到注解,java注解是在JDK5开始引入的新特性,它很好简化了代码,解耦程序;本文我将从注解的语法和特性进行总结. 二、注解的语法特性1. 注解的声明首先我们来看一个@Test注解的源码@Target(ElementType.METHOD)@Retention(Retentio...原创 2018-12-02 11:17:27 · 292 阅读 · 0 评论 -
二分法查找
如何用最省内存的方式实现快速查找功能二分法思想二分法查找针对的是一个有序的数据集合,每次通过与区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为0二分查找非常高效,假设数据大小是n,每次查找后数据都会缩小为原来的一半,也就是会除以2,最坏情况下,直到查找区间被缩小为空,才停止当n/2k = 1时,k是总共缩小的次数,而每一次缩小操作...原创 2019-08-04 16:55:11 · 26810 阅读 · 5 评论 -
行为型模式---迭代器模式
迭代器模式(Iterator Pattern) 在软件开发时,经常需要使用聚合对象来存储一系列数据,聚合对象拥有两个职责: 一是存储数据;二是遍历数据,前者是聚合对象的基本职责,而后者既是可变化的又是可分离的,因此可将遍历数据的行为从聚合对象中分离出来,封装在一个迭代器对象中;这可简化聚合对象的设计,符合单一职责的原则.1. 定义: 提供一种方法来访问聚合对象,而不用暴露这个对象...原创 2018-08-06 21:09:58 · 202 阅读 · 0 评论 -
行为型模式---状态模式
1. 状态模式的概述 状态模式用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题,当系统中某个对象存在多个状态,这些状态之间可进行转换,而且对象在不同状态下的行为不相同时可以使用状态模式;状态模式将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象的状态可以灵活变化,客户端无须关心对象状态的转换以及对象所处的当前状态;2. 状态模式中的角色: 1) Co...原创 2018-08-06 20:21:54 · 660 阅读 · 0 评论 -
结构型模式----适配器模式
1. 适配器模式定义 将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作.(注:该处的接口是指广义的接口,可以表示一个方法或者方法的集合) 2. 结构图 3. 角色分析 Target(目标抽象类):定义客户所需接口,可以是一个抽象类,接口或具体类 Adapter(适配器类):可调用另一个接口,作为一个转换器,对Adaptee和Target进行...原创 2018-06-18 17:51:43 · 193 阅读 · 0 评论 -
创建型模式
创建型模式中各个模式的基本定义与使用频率原创 2018-06-20 23:36:07 · 269 阅读 · 0 评论 -
创建型模式----单例模式
1. 单例模式的概述 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例2. 单例模式结构图3. 饿汉式单例模式代码实现package com.zach.pattern.singleton;/** * @Author:Zach * @Description: 饿汉式单例模式 * @Date:Created in 10:57 2018/8/...原创 2018-06-20 23:45:48 · 166 阅读 · 0 评论 -
创建型模式----简单工厂模式
1. 定义 定义一个工厂类,和一个静态的工厂方法,可以根据参数的不同返回不同类的实例,在客户端将类的使用与创建分离,这就是简单工厂模式(Simple Factory Pattern) 2. 简单工厂模式的结构图 角色介绍; 1. Factory(工厂角色):负责实现创建所有产品实例的内部逻辑;工厂类可以被外界调用,创建所需的产品对象;在工厂类中提供了静态工厂方法...原创 2018-06-21 07:04:26 · 250 阅读 · 0 评论 -
创建型模式----工厂方法模式
1. 定义 定义一个用于创建对象的接口,让子类决定哪一个类实例化,工厂方法模式让一个类的实例化延迟到其子类;工厂方法模式简称为工厂模式,又可称为虚拟构造器模式或多态工厂模式 2. 工厂方法模式结构图 3. 工厂方法模式角色分析Product(抽象产品):它是定义产品的接口,是工厂方法模式所创建对象的超类型,也就是产品对象的公共父类 ConcreteProduct(具...原创 2018-06-21 07:07:19 · 229 阅读 · 0 评论 -
创建型模式----抽象工厂模式
1. 前言 工厂方法模式引入了工厂的等级结构,解决了简单工厂模式中工厂职责太重的问题,但由于工厂package com.zach.abstractFactory;//按钮接口 :抽象产品public interface Button { public void display();}方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,此...原创 2018-06-21 07:09:36 · 164 阅读 · 0 评论 -
创建型模式----原型模式
1. 定义 使用原型实例指定创建对象的种类,并且通过克隆这些原型创建新的对象;原理是将一个原型对象传给要发动创建的对象,该对象通过请求原型对象克隆自己来创建过程 2. 结构图 3. 角色分析 Prototype(抽象原型类): 它是声明克隆方法的接口,是所有具体原型类的公共父类,可以是抽象类也可以是接口; ConcretePrototype(具体原型类):...原创 2018-06-21 07:11:18 · 199 阅读 · 0 评论 -
创建型模式----建造者模式
1. 定义 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,建造者模式是一种对象创建型模式 2. 建造者模式结构图: 3. 结构图中的角色分析 Builder(抽象建造者):创建各个部件的抽象接口,可以是抽象类或接口 ConcreteBuilder(具体建造者):实现Builder接口,实现各个部件的具体构造和装配方法 Produc...原创 2018-06-21 07:12:33 · 248 阅读 · 0 评论 -
结构型模式--组合模式
1. 定义:组合多个对象形成树形结构以表示具有”整体一部分”关系的层次结构,是一种对象结构型模式2. 结构图 3. 组合模式中包含的角色 a) Component(抽象构件):它可以是接口或抽象类,为叶子构件和容器构件对象声明接口,包含了所有子类共有行为的声明和实现定义了访问及管理它的子构件的方法 b) Leaf(叶子构件):它在组合模式结构中表示叶子节点对象,叶子节点没有子节点,实现了在抽象...原创 2018-06-23 23:28:50 · 317 阅读 · 0 评论 -
结构型模式--装饰模式
1. 装饰模式概述 装饰模式可在不改变对象本身功能的基础上给对象增加额外的新行为,现实生活中如墙壁贴壁画,增加美观;装饰模式是一种替代继承的技术,通过无须定义子类的方式给对象动态增加职责;在装饰模式中引入装饰类,在装饰类中既可以调用待装饰的原有类的方法,还可以增加新的方法,扩充原有类的功能; 1) 定义:动态地给一个对象增加一些额外的职责,在增加对象功能方面比生成子类的实现方式更灵活....原创 2018-06-28 22:53:33 · 250 阅读 · 0 评论 -
结构型模式----桥接模式
1. 定义 将抽象部分与其实现部分分离,使得它们可以独立地变化,它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式 2. 桥接模式结构图: 结构图中角色分析 Abstraction(抽象类):一般是抽象类而不是接口,其中定义了一个Implementor(实现类接口)类型的对象并可以维护该对象,包含抽象业务方法,...原创 2018-06-19 21:12:51 · 154 阅读 · 0 评论