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

LR(0)

在这里插入图片描述
LR0就是当我处在自动机为红色这些结束状态的时候,这些红色状态就代表我们识别到了一个句柄,那现在的问题就是识别到了句柄,那要不要对他进行归约?LR0就是我不管当前指针指向的终结符是什么,我都拿它做规约

在这里插入图片描述
这里的二号状态就是,我这个点已经到了最后,那么我这个第二个状态这一行,不管碰到哪个终结符,都用2号产生式规约,而且现在这里还不是LR0文法,因为有一个空有冲突,那能不能消除冲突,那就要加强条件,比如说不能像LR0一样,不管咋样,不管遇到那个终结符我都武断的到了最后就归约。坚强条件让他看看当前的输入,考虑一下能不能做规约。
先看个这个例子,再泛化一下,看能不能实现加强
在这里插入图片描述

按理来说,我们要把T换成E,把T弹出去,E压进来。
在这里插入图片描述
而对于自动机来说,这个过程就是先回到0状态,再压入E,那就走到1状态。这个时候我们就发现问题了。1状态的出边可以是S,可以是+,但是没有星号出边,那就卡在这一步了,因此之前那里就不要做规约。但现在的问题是,我想立马知道不能归约,而不是说我这样操作一下,后面到某一部之后操作不下去,卡住了,才知道不能这么走。
一部分由栈底到栈顶,一部分是当前还未处理的输入流,这两部分一起构成当前的句型,那我们看这个句型。
这个栈顶E,和当前未处理的 *,他们是紧挨着的,我要当前能碰到星号做归约,哪一个必要条件就是星号能跟在E后面。因为你用E换了T,E就是栈顶了,当前面对的是星号。如果我希望做规约的话,那么星号要能紧跟在E后面,这是一个必要条件。必要条件就是要能跟在你要规约的产生式的左部那个非终结符的后面。有没有联想到一个概念,跟在一个非终结符的后面,就是follow集合。
我们现在来算算这个follow集合,没有星号,所以就不要规约在这里插入图片描述

现在抛开例子,我们比较general的来说一下。对于下图这个例子,我们考虑的是,能不能拿这个句柄,在当前看到t的情况下,做规约。如果规约的话,我们看栈的状态
在这里插入图片描述
当前句型由两部分构成,这个句型就要求t能跟在A的后面,这样才能归约在这里插入图片描述
所以我们就得到了这样一个条件。原来对于LR0而言,如果出现这样一个句柄,我不管什么其他条件,我这一行都填s,做规约。而现在我们要这个终结符能跟在非终结符后面才能归约,这样得到的一个语法分析算法叫做Simple SR1,在这样一个条件下我们的分析表就没有冲突了。

在这里插入图片描述
对于这个例子而言,SR1已经没有冲突了,那还没有其他例子能够让他有冲突?也就是有没有非SR1文法
在这里插入图片描述
归约/归约冲突就是可以用两个产生式归约。没有移入/移入冲突,当前移入的符号就一个,没有什么可以冲突的。
接下来我们看一个非SLR1文法,我们看看为什么冲突,为什么SLR解决不了,从而在加强条件得到一种更强大的SR1算法
在这里插入图片描述
图上这个文法表示的是c++中的指针用法。我们现在就看二号状态,有一个移入归约冲突。如果当前面对一个等号的话,那就可以移入,从而转移到状态6;那如果选择归约的话呢,那我们就要看当前面对的这个等号是否能跟在规约的这个产生式的左部的后面,也就是是否 =∈FOLLOW®。然后我们发现的确是属于的,那我们按照之前SLR1的要求,也可以做规约,那么这里就产生了移入归约冲突。我们怎么去解决这个移入归约冲突呢?在这里插入图片描述
虽然我们满足这个条件,那应不应该做规约呢,因为我们之前说过他只是一个必要条件,不是充要条件,所以我们要对这个必要条件再加强一下,我们要先分析一下不能做规约的原因,找到这个原因,我们再加强一下,就得到了更强的规约条件。原因的话我们要看到整个自动机才好分析在这里插入图片描述
我们拿它做规约的话。在自动机上的体现就是把R弹出来,从q2回到q0,把R压进去,那就到了q3状态,我们就看到了q3状态,这里有一个等号,会出现什么情况。我们把栈的情况也画出来看看。现在我们其实是说等号属于FOLLOW(R)不够,那我们回想一下这个FOLLOWR我们之前是怎么算的,我们纯粹是看到了文法的静态文本,是静态分析,我们做所有可能的推导,这个结果是很粗糙的,当你真正的去分析一个输入的时候,你肯定不是无缘无故来到q2的,肯定有一个路径让你来到q2,这是一个动态信息,你的静态FOLLOWR是比较粗糙的,你的路径应该能帮你排除一些终结符,从而让你在某些情况下不归约。分析下面这个栈,我们可以知道R下面一定是个0号状态,这个是静态文本体现不出来的,你必须是跑这个自动机才能体现出来,我在把L弹出去之后,进入到q0,这个q0一定是栈底,不可能是站中间的一个部分,他只可能在最开始的时候进入,因为他没有入边,不可能再次来到这个状态,只有当上千的状态都弹出来,这个状态才会暴露出来,所以只会是栈底,只会是栈底就意味着R后面跟着=,这个部分一定是最前面的,一定是以它打头的
在这里插入图片描述
我们从属于FOLLOWR,我们得出的结论是等号可能出现在R后面,这点是从静态文本得出的。经过我们在自动机的分析,我们得到了更多的动态的信息,我们又能进一步加强这个结论,这个结论是说等号在FOLLOWR后面,那么在满足这个条件的句型中,一定是以R=开头的句型。然而在这里插入图片描述
所以直接做归约是不够的,我们希望的是你能获取一些动态信息,我在这个状态上发现的句柄,他能不能做规约,还和他是怎么从初始状态来到这个状态有关,这一路的信息我们都希望能分析一下,帮助我们在魔偶个状态能不能归约做一个判断。下面就来到我们更强的一个语法分析算法,这个语法分析算法最重要的就是下面这一页。我们也只是尽可能精确,无法做到百分百精确,我们现在一路走来都是从一个什么都不加的规约,到考虑一下follow集合,然后我们现在再把它精确一步,我们只是想做尽可能精确。
假设当前面对的是t,我能不能用A->a这条做规约,我们要进一步加强对t的约束
在这里插入图片描述
那么我们就看这个Ij项之前的项集,其实就是把那个点往前移一位,到了Ii,特殊的情况就是直接回到了I0,当然我们在这里考虑一般一点的情况。除了A->a,我们还要找闭包的情况,那这个图有了,那有没有看到对t更强的要求。我们还要and上什么条件?在这里插入图片描述在这里插入图片描述
那么其实我们就要前一个项集的紧跟着A的那个符号的first,我们的t要在这个first里面。但是其实也可以简化一下,我们属于First(γ)的也一定属于FOLLOW(A),这也说明了我们其实是把原来的条件加强了。
在这里插入图片描述
就是在i这个状态求闭包的时候,我们把伽马这个信息丢失了,我们希望在对某个项求闭包的时候把这个伽马的信息给带上,这样的话,可以把所有的项都带上伽马,这样我们在goto其他状态的时候,也有了这个信息,那么我们现在就来改造一下这个文法。
在这里插入图片描述

那么这个项表示什么呢?我们画一个栈来表示一下,看小数点的位置,在alpha的后面,说明我们当前的栈顶元素是alpha,然后剩下的输入(我们期望的)是β和alpha
在这里插入图片描述
在这里插入图片描述
太神奇了,我其实感觉听老师的就是讲的每一小部分内容都听明白了,但是还是没有串起来,已经开始晕了,结果问了一下ai一下就懂了,谁懂啊。

您说得对,我没有完全理解您的问题。您是在问为什么要限制FIRST(γ),而不直接使用FOLLOW(A)。 分析您的问题:
在LR(0)自动机中,如果项集Ij中包含[A → α·],而在之前的项集Ii中包含[B → β·Aγ]与[A →
·α],按照图中红框标注的内容,归约条件是"只有当α ∈ FIRST(γ)时,才可以进行A → α归约"。
您的疑问是为什么不直接使用FOLLOW(A)集合作为归约条件。
这是一个很好的问题。理论上,FOLLOW(A)确实表示可能在A之后出现的所有终结符,但在这个特定的上下文中:

  1. FIRST(γ)提供了更精确的信息 - 它专门指出在这个特定的产生式[B → β·Aγ]中,A后面实际跟随的是γ,而不是任何可能跟在A后面的符号。(最重要的就是这条了,这里的意思就
    是保存了一路走来的路径信息,因为我们找的是上一个项集的[B → β·Aγ],而不是那个静态的文本)
  2. 使用FIRST(γ)而不是FOLLOW(A)可以减少冲突 - FOLLOW(A)可能包含很多在其他上下文中跟随A的符号,但在当前文法位置不适用
  3. 这种限制确保了归约操作只在γ可能开始的情况下进行,使分析更加精确。 您的直觉是对的,在构造LR(1)或LALR(1)分析器时,我们确实会使用FOLLOW集合信息。但在图中描述的特定情景中,使用FIRST(γ)能提供更精确的上下文相关信息,减少不必要的归约行为。
    在这里插入图片描述
    注意是之前的某个项集
    在这里插入图片描述
    为什么一定要first 伽马,再提醒自己一边,看上图,因为我们在求闭包的时候,丢失了伽马的信息。LR0在做闭包,我们goto的时候伽马的信息也没有带过来。所以接下来我们要改造一下LR0,使其能让我们对某个项求闭包的时候能把伽马这个信息给带上,到其他项集的时候这个信息也一路带过去。
    首先改造LR0,我们就把LR0的项的定义先改一下,原来我们只有前面的部分,现在我们搞个逗号,加一个a,这个a就是我们向前看的符号,其实就可以理解成first伽马。这里其实first伽马是一个集合,那其实有多个这样子的项,我们只是把它拆开了
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
我们还是先来从自动机入手,构造LR1自动机有两个关键的操作,一个是:一个状态内部我们要做闭包操作,经过前面的分析我们知道这是一个关键点在这里插入图片描述
在求绿色这行的,也就是上面这一行的闭包的时候,我们要把β的信息带下来,这是做闭包的一个关键点。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有上面这样一个项,我们现在要对他求闭包,产生式是B->gama,前面的部分放小数点跟LR0是一样的,b是什么呢?可能是一个集合。对于任何满足first这个条件的,我们都写一个项把它放进去。满足b∈βa,这里就是把β和a钉在一起,这是为什么?因为对于扇面这个产生式而言,他的意思是alpha后面可能会出现Bβ,那现在我们要去追踪大B了在这里插入图片描述

相关文章:

LR(0)

LR0就是当我处在自动机为红色这些结束状态的时候,这些红色状态就代表我们识别到了一个句柄,那现在的问题就是识别到了句柄,那要不要对他进行归约?LR0就是我不管当前指针指向的终结符是什么,我都拿它做规约 这里的二号状…...

基于 Python 和 OpenCV 技术的疲劳驾驶检测系统(2.0 全新升级,附源码)

大家好,我是徐师兄,一个有着7年大厂经验的程序员,也是一名热衷于分享干货的技术爱好者。平时我在 CSDN、掘金、华为云、阿里云和 InfoQ 等平台分享我的心得体会。 🍅文末获取源码联系🍅 2025年最全的计算机软件毕业设计…...

Matplotlib库详解

Matplotlib 是 Python 里一个特别常用的绘图库,它能帮你创建各种各样的可视化图形,像折线图、柱状图、散点图等。对于数据可视化、数据分析和科学研究而言,它是非常重要的工具。接下来我会以初学者的视角,为你详细介绍 Matplotlib…...

daz dForce to UE 的原理分析

dForce是物理模拟,不是关键帧动画: dForce是一个物理引擎。当你运行模拟时,Daz Studio会根据你设置的物理属性(如裙子的重量、布料的硬度、摩擦力)、环境因素(如重力、风力)以及与角色的碰撞&am…...

速卖通商品详情API接口:功能、应用与开发指南

前言 在全球跨境电商蓬勃发展的背景下,速卖通(AliExpress)作为阿里巴巴旗下的国际电商平台,凭借丰富的商品种类和庞大的用户群体,成为众多商家和开发者拓展海外市场的首选平台。为了满足商家和开发者对商品数据的深度…...

4月14日星期一今日早报简报微语报早读

4月14日星期一,农历三月十七,早报#微语早读。 1、全国田径大奖赛接力摘金,苏炳添的传奇将延续至全运会; 2、中国红基会:2024年全年总收支12.85亿元; 3、我国2025年电影总票房已突破250亿 位居全球第一&a…...

快速排序(非递归版本)

引言 在排序算法的世界里,快速排序以其高效的性能脱颖而出。它采用分治法的思想,通过选择基准元素将数组分为两部分,递归地对左右两部分进行排序。然而,递归实现的快速排序在处理大规模数据时可能会导致栈溢出的问题。为了解决这…...

Ubuntu20.04 设置开机自启

参考: Ubuntu20.04 设置开机自启_ubuntu进bos系统-CSDN博客...

添加登录和注册功能

先写前端再写后端 前提&#xff1a;ideavue3mybatisspringBoot3前后端分离实现对一张表的增删改查&#xff08;完整代码版&#xff09;-CSDN博客 项目地址 1.添加一个Login.vue视图 <template><div class"login_container"><div class"login…...

弱口令爆破

1.简单介绍 弱口令是指一些简单易猜的密码&#xff0c;可通过社工方式和一些爆破工具进行破解&#xff0c;以下介绍一款爆破工具的用法。burpsuite简称BP&#xff0c;一款可以利用字典破解账户密码的工具。 2.部署网站 可以使用PHPstudy的Apache服务&#xff0c;也可以使用I…...

springboot调用python文件,在ubuntu上部署,踩坑之旅(已部署成功)

项目介绍 springboot 调用python文件&#xff0c;python调用另一个数据文件&#xff0c;然后计算出结果&#xff0c;看似简单&#xff0c;实际上有很多坑&#xff0c;因为涉及到python的三方库&#xff0c;有时候下载不下来&#xff0c;有时候版本不匹配&#xff0c;折腾了好久…...

Android studio消息同步机制:消息本地存储,服务器交互减压

文章目录 后端&#xff08;Flask&#xff09;代码前端&#xff08;Android Studio Java&#xff09;代码 消息同步机制: 手机端可以将消息存储在本地数据库中&#xff0c;减少与服务器的交互压力。同时&#xff0c;通过序列号机制&#xff0c;手机端可以与服务器同步消息&#…...

前端常用组件库全览与推荐

&#x1f4cc; 一、组件库生态全景图 &#x1f680; 二、React 生态组件库推荐 名称简介官网Ant Design阿里出品&#xff0c;企业级 UI 系统&#xff0c;设计规范完整&#xff0c;适合后台系统https://ant.designMaterial UIGoogle Material Design 实现&#xff0c;样式响应式…...

视觉算法+雾炮联动:开创智能降尘新时代

在许多工业环境中&#xff0c;尤其是那些涉及大量物料搬运和处理的地方&#xff0c;如工厂或仓库&#xff0c;扬尘问题是一个普遍存在的挑战。这不仅影响了工作人员的工作条件&#xff0c;还可能构成健康和安全隐患。为了改善这一状况&#xff0c;不少业主采用了物理方法来减少…...

【Pandas】pandas DataFrame items

Pandas2.2 DataFrame Indexing, iteration 方法描述DataFrame.head([n])用于返回 DataFrame 的前几行DataFrame.at快速访问和修改 DataFrame 中单个值的方法DataFrame.iat快速访问和修改 DataFrame 中单个值的方法DataFrame.loc用于基于标签&#xff08;行标签和列标签&#…...

易境通WMS系统代理仓解决方案:让代理仓管理无后顾之忧!

易境通WMS系统代理仓解决方案&#xff1a;让代理仓管理无后顾之忧&#xff01; 对于海外仓企业而言&#xff0c;除了自有仓库外&#xff0c;为了业务发展还会同时代理其他仓库&#xff0c;于是经常会面临主仓代理仓数据同步问题及费用问题。此外&#xff0c;由于个仓库分布较广…...

【智驾中的大模型 -2】VLM 在自动驾驶中的应用

1. 前言 随着端到端 AI 和多模态学习的迅猛发展&#xff0c;VLM&#xff08;视觉-语言模型&#xff09;在自动驾驶领域中的应用正逐渐成为一个备受瞩目的重要研究方向。VLM 凭借其强大的融合能力&#xff0c;将视觉&#xff08;如高清晰度的摄像头图像、精准的雷达数据&#x…...

L1-104 九宫格

L1-104 九宫格 - 团体程序设计天梯赛-练习集 九宫格是一款数字游戏&#xff0c;传说起源于河图洛书&#xff0c;现代数学中称之为三阶幻方。游戏规则是&#xff1a;将一个 99 的正方形区域划分为 9 个 33 的正方形宫位&#xff0c;要求 1 到 9 这九个数字中的每个数字在每一行…...

图像预处理(OpenCV)-part2

4 边缘填充 为什么要填充边缘呢&#xff1f;我们以下图为例。 原图旋转后的图 可以看到&#xff0c;左图在逆时针旋转45度之后原图的四个顶点在右图中已经看不到了&#xff0c;同时&#xff0c;右图的四个顶点区域其实是什么都没有的&#xff0c;因此我们需要对空出来的区域进…...

SpringAI-ollama

SpringAi主要依赖 System Prompt &#xff1a;设置提示词 用来预设角色 ConversationMemory: 对话集 RAG: 检索增强生成 将业务数据存储在向量数据库中&#xff08;做相似性检索&#xff09;通过RAG进行链接 Function Calling 用来调用自己的api <dependencyManagement>&…...

如何在Windows 10系统中查看已连接WiFi密码-亲测可用-优雅草卓伊凡

如何在Windows 10系统中查看已连接WiFi密码-亲测可用-优雅草卓伊凡 通过系统设置查看 点击屏幕左下角的“开始”按钮&#xff0c;打开“设置”应用。在“设置”应用中&#xff0c;点击“网络和 Internet”。在“网络和 Internet”页面中&#xff0c;点击“WLAN”&#xff0c;…...

蓝耘赋能通义万相 2.1:用 C++ 构建高效 AI 视频生成生态

开篇&#xff1a;AI 视频生成新时代的号角 通义万相 2.1&#xff1a;AI 视频生成的领军者 核心技术揭秘 功能特点展示 与其他模型的全面对比 C&#xff1a;高效编程的基石 C 的发展历程与特性 C 在 AI 领域的广泛应用 通义万相 2.1 与 C 的完美融合 融合的意义与价值 …...

tmpfs的监控筛选/dev/shm下的shmem创建

一、背景 在一个比较注重性能的系统上&#xff0c;共享内存的使用肯定非常普遍。为了能更好的了解系统里共享内存的使用&#xff0c;比如创建、删除等操作&#xff0c;我们是可以对其进行监控的。 这篇博客以共享内存的创建监控为例来介绍如何监控共享内存。 这里有一个概念…...

如果你在使用 Ubuntu/Debian:使用 apt 安装 OpenSSH

情况 1&#xff1a;如果你在使用 Ubuntu/Debian&#xff1a; 使用 apt 安装 OpenSSH&#xff1a; bash 复制 sudo apt update sudo apt install openssh-server 完成后检查 SSH 服务状态&#xff1a; bash 复制 sudo systemctl status ssh 情况 2&#xff1a;如果你在使用 Ce…...

设计模式每日硬核训练 Day 11:适配器模式(Adapter Pattern)完整讲解与实战应用

&#x1f504; 回顾 Day 10&#xff1a;模板方法模式小结 在 Day 10 中&#xff0c;我们学习了模板方法模式&#xff1a; 它用于定义流程的“骨架”&#xff0c;将固定步骤放在父类&#xff0c;具体实现交给子类完成。实现了“统一流程 差异化行为”的复用范式。 而今天&am…...

xAI Elasticsearch 集群架构解析:索引数据规模与分片优化实践

Elasticsearch&#xff08;ES&#xff09;作为分布式搜索和分析引擎&#xff0c;是 xAI 构建高性能数据处理系统的基石。xAI 的业务场景&#xff0c;如实时日志分析、模型训练数据检索和用户行为分析&#xff0c;要求 Elasticsearch 集群兼顾高吞吐写入、低延迟查询和动态扩展能…...

[c语言日寄]时间复杂度

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋&#xff1a;这是一个专注于C语言刷题的专栏&#xff0c;精选题目&#xff0c;搭配详细题解、拓展算法。从基础语法到复杂算法&#xff0c;题目涉及的知识点全面覆盖&#xff0c;助力你系统提升。无论你是初学者&#xff0c;还是…...

快速幂(蓝桥杯)

1. 递归实现 递归方法通过将问题分解为更小的子问题来实现。具体步骤如下&#xff1a; 如果指数 b 为 0&#xff0c;返回 1。 如果 b 是偶数&#xff0c;则递归计算 (a^2)b/2。 如果 b 是奇数&#xff0c;则递归计算 a⋅(a^2)(b−1)/2。 伪代码&#xff1a; function fas…...

[Python基础速成]2-模块与包与OOP

上篇➡️[Python基础速成]1-Python规范与核心语法 目录 Python模块创建模块与导入属性__name__dir()函数标准模块 Python包类类的专有方法 对象继承多态 Python模块 Python 中的模块&#xff08;Module&#xff09;是一个包含 Python 定义和语句的文件&#xff0c;文件名就是模…...

Spring AOP 学习笔记 之 常用注解

0 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId><version>3.4.2</version></dependency> 要在springboot中启用AOP&#xff0c;需要引入spring-boot-…...

JVM——运行时数据区

目录 Class装载到JVM的过程 装载&#xff08;load&#xff09;——查找和导入class文件 正文------------------- Run-time Data Areas 运行时数据区 Method Area 方法区 Heap 堆 Java Virtual Machine Stacks&#xff08;Java虚拟机栈&#xff09; The PC Register 程…...

Conda 入门指令教程

Conda 入门指令教程 Conda 是一个强大的包和环境管理工具&#xff0c;广泛应用于数据科学和机器学习项目中。本文将介绍 Conda 的常用指令&#xff0c;帮助你快速上手。 1. Conda 基础操作 查看 Conda 版本 conda --version显示当前安装的 Conda 版本。 更新 Conda conda…...

基于STM32、HAL库的MAX14830总线转UART驱动程序设计

一、简介: MAX14830是一款四通道UART扩展器,通过SPI或I2C接口与微控制器通信。主要特性包括: 4个独立的全双工UART通道 可编程波特率(最高达12Mbps) 每个通道有128字节的发送和接收FIFO 支持硬件和软件流控制 可配置的GPIO引脚 工作电压:1.7V至5.5V 低功耗模式 二、硬件…...

x-cmd install | jellex - 用 Python 语法在终端里玩转 JSON 数据!

目录 核心功能与特点安装优势亮点适用场景 还在为命令行下处理 JSON 数据烦恼吗&#xff1f;jellex 来了&#xff01;它是一款基于终端的交互式 JSON 和 JSON Lines 数据处理工具&#xff0c;让你用熟悉的 Python 语法&#xff0c;轻松过滤、转换和探索 JSON 数据。 核心功能与…...

2025天梯赛 L2专项训练

L2-049 鱼与熊掌 - 团体程序设计天梯赛-练习集 思路就是模拟&#xff0c;正常写就完事 #include<bits/stdc.h> using namespace std; int main() {int a, b;cin >> a >> b;vector<vector<int>>arr(a, vector<int>(0));for (int i 0; i &…...

214、【数组】下一个排列(Python)

题目描述 原题链接&#xff1a;31. 下一个排列 思路 从后往前&#xff0c;找到第一个小于右侧集合的数&#xff0c;从右侧集合中找到一个比该数大的最小的数替换上去。 然后&#xff0c;将右侧集合从小到排列&#xff0c;就为当前排列中&#xff0c;下一个排列的数。 代码实…...

Why does Java‘s hashCode() in String use 31 as a multiplier?

HashCode 为什么使用 31 作为乘数&#xff1f; 1. 固定乘积 31 在这用到了2. 来自 stackoverflow 的回答3. Hash 值碰撞概率统计3.1 读取单词字典表3.2 Hash 计算函数3.3 Hash 碰撞概率计算封装碰撞统计信息的类3.4 针对一组乘数&#xff0c;分别计算碰撞率3.5 碰撞结果可视化3…...

如何将一个8s的接口优化到500ms以下

最近换了个工作&#xff0c;刚入职就接了个活--优化公司自营app的接口性能&#xff0c;提升用户体验。 刚开始还以为是1s优化到500ms这种&#xff0c;或者500ms优化到200ms的接口&#xff0c;感觉还挺有挑战的。下好app体验了一下。好家伙&#xff0c;那个慢已经超过了我的忍耐…...

如何保证本地缓存和redis的一致性

1. Cache Aside Pattern&#xff08;旁路缓存模式&#xff09;​​ ​核心思想​&#xff1a;应用代码直接管理缓存与数据的同步&#xff0c;分为读写两个流程&#xff1a; ​读取数据​&#xff1a; 先查本地缓存&#xff08;如 Guava Cache&#xff09;。若本地未命中&…...

30天学Java第十天——反射机制

反射机制 反射机制是 Java 语言中的一个重要特性&#xff0c;它允许程序在运行时动态地获取类的信息&#xff08;如类的属性、方法和构造器等&#xff09;&#xff0c;并且可以操作这些信息。 反射机制在某些情况下非常有用&#xff0c;例如开发框架、库&#xff0c;或者需要进…...

Nodejs Express框架

参考&#xff1a;Node.js Express 框架 | 菜鸟教程 第一个 Express 框架实例 接下来我们使用 Express 框架来输出 "Hello World"。 以下实例中我们引入了 express 模块&#xff0c;并在客户端发起请求后&#xff0c;响应 "Hello World" 字符串。 创建 e…...

视频设备轨迹回放平台EasyCVR打造货运汽车安全互联网视频监控与管理方案

一、背景介绍 随着互联网发展&#xff0c;货运中介平台大量涌现&#xff0c;行业纠纷也随之增多。尽管当前平台APP具备录音和定位功能&#xff0c;但货物交易流程的全方位监控仍无法实现。主流跟踪定位服务大部分聚焦货物轨迹与车辆定位&#xff0c;尚未实现货物全程可视化监控…...

玩转Docker | 使用Docker部署Docmost文档管理系统

玩转Docker | 使用Docker部署Docmost文档管理系统 前言一、Docmost介绍Docmost 简介Docmost 特点二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署Docmost服务下载镜像编辑部署文件创建容器检查容器状态检查服务端口安全设置四、访问Docmost服务访问Docmos…...

docker方式项目部署(安装容器组件+配置文件导入Nacos+dockerCompose文件创建管理多个容器+私有镜像仓库Harbor)

基于docker的部署 服务器主机ip 192.168.6.131 安装组件 安装redis docker pull redis:7.0.10#在宿主机上/var/lib/docker/volumes/redis-config/_data/目录下创建一个redis配置文件 vim redis.conf#内容如下 appendonly yes #开启持久化 port 6379 #requirepass 1234 #密码…...

基于OpenCV与PyTorch的智能相册分类器全栈实现教程

引言&#xff1a;为什么需要智能相册分类器&#xff1f; 在数字影像爆炸的时代&#xff0c;每个人的相册都存储着数千张未整理的照片。手动分类不仅耗时&#xff0c;还容易遗漏重要瞬间。本文将手把手教你构建一个基于深度学习的智能相册分类系统&#xff0c;实现&#xff1a;…...

C++中string库常用函数超详细解析与深度实践

目录 一、引言 二、基础准备&#xff1a;头文件与命名空间 三、string对象的创建与初始化(基础&#xff09; 3.1 直接初始化 3.2 动态初始化&#xff08;空字符串&#xff09; 3.3 基于字符数组初始化 3.4 重复字符初始化 四、核心函数详解 4.1 字符串长度相关 4.1.1 …...

数据结构(3)

实验步骤&#xff1a; 任务&#xff1a;要求使用自定义函数来实现 输入一段文本&#xff0c;统计每个字符出现的次数&#xff0c;按照字符出现次数从多到少&#xff0c;依次输出&#xff0c;格式如下&#xff1a; 字符1-个数 字符2-个数 ...... 解题思路&#xff1a; 构建结构体…...

【C++教程】使用printf语句实现进制转换

在C语言中&#xff0c;printf 函数可以直接实现部分进制转换功能&#xff0c;通过格式说明符&#xff08;format specifier&#xff09;快速输出不同进制的数值。以下是详细使用方法及示例代码&#xff1a; 一、printf 原生支持的进制转换 1. 十进制、八进制、十六进制转换 #…...

el-dialog设置append-to不生效;el-dialog设置挂载层级

文章目录 一、场景二、注意点1. append-to-body何时为true2.设置层级&#xff0c;遮罩层大小不生效3.相关代码 三、ElMessageBox遮罩层 效果&#xff1a; 一、场景 正常情况下&#xff0c;el-dialog的弹框是挂载在body下的&#xff0c;导致我们会有修改样式或者修改弹框的遮罩…...

互联网软件开发自动化平台 的多维度对比分析,涵盖架构、功能、适用场景、成本等关键指标

以下是关于 互联网软件开发自动化平台 的详细解析&#xff0c;涵盖其核心概念、主流平台的功能、架构设计、适用场景及对比分析&#xff1a; 一、自动化平台的定义与核心目标 自动化平台&#xff08;如CI/CD平台&#xff09;是用于 持续集成&#xff08;CI&#xff09; 和 持续…...