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

RestTemplate Https 证书访问错误

错误信息

resttemplate I/O error on GET request for “https://21.24.6.6:9443/authn-api/v5/oauth/token”: java.security.cert.CertificateException: No subject alternative names present; nested exception is javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present

这个错误是由于 SSL/TLS 握手失败引起的,具体原因是服务器的 SSL 证书无效或不受信任。错误信息 No subject alternative names present 表示服务器的证书中没有包含与请求的域名匹配的主题备用名称(Subject Alternative Name, SAN)。

以下是解决此问题的几种方法:

1. 检查服务器证书

确保服务器的 SSL 证书是有效的,并且包含正确的主机名(即请求的域名)。可以通过以下步骤检查证书:

  • 使用浏览器访问服务器的 URL(例如 https://21.24.6.6:9443),查看证书的详细信息。

  • 确保证书的 Subject Alternative Name (SAN) 包含请求的域名或 IP 地址。

如果证书无效或不匹配,需要联系服务器管理员更新证书。

2. 忽略 SSL 证书验证(仅用于测试环境)

在生产环境中不建议使用此方法,但在测试环境中可以临时忽略 SSL 证书验证。

使用 RestTemplate 忽略 SSL 验证

import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContextBuilder;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;import javax.net.ssl.SSLContext;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;public class RestTemplateExample {public static void main(String[] args) throws Exception {// 创建忽略 SSL 验证的 RestTemplateRestTemplate restTemplate = createRestTemplateWithIgnoreSSL();// 发送请求String url = "https://21.24.6.6:9443/authn-api/v5/oauth/token";String response = restTemplate.getForObject(url, String.class);System.out.println("Response: " + response);}private static RestTemplate createRestTemplateWithIgnoreSSL() throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException {// 创建 SSLContext,忽略证书验证SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, (certificate, authType) -> true) // 信任所有证书.build();// 创建 HttpClientCloseableHttpClient httpClient = HttpClients.custom().setSSLContext(sslContext).setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE) // 忽略主机名验证.build();// 创建 RestTemplateHttpComponentsClientHttpRequestFactory requestFactory =new HttpComponentsClientHttpRequestFactory(httpClient);return new RestTemplate(requestFactory);}
}

3. 使用自定义信任库

如果服务器使用的是自签名证书或私有 CA 签发的证书,可以将证书导入 Java 的信任库(cacerts)或自定义信任库。

步骤:

  1. 导出服务器的证书:

    • 使用浏览器访问服务器的 URL,导出证书(通常为 .crt 或 .pem 格式)。

    • 或者使用 openssl 命令导出证书:

openssl s_client -connect 21.24.6.6:9443 -showcerts </dev/null 2>/dev/null | openssl x509 -outform PEM > server.crt
  1. 将证书导入 Java 信任库:
    • 找到 Java 的默认信任库(通常位于$JAVA_HOME/lib/security/cacerts)。

    • 使用 keytool 将证书导入信任库:

keytool -import -trustcacerts -file server.crt -keystore $JAVA_HOME/lib/security/cacerts -alias server_cert
- 默认密码是 changeit。
  1. 配置 RestTemplate 使用自定义信任库:
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContextBuilder;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;import javax.net.ssl.SSLContext;
import java.io.FileInputStream;
import java.security.KeyStore;public class RestTemplateExample {public static void main(String[] args) throws Exception {// 创建使用自定义信任库的 RestTemplateRestTemplate restTemplate = createRestTemplateWithCustomTrustStore();// 发送请求String url = "https://21.24.6.6:9443/authn-api/v5/oauth/token";String response = restTemplate.getForObject(url, String.class);System.out.println("Response: " + response);}private static RestTemplate createRestTemplateWithCustomTrustStore() throws Exception {// 加载自定义信任库KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());try (FileInputStream fis = new FileInputStream("path/to/truststore.jks")) {trustStore.load(fis, "password".toCharArray());}// 创建 SSLContextSSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(trustStore, null) // 使用自定义信任库.build();// 创建 HttpClientCloseableHttpClient httpClient = HttpClients.custom().setSSLContext(sslContext).build();// 创建 RestTemplateHttpComponentsClientHttpRequestFactory requestFactory =new HttpComponentsClientHttpRequestFactory(httpClient);return new RestTemplate(requestFactory);}
}

4. 检查服务器配置

如果服务器配置了 SNI(Server Name Indication),确保客户端支持 SNI。某些旧版本的 Java 可能不支持 SNI,可以尝试升级 Java 版本。

5. 使用 WebClient 替代 RestTemplate

如果使用的是 Spring WebFlux,可以考虑使用 WebClient,它提供了更灵活的 SSL 配置选项。
示例:

import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;import javax.net.ssl.SSLContext;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;public class WebClientExample {public static void main(String[] args) throws NoSuchAlgorithmException, KeyManagementException {// 创建忽略 SSL 验证的 WebClientWebClient webClient = WebClient.builder().baseUrl("https://21.24.6.6:9443").build();// 发送请求Mono<String> response = webClient.get().uri("/authn-api/v5/oauth/token").retrieve().bodyToMono(String.class);response.subscribe(body -> System.out.println("Response: " + body));}
}

总结

  • 如果服务器证书无效或不匹配,需要更新证书。
  • 在测试环境中可以临时忽略 SSL 验证,但不建议在生产环境中使用。
  • 对于自签名证书或私有 CA 签发的证书,可以将证书导入 Java 信任库或自定义信任库。
  • 如果问题仍然存在,可以尝试使用 WebClient 替代 RestTemplate。

相关文章:

RestTemplate Https 证书访问错误

错误信息 resttemplate I/O error on GET request for “https://21.24.6.6:9443/authn-api/v5/oauth/token”: java.security.cert.CertificateException: No subject alternative names present; nested exception is javax.net.ssl.SSLHandshakeException: java.security.c…...

自动化测试

import os import pyautogui# 将鼠标移动到屏幕坐标 (100, 100) 位置&#xff0c;移动时间为 1 秒 pyautogui.moveTo(100, 100, duration1)# 将鼠标从当前位置向右移动 50 像素&#xff0c;向下移动 50 像素&#xff0c;移动时间为 0.5 秒 pyautogui.moveRel(50, 50, duration0…...

【C编程问题集中营】使用数组指针时容易踩得坑

【C编程问题集中营】使用数组指针时容易踩得坑 文章目录 【C编程问题集中营】使用数组指针时容易踩得坑一、获取数组首地址二、应用场景举例2.1 正常场景2.2 异常场景 三、总结 一、获取数组首地址 一维数组的首地址即数组第一个元素的指针&#xff0c;常用的获取一维数组首地…...

【分布式理论8】分布式调用之:四种IO模型

文章目录 一. 四种IO模型1. 同步阻塞 IO&#xff08;Blocking IO&#xff09;2. 同步非阻塞 IO&#xff08;Non-blocking IO&#xff09;3. IO 多路复用&#xff08;IO Multiplexing&#xff09;4. 异步 IO&#xff08;Asynchronous IO&#xff09;在 RPC 中的作用5. 总结 选择…...

MySQL 库建表数量有限制吗?

问&#xff1a;MySQL 库建表数量有限制吗&#xff1f; 答&#xff1a;无限制 官方文档&#xff1a; MySQL has no limit on the number of databases. The underlying file system may have a limit on the number of directories. MySQL has no limit on the number of tabl…...

使用OpenGL自己定义一个button,响应鼠标消息:掠过、点击、拖动

button需要有一个外观 外观 大小跟随窗口改变&#xff0c;采用纯色背景、纯色文字 文字 大小跟随窗口改变 button需要获得鼠标消息 掠过 鼠标掠过时 button 出现阴影&#xff0c;鼠标掠过后 button 阴影消失 点击 点击后进入相应事件 拖动 改变图标所在位置 需要在g…...

基础入门-网站协议身份鉴权OAuth2安全Token令牌JWT值Authirization标头

知识点&#xff1a; 1、网站协议-http/https安全差异&#xff08;抓包&#xff09; 2、身份鉴权-HTTP头&OAuth2&JWT&Token 一、演示案例-网站协议-http&https-安全测试差异性 1、加密方式 HTTP&#xff1a;使用明文传输&#xff0c;数据在传输过程中可以被…...

【Python】元组

个人主页&#xff1a;GUIQU. 归属专栏&#xff1a;Python 文章目录 1. 元组的本质与基础概念1.1 不可变序列的意义1.2 元组与数学概念的联系 2. 元组的创建方式详解2.1 标准创建形式2.2 单元素元组的特殊处理2.3 使用 tuple() 函数进行转换 3. 元组的基本操作深入剖析3.1 索引操…...

深度求索与DeepSeek-R1:探索人工智能的新纪元

深度求索与DeepSeek-R1&#xff1a;探索人工智能的新纪元 引言 在当今快速发展的科技领域&#xff0c;尤其是人工智能&#xff08;AI&#xff09;方面&#xff0c;每隔一段时间就会出现一款革命性的产品或技术&#xff0c;彻底改变我们对这一领域的认知。2025年初&#xff0c…...

java: framework from BLL、DAL、IDAL、MODEL、Factory using oracle

oracel 21c sql: -- 创建 School 表 CREATE TABLE School (SchoolId CHAR(5) NOT NULL,SchoolName NVARCHAR2(500) NOT NULL,SchoolTelNo VARCHAR2(8) NULL,PRIMARY KEY (SchoolId) );CREATE OR REPLACE PROCEDURE addschool(p_school_id IN CHAR,p_school_name IN NVARCHAR2,p…...

kafka生产端之架构及工作原理

文章目录 整体架构元数据更新 整体架构 消息在真正发往Kafka之前&#xff0c;有可能需要经历拦截器&#xff08;Interceptor&#xff09;、序列化器&#xff08;Serializer&#xff09;和分区器&#xff08;Partitioner&#xff09;等一系列的作用&#xff0c;那么在此之后又会…...

DeepSeek结合Langchain的基本用法

DeepSeek结合Langchain的基本用法 DeepSeek 基于Openai接口规范的Prompt应答Deepseek结合LangchainDeepSeek 基于langchain的结构化返回 DeepSeek 基于Openai接口规范的Prompt应答 首先我们需要先基于pip 安装 pip install openai最开始我们先熟悉如何使用openai的接口规范&a…...

Python与java的区别

一开始接触Python的时候&#xff0c;哔哩视频铺天盖地&#xff0c;看了很多人主讲的&#xff0c;要找适合自己口味的&#xff0c;各种培训机构喜欢在各种平台引流打广告&#xff0c;看了很多家&#xff0c;要么就是一个视频几个小时&#xff0c;长篇大论不讲原理只讲应用&#…...

win10 llamafactory模型微调相关① || Ollama运行微调模型

目录 微调相关 1.微调结果评估 2.模型下载到本地 导出转换&#xff0c;Ollama运行 1.模型转换&#xff08;非常好的教程&#xff01;&#xff09; 2.Ollama 加载GGUF模型文件 微调相关 1.微调结果评估 【06】LLaMA-Factory微调大模型——微调模型评估_llamafactory评估-C…...

全国路网矢量shp数据(分不同类型分省份)

科研练习数据 全国路网矢量shp数据&#xff08;分不同类型分省份&#xff09; 有需要的自取 数据格式&#xff1a;shp&#xff08;线&#xff09; 数据包含类型&#xff1a;城市主干道、城市次干道、城市快速路、城市支路、高速公路、内部道路、人行道、乡村道路、自行车道路…...

RocketMq之Broker注册流程详解

1.前言 前面我也是写过一些关于broker注册到NameServer里的代码分析&#xff0c;但是总感觉写的比较简单&#xff0c;今天这篇的话&#xff0c;算是重新梳理一篇broker注册到NameServer中的代码&#xff0c;感兴趣的可以看下我前面写的几篇博客&#xff1a; 1.NameServer的主…...

关于精度话题的杂谈

“ 浮点值的存储、运算都可能会带来精度损失&#xff0c;了解精度损失背后的机制原因方便我们更好的了解什么情况下会发生精度损失、什么情况下精度损失较大&#xff0c;以及思考怎么避免或减少精度损失。” 01 杂谈 之前在CSDN上写过《关于float浮点值二进制存储和运算精度损失…...

AD域控粗略了解

一、前提 转眼大四&#xff0c;目前已入职上饶一公司从事运维工程师&#xff0c;这与我之前干的开发有着很大的差异&#xff0c;也学习到了许多新的知识。今天就写下我对于运维工作中常用的功能——域控的理解。 二、为什么要有域控&#xff0c;即域控的作用 首先我们必须要…...

emlog最新跨站脚本漏洞(CNVD-2025-01607、CVE-2024-13140)

EMLOG是一款轻量级开源博客和CMS建站系统&#xff0c;速度快、省资源、易上手&#xff0c;适合各种规模的站点搭建&#xff0c;基于PHPMySQL开发。 国家信息安全漏洞共享平台于2025-01-16公布该程序存在跨站脚本漏洞。 漏洞编号&#xff1a;CNVD-2025-01607、CVE-2024-13140 …...

DeepSeek-r1和O1、O3mini谁更强?

DeepSeek-r1和O1、O3mini谁更强&#xff1f; 题目&#xff1a;编写一个 js 程序&#xff0c;显示一个球在旋转的六边形内弹跳。球应该受到重力和摩擦力的影响&#xff0c;并且必须逼真地从旋转的墙壁上弹起 DeepSeek-r1 <!DOCTYPE html> <html> <body> &l…...

代码随想录_二叉树

二叉树 二叉树的递归遍历 144.二叉树的前序遍历145.二叉树的后序遍历94.二叉树的中序遍历 // 前序遍历递归LC144_二叉树的前序遍历 class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> result new ArrayList<Integer&g…...

时序数据库:Influxdb详解

文章目录 一、简介1、简介2、官网 二、部署1、安装2、配置&#xff08;1&#xff09;用户初始化 三、入门&#xff08;Web UI&#xff09;1、加载数据&#xff08;1&#xff09;上传数据文件&#xff08;2&#xff09;代码接入模板 2、管理存储桶&#xff08;1&#xff09;创建…...

内存泄漏及检测办法

什么情况下会产生内存泄漏&#xff1f; 内存泄漏如何检测&#xff1f; 使用 valgrind 对象计数 基本思路&#xff1a; 在对象的构造函数中增加计数&#xff1a;每次创建一个对象时&#xff0c;增加一个计数。在对象的析构函数中减少计数&#xff1a;每次销毁一个对象时&…...

BiGRU双向门控循环单元多变量多步预测,光伏功率预测(Matlab完整源码和数据)

代码地址&#xff1a;BiGRU双向门控循环单元多变量多步预测&#xff0c;光伏功率预测&#xff08;Matlab完整源码和数据) BiGRU双向门控循环单元多变量多步预测&#xff0c;光伏功率预测 一、引言 1.1、研究背景和意义 随着全球对可再生能源需求的不断增长&#xff0c;光伏…...

Leetcode 3448. Count Substrings Divisible By Last Digit

Leetcode 3448. Count Substrings Divisible By Last Digit 1. 解题思路2. 代码实现 题目链接&#xff1a;3448. Count Substrings Divisible By Last Digit 1. 解题思路 这一题的话我们走的是一个累积数组的思路。 首先&#xff0c;我们使用一个cache数组记录下任意段数字…...

青少年编程与数学 02-009 Django 5 Web 编程 03课题、项目结构

青少年编程与数学 02-009 Django 5 Web 编程 03课题、项目结构 一、项目结构项目根目录应用目录其他目录 二、项目设置Django 插件设置项目配置环境变量设置项目目录标记版本控制 三、Django 插件安装 Django 插件配置 Django 插件使用 Django 插件功能 四、扩展插件开发效率插…...

【玩转 Postman 接口测试与开发2_018】第14章:利用 Postman 初探 API 安全测试

《API Testing and Development with Postman》最新第二版封面 文章目录 第十四章 API 安全测试1 OWASP API 安全清单1.1 相关背景1.2 OWASP API 安全清单1.3 认证与授权1.4 破防的对象级授权&#xff08;Broken object-level authorization&#xff09;1.5 破防的属性级授权&a…...

UA-Track:不确定性感知端到端3D多目标跟踪

论文地址&#xff1a;https://arxiv.org/pdf/2406.02147 主页&#xff1a;https://liautoad.github.io/ua-track-website/ 3D多目标跟踪&#xff08;MOT&#xff09;在自动驾驶感知中起着至关重要的作用。最近基于端到端查询的跟踪器可以同时检测和跟踪对象&#xff0c;这在3D …...

Windows下AMD显卡在本地运行大语言模型(deepseek-r1)

Windows下AMD显卡在本地运行大语言模型 本人电脑配置第一步先在官网确认自己的 AMD 显卡是否支持 ROCm下载Ollama安装程序模型下载位置更改下载 ROCmLibs先确认自己显卡的gfx型号下载解压 替换替换rocblas.dll替换library文件夹下的所有 重启Ollama下载模型运行效果 本人电脑配…...

萌新学 Python 之字符串及字符串相关函数

字符串&#xff1a;单引号、双引号、三个单引号、三个双引号 字符串属于不可变的数据类型&#xff0c;一旦被定义&#xff0c;内存地址不变 name 张三 # 字符串赋值给name后&#xff0c;内存地址存储张三&#xff0c;地址不变 username 张三 # 张三去内存中找…...

【鸿蒙开发】第二十四章 AI - Core Speech Kit(基础语音服务)

目录 1 简介 1.1 场景介绍 1.2 约束与限制 2 文本转语音 2.1 场景介绍 2.2 约束与限制 2.3 开发步骤 2.4 设置播报策略 2.4.1 设置单词播报方式 2.4.2 设置数字播报策略 2.4.3 插入静音停顿 2.4.4 指定汉字发音 2.5 开发实例 3 语音识别 3.1 场景介绍 3.2 约束…...

Java | RESTful 接口规范

关注&#xff1a;CodingTechWork 引言 作为一名程序员&#xff0c;制定清晰、一致且高效的 RESTful 接口规范对于团队的开发效率和项目的长期维护至关重要。本文将详细介绍 RESTful 接口的设计理念、请求方法分类、核心规范&#xff0c;以及正确和错误的示例&#xff0c;帮助团…...

shell脚本控制——处理信号

Linux利用信号与系统中的进程进行通信。你可以通过对脚本进行编程&#xff0c;使其在收到特定信号时执行某些命令&#xff0c;从而控制shell脚本的操作。 1.重温Linux信号 Linux系统和应用程序可以产生超过30个信号。下表列出了在shell脚本编程时会遇到的最常见的Linux系统信…...

OpenGL学习笔记(十二):初级光照:投光物/多光源(平行光、点光源、聚光)

文章目录 平行光点光源聚光多光源 现实世界中&#xff0c;我们有很多种类的光照&#xff0c;每种的表现都不同。将光投射(Cast)到物体的光源叫做投光物(Light Caster)。 平行光/定向光(Directional Light)点光源(Point Light)聚光(Spotlight) 平行光 当一个光源处于很远的地…...

redis底层数据结构——整数集合

文章目录 定义内部实现升级升级的好处提升灵活性节约内存 降级总结 定义 整数集合&#xff08;intset&#xff09;是集合键的底层实现之一&#xff0c;当一个集合只包含整数值元素&#xff0c;并且这个集合的元素数量不多时&#xff0c;Redis就会使用整数集合作为集合键的底层…...

w198基于Springboot的智能家居系统

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…...

【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter2-HTML 中的 JavaScript

二、HTML 中的 JavaScript 将 JavaScript 插入 HTML 的主要方法是使用<script>元素。 <script>元素有下列 8 个属性。 async&#xff1a;可选。表示应该立即开始下载脚本&#xff0c;但不能阻止其他页面动作&#xff0c;比如下载资源或等待其他脚本加载。只对外部…...

【5】阿里面试题整理

[1]. 介绍一下ZooKeeper ZooKeeper是一个开源的分布式协调服务&#xff0c;核心功能是通过树形数据模型&#xff08;ZNode&#xff09;和Watch机制&#xff0c;解决分布式系统的一致性问题。 它使用ZAB协议保障数据一致性&#xff0c;典型场景包括分布式锁、配置管理和服务注…...

系统思考—自我超越

“人们往往认为是个人的能力限制了他们&#xff0c;但事实上&#xff0c;是组织的结构和惯性思维限制了他们的潜力。”—彼得圣吉 最近和一家行业隐形冠军交流&#xff0c;他们已经是领域第一&#xff0c;老板却依然要求&#xff1a;核心团队都要自我超越&#xff0c;攻坚克难…...

大模型-ALIGN 详细介绍

ALIGN模型&#xff08;A Large-scale ImaGe and Noisy-text embedding&#xff09;是一种大规模图像和噪声文本嵌入模型&#xff0c;它通过对比学习的方式将图像和文本嵌入到同一个向量空间中&#xff0c;使得匹配的图像-文本对的嵌入向量接近&#xff0c;不匹配的则远离。这种…...

【C++高并发服务器WebServer】-15:poll、epoll详解及实现

本文目录 一、poll二、epoll2.1 相对poll和select的优点2.2 epoll的api2.3 epoll的demo实现2.5 epoll的工作模式 一、poll poll是对select的一个改进&#xff0c;我们先来看看select的缺点。 我们来看看poll的实现。 struct pollfd {int fd; /* 委托内核检测的文件描述符 */s…...

【算法】动态规划专题⑩ —— 混合背包问题 python

目录 前置知识进入正题总结 前置知识 【算法】动态规划专题⑤ —— 0-1背包问题 滚动数组优化 【算法】动态规划专题⑥ —— 完全背包问题 python 【算法】动态规划专题⑦ —— 多重背包问题 二进制分解优化 python 混合背包结合了三种不同类型的背包问题&#xff1a;0/1背包…...

Java高频面试之SE-20

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天又来了&#xff01;哈哈哈哈哈嗝&#x1f436; Java的泛型是什么&#xff1f; Java 泛型&#xff08;Generics&#xff09; 是 Java 5 引入的一项重要特性&#xff0c;用于增强代码的类型安…...

springboot 事务管理

在Spring Boot中&#xff0c;事务管理是通过Spring框架的事务管理模块来实现的。Spring提供了声明式事务管理和编程式事务管理两种方式。通常&#xff0c;我们使用声明式事务管理&#xff0c;因为它更简洁且易于维护。 1. 声明式事务管理 声明式事务管理是通过注解来实现的。…...

opentelemetry-collector 配置elasticsearch

一、修改otelcol-config.yaml receivers:otlp:protocols:grpc:endpoint: 0.0.0.0:4317http:endpoint: 0.0.0.0:4318 exporters:debug:verbosity: detailedotlp/jaeger: # Jaeger supports OTLP directlyendpoint: 192.168.31.161:4317tls:insecure: trueotlphttp/prometheus: …...

IDEA关联Tomcat,部署JavaWeb项目

将IDEA与Tomcat关联 创建JavaWeb项目 创建Demo项目 将Tomcat作为依赖引入到Demo中 添加 Web Application 编写前端和后端代码 配置Tomcat server&#xff0c;并运行...

位图与位运算的深度联系:从图像处理到高效数据结构的C++实现与优化

在学习优选算法课程的时候&#xff0c;博主学习位运算了解到位运算的这个概念&#xff0c;之前没有接触过&#xff0c;就查找了相关的资料&#xff0c;丰富一下自身&#xff0c;当作课外知识来了解一下。 位图&#xff08;Bitmap&#xff09;&#xff1a; 在计算机科学中有两种…...

运维_Mac环境单体服务Docker部署实战手册

Docker部署 本小节&#xff0c;讲解如何将前端 后端项目&#xff0c;使用 Docker 容器&#xff0c;部署到 dev 开发环境下的一台 Mac 电脑上。 1 环境准备 需要安装如下环境&#xff1a; Docker&#xff1a;容器MySQL&#xff1a;数据库Redis&#xff1a;缓存Nginx&#x…...

DeepSeek-V3 论文解读:大语言模型领域的创新先锋与性能强者

论文链接&#xff1a;DeepSeek-V3 Technical Report 目录 一、引言二、模型架构&#xff1a;创新驱动性能提升&#xff08;一&#xff09;基本架构&#xff08;Basic Architecture&#xff09;&#xff08;二&#xff09;多令牌预测&#xff08;Multi-Token Prediction&#xf…...

react使用if判断

1、第一种 function Dade(req:any){console.log(req)if(req.data.id 1){return <span>66666</span>}return <span style{{color:"red"}}>8888</span>}2、使用 {win.map((req,index) > ( <> <Dade data{req}/>{req.id 1 ?…...