Nacos-1.4.6升级2.3.2
一、nacos-2.3.2部署(非升级测试步骤)
1、使用nginx进行代理
# nginx-1.25.5
docker run -d --name nginx-nacos --network nacos --privileged=true -v /data/nacos/nginx.conf:/etc/nginx/conf.d/default.conf -p 8848:8848 nginx:latest
2、创建nacos服务
# nacos-2.3.2
docker run --name nacos-1 --network nacos --ip 172.21.0.3 -d --privileged=true -e NACOS_SERVERS="172.21.0.3:8848 172.21.0.4:8848 172.21.0.5:8848" -v /data/nacos/application.properties:/home/nacos/conf/application.properties -v /data/nacos/cluster.conf:/home/nacos/conf/cluster.conf nacos-server:2.3.2
docker run --name nacos-2 --network nacos --ip 172.21.0.4 -d --privileged=true -e NACOS_SERVERS="172.21.0.3:8848 172.21.0.4:8848 172.21.0.5:8848" -v /data/nacos/application.properties:/home/nacos/conf/application.properties -v /data/nacos/cluster.conf:/home/nacos/conf/cluster.conf nacos-server:2.3.2
docker run --name nacos-3 --network nacos --ip 172.21.0.5 -d --privileged=true -e NACOS_SERVERS="172.21.0.3:8848 172.21.0.4:8848 172.21.0.5:8848" -v /data/nacos/application.properties:/home/nacos/conf/application.properties -v /data/nacos/cluster.conf:/home/nacos/conf/cluster.conf nacos-server:2.3.2
3、数据库使用
# mysql-5.7
docker run -it -p 0.0.0.0:3306:3306 -e MYSQL_ROOT_PASSWORD="root" -d mysql:5.7 --name mysql-5.7
# 数据库信息
主机IP:10.128.12.38
数据库名称:nacos_config_erbao_test
用户:root
密码:root
二、nacos-1.4.6部署
1、创建数据库
# mysql-5.7
# 数据库信息
## 数据库-1
主机IP:10.128.12.38
数据库名称:nacos_config_1.0_test
用户:root
密码:root
## 数据库-2(暂无用到)
主机IP:10.128.12.38
数据库名称:nacos_config_2.0_test
用户:root
密码:root
2、创建nacos服务
# nacos-1.4.6
docker run --name nacos-11 --network nacos --ip 172.21.0.11 -d --privileged=true -e NACOS_SERVERS="172.21.0.11:8848 172.21.0.12:8848 172.21.0.13:8848" -v /data/nacos-1.4.6/nacos-11/bin/:/home/nacos/bin/ -v /data/nacos-1.4.6/nacos-11/conf/:/home/nacos/conf/ -v /data/nacos-1.4.6/nacos-11/target/:/home/nacos/target/ nacos/nacos-server-new:v1.4.6docker run --name nacos-12 --network nacos --ip 172.21.0.12 -d --privileged=true -e NACOS_SERVERS="172.21.0.11:8848 172.21.0.12:8848 172.21.0.13:8848" -v /data/nacos-1.4.6/nacos-12/bin/:/home/nacos/bin/ -v /data/nacos-1.4.6/nacos-12/conf/:/home/nacos/conf/ -v /data/nacos-1.4.6/nacos-12/target/:/home/nacos/target/ nacos/nacos-server-new:v1.4.6docker run --name nacos-13 --network nacos --ip 172.21.0.13 -d --privileged=true -e NACOS_SERVERS="172.21.0.11:8848 172.21.0.12:8848 172.21.0.13:8848" -v /data/nacos-1.4.6/nacos-13/bin/:/home/nacos/bin/ -v /data/nacos-1.4.6/nacos-13/conf/:/home/nacos/conf/ -v /data/nacos-1.4.6/nacos-13/target/:/home/nacos/target/ nacos/nacos-server-new:v1.4.6
3、使用nginx进行代理
# nginx-1.25.5
docker run -d --name nginx-nacos-1.x --network nacos --privileged=true -v /data/nacos-1.4.6/nginx.conf:/etc/nginx/conf.d/default.conf -p 8848:8848 nginx:1.21.5
三、nacos升级至2.0.2
1、备份旧版本应用及数据库
# nacos-11\nacos-12\nacos-13应用配置及文件一致
cp /data/nacos-1.4.6/nacos-11 /data/nacos-1.4.6/nacos-bak
# 数据库可用Navicat备份
2、使用nacos-server-2.0.2配置覆盖1.4.6配置、启动脚本和应用程序
# 升级nacos集群需要每次升级一个服务nacos-11-->nacos-12-->nacos-13
# 覆盖bin、conf、target三个文件夹中文件
# 修改conf文件夹下的application.properties文件,数据库使用同一个数据库,修改鉴权开启
# nacos-1.x升级nacos-2.x需要开启双写,在新的application.properties文件添加nacos.core.support.upgrade.from.1x=true
# 依次升级nacos-11、nacos-12、nacos-13# 鉴权开启使用
nacos.core.auth.enabled=true
nacos.core.auth.caching.enabled=true
nacos.core.auth.enable.userAgentAuthWhite=false
# 默认值
nacos.core.auth.server.identity.key=serverIdentity
# 默认值
nacos.core.auth.server.identity.value=security
nacos.core.auth.plugin.nacos.token.cache.enable=false
nacos.core.auth.plugin.nacos.token.expire.seconds=18000
# 默认值
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
3、升级注意事项
# 每次操作完成后,可查看naming-server.log文件,可以看到有upgrade check result false 以及 Check whether close double write等日志信息。
# 所有节点升级完成后,可以从logs/naming-server.log日志中观察到upgrade check result true及Upgrade to 2.0.X。
4、关闭双写
# 集群升级完成后,无报错或无其他问题后可以关闭双写功能
# 获取accessToken
curl -X POST '172.21.0.11:8848/nacos/v1/auth/login' -d 'username=nacos&password=Secu!Js@L#20200202'
# 关闭双写
curl -X PUT '172.21.0.11:8848/nacos/v1/ns/operator/switches?entry=doubleWriteEnabled&value=false&accessToken=eyJhbGciOiJIUzM4NCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTczMDMxODgxNH0.dmgNBX4-rxC9X4eZtrdGDLJdof8LRFYEmaGw2-pXluhI8tMRMLmt2RBEiphS17Gt'
# 成功关闭后,可以从logs/naming-server.log日志中观察到Disable Double write, stop and clean v1.x cache and features字样,说明关闭双写。
四、nacos-2.0.2升级至2.3.2
1、修改token过期时间(根据实际情况配置)
# 修改token.secret.key并重启Nacos Server端后,来自Nacos Client的请求将会因无效token被拒绝。
# 直到客户端到达旧token的TTL时间后,才会重新去获取新token。
# 需要将token过期时间缩短,并等待原来的token过期。
nacos.core.auth.plugin.nacos.token.expire.seconds=5
# 等待原有token过期时间,再改回18000秒
nacos.core.auth.plugin.nacos.token.expire.seconds=18000
2、备份
# 备份旧的nacos
tar zcf nacos-1.4.6-2.0.2.tar.gz nacos-11
3、修改数据库
# nacos版本升级之后,mysql数据架构发生改变,需要添加数据结构
ALTER TABLE config_info ADD encrypted_data_key TEXT NOT NULL COMMENT '秘钥';
ALTER TABLE config_info_beta ADD encrypted_data_key TEXT NOT NULL COMMENT '秘钥';
ALTER TABLE his_config_info ADD encrypted_data_key TEXT NOT NULL COMMENT '秘钥';
4、更替应用软件
# 停止服务
docker stop nacos-11 nacos-12 nacos-13
# 使用nacos-server-2.3.2版本
cp /data/nacos-1.4.6/nacos-2.3.2/target/nacos-server.jar /data/nacos-1.4.6/nacos-11/target/nacos-server.jar
cp /data/nacos-1.4.6/nacos-2.3.2/target/nacos-server.jar /data/nacos-1.4.6/nacos-12/target/nacos-server.jar
cp /data/nacos-1.4.6/nacos-2.3.2/target/nacos-server.jar /data/nacos-1.4.6/nacos-13/target/nacos-server.jar
cp /data/nacos-1.4.6/nacos-2.3.2/bin/startup.sh /data/nacos-1.4.6/nacos-11/bin/startup.sh
cp /data/nacos-1.4.6/nacos-2.3.2/bin/startup.sh /data/nacos-1.4.6/nacos-12/bin/startup.sh
cp /data/nacos-1.4.6/nacos-2.3.2/bin/startup.sh /data/nacos-1.4.6/nacos-13/bin/startup.sh
# 修改配置文件
# application.properties
sed -i 's/spring.datasource.platform/# spring.datasource.platform/g' /data/nacos-1.4.6/nacos-11/conf/application.properties
echo "server.tomcat.accesslog.rotate=true" >> /data/nacos-1.4.6/nacos-11/conf/application.properties
echo "nacos.config.push.maxRetryTime=50" >> /data/nacos-1.4.6/nacos-11/conf/application.properties
echo "server.tomcat.accesslog.file-date-format=.yyyy-MM-dd-HH" >> /data/nacos-1.4.6/nacos-11/conf/application.properties
echo "nacos.core.auth.plugin.nacos.token.cache.enable=false" >> /data/nacos-1.4.6/nacos-11/conf/application.properties
echo "spring.sql.init.platform=mysql" >> /data/nacos-1.4.6/nacos-11/conf/application.properties
# 同步集群内其他机器
cp /data/nacos-1.4.6/nacos-11/conf/application.properties /data/nacos-1.4.6/nacos-12/conf/application.properties
cp /data/nacos-1.4.6/nacos-11/conf/application.properties /data/nacos-1.4.6/nacos-13/conf/application.properties
5、服务启动
docker start nacos-11 nacos-12 nacos-13
6、注意事项
# 1、服务重启之后,浏览器访问需要清除缓存之后进行访问,否则会出现以下报错
## org.springframework.web.bind.UnsatisfiedServletRequestParameterException: Parameter conditions "search=accurate" OR "search=blur" not met for actual request parameters
# 2、控制台集群节点出现errMsg错误,代码1014,原因是集群节点同步问题,需要删除有问题节点的data/protocol内文件,手动删除后,该节点会从leader上再取数据,删除后重启服务
## "errMsg":"Error [type=ERROR_TYPE_LOG, status=Status[EIO<1014>: Failed operation in LogStorage]]"
附录一
nacos镜像创建
Dockerfile
FROM jdk:1.8.0_201# 设置环境变量
ENV MODE="cluster" \PREFER_HOST_MODE="ip"\BASE_DIR="/home/nacos" \CLASSPATH=".:/home/nacos/conf:$CLASSPATH" \CLUSTER_CONF="/home/nacos/conf/cluster.conf" \FUNCTION_MODE="all" \JAVA_HOME="/usr/local/jdk1.8.0_201/" \NACOS_USER="nacos" \JAVA="/usr/local/jdk1.8.0_201/bin/java" \JVM_XMS="1g" \JVM_XMX="1g" \JVM_XMN="512m" \JVM_MS="128m" \JVM_MMS="320m" \NACOS_DEBUG="n" \TOMCAT_ACCESSLOG_ENABLED="false" \TIME_ZONE="Asia/Shanghai"ARG NACOS_VERSION=1.4.6
ARG HOT_FIX_FLAG=""ADD nacos-server-1.4.6.tar.gz /home/WORKDIR $BASE_DIRADD docker-startup.sh bin/docker-startup.sh# 设置启动日志目录
RUN mkdir -p logs \&& touch logs/start.out \&& ln -sf /dev/stdout logs/start.out \&& ln -sf /dev/stderr logs/start.out \&& chmod +x bin/docker-startup.shEXPOSE 8848
ENTRYPOINT ["sh","bin/docker-startup.sh"]
docker-startup.sh
#!/bin/bash
# Copyright 1999-2018 Alibaba Group Holding Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set -x
export CUSTOM_SEARCH_NAMES="application"
export CUSTOM_SEARCH_LOCATIONS=file:${BASE_DIR}/conf/
export MEMBER_LIST=""
PLUGINS_DIR="/home/nacos/plugins/peer-finder"
function print_servers() {if [[ ! -d "${PLUGINS_DIR}" ]]; thenecho "" >"$CLUSTER_CONF"for server in ${NACOS_SERVERS}; doecho "$server" >>"$CLUSTER_CONF"doneelsebash $PLUGINS_DIR/plugin.shsleep 30fi
}
#===========================================================================================
# JVM Configuration
#===========================================================================================
JAVA_OPT="${JAVA_OPT} -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 "
if [[ "${MODE}" == "standalone" ]]; thenJAVA_OPT="${JAVA_OPT} -Xms${JVM_XMS} -Xmx${JVM_XMX} -Xmn${JVM_XMN}"JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
elseif [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; thenJAVA_OPT="${JAVA_OPT} -DembeddedStorage=true"fiJAVA_OPT="${JAVA_OPT} -server -Xms${JVM_XMS} -Xmx${JVM_XMX} -Xmn${JVM_XMN} -XX:MetaspaceSize=${JVM_MS} -XX:MaxMetaspaceSize=${JVM_MMS}"if [[ "${NACOS_DEBUG}" == "y" ]]; thenJAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"fiJAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"print_servers
fi#===========================================================================================
# Setting system properties
#===========================================================================================
# set mode that Nacos Server function of split
if [[ "${FUNCTION_MODE}" == "config" ]]; thenJAVA_OPT="${JAVA_OPT} -Dnacos.functionMode=config"
elif [[ "${FUNCTION_MODE}" == "naming" ]]; thenJAVA_OPT="${JAVA_OPT} -Dnacos.functionMode=naming"
fi
# set nacos server ip
if [[ ! -z "${NACOS_SERVER_IP}" ]]; thenJAVA_OPT="${JAVA_OPT} -Dnacos.server.ip=${NACOS_SERVER_IP}"
fiif [[ ! -z "${USE_ONLY_SITE_INTERFACES}" ]]; thenJAVA_OPT="${JAVA_OPT} -Dnacos.inetutils.use-only-site-local-interfaces=${USE_ONLY_SITE_INTERFACES}"
fiif [[ ! -z "${PREFERRED_NETWORKS}" ]]; thenJAVA_OPT="${JAVA_OPT} -Dnacos.inetutils.preferred-networks=${PREFERRED_NETWORKS}"
fiif [[ ! -z "${IGNORED_INTERFACES}" ]]; thenJAVA_OPT="${JAVA_OPT} -Dnacos.inetutils.ignored-interfaces=${IGNORED_INTERFACES}"
fi### If turn on auth system:
if [[ ! -z "${NACOS_AUTH_ENABLE}" ]]; thenJAVA_OPT="${JAVA_OPT} -Dnacos.core.auth.enabled=${NACOS_AUTH_ENABLE}"
fiif [[ "${PREFER_HOST_MODE}" == "hostname" ]]; thenJAVA_OPT="${JAVA_OPT} -Dnacos.preferHostnameOverIp=true"
fi
JAVA_OPT="${JAVA_OPT} -Dnacos.member.list=${MEMBER_LIST}"JAVA_MAJOR_VERSION=$($JAVA -version 2>&1 | sed -E -n 's/.* version "([0-9]*).*$/\1/p')
if [[ "$JAVA_MAJOR_VERSION" -ge "9" ]]; thenJAVA_OPT="${JAVA_OPT} -Xlog:gc*:file=${BASE_DIR}/logs/nacos_gc.log:time,tags:filecount=10,filesize=102400"
elseJAVA_OPT_EXT_FIX="-Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext"JAVA_OPT="${JAVA_OPT} -Xloggc:${BASE_DIR}/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M"
fiJAVA_OPT="${JAVA_OPT} -Dloader.path=${BASE_DIR}/plugins,${BASE_DIR}/plugins/health,${BASE_DIR}/plugins/cmdb,${BASE_DIR}/plugins/selector"
JAVA_OPT="${JAVA_OPT} -Dnacos.home=${BASE_DIR}"
JAVA_OPT="${JAVA_OPT} -jar ${BASE_DIR}/target/nacos-server.jar"
JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"
JAVA_OPT="${JAVA_OPT} --spring.config.additional-location=${CUSTOM_SEARCH_LOCATIONS}"
JAVA_OPT="${JAVA_OPT} --spring.config.name=${CUSTOM_SEARCH_NAMES}"
JAVA_OPT="${JAVA_OPT} --logging.config=${BASE_DIR}/conf/nacos-logback.xml"
JAVA_OPT="${JAVA_OPT} --server.max-http-header-size=524288"echo "Nacos is starting, you can docker logs your container"
exec $JAVA ${JAVA_OPT}
相关文章:
Nacos-1.4.6升级2.3.2
一、nacos-2.3.2部署(非升级测试步骤) 1、使用nginx进行代理 # nginx-1.25.5 docker run -d --name nginx-nacos --network nacos --privilegedtrue -v /data/nacos/nginx.conf:/etc/nginx/conf.d/default.conf -p 8848:8848 nginx:latest2、创建nacos服务 # nacos-2.3.2 do…...
东识集中文印管理系统|DW-S408系统的主要功能
集中文印管理系统以涉密文件集中管理为目标,实现办公文件汇总、打印信息生成、文件打印、文件追溯等功能,将用户与打印设备分离,有效防止纸媒泄密。 集中文印管理系统是由客户端和服务端两部分构成,客户端能够将打印文件上传至服…...
text-foreground讲解
1、fore单词讲解 fore 是 “forward” 或 “front” 的简写,意思是"前面的"、“前景的”。 一些常见的相关英文词: foreground fore ground,意思是"前景" background back ground,意思是"背景&qu…...
数字IC后端实现之Innovus Place跑完density爆涨案例分析
下图所示为咱们社区a7core后端训练营学员的floorplan。 数字IC后端实现 | Innovus各个阶段常用命令汇总 该学员跑placement前density是59.467%,但跑完place后density飙升到87.68%。 仔细查看place过程中的log就可以发现Density一路飙升! 数字IC后端物…...
【牛客刷题实战】二叉树遍历
大家好,我是小卡皮巴拉 文章目录 目录 牛客题目: 二叉树遍历 题目描述 输入描述: 输出描述: 示例1 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码(C语言) 兄弟们共勉 !&…...
消息队列mq有哪些缺点?
大家好,我是锋哥。今天分享关于【消息队列mq有哪些缺点?】面试题?希望对大家有帮助; 消息队列mq有哪些缺点? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 消息队列(MQ)的缺点 消…...
【CENet】多模态情感分析的跨模态增强网络
在MSA领域,文本的准确度远远高于音频和视觉,如果文本能达到90%,那么音频和视觉的准确度只有60%~80%,但是过往研究很少针对情感分析的背景下去提高音频和视频的准确度。 abstract: 多模态情感分析(MSA&…...
动态代理:面向接口编程,屏蔽RPC处理过程
RPC远程调用 使用 RPC 时,一般的做法是先找服务提供方要接口,通过 Maven把接口依赖到项目中。在编写业务逻辑的时候,如果要调用提供方的接口,只需要通过依赖注入的方式把接口注入到项目中,然后在代码里面直接调用接口…...
HTTP 405 Method Not Allowed:解析与解决
HTTP 405 Method Not Allowed:解析与解决 引言 在Web开发中,HTTP状态码是服务器与客户端之间通信的重要组成部分。当我们使用Python进行网络请求时,经常会遇到各种HTTP状态码。其中,HTTP 405 “Method Not Allowed” 错误是一个…...
推荐一款CAD/CAM设计辅助工具:Mastercam
Mastercam是一款非常好用的软件,我们的这款软件是由美国CNC软件公司开发,集平面制图、三维设计、曲面设计、数 控编程、刀具处理等多项强大功能于一体。软件的使用过程具有非常直观的特点,用户可以很方便地对自己的作品进行设计。 Mastercam不…...
位运算刷题记录
1. 使两个整数相等的位更改次数 3226. 使两个整数相等的位更改次数 给你两个正整数 n 和 k。 你可以选择 n 的 二进制表示 中任意一个值为 1 的位,并将其改为 0。 返回使得 n 等于 k 所需要的更改次数。如果无法实现,返回 -1。 class Solution {pub…...
爬虫技术——小白入狱案例
知孤云出岫 目录 1. 案例概述2. 案例需求分析3. 实现步骤Step 1: 环境准备Step 2: 分析百度图片URL请求规律Step 3: 编写爬虫代码代码解析 4. 运行代码5. 注意事项6. 案例总结 要实现大批量爬取百度图片,可以使用Python编写一个网络爬虫,通过发送HTTP请求…...
vue 果蔬识别系统百度AI识别vue+springboot java开发、elementui+ echarts+ vant开发
编号:R03-果蔬识别系统 简介:vuespringboot百度AI实现的果蔬识别系统 版本:2025版 视频介绍: vuespringboot百度AI实现的果蔬识别系统前后端java开发,百度识别,带H5移动端,mysql数据库可视化 1 …...
全新更新!Fastreport.NET 2025.1版本发布,提升报告开发体验
在.NET 2025.1版本中,我们带来了巨大的期待功能,进一步简化了报告模板的开发过程。新功能包括通过添加链接报告页面、异步报告准备、HTML段落旋转、代码文本编辑器中的文本搜索、WebReport图像导出等,大幅提升用户体验。 FastReport .NET 是…...
信息学科平台系统设计与实现:Spring Boot技术手册
5系统详细实现 5.1 用户信息管理 基于保密信息学科平台系统的系统管理员可以对用户信息查询。具体界面的展示如图5.1所示。 图5.1 用户信息管理界面 5.2 教师信息管理 管理员可以对教师信息进行查下和删除。具体界面如图5.2所示。 图5.2 教师信息界面 5.3 学科动态管理 管理…...
conda下jupyterlab安装问题以及交互绘图问题记录
安装 1. 直接conda install jupyterlab就好,只要在base环境下安装就行,可以在任意环境下执行jupyter lab启动。 2. 打开jupyter lab后显示Could not determine jupyterlab build status without nodejs,可以执行conda install nodejs安装no…...
尚硅谷react教程_扩展_setState更新状态的2种写法
1.setState setState更新状态的2种写法(1).setState(stateChange,[callback])----对象式的setState1.stateChange为状态改变对象(该对象可以体现出状态的更改)2.callback是可选的回调函数,它在状态更新完毕、界面也更新…...
C语言编写的自动取款机模拟程序
#include〈stdio。h> #include<string。h> #include <stdio.h> #include〈stdlib.h〉 #include〈direct.h〉 #include<io.h> #include 〈errno。h> /********************************************************…...
【常用数据结构】开发中常用的数据结构?
开发中常用的数据结构包括数组、链表、栈、队列、树、图、堆和散列表(哈希表)。这些数据结构在软件开发中有着广泛的应用,并且各自具有独特的特点和用途。 数组 数组是最基本的数据结构之一,用于在内存中连续存储多个元素。数…...
OCC 点云
OCC的基础知识可能还是要系统学习一下,部分导入的模型面类型是很多面都是GeomAbs_BSplineSurface,最终获取参数都要拟合一下,拟合后的生成的面对象没有大小,比如平面只有矢量(大小没有思路) 圆柱拟合面没有…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
