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,最终获取参数都要拟合一下,拟合后的生成的面对象没有大小,比如平面只有矢量(大小没有思路) 圆柱拟合面没有…...
Python自动化脚本:从零构建《三国杀》钓鱼辅助
1. 环境准备:搭建自动化钓鱼的基石 想要实现《三国杀》钓鱼自动化,首先需要搭建一个稳定的开发环境。我推荐使用雷电模拟器9作为游戏运行平台,它不仅对Android游戏兼容性好,而且提供了丰富的调试功能。记得在安装时选择非vivo手机…...
C++的std--allocator_traits分配器特性与自定义内存管理的适配
C标准库中的内存管理一直是个既基础又复杂的主题。std::allocator_traits作为C11引入的分配器特性模板,为自定义内存管理提供了统一的适配接口,让开发者能在不重写整套分配逻辑的情况下,灵活扩展内存管理策略。无论是实现高性能内存池&#x…...
TDengine IDMP 工业数据建模 —— 数据标准化
3.4 数据标准化 工业环境通常从多个数据源采集数据,这些数据往往命名不一致、物理单位各异、数据结构不同。如果没有标准化,跨资产分析、AI 生成洞察和数据汇聚将变得不可靠甚至无法实现。TDengine IDMP 提供了多种机制,对整个资产模型中的数…...
Wan2.2-I2V-A14B企业应用:法律文书解读AI动画视频生成系统
Wan2.2-I2V-A14B企业应用:法律文书解读AI动画视频生成系统 1. 系统概述与核心价值 法律行业每天需要处理大量文书材料,传统的人工解读和可视化呈现方式效率低下且成本高昂。Wan2.2-I2V-A14B法律文书解读AI动画视频生成系统正是为解决这一痛点而生。 这…...
R包版本冲突别头疼:手把手教你降级igraph 2.1.1,解决monocle3的orderCells报错
R包版本冲突实战指南:精准降级igraph解决monocle3依赖问题 当你满怀期待地安装好monocle3准备进行单细胞拟时序分析时,突然弹出的nei() was deprecated in igraph 2.1.0报错就像一盆冷水浇灭了热情。这种R包版本冲突在生物信息学分析中屡见不鲜ÿ…...
ROBLEX嵌入式驱动库技术解析与机器人控制实践
1. ROBLEX开发套件底层驱动库技术解析ROBLEX开发套件是一套面向教育与原型验证的嵌入式硬件平台,其核心由主控底板(通常基于STM32F4系列MCU)与可插拔功能模块(如电机驱动、红外测距、超声波测距、环境传感器、LED阵列、蜂鸣器、编…...
保姆级万物识别教程:阿里开源镜像快速部署,识别图片超简单
保姆级万物识别教程:阿里开源镜像快速部署,识别图片超简单 1. 开篇:为什么选择这个镜像? 今天给大家介绍一个特别实用的AI工具——阿里开源的"万物识别-中文-通用领域"镜像。这个镜像最大的特点就是简单易用ÿ…...
Phi-4-mini-reasoning效果展示:同参数量级中推理准确率超Llama3-8B实测对比
Phi-4-mini-reasoning效果展示:同参数量级中推理准确率超Llama3-8B实测对比 1. 开篇亮点:小模型的大智慧 Phi-4-mini-reasoning这款仅有3.8B参数的轻量级开源模型,正在重新定义我们对小模型能力的认知。作为专为数学推理、逻辑推导和多步解…...
[Android] 鲁迅全集 7.2.0
[Android] 鲁迅全集 7.2.0 链接:https://pan.xunlei.com/s/VOp2ylhHGYlTTbQ2rTOhsk3RA1?pwdh6tu# 鲁迅作品全集!!!...
别再手动查ID了!用R包一键搞定单细胞Marker基因ID转换(附org.Hs.eg.db实战)
单细胞Marker基因ID转换实战:用org.Hs.eg.db实现高效精准映射 刚完成单细胞聚类分析的研究者,常常会面临一个看似简单却极其耗时的任务——将Marker基因的Symbol标识转换为标准的Entrez ID。这个步骤虽然基础,却直接影响后续GO富集分析的可靠…...
