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

旅游项目day07

目的地攻略展示

根据目的地和主题查询攻略

攻略条件查询

攻略排行分析

  • 推荐排行榜:点赞数+收藏数 取前十名
    在这里插入图片描述
    在这里插入图片描述
  • 热门排行榜:评论数+浏览数 取前十名 浏览数跟评论数差距过大,可设置不同权重,例如:将浏览数权重设置为0.3,评论数权重设置为0.7。
    在这里插入图片描述
    如果是小表,以上的sql没太大问题。
    但是,,如果表的数据量非常大?
    排序,运算会导致mysql性能大大降低。
    如何解决性能问题?
  • mysql性能优化。
    1. 给需要排序的字段,加索引
      但是,对索引列做任何运算,(concat + - * /)等操作,都会导致索引失效,仍会出现性能问题。

      但是因为必须要用到的算法,所以必须要做运算。如何解决?如何优化?
      不实时! 排行榜不是实时更新,比如半个小时更新一次。
      把实时查询的数据,变成不实时的数据。
      半个小时查询一次后,将数据放到另外一张表,或者放到redis。

      优化方案:将原本实时查询的数据,变成每10分钟统计一次,将统计后的数据放到一张更新的表中,之后查询排行榜信息时,直接查询新的表即可。

      新的表如何设计?
      id,dest_id,dest_name,strategy_id,strategy_title,num,type,status_time
      统计数量 统计时间

      如何实现每10分钟去做一个事情?
      定时任务。
      定时统计方案:
      1. TimerTask | ScheduledThreadPoolExecutor:JDK自带的定时任务类 不支持分布式
      2. Spring Scheduled:任务调度组件,quartz
      3. 分布式任务调度组卷:xxl-job,elastic-job 需要引入额外的服务
      如何抉择?
      Spring的定时任务。
      Spring定时任务示例代码:每个两秒打印一次时间
      在这里插入图片描述
      每隔一段时间。
      需要新创建一个服务。为什么?
      如果在文章服务开启定时任务,会导致占用一定的cpu,对性能有一定的影响。
      故新创建一个数据服务(travel-data-server)。新建一个定时任务类,@Component交给Spring容器管理。
      启动类加@EnableScheduling
      定时任务类方法加@Scheduled()注解。
      corn表达式,是linux里面的一个机制。秒,分钟,小时,月中某日,月,周中某日
      corn表达式口诀: “秒分时日月周”

Cron表达式用于指定计划任务(如在Unix、Linux和Spring框架中的定时任务)的执行时间。
要创建一个在每个工作日(星期一到星期五)凌晨两点执行的Cron表达式,你可以使用以下格式:0 2 * * 1-5这个表达式的各部分意义如下:- `0` 分钟:表示在小时的开始时刻(即每小时的第0分钟)。
- `2` 小时:表示凌晨2点。
- `*` 日:表示每天。
- `*` 月:表示每个月。
- `1-5` 星期:表示星期一到星期五。所以,这个Cron表达式代表着“在每个月的每天,
如果是星期一到星期五,那么在凌晨2点执行任务”。这正符合你的要求。

示例:
在这里插入图片描述
在这里插入图片描述
不一定非要去琢磨透corn表达式,工具是为我们提高效率而服务的,可借助corn表达式生成工具去生成。

实现:
在这里插入图片描述

改写为函数式编程:
在这里插入图片描述

如何排序?

相关文章:

旅游项目day07

目的地攻略展示 根据目的地和主题查询攻略 攻略条件查询 攻略排行分析 推荐排行榜:点赞数收藏数 取前十名 热门排行榜:评论数浏览数 取前十名 浏览数跟评论数差距过大,可设置不同权重,例如:将浏览数权重设置为0.3…...

java黑马学习笔记

数组 变量存在栈中&#xff0c;变量值存放在堆中。 数组反转 public class test{public static void main(String[] args){//目标&#xff1a;完成数组反转int[] arr {10,20,30,40,50};for (int i 0,j arr.length - 1;i < j;i,j--){int tep arr[j]; //后一个值赋给临时…...

WordPress后台底部版权信息“感谢使用 WordPress 进行创作”和版本号怎么修改或删除?

不知道各位WordPress站长在后台操作时&#xff0c;是否有注意到每一个页面底部左侧都有一个“感谢使用 WordPress 进行创作。”&#xff0c;其中WordPress还是带有nofollow标签的链接&#xff1b;而页面底部右侧都有一个WordPress版本号&#xff0c;如下图中的“6.4.2 版本”。…...

解决字符串类型转数字类型相加结果异常问题

js字符串类型转换数字类型有七种方法&#xff0c;分别是parseInt()&#xff0c;parseFloat()&#xff0c;Math.floor()&#xff0c;乘以数字&#xff08;*1&#xff09;&#xff0c;Number()&#xff0c;双波浪号 (~~number)&#xff0c;一元运算符&#xff08;number&#xff…...

android 开发 W/TextToSpeech: speak failed: not bound to TTS engine

问题 笔者使用TTS(TextToSpeech)对于文本内容进行语音播报&#xff0c;控制台报错 android 开发 speak failed:not bound to TTS engine详细问题 笔者核心代码&#xff1a; import android.os.Bundle; import android.speech.tts.TextToSpeech; import android.speech.tts.…...

Java代码审计Shiro反序列化DNS利用链CC利用链AES动态调试

目录 0x00 前言 0x01 Java原生反序列化介绍 0x02 安全问题1&#xff1a;重写toString方法&#xff08;打印对象时触发&#xff09; 0x03 安全问题2&#xff1a;重写readObject&#xff08;反序列化时触发&#xff09; 0x04 测试URLDNS链 0x05 Shiro550生成RememberMe Coo…...

【MySQL】临时变量用法

力扣题 1、题目地址 2388. 将表中的空值更改为前一个值 2、模拟表 表&#xff1a;CoffeeShop Column NameTypeidintdrinkvarchar id 是该表的主键&#xff08;具有唯一值的列&#xff09;。该表中的每一行都显示了订单 id 和所点饮料的名称。一些饮料行为 null。 3、要求…...

Flask框架小程序后端分离开发学习笔记《4》向服务器端发送模拟请求-爬虫

Flask框架小程序后端分离开发学习笔记《4》向服务器端发送模拟请求-爬虫 Flask是使用python的后端&#xff0c;由于小程序需要后端开发&#xff0c;遂学习一下后端开发。 下面代码&#xff0c;是一个比较老的版本了&#xff0c;可以借鉴一下。 import socket import ssldef p…...

Android在系统界面上添加窗口

WindowManager.addView()是Android中的一个方法&#xff0c;用于在屏幕上添加一个窗口。它允许你在应用程序的上下文之外创建一个窗口&#xff0c;并将其显示在其他应用程序或系统界面上。 新建一个自定义View用于显示 class MyView JvmOverloads constructor(context: Contex…...

【正点原子STM32】STM32原理图设计(芯片手册和数据手册、常见引脚类型、最小系统和IO分配)

一、学会查看数据手册 获取芯片数据手册数据手册内容概要芯片的基本参数&#xff08;STM32F103ZET6为例&#xff09;正点原子开发板对应的主控型号和封装STM32F103ZET6引脚分布常见的STM32引脚类型下载接口 二、最小系统 电源电路复位电路BOOT启动电路晶振电路下载调试电路串…...

低代码自动化平台| 游戏规则改变者

自动化测试对于软件开发公司起着非常重要的作用。它在公司及其客户之间建立了对优质产品的信任。此外&#xff0c;它还使软件开发人员更加自信&#xff0c;因为他们可以在其他模块上工作&#xff0c;而不必担心应用程序的任何现有功能是否存在错误。在软件测试中融入自动化是必…...

【分享】MathWorks中国汽车年会:“软件定义汽车”

从软件赋能到软件定义&#xff0c;汽车行业不仅需要解决诸如错误发现滞后带来的高昂代价、功能融合所需的跨学科知识、功能安全与实施成本之间的权衡等老问题&#xff0c;也面临着新的挑战&#xff1a;软件复杂度的不断提升、利用数据驱动创造价值、人工智能的引入和实现、数字…...

RNN:Long Short-term Memory(中)

目录 1 LSTM 的简图 2 LSTM 的整体结构 2.1 结构图 2.2 流程图 3 举个例子 3.1 简单看看 3.2 代入 LSTM 4 Original Network v.s. LSTM 5 细看 LSTM 原视频&#xff1a;李宏毅 2020&#xff1a;Recurrent Neural Network (Part I) 1 LSTM 的简图 LSTM 实际…...

C# .NET读取Excel文件并将数据导出到DataTable、数据库及文本

Excel文件是存储表格数据的普遍格式&#xff0c;因此能够高效地读取和提取信息对于我们来说至关重要。C#语言借助.NET Framework和各种库的广泛功能&#xff0c;能够进行高效的数据操作。利用C#读取Excel文件并将数据写入数据库和DataTable&#xff0c;或者将数据用于其他目的&…...

移动云助力智慧交通数智化升级

智慧交通是在整个交通运输领域充分利用物联网、空间感知、云计算、移动互联网等新一代信息技术&#xff0c;综合运用交通科学、系统方法、人工智能、知识挖掘等理论与工具&#xff0c;以全面感知、深度融合、主动服务、科学决策为目标&#xff0c;推动交通运输更安全、更高效、…...

【Vue技巧】vue 阻止a链接跳转事件的两种方法

ChatGPT4.0国内站点&#xff0c;支持设计稿转代码&#xff1a;https://www.atalk-ai.com/ 在Vue中&#xff0c;如果你想阻止<a>链接的默认跳转事件&#xff0c;你可以使用click.prevent或者click配合.prevent修饰符。这样做可以阻止链接的默认行为&#xff0c;即不会跳转…...

006.Oracle事务处理

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…...

成功解决VScode进入到内置函数中调试

主要有两个关键步骤&#xff0c; 第一步 将launch.json中的"justMyCode"设为false 可通过使用ctrlshiftP搜索lauch.json找到次文件 如果找不到的话&#xff0c;可点击debug按钮&#xff0c;然后找到点击create a launch.json file创建 创建得到的launch.json如下&am…...

29、WEB攻防——通用漏洞SQL注入增删改查盲注延迟布尔报错

文章目录 盲注增删改查 盲注 概念&#xff1a;在注入过程中&#xff0c;获取的数据不能回显至前端页面&#xff0c;此时我们需要利用一些方法进行判断或尝试&#xff0c;这个过程被称为盲注。 解决&#xff1a;常规的联合查询注入不行的情况。 分类&#xff1a; 基于布尔的SQ…...

【设计模式 行为型】策略模式

它允许在运行时根据需要选择算法的行为。该模式通过将算法封装成独立的类&#xff0c;使得它们可以相互替换&#xff0c;而不影响使用算法的客户端代码。 策略模式主要包含以下角色&#xff1a; 环境&#xff08;Context&#xff09;&#xff1a;环境对象持有一个策略对象的引…...

JVM:双亲委派机制类加载器

JVM&#xff1a;双亲委派机制 1. 例子2. 类加载器总结3. 类加载过程4. 双亲委派模型的执行流程&#xff1a;5. 双亲委派模型的好处 1. 例子 Java运行时环境有一个java.lang包&#xff0c;里面有一个ClassLoader类 我们自定义一个String类在java.lang包下&#xff0c;下面的…...

从入门到精通:ThinkPHP6异步请求的全面解析!

在ThinkPHP6中使用异步请求 在Web应用程序的开发中&#xff0c;经常会需要使用异步请求。异步请求能够在后台执行而不干扰页面的其他操作&#xff0c;提高了用户的体验。而在ThinkPHP6框架中&#xff0c;也提供了方便的异步请求方式&#xff0c;本文将详细介绍如何在ThinkPHP6…...

C++写csv文件

C写csv文件 其中有一个点需要注意&#xff0c;csv芬里尔之间要用逗号隔开 p_str_filename "D:\\1.csv"; int writelog(string p_str_filename, double p_double[]) {SYSTEMTIME timeCur;GetLocalTime(&timeCur);char t_logbuffer[1024] { 0 };sprintf(t_logbu…...

将Matlab图窗中的可视化保存为背景透明的矢量图

将matlab绘制的结果复制为矢量图时&#xff0c;去除背景的操作如下&#xff1a; 先打开/绘制图形窗口(不要关闭)在命令行终端输入axis off关闭坐标系继续在命令行终端分别输入&#xff1a; ax gca; copygraphics(ax,ContentType,vector,BackgroundColor,none); 此时&#xff…...

希尔(Shell)排序

文章目录 希尔排序的基本思想本质增量&#xff08;间隔&#xff09;的选取 希尔排序的时间复杂度希尔排序代码实现希尔排序的稳定性 希尔排序的基本思想 将要排序的序列按一定间隔&#xff08;增量&#xff09;分组&#xff0c;将每一组的数据按插入排序进行排序&#xff0c;再…...

【已解决】Qt Creator设计模式被禁用不能点的原因及解决方案

Qt Creator 下载地址&#xff08;含历史版本&#xff09;&#xff1a;https://download.qt.io/official_releases/qtcreator/ 症状 Qt Creator 目前最新版为12.0.1&#xff0c;安装后打开.qml文件发现设计工具图标为禁用状态。 原因及解决方案 根据官网材料&#xff08;Qt C…...

树莓派5 Ubuntu 23.04 安装 DisplayLink 驱动

树莓派5 Ubuntu 23.04 安装 DisplayLink 驱动 PreparationSynaptics APT RepositoryInstall evdiInstall displaylink-driver Preparation lsusb -d 17e9: sudo apt-get install dkmsSynaptics APT Repository wget https://www.synaptics.com/sites/default/files/Ubuntu/po…...

SpringBoot 实现 PDF 添加水印有哪些方案

SpringBoot 实现 PDF 添加水印有哪些方案 方式一&#xff1a;使用 Apache PDFBox 库方式二&#xff1a;使用 iText 库方式三&#xff1a;用 Ghostscript 命令行方式四&#xff1a;Free Spire.PDF for Java方式五&#xff1a;Aspose.PDF for Java 简介 PDF&#xff08;Portable …...

【blender渲染】blender流体模拟基础

各位新年好哇&#xff0c;最近在做demo的时候&#xff0c;为了更好的效果&#xff0c;开始摸索一点离线渲染的东西。像这种后续渲染的处理&#xff0c;由于3ds max是更偏向于建模的dcc&#xff0c;有点不那么好使&#xff08;没有说看不起vray的意思哈&#xff09;。 像在实时…...

小白进阶之字符串处理

#include <cstdio> #include <cstring> int main() {char str[105];int count0,len0;scanf("%s",str);//输入字符lenstrlen(str);//求字符长for(int i0;i<len;i){if(str[i]A)//匹配计数count;}printf("%d",count); }#include <cstdio>…...