自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 spring cloud - Ribbon

Ribbon实现了客户端负载均衡,具体实操可以去下载Spring Cloud微服务实战.pdf;负载均衡策略:RandomRule,随机选取一个服务实例;RoundRobinRule,按线性轮询的方式依次选择服务实例;RetryRule,实现重试机制的RoundRobinRule策略的实例选择功能;WeightedRespondTimeRule,根据实例运行情况来计算权重,并根据权重挑选实例;等等。负载均衡就是解决怎么选更好的问题,前提是服务有多个实例了。所以负载均衡更应该关注负载均衡策略,一个好的

2021-04-14 14:54:13 87

原创 spring cloud - Eureka

服务治理是微服务架构最核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。Erueka就是spring cloud中用于服务治理的框架。 服务治理的基础架构:服务注册中心,服务提供者,服务消费者。服务治理机制:服务提供者:服务注册 启动时向服务注册中心进行注册;服务同步 服务注册中心互相注册为服务,可完成服务同步;服务续约 通过”心跳“告说注册中心我还活着,防止注册中心将实例从列表中剔除。服务消费者:获取服务 启动时从注册中心获取服务清单;服务调用 获取清单...

2021-04-14 12:17:01 112 1

原创 秒杀系统架构学习总结

许令波大神的秒杀系统架构设计是经过淘宝实战得出来的经验,值得大家去学习;但是我们不能简单的依葫芦画瓢,要理解他解决问题的方式,做到触类旁通的,这样才能极大的提升自己的能力。好的算法是基于实践的,好的架构是基于场景的,脱离了实际去谈架构就有些扯淡了。经典物理学是解决不了量子物理的问题的,所以在构建系统架构之前是要去分析场景的。秒杀活动会带来什么问题或者痛点?秒杀意味着活动时间短,商品优惠度大有很多用户进行抢单,后果是造成服务器关于秒杀活动商品的请求短时间出现峰值。服务器必须在高流量下保证服务的可用性。初始

2021-04-08 21:18:48 141

原创 秒杀系统架构关键技术-设计兜底方案

高可用建设应该从哪里着手 1. 架构阶段:架构阶段主要考虑系统的可扩展性和容错性,要避免系统出 现单点问题。例如多机房单元化部署,即使某个城市的某个机房出现整体故障,仍然不会影响整体网站的运转2. 编码阶段:编码最重要的是保证代码的健壮性,例如涉及远程调用问题时,要设置合理的超时退出机制,防止被其他系统拖垮,也要对调用的返回结果集有预期,防止返回的结果超出程序处理范围,最常见的做法就是对错误异常进行捕获,对无法预料的错误要有默认处理结果。3. 测试阶段:测试主要是保证测试用例的覆盖度,保

2021-04-08 11:16:40 330

原创 秒杀系统架构关键技术-减库存设计

减库存有哪几种方式1.下单减库存2.付款减库存3.预扣库存减库存可能存在的问题 1.采用“下单减库存”的方式,即用户下单后就减去库存,正常情况下,买家下单后付款的概率会很高,所以不会有太大问题。但是有一种场景例 外,就是当卖家参加某个活动时,此时活动的有效时间是商品的黄金售卖时间, 如果有竞争对手通过恶意下单的方式将该卖家的商品全部下单,让这款商品的库 存减为零,那么这款商品就不能正常售卖了。要知道,这些恶意下单的人是不会 真正付款的,这正是“下单减库存”方式的不足之处。.

2021-04-08 10:28:17 1080

原创 秒杀系统架构关键技术-流量削峰

排队要对流量进行削峰,最容易想到的解决方案就是用消息队列来缓冲瞬时流量,把 同步的直接调用转换成异步的间接推送,中间通过一个队列在一端承接瞬时的流 量洪峰,在另一端平滑地将消息推送出去。在这里,消息队列就像“水库”一 样, 拦蓄上游的洪水,削减进入下游河道的洪峰流量,从而达到减免洪水灾害 的目的。但是,如果流量峰值持续一段时间达到了消息队列的处理上限,例如本机的消息 积压达到了存储空间的上限,消息队列同样也会被压垮,这样虽然保护了下游的 系统,但是和直接把请求丢弃也没多大的区别。就像遇到洪

2021-04-08 09:57:08 197

转载 秒杀系统架构关键技术-热点数据

为什么要关注热点 我们一定要关注热点,因为热点会对系统产生一系列的影响。 首先,热点请求会大量占用服务器处理资源,虽然这个热点可能只占请求总量的 亿分之一,然而却可能抢占 90% 的服务器资源,如果这个热点请求还是没有价值的无效请求,那么对系统资源来说完全是浪费。其次,即使这些热点是有效的请求,我们也要识别出来做针对性的优化,从 而用更低的代价来支撑这些热点请求。什么是“热点”热点分为热点操作和热点数据。所谓“热点操作”,例如大量的刷新页面、大量的添加购物车、双十一零点大量的下.

2021-04-07 20:54:01 493

原创 秒杀系统架构关键技术-动静分离

何为动静数据“动态数据”和“静态数据”的主要区别就是看页面中输出的数据是否和 URL、浏览者、时间、地域相关,以及是否含有 Cookie 等私密数据。静态数据,不能仅仅理解为传统意义上完全存在磁 盘上的 HTML 页面,它也可能是经过 Java 系统产生的页面,但是它输出的页面 本身不包含上面所说的那些因素。也就是所谓“动态”还是“静态”,并不是说 数据本身是否动静,而是数据中是否含有和访问者相关的个性化数据。缓存静态数据策略第一,你应该把静态数据缓存到离用户最近的地方。第二.

2021-04-07 20:27:06 160

原创 秒杀系统架构

今天被问到秒杀系统的设计,说实话没做过这个东西,就简单的按照处理高并发的后台逻辑进行回答的,答了个寂寞,就收集相关的资料整理一下,看看秒杀系统的演变过程。架构原则:1.数据量尽量少 在网络上传输数据是需要时间的,数据量少网络传输时间就少;服务端处理数据也是要时间的; 2.请求数量尽量少 每个请求都要通过三次握手来建立连接;要是页面有连接数限制的话,有些请求需要等待执行;要是不同请求的域名存在不同的情况,还涉及到dns解析; ...

2021-04-07 19:05:46 189 4

原创 头条上的一道题

这个是我在头条上看到的一道题,觉得有点意思,就拿来做了。该题表述不容易看懂的,从案例上分析就是从前往后 计算数组中第一个比自己大的数据的距离。public class Temperature { public static void main(String[] args) throws Exception { int[] temperature = new int[30000]; for(int i = 0;i<30000;i++){ ..

2021-03-21 01:18:09 77 3

原创 Semaphore的使用

Semaphore主要的作用时限制并发的线程数,过多的线程会导致cpu资源耗尽,使线程执行任务变缓慢 *         Semaphore可用于pool池技术 Semaphore(1,false);非公平锁,若第二个参数为true则使公平锁(与线程启动有关) *         permits.acquire();获取信号量 permits.release();释放信号量 *       ...

2019-02-16 20:28:56 213

原创 创建型模式总结

       创建型模式有四种:FactoryMethod、AbstractFactory、Builder、Prototype;再具体划分一些:1.通过生成对象类的子类的方法创建对象:FactoryMethod,2.定义一个对象负责明确产品对象类,并将它作为该系统的参数:AbstractFactory、Builder、Prototype,AbstractFactory 由这个工厂对象产生多个类的对...

2018-12-26 22:05:55 146

原创 visitor -对象行为型模式

1.意图  表示一个作用于某个对象结构中的各个元素的操作。它使你可以在不改变各个元素的类的  前提下定义这些元素的新操作  2.参与者  Visitor -为该对象结构ConcreteElement的每一个类声明一个visit操作。  ConcreteVisitor 实现每个visitor声明的操作  Element -定义一个Accept,它以一个访问者为参数  ConcreteE...

2018-12-22 12:06:45 176

原创 template method -类行为型模式

1.意图  定义一个操作中的算法骨架,而将一些步骤延迟到子类。TemplateMethod使得子类  可以不改变算法的结构重新定义算法的某些特定的。  2.参与者  AbstractClass -抽象类定义抽象的原语操作,具体子类将重定义它们实现一个算法的各个步骤                -实现一个算法定义一个骨架。该算法骨架不仅调用原语操作,也调用定义在抽象          ...

2018-12-22 12:02:51 132

原创 strategy - 行为对象型模式

           1.意图            定义一系列算法并且封装起来是它们可以相互替换。此模式可以使算法独立于使用的客户而变化            2.参与者            Strategy -定义算法的公共接口,Context调用具体算法            ConcreteStrategy - 实现具体的算法            Context - 用一个具...

2018-12-22 11:59:24 181

原创 state - 对象行为模式

    1.意图     允许一个对象在其内部状态改变的时候改变它的行为,对象看起来似乎下修改了它的类     2.参与者     Context - 定义客户感兴趣的接口             - 维护一个ConcreteState子类的实例,这个实例定义当前状态     State  - 定义一个接口以封装与context的一个特定状态的行为     ConcreteState ...

2018-12-22 11:46:37 212

原创 Observer -对象行为型模式

        1.意图            定义对象间的一种一对多的关系,当一个对象的状态发生改变的时候,所有依赖            它的对象都得到通知。            2.参与者            Subject -目标知道它的观察者                    -提供注册和删除它的观察者            Observer -为那些在目标中发生改变...

2018-12-22 11:41:52 545

原创 memento -对象行为型模式

        1.意图          在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象外保存这个状态          这样就可以将该对象恢复到原先保存的状态          2.参与者          Memento - 存储对象状态                  - 防止原发器以外的其它对象访问备忘录          Originato - 原发器创建一个备...

2018-12-22 11:37:37 255 1

原创 mediator - 对象行为型模式

       1.意图        用一个中介对象封装一些列对象交互。中介使各对象不需要显示地相互引用,从而使        其耦合松散,而且可以独立的改变它们的交互。        2.参与者        Mediator  -  中介者定义一个接口用于各同事对象通信        ConcreteMediator   - 了解并维护它的各个同事                 ...

2018-12-22 11:33:15 143 1

原创 interpreter -类行为型模式

         1.意图              给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用               该表示来解释语言中的句子。          2.参与者          AbstractExpression -(抽象表达式)声明一个抽象的解释操作,这个接口为                                    ...

2018-12-19 12:06:33 346

原创 chain of responsibility - 对象行为型模式

     1.意图                使多个对象都有机会处理请求,从而避免发送者和接收者的耦合关系。将一些                对象连成一条链。并沿着这条链传递请求,直到有一个对象处理它为止      2.参与者      Handler -定义一个请求接口              -(可先)实现一个后继链      ConcreteHandler - 处理它所...

2018-12-18 15:06:20 87

原创 proxy -对象结构型模式

        1.意图                     为其它对象提供一种代理以控制对这个对象的访问         2.参与者           Proxy - 保存一个引用使得代理可以访问实体                 - 提供一个和subject的接口相同的接口                 - 控制对实体的存取,并可能的创建和删除它             ...

2018-12-18 11:09:15 114

原创 flyweight - 对象结构型模式

    1.意图     运用共享技术有效的支持大量细粒度的对象     2.参与者     Flyweight - 描述一个接口flyweight可以接受并作用于外部状态          ConcreteFlyweight - 实现flyweight接口,并为内部状态增加存储空间。          FlyweightFactory - 创建对象确保合理的共享对象   3.结...

2018-12-17 15:51:54 132

原创 facade - 对象结构型模式

   1.意图            为子系统提供一个一致的界面,facade模式定义了一个高层接口,这个接口使得            这一系统更加容易使用    2.参与者      Facade - 知道哪些子系统类负责处理请求             - 将客户请求代理给适当的子系统对象      subsystem classess -实现子系统的功能           ...

2018-12-16 20:30:37 219

原创 decorator - 对象结构模式

  1.意图            动态的给一个对象添加一些职责,decorator模式比生成子类更灵活    2.参与者      Compoment   - 定义一个对象接口,可以给这些对象动态的添加职责      ConcreteCompoment  - 定义一个对象,可以给这个对象动态地添加职责      Decorator - 维持一个指向component对象的指针,并定义一...

2018-12-16 19:09:28 167

原创 composite - 对象结构型模式

   1.意图        将对象组合成树形结构以表示“部分-整体”的层次结构,composite使得用户对        单个对象和组合对象的使用具有一致性。      2.参与者      component -为组合中的对象声明接口                -在适当的情况下,实现所有类共有接口的缺省行为                -声明一个接口用于访问和管理compo...

2018-12-15 21:51:53 226

原创 bridge - 对象结构型模式

   1.意图            将抽象部分和它的实现部分分离,使它们都可以独立变化    2.参与者      Abstraction - 定义抽象接口                  - 维护一个指向Implementor类型对象的指针      RefindAbstraction -扩充由Abstraction定义的接口      Implementor  -定义实现类的接...

2018-12-15 18:53:13 205

原创 prototype -对象创建模型

     1.意图              用原型实例指定创建对象的种类并且通过拷贝这些原型创建新对象     2.参与者       Prototype,ConcretePrototype,client     3.结构代码:public abstract class Prototype implements Cloneable { public Object clo...

2018-12-13 19:52:44 156

原创 Factory Method -对象创建模型

    1.意图            定义一个用于对象创建的接口,让子类决定实例化哪个类,Factory Method            使一个类的实例化延迟到其子类。    2.参与对象            Product,ConcreteProduct,Creator,ConcreteCreator    3.结构      代码:public interfac...

2018-12-13 11:15:11 180

原创 builder -对象创建模型

    1.意图              将一个复杂对象和它的表示分离,使得同样的构建过程可以创建不同的表示     2.参与者       Builder -为创建product对象的各个部件提供接口       ConcreteBuilder -实现Builder的接口以构造和装配该产品                       -定义并明确它所创建的表示           ...

2018-12-13 10:05:39 210

原创 abstract factory -对象创建型模式

1.意图  提供一个创建一系列的相关或相互依赖的对象接口,而无需指定具体类  2.参与对象    AbstractFactory;ConcreteFactory;AbstractProduct;ConcreteProduct;Client  3.使用     系统的产品有多于一个的产品族,而系统只消费其中某一族的产品  4.相关技术        具体工厂使用单件     5.结...

2018-12-11 21:47:21 94

原创 command - 对象行为型模式

       1.意图        将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化;对请求        排队或者记录请求日志以及支持可撤销的操作        2.参与者        Command - 声明执行操作的接口        ConcreteCommand -将一个接收者对象绑定于一个对象                        -调用接收者...

2018-01-21 13:20:47 174

原创 adapter - 类对象结构型模式

1.意图               将一个类的接口转换成客户希望的接口,adapter模式使得原来由于接口不兼容的        而不能一起工作的那些类可以一起工作。     2.参与者      Target,Client,Adaptee,Adapter     3.相关模式      Bridge与对象适配器类似,但是出发点不同:Bridge目的是将接口部分和实现       ...

2018-01-14 15:50:33 183

原创 iterator - 对象行为型模式

迭代模式:提供一种顺序访问存储结构过程的模式。实现过程:一个接口类:Iterator,提供hasNext()和next()方法接口;                提供一个实现Iterator接口的迭代子类;                需实现顺序访问的类,提供一个生成迭代子类的方法Iterator(),在这个方法里面创建一个对应的迭代子类并将数据传递过去。代码:public...

2018-01-13 22:33:01 404

原创 动态算法的理解

动态算法是通过空间换取时间的一种算法。很多时候我们在获取结果的过程中会产生许多重复的过程,那么用什么手段将重复的过程只进行一次呢?我们可以将这个过程当成一个黑匣子它有输入和输出,存在一种映射f代表输入和输出关系,当且仅当第一次输入时调用这个过程,产生输出,将输出和结果存储起来,下一次就可以直接获取结果。举个例子,cds:在计算机上,通过此种服务使各地的Internet客户在访问这些网站时,可以访问

2017-04-08 21:55:58 612

原创 servlet学习成果分享

servlet

2017-04-04 12:00:30 282

原创 js面向对象编程

java面向对象语言具有封装,继承,多态特性,而js也是一门面向对象的语言,可以模仿这个形式,然后使用面向对象思维进行编程。封装和继承的本质就是控制权限的使用。封装对应着private权限,继承对应着protec和publict权限。      在js中类的定义是函数:  (1)  function people(){};   (2)var people=function(){};

2017-03-28 14:08:41 219

原创 排序算法

插入排序算法的生活场景排队,大家在读小学的时候有过排队的经历吧,当时老师就是让没有排好序的同学出来一个,让他从后往前和已经排好序的同学依次比较比他高的就往后挪一位直到找到比他矮的,就插到这位同学的后面。用java代码实现就是:          int j; for(int i=2;i      a[0]=a[i];      for(j=i-1;j>=0;j--)

2017-03-22 23:33:04 188

空空如也

空空如也

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

TA关注的人

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