前言
共5题。
微信支付流程?
整个微信支付流程涉及到三个角色:微信小程序、服务端、微信平台
-
首先,由小程序发起下单请求到服务端,服务端生成订单保存到数据库后,将订单号返给前端
-
然后,小程序会向服务端发起支付请求,这个请求中会携带着订单号
-
服务端根据订单号查询到订单信息后,开始调用微信下单接口从微信平台获取预支付交易标识
-
服务端需要将预支付交易标识进行签名之后组装成支付参数,回传给小程序,小程序就会弹出支付窗口
-
用户通过小程序向微信平台付款,并可以获取到支付结果,进行显示
-
微信平台还会将订单支付结果推送给我们的后台程序,后台程序需要修改订单状态
Excel有哪些技术方案?
Excel技术方案有:ApachePOI和EasyExcel等,EasyExcel是在POI的基础上进行二次开发的。
-
POI的封装度较低,使用时需要写大量的代码,并且性能也比较低,同时它是对文档一次性导入,容易导致内存溢出; -
EasyExcel的封装度比较高,使用起来比较方便,而且它是一条条导入数据,不会导致内存溢出。
在实际开发中,更倾向于使用稳定性更好的方案,所以一般选择EasyExcel作为Excel的导入导出技术方案。
数据统计模块都有哪些统计的维度?
可以考虑以下三个方向:
- 时间维度
- 地理维度
- 用户维度
比如你在京东下了一个订单但是没有支付,30分钟后这个订单过期了,如何关闭订单?
Redisson是一个基于redis实现的Java驻内存数据网格,它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。
Redisson除了提供我们常用的分布式锁外,还提供了一个分布式延迟队列RDelayedQueue,他是一种基于zset结构实现的延迟队列,其实现类是RedissonDelayedQueue。
public interface RDelayedQueue<V> extends RQueue<V>, RDestroyable {
/**
* Inserts element into this queue with specified transfer delay to destination queue.
* @param e the element to add
* @param delay for transition
* @param timeUnit for delay
*/
void offer(V e, long delay, TimeUnit timeUnit);
/**
* Inserts element into this queue with specified transfer delay to destination queue.
* @param e the element to add
* @param delay for transition
* @param timeUnit for delay
*/
RFuture<Void> offerAsync(V e, long delay, TimeUnit timeUnit);
}
-
优点:使用简单,并且其实现类中大量使用
lua脚本保证其原子性,不会有并发重复问题。 -
缺点:需要依赖
redis(如果这算一种缺点的话)。
总结:Redisson是redis官方推荐的JAVA客户端,提供了很多常用的功能,使用简单、高效,推荐大家尝试使用。
什么是QPS?
QPS(Queries Per Second)是每秒查询率,用于衡量系统在单位时间内能够处理的请求数量。