获得徽章 1
- #青训营笔记创作活动#
1月31日 打卡day1
限流方式:
计数器:计数器是一种最简单限流算法,其原理就是:在一段时间间隔内,对请求进行计数,与阀值进行比较判断是否需要限流,一旦到了时间临界点,将计数器清零。
滑动窗口:滑动窗口把固定时间片进行划分,并且随着时间的流逝,进行移动,固定数量的可以移动的格子,进行计数并判断阀值。
漏桶限流:原理就是一个固定容量的漏桶,按照固定速率流出水滴。
Redis + Lua 分布式限流:分布式限流最关键的是要将限流服务做成原子化,我们可以借助 Redis 的计数器,Lua 执行的原子性,进行分布式限流展开评论点赞 - #青训营笔记创作活动# day9 分布式ID
需要满足那些条件?
全局唯一:必须保证ID是全局性唯一的,基本要求
高性能:高可用低延时,ID生成响应要块,否则反倒会成为业务瓶颈
高可用:无限接近于100%的可用性
好接入:要秉着拿来即用的设计原则,在系统设计和实现上要尽可能的简单
趋势递增:最好趋势递增,这个要求就得看具体业务场景了,一般不严格要求展开评论点赞 - #青训营笔记创作活动# day8 redis优点:
完全基于内存操作,性能极高,读写速度快,Redis 能够支持超过 100KB/s 的读写速率
支持高并发,支持10万级别的并发读写
支持主从模式,支持读写分离与分布式
具有丰富的数据类型与丰富的特性
支持持久化操作,不会丢失数据juejin.cn
展开评论点赞 - #青训营笔记创作活动# day7 实现秒杀系统
在高并发中我们往往会使用限流减轻服务器的压力。常用的是Redis方式限流,Redis限流的方式有许多种,常用的方式有三种。基于Redis的setnx的操作,基于Redis的数据结构zset,基于Redis的令牌桶算法评论点赞 - #青训营笔记创作活动# day6 项目实战
如何实现订单30分钟未支付自动取消
方案 1:数据库轮询
方案 2:JDK 的延迟队列
方案 3:时间轮算法
方案 4:redis 缓存
方案 5:使用消息队列展开评论点赞 - #青训营笔记创作活动# day5 三大并发问题与JMM
并发场景要解决好原子性问题、可见性问题、重排序问题。JAVA很友好,站在开发者的立场考虑问题,通过JMM屏蔽了复杂多样又难以理解的底层技术知识,以更亲民的方式提供给我们解决这些问题的规范和工具,让开发者只关注如何操作,而忽视底层的复杂实现。评论点赞 - #青训营笔记创作活动#
day4 Java 如何解决并发问题
Java 是采用共享内存的方式来进行线程间的通信、同步,为了屏蔽各个硬件平台和操作系统对内存访问机制的差异化,内存模型(Memory Model)诞生了,而 JAVA 的内存模型就叫 JMM。展开评论点赞 - #青训营笔记创作活动#
day3 java锁机制
Java中的乐观锁: CAS,比较并替换,比较当前值(主内存中的值),与预期值(当前线程中的值,主内存中值的一份拷贝)是否一样,一样则更新,否则继续进行CAS操作。
Java中的读写锁是一种技术:为了提高性能,Java提供了读写锁,在读的地方使用读锁,在写的地方使用写锁,灵活控制,如果没有写锁的情况下,读是无阻塞的,在一定程度上提高了程序的执行效率。读写锁分 为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,这是由jvm自己控制的。展开评论点赞 - #青训营笔记创作活动#
day2
小白学到了JVM的很多知识,比较抽象,偏理论。
JVM 的基本架构如上图所示,其主要包含三个大块:
类加载器:负责动态加载Java类到Java虚拟机的内存空间中。
运行时数据区:存储 JVM 运行时所有数据
执行引擎:提供 JVM 在不同平台的运行能力展开评论点赞