Alfresco Content Services dockerCompose自动化部署详尽操作

Alfresco Content Services docker社区部署文档

Alfresco Content Services简介

官方说明书

https://support.hyland.com/r/Alfresco/Alfresco-Content-Services-Community-Edition/23.4/Alfresco-Content-Services-Community-Edition/Using/Content/Folder-rules/Defining-rules-for-a-folder/Creating-a-simple-workflow

Alfresco Content Services(简称ACS)是一款功能完备的企业内容管理(ECM)解决方案,主要面向那些对企业级内容管理有高要求的组织。具体如下:

  1. 核心优势:具备企业级的可扩展性、高性能,用于管理企业关键业务内容并确保合规性。这意味着企业在业务规模不断扩大、内容数据量持续增长的情况下,Alfresco Content Services能稳定高效运行,同时时刻满足企业在数据安全、法规遵循等方面的要求。
  2. 主要用途:可应用于多种场景。包括内容和治理服务,帮助企业管理内容的整个生命周期,从创建、存储到最终删除,确保符合法规和企业内部政策;支持上下文搜索和洞察,用户能基于内容的上下文关系进行精准搜索,挖掘有价值的信息;还能轻松与其他应用集成,打破信息孤岛,提升企业整体业务流程的连贯性和效率。
  3. 关键能力:围绕内容管理提供丰富的功能。在文档管理方面,实现文档的存储、版本控制、权限设置等基础操作;支持文档扫描和捕获,便于将纸质文档转化为数字化信息纳入管理体系;企业协作功能促进团队成员间的协同工作,共同处理和编辑文档;信息治理保障企业信息资产的安全合规;智能分析和洞察则通过对内容的深入挖掘,为企业决策提供数据支持。

Alfresco Content Services是一款功能强大的企业内容管理系统,以下是其官方简介:

  • 功能全面
    • 企业级内容管理:为企业提供了全面的文档管理功能,可实现对大量文件和文档的高效存储、共享、版本控制等操作,满足企业对业务关键内容的管理需求,确保内容的安全性和合规性。
    • 智能流程管理:紧密集成流程与内容服务功能,能够简化以内容为中心的业务流程,让企业在处理文档等内容时,流程更加顺畅,从而支持更快、更明智的决策制定。
    • 企业协作功能:可与Microsoft 365和Google Docs等无缝集成,为团队提供强大的企业协作工具,让团队成员能在不同平台上协同工作,提高工作效率。
    • 信息治理:Alfresco Governance Services能够自动管理信息生命周期,减少用户干预,降低企业业务风险,增强合规性,确保企业信息资产的安全和有序管理。
    • 智能分析:能够自动提取内容中的有价值信息,对内容和元数据进行自动丰富,为企业提供关键洞察,帮助企业更好地理解和利用其内容资产。
  • 技术优势
    • 基于开放标准和API:以开放标准和API为基础构建,易于与其他系统集成和定制,能轻松满足不同企业的多样化业务需求,可与企业现有的IT架构进行无缝对接。
    • 容器化与微服务架构:采用容器化与微服务架构,借助Docker确保应用的轻量化与可移植性,通过Kubernetes或Docker Compose进行编排,增强了系统的弹性和可扩展性,方便在不同环境中部署和运行。
  • 应用场景广泛
    • 云部署:能在公有云或私有云中快速搭建内容管理系统,灵活应对云环境下的弹性资源需求,帮助企业充分利用云的优势进行内容管理。
    • 开发与测试环境:为开发团队提供了快速搭建一致性环境的能力,有助于加速软件开发生命周期,提高开发和测试效率。
    • 多环境部署管理:在不同的测试、预生产、生产环境中,能够高效同步配置,减少人工错误,确保各个环境的稳定性和一致性。
https://docs.alfresco.com/content-services   #官网https://github.com/Alfresco/acs-deployment.git   #github

在这里插入图片描述
在这里插入图片描述

前提条件

操作系统:unbuntu22.04

在开始之前,需要确保已经安装了 Docker 和 Docker Compose。Docker 用于创建和管理容器,Docker Compose 则用于定义和运行多容器的 Docker 应用。
在这里插入图片描述
在这里插入图片描述
测试验证之前把所有的之前的docker容器关掉或者删除,要不然会有端口冲突!

1. 创建目录结构

首先,创建一个目录来存放相关的配置文件和数据,例如:

mkdir alfresco-docker
cd alfresco-docker

2. 创建 docker-compose.yml 文件

在 alfresco-docker 目录下创建一个 docker-compose.yml 文件,以下是一个基本的示例配置:

# This docker-compose.yml file is used to spin up an Alfresco Content Services (ACS) trial cluster on a local host or on a server and it requires a minimum of 16GB Memory to distribute among containers.# To use this file to create a local installation of Alfresco Content Services, you need to have Docker Compose installed [https://docs.docker.com/compose/install/].
# Navigate to the folder where this file is located, and issue the following commands:
#
#     docker login quay.io -u="alfresco+acs_v6_trial" -p="MDF9RNGUJPKZ83KK8UVGUVWO9AYKUZ0VN6WG5VOOCUT6BX19JJLU5ZL0HKU7N20C"
#     docker-compose up
## For additional information about using this docker-compose file, please see:
# https://github.com/Alfresco/acs-deployment/blob/master/docs/docker-compose-deployment.md# You may wish to limit container memory and assign a certain percentage to JVM. There are couple of ways to allocate JVM Memory for ACS Containers
# For example: 'JAVA_OPTS: "$JAVA_OPTS -XX:+PrintFlagsFinal -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap"'
# If container memory is not explicitly set, then the above flags will default max heap to 1/4th of container's memory.
version: "2"
services:alfresco:image: quay.io/alfresco/alfresco-content-repository:23.2.1mem_limit: 1900menvironment:JAVA_TOOL_OPTIONS: -Dencryption.keystore.type=JCEKS -Dencryption.cipherAlgorithm=DESede/CBC/PKCS5Padding -Dencryption.keyAlgorithm=DESede -Dencryption.keystore.location=/usr/local/tomcat/shared/classes/alfresco/extension/keystore/keystore -Dmetadata-keystore.password=mp6yc0UD9e -Dmetadata-keystore.aliases=metadata -Dmetadata-keystore.metadata.password=oKIWzVdEdA -Dmetadata-keystore.metadata.algorithm=DESedeJAVA_OPTS: "-Ddb.driver=org.postgresql.Driver-Ddb.username=alfresco-Ddb.password=alfresco-Ddb.url=jdbc:postgresql://postgres:5432/alfresco-Dindex.subsystem.name=elasticsearch-Delasticsearch.createIndexIfNotExists=true-Delasticsearch.host=elasticsearch-Delasticsearch.port=9200-Dshare.host=127.0.0.1-Dshare.port=8080-Dalfresco.host=localhost-Dalfresco.port=8080-Dcsrf.filter.enabled=false-Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos-Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\"-Ddeployment.method=DOCKER_COMPOSE-Dtransform.service.enabled=true-Dtransform.service.url=http://transform-router:8095-Dsfs.url=http://shared-file-store:8099/-DlocalTransform.core-aio.url=http://transform-core-aio:8090/-Ddsync.service.uris=http://localhost:9090/alfresco-DtrialUid=id10718692-XX:MinRAMPercentage=50-XX:MaxRAMPercentage=80"healthcheck:test:- CMD- curl- -f- http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/probes/-ready-interval: 30stimeout: 3sretries: 3start_period: 1mtransform-router:mem_limit: 512mimage: quay.io/alfresco/alfresco-transform-router:4.1.2environment:JAVA_OPTS: -XX:MinRAMPercentage=50 -XX:MaxRAMPercentage=80ACTIVEMQ_URL: nio://activemq:61616CORE_AIO_URL: http://transform-core-aio:8090FILE_STORE_URL: http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/fileports:- "8095:8095"depends_on:- activemqtransform-core-aio:image: alfresco/alfresco-transform-core-aio:5.1.2mem_limit: 1536menvironment:JAVA_OPTS: -XX:MinRAMPercentage=50 -XX:MaxRAMPercentage=80ACTIVEMQ_URL: nio://activemq:61616FILE_STORE_URL: http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/fileports:- "8090:8090"depends_on:- activemqshared-file-store:image: quay.io/alfresco/alfresco-shared-file-store:4.1.2mem_limit: 512menvironment:JAVA_OPTS: -XX:MinRAMPercentage=50 -XX:MaxRAMPercentage=80scheduler.content.age.millis: 86400000scheduler.cleanup.interval: 86400000ports:- "8099:8099"volumes:- shared-file-store-volume:/tmp/Alfresco/sfsshare:image: quay.io/alfresco/alfresco-share:23.2.1mem_limit: 1genvironment:REPO_HOST: "alfresco"REPO_PORT: "8080"JAVA_OPTS: -XX:MinRAMPercentage=50 -XX:MaxRAMPercentage=80 -Dalfresco.host=localhost -Dalfresco.port=8080 -Dalfresco.context=alfresco -Dalfresco.protocol=httppostgres:image: postgres:14.4mem_limit: 512menvironment:- POSTGRES_PASSWORD=alfresco- POSTGRES_USER=alfresco- POSTGRES_DB=alfrescocommand: postgres -c max_connections=300 -c log_min_messages=LOGports:- "5432:5432"elasticsearch:image: elasticsearch:7.10.1environment:- xpack.security.enabled=false- discovery.type=single-nodeulimits:memlock:soft: -1hard: -1nofile:soft: 65536hard: 65536cap_add:- IPC_LOCKports:- 9200:9200- 9300:9300search:image: quay.io/alfresco/alfresco-elasticsearch-live-indexing:4.0.1mem_limit: 1gdepends_on:elasticsearch:condition: service_startedsearch-reindexing:condition: service_completed_successfullyenvironment:ALFRESCO_ACCEPTED_CONTENT_MEDIA_TYPES_CACHE_BASE_URL: http://transform-core-aio:8090/transform/configALFRESCO_SHAREDFILESTORE_BASEURL: http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file/SPRING_ACTIVEMQ_BROKERURL: nio://activemq:61616SPRING_ELASTICSEARCH_REST_URIS: http://elasticsearch:9200search-reindexing:image: quay.io/alfresco/alfresco-elasticsearch-reindexing:4.0.1mem_limit: 1grestart: on-failure:10environment:ALFRESCO_ACCEPTED_CONTENT_MEDIA_TYPES_CACHE_BASE_URL: http://transform-core-aio:8090/transform/configSPRING_ACTIVEMQ_BROKERURL: nio://activemq:61616SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/alfrescoSPRING_DATASOURCE_USERNAME: alfrescoSPRING_DATASOURCE_PASSWORD: alfrescoSPRING_ELASTICSEARCH_REST_URIS: http://elasticsearch:9200depends_on:postgres:condition: service_startedelasticsearch:condition: service_startedalfresco:condition: service_healthyactivemq:image: alfresco/alfresco-activemq:5.18-jre17-rockylinux8mem_limit: 1gports:- "8161:8161" # Web Console- "5672:5672" # AMQP- "61616:61616" # OpenWire- "61613:61613" # STOMPdigital-workspace:image: quay.io/alfresco/alfresco-digital-workspace:4.4.1mem_limit: 128menvironment:APP_CONFIG_PROVIDER: "ECM"APP_CONFIG_AUTH_TYPE: "BASIC"BASE_PATH: ./APP_CONFIG_PLUGIN_PROCESS_SERVICE: "false"APP_CONFIG_PLUGIN_MICROSOFT_ONLINE: "false"APP_BASE_SHARE_URL: "http://localhost:8080/workspace/#/preview/s"control-center:image: quay.io/alfresco/alfresco-control-center:8.4.1mem_limit: 128menvironment:APP_CONFIG_PROVIDER: "ECM"APP_CONFIG_AUTH_TYPE: "BASIC"BASE_PATH: ./proxy:image: alfresco/alfresco-acs-nginx:3.4.2mem_limit: 128mdepends_on:- alfresco- digital-workspace- control-center- shareports:- "8080:8080"sync-service:image: quay.io/alfresco/service-sync:4.0.1mem_limit: 1genvironment:JAVA_OPTS: -Dsql.db.driver=org.postgresql.Driver -Dsql.db.url=jdbc:postgresql://postgres:5432/alfresco -Dsql.db.username=alfresco -Dsql.db.password=alfresco -Dmessaging.broker.host=activemq -Drepo.hostname=alfresco -Drepo.port=8080 -Ddw.server.applicationConnectors[0].type=http -XX:MinRAMPercentage=50 -XX:MaxRAMPercentage=80ports:- "9090:9090"
volumes:shared-file-store-volume:driver_opts:type: tmpfsdevice: tmpfs

将localhost替换你服务器的IP

3. 启动容器

在 docker-compose.yml 文件所在的目录下,运行以下命令启动容器:
执行构建命令

docker-compose up -d

解释:
docker-compose up 命令用于启动由 docker-compose.yml 文件定义的所有服务。
-d 参数表示在后台运行容器。
4. 验证部署
启动容器后,可以通过访问 http://localhost:8080/alfresco 来验证 Alfresco Content Services 是否成功部署。首次访问时,需要进行一些初始设置,例如创建管理员账户等。
5. 停止和删除容器
如果需要停止和删除容器,可以使用以下命令:
这个命令是集体删除容器,慎用。

docker-compose down

解释:
docker-compose down 命令会停止并删除由 docker-compose.yml 文件定义的所有服务及其相关的网络和卷(如果使用了 --volumes 参数)。

注意事项
配置调整:根据实际需求,可以调整 docker-compose.yml 文件中的配置,例如更改端口映射、环境变量等。

在这里插入图片描述

docker ps -a

在这里插入图片描述

笔者是用unbuntu桌面版访问localhost,如果是部署在没有桌面的服务器,在构建之前先把localhost替换成服务器IP!
在这里插入图片描述
在这里插入图片描述
admin admin

在这里插入图片描述

将192.168.10.180替换成你的IP!然后访问http://192.168.10.180:8080/share/ admin admin

# This Docker Compose file will spin up an ACS community installation on a local host.
# It requires at least 6GB of memory available to distribute among containers.
#
# For performance tuning, increase each container mem_limit and give a percentage of
# it to the JVM. Use either the -Xms,-Xmx flags or the newly added flags in
# java 10+: -XX:MaxRAMPercentage and -XX:MinRAMPercentage.
# More details here:
# https://www.oracle.com/technetwork/java/javase/10-relnote-issues-4108729.html
#
services:alfresco:image: docker.io/alfresco/alfresco-content-repository-community:23.4.0mem_limit: 1900menvironment:JAVA_TOOL_OPTIONS: >--Dencryption.keystore.type=JCEKS-Dencryption.cipherAlgorithm=DESede/CBC/PKCS5Padding-Dencryption.keyAlgorithm=DESede-Dencryption.keystore.location=/usr/local/tomcat/shared/classes/alfresco/extension/keystore/keystore-Dmetadata-keystore.password=mp6yc0UD9e-Dmetadata-keystore.aliases=metadata-Dmetadata-keystore.metadata.password=oKIWzVdEdA-Dmetadata-keystore.metadata.algorithm=DESedeJAVA_OPTS: >--Ddb.driver=org.postgresql.Driver-Ddb.username=alfresco-Ddb.password=alfresco-Ddb.url=jdbc:postgresql://postgres:5432/alfresco-Dsolr.host=solr6-Dsolr.port=8983-Dsolr.http.connection.timeout=1000-Dsolr.secureComms=secret-Dsolr.sharedSecret=secret-Dsolr.base.url=/solr-Dindex.subsystem.name=solr6-Dshare.host=localhost-Dshare.port=8080-Dalfresco.host=localhost-Dalfresco.port=8080-Dcsrf.filter.enabled=false-Daos.baseUrlOverwrite=http://192.168.10.180:8080/alfresco/aos-Dmessaging.broker.url="failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true"-Ddeployment.method=DOCKER_COMPOSE-DlocalTransform.core-aio.url=http://192.168.10.180:8090/-XX:MinRAMPercentage=50-XX:MaxRAMPercentage=80healthcheck:test: ["CMD", "curl", "-f", "http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/probes/-ready-"]interval: 30stimeout: 3sretries: 5start_period: 1mlabels:- "traefik.enable=true"- "traefik.http.routers.alfresco.rule=PathPrefix(`/`)"- "traefik.http.services.alfresco.loadbalancer.server.port=8080"- "traefik.http.routers.solrapideny.rule=PathRegexp(`^/alfresco/(wc)?s(ervice)?/api/solr/.*$`)"- "traefik.http.middlewares.acsfakeauth.basicauth.users=fake:"- "traefik.http.routers.solrapideny.middlewares=acsfakeauth@docker"transform-core-aio:image: alfresco/alfresco-transform-core-aio:5.1.5mem_limit: 1536menvironment:JAVA_OPTS: >--XX:MinRAMPercentage=50-XX:MaxRAMPercentage=80ports:- "8090:8090"healthcheck:test: ["CMD", "curl", "-f", "http://localhost:8090/ready"]interval: 20stimeout: 2sretries: 3start_period: 10sdepends_on:activemq:condition: service_healthyshare:image: docker.io/alfresco/alfresco-share:23.4.0mem_limit: 1genvironment:CSRF_FILTER_ORIGIN: http://192.168.10.180:8080CSRF_FILTER_REFERER: http://192.168.10.180:8080/share/.*REPO_HOST: "alfresco"REPO_PORT: "8080"JAVA_OPTS: >--XX:MinRAMPercentage=50-XX:MaxRAMPercentage=80-Dalfresco.host=localhost-Dalfresco.port=8080-Dalfresco.context=alfresco-Dalfresco.protocol=httphealthcheck:test: ["CMD", "curl", "-f", "http://localhost:8080/share"]interval: 20stimeout: 2sretries: 3start_period: 15sdepends_on:alfresco:condition: service_healthylabels:- "traefik.enable=true"- "traefik.http.routers.share.rule=PathPrefix(`/share`)"- "traefik.http.services.share.loadbalancer.server.port=8080"- "traefik.http.routers.proxiedsolrapideny.rule=PathRegexp(`^/share/proxy/alfresco(-(noauth|feed|api))?/api/solr/`)"- "traefik.http.middlewares.sharefakeauth.basicauth.users=fake:"- "traefik.http.routers.proxiedsolrapideny.middlewares=sharefakeauth@docker"postgres:image: postgres:13mem_limit: 512menvironment:- POSTGRES_PASSWORD=alfresco- POSTGRES_USER=alfresco- POSTGRES_DB=alfrescocommand: postgres -c max_connections=300 -c log_min_messages=LOGports:- "5432:5432"healthcheck:test: ["CMD-SHELL", "pg_isready -d $$POSTGRES_DB -U $$POSTGRES_USER"]interval: 10stimeout: 3sretries: 3start_period: 5ssolr6:image: docker.io/alfresco/alfresco-search-services:2.0.13mem_limit: 2genvironment:# Solr needs to know how to register itself with AlfrescoSOLR_ALFRESCO_HOST: "alfresco"SOLR_ALFRESCO_PORT: "8080"# Alfresco needs to know how to call solrSOLR_SOLR_HOST: "solr6"SOLR_SOLR_PORT: "8983"# Create the default alfresco and archive coresSOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive"# HTTPS or SECRETALFRESCO_SECURE_COMMS: "secret"# SHARED SECRET VALUEJAVA_TOOL_OPTIONS: >--Dalfresco.secureComms.secret=secretports:- "8083:8983" # Browser portactivemq:image: alfresco/alfresco-activemq:5.18-jre17-rockylinux8mem_limit: 1gports:- "8161:8161" # Web Console- "5672:5672" # AMQP- "61616:61616" # OpenWire- "61613:61613" # STOMPhealthcheck:test: ["CMD", "/opt/activemq/bin/activemq", "query", "--objname", "type=Broker,brokerName=*,service=Health", "|", "grep", "Good"]interval: 10stimeout: 5sretries: 5start_period: 5scontent-app:image: alfresco/alfresco-content-app:5.2.0mem_limit: 128menvironment:APP_BASE_SHARE_URL: "http://192.168.10.180:8080/aca/#/preview/s"healthcheck:test: ["CMD", "curl", "-f", "http://localhost:8080/"]interval: 10stimeout: 1sretries: 3start_period: 1slabels:- "traefik.enable=true"- "traefik.http.routers.aca.rule=PathPrefix(`/content-app`)"- "traefik.http.middlewares.acaroot.stripprefix.prefixes=/content-app"- "traefik.http.middlewares.acaforceslash.redirectregex.regex=^(.*/content-app)$$"- "traefik.http.middlewares.acaforceslash.redirectregex.replacement=$${1}/"- "traefik.http.middlewares.acachain.chain.middlewares=acaforceslash,acaroot"- "traefik.http.routers.aca.middlewares=acachain@docker"control-center:image: quay.io/alfresco/alfresco-control-center:9.2.0mem_limit: 128menvironment:APP_CONFIG_PROVIDER: "ECM"APP_CONFIG_AUTH_TYPE: "BASIC"BASE_PATH: ./healthcheck:test: ["CMD", "curl", "-f", "http://localhost:8080/"]interval: 10stimeout: 1sretries: 3start_period: 1slabels:- "traefik.enable=true"- "traefik.http.routers.acc.rule=PathPrefix(`/control-center`) || PathPrefix(`/admin`)"- "traefik.http.middlewares.accroot.stripprefix.prefixes=/admin,/control-center"- "traefik.http.middlewares.accforceslash.redirectregex.regex=^(.*/(admin|control-center))$$"- "traefik.http.middlewares.accforceslash.redirectregex.replacement=$${1}/"- "traefik.http.middlewares.accchain.chain.middlewares=accforceslash,accroot"- "traefik.http.routers.acc.middlewares=accchain@docker"proxy:image: traefik:3.1mem_limit: 128mcommand:- "--api.insecure=true"- "--providers.docker=true"- "--entrypoints.web.address=:8080"- "--entryPoints.traefik.address=:8888"- "--accesslog=true"- "--providers.docker.exposedByDefault=false"- "--ping.entrypoint=web"- "--ping=true"ports:- "8080:8080"- "8888:8888"healthcheck:test: ["CMD", "traefik", "healthcheck", "--ping"]interval: 20stimeout: 10sretries: 3start_period: 10ssecurity_opt:- label=disable # Required for accessing the Docker socket on Selinux enabled systemsvolumes:- /var/run/docker.sock:/var/run/docker.sock:ro

将192.168.10.180替换成你的IP!然后访问http://192.168.10.180:8080/share/ admin admin

当服务运行时,您可以使用更多命令来浏览服务。 在运行这些之前,将目录更改为 docker-compose:
停止所有正在运行的容器:

 docker-compose stop

重新启动容器(使用 stop 命令后):

 docker-compose restart

启动使用 docker-compose 启动的容器 向上:

 docker-compose start

停止所有正在运行的容器,并删除它们和网络:

 docker-compose down --rmi all

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/68597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

麒麟操作系统服务架构保姆级教程(十四)iptables防火墙四表五链和防火墙应用案例

如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情 防火墙在运维工作中有着不可或缺的重要性。首先,它是保障网络安全的关键防线,通过设置访问控制规则,可精准过滤非法网络流量,有效阻挡外部黑客攻击、恶…

Midjourney基础-常用修饰词+权重的用法大全

用好修饰词很关键 Midjourney要用除了掌握好提示词的写法,按照上一篇《做Midjourney最好图文教程-提示词公式以及高级参数讲解》画面主体 场景氛围 主体行为 构图方式 艺术风格 图像质量。 要画出有质感的内容我们必须要掌握好“修饰词”,这些修饰…

钉钉群机器人设置——python版本

钉钉群机器人设置——python版本 应用场景钉钉界面操作程序开发效果展示 应用场景 由于工作需要,很多项目执行程序后出现报错信息无法第一时间收到,因此实时预警对于监控程序还是有必要。(仅个人观点) 参考文档及博客&#xff1a…

babylon.js-3:了解STL网格模型

网格模型上色 本篇文章主要介绍如何在 BabylonJS 中实现STL网格模型上色。 文章目录 网格模型上色运用场景概要延申正文加载器库的支持认识 OBJ 和 STL 文件GUI 色板选择器网格模型异步加载加载动画网格模型上色官方即将弃用 ImportMesh 而推荐使用 ImportMeshAsync 说明OBJ …

大数据治理实战:架构、方法与最佳实践

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 大数据治理是确保数据质量、合规性和安全性的重要手段,尤其在数据驱动决策和人工智能应用日益普及的背景下&…

【时时三省】(C语言基础)文件的随机读写

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 fseek 根据文件指针的位置和偏移量来定位文件指针 示例: 这个输出的就是ade seek_cur的意思是从当前偏移量 2就是从a往后偏移两个就是d 偏移量 SEEK_CUR…

yolov5错误更改与相关参数详解(train.py)

1.错误更改 main中相关参数 if __name__ __main__:parser argparse.ArgumentParser()parser.add_argument(--weights, typestr, default, helpinitial weights path)parser.add_argument(--cfg, typestr, defaultmodels/yolov5s.yaml, helpmodel.yaml path)parser.add_arg…

第4章 基于中点电流的NPC逆变器中点电压平衡策略

1. 工作原理 1.1 NPC型三电平逆变器工作原理 NPC型三相三电平逆变器有A、B、C三个桥臂,其组成结构是相同的,本章以A相为例,对其工作原理进行分析。开关器件SA1和SA3、SA2和SA4为互补器件,通过控制开关器件的导通和关断状态&#…

【C++】内联函数inline、关键字auto与新式for

内联函数 内联函数背景 我们在使用C语言中我们都学过函数,我们知道函数在调用的过程中需要开辟栈帧。如果我们需要频繁的调用一个函数,假设我们调用10次Add()函数,那我们就需要建立10次栈帧。我们都知道在栈帧中要做很多事情,例如…

【深度学习】图像分类数据集

图像分类数据集 MNIST数据集是图像分类中广泛使用的数据集之一,但作为基准数据集过于简单。 我们将使用类似但更复杂的Fashion-MNIST数据集。 %matplotlib inline import torch import torchvision from torch.utils import data from torchvision import transfo…

【MySQL — 数据库增删改查操作】深入解析MySQL的 Retrieve 检索操作

Retrieve 检索 示例 1. 构造数据 创建表结构 create table exam1(id bigint, name varchar(20) comment同学姓名, Chinesedecimal(3,1) comment 语文成绩, Math decimal(3,1) comment 数学成绩, English decimal(3,1) comment 英语成绩 ); 插入测试数据 insert into ex…

Ansible自动化运维实战--通过role远程部署nginx并配置(8/8)

文章目录 1、准备工作2、创建角色结构3、编写任务4、准备配置文件(金甲模板)5、编写变量6、编写处理程序7、编写剧本8、执行剧本Playbook9、验证-游览器访问每台主机的nginx页面 在 Ansible 中,使用角色(Role)来远程部…

RNN实现阿尔茨海默症的诊断识别

本文为为🔗365天深度学习训练营内部文章 原作者:K同学啊 一 导入数据 import torch.nn as nn import torch.nn.functional as F import torchvision,torch from sklearn.preprocessing import StandardScaler from torch.utils.data import TensorDatase…

编程题-最长的回文子串(中等)

题目: 给你一个字符串 s,找到 s 中最长的回文子串。 示例 1: 输入:s "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。示例 2: 输入:s &…

CNN-GRU卷积门控循环单元时间序列预测(Matlab完整源码和数据)

CNN-GRU卷积门控循环单元时间序列预测(Matlab完整源码和数据) 目录 CNN-GRU卷积门控循环单元时间序列预测(Matlab完整源码和数据)预测效果基本介绍CNN-GRU卷积门控循环单元时间序列预测一、引言1.1、研究背景与意义1.2、研究现状1…

HTML-新浪新闻-实现标题-样式1

用css进行样式控制 css引入方式: --行内样式:写在标签的style属性中(不推荐) --内嵌样式:写在style标签中(可以写在页面任何位置,但通常约定写在head标签中) --外联样式&#xf…

2024年终总结

回顾 今年过年没回老家,趁着有时间,总结一下24年吧。 我把23年看做是打基础的一年,而24年主要是忙于项目的一年,基本上大部分时间都是忙着交付软件,写的一些文章也大部分都是项目中遇到的问题和解决方案,虽…

[c语言日寄]越界访问:意外的死循环

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…

使用 KNN 搜索和 CLIP 嵌入构建多模态图像检索系统

作者:来自 Elastic James Gallagher 了解如何使用 Roboflow Inference 和 Elasticsearch 构建强大的语义图像搜索引擎。 在本指南中,我们将介绍如何使用 Elasticsearch 中的 KNN 聚类和使用计算机视觉推理服务器 Roboflow Inference 计算的 CLIP 嵌入构建…

maven的打包插件如何使用

默认的情况下,当直接执行maven项目的编译命令时,对于结果来说是不打第三方包的,只有一个单独的代码jar,想要打一个包含其他资源的完整包就需要用到maven编译插件,使用时分以下几种情况 第一种:当只是想单纯…