自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二八原则

二八原则热点操作和热点数据热点操作:如大量的刷新页面,大量添加购物车,双十一零点大量下单等等。优化的思路是根据CAP做平衡。热点数据:热点请求对应的数据发现热点数据提前标记:例如秒杀前卖家把秒杀商品提前标记。动态发现:实时监测访问量最高的topn商品。处理热点数据优化:将热点数据进行临时缓存限制:保护其他数据的访问,不被热点数据占用过多资源,可以将被访问的所有商品做一致性hash,分桶,再在每个桶上设置一个处理队列,把热点数据限制在一个队列里。隔离:将热点数据隔离出来,

2020-08-01 17:52:08 324

原创 架构设计(动静分离)

架构设计(重点)把秒杀系统独立出来单独打造一个系统,这样可以有针对性地做优化,例如这个独立出来的系统就减少了店铺装修的功能,减少了页面的复杂度;在系统部署上也独立做一个机器集群,这样秒杀的大流量就不会影响到正常的商品购买集群的机器负载;将热点数据(如库存数据)单独放到一个缓存系统中,以提高“读性能”;增加秒杀答题,防止有秒杀器抢单。进一步的完善:对页面进行彻底的动静分离,使得用户秒杀时不需要刷新整个页面,而只需要点击抢宝按钮,借此把页面刷新的数据降到最少;在服

2020-08-01 17:48:16 506

原创 如何设计一个秒杀系统和架构原则

如何设计一个秒杀系统主要解决两个问题:一个是并发读,一个是并发写并发读:并发读的核心优化理念是尽量减少用户到服务端来“读”数据,或者让他们读更少的数据;并发写的处理原则也一样,它要求我们在数据库层面独立出来一个库,做特殊的处理。遵循的原则:保证用户请求的数据尽量少、请求数尽量少、路径尽量短、依赖尽量少,并且不要有单点。高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。本专栏将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这 4 个方

2020-08-01 17:45:40 219

原创 Java注解和反射

Java注解和反射什么是注解Annotation是JDK5.0开始引入的新技术Annotation的作用不是程序本身,可以对程序做出解释(这一点和注释没有什么区别)可以被其它程序,比如编译器读取Annotation的格式注解以 @注释名 在代码中存在的,还可以添加一些参数值例如:@SuppressWarnings(value = "unchecked")Annotation在那里使用?可以附加在package、class、method、field等上面,相当于给他们添加了

2020-07-31 19:07:19 185

原创 Java中的双亲委派机制以及如何打破

Java中的双亲委派机制以及如何打破什么是双亲委派机制当一个类收到了类的加载请求,他首先不会尝试自己去加载这个类,而是把这个请求委派给父类去完成,每一层的类加载器都是如此,因此所有的加载请求都应该传送到启动类加载其中,只有当父类加载器反馈自己无法完成这个请求的时候(在它的加载路径下没有找到所需加载的Class),子类加载器才会尝试自己去加载。采用双亲委派机制的一个好处是比如加载位于 rt.jar 包中的类 java.lang.Object,不管是哪个加载器加载这个类,最终都是委托顶层的启动类加载器进行

2020-07-31 18:51:55 9943

原创 mysql45讲笔记

mysql45讲笔记:mysql结构:长连接和短连接长连接:如果客户端持续有请求,则一直使用同一个连接。短连接:指每次执行完很少的几次查询就断开连接,下次查询再重新建立一个。长连接过多时,会导致内存占用大,因为MySQL 在执行过程中临时使用的内存是管理在连接对象里面的。这些资源会在连接断 开的时候才释放。所以如果长连接累积下来,可能导致内存占用太大,被系统强行杀掉 (OOM),从现象看就是 MySQL 异常重启了。如何解决:定期断开长连接,或者程序里判断执行过一个

2020-07-31 18:43:37 787

原创 浅谈ArrayList及扩容机制

浅谈ArrayList及扩容机制ArrayListArrayList就是动态数组,其实就是Array的复杂版本,它提供了动态的添加元素和删除元素的方法,同时实现了Collection 和 List接口,能够灵活的设置数组的大小。通过源码的分析,我们可以看到ArrayList有三种构造方法空的构造函数根据传入的数值大小,创建指定长度的数组通过传入Collection元素列表进行生成// 默认的容量大小private static final int DEFAULT_CAPACITY = 1

2020-07-31 18:28:12 785 2

空空如也

空空如也

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

TA关注的人

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