实际场景问题_1
# 实际场景问题_1
# 使用细节相关
# 【1】图形验证码-在发送请求时,后面为什么需要加时间戳?
【浏览器缓存】
1.由于浏览器会对同一 url 的图像进行缓存,向减少服务器端的请求次数,提高浏览性能
随机数就是让每次点击刷新验证码的时候请求的 URL 路径都不同。告诉浏览器上个图片已经失效了,需要重新向服务器上请求新的图片信息。这样才能实现每次点击都会刷新验证码的效果,否则只有在页面刷新的时候验证码才会变,或者点击一次之后就不再变了,而这并不是我们想要的效果。
2.加时间戳是为了防止有些浏览器(IE等)偷懒不发送请求,直接匹配URL是否一致,一致就从缓存读取数据,不一致才重新发请求
当然在使用验证码时,记得设置验证码的过期时间
# 设计/使用缘由类
# 英雄联盟用TCP链接好,还是UDP好,它们各自的区别是什么?
根据游戏对响应度的要求来判定,英雄联盟应该是UDP为主
对于像英雄联盟这样的大型网络游戏而言,大量的玩家同时在线,需要快速地传递大量的实时游戏数据,如角色位置、技能施放等,这就要求网络协议能够提供低延迟和高吞吐量的服务,而UDP正是为此目的而设计的。另外,UDP适合对实时性要求较高的应用
,比如语音、视频等实时流媒体应用。
在传输速度方面,由于UDP无需建立连接和维护状态,因此传输速度比TCP更快
。同时,UDP也没有TCP中的重传机制、拥塞控制等机制,这使得UDP更加简单高效。
然而,由于UDP没有TCP中的可靠性保障机制,数据包会出现丢失、重复、乱序等问题,需要应用层进行相应处理。 TCP虽然传输速度相对较慢,但是具有可靠性、流量控制、拥塞控制等特点,适用于大多数网络应用,比如Web浏览器、电子邮件、文件传输等。
UDP和TCP选择哪种协议,需要根据具体的应用场景来决定,权衡速度和可靠性因素。
# 生产环境cpu占用过高
生产环境cpu占用过高,怎么排查和解决?
# 可能原因
- 某个系统在跑批,比如系统判断有大量新用户,疯狂通过mq进行派发优惠券
# 排查方法
- 通过三个命令
top
# 首先通过top
2
首先通过top找到cpu占用最高的进程ID,然后通过
top -H -p <pid>
找到占用最高的线程ID,并将其转化为16进制
printf '0x%x\n' 线程PID
# 中间一定要有空格
2
最后使用,jstack 命令结合进程ID和16进制线程ID
查看线程状态,找到占用高的代码执行
jstack 进程PID |grep 16进制线程PID -A 20
# 最后的数字表示 显示多少行
2
到此,你就可以看到对应的错误信息了。
# 解决方法
以下解决方法,仅供参考,