docker compose部署nacos高可用集群,并开启账号密码

news/2025/3/4 14:11:46/文章来源:https://www.cnblogs.com/namedgx/p/18750407

架构图

 

 

部署

一、准备yml文件、nacos sql初始化文件、nginx.conf文件

nacos sql初始化文件

/** 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.*//******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info   */
/******************************************/
CREATE TABLE `config_info` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) DEFAULT NULL,`content` longtext NOT NULL COMMENT 'content',`md5` varchar(32) DEFAULT NULL COMMENT 'md5',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',`src_user` text COMMENT 'source user',`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',`app_name` varchar(128) DEFAULT NULL,`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',`c_desc` varchar(256) DEFAULT NULL,`c_use` varchar(64) DEFAULT NULL,`effect` varchar(64) DEFAULT NULL,`type` varchar(64) DEFAULT NULL,`c_schema` text,`encrypted_data_key` text NOT NULL COMMENT '秘钥',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_aggr   */
/******************************************/
CREATE TABLE `config_info_aggr` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) NOT NULL COMMENT 'group_id',`datum_id` varchar(255) NOT NULL COMMENT 'datum_id',`content` longtext NOT NULL COMMENT '内容',`gmt_modified` datetime NOT NULL COMMENT '修改时间',`app_name` varchar(128) DEFAULT NULL,`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_beta   */
/******************************************/
CREATE TABLE `config_info_beta` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) NOT NULL COMMENT 'group_id',`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',`content` longtext NOT NULL COMMENT 'content',`beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',`md5` varchar(32) DEFAULT NULL COMMENT 'md5',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',`src_user` text COMMENT 'source user',`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',`encrypted_data_key` text NOT NULL COMMENT '秘钥',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_tag   */
/******************************************/
CREATE TABLE `config_info_tag` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) NOT NULL COMMENT 'group_id',`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',`tag_id` varchar(128) NOT NULL COMMENT 'tag_id',`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',`content` longtext NOT NULL COMMENT 'content',`md5` varchar(32) DEFAULT NULL COMMENT 'md5',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',`src_user` text COMMENT 'source user',`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_tags_relation   */
/******************************************/
CREATE TABLE `config_tags_relation` (`id` bigint(20) NOT NULL COMMENT 'id',`tag_name` varchar(128) NOT NULL COMMENT 'tag_name',`tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) NOT NULL COMMENT 'group_id',`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',`nid` bigint(20) NOT NULL AUTO_INCREMENT,PRIMARY KEY (`nid`),UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = group_capacity   */
/******************************************/
CREATE TABLE `group_capacity` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',`group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = his_config_info   */
/******************************************/
CREATE TABLE `his_config_info` (`id` bigint(20) unsigned NOT NULL,`nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`data_id` varchar(255) NOT NULL,`group_id` varchar(128) NOT NULL,`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',`content` longtext NOT NULL,`md5` varchar(32) DEFAULT NULL,`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,`src_user` text,`src_ip` varchar(50) DEFAULT NULL,`op_type` char(10) DEFAULT NULL,`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',`encrypted_data_key` text NOT NULL COMMENT '秘钥',PRIMARY KEY (`nid`),KEY `idx_gmt_create` (`gmt_create`),KEY `idx_gmt_modified` (`gmt_modified`),KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = tenant_capacity   */
/******************************************/
CREATE TABLE `tenant_capacity` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',`tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';CREATE TABLE `tenant_info` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`kp` varchar(128) NOT NULL COMMENT 'kp',`tenant_id` varchar(128) default '' COMMENT 'tenant_id',`tenant_name` varchar(128) default '' COMMENT 'tenant_name',`tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',`create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',`gmt_create` bigint(20) NOT NULL COMMENT '创建时间',`gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';CREATE TABLE `users` (`username` varchar(50) NOT NULL PRIMARY KEY,`password` varchar(500) NOT NULL,`enabled` boolean NOT NULL
);CREATE TABLE `roles` (`username` varchar(50) NOT NULL,`role` varchar(50) NOT NULL,UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);CREATE TABLE `permissions` (`role` varchar(50) NOT NULL,`resource` varchar(255) NOT NULL,`action` varchar(8) NOT NULL,UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

 

yml文件   

MYSQL_ROOT_PASSWORD: 123456    自行修改密码
MYSQL_SERVICE_PASSWORD: 123456
 
version: '3.1'
services:nacos-mysql8:image: mysql:8.0.37restart: alwayscontainer_name: nacos-mysql8environment:MYSQL_ROOT_PASSWORD: 123456TZ: Asia/ShanghaiLANG: C.UTF-8MYSQL_DATABASE: nacosports:- 13306:3306volumes:- /etc/localtime:/etc/localtime:ro- ./mysql/data:/var/lib/mysql- ./mysql/conf:/etc/mysql/conf.d- ./mysql/bk:/opt/mysql/bknetworks:- nacos-netnacos-nginx:image: nginx:1.24container_name: nacos-nginxenvironment:LANG: en_US.UTF-8ports:- "18888:18888"restart: alwaysvolumes:- "/etc/localtime:/etc/localtime:ro"- "./nginx/conf/nginx.conf:/etc/nginx/nginx.conf"- "./nginx/logs:/etc/nginx/logs"- "./nginx/ssl:/etc/nginx/ssl"networks:- nacos-netnacos1:image: nacos:2.2.3container_name: nacos1environment:NACOS_SERVERS: nacos1:8848,nacos2:8848,nacos3:8848PREFER_HOST_MODE: hostnameMODE: clusterSPRING_DATASOURCE_PLATFORM: mysqlMYSQL_SERVICE_HOST: nacos-mysql8MYSQL_SERVICE_PORT: 3306MYSQL_SERVICE_DB_NAME: nacosMYSQL_SERVICE_USER: rootMYSQL_SERVICE_PASSWORD: 123456MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=trueNACOS_AUTH_ENABLE: "true"nacos.core.auth.plugin.nacos.token.secret.key: VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=nacos.core.auth.server.identity.key: nacosnacos.core.auth.server.identity.value: nacosrestart: alwaysnetworks:- nacos-netnacos2:image: nacos:2.2.3container_name: nacos2environment:NACOS_SERVERS: nacos1:8848,nacos2:8848,nacos3:8848PREFER_HOST_MODE: hostnameMODE: clusterSPRING_DATASOURCE_PLATFORM: mysqlMYSQL_SERVICE_HOST: nacos-mysql8MYSQL_SERVICE_PORT: 3306MYSQL_SERVICE_DB_NAME: nacosMYSQL_SERVICE_USER: rootMYSQL_SERVICE_PASSWORD: 123456MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=trueNACOS_AUTH_ENABLE: "true"nacos.core.auth.plugin.nacos.token.secret.key: VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=nacos.core.auth.server.identity.key: nacosnacos.core.auth.server.identity.value: nacosrestart: alwaysnetworks:- nacos-netnacos3:image: nacos:2.2.3container_name: nacos3environment:NACOS_SERVERS: nacos1:8848,nacos2:8848,nacos3:8848PREFER_HOST_MODE: hostnameMODE: clusterSPRING_DATASOURCE_PLATFORM: mysqlMYSQL_SERVICE_HOST: nacos-mysql8MYSQL_SERVICE_PORT: 3306MYSQL_SERVICE_DB_NAME: nacosMYSQL_SERVICE_USER: rootMYSQL_SERVICE_PASSWORD: 123456MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=trueNACOS_AUTH_ENABLE: "true"nacos.core.auth.plugin.nacos.token.secret.key: VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=nacos.core.auth.server.identity.key: nacosnacos.core.auth.server.identity.value: nacosrestart: alwaysnetworks:- nacos-netnetworks:nacos-net:driver: bridge

 

nginx.conf文件  

server_name ****** 改为自己的访问ip
user  root root;
worker_processes  8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;worker_rlimit_nofile 51200;
events {use epoll;worker_connections  51200;
}http {include       mime.types;default_type  application/octet-stream;server_tokens  off;log_format logstash  '$remote_addr - $remote_user [$time_local] ''$host "$request" $status $body_bytes_sent ''"$http_referer" "$http_user_agent" $http_cookie   $http_x_forwarded_for $upstream_addr "$upstream_cache_status" ';sendfile       on;tcp_nopush     on;tcp_nodelay     off;client_max_body_size 100M;keepalive_timeout  120;client_header_timeout  120s;client_body_timeout  120s;client_header_buffer_size 32k;large_client_header_buffers 4 32k;send_timeout   3m;open_file_cache max=204800 inactive=20s;open_file_cache_min_uses 1;proxy_ignore_client_abort on;server_names_hash_bucket_size 512;   open_file_cache_valid 30s;limit_rate 1500k; limit_conn_zone $server_name zone=perserver:10m;gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
gzip_typesapplication/atom+xmlapplication/javascriptapplication/jsonapplication/ld+jsonapplication/manifest+jsonapplication/rdf+xmlapplication/rss+xmlapplication/schema+jsonapplication/vnd.geo+jsonapplication/vnd.ms-fontobjectapplication/x-font-ttfapplication/x-javascriptapplication/x-web-app-manifest+jsonapplication/xhtml+xmlapplication/xmlfont/opentypeimage/bmpimage/svg+xmlimage/x-icontext/cache-manifesttext/csstext/plaintext/vcardtext/vnd.rim.location.xloctext/vtttext/x-componenttext/x-cross-domain-policy;upstream nacos_cluster {server nacos1:8848;server nacos2:8848;server nacos3:8848;
}server {listen 18888;server_name ******;location /nacos/ {proxy_pass http://nacos_cluster/nacos/;
        proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header Connection "";proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'upgrade';proxy_cache_bypass $http_upgrade;}}}

 

二、环境准备

上面三个文件默认目录同级

mkdir  -p nginx/conf  mysql/conf
vim nginx/conf/nginx.conf #拷贝上方配置
vim mysql/conf/my.conf #拷贝上方配置

 

三、启动数据库,导入sql

先启动数据库导入sql文件,在启动nacos

#启动
docker compose -f docker-compose.yml up -d nacos-mysql8
#拷贝sql文件到容器
docker cp nacos.sql nacos-mysql8:/tmp
#导入sql文件
docker exec -it nacos-mysql8 bash -c "mysql -uroot -p123456 nacos < /tmp/nacos.sql"

 

四、启动所有服务

docker compose -f docker-compose up -d 

 

五、检查平台是否正常

访问IP:18888/nacos/   

默认账号密码nacos  nacos

登录进去 右上角修改密码 

 

 

 

六、查看集群状态

会显示三个节点,第一个是当前登录的节点,为容器id 。每次刷新会变化

 

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

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

相关文章

Flutter QQ聊天项目(1):登录界面实现

下面介绍 Flutter 最基本的通用项目框架搭建,顺便实现一个 QQ 聊天界面,这里只先实现了 QQ 登录界面。先看下效果图:一、运用技术编辑器:VS Code 框架技术:Flutter3.104 + Dart3.105 路由/状态管理:get^4.6.6更具体的:使用ScreenUtilInit自适应界面大小; 使用Stack支持…

PrivHunterAI:越权漏洞检测的工具

免责声明: 工具仅供安全研究与学习之用,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律及连带责任。信息及工具收集于互联网,真实性及安全性自测!!​ 项目介绍 功能 一款通过被动代理方式调用Kimi、DeepSeek和通义千问AI,实现越权漏洞…

开启科创服务新篇章!八月瓜科技CRM数字化管理系统成功上线

近日,北京八月瓜科技有限公司(以下简称 “八月瓜科技”)与纷享销客达成深度战略合作,成功部署并上线CRM数字化管理系统。此次合作是八月瓜科技在数字化转型进程中的重要里程碑,标志着其在科技创新服务领域的数字化变革进程中迈出了坚实且具有战略意义的一步。 八月瓜科技是…

Feedalyze - 让你听得见、听得清用户的反馈

Feedalyze - 专注于用户反馈的管理分析工具,让你听得见、听得清用户的反馈!满足用户需求,解决用户问题,获得适当报酬是商业成功最为重要的因素。然而扪心自问,当您推出新产品后,您真的在听、听得见、听得清用户的反馈么? 当今信息传播迅猛,渠道繁多,优秀产品随口碑效应…

自己写一个下载器,速度堪比IDM下载器

心血来潮,想自己做个下载器,类似于腾讯的游戏高速下载器。类似下图这种,这样又可以接受客户定制喽。开干!解决单文件exe问题这类程序都会利用第三方的下载插件来提升下载速度,但是就会出现多个文件的问题,给人体验感就不好了。利用ILMerge将三方的插件都合并起来,顺利解…

文件下载方法

通用下载1 package com.stig.business.web.contoller;2 3 import com.stig.business.web.mobel.po.EbssFileInfo;4 import com.stig.common.constant.Constants;5 import com.stig.common.properties.BusStopSignProperties;6 import com.stig.common.utils.RedisUtils;7 impor…

Charles安装及使用教程

一. 简介及安装 一、charles的使用 1.1 charles的说明 Charles其实是一款代理服务器,通过过将自己设置成系统(电脑或者浏览器)的网络访问代理服务器,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,Linux上使用。安装Charles的时候要…

47.9K star!全平台开源笔记神器,隐私安全首选!

"Joplin 是一款开源的笔记记录和待办事项应用,支持端到端加密同步,完美替代商业笔记软件" —— 来自开发者 Laurent Cozic嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法"Joplin 是一款开源的笔记记录和待办事项应…

什么是项目管理?五大流程是什么?

项目管理这东西,大家可能听过,但是具体怎么操作,很多人可能就一头雾水了。 简单来说,项目管理就是为了完成某个特定目标,把时间、资源、人员等因素有条不紊地组织、协调、控制和调整,最终确保项目按时、按预算、高质量地完成。 这个“项目”可以是任何东西,比如公司新产…

最全面的浏览器教程-完结撒花

完结撒花 🎉🎉🎉完结撒花 🎉🎉🎉 《最全面的浏览器教程》目前要告一段落了,耗时我一个多月,整理了大量的笔记,参考了很多教程和文章,累计写了 24 篇文章,7.3 万字,200 多张图片,收获了很多粉丝和鼓励,在此表示感谢。 如果后续有学到什么新技巧,看到好玩意…

牛客题解 | 字符串相乘

牛客题库题解题目 题目链接 题解 题目难度:中等难度 知识点:字符串、大数相乘 模拟人工计算 计算的过程基本上和小学生列竖式做乘法相同。为编程方便,并不急于处理进位,而将进位问题留待最后统一处理。数组a存储第一个数字123(逆序)数组b存储第二数组20(逆序)结果存入数…