4.15redis点评项目下
--->接redis点评项目上
Redis优化秒杀方案
下单流程为:用户请求nginx--->访问tomcat--->查询优惠券--->判断秒杀库存是否足够--->查询订单--->校验是否是一人一单--->扣减库存--->创建订单
以上流程如果要串行执行耗时会很多,所以想要进行异步操作。
想法一:开启多线程,每一个线程处理一个步骤再做统一返回。
缺点:访问人很多的情况下,线程池的线程就会不够。
想法二:可以利用消息队列,先返回能确定完成事务1的信号,然后再直接进行判断事务能否完成.事务1和事务2可以等到所有判断结束后再慢慢进行。
总体思路:将耗时较短的(比如判断库存是否大于0(是的话判断用户是否可以下单)--->在set集合中查找用户是否已有下单记录保证一人一单(否的话将userId和优惠卷存入到redis中,并且返回0))判断逻辑放入redis中,然后及时返回结果给前端,之后判断当前redis返回结果是否为0(是的话表示可以下单)--->把一些优惠劵,用户订单等信息存入异步queue(阻塞队列)中,交给tomcat处理其他的判断逻辑(利用独立线程异步下单)。
基于阻塞队列的异步秒杀存在问题有:内存限制;数据安全。
Redis消息队列
消息队列:存储和管理消息,也被称为消息代理(Message Broker)
最简单的消息队列模型:
生产者--->消息队列--->消费者
使用消息队列的好处是:解耦。
耦合:一个事务必须要等另一个事务空闲才能运行或者传递数据。
秒杀中的消息队列模型对应的是:redis校验下单条件--->消息队列(传递id信息)--->启动一个新线程完成下单。
有一些现成的消息队列如kafka,rabbitmq等,也有一些redis提供的mq方案。
Redis消息队列-基于List实现消息队列
Redis基于List的消息队列的常见指令:
LPUSH | 添加一个或多个元素插入到list的头部 |
LPOP | 从 list 中删除并返回第一个元素 |
RPUSH | 添加字符串元素到对应 list 的尾部 |
RPOP | 从list 的尾部删除元素,并返回删除元素 |
LLEN | 获取list的元素个数 |
LRANGE | 获取列表指定范围内的元素 |
LINDEX | 获取列表中指定位置的元素 |
但是当队列中没有消息时删除操作就会返回null,我们想要实现阻塞并等待消息的效果,就采用BRPOP(阻塞RPOP)或者BLPOP实现阻塞效果。
优点:基于Redis存储,不受限于JVM的内存上限;基于Redis的持久化机制,数据安全性有保证;可以满足消息有序性。
缺点:无法避免消息丢失;只支持单消费者。
小知识点:
Redis的持久化机制:为了保证突然宕机,内存数据不会全部丢失。
Redis提供了三种持久化机制:RDB、AOF和混合持久化。
RDB(Redis Database Snapshot)是通过创建内存数据的快照,将其保存到磁盘中。
AOF(Append Only File)通过记录每个写操作命令来实现持久化。每当执行一个会改变数据的命令时,Redis会将该命令写入AOF文件中。
混合持久化结合了RDB和AOF的优点。它首先以RDB格式保存当前数据状态,然后继续以AOF格式记录新的写操作。
Redis消息队列-基于PubSub的消息队列
消费者可以订阅一个或多个channel,生产者向对应channel发送消息后,所有订阅者都能收到相关消息。
SUBSCRIBE chan:订阅一个或多个频道。
PUBLISH chan msg:向一个频道发送信息。
PSUBSCRIBE pattern:订阅与pattern格式匹配的所有频道。
优点:采用发布订阅模式,支持多生产多消费。
缺点:不支持数据持久化;无法避免消息丢失;消息堆积有上限,超出时数据丢失。
Redis消息队列-基于Stream的消息队列
发送信息的命令:XADD
读取信息的方式之一:XREAD
XREAD特点:消息可回溯;一个消息可以被多个消费者读取;可以阻塞读取;有消息漏读的风险。
如何使用stream消息队列实现异步秒杀:
1.创建一个Stream类型的消息队列。
2.修改之前的秒杀Lua脚本,当用户拥有抢购资格之后(增加将用户id保存到队列id中,然后将优惠券,用户和队列id全部加到队列中)
3.开启一个新线程,获取消息队列中的订单信息,如果为空继续获取直到获取了信息开始解析数据,创建订单并确认信息;如果出现订单信息异常就重新获取、判断、解析、创建、确认信息。
消费者组?
达人探店功能
发布探店笔记
表主要有两部分:
探店笔记表:包含笔记中的标题、文字、图片等。
其他用户对该笔记的评价表。
查看探店笔记
点赞功能
基本要求:
一个用户只能点赞一次;
当用户已点赞,点赞按钮高亮显示;
当用户已点赞,再点一遍点赞按钮就实现取消点赞。
实现思路:采用一个set集合,当用户点赞时,就把用户id存入集合中,然后点赞数加一,如果用户取消点赞,就把用户id从该集合中移除,然后点赞数减一;下次再判断时,只需要判断set集合中有没有用户的id,就能判断该用户是否点赞过。
使用set集合的原因时:需要不重复的数据
点赞排行榜
之前用set是无法排序的,所以换成sortedset就可以实现。
然后只需要在已经排好序的sortset里找到id前五位就能实现点赞排行榜。
好友关注
关注和取消关注
创建一个关注表,粉丝为user_id;关注的博主为follow_user_id;
关注就新增数据,取关就从表中删除数据。
共同关注
实现思路:set集合中有交集并集补集的API,所以只需要把两个人关注的人分别放入两个set集合中,然后通过API查看两个set集合的交集数据。(intersect)
关注推送(feed流)
Feed流效果:系统分析用户想看什么,然后将内容推送给用户,使其节约时间,不用主动寻找。
Feed流的两种常见模式:
1,Timeline:不做内容筛选,简单的按照内容发布时间排序,常用于好友或关注。例如朋友圈。
2,智能排序:利用智能算法屏蔽掉违规的、用户不感兴趣的内容。推送用户感兴趣信息来吸引用户
本项目采用Timeline模式,该模式有三种实现方案:
拉模式:(读扩散)在用户选择读信息时,将关注的人更新的内容全部拉取过来再排序,用户可以一次性看完之后清楚;但是缺点就是,如果用户关注的人太多信息太多,一次性拉取信息对服务器压力巨大。(多个关注的人在发件箱发的在一次读中全拉取过来到用户收件箱)
推模式:(写扩散)关注的人发一条消息这条消息就传递到粉丝收件箱中;时效快不用临时拉取但是如果粉丝太多就会有很多分数据到粉丝,内存压力大。
推拉结合模式:读写混合,兼具推和拉两种模式的优点。如果是粉丝量小的博主就采用推模式,如果是粉丝量大的博主,对于普通粉丝就采用拉模式,对于活跃度高的粉丝就采用推模式。
实现分页查询收邮箱:Feed流数据会不断更新,数据角标也会变化,比如一开始有十个数据,然后每次取固定数量5个数据(10-6),然后有新数据更新,变成了11个数据,然后再取第二页五个数据就变成6-2,而不是5-1.所以传统分页在Feed流中是不适用的。
为了实现分页操作,我们需要两个参数:用来记录上一次查询的最小时间戳lastid(作为下次分页的开始)和偏移量offset(每一页取几个数据)。
先从redis收件箱中按时间戳倒叙查询,跳过前offset个数据实现分页。获得数据之后判断是否为空,不为空更新时间戳,重置偏移量为确保下一次查询。
附近商户
可以采用GEO,先将商家按typeid分类,然后将type作为key,将所有的商家放入到一个GEO集合中。GEO在redis中就一个menber和一个经纬度,我们把x和y轴传入到redis做的经纬度位置去。然后调用GEO的相关函数就可以实现将商家按照距离排序,然后按照之前的方式进行分页,获得商户id,然后根据id拿到商家信息,进行结果的返回等操作。
用户签到
利用BitMap来实现签到,主体思路为:
BitMap(位图):把每一个bit位对应当月的每一天,形成了映射关系。用0和1标示业务状态(1表示已签到,0表示未签到),这种思路就称为位图(BitMap)。
Redis中是利用string类型数据结构实现BitMap,因此最大上限是512M,转换为bit则是 2^32个bit位。
可以将年月作为BitMap的key值,然后对应位置setBit实现签到。
连续签到天数:获得当前这个月的最后一次签到数据,定义一个计数器,然后不停的向前统计,直到获得第一个非0的数字即可,每得到一个非0的数字计数器+1,直到遍历完所有的数据,就可以获得当前月的签到总天数了。
怎么从后往前遍历每个bit位:因为BitMap返回的数据是十进制,让得到的十进制数字和1做与运算,因为1遇见1才是1(计数器++),其他数字都是0,结果数字每与一次就是将结果向右移动一次。
BitMap拓展:解决缓存穿透问题。
如果用户访问了一个数据库不存在并且redis中也不存在的数据,那就相当于进行了缓存穿透,对服务器来说相当于一次攻击。
我们解决方案是:将数据库中的数据所对应的id写入一个list中,用户访问时先在list中判断有没有Id数据,没有直接返回。
但是数据库主键id很长,我们可以采用哈希思想(查找某一个数据是否在里面)
具体思路是:我们创建一个利用string类型数据结构实现的BitMap;在BitMap找到索引为Id%bitmap.size位置,将其设置为1;用户将自己查询信息的id用相同的哈希算法计算,判断那个索引位置的数字是1还是0就可以判断出来数据到底在不在数据库里。
缺点:要考虑哈希冲突产生的误差。
以上内容来自于黑马程序员
后续会继续补一些内容
相关文章:
4.15redis点评项目下
--->接redis点评项目上 Redis优化秒杀方案 下单流程为:用户请求nginx--->访问tomcat--->查询优惠券--->判断秒杀库存是否足够--->查询订单--->校验是否是一人一单--->扣减库存--->创建订单 以上流程如果要串行执行耗时会很多,…...
Web开发-JavaEE应用原生和FastJson反序列化URLDNS链JDBC链Gadget手搓
知识点: 1、安全开发-JavaEE-原生序列化-URLDNS链分析 2、安全开发-JavaEE-FastJson-JdbcRowSetImpl链分析 利用链也叫"gadget chains",我们通常称为gadget: 1、共同条件:实现Serializable或者Externalizable接口&…...
坚持每日Codeforces三题挑战:Day 3 - 题目详解(2024-04-16,难度:900, 1200, 1200)
每天坚持写三道题第三天 (今天写点简单的,剩下去刷力扣了) 今日题目: Problem - B - Codeforces 900 Problem - B - Codeforces 1300 Problem - D - Codeforces 1400 题目一: Problem - B - Codeforces 题目大意: 给你一个数组,每次操…...
MySQL5.7递归查询
向下递归查询 SELECT ID,NAME,PARENT_ID,LEVEL_FROM(SELECT ID AS _IDS,(SELECT ID : GROUP_CONCAT(ID)FROM TREE_TABLE WHERE FIND_IN_SET(PARENT_ID,ID) > 0AND REMOVE N) T1,L : L 1 AS LEVEL_FROM TREE_TABLE,(SELECT ID : start, L: 0) T2WHERE ID IS NOT NULL) T3,…...
半导体设备通信标准—secsgem v0.3.0版本使用说明文档(2)之GEM(SEMI 30)
文章目录 1、处理器1.1、事件 2、GEM 合规性2.1、状态模型2.2、 设备加工状态2.3、 文档2.4、 控制 (作员启动)2.5、 动态事件报告配置2.6、 跟踪数据收集2.7、 报警管理2.8、 远程控制2.9、 设备常量2.10、 工艺配方管理2.11、 物料移动2.12、 设备终端…...
C++异步编程从入门到精通实战:全面指南与实战案例
C异步编程从入门到精通实战:全面指南与实战案例 在当今多核处理器普及的时代,异步编程成为了提升程序性能和响应能力的关键技术。无论是在高频交易系统、实时游戏引擎,还是网络服务器和大型数据处理平台,异步编程都发挥着至关重要…...
驱动开发硬核特训 · Day 13:从 device_create 到 sysfs,设备文件是如何生成的?
🔍 B站相应的视屏教程: 📌 内核:博文视频 - 备树深度解析:理论 实践全指南(含 of 函数与 i.MX8MP 实例) 敬请关注,记得标为原始粉丝。 🔧 📌 本文目标&#…...
肾脏系统触发 “数据包泄漏“ (血尿)与 “元数据校验异常“(蛋白尿)
肾脏系统触发 "数据包泄漏" (血尿)与 "元数据校验异常"(蛋白尿) 用计算机术语来类比。在之前的对话中,肾小球被比作防火墙或过滤器,肾小管则是回收系统。红细胞泄漏通常是因为肾小球的过滤屏障受损,而蛋白尿则可能与肾小…...
密码学(二)流密码
2.1流密码的基本概念 流密码的基本思想是利用密钥 k 产生一个密钥流...,并使用如下规则对明文串 ... 加密:。密钥流由密钥流发生器产生: ,这里是加密器中的记忆元件(存储器)在时刻 i 的状态,…...
Python 趣味学习 -数据类型脱口秀速记公式 [特殊字符]
🎤 Python数据类型脱口秀速记公式 🐍 1️⃣ 四大金刚登场 "Set叔(无序洁癖)、Tuple爷(顽固老头)、List姐(百变女王)、Dict哥(万能钥匙)"2️⃣ 特性对比RAP 🎶 内存/作用域: 全局变量 → 函数内修改 → 可变(mutable)会…...
嵌入式Linux设备使用Go语言快速构建Web服务,实现设备参数配置管理方案探究
本文探讨,利用Go语言及gin框架在嵌入式Linux设备上高效搭建Web服务器,以实现设备参数的网页配置。通过gin框架,我们可以在几分钟内创建一个功能完善的管理界面,方便对诸如集中器,集线器等没有界面的嵌入式设备的管理。…...
波束形成(BF)从算法仿真到工程源码实现-第十二节-总结
一、总结 (1)基于webrtc的非线性波束形成效果较好,复杂度较低,但是波束形成后引入了非线性,导致噪声估计不准确,降噪效果变差。 (2)MVDR使用噪声协方差矩阵对平稳噪声降噪效果比较…...
【AI】IDEA 集成 AI 工具的背景与意义
一、IDEA 集成 AI 工具的背景与意义 随着人工智能技术的迅猛发展,尤其是大语言模型的不断演进,软件开发行业也迎来了智能化变革的浪潮。对于开发者而言,日常工作中面临着诸多挑战,如代码编写的重复性劳动、复杂逻辑的实现、代码质…...
解释原型链的概念,并说明`Object.prototype.__proto__`的值是什么?
原型链是 JavaScript 中实现继承的核心机制。每个对象都有一个指向其原型对象的私有链接(通过 [[Prototype]] 内部属性),而原型对象自身也可能拥有原型,这种链式结构被称为原型链。当访问对象的属性时,若对象自身不存在…...
prototype`和`__proto__`有什么区别?如何手动修改一个对象的原型?
在 JavaScript 中,prototype 和 __proto__ 都与原型链相关,但它们的角色和用途有本质区别: 1. prototype 和 __proto__ 的区别 特性prototype__proto__归属对象仅函数对象拥有(如构造函数)所有对象默认拥有࿰…...
数据挖掘案例-电力负荷预测
今日课程 时间序列预测介绍 电力负荷预测项目开发(开发一个基于时间以及历史负荷信息,预测未来负荷的模型) 一、时间序列预测简介 1.什么是时序预测 时间序列预测是一种根据历史时间序列数据来预测未来值的方法。 任务比较好理解&#…...
SQL Server中OPENJSON + WITH 来解析JSON
一、概念 OPENJSON 是 SQL Server(2016 及更高版本) 中引入的一个表值函数,它将 JSON 文本转换为行和列的关系型数据结构。通过添加 WITH 子句,可以明确指定返回数据的结构和类型,实现 JSON 数据到表格数据的精确映射…...
在 Linux 中判断当前网络类型与网卡类型的实用方法(内外网判断 + 网卡分类)
在日常使用 Linux(例如 Jetson、树莓派、服务器)过程中,我们经常会遇到以下几个问题: 如何知道系统当前是走 有线网络还是无线网络?如何判断是连接了 公网还是内网?169.254.x.x 是什么?为什么我…...
Docker compose入门
目录 Docker Compose简介安装docker compose局限一 适合单机部署,不适合生产环境1. 架构设计目标不同2. 关键功能对比3. 生产环境的核心需求4. 适用场景总结5. 为什么 Compose 不适合生产? Docker Compose 简介 Docker Compose 是一个用于简化多容器Do…...
Docker Search 和 Docker Pull 失效解决
目录 1. Docker Search 1.1 问题描述 1.2 解决方案 1.2.1 方案1 命令行方式 1.2.2 方案2 非命令行方式 2. Docker Pull 2.1 问题描述 2.2 解决方案 2.2.1 替换镜像源 2.2.1.1 编辑镜像源(linux)版 2.2.1.2 编辑镜像源(windows版本…...
Langchain Agent封装的工具
LangChain Agent Tools 参考文档 本文档详细介绍了LangChain框架中可用的Agent工具及其使用方法。这些工具可以赋予AI智能体与外部系统和服务交互的能力,从而构建功能更强大的应用程序。 目录 工具加载方法基础工具文件和系统工具搜索和信息检索工具语言模型增强…...
Windows11删除文件时弹出提示“没有管理员权限”,怎么办?
Windows11删除文件时弹出提示“没有管理员权限”,怎么办? 原因:文件没有读取到完全控制的权限。 解决方法:点击开始-设置-账户,检查Windows是否登录管理员账户,必须登录管理员账户。然后回到电脑桌面&…...
使用HTML + CSS + JS,编写一个台球追分计分器
目录 一.代码 二.效果展示 三.该计分器的优点 一.代码 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…...
CS5346 - CHARTS: Chart with Point / Bar / Line / Box
文章目录 Chart with Point(点图)Scatter Chart(散点图)Pictogram(图标)Connected Scatter PlotConnected Dot plot(连接点图)Bubble Chart(气泡图) Chart wi…...
CNN实现简易教程
一、CNN基础回顾与设计原则 在开始实践之前,我们先快速回顾CNN的核心组件和设计原则,这将帮助你理解后续的代码和设计决策。 1. CNN的核心组件 卷积层(Convolutional Layer):通过卷积核提取局部特征(如边缘、纹理)。主要参数包括: 输入通道数(in_channels):输入数…...
Flask(1): 在windows系统上部署项目1
1 前言 学习python也有段时间了,最近一个小项目要部署,正好把过程写下来。 在程序的结构上我选择了w/s模式,相比于c/s模式,无需考虑客户端的升级;框架我选择了flask,就是冲着轻量级去的,就是插件…...
Zookeeper 可观测性最佳实践
Zookeeper 介绍 ZooKeeper 是一个开源的分布式协调服务,用于管理和协调分布式系统中的节点。它提供了一种高效、可靠的方式来解决分布式系统中的常见问题,如数据同步、配置管理、命名服务和集群管理等。本文介绍通过 DataKit 采集 Zookeeper 指标&#…...
vs2022使用git方法
1、创建git 2、在cmd下执行 git push -f origin master ,会把本地代码全部推送到远程,同时会覆盖远程代码。 3、需要设置【Git全局设置】,修改的代码才会显示可以提交,否则是灰色的不能提交。 4、创建的分支,只要点击…...
【探商宝】跨境关税博弈下的技术破局:从头部平台现象看数字贸易体系重构
2025年4月,某头部跨境电商平台在北美市场上演了一场教科书级的技术突围战:其移动应用在72小时内从应用商店总榜300名开外飙升至第2位,单日下载量暴增近10倍。这场现象级爆发的背后,是关税政策与数字技术深度博弈的集中呈现。作为开…...
DeepSeek是否支持动态模态选择?揭秘多模态AI的智能切换能力
什么是动态模态选择? 想象一下你在和AI助手聊天: “帮我看看这张图片里有什么?”——AI切到视觉模式 “把图片内容写成300字总结”——切回文本模式 “再把它翻译成英文语音”——切到语音模式 这种根据任务需求自动切换处理模式的能力就是…...
Qwen2.5-Omni 部署框架选择指南:PyTorch vs. TensorFlow 深度对比
目录 一、核心结论:优先选择 PyTorch 方案 二、框架技术对比 1. 官方支持度 2. 性能基准测试(RTX 4090) 3. 关键功能支持 三、环境配置详解 1. PyTorch 推荐方案 系统配置 关键依赖 验证CUDA可用性 2. TensorFlow 替代方案&#x…...
全栈工程师角色介绍
全栈工程师(Full Stack Engineer)是一种综合型技术角色,具备从前端到后端、数据库、服务器运维等多领域的开发能力,并能独立完成产品全生命周期的构建与维护。其核心定义可从以下维度展开: 一、核心定义 技术广度与深…...
从零起步的Kaggle竞赛 - BirdCLEF2025
一个优秀的coder,先从CV工程开始...... 首先复制了 LB 0.804- EfficientNet B0 Pytorch Pipeline | Kaggle 这个notebook并尝试提交,ok,0.804 下载了大佬的代码试图在本地修改模型结构并训练。 以下是大佬的notebook中的代码,可…...
基于CNN+ViT的蔬果图像分类实验
本文只是做一个简单融合的实验,没有任何新颖,大家看看就行了。 1.数据集 本文所采用的数据集为Fruit-360 果蔬图像数据集,该数据集由 Horea Mureșan 等人整理并发布于 GitHub(项目地址:Horea94/Fruit-Images-Datase…...
MySQL SQL 执行顺序(理论顺序)
示例 SQL: SELECT name, COUNT(*) FROM users WHERE age > 18 GROUP BY name HAVING COUNT(*) > 1 ORDER BY name ASC LIMIT 10;虽然语句是从 SELECT 写起的,但执行顺序其实是这样的: 执行顺序SQL 子句作用说明①FROM确定查询的…...
用Allan Deviation的方式估计长时间频率偏差
在电路设计中,若需要评估OSC长时间的偏差(秒级别),观测的时间越多,低频噪声1/f上载的越厉害,如何通过PhaseNoise去有效估计长时间的偏差呢?...
无人机避障与目标识别技术分析!
一、无人机避障技术 1. 技术实现方式 传感器融合: 视觉传感(RGB/双目/红外相机):基于SLAM(同步定位与地图构建)实现环境建模,但依赖光照条件。 激光雷达(LiDAR)&…...
2025年渗透测试面试题总结-拷打题库01(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 2025年渗透测试面试题总结-拷打题库01 1. PHP爆绝对路径方法? 2. 渗透工具及最常用工具 3…...
大厂面试:六大排序
前言 本篇博客集中了冒泡,选择,二分插入,快排,归并,堆排,六大排序算法 如果觉得对你有帮助,可以点点关注,点点赞,谢谢你! 1.冒泡排序 //冒泡排序ÿ…...
Python爬虫第15节-2025今日头条街拍美图抓取实战
目录 一、项目背景与概述 二、环境准备与工具配置 2.1 开发环境要求 2.2 辅助工具配置 三、详细抓取流程解析 3.1 页面加载机制分析 3.2 关键请求识别技巧 3.3 参数规律深度分析 四、爬虫代码实现 五、实现关键 六、法律与道德规范 一、项目概述 在当今互联网时代&a…...
std::map gdb调试ok ,直接运行会crash
在使用 std::map 并且在调试模式下没有问题,但在直接运行时出现崩溃(crash)的情况,通常是由于以下几个原因引起的: 未初始化的变量使用:在调试模式下,某些变量可能因为调试工具(如 G…...
【2025年泰迪杯数据挖掘挑战赛】A题 数据分析+问题建模与求解+Python代码直接分享
目录 2025年泰迪杯数据挖掘挑战赛A题完整论文:建模与求解Python代码1问题一的思路与求解1.1 问题一的思路1.1.1对统计数据进行必要说明:1.1.2统计流程:1.1.3特殊情况的考虑: 1.2 问题一的求解1.2.1代码实现1.2.2 问题一结果代码分…...
git在分支上会退到某个指定的commit
1、在idea上先备份好分支(基于现有分支new branch) 2、在gitlab管理端删除现有分支 3、在idea中大卡terminal,执行 git log 查看commit log ,找到要会退到的commit唯一码,然后执行git reset 唯一码 4、查看本地代码状态 git st…...
Cursor入门教程-JetBrains过度向
Cursor使用笔记 **前置:**之前博主使用的是JetBrains的IDE,VSCode使用比较少,所以会尽量朝着JetBrains的使用习惯及样式去调整。 一、设置语言为中文 如果刚上手Cursor,那么肯定对Cursor中的众多选项配置项不熟悉,这…...
MySQL之text字段详细分类说明
在 MySQL 中,TEXT 是用来存储大量文本数据的数据类型。TEXT 类型可以存储非常长的字符串,比 VARCHAR 类型更适合存储大块的文本数据。TEXT 数据类型分为以下几个子类型,每个子类型用于存储不同大小范围的文本数据: TINYTEXT: 可以…...
为什么 Transformer 要使用多头注意力机制?
简而言之,多头注意力机制可以让模型从不同的在空间中并行地捕捉到不同的特征关系,从而更全面,更灵活地理解序列中的信息。 举个例子,如果要看一幅画,就不能简单地只关注例如颜色,还要关注到结构࿰…...
Python项目--基于Python的自然语言处理文本摘要系统
1. 项目概述 自然语言处理(NLP)是人工智能领域中一个重要的研究方向,而文本摘要作为NLP的一个重要应用,在信息爆炸的时代具有重要意义。本项目旨在开发一个基于Python的文本摘要系统,能够自动从长文本中提取关键信息,生成简洁而全…...
【Web APIs】JavaScript 操作多个元素 ③ ( 鼠标经过高亮显示 | onmouseover 事件设置 | onmouseout 事件设置 )
文章目录 一、核心要点解析 - 鼠标经过高亮显示1、案例需求2、获取高亮显示的 列表行3、鼠标经过 onmouseover 事件设置4、鼠标离开 onmouseout 事件设置5、设置高亮方式 二、完整代码示例1、完整代码示例2、执行结果 一、核心要点解析 - 鼠标经过高亮显示 1、案例需求 案例需求…...
金融的未来
1. DeFi的爆发式增长与核心使命 DeFi(去中心化金融)的使命是重构传统金融基础设施,通过区块链技术实现更高的透明度、可访问性、效率、便利性和互操作性。其增长数据印证了这一趋势: TVL(总锁定价值)爆炸…...
[ElasticSearch]Suggest查询建议(自动补全纠错)
概述 搜索一般都会要求具有“搜索推荐”或者叫“搜索补全”的功能,即在用户输入搜索的过程中,进行自动补全或者纠错。以此来提高搜索文档的匹配精准度,进而提升用户的搜索体验,这就是Suggest。 四种Suggester 1 Term Suggester…...