使用ansible的剧本制作salt-master与salt-minion的安装与启动服务过程
虚拟机版本:Rocky Linux release 8.6 (Green Obsidian)
准备几台虚拟机
| ipv4地址 | 主机名 |
| 192.168.137.13 | center |
| 192.168.137.14 | sp-1 |
| 192.168.137.15 | sp-2 |
| 192.168.137.16 | sp-3 |
一、center主机的配置
1.vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.137.13 center
192.168.137.14 sp-1
192.168.137.15 sp-2
192.168.137.16 sp-3
2.下载ansible-core
yum -y install ansible-core
3.配置ansible,执行剧本
3-1. 新建ansible目录,进入该目录,整个剧本操作都在ansible目录中完成
mkdir ansible
cd ansible
3-2. vim ansible.cfg
[defaults]
inventory=inventory
host_key_checking=False
注意事项,如果不是root用户,是sudo免密提权的普通用户alice可以这么写:
[defaults]
inventory=/home/alice/ansible/inventory #清单文件
roles_path=/home/alice/ansible/roles #角色目录
collections_paths=/home/alice/ansible/collections
#collection 目录,多个目录冒号:分隔(仅适用于 RHEL9)
remote_user=alice #远程用户
[privilege_escalation] #sudo 提权
become=True #是否提权
become_method=sudo #提权方式
become_user=root #提权用户
become_ask_pass=False #是否需要密码
3-3.vim inventory
[master]
center
[minions]
center
sp-[1:3]
[master:vars]
ansible_connection=local
[minions:vars]
ansible_ssh_pass=a
检查ansible是否配置成功:
[root@localhost ansible]# ansible all -m ping
[WARNING]: Platform linux on host center is using the discovered Python interpreter at /usr/bin/python3.8,
but future installation of another Python interpreter could change the meaning of that path. See
https://docs.ansible.com/ansible-core/2.12/reference_appendices/interpreter_discovery.html for more
information.
center | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3.8"},"changed": false,"ping": "pong"
}
sp-2 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"
}
sp-3 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"
}
sp-1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"
}
注意:这步失败的话,如果检查前面的代码也没问题,可以把第二步免密ssh登录做了再试试
3-4. vim install.yml
---
- hosts: allgather_facts: falsetasks:- name: get salt.reposhell: |sudo rpm --import https://repo.saltproject.io/py3/redhat/8/x86_64/latest/SALTSTACK-GPG-KEY.pubsudo curl -fsSL https://repo.saltproject.io/py3/redhat/8/x86_64/latest.repo | tee /etc/yum.repos.d/salt.reposudo yum clean allbecome: true- name: get master nameset_fact:master_name: "{{ groups['master'][0] }}"- name: get master ipshell: "cat /etc/hosts | grep {{ master_name }} | awk '{print $1}'"register: shell_out- name: set master_ipset_fact:master_ip: "{{ shell_out.stdout }}"- name: debug master_name and master_ipdebug:msg: "master_name = {{ master_name }}, master_ip = {{ master_ip }}"- hosts: mastergather_facts: falsetasks:- name: install salt-masteryum:name: salt-masterstate: presentbecome: true- name: change master configurationshell: "sed -i 's/^#interface.*/interface: {{ master_ip }}/' /etc/salt/master"become: true- name: start salt-masterservice:name: salt-masterenabled: yesstate: startedbecome: true- hosts: minionsgather_facts: falsetasks:- name: copy hosts to minions(为了获取salt-key)copy:src: /etc/hostsdest: /etc/hosts- name: install salt-minionyum:name: salt-minionstate: presentbecome: true- name: change minion configurationshell: "sed -i 's/^#master:.*/master: {{ master_name }}/' /etc/salt/minion"become: true- name: start salt-minionservice:name: salt-minionenabled: yesstate: startedbecome: true
3-5.执行剧本
ansible-playbook install.yml
4.center主机获取salt-key
4-1.批量接受所有未接受的 minion
[root@localhost ansible]# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
sp-1
sp-2
sp-3
Proceed? [n/Y] y
Key for minion sp-1 accepted.
Key for minion sp-2 accepted.
Key for minion sp-3 accepted.
4-2.检查是否获取成功:
[root@localhost ansible]# salt-key -L
Accepted Keys:
center
sp-1
sp-2
sp-3
Denied Keys:
Unaccepted Keys:
Rejected Keys:
4-3.也可以一次性接收多个salt-key:
salt-key -a sp-1,sp-2,sp-3
4-4.测试是否成功连接:
test.ping
[root@localhost ansible]# salt '*' test.ping
sp-3:True
sp-1:True
sp-2:True
center:True#使用正则表达式,加-E参数
[root@localhost ansible]# salt 'sp-.*' -E test.ping
sp-1:True
sp-3:True
sp-2:True#-L参数,将字符串以空格或者,号分隔开,再每个匹配展示[root@localhost ansible]# salt 'sp-1,sp-2,sp-3' -L test.ping
sp-1:True
sp-3:True
sp-2:True
#或
[root@localhost ansible]# salt 'sp-1 sp-2 sp-3' -L test.ping
sp-1:True
sp-3:True
sp-2:True#-G 选项用于基于 minion 的 grains 数据来进行目标定位(targeting)。Grains 是 SaltStack 中的一种数据结构,它允许 minion 收集有关自身的信息,并将这些信息报告给 master。Grains 可以包括操作系统类型、内核版本、硬件信息等各种系统元数据。使用 -G 选项,您可以根据这些 grains 数据来选择特定的 minion 执行命令
[root@localhost ansible]# salt 'fqdn:sp-1' -G test.ping
sp-1:True#-C(大写)选项,混合方式
[root@localhost ansible]# salt 'G@host:center or E@sp-[1-2]' -C test.ping
sp-2:True
center:True
sp-1:True
查看test.version
[root@localhost ansible]# salt '*' test.version
sp-2:3005.5
sp-1:3005.5
center:3005.5
sp-3:3005.5
查看grains(采集硬件信息)
#grains,采集硬件信息
[root@localhost ansible]# salt 'sp-1' grains.ls
[root@localhost ansible]# salt 'sp-1' grains.items
#只要具体的几项:
[root@localhost ansible]# salt 'sp-1' grains.item host fqdn selinux master
sp-1:----------fqdn:sp-1host:sp-1master:centerselinux:----------enabled:Falseenforced:Disabled
4-5.拒绝未接受的minion
拒绝所有:
[root@localhost ansible]# salt-key -R
拒绝指定的一个或多个minion:
salt-key -r sp-1,sp-2,sp-3
4-6.删除已接受的minion
拒绝所有:
[root@localhost ansible]# salt-key -D
批量删除已接受的具体某些minion:
[root@localhost ansible]# salt-key -d center,sp-1,sp-2,sp-3
5.配置/etc/salt/master
5-1.配置nodegroups
使用/etc/salt/master配置nodegroups[root@localhost ansible]# vim /etc/salt/master
加上
nodegroups:sp_group: L@sp-1,sp-2,sp-3[root@localhost ansible]# systemctl restart salt-master
[root@localhost ansible]# salt -N sp_group cmd.run "ls"
sp-3:anaconda-ks.cfg
sp-2:anaconda-ks.cfg
sp-1:anaconda-ks.cfg
cmd.exec_code,cmd.exec_code_all 可以指定解释器执行命令:
[root@localhost ansible]# salt sp-1 cmd.exec_code_all sh "echo hello"
sp-1:----------pid:14927retcode:0stderr:stdout:hello
[root@localhost ansible]# salt sp-1 cmd.exec_code sh "echo hello"
sp-1:hello
二、免密ssh登录sp-1,sp-2,sp-3
在center主机执行:ssh-keygen一路回车
ssh-copy-id sp-1
有yes/no选项的=》yes
输入密码,回车ssh-copy-id sp-2
同上ssh-copy-id sp-3
同上然后依然在center主机使用
ssh sp-1
到该主机后命令行输入exit返回center主机
ssh sp-2
同上
ssh sp-3
同上
三、salt模块
列出所有的模块
[root@localhost ansible]# salt sp-1 sys.list_modules
sp-1:- acl- aliases- alternatives- archive- artifactory- at- baredoc- beacons- bigip- btrfs- buildout- chroot- cloud- cmd- composer- config- consul- container_resource- cp- cron- cryptdev- data- defaults- devinfo- devmap- dig- disk- django- dnsmasq- dnsutil- drbd- environ- ethtool- event- extfs- file- freezer- gem- genesis- glassfish- glusterfs- gnome- google_chat- grafana4- grains- group- hashutil- helm- highstate_doc- hosts- http- hue- incron- ini- inspector- introspect- iosconfig- ip- iptables- jboss7- jboss7_cli- jinja- k8s- kernelpkg- key- keyboard- kmod- kubeadm- locale- locate- log- logrotate- lowpkg- lvm- mandrill- match- mattermost- mine- minion- modjk- mount- msteams- nagios_rpc- namecheap_domains- namecheap_domains_dns- namecheap_domains_ns- namecheap_ssl- namecheap_users- network- nexus- nfs3- nova- nspawn- nxos- nxos_api- nxos_upgrade- openscap- openstack_config- opsgenie- out- pagerduty- pagerduty_util- pam- parallels- partition- peeringdb- pillar- pip- pkg- pkg_resource- ps- publish- pushover- pyenv- qemu_img- qemu_nbd- quota- raid- random- random_org- rbenv- rest_sample_utils- restartcheck- ret- rsync- rvm- s3- s6- salt_proxy- salt_version- saltcheck- saltutil- schedule- scsi- sdb- seed- selinux- serverdensity_device- service- shadow- slack- slsutil- smbios- smtp- solrcloud- sqlite3- ssh- state- status- statuspage- supervisord- sys- sysctl- sysfs- syslog_ng- system- telegram- telemetry- temp- test- timezone- tuned- udev- uptime- user- vault- vbox_guest- virtualenv- vsphere- x509- xfs- xml- zabbix- zenoss
1.cmd模块
查看cmd的方法有哪些?
[root@localhost ansible]# salt 'sp-1' sys.list_functions cmd
sp-1:- cmd.exec_code- cmd.exec_code_all- cmd.has_exec- cmd.powershell- cmd.powershell_all- cmd.retcode- cmd.run- cmd.run_all- cmd.run_bg- cmd.run_chroot- cmd.run_stderr- cmd.run_stdout- cmd.script- cmd.script_retcode- cmd.shell- cmd.shell_info- cmd.shells- cmd.tty- cmd.which- cmd.which_bin
查看cmd.run的帮助文档
[root@localhost ansible]# salt sp-1 sys.doc cmd.run
cmd.run使用示例:
[root@localhost ansible]# salt 'sp-1' cmd.run "ls -l;hostname"
sp-1:total 4-rw-------. 1 root root 1039 May 16 16:06 anaconda-ks.cfgsp-1#批量执行
[root@localhost ansible]# salt '*' cmd.run "hostname"
sp-3:sp-3
sp-2:sp-2
sp-1:sp-1
center:center
2.cp模块(复制)
查看帮助文档:
[root@localhost ansible]# salt sp-1 sys.doc cp
修改/etc/salt/master配置:
file_roots:base:- /srv/salt
重启salt-master
systemctl restart salt-master
cp.get_file(获取文件)
[root@localhost ansible]# mkdir -p /srv/salt/files/
[root@localhost ansible]# vim /srv/salt/files/test_get.txt
这是master文件#使用示例:
[root@localhost ansible]# salt sp-2 cp.get_file salt://files/test_get.txt /root/test.txt
sp-2:/root/test.txt
[root@localhost ansible]# salt sp-2 cmd.run "ls /root"
sp-2:anaconda-ks.cfgtest.txt
[root@localhost ansible]# salt sp-2 cmd.run 'cat /root/test.txt'
sp-2:这个是master节点的文件!!!
cp.get_dir
#注意:不能是空目录,至少要有一个文件的目录才能使用这个方法[root@localhost ansible]# mkdir -p /srv/salt/test_dirs
[root@localhost ansible]# salt sp-2 cp.get_dir salt://test_dirs/ /root/ sp-2:
#没有复制过去,因为是空目录
#给该目录加一个文件就可以了
[root@localhost ansible]# echo hello > /srv/salt/test_dirs/1.txt
[root@localhost ansible]# salt sp-2 cp.get_dir salt://test_dirs/ /root/
sp-2:- /root//test_dirs/1.txt
[root@localhost ansible]# salt sp-2 cmd.run 'ls /root/'
sp-2:anaconda-ks.cfgtest.txttest_dirs
[root@localhost ansible]# salt sp-2 cmd.run 'ls /root/test_dirs'
sp-2:1.txt
cp.push
[root@localhost ansible]# vim /etc/salt/master
file_recv: True[root@localhost ansible]# systemctl restart salt-master[root@localhost ansible]# salt sp-2 cp.push /root/test.txt
sp-2:True
[root@localhost ansible]# ls /var/cache/salt/master/minions/sp-2/files/root/
test.txt[root@localhost ansible]# salt sp-2 cp.push /root/test.txt upload_path=/test/file/file.txt
sp-2:True
[root@localhost ansible]# find / -name 'file.txt'
...
/var/cache/salt/master/minions/sp-2/files/test/file/file.txt
[root@localhost ansible]# ls /var/cache/salt/master/minions/sp-2/files/test/file/
file.txt
state.sls => 类似ansible的剧本
查看某个模块的剧本示例帮助
#查看帮助文档
salt sp-1 sys.list_state_functions pkg
salt sp-1 sys.state_doc pkg.installedsalt sp-1 sys.list_state_functions service
salt sp-1 sys.state_doc service.dead
编辑nginx下载启动服务剧本
mkdir /srv/salt/state/
cd /srv/salt/state/
mkdir nginx
cd nginx
vim nginx_install.sls
#剧本内容
nginx-install:pkg.installed:- name: nginxnginx-service:service.running:- name: nginx- enable: True- require:- pkg: nginx-install#执行nginx_install.sls剧本
salt sp-1 state.sls state.nginx.nginx_install
#检测是否成功
salt sp-1 cmd.run 'ps -ef | grep nginx'
salt sp-1 cmd.run 'service nginx status'
关闭nginx服务
vim nginx_stop.sls
#关闭nginx
stop_nginx_service:service.dead:- name: nginx[root@localhost nginx]# salt sp-1 state.sls state.nginx.nginx_stop
sp-1:
----------ID: stop_nginx_serviceFunction: service.deadName: nginxResult: TrueComment: Service nginx was killedStarted: 08:20:02.938253Duration: 358.058 msChanges:----------nginx:FalseSummary for sp-1
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
Total run time: 358.058 ms
[root@localhost nginx]# salt sp-1 cmd.run 'service nginx status'
相关文章:
使用ansible的剧本制作salt-master与salt-minion的安装与启动服务过程
虚拟机版本:Rocky Linux release 8.6 (Green Obsidian) 准备几台虚拟机 ipv4地址主机名192.168.137.13center192.168.137.14sp-1192.168.137.15sp-2192.168.137.16sp-3 一、center主机的配置 1.vim /etc/hosts 127.0.0.1 localhost localhost.localdomain loc…...
数据库sqlite3
用数据库函数完成数据的增删改查 增: 将要存储的信息录入到结构体中,再使用snprintf函数信息结合sqlite3命令语句使用sqlite3_exec函数完成插入。 int do_insert(sqlite3 *ppDb) {Worker Work;printf("输入插入的工号:");scanf("%d&qu…...
开发基础之Python 函数(Basic Python Functions for Development)
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…...
Django_Vue3_ElementUI_Release_001_项目初始化
1. 数据库 1.1 安装 https://blog.csdn.net/rbx508780/article/details/127176754 1.2 创建数据库 1.3 DBeaver可视化数据库 https://dbeaver.io/download/ 2 安装Python(3.9.12) 2.1 下载地址 https://www.python.org/downloads/release/python-3912/ 2.2 设定国内源 pip …...
MySQL之安装与基础知识
目录 一:在centos7上安装MySQL数据库 1.卸载默认存在的环境 2.配置mysql的yum源 3. 安装MySQL 4.登录mysql 5.设置MySQL的配置文件 二:MySQL基础知识 1.什么是数据库 2.主流数据库 3.服务器,数据库,表关系及使用案例 4…...
前端基础 | HTML基础:HTML结构,HTML常见标签
文章目录 HTML1、HTML结构1.1HTML标签1.1.1标签1.1.2标签含义 1.2HTML文件基本结构1.3标签层次结构1.4 快速生成代码框架 2、HTML常见标签2.1注释标签2.2标题标签:h1–h62.3段落标签:p2.4 换行标签:br2.5格式化标签2.6 图片标签:i…...
宏任务和微任务+超全面试真题
概念 微任务和宏任务是在异步编程中经常使用的概念,用于管理任务的执行顺序和优先级。 宏任务:setTimeout, setInterval,I/O 操作和 UI 渲染等。微任务: Promise 回调、async/await等 微任务通常比宏任务具有更高的优先级。 执…...
针对SVM算法初步研究
归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言📝心态决定高度,细节决定成败…...
Java中的`String`不可变性详解
在Java中,String类具有不可变性(immutable),这意味着一旦String对象被创建,它的值将无法更改。所有对字符串的修改操作(如拼接、替换等)实际上都会生成一个新的字符串对象,而不会修改…...
c# SMTP发送邮件
string from ""; string fromAlias "MIS-TC"; string[] to { "" }; string subject "问题提交"; string body sb.ToString(); string ipaddr "smtp.email.qq.com"; int port 25; string credit ""; strin…...
GPU基础 -- 并行化与阿姆达尔定律
并行化与阿姆达尔定律 并行化是将计算任务分割成多个部分,使这些部分能够在多个处理器或核心上同时运行,从而加速任务的完成时间。阿姆达尔定律(Amdahl’s Law)则揭示了并行化所能带来的加速效果的限制。 阿姆达尔定律公式 阿姆…...
Lua热更
Lua 热更 前提 Lua是轻量级,可以解释执行的编程语言、性能好 基本原则 1.场景空 代码控制物体加载释放 2.场景一个 3.节点不手动挂代码 4.AssetsBundle资源管理 5.Lua开发框架 6.调试模式、发布模式 XLua 热更框架 XLua是C#环境下Lua的解决方案 1.Lua虚拟…...
提升汽车行业软件质量:ASPICE培训的关键实践方法
ASPICE(汽车行业软件过程改进和能力确定)培训是一种针对汽车行业软件开发和维护过程的标准化培训。 该培训旨在帮助组织提高其软件开发和维护过程的质量和效率。以下是ASPICE培训的一些最佳实践方法: 1. 理解ASPICE框架:首先&…...
2024 全新智能识别 API 接口震撼登场
近年来,随着人工智能技术的快速发展,智能识别技术逐渐成为了各个领域的热门应用。在这个大背景下,2024 年的全新智能识别 API 接口横空出世,为我们的生活带来了更多的便利。本文将为大家详细介绍这个全新智能识别 API 接口&#x…...
《UniVS: Unified and Universal Video Segmentation with Prompts as Queries》要点提炼
论文来源:https://arxiv.org/abs/2402.18115 《UniVS: Unified and Universal Video Segmentation with Prompts as Queries》是2024CVPR中的一篇关于视频分割的论文, 主要内容: 论文提出了一个名为UniVS的新型统一视频分割架构,…...
计算机毕业设计选题推荐-推拿知识互动平台-Java/Python项目实战
✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...
基于SpringBoot+Vue+MySQL的瑜伽馆管理系统
系统展示 用户前台界面 管理员后台界面 系统背景 本系统采用SpringBoot作为后端框架,Vue.js构建前端用户界面,MySQL作为数据库存储系统,实现了瑜伽馆的全面数字化管理。系统涵盖会员管理、课程预约、教练排班、收入统计等功能模块,…...
【MySQL】EXPLAIN(执行计划)关键字是什么?
简介: explain是一个强大的 SQL 命令,用于分析和优化查询性能。通过查看数据库执行计划,我们可以理解查询是如何被处理的,包括表的访问顺序、使用的索引、连接类型等。这对于找到潜在的性能瓶颈非常重要。 目录 一、基本含义 二…...
Mybatis两种方式来调用sql语句
使用Mybatis时,有两种方式来调用sql语句: 方式一(直接通过Session对象调用sql语句): SqlSession sqlSession sqlSessionFactory.openSession(); User user sqlSession.selectOne("userTest.selectUser"…...
第十八节:学习统一异常处理(自学Spring boot 3.x的第五天)
这节记录下如何通过AOP方式统一处理异常拦截。 第一步: 新建一个exception包,创建一个ExcetionHandler.java(名字随意取) package cn.wcyf.wcai.exception;import cn.wcyf.wcai.common.Result; import org.springframework.web…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...
[拓扑优化] 1.概述
常见的拓扑优化方法有:均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有:有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...
ArcGIS Pro+ArcGIS给你的地图加上北回归线!
今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等,设置经线、纬线都以10间隔显示。 2、需要插入背会归线…...
第22节 Node.js JXcore 打包
Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...
