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

GuLi商城-商品服务-API-三级分类-网关统一配置跨域

参考文档:

https://tangzhi.blog.csdn.net/article/details/126754515

https://github.com/OYCodeSite/gulimall-learning/blob/master/docs/%E8%B0%B7%E7%B2%92%E5%95%86%E5%9F%8E%E2%80%94%E5%88%86%E5%B8%83%E5%BC%8F%E5%9F%BA%E7%A1%80.md

谷粒商城-day04-完成递归查询分类和gateway转发实战_谷粒商城中递归算法代码-CSDN博客

谷粒商城: 学习使我快乐---谷粒商城

谷粒商城笔记 + 完整代码 + 课件资料(基础篇)(学习记录)_谷粒商城资料-CSDN博客

在网关服务中配置允许跨域:

package com.nanjing.gulimall.gateway.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;/*** @author zhou* @version 1.0* @date 2024/3/19 9:56 下午*/
@Configuration
public class GulimallCorsConfiguration {@Beanpublic CorsWebFilter corsWebFilter(){UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();CorsConfiguration corsConfiguration = new CorsConfiguration();//1.配置跨域corsConfiguration.addAllowedHeader("*");corsConfiguration.addAllowedMethod("*");corsConfiguration.addAllowedOrigin("*");//corsConfiguration.addAllowedOriginPattern("*");corsConfiguration.setAllowCredentials(true);source.registerCorsConfiguration("/**", corsConfiguration);return new CorsWebFilter(source);}}

注掉人人项目中已经有的跨域设置

启动网关等服务和人人后端项目、前端项目

启动前端项目,报错 

java.lang.IllegalArgumentException: When allowCredentials is true, allowedOrigins cannot contain the special value "*" since that cannot be set on the "Access-Control-Allow-Origin" response header. To allow credentials to a set of origins, list them explicitly or consider using "allowedOriginPatterns" instead.at org.springframework.web.cors.CorsConfiguration.validateAllowCredentials(CorsConfiguration.java:473) ~[spring-web-5.3.18.jar:5.3.18]Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Error has been observed at the following site(s):*__checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain]*__checkpoint ⇢ HTTP OPTIONS "/api/sys/menu/nav?t=1711184769371" [ExceptionHandlingWebHandler]
Original Stack Trace:at org.springframework.web.cors.CorsConfiguration.validateAllowCredentials(CorsConfiguration.java:473) ~[spring-web-5.3.18.jar:5.3.18]at org.springframework.web.cors.CorsConfiguration.checkOrigin(CorsConfiguration.java:577) ~[spring-web-5.3.18.jar:5.3.18]at org.springframework.web.cors.reactive.DefaultCorsProcessor.checkOrigin(DefaultCorsProcessor.java:172) ~[spring-web-5.3.18.jar:5.3.18]at org.springframework.web.cors.reactive.DefaultCorsProcessor.handleInternal(DefaultCorsProcessor.java:117) ~[spring-web-5.3.18.jar:5.3.18]at org.springframework.web.cors.reactive.DefaultCorsProcessor.process(DefaultCorsProcessor.java:96) ~[spring-web-5.3.18.jar:5.3.18]at org.springframework.web.cors.reactive.CorsWebFilter.filter(CorsWebFilter.java:79) ~[spring-web-5.3.18.jar:5.3.18]at org.springframework.web.server.handler.DefaultWebFilterChain.invokeFilter(DefaultWebFilterChain.java:127) ~[spring-web-5.3.18.jar:5.3.18]at org.springframework.web.server.handler.DefaultWebFilterChain.lambda$filter$0(DefaultWebFilterChain.java:121) ~[spring-web-5.3.18.jar:5.3.18]at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:44) [reactor-core-3.4.16.jar:3.4.16]at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.4.16.jar:3.4.16]at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) [reactor-core-3.4.16.jar:3.4.16]at reactor.core.publisher.Mono.subscribe(Mono.java:4400) ~[reactor-core-3.4.16.jar:3.4.16]at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263) ~[reactor-core-3.4.16.jar:3.4.16]at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) ~[reactor-core-3.4.16.jar:3.4.16]at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.4.16.jar:3.4.16]at reactor.core.publisher.MonoDeferContextual.subscribe(MonoDeferContextual.java:55) ~[reactor-core-3.4.16.jar:3.4.16]at reactor.netty.http.server.HttpServer$HttpServerHandle.onStateChange(HttpServer.java:967) ~[reactor-netty-http-1.0.17.jar:1.0.17]at reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:677) ~[reactor-netty-core-1.0.17.jar:1.0.17]at reactor.netty.transport.ServerTransport$ChildObserver.onStateChange(ServerTransport.java:478) ~[reactor-netty-core-1.0.17.jar:1.0.17]at reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:570) ~[reactor-netty-http-1.0.17.jar:1.0.17]at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:93) ~[reactor-netty-core-1.0.17.jar:1.0.17]at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:222) ~[reactor-netty-http-1.0.17.jar:1.0.17]at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327) ~[netty-codec-4.1.75.Final.jar:4.1.75.Final]at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299) ~[netty-codec-4.1.75.Final.jar:4.1.75.Final]at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:722) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:658) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:584) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496) ~[netty-transport-4.1.75.Final.jar:4.1.75.Final]at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) ~[netty-common-4.1.75.Final.jar:4.1.75.Final]at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.75.Final.jar:4.1.75.Final]at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.75.Final.jar:4.1.75.Final]at java.lang.Thread.run(Thread.java:750) ~[na:1.8.0_345]2024-03-23 17:06:09.685 ERROR 25324 --- [oundedElastic-1] i.n.r.d.DnsServerAddressStreamProviders  : Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS.java.lang.reflect.InvocationTargetException: nullat sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_345]at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_345]at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_345]at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_345]at io.netty.resolver.dns.DnsServerAddressStreamProviders.<clinit>(DnsServerAddressStreamProviders.java:64) ~[netty-resolver-dns-4.1.75.Final.jar:4.1.75.Final]at io.netty.resolver.dns.DnsNameResolverBuilder.<init>(DnsNameResolverBuilder.java:60) [netty-resolver-dns-4.1.75.Final.jar:4.1.75.Final]at reactor.netty.transport.NameResolverProvider.newNameResolverGroup(NameResolverProvider.java:479) [reactor-netty-core-1.0.17.jar:1.0.17]at reactor.netty.tcp.TcpResources.getOrCreateDefaultResolver(TcpResources.java:315) [reactor-netty-core-1.0.17.jar:1.0.17]at reactor.netty.http.HttpResources.getOrCreateDefaultResolver(HttpResources.java:152) [reactor-netty-http-1.0.17.jar:1.0.17]at reactor.netty.http.client.HttpClientConfig.defaultAddressResolverGroup(HttpClientConfig.java:383) [reactor-netty-http-1.0.17.jar:1.0.17]at reactor.netty.transport.ClientTransportConfig.resolverInternal(ClientTransportConfig.java:224) [reactor-netty-core-1.0.17.jar:1.0.17]at reactor.netty.http.client.HttpClientConfig.resolverInternal(HttpClientConfig.java:437) [reactor-netty-http-1.0.17.jar:1.0.17]at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect.lambda$subscribe$0(HttpClientConnect.java:264) [reactor-netty-http-1.0.17.jar:1.0.17]at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:57) ~[reactor-core-3.4.16.jar:3.4.16]at reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:77) ~[reactor-core-3.4.16.jar:3.4.16]at reactor.core.publisher.MonoRetryWhen.subscribeOrReturn(MonoRetryWhen.java:46) ~[reactor-core-3.4.16.jar:3.4.16]at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:57) ~[reactor-core-3.4.16.jar:3.4.16]

查询资料:

https://www.cnblogs.com/zym-k/p/15862181.html

解决办法:修改配置

重新测试OK:

相关文章:

GuLi商城-商品服务-API-三级分类-网关统一配置跨域

参考文档&#xff1a; https://tangzhi.blog.csdn.net/article/details/126754515 https://github.com/OYCodeSite/gulimall-learning/blob/master/docs/%E8%B0%B7%E7%B2%92%E5%95%86%E5%9F%8E%E2%80%94%E5%88%86%E5%B8%83%E5%BC%8F%E5%9F%BA%E7%A1%80.md 谷粒商城-day04-完…...

【ai技术】(4):在树莓派上,使用qwen0.5b大模型+chatgptweb,搭建本地大模型聊天环境,速度飞快,非常不错!

1&#xff0c;视频地址 https://www.bilibili.com/video/BV1VK421i7CZ/ 【ai技术】&#xff08;4&#xff09;&#xff1a;在树莓派4上&#xff0c;使用ollama部署qwen0.5b大模型chatgptweb前端界面&#xff0c;搭建本地大模型聊天工具&#xff0c;速度飞快 2&#xff0c;下载…...

深入理解PHP+Redis实现分布式锁的相关问题

概念 PHP使用分布式锁&#xff0c;受语言本身的限制&#xff0c;有一些局限性。 通俗理解单机锁问题&#xff1a;自家的锁锁自家的门&#xff0c;只能保证自家的事&#xff0c;管不了别人家不锁门引发的问题&#xff0c;于是有了分布式锁。分布式锁概念&#xff1a;是针对多个…...

perl:获取同花顺数据--业绩预告

perldoc LWP::UserAgent 如果没有安装&#xff0c;则安装模块&#xff0c;运行 cpanm LWP::UserAgent 。 编写 get_yjyg_10jqka.pl 如下 #!/usr/bin/perl # perl 获取同花顺数据--业绩预告 use LWP::UserAgent; use Encode qw(decode encode); use POSIX; use Data::Dump…...

如何对比引用传参和值传参两者的效率

以值作为参数或者返回值类型&#xff0c;在传参和返回期间&#xff0c;函数不会直接传递实参或者将变量本身直接返回&#xff0c;而是传递实参或者返回变量的一份临时的拷贝&#xff0c;因此用值作为参数或者返回值类型&#xff0c;效率是非常低下的&#xff0c;尤其是当参数或…...

探索软件工程:构建可靠、高效的数字世界

软件工程是一门涵盖了设计、开发、测试、维护和管理软件的学科&#xff0c;它在如今数字化时代的发展中扮演着至关重要的角色。随着科技的不断进步和社会的不断变迁&#xff0c;软件工程的意义也愈发凸显。本文将探索软件工程的重要性、原则和实践&#xff0c;以及其对当今社会…...

超越肉眼:深入计算机视觉的奇妙之旅

揭秘计算机视觉的奥秘&#xff1a;从基础到前沿的探索之旅 引言&#xff1a;一、计算机视觉的基础1. 图像处理基础2. 特征提取与描述3. 基本模式识别 二、机器学习在计算机视觉中的应用1. 深度学习革命2. 迁移学习与多任务学习3. 强化学习与主动学习4. 无监督学习和自监督学习 …...

mac 安装 nvm 【真解决问题】

前提 没有node环境已有git 下载 我用的gitee极速下载 git clone https://gitee.com/mirrors/nvm.git ~/.nvm && cd ~/.nvm && git checkout git describe --abbrev0 --tags配置 1. 配置变量 在用户的目录下新增文件 .zshrc export NVM_DIR"$HOME/…...

【Godot 3.5控件】用TextureProgress制作血条

说明 本文写自2022年11月13日-14日&#xff0c;内容基于Godot3.5。后续可能会进行向4.2版本的转化。 概述 之前基于ProgressBar创建过血条组件。它主要是基于修改StyleBoxFlat&#xff0c;好处是它几乎可以算是矢量的&#xff0c;体积小&#xff0c;所有东西都是样式信息&am…...

第十届蓝桥杯大赛个人赛省赛(软件类)真题- CC++ 研究生组

第十届蓝桥杯大赛个人赛省赛&#xff08;软件类&#xff09;真题- C&C 研究生组-立方和 第十届蓝桥杯大赛个人赛省赛&#xff08;软件类&#xff09;真题- C&C 研究生组-字串数字 第十届蓝桥杯大赛个人赛省赛&#xff08;软件类&#xff09;真题- C&C 研究生组-质数…...

Linux:Gitlab:16.9.2 创建用户及项目仓库基础操作(2)

我在上一章介绍了基本的搭建以及邮箱配置 Linux&#xff1a;Gitlab:16.9.2 (rpm包) 部署及基础操作&#xff08;1&#xff09;-CSDN博客https://blog.csdn.net/w14768855/article/details/136821311?spm1001.2014.3001.5501 本章介绍一下用户的创建&#xff0c;组内设置用户&…...

【数据挖掘】实验5:数据预处理(1)

实验5&#xff1a;数据预处理&#xff08;1&#xff09; 一&#xff1a;实验目的与要求 1&#xff1a;熟悉和掌握数据预处理&#xff0c;学习数据清洗、数据集成、数据变换、数据规约、R语言中主要数据预处理函数。 二&#xff1a;实验内容 【缺失值分析】 第一步&#xff1…...

383.赎金信

给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以&#xff0c;返回 true &#xff1b;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 思路&#xff1a;将magazine 中字…...

Python 3 教程(8)

heisenbug601 601***902@qq.com 参考地址 311 tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字: 代码如下: >>> classmates = (Michael, Bob, Tracy) 现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法…...

Mysql数据库深入理解

目录 一、什么是数据库 二、Mysql基本架构图 1.Mysql客户端/服务器架构 2.客户端与服务器的连接过程 3.服务器处理客户端请求 4.一条查询SQL执行顺序 4.1连接器 4.2查询缓存 4.3解析器 4.4执行器 4.4.1预处理阶段 4.4.2优化阶段 4.4.3执行阶段 5.一条记录如何存…...

android 音频焦点,音频策略梳理

音频焦点和音频策略两个不同的概念&#xff0c;容易搞混 先来看下音频焦点和音频策略直接的区别和联系 音频策略的主要功能是为该音频找到合适的硬件设备播放 1 音频策略流程&#xff1a; (从usage->device) attributesBuilder.setUsage--->audioservice.mCarAudioCont…...

go语言-基础元素与结构的使用

go基础元素与结构的使用&#xff0c;快速上手 编译go文件 编译为可执行文件 go build 文件名.go运行文件 ./文件名输入/输出 引用fmt库&#xff08;关于输入输出的库&#xff09; 输入 scanf按照给定的格式依次读取数据&#xff08;包括非法数据&#xff09;&#xff0c;不…...

【leetcode热题】 二叉树的右视图

给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4]示例 2: 输入: [1,null,3] 输出: [1,3]示例 3: 输入: [] 输出: []解法一 题…...

康奋威科技邀您到场参观2024长三角快递物流展

参展企业介绍 杭州康奋威科技股份有限公司创立于2005年&#xff0c;由国家“万人计划”专家任天挺先生创立并担任法人&#xff0c;是一家专业从事智能装备研发与制造的国家级高新技术企业。专注于自动化控制、机械设计、信息化方面的技术研究&#xff0c;主要为太阳能光伏、智…...

linux centos 安装jenkins,并构建spring boot项目

首先安装jenkins&#xff0c;使用war包安装&#xff0c;比较简单&#xff0c;注意看下载的版本需要的JDK版本&#xff0c;官网下载https://www.jenkins.io/download/ 把下载好的war包放到服务器上&#xff0c;然后运行&#xff0c;注意8080端口的放行 # 前台运行并指定端口 ja…...

雷达信号处理所有公式整理

一、雷达基本功能与距离测量 1.1 目标距离公式 $$R = \frac{ct_0}{2} \tag{1.1}$$ 详细解释: 物理意义: 计算目标距离的基本公式,其中 $t_0$ 是雷达信号从发射到接收的双程传播时间(时延),$c$ 为光速($3 \times 10^8$ m/s)。 推导: 电磁波往返传播距离为 $2R$,传…...

革新性炉石传说插件:如何通过游戏体验增强实现效率提升

革新性炉石传说插件&#xff1a;如何通过游戏体验增强实现效率提升 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod 在快节奏的现代生活中&#xff0c;炉石传说玩家常常面临三大核心痛点&am…...

告别《空洞骑士》模组管理噩梦:Lumafly如何让300+模组配置化繁为简

告别《空洞骑士》模组管理噩梦&#xff1a;Lumafly如何让300模组配置化繁为简 【免费下载链接】Lumafly A cross platform mod manager for Hollow Knight written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/lu/Lumafly 《空洞骑士》作为一款备受欢迎的独…...

OpenClaw多语言支持:Qwen3-14b_int4_awq处理中英文混合任务

OpenClaw多语言支持&#xff1a;Qwen3-14b_int4_awq处理中英文混合任务 1. 为什么需要多语言支持的个人助手 作为一个长期在技术领域工作的开发者&#xff0c;我经常遇到这样的场景&#xff1a;阅读英文技术文档时需要快速提取关键点&#xff0c;编写中文技术博客又需要引用英…...

通义实验室正式开源 Mobile-Agent v3.5 及新一代多平台 GUI Agent 基座模型 GUI-Owl-1.5

做过自动化的人都知道&#xff0c;最让人抓狂的不是功能实现不了&#xff0c;而是流程跑到一半突然卡住——界面变了、元素找不到、验证码弹出来……GUI Agent 在实验室里跑得再顺&#xff0c;一到真实环境就各种翻车。通义实验室这次发布的 Mobile-Agent v3.5&#xff0c;瞄准…...

WarcraftHelper终极指南:快速解决魔兽争霸III 5大兼容性问题

WarcraftHelper终极指南&#xff1a;快速解决魔兽争霸III 5大兼容性问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典魔兽争霸III在新系…...

Youtu-VL-4B-Instruct企业应用:电商商品图OCR识别+视觉问答构建智能客服中台

Youtu-VL-4B-Instruct企业应用&#xff1a;电商商品图OCR识别视觉问答构建智能客服中台 1. 引言&#xff1a;当客服遇到商品图&#xff0c;一场效率革命正在发生 想象一下这个场景&#xff1a;一位顾客在电商平台看中了一款商品&#xff0c;但他对商品详情页上的信息有疑问。…...

seo快速优化软件使用教程_seo快速优化软件有哪些特点

SEO快速优化软件使用教程&#xff1a;SEO快速优化软件有哪些特点 在当今数字化时代&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;已成为网站提升流量、提高曝光度的关键手段。而在SEO领域&#xff0c;使用SEO快速优化软件可以大大提高效率&#xff0c;让你在短时间内看…...

Typescript interface

我来详细展开 接口&#xff08;Interface&#xff09; 的具体用法&#xff0c;配合实际例子&#xff1a;---1. 基础对象接口 // 定义用户接口 interface User {id: number;name: string;email: string; }// 使用接口 const user: User {id: 1,name: "张三",email: &…...

PDF-Extract-Kit-1.0精彩案例:IEEE论文PDF中LaTeX公式无损提取演示

PDF-Extract-Kit-1.0精彩案例&#xff1a;IEEE论文PDF中LaTeX公式无损提取演示 1. 引言&#xff1a;当学术研究遇上PDF公式提取难题 如果你经常需要阅读或处理学术论文&#xff0c;尤其是IEEE这类技术文档&#xff0c;一定遇到过这样的烦恼&#xff1a;看到一篇论文里的公式非…...