Java23种设计模式七大原则--单一职责原则 目录一.定义:二.作用:三.实现方法:四.代码演示:反例:正例:结果:一.定义:单一职责原则(Single Responsibility Principle,SRP)又称单一功能原则,由罗伯特·C.马丁(Robert C. Martin)于《敏捷软件开发:原则、模式和实践》一书中提出的。这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分(There should never be more than one reaso.
Java23种设计模式七大原则--依赖倒置原则 一.定义:依赖倒置原则(Dependence Inversion Principle,DIP)是 Object Mentor 公司总裁罗伯特·马丁(Robert C.Martin)于 1996 年在C++Report 上发表的文章。依赖倒置原则的原始定义为:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象(High level modules shouldnot depend upon low level modules.Both should depen..
Java23种设计模式七大原则--里氏替换原则 一.定义:里氏替换原则(Liskov Substitution Principle,LSP)由麻省理工学院计算机科学实验室的里斯科夫(Liskov)女士在 1987 年的“面向对象技术的高峰会议”(OOPSLA)上发表的一篇文章《数据抽象和层次》(Data Abstraction and Hierarchy)里提出来的,她提出:继承必须确保超类所拥有的性质在子类中仍然成立(Inheritance should ensure that any property proved about supertyp
Java23种设计模式七大原则--开闭原则 目录一.定义:二.作用:1.对软件测试的影响2.可以提高代码的可复用性3.可以提高软件的可维护性三.实现方法:四.代码演示1.基类父类抽象:2.子类主题实现3.最终产品组装类:4.调用测试5.结果一.定义:开闭原则(Open Closed Principle,OCP)由勃兰特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作《面向对象软件构造》(Object Oriented Software Construction)中提出:.
浅显易懂的JAVA对象布局 天下文章一大抄!!!!现在由于资源的共享,很多技术平台的文章都很丰富,但是丰富中夹杂着多数的雷同,并且也没有什么依据,可能仅仅是自己的见解和别人的见解,没有真正的回归本质真理的实践。那么想要最浅显的弄清楚JAVA的对象布局,其实很简单:1.创建一个Maven项目2.引入jol的jar包 <dependency> <groupId>org.openjdk.jol</groupId> &.
可见性和原子性 可见性:一个线程在对一个变量进行操作时,其他线程对同一个变量是可见的。 线程是可以并行的简单来说:线程一操作i变量进行加减写入主内存,其他线程操作该变量时,使工作内存的变量失效,再从主内存重新获取变量。比较典型例子:JMM模型底层采用的时MESI协议的嗅探机制进行处理,volatile也是这种原理唯一的缺点是:不能解决原子性,导致下面问题出现,出现俩个1。原因是俩个线程同时写入主内存,得到一样的返回结果package com.zking.lock;import java.util.c.
HashMap源码分析1.8 HashMap1.8的升级主要是修复1.8的问题:目录1.重要源码分析2.结构组成?3.如何解决在扩容的时候碰到的链表死循环的问题4.如何解决时间复杂度从O(0)-->O(n)的过程1.重要源码分析/* * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to li
HashMap源码分析1.7 1.源码分析 HashMap<Object,String> map=new HashMap<>(); map.put("x","xxxx"); System.out.println(map.get("x"));该源码是根据上面的代码进行调试后所得的结果,源码进行了主要流程的翻译和部分分析过程,有需要者可以自行copy到自己的idea工具进行分析,效果更佳/* * Copyright (c) 1997, 2010,...
B+树 B树链接:https://blog.csdn.net/Mr_xiayijie/article/details/112013425B+树的特征:在B树的基础上做了改动(满足B树的规则):拓展特征:1.B+树的父节点中的关键字都会包含在子节点中2.所有的叶子节点包含了全量的信息,形成一个有序的链表卫星数据:B-树中的卫星数据(Satellite Information):B+树中的卫星数据(Satellite Information):B树所有..
B-树 B-树(Balance Tree)一个m阶的B树具有如下几个特征:每个结点最多有m-1个关键字。 根结点最少可以只有1个关键字。 非根结点至少有Math.ceil(m/2)-1个关键字。 每个结点中的关键字都按照从小到大的顺序排列,每个关键字的左子树中的所有关键字都小于它,而右子树中的所有关键字都大于它。 所有叶子结点都位于同一层,或者说根结点到每个叶子结点的长度都相同。 每个节点中的关键字从小到大排列,节点当中关键字正好是子节点包含的关键字的值域分划。特征解释:如:这是一个3阶的B
异步多级缓存静态化(大型电商处理) 前提:1.nginx+lua+openresty环境搭建https://blog.csdn.net/Mr_xiayijie/article/details/1112248182.Nginx静态化html本地缓存处理https://blog.csdn.net/Mr_xiayijie/article/details/1112250891.思路流程图:叙述:1.用户通过前端发送请求Nginx,获取Nginx本地缓存渲染Html模板2.如果Nginx本地缓存没有找到,就去...
Nginx静态化html本地缓存处理 1.Nginx的conf文件目录新建lua.conf:在nginx.conf同一级目录来一个lua.conf:lua.conf:lua_shared_dict my_cache 128m; #这个是配置Nginx本地缓存server { listen 80; server_name localhost; # first match ngx location 首选匹配模板路径(找Html) set $tem
nginx+lua+openresty环境搭建 环境:本地VM虚拟机+centos环境搭建1.准备openresty依赖yum install readline-devel pcre-devel openssl-devel gcc2.安装openresty有问题可以用yum install wget和yum install perl解决wget https://openresty.org/download/ngx_openresty-1.9.7.2.tar.gztar -xvf ngx_openresty-1.9.7.2.t.
十分有趣的Redis哨兵模式 监控他的表层体现是:Redis集群之间相互ping/pong,在固定时间内,去对其他的Redis主机进行检查,判断Master或者Slave是否是一个正常状态。哨兵其实是一个分布式的一个系统,在Redis整个架构上可以开多个这样的一个进程。每个哨兵向其他的哨兵的Maser或者Slave发送消息ping,默认1秒/次,如果对方没有回应pong的话,会主观认为对方宕机了,然后自己知道后再告诉整个集群,我这里发现了有Redis宕机了,然后整个集群都处于等待的状态,这个时候是不会进行主备切换的如果多
为什么hash槽的大小为16384? 这是作者给出的原话:Normal heartbeat packets carry the full configuration of a node, that can be replaced in an idempotent way with the old in order to update an old config.正常的心跳包携带节点的完整配置,可以用幂等方式替换旧节点,以便更新旧配置。This means they contain the slots configurat..