获得徽章 1
- #青训营笔记创作活动#
2月18日day30
Java 8 引入了一个十分实用的 Optional 类,它主要是为了解决空指针异常(NullPointerException)。
本质上,Optional 类是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。
展开评论点赞 - #青训营笔记创作活动#
2月16日day29
瞬时高并发场景设计思路
1.页面静态化
2.CDN加速
3.负载均衡
4.防重
5.缓存
6.异步
7.熔断、限流
8.分布式锁
分层过滤,分而治之展开评论点赞 - #青训营笔记创作活动#
2月14日day28
new和make的区别
new 的作用是初始化一个指向类型的指针 (*T) 。new 函数是内建函数,函数定义:func new(Type) *Type。使用 new 函数来分配空间。传递给 new 函数的是一个类型,不是一个值。返回值是指向这个新分配的零值的指针。
make 的作用是为 slice,map 或 chan 初始化并返回引用 (T)。make 函数是内建函数,函数定义:func make(Type, size IntegerType) Type;第一个参数是一个类型,第二个参数是长度;返回值是一个类型。
展开评论点赞 - #青训营笔记创作活动#
2月13日day27
Hertz框架进行JWT认证
demo
使用命令行工具 hz 生成代码
使用 JWT 扩展完成登陆认证和授权访问
使用 Gorm 访问 MySQL 数据库展开评论点赞 - #青训营笔记创作活动#
2月11日day26
本地锁失效是因为无法锁住各个应用的读写请求,失效的根本原因就是其他的服务无法感知到是否已经有请求上锁了,即无法共享锁信息。
分布式锁,其实也就是将加锁的这一个操作,单独的抽取出来了,让每个服务都能感知到。展开评论点赞 - #青训营笔记创作活动#
2月10日day25
跨域问题指的是不同站点之间,使用 ajax 无法相互调用的问题。跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。评论点赞 - #青训营笔记创作活动#
2月9日day24
实现方法
步骤:
获取注解参数
获取当前请求的ip和请求的方法
生成key
获取redis中该key的访问次数
判断次数是否超过范围
若超出范围,则拒绝访问,返回提示,并将TTL重置为注解上的等待时间
若没有超过范围,则允许访问,并将访问次数+1
若查询不到该key,则往redis中进行添加,将值设置为1,将TTL设置为注解上的值展开评论点赞 - #青训营笔记创作活动#
2月8日day23
缓存穿透
是指用户在不断访问一个缓存和数据库中都没有的数据。缓存无法命中,从而导致一直请求数据库,流量过大就会导致数据库的崩溃.
缓存雪崩
Redis挂掉了,请求全部走数据库。
缓存击穿
和缓存穿透其实非常类似,但是缓存击穿说的是数据在缓存中没有,但是在数据库中有的数据。展开评论点赞 - #青训营笔记创作活动#
2月7日day22
由本地缓存到集中式缓存(redis)到多级缓存,解决数据一致性问题,减少浪费,提升系统性能。评论点赞 - #青训营笔记创作活动#
2月6日day21
秒杀系统的9个细节
瞬时高并发、页面静态化、秒杀按钮、读多写少、缓存问题、库存问题、分布式锁、mq异步处理、如何限流评论点赞