9月18日
1、学习了网关Gateway,学习了默认过滤器,路由过滤器,全局过滤器
2、继续学习了rabbitmq
简单队列模型,会出现预取的情况,
发布订阅模型,
FanoutExchange会将消息路由给每一个人
DirectExchange
TopicExchange
为什么路由模式,最后的队列配置会配置在消费者身上,仔细思考,其实队列是对我们进行了隐藏,我们无法直接干预队列的操作,那么在消费者身上却可以非常方便的进行注解配置,直接读取注解然后进行标注即可。
所以消费者的配置意不在消费者,就好比项庄舞剑意在沛公
3、简单的学习了git和github
9月19日
1、目前已经完成了MQ和网关的学习
2、开始ES的学习,开始Redis的学习
Redis基于内存,支持主从集群,支持分片集群,支持IO多路复用
3、项目同步开始谷粒商城
4、Redis
expire代表redis键的存活周期,值为-1代表永久有效,这里考虑热键问题,如果一个值多次被访问,设置为热键,周期为永久,不然其他都设置对应一个周期时长,-2代表该值已经过期
Redis有三大类
第一类是Jedis lettuce还有一个Redission
其中redission支持分布式项目
jedis线程本身并不安全,创建消耗过大,所以需要创建jedis连接池,这和远程调用和数据库德鲁伊的原理是一致的
线程不安全代表了可能会导致各种读写问题,没有施加足够的安全保障,如果加了保障
对性能会有一定的损耗,redis的诞生就是为了能够降低关系型数据库的读写负担。
5、宿主机端口和docker端口
6、黑马点评项目(Redis练习项目)
初步完成了短信登录功能
整体框架较为简单
短信验证码实际上是一个远程调用的过程,将要发送的短信内容发给第三方接口,第三方接口会自动生成短信并发送给用户
9月20日
1、在不同的tomcat上,session是不一样的,所以利用session进行存储是不合理的
session不共享问题
2、登录方式
第一种:session方式
第二种:token+redis方式
第三种:jwt 一处使用处处可见,而且不用存在redis缓存数据库上
3、JWT深入探究
4、布隆过滤器和空对象解决缓存穿透,redis和mysql都查不到数据
5、缓存雪崩 大量的key,redis服务器宕机,引起了整个集群功能出现问题
6、缓存击穿 高并发的key突然失效了,数据库被冲击
加上一个互斥锁
9月21日
1、@FunctionalInterface 修饰的只有一个抽象方法的接口可以被 lamada 表达。函数式编程
2、多线程
多核CPU才会使多线程生效,单核CPU不会体现出多线程的优势,微观上是并发
看完了线程运行原理
两段线程执行顺序完全不同,第二段线程执行会变成单线程,但是第一段线程执行就是A一段B一段是想要的结果。
t1.start();
t1.join();
t2.start();
t2.join();
t1.start();
t2.start();
t1.join();
t2.join();
//同时阻塞两个线程,这两个都执行完了才能继续向下执行下面的语句只有等t1全部执行完了才会往下掉
其实t2t1谁放在前面无所谓,因为我们也不会知道到底哪个线程会先结束
3、中特结课啦
4、学习了一下午的机器学习,搞项目呜呜
5、了解了轮转hash算法
如何设置多任务的定时,定义多个hash轮子,就好像时钟秒钟一样,然后转到轮子上的某个刻度就可以执行当前任务。
有多个任务就创建多个线程并发执行。
6、继续学习redis锁
互斥锁和逻辑过期
逻辑过期就是将缓存永远存着,当需要时查看过期没,过期了拿锁进库创建线程进行更新。
9月22日
1、巩固了数位DP和状压DP,AC了一些题,做算法题就一个字爽
2、继续学习redis,学习分布式锁,完成优惠券的秒杀活动
不能使用数据库自增id进行秒杀的id不安全
防止事务失效,通过aop上下文获取本身的代理类
3、继续学习多线程JUC,深入理解各个多线程命令
4、完成了老师的任务
9月23日
1、做了DP背包的题,回顾了BFS
统计步数可以记录下来队列里的元素个数,while里套一层for,直接中间加一个step就能方便统计出来了
2、全是课
3、完成了黑马的秒杀,学会了使用jmeter
利用meter做了各种调试