自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(180)
  • 资源 (6)
  • 收藏
  • 关注

原创 一致性Hash算法

一.简介2的32次方进行hash取模 0到2的32次方-1jedis分布式之 ShardedJedisPool (一致性Hash分片算法)二.概念:分布式系统中负载均衡的问题可以使用Hash算法让固定的一部分请求落到同一台服务器上,这样每台服务器固定处理一部分请求(并维护这些请求的信息),起到负载均衡的作用。三.做法:(1)hash环上顺时针从整数0开始,一直到最大正整数,我们根据四个ip计算的hash值肯定会落到这个hash环上的某一个点,至此我们把服务器的四个ip映射到了一致性h

2020-11-23 22:11:19 1630

原创 Redis(七)高可用

一.高可用的概念高可用(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。通过三大要点解释高可用:(1)单点是系统可用的大敌,应该尽量在系统设计的过程中避免单点(2)保证系统高可用,架构设计的核心准则是:冗余(3)每次出现故障需要人工介入恢复势必会增加系统的不可服务实践,应实现自动故障转移。二.高可用架构Sentinel1.Redis主从复制可将主节点数据同步给从节点,从节点此时有两个作用(1)一旦.

2020-11-22 22:34:33 180 1

原创 Redis(六)读写分离及数据同步

一.读写分离1.对读写能力进行扩展,采用读写分离方式解决性能问题运行一些额外的服务器,让他们与主服务器进行连接,然后将主服务器发送的数据副本通过网络进行准实时的更新(具体的更新速度取决于网络带宽),通过将请求分散到不同的服务器上面进行处理,用户可以从新添加的从服务器上获得额外的读查询处理能力2.redis自身集成了读写分离供用户使用我们只需在从redis服务的配置文件里面加上一条,【slaveof 主节点ip 主节点port】语句3.redis读写分离之数据同步(1)进行复制中的主从

2020-11-22 15:12:01 431

原创 Redis(五)分布式锁

1.redis分布式锁的使用场景简介 分布式锁是

2020-11-20 09:06:13 125

原创 Redis(三)Springboot实现redis分布式缓存

一.在pom文件引入相关类库<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId></dependency>二.在DBCONFIG类里添加@EnableRedisHttpSession开启redis session缓存三.在EnableRe.

2020-10-17 18:03:40 104

原创 Redis(二)Springboot cache

一.代码整合1.引入pom.xml依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId></dependency>2.开启缓存注解: @EnableCaching3.在方法上面加入SpEL 表达式二.springboot cache相关

2020-10-17 17:44:03 72

原创 Redis(一)Redis详解

一.什么是nosqlNoSQL是不同于传统的关系数据库的数据库管理系统的统称。其两者最重要的区别是NoSQL不使用SQL作为查询语言。NoSQL数据存储可以不需要固定的表格模式。NoSQL是基于键值对的,可以想象成表中的主键和值的对应关系。二.redis概念Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings)、散列(hashes)、 列表(lists)、 集合(sets)、 有序集合(s.

2020-10-15 20:13:47 139

原创 JVM(五)内存分配

一.Java堆内存分布图二.对象的分配规则1.对象主要分配在新生代的Eden区上2.如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。TLAB的全称是Thread Local Allocation Buffer,即线程本地分配缓存区,这是一个线程专用的内存分配区域。3.少数情况下也可能直接分配在老年代(对象过大,超过Eden区大小或者From区大小)三.GC参数指定垃圾回收-Xms20M、-Xmx20M、-Xmn10M这3个参数限制了Java堆大小为20MB,不可扩展,其

2020-10-05 15:49:28 1579

原创 JVM(四)垃圾收集器

收集算法是内存收到的方法论,垃圾回收器是内存回收的具体实现。一.Serial收集器1.定义:Serial收集器是一个单线程的垃圾收集器,Serial收集器工作流程示意图如下图所示2.特点:"Stop The World",它进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。在用户不可见的情况下把用户正常工作的线程全部停掉。3.使用场景:多用于桌面应用,Client端的垃圾回收器(桌面应用内存小,进行垃圾回收的事件比较短,只要不频繁发生停顿就可以接受)二.ParNew

2020-10-05 13:27:36 1578

原创 JVM(三)垃圾回收算法

垃圾回收算法

2020-10-04 19:22:40 1563

原创 JVM(二)对象

一.对象创建底层步骤细节虚拟机遇到一条new指令时,首先检查这个对应的类能否在常量池中定位到一个类的符号引用。 判断这个类是否已被加载、解析和初始化。 为这个新生对象在java堆中分配内存空间,其中java堆分配内存空间的方式主要有以下两种 (1)指针碰撞 a.分配内存空间包括开辟一块内存和移动指针两个步骤 b.非原子步骤可能出现并发问题,java虚拟机采用CAS配上失败重试的方式保证更新操作的 (2)空闲...

2020-09-07 12:20:26 1542

原创 JVM(一)运行时数据区

前言由于JAVA程序是交由JVM执行的,所以我们所说的JAVA内存区域划分也是指的JVM内存区域划分,JAVA程序具体执行的过程如下图所示。首先Java源代码文件会被Java编译器编译为字节码文件,然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。在整个程序执行过程中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data Area(运行时数据区),也就是我们常说的JVM内存。因此,在Java中我们常常说到的内存管理

2020-09-01 00:03:10 1574

原创 node install windows初次运行遇到的坑解决

1.安装python27(配置好环境变量)2.安装vs20053.npm install(如果出现报错就继续下面步骤)4.npm install node-sass(如果出现报错就继续下面步骤)5.npm uninstallnode-sass(如果出现报错就继续下面步骤)6.npm install node-sass7.npm install...

2020-07-07 15:21:45 1610

原创 设计模式(二十三)状态模式

一.定义与类型1.允许一个对象在其内部状态改变时,改变它的行为2.类型:行为型二.适用场景一个对象存在多个状态(不同状态下行为不同),且状态可相互切换三.优点1.将不同的状态隔离2.把各种状态的转换逻辑,分布到State的子类中,减少相互间依赖3.增加新的状态非常简单四,缺点状态多的业务场景导致类数目增加,系统变复杂五.UML类图六.代码CourseVideoState.javapackage com.caomingyu.autotest.st

2020-06-18 23:02:09 1567

原创 设计模式(二十二)访问者模式

一.定义与类型1.封装作用于某数据结构中的各元素的操作可以在不改变各元素的类的前提下,定义作用于这些元素的操作2.类型:行为型二.适用场景1.一个数据结构如(List/Set/Map等)包含很多类型对象2.数据结构与数据操作分离三.优点增加新的操作很容易,即增加一个新的访问者四.缺点1.增加新的数据结构困难2.具体元素变更比较麻烦...

2020-06-16 12:40:38 1553

原创 设计模式(二十一)责任链模式

一.定义与类型1.为请求创建一个接收此次请求对象的链2.类型:行为型二.适用场景一个请求的处理需要多个对象当中的一个或多个协作处理三.优点1.请求的发送者和接收者(请求的处理)解耦2.责任链可以动态组合四.缺点1.责任链太长或者处理时间过长,影响性能2.责任链有可能过多...

2020-06-15 08:01:06 1572

原创 设计模式(二十)中介者模式

一.定义与类型1.定义一个封装一组对象 如何交互的对象通过使对象明确地相互引用来促进松散耦合,并允许独立地改变它们的交互2.类型:行为型二.适用场景1.系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱且难以理解2.交互的公共行为,如果需要改变行为则可以增加新的中介者类三.优点1.将一对多转化为一对一、降低程序复杂度2.类之间解耦四.缺点中介者过多,导致系统复杂五.UML类图六.代码StudyGroup.javapackage c

2020-06-15 07:45:15 115

原创 设计模式(十九)命令模式

一.定义与类型1.定义:将“请求”封装成对象,以便使用不同的请求命令模式解决了应用程序中对象的职责以及它们之间的通信方式2.类型:行为型二.适用场景1.请求调用者和请求接收者需要解耦,使得调用者和接收者不直接交互2.需要抽象出等待执行的行为三.优点1.降低耦合2.容易扩展新命令或者一组命令四.缺点1.命令的无限扩展会增加类的数量,提高系统实现复杂度五.UML类图六.代码Command.javapackage com.caomingyu.au

2020-06-14 11:55:43 102

原创 设计模式(十八)备忘录模式

一.定义与类型1.定义:保存一个对象的某个状态,以便在适当的时候恢复对象2.类型:行为型二.适用场景1.保存及恢复数据相关业务场景2.后悔的时候,即恢复到之前的状态三.优点1.为用户提供一种可恢复机制2.存档信息的封装四.缺点1.资源占用五.UML类图六.代码Article.javapackage com.caomingyu.autotest.memento;public class Article { private Strin

2020-06-14 11:25:09 95

原创 设计模式(十七)观察者模式

一.定义与类型1.定义:定义了对象之间的一对多以来,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有依赖(观察者)都会收到通知并更新二.适用场景1.关联行为场景,建立一套触发机制三.优点1.观察者和被观察者之间建立一个抽象的耦合2.观察者模式支持广播通信四.缺点1.观察者之间有过多的细节依赖、提高时间消耗及程序复杂度2.使用得当,要避免循环调用五.UML类图六.代码Course.javapackage com.caomingy

2020-06-14 10:39:20 98

原创 设计模式(十六)解释器模式

一.定义与类型1.定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子为了解释一种语言,而为语言创建的解释器2.类型:行为型二.适应类型1.在某个特定类型问题发生频率足够高三.优点语法由很多类表示,容易改变及扩展此“语言”四.缺点当语法规则数目太多时,增加了系统复杂度五.UML类图六.代码Interpreter.javapackage com.caomingyu.autotest.interprete

2020-06-14 09:41:41 94

原创 设计模式(十五)策略模式

一.定义与类型1.定义:定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户2.类型:行为型二.适用场景1.系统有很多类,而他们的区别仅仅在于他们的行为不同2.一个系统需要动态地在几种算法中选择一种三.优点1.开闭原则2.避免使用多重条件转移语句3.提高算法的保密性和安全性四.缺点1.客户端必须知道所有的策略类,并自行决定使用哪一个策略类2.产生很多策略类五.UML类图六.代码PromotionSt

2020-06-14 02:43:26 146

原创 设计模式(十四)迭代器模式

一.定义与类型1.定义:提供一种方法,顺序访问一个集合对象中的各个元素,而又不暴露该对象的内部表示2.类型:行为型二.适用场景1.访问一个对象的内容而无需暴露它的内部表示2.为遍历不同的集合结构提供一个统一的接口三.优点1.分离了集合对象的遍历行为四.缺点1.类的个数成对增加...

2020-06-13 16:53:06 104

原创 设计模式(十三)模版方法模式

一.定义与类型1.定义:定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现模版方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤2.类型:行为型二.适用场景1.一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现2.各子类中公共的行为被提取出来并集中到一个公共父类中,从而避免代码重复三.优点1.提高复用性2.提高扩展性3.符合开闭原则四.缺点1.类数目增加2.增加了系统实现的复杂度3.继承关系自身缺点,如果父类添加新的抽象方

2020-06-13 16:36:54 86

原创 设计模式(十二)代理模式

一.定义与类型1.定义:为其他对象提供一种代理,以控制对这个对象的访问代理对象在客户端和目标对象之间起到中介的作用2.类型:结构型二.适用场景1.保护目标对象2.增强目标对象三.优点1.代理模式能将代理对象与真实被调用的目标对象分离2.一定程度上降低了系统的耦合度,扩展性好3.保护目标对象4.增强目标对象四.缺点1.代理模式会造成系统设计中类的数目增加2.在客户端和目标对象增加一个代理对象,会造成请求处理速度变慢3.增加了系统的复杂度五.扩展

2020-06-11 23:31:23 96

原创 设计模式(十一)桥接模式

一.定义与类型1.定义:将抽象部分与它的具体实现部分分离,使它们都可以独立地变化通过组合的方式建立两个类之间联系,而不是继承2.类型:结构型二.适用场景1.抽象和具体实现之间增加更多的灵活性2.一个类存在两个(或多个)独立变化的维度,且这两个(或多个)维度都需要独立进行扩展3.不希望使用继承,或因为多层继承导致系统类的个数剧增三.优点1.分离抽象部分及其具体实现部分2.提高了系统的可扩展性3.符合开闭原则4.符合合成复用原则四.缺点1.增加了系统的理解

2020-06-11 00:48:11 87

原创 设计模式(十)组合模式

一.定义与类型1.定义:将对象组合成

2020-06-10 22:37:33 109

原创 设计模式(九)享元模式

一.定义与类型1.定义:提供了减少对象数量从而改善应用所需的对象结构的方式运用共享技术有效地支持大量细粒度的对象2.类型:结构型二.适用场景1.常常用于系统底层的开发,以便解决系统的性能问题2.系统有大量相似对象、需要缓冲池的场景三.优点1.减少对象的创建,降低内存中对象的数量,降低系统的内存,提高效率2.减少内存之外的其他资源占用四.缺点1.关注内/外部状态、关注线程安全问题2.使系统、程序的逻辑复杂化五.扩展1.内部状态不会随着环境改变而改变的

2020-06-09 20:20:33 99

原创 设计模式(八)适配器模式

一.定义与类型1.定义:将一个类的接口转换成客户期望的另一个接口使原本接口不兼容的类可以一起工作2.类型:结构型二.适用场景1.已经存在的类,它的方法和需求不匹配时(方法结果相同或相似)2.不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不同厂家造成功能类似而接口不相同情况下的解决方案三.优点1.能提高类的透明性和复用,现有的类复用但不需要改变2.目标类和适配器类解耦,提高程序扩展性3.符合开闭原则四.缺点1.适配器编写过程需要全面考虑,可能会增

2020-06-09 07:48:10 93

原创 设计模式(七)装饰者模式

一.定义与类型1.定义:在不改变原有对象的基础之上,将功能附加到对象上提供了比继承更有弹性的替代方案(扩展原有对象功能)2.类型:结构型二.适用场景1.扩展一个类的功能或给一个类添加附加职责2.动态的给一个对象添加功能,这些功能可以再动态的撤销三.优点1.继承的有力补充,比继承灵活,不改变原有对象的情况下给一个对象扩展功能2.通过使用不同装饰类以及这些装饰类的排列组合,可以实现不同效果3.符合开闭原则四.缺点1.会出现更多的代码,更多的类,增加程序复杂性2

2020-06-08 00:42:29 82

原创 设计模式(六)外观模式

一.定义与类型1.定义:又叫门面模式,提供了一个统一的接口,用来访问子系统中的一群接口外观模式定义了一个高层接口,让子系统更容易使用2.类型:结构型二.适用场景1.子系统越来越复杂,增加外观模式提供简单调用接口2.构建多层系统结构,利用外观对象作为每层的入口,简化层间调用三.优点1.简化了调用过程,无需了解深入子系统,防止带来风险。2.减少系统依赖,松散耦合。3.更好的划分访问层次4.符合迪米特法则,即最少知道原则四.缺点1.增加子系统、扩展子系统行为容易

2020-06-07 22:29:55 87

原创 设计模式(五)原型模式

一.定义与类型1.定义:指原型实例指定创建对象的种类,并且通过拷贝这些原型对象创建新的对象不需要知道任何创建的细节,不调用构造函数2.类型:创建型二.适用场景1.类初始化消耗较多的资源2.new产生的一个对象需要非常繁琐的过程(数据准备、访问权限等)3.构造函数比较复杂4.循环体中生产大量对象时三.优点1.原型模式性能比直接new一个对象性能高2.简化创建过程四.缺点1.必须配备克隆方法2.对克隆复杂对象或对克隆出的对象进行复杂改造时,容易引入风...

2020-06-07 21:10:34 72

原创 设计模式(四)建造者模式

一.定义和类型定义:将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示用户只需指定需要建造的类型就可以得到它们,建造过程及细节不需要知道类型:创建型二.适用场景1.如果一个对象有非常复杂的内部结构(很多属性)2.想把复杂对象的创建和使用分离三.优点1.封装性好,创建和使用分离2.扩展性好、建造类之间独立、一定程度上解耦四.缺点1.产生多余的Builder对象2.产品内部发生变化,建造者都要修改,成本较大五.UML六.代码

2020-06-06 16:33:57 92

原创 Cypress(四)查询元素

一.通过jquery选择器查询我们知道Jquery作为前端经典框架,也有查询元素的功能,那么两者有啥相似和不同之处呢?1.相似:如果使用过Jquery,如果想通过类选择器查询元素,代码如下:$('.my-selector')在Cypress里通过类查询同样的元素,代码如下cy.get('.my-selector')是不是看起来很像,实际上,Cypress捆绑了JQuery,并提供了很多JQuery的DOM遍历方法,因此可以使用熟悉的API轻松处理复杂的HTML结构。我们可以通

2020-06-05 00:56:02 960

原创 idea去掉UML类图的虚线箭头(依赖关系)

把show usages前面的勾去掉

2020-06-04 12:38:21 1124

原创 设计模式(三)简单工厂、工厂方法及抽象工厂

一.简单工厂定义:由一个工厂对象决定创建出哪一种产品类的实例类型:创建型,但不属于GOF23种设计模式适用场景:1.工厂类负责创建的对象比较少2.客户端(应用层)只知道传入工厂类的参数 ,对于如何创建对象(逻辑)不关心优点:只需要传入一个正确的参数,就可以获取你所需要的对象而无须知道其创建细节缺点:工厂类的职责相对过重,增加新的产品需要修改工厂类的判断逻辑,违背开闭原则...

2020-05-28 07:15:46 85

原创 Eureka Client启动后就关闭 Unregistering application xxx with eureka with status DOWN

在eureka-client中加入web包后解决<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.0.1.RELEASE</version> <

2020-05-24 11:16:10 2209

原创 如何显示IntelliJ IDEA工具的Run Dashboard功能

点击IDEA上面工具栏View---Tool Windows---Run Dashboard 即可打开界面,如果Tool Windows的子选项里没有Run Dashboard,可以在工程目录下找.idea文件夹下的workspace.xml,在其中增加如下组件<component name="RunDashboard"> <option name="configurationTypes"> <set> <option value="Sprin

2020-05-24 00:51:46 108

原创 单点登录解决方案

分布式系统要实现单点登录,通常将认证系统独立抽取出来,并且将用户身份信息存储在单独的存储介质,比如MYSQL、Redis,考虑性能要求,通常存储在Redis中

2020-05-23 11:33:21 242 1

原创 Cypress(三)cypress实战

1.在项目下新建login.js文件2.在项目的cypress->integration目录下新建baidu.js文件,输入以下代码describe('My First Test', () => { it('Login', () => { cy.visit('https://www.imooc.com/') cy.get('#js-signin-btn').click() cy.get('.ipt-email').typ

2020-05-22 16:29:05 1417

SecureCRT 6.7.4 .x64 含注册机

SecureCRT_6.7.4注册机激活步骤如下: 1)准备工作:安装好SecureCRT软件,下载并得到该注册机。 2) 安装vcredist_x64.exe 3)保持SecureCRT软件关闭(运行的话会提示你正在运行的,关闭就好)。 4)将注册机拷贝到你的CRT软件的安装的目录下; 5)点击【Patch】按钮,会让你选择文件 ,选择SecureCRT.exe可执行文件,还会再提示一次选择一个help什么文件。总之,确定后都会提示成功信息。 6)然后打开CRT软件,按照相应的提示输入注册机上显示的信息(当然重新生成也是可以的)。注意,默认打开CRT时候会是一个输入key的页面,什么都不输入,点击下一步,选择输入自己的相关信息。就会看到分别让你输入名称、序列号等相关日期了。完成结束。看看自己的是否有激活成功。

2013-03-20

IBMRationalHTTPRequestEditor

IBMRationalHTTPRequestEditor

2012-12-11

IBM Rational HTTP Request Editor

IBM Rational HTTP Request Editor

2012-12-11

SQLyog-9.6.3企业版破解版

SQLyog-9.6.3企业版破解版 先装SQLyog-9.6.3-0.exe,再装SQLyog_Patch.exe

2012-09-24

CSS完全自学手册光盘

CSS完全自学手册光盘文件,所有光盘内容

2012-07-12

struts-2.1.6-all.zip

example META-INF WEB-INF

2012-01-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除