问题
- 博客项目中的mq是用来干什么的
- AOP的切入点类型
- 通知类型
- 手写通知com.alibaba包下public类
- 方法计时怎么做
- redis限流怎么做的
- 滑动窗口(相关的其他的限流算法)
- 抖音的功能模块
- 抖音的视频表设计
- 手写近一个月每一天的第一条视频
- docker镜像的构建
- dockerfile的组成
- 进入docker容器的命令
- MySQL有那些索引
- 事务隔离级别,并发问题
- 什么叫脏读,怎么产生的
- 什么是幻读,怎么解决
- mvcc原理
- jvm的内存分区
- 垃圾清理的算法
- 手写单例模式
- 为什么要进行第二个判断
个人答案
使用mq主要是用来异步解耦使用的,在正常业务流程中,比较耗时而且不需要即时返回结果的操作。将这些操作可以做为异步处理,这样可以大大的加快请求的响应时间。再用户注册之后,需要发送注册短信、邮件通知,以告知相关信息。正常做法,是要经过三大步处理:用户信息处理、发送邮件、发送短信,等这三步全部都完成之后,才返回前端,告诉你注册成功了。使用MQ,只需要在处理完用户信息之后,给MQ发送两个消息即可,邮件服务、短信服务监听MQ的任务消息,根据消息进行发送即可。
常用的就是指定方法和指定注解。
execution(* com.itheima.*.*Service.find*(..))
将项目中所有业务层方法的以find开头的方法匹配@annotation(com.yangzhang.blog.annotation.OptLog)
前置,后置,环绕,返回,异常
execution (public com.alibaba..*(..))
首先定义好切点,使用AOP的环绕通知,在开始前后使用
System.currentTimeMillis
计算方法耗时。使用的是redis+AOP,指定注解下的方法会采用redis的string来根据ip+method name记录访问次数,每次访问加一,当访问的次数大于注解中指定的次数时,返回失败。
redis(zset)+lua实现滑动窗口简单的说了以下,令牌桶,漏桶
官方提供的接口,用户模块,视频模块,点赞,评论模块
id,userid,play_url,favorite_count,comment_count,create_time,update_time,title,cover。
不会
一是通过容器commit
docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1
。二是build+dockerfiledocker build -f /path/to/a/Dockerfile .
注意后面的.
代表dockerfile的上下文。docker exec -it /bin/bash
读未提交,读以提交,不可重复读,串行化。