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,最终获取参数都要拟合一下,拟合后的生成的面对象没有大小,比如平面只有矢量(大小没有思路) 圆柱拟合面没有…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...
论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...
