Java代码常用知识一

1、Java开发中避免繁琐后端验证
验证使用validate  +正则

2、不用redis也可以进行缓存
loadingcache    guava的本地缓存
 

3、代码整洁规范

服务之间互相调用使用到的bean,创建到common二方库,所有人引用的jar

dao层不输出日志

service层输出日志,异常往上抛出

controller层将所有异常转换为状态码

4、短信验证 , 不能无限制发短信 
三档验证   乌云检测
图形化验证
黑白名单,白名单用于测试,不走短信接口

5、常用,不变的,用缓存,不要什么都DB
开发中IO是瓶颈:网络IO  磁盘IO ,肯定比CPU慢多了,优化就是减少IO

6、一个任务,可以用多线程完成,估算线程数:
2核  开几个线程
线程数=cpu可用核数/1-阻塞系数(io密集型接近1,计算密集型接近0)


7、提升QPS:
提高并发数:多线程能用则用,增加各种连接数(mysql,redis等连接数)
服务无状态,便于横向扩展
让服务能力对等,打乱serviceUrl顺序

8、减少响应时间:
异步,流量削峰
缓存 (减少db  减少磁盘IO ,适合于读多 写少)
数据库优化
多的数据,分批次返回
微服务中减少调用链(如果某个服务被其他服务用的特别少,没有必要独立成单独服务,减少服务调用事件发生)
需要的情况下用长连接sse  websocket  netty ,不要轮询

9、微服务登录
用户请求---api业务层---1、调用验证码service
                                 ---2、调用发送短信模块

10、生成6位验证码
String code = String.valueOf((int) ((Math.random() * 9 + 1) * Math.pow(10, 5)));// 数字运算 效率比字符串高


11、短信模板 缓存到内存,为什么不缓存到redis?
减少redis网络IO ,模板数据量比较小
如何估算内容占多少内存?复制到txt保存,右键看属性
假如一个短信模板占81B,10个占1k,10*1024才1M ,放内存比较好,即快又能减少网络IO


12、短信验证码先发还是先存redis?  如果先发,结果没有存,就有问题。应该是先存再发,即使用户没收到,可以再次获取


13、token要不要存服务端?要的,否则无法主动控制用户请求状态

redis存token等信息,要定好前缀 用来区分不同场景


token存header里的Authorization

微服务内部调用不用鉴权 
外部流量过来,通过网关鉴权
多个过滤器,通过前一个过滤器设置某些值,控制后面过滤器是否执行

14、多处互踢:
security  防用户重复登录  ,只能踢掉session ,但token还在redis ,不刷新页面时,可以继续访问
token一旦消失,访问时会自动打到login 

解决方法:
security控制session并发数
每次登录成功,将当前username  token与redis里对比(我这里生成token时加入了username,也可以对比其他的唯一值)
找出包含username,并且不是当前token的token,删掉。前一个用户就被挤掉了

 
15、yapi   接口管理神器   swagger  ,自行百度常用接口管理插件框架

16、nginx

nginx同款中间件
作为容器,可以使用tomcat   IIS   Apache   nginx ,当然还可以选择tengine   增强版nginx,推荐linux系统使用 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

励志重写JDK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值