自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2.大型电商商品页面静态化架构

好处:修改模板时可以直接在nginx上替换.nginx上只需要极其少量的时间用来渲染模板,几乎没有网络开销,速度极快,用户体验好.实现了高并发高性能访问。通常会保存缓存10分钟左右,业务中绝大部分请求都是直接在缓存中拿到)先在本地找是否有缓存,有的话直接渲染模板放回给用户,没有的话去查。拿到的.当有发生修改时,会发送修改消息到。本地有则放回,无则向 具体的。去主动拉取完整的数据.

2022-12-10 20:57:05 461 1

原创 1.小型电商商品详情页静态化

2.做对应的商品的内容管理系统,做系统自动化,进行渲染,填充进模板,一般是渲染几万个html.通常用freemarker,velocity模板引擎来处理。缺点,不灵活,模板一更改就是全部更改.而且只适用小电商,大电商几亿以上的商品,渲染的时间巨大,完全无法适用.3.推到nginx上去,用户请求时候直接走html.这样用户的体验就很急速。1.创建一个html模板。

2022-12-10 20:22:13 247

转载 JDK1.8源码(七)——java.util.HashMap 类(自己收藏)

hashmap源码解读

2021-12-14 18:57:25 143

原创 阿里easyexcel 2.x实现百万级海量数据效率导入导出demo

寄几看的

2021-12-13 11:53:09 2921

原创 布隆过滤器

布隆过滤器(Bloom Filter)是由Howard Bloom在1970年提出的一种比较巧妙的概率型数据结构,它可以告诉你某种东西一定不存在或者可能存在。当布隆过滤器说,某种东西存在时,这种东西可能不存在;当布隆过滤器说,某种东西不存在时,那么这种东西一定不存在。布隆过滤器相对于Set、Map 等数据结构来说,它可以更高效地插入和查询,并且占用空间更少,它也有缺点,就是判断某种东西是否存在时,可能会被误判。但是只要参数设置的合理,它的精确度也可以控制的相对精确,只会有小小的误判概率。在Red

2021-08-25 18:01:46 308

原创 elasticsearch如何防止脑裂

概述:一个正常es集群中只有一个主节点,主节点负责管理整个集群,集群的所有节点都会选择同一个节点作为主节点所以无论访问那个节点都可以查看集群的状态信息。 而脑裂问题的出现就是因为从节点在选择主节点上出现分歧导致一个集群出现多个主节点从而使集群分裂,使得集群处于异常状态。ES集群脑裂可能导致的原因:1.网络:由于是内网通信, 网络通信问题造成某些节点认为 master 死掉, 而另选 master的可能性较小; 进而检查 Ganglia 集群监控, 也没有发现异常的内网流量, 故此原因可以排除。内网

2021-07-22 11:27:41 724

原创 解决高并发下的超卖问题

1.用redis 的watch 来解决public void secondBuyProduct(Jedis jedis, String stockId, int orders) { //CAS重试 while (true) { try { //监视key,如果在后续事务执行之前,即transaction.exec(),key的值被其他命令所改动, //那么事务将被打断

2021-06-17 19:00:13 63

原创 lock和synchronized的区别以及优点缺点

1.synchronized和lock 都有可重入性.2.synchronized和lock 都可以知道线程是否持有了锁(看到很多文章说只有lock可以判断是否获取到锁,其实是错误的,synchronized也可以获取. synchronized 用Thread.holdsLock来判断).3.synchronized在进入锁池后,会不停得等待直到获取锁对象,无法中断,是真爱.而lock可以设置等待时间停止锁竞争.public boolean tryLock(long timeout, TimeUni

2021-06-17 11:29:12 1406

原创 深入理解synchronized底层原理

一、synchronized的特性1.1 原子性所谓原子性就是指一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。在Java中,对基本数据类型的变量的读取和赋值操作是原子性操作,即这些操作是不可被中断的,要么执行,要么不执行。但是像i++、i+=1等操作字符就不是原子性的,它们是分成读取、计算、赋值几步操作,原值在这些步骤还没完成时就可能已经被赋值了,那么最后赋值写入的数据就是脏数据,无法保证原子性。被synchronized修饰的类或对象的所有操作都是原子的,因为

2021-06-16 14:49:49 108

原创 序列化和反序列化的底层实现原理是什么

一、基本概念1、什么是序列化和反序列化(1)Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程;(2)序列化:对象序列化的最主要的用处就是在传递和保存对象的时候,保证对象的完整性和可传递性。序列化是把对象转换成有序字节流,以便在网络上传输或者保存在本地文件中。序列化后的字节流保存了Java对象的状态以及相关的描述信息。序列化机制的核心作用就是对象状态的保存与重建。(3)反序列化:客户端从文件中或网络上获得序列化后的对象字节流后,根据字节流中

2021-06-15 15:03:30 108

转载 mysql存储引擎详解,主要讲innodb和myisam

看这篇文章可以了

2021-02-23 17:47:28 55

原创 多线程锁的升级原理

锁的级别从低到高:无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁锁分级别原因:没有优化以前,synchronized是重量级锁(悲观锁),使用 wait 和 notify、notifyAll 来切换线程状态非常消耗系统资源;线程的挂起和唤醒间隔很短暂,这样很浪费资源,影响性能。所以 JVM 对synchronized 关键字进行了优化,把锁分为 无锁、偏向锁、轻量级锁、重量级锁 状态。无锁:没有对资源进行锁定,所有的线程都能访问并修改同一个资源,但同...

2020-05-17 18:59:23 387

转载 线程池的物种状态

线程池的5种状态:Running、ShutDown、Stop、Tidying、Terminated。线程池各个状态切换框架图:1、RUNNING(1) 状态说明:线程池处在RUNNING状态时,能够接收新任务,以及对已添加的任务进行处理。(02) 状态切换:线程池的初始化状态是RUNNING。换句话说,线程池被一旦被创建,就处于RUNNING状态,并且线程池中的任务数为0!private final AtomicInteger ctl = new AtomicInteger(ctl.

2020-05-17 18:37:47 163

转载 java 多线程参数及说明

一、corePoolSize 线程池核心线程大小线程池中会维护一个最小的线程数量,即使这些线程处理空闲状态,他们也不会 被销毁,除非设置了allowCoreThreadTimeOut。这里的最小线程数量即是corePoolSize。二、maximumPoolSize 线程池最大线程数量一个任务被提交到线程池后,首先会缓存到工作队列(后面会介绍)中,如果工作队列满了,则会创建一个新线程,然后从工作队列中的取出一个任务交由新线程来处理,而将刚提交的任务放入工作队列。线程池不会无限制的去创建新线程,它

2020-05-17 18:28:18 1771

空空如也

空空如也

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

TA关注的人

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