当前位置: 首页 > news >正文

苍穹外卖面试题-中

8. 如何理解分组校验

  1. 很多情况下,我们会将校验规则写到实体类中的属性上,而这个实体类有可能作为不同功能方法的参数使用,而不同的功能对象参数对象中属性的要求是不一样的。比如我们在新增和修改一个用户对象时,都会接收User对象作为请求参数,但是新增要求对象的id为空,而修改则要求id字段不能为空。这个时候就需要使用到分组校验了
  2. 分组校验其实就是定义多套校验规则,对于指定的功能,我们按照要求指定它使用哪套规则即可

9. Redis中有哪些数据类型

Redis是一个基于内存的键值对数据库,它的键都是字符串类型,而值的部分支持5种数据类型,每种类型特点不一样

  • string:字符串类型,可以存储普通字符串、JSON字符串,也可以存储对象系列化之后的字符串
  • hash:哈希类型,类似于Java中的HashMap,比较适合存储对象
  • list:列表类型,底层是一个顺序链表,可以从两端添加或移除元素,元素是有序的,可重复的
  • set:无序集合,没有重复元素
  • zset:有序集合,没有重复元素,且集合中每个元素关联一个分数,可以根据分数进行排序

10. Redis在项目中的应用

我们项目中有两处地方用到了Redis,分别是:店铺营业状态标识和小程序端的套餐、菜品列表数据

  1. 店铺营业状态标识,仅仅需要在redis中保存一个0|1值即可。这里之所以选择redis,有两个原因

    而没有采用数据库来存储,就是因为这个字段太简单了,没有必要在数据库中新建一张表

    这个状态访问比较频繁,放在redis中,提高了查询速度的同时,可以减轻数据库的访问压力

  2. 小程序端的套餐、菜品列表数据,由于小程序端以后的访问量比较大,所以采用Redis提高访问速度

    具体的操作步骤就是:在查询列表的时候,先判断Redis缓存中是否有数据,如果有,直接返回给前端

    如果没有,再去查询数据库,并将查询结果保存到redis中的同时,再返回给前端

    为了保证Redis和数据库中数据的实时一致性,在对数据库相关数据进行增删改操作时,需要同时清理Redis中数据

11. SpringCache在项目中的应用

SpringCache是Spring提供的一个缓存框架,它可以通过简单的注解实现缓存的操作,我们常用的注解有下面几个:

  • @EnableCaching: 开启基于注解的缓存

  • @CachePut: 一般用在查询方法上,表示将方法的返回值放到缓存中

  • @Cacheable: 一般用在查询方法上,表示在方法执行前先查看缓存中是否有数据,如果有直接返回;如果没有,再调用方法体查询数据并将返回结果放到缓存中;他有两个关键属性:

    value: 缓存的名称,每个缓存名称下面可以有多个key

    key: 缓存的key,支持Spring的表达式语言SPEL语法

  • @CacheEvict: 一般用在增删改方法上 ,用于清理指定缓存,可以根据key清理,也可以清理整个value下的缓存

SpringCache还有一个有点,就是可以随意切换底层的缓存软件,比如:Redis、内存等等

本项目中菜品和套餐列表的缓存用到了SpringCache

12. 微信支付流程

整个微信支付流程涉及到三个角色:微信小程序、服务端、微信平台

  1. 首先,由小程序发起下单请求到服务端,服务端生成订单保存到数据库后,将订单号返给前端
  2. 然后,小程序会向服务端发起支付请求,这个请求中会携带着订单号
  3. 服务端根据订单号查询到订单信息后,开始调用微信下单接口从微信平台获取预支付交易标识
  4. 服务端需要将预支付交易标识进行签名之后组装成支付参数,回传给小程序,小程序就会弹出支付窗口
  5. 用户通过小程序向微信平台付款,并可以获取到支付结果,进行显示
  6. 微信平台还会将订单支付结果推送给我们的后台程序,后台程序需要修改订单状态

13. SpringTask在项目中的应用

SpringTask是Spring框架提供的一种任务调度工具,用来按照定义的时间格式执行某段代码。

它的一个关键注解是@Scheduled,此注解标注在方法上,用于设置方法的调用时机,它支持下面一些属性:

  • fixedDelay:上一次任务完成后多久执行下一次任务
  • fixedRate:上一次任务开始后多久执行下一次任务(注意:任务不能有重叠)
  • initialDelay:第一次任务延迟多久执行
  • cron:通过cron表达式控制任务执行时间

在我们的项目中,超时订单的状态改变用到了SpringTask,比如:

  • 每隔1分钟检查是否有超过15分钟未支付的订单,如果有就将订单取消
  • 每天凌晨1点检查前一天是否有派送中的订单,如果有将订单状态改成已完成

14. cron表达式

cron表达式其实就是一个字符串,通过cron表达式可以定义任务的触发时间

SpringTask支持的cron表达式分为6个域,由空格分隔开,每个域代表一个含义:秒 分 时 日 月 周

每个域都支持精准数值的写法,也支持一些具有特殊意义的字符,主要的有下面这些:

*:表示任意

?:表示忽略,只能用在两个域

-:表示区间,

/:表示起始时间开始触发,然后每隔固定时间触发一次

,:表示列出枚举值,例如在域使用5,20则意味着在5和20分触发一次

#: 用于确定每个月第几个星期几

15. WebSocket对比HTTP

HTTP的通信是单向的,要先请求后响应,类似于对讲机

WebSocket的通信双向的、实时的,客户端和服务端可以同时发消息,类似于手机通话

我们在项目中大部分场景下都是使用HTTP协议,只有在高实时场景下,建议使用WebSocket

项目在向商家提醒接单时,用户催单发送提醒时使用了webSocket

16. Excel有哪些技术方案

Excel技术方案有:ApachePOI和EasyExcel等,EasyExcel是在POI的基础上进行二次开发的

POI的封装度较低,使用时需要写大量的代码,并且性能也比较低,同时它是对文档一次性导入,容易导致内存溢出

EasyExcel的封装度比较高,使用起来比较方便,而且它是一条条导入数据,不会导致内存溢出

在实际开发中,更倾向于使用稳定性更好的方案,所以一般选择EasyExcel作为Excel的导入导出技术方案

相关文章:

苍穹外卖面试题-中

8. 如何理解分组校验 很多情况下,我们会将校验规则写到实体类中的属性上,而这个实体类有可能作为不同功能方法的参数使用,而不同的功能对象参数对象中属性的要求是不一样的。比如我们在新增和修改一个用户对象时,都会接收User对象…...

Python 重要数据类型

目录 列表 序列操作 列表内置方法 列表推到式 字典 声明字典 字典基本操作 列表内置方法 字典进阶使用 字典生成式 附录 列表 在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。列表就是这样的…...

03、pytest初体验

官方实例 # content of test_sample.py def func(x):return x 1def test_ansewer():assert func(3) 5步骤解释 [100%]指的是所有测试用例的总体进度,完成后,pytest显示一个失败报告,因为func(3)没有返回5 注意:你可以使用ass…...

智能指针及强相关知识经验总结 --- 移动语义、引用计数、循环引用、move()、自定义删除器等

目录 前言 一、shared_ptr 1. 基本用法和构造方法 2. 引用计数机制 3. weak_ptr 解决循环引用 二、unique_ptr 1. 基本用法和构造方法 2. 独占性 3. 所有权转移 1)unique_ptr :: release() 2)移动语义 和 move() 三、 对比 shared_ptr 和 un…...

Gson 自动生成适配器插件

在json解析方面 我们常见有下面几方面困扰 1. moshi code-gen能自动生成适配器,序列化效率比gson快,但是自定义程度不如gson,能java kotlin共存 且解决了默认值的问题 2.gson api 强大自由,但是 第一次gson的反射缓存比较慢,而且生成对象都是反射,除非主动注册com.google.gson…...

React创建项目

React创建项目 提前安装好nodejs再进行下面的操作,通过node -v验证是否安装 1.设置源地址 npm config set registry https://registry.npmmirror.com/2.确认源地址 npm config get registry返回如下 https://registry.npmmirror.com/3.输入命令 npx create-re…...

Redis5新特性-stream

Stream队列 Redis5.0 最大的新特性就是多出了一个数据结构 Stream,它是一个新的强大的 支持多播的可持久化的消息队列,作者声明 Redis Stream 地借鉴了 Kafka 的设计。 生产者 xadd 追加消息 xdel 删除消息,这里的删除仅仅是设置了标志位&am…...

删除PPT文件的备注内容

解决方案的工作经常汇报以及经常做ppt的回报工作,但是删除备注很痛苦。 在网上或者拿历史的ppt文件修改后,需要删除ppt备注内容以及删除ppt个人文件信息的办法: 现象:很多备注信息,需要删除 解决办法一、 文件--信息-…...

2023年亚太杯APMCM数学建模大赛B题玻璃温室小气候调控

2023年亚太杯APMCM数学建模大赛 B题 玻璃温室小气候调控 原题再现 温室作物的产量受各种气候因素的影响,包括温度、湿度和风速[1]。其中,适宜的温度和风速对植物生长至关重要[2]。为了调节玻璃温室内的温度、风速等气候因素,在温室设计中常…...

Oracle 查询语句限制只选择最前面几行,和最后面几行的实现方式。

查询最前面几行 在Oracle中&#xff0c;可以使用 ROWNUM 关键字来限制查询结果的行数。要选择前10条记录&#xff0c;可以使用以下查询语句&#xff1a; SELECT * FROM your_table WHERE ROWNUM < 10;实际查询时将your_table替换为要查询的表名。以上查询将返回表中的前10…...

.NET Core6.0 MVC+layui+SqlSugar 简单增删改查

HTML部分: {ViewData["Title"] "用户列表"; } <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>用户列表</title><meta name"renderer" content"webkit"><meta …...

在 Mac 上使用浅色或深色外观

在 Mac 上&#xff0c;选取苹果菜单 >“系统设置”&#xff0c;然后点按边栏中的“外观” 。&#xff08;你可能需要向下滚动。&#xff09;选择右侧的“浅色”、“深色”或“自动”。 “浅色”表示不会发生变化的浅色外观。 “深色”表示不会发生变化的深色外观。“深色模式…...

华为手环关闭智能适时测量

问题 使用华为手环并使用华为创新研究APP后&#xff0c;会自动打开智能适时测量开关&#xff0c;此开关开启后&#xff0c;手环会在睡眠时间自动测量血氧&#xff0c;增加手环功耗从而影响续航&#xff0c;用户可根据自身需求决定是否开启&#xff0c;下文介绍如何找到此开关。…...

1-Hadoop原理与技术

单选题 题目1&#xff1a;安装Hadoop集群时&#xff0c;是在哪个文件指定哪些机器作为集群的从机&#xff1f; 选项: A datanode B slaves C yarn-site.xml D core-site.xml 答案&#xff1a;B ------------------------------ 题目2&#xff1a;Hadoop配置文件所在目录是哪…...

YoloV5改进策略:Swift Parameter-free Attention,无参注意力机制,超分模型的完美迁移

摘要 https://arxiv.org/pdf/2311.12770.pdf https://github.com/hongyuanyu/SPAN SPAN是一种超分网络模型。SPAN模型通过使用参数自由的注意力机制来提高SISR的性能。这种注意力机制能够增强重要信息并减少冗余,从而在图像超分辨率过程中提高图像质量。 具体来说,SPAN模…...

DAPP开发【04】测试驱动开发

测试驱动开发(Test Driven Development)&#xff0c;是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码&#xff0c;然后只编写使测试通过的功能代码通过测试来推动整个开发的进行。这有助于编写简洁可用和高质量的代码&#xff0c…...

Raspberry Pi 2, 2 of n - Pi 作为 IoT 消息代理

目录 介绍 环境 先决条件 - 设置静态 IP 地址 安装 Mosquitto 启动/停止 Mosquitto 配置先决条件 - 安装 mqtt_spy 配置 Mosquitto 配置 Mosquitto - 无安全性 测试 Mosquitto 配置 - 无安全性 配置 Mosquitto - 使用密码身份验证 Mosquitto 测试 - 带密码验证 概括 介绍 在本文…...

linux服务器环境搭建(使用yum 安装mysql、jdk、redis)

一:yum的安装 1:下载yum安装包并解压 wget http://yum.baseurl.org/download/3.2/yum-3.2.28.tar.gz tar xvf yum-3.2.28.tar.gz 2.进入yum-3.2.28文件夹中进行安装,执行安装指令 cd yum-3.2.28 sudo apt install yum 3.更新版本 yum check-update yum update yum cle…...

互联网Java工程师面试题·Spring Boot篇·第二弹

目录 8、什么是 YAML&#xff1f; 9、如何实现 Spring Boot 应用程序的安全性&#xff1f; 10、如何集成 Spring Boot 和 ActiveMQ&#xff1f; 11、如何使用 Spring Boot 实现分页和排序&#xff1f; 12、什么是 Swagger&#xff1f;你用 Spring Boot 实现了它吗&#xff1f; …...

【西南交大swjtu微机与接口技术实验】D/A变换实验实验三:波形发生器

做一个存档。实验要求与电路连接见参考指导书。 1、主程序产生锯齿波 2、按下KK1输出五个周期的三角波&#xff0c;继续输出被中断的锯齿波 3、按下KK2输出五个周期的方波&#xff0c;继续输出被中断的锯齿波 程序代码 IOY0 EQU 0600H DA EQU IOT000H*2SSTACK SEGMENT STA…...

【每日一题】从二叉搜索树到更大和树

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;中序遍历的反序方法二&#xff1a;后缀数组 写在最后 Tag 【中序遍历】【二叉树】【2023-12-04】 题目来源 1038. 从二叉搜索树到更大和树 题目解读 在二叉搜索树中&#xff0c;将每一个节点的值替换成树中大于等于该…...

@Scheduled,Quartz,XXL-JOB三种定时任务总结

Scheduled&#xff0c;Quartz&#xff0c;XXL-JOB三种定时任务总结 一、Scheduled 简介 Scheduled 是 Spring 框架中用于声明定时任务的注解。通过使用 Scheduled 注解&#xff0c;你可以指定一个方法应该在何时执行&#xff0c;无需依赖外部的调度器。 这个注解通常与Enab…...

开会做笔记的时候用什么软件比较好?

在工作生涯中&#xff0c;会经历很多大大小小的会议&#xff0c;而如何快速准确记录下会议上重要的内容&#xff0c;成了很多上班族的必修课。在会上做笔记&#xff0c;选择什么样的工具才能事半功倍&#xff0c;成了一个值得深思的问题。而经过一段时间的测评后&#xff0c;我…...

HTML CSS JavaScript的网页设计

一、网页界面效果&#xff1a; 二、HTML代码&#xff1a; <!DOCTYPE html> <!-- 声明文档类型--> <html lang"en"> …...

37.从0到上线三天搭建个人网站(第一天)

点赞收藏加关注&#xff0c;你也能住大别墅&#xff01; 挑战三天搭建个人网站 从0到上线 一、项目的主要功能 1.作为自己在网上的一个工作室。 2.发帖 3.展示个人项目连接 4.介绍自己&#xff08;没准儿还能接点活儿&#xff09; 二、UI风格参考 三、技术选型 1.前端&a…...

室内外融合便携式定位终端5G+UWB+RTK

一、介绍 便携式定位终端主要用于提供高精度的位置数据&#xff0c;支持室内UWB定位和室外北斗系统定位功能&#xff0c;支持5G公网和5G专网通信功能&#xff0c;便携式定位终端中超宽带(UWB)和实时动态(RTK)技术的集成代表了精确位置跟踪方面的重大进步。这款UWBRTK便携式定位…...

使用Java语言判断一个数据类型是奇数还是偶数

判断一个数字类型是奇数&#xff0c;还是偶数&#xff0c;只需要引入Scanner类&#xff0c;然后按照数据类型的定义方式进行定义&#xff0c;比较是按照与2进行整除后的结果&#xff1b;如果余数为零&#xff0c;则代表为偶数&#xff0c;否则为奇数。 import java.util.Scann…...

Java三种代理模式:静态代理、动态代理和CGLIB代理

Java三种代理模式&#xff1a;静态代理、动态代理和CGLIB代理 代理模式 代理模式是23种设计模式种的一种。代理模式是一种结构型设计模式&#xff0c;它允许为其他对象提供一个替代品或占位符&#xff0c;以控制对这个对象的访问。代理模式可以在不修改被代理对象的基础上&am…...

vivado实现分析与收敛技巧9-分析使用率统计数据

实现问题的常见原因之一是未考量显式和隐式物理约束。例如 &#xff0c; 管脚分配 (pinout) 在逻辑布局上变为显式物理约束。 slice&#xff08; 分片 &#xff09; 逻辑在大部分器件中都是一致的。但如下专用资源表示的是隐式物理约束 &#xff0c; 因为这些资源仅在某些位置…...

7nm项目之顶层规划——01数据导入

1.创建workspace 创建workspace后&#xff0c;在其目录下产生。 CORTEXA53.json文件是将有默认配置的文件master.json、有library的.config.json文件、tunes下CORTEXA53.tunes.json文件合并 注&#xff1a;tunes下的CORTEXA53.tunes.json文件可以覆盖一些master.json的设置…...

电子商务网站开发流程/百度问答我要提问

收听地址S01E01-开发者关系 (DevRel) 是开源项目和开源社区的加速器嘉宾Feynman Zhou[1] (周鹏飞)主持人majinghe[2]&#xff08;开源爱好者、DevOps 技术布道师&#xff09;Rick[3]&#xff08;开源爱好者、业余开源布道师&#xff09;Wey Gu[4]&#xff08;开源相信者、程序员…...

网站关键词优化方式/知乎推广优化

本文主要分为上下两部分&#xff0c;&#xff08;上&#xff09;部分主要介绍一下企业内部什么时候需要引入AI技术&#xff08;这里的AI技术泛指机器学习、深度学习、NLP、视觉、语音、推荐等&#xff09;&#xff0c;&#xff08;下&#xff09;部分主要介绍一下在引入这些AI技…...

期货贵金属网站源码建设/如何介绍自己设计的网页

1、用预编译指令符可以避免在多文件工程中调用文件的时候可能出现的重复定义的现象。比如&#xff1a;Main.cpp#include “Animal.h”#include “Fish.h”……Animal.hclass Animal(){}Fish.h#include “Animal.h”class Fish():public Animal{}因此在调用Main.cpp的时候先运行…...

网站维护步骤/促销活动推广方法有哪些

Nginx 配置反向代理和负载均衡 前言 这段时间在重新搞自己阿里云服务器上的博客&#xff0c;想着使用docker来搞一下方便后期“移植”&#xff0c;所以也顺带玩了一下nginx&#xff08;我自己服务器实际上是用不到nginx的&#xff0c;只是这里纯属放假因为疫情出不去没事干搞着…...

网站域名如何从代理商那里转出来/旺道seo优化

什么是统计机器学习/统计学习/机器学习&#xff1f; 三个词指的都是同一概念&#xff0c;这里统一简称为机器学习&#xff0c;指的是计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科。 实现机器学习的步骤是什么&#xff1f; 得到有限的训练数据集…...

如何做网站的301重定向/新东方雅思培训机构官网

本例介绍《vue.js实战》第五章最后的购物车练习一, 练习1:在当前示例基础上扩展商品列表,新增一项是否选中该商品的功能,总价变为只选中商品的总价,同时提供一个全选按钮 截图如下: html: <div id"app" v-cloak><template v-if"list.length">…...