开发中可能碰到的问题

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。开发中可能碰到的问题,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

1、负责模块中有什么技术亮点?

1.表单数据重复提交,是通过接口幂等性的思路来解决的,首先是:

  1. 从数据库方面考虑,数据设计的时候,如果有唯一性,考虑建立唯一索引。

  2. 从应用层面考虑,首先判断是单机服务还是分布式服务?

    1.单体服务项目-防止重复提交

    采用【AOP解析自定义注解】来解决表单/请求重复的提交问题。

    思路:

    1.建立自定义注解 @NoRepeatSubmit 标记所有Controller中的提交请求。
    2.通过AOP机制对所有标记了@NoRepeatSubmit 的方法拦截。

    3.使用DCL(Double Checked Locking,双重检测锁)来防止重复提交,里面有一个非常好用的数据结构 LRUMap 可以保存指定数量的固定的数据,

    当我们每次不同接口提交不同数据的时候,判断Map里面有没有请求接口的 ID的key,如果有进行一个拦截,没有就将这个ID存放到map中

    2.(刚好我做的这个项目是一个微服务)

    利用token机制+redis的分布式锁(jedis)来防止表单/请求重复提交。

思路如下:

1.自定义注解 @NoRepeatSubmit 标记所有Controller中的提交请求。
2.通过AOP 对所有标记了 @NoRepeatSubmit 的方法拦截。
3.在业务方法执行前,获取当前用户的 token(或JSessionId)+ 当前请求地址,形成一个唯一Key,然后去获取 Redis 分布式锁(如果此时并发获取,只有一个线程会成功获取锁)。
4.最后业务方法执行完毕,释放锁。

2.API接口防刷,项目中关于短信验证登录

拦截器+自定义注解+Redis

AOP+自定义注解+Redis:

1.自定义注解 @NoRepeatSubmit 标记所有要访问的方法

2.判断请求是否属于方法的请求

3.获取方法中的注解,看是否有该注解

4.如果没有放行,否则将 访问的方法的标记的注解 + ip + “:” + uri形成唯一key存放到Redis中

5.当第一次访问时,给key设置一个时间,过期时间为注解确定的访问周期

6.在限定访问时间内每次访问方法时+1,当超出访问次数限制,不进行任何操作,返回true,否则抛出异常给用户进行一个友好提示

2、redis在你模块中有什么应用场景?为什么用redis?为什么选择用redis呢?

速度快,完全基于内存,使用C语言实现,网络层使用epoll解决高并发问题,单线程模型避免了不必要的上下文切换及竞争条件;

3、RabbitMQ用过吗?什么场景用的?用来解决什么问题?有什么方案保证消息不丢失呢?

用过:

  • 订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功
  • 库存系统:订阅下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行库存操作

三种情况:生产者将消息传送到MQ服务器的过程中丢失,MQ服务器自身丢失,MQ服务器将消息传送到消费者的过程中丢失。

生产者到MQ服务器:事务机制和confirm机制。
MQ服务器自身:持久化、单机集群、普通集群模式、镜像集群模式。
MQ服务器到消费者:basicAck机制、死信队列、消息补偿机制。

4、如果页面查询慢的话,你有什么解决思路?可能是什么问题,如何解决呢?

首先要搞明白慢的原因是什么:是查询条件没有命中索引?还是 load 了不需要的数据列?还是数据量太大?所以优化也是针对这三个方向来的。

  1. 首先用 explain 分析语句的执行计划,查看使用索引的情况,是不是查询没走索引,如果可以加索引解决,优先采用加索引解决。

  2. 分析语句,看看是否存在一些导致索引失效的用法,是否 load 了额外的数据,是否加载了许多结 果中并不需要的列,对语句进行分析以及重写。

  3. 如果对语句的优化已经无法进行,可以考虑表中的数据量是否太大,如果 是的话可以进行垂直拆分或者水平拆分。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/188604.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!