ArcGIS Enterprise11基础部署_以Redhat8.6上单机安装为例

以下文章目录,阅读本文约需5~8分钟

  • 部署前准备

1.1 防火墙的关闭(可选)

1.2 用户和组的创建

1.3 IP和机器名

1.4 准备安装包

  • 安装和配置 ArcGIS for Server

2.1 安装前准备

2.2 安装 ArcGIS for Server

2.3 配置 ArcGIS for Server

  • 安装和配置 ArcGIS DataStore

3.1 安装前准备

3.2 安装 ArcGIS DataStore

3.3 配置 ArcGIS Data Store

  • 安装和配置 Portal for ArcGIS

4.1 安装前准备

4.2 安装 Portal for ArcGIS

4.3 配置 Portal for ArcGIS

  • 安装和配置 Web Adaptor

5.1 安装前准备JDK和Tomcat

5.2 安装和部署Web Adaptor

5.3 配置 Web Adaptor

  • 实现 Portal 和 Server 的托管
  • Linux上设置开机自启动

7.1 server的开机自启动

7.2 portal的开机自启动

7.3 datastore的开机自启动

7.4 Tomcat设置自启动

  • 统一证书

8.1 对 ArcGIS for Server更新证书

8.2 对 Portal for ArcGIS更新证书

8.3 在客户端机器上安装证书

1

部署前准备

对于机器名,请务必不要包含arcgis.com,诸如xxx.arcgis.com, xxx.xxarcgis.com, xxx.arcgisxx.com都禁止作为机器名。

各个组件的安装没有先后顺序,后续配置过程有先后顺序。

1.1

防火墙的关闭(可选)

停止防火墙

[root@localhost lm]# systemctl stop firewalld.service

禁用防火墙的开机启动

[root@localhost lm]# systemctl disable firewalld.servic

查看防火墙状态

[root@localhost lm]# systemctl status firewalld.service

注意: 如果不关闭防火墙需要打开各组件通信的端口: 单机环境下部署ArcGIS Enterprise时,可考虑仅开启

(1)80和443,确保外部客户端可通过web adaptor访问到Portal for ArcGIS或ArcGIS for Server服务页面;

(2)当Web Adaptor层未启用ArcGIS for Server的管理功能时,则需开启6080和6443端口,确保外部客户端上的ArcMap向此环境下的ArcGIS for Server发布服务。关于ArcGIS Enterprise更多的端口信息,请参考下面的链接。

  1. ArcGIS Server所用端口号: http://server.arcgis.com/en/se ... r.htm
  2. Portal for ArcGIS所用端口号:http://server.arcgis.com/en/po ... s.htm
  3. ArcGIS Data Store所用端口号:http://server.arcgis.com/en/portal/latest/administer/windows/ports-used-by-arcgis-data-store.htm

1.2

用户和组的创建

[root@localhost lm]# groupadd esrichina
[root@localhost lm]# useradd -g esrichina -m arcgis
[root@localhost lm]# passwd arcgis

1.3

IP和机器名

ArcGIS Enterprise的安装要求计算机名是完全限定域名的形式。这一修改可通过编辑/etc/hostname和/etc/hosts两个文件实现。

1.3.1 编辑/etc/hostname

[root@agsenterprise lm]# vi /etc/hostname

修改文件内容为:

agsenterprise

注意: 主机名的设置也可通过运行hostnamectl set-hostname agsenterprise来实现。

1.3.2 编辑/etc/hosts

[root@agsenterprise lm]# vi /etc/hosts

添加IP和域名,修改文件内容如下:

注意: 多网卡的环境下,建议删除localhost所在行。

1.3.3 主机名检测

运行 hostname 和 hostname -f 进行主机名规范的检测。

[root@agsenterprise lm]# hostname
agsenterprise
[root@agsenterprise lm]# hostname -f
agsenterprise.esrichina.com

如上所示,主机名和完全限定域名显示无误,符合规范。

1.4

准备安装包

1.4.1 拷贝安装包至/home/arcgis下

ArcGIS_Server_Linux_110_182973.tar.gz, ArcGIS_DataStore_Linux_110_182986.tar.gz, ArcGIS_Web_Adaptor_Java_Linux_110_182987.tar.g, Portal_for_ArcGIS_Linux_110_182984.tar.gz拷贝到/home/arcgis目录下备用。

1.4.2 解压

依次运行 tar -zxvf 对步骤1.4.1中四个安装包进行解压

[root@agsenterprise arcgis]# tar -zxvf ArcGIS_Server_Linux_110_182973.tar.gz 
[root@agsenterprise arcgis]# tar -zxvf ArcGIS_DataStore_Linux_110_182986.tar.gz 
[root@agsenterprise arcgis]# tar -zxvf ArcGIS_Web_Adaptor_Java_Linux_110_182987.tar.gz 
[root@agsenterprise arcgis]# tar -zxvf Portal_for_ArcGIS_Linux_110_182984.tar.gz 

1.4.3 修改权限

依次运行 chown 和 chmod对步骤1.4.2解压后的四个文件夹修改权限。

[root@agsenterprise arcgis]# chown -R arcgis:esrichina ArcGISServer/
[root@agsenterprise arcgis]# chmod -R 755 ArcGISServer/
[root@agsenterprise arcgis]# chown -R arcgis:esrichina ArcGISDataStore_Linux/
[root@agsenterprise arcgis]# chmod -R 755 ArcGISDataStore_Linux/
[root@agsenterprise arcgis]# chown -R arcgis:esrichina PortalForArcGIS/
[root@agsenterprise arcgis]# chmod -R 755 PortalForArcGIS/
[root@agsenterprise arcgis]# chown -R arcgis:esrichina WebAdaptor/
[root@agsenterprise arcgis]# chmod -R 755 WebAdaptor/

2

安装和配置 ArcGIS for Server

2.1

安装前准备

2.1.1 编辑 limits.conf文件

编辑/etc/security/limits.conf文件,添加如下内容:

    arcgis soft nofile 65535
    arcgis hard nofile 65535
    arcgis soft nproc 25059
    arcgis hard nproc 25059

修改保存退出后,执行如下命令使其生效:

2.1.2 诊断当前环境是否满足Server安装要求

运行serverdiag脚本诊断当前环境是否满足ArcGIS for Server安装要求。

[root@agsenterprise arcgis]# su - arcgis
[arcgis@agsenterprise ~]$ ./ArcGISServer/serverdiag/serverdiag

当出现如下信息,说明当前环境满足需求,可安装ArcGIS for Server。

There were 0 failure(s) and 0 warning(s) found:

2.2

安装 ArcGIS for Server

这里利用console模式进行交互安装。

[arcgis@agsenterprise ~]$ cd ArcGISServer/
[arcgis@agsenterprise ArcGISServer]$ ./Setup -m console

安装过程会要求输入许可路径:

安装完毕,显示如下信息,说明安装成功,退出安装,会自动启动server系统服务。

2.3

配置 ArcGIS for Server

在浏览器中输入步骤2.2中返回的ArcGIS Server Manager地址,自动跳转至ArcGIS for Server的6443端口,开始进行站点配置。

1 点击创建新站点。

2 设置主站点管理员账户的用户名和密码,点击下一步。

3 设置根服务器目录和配置存储的位置,点击下一步。

4 点击完成,直至安装成功。

3

安装和配置 ArcGIS DataStore

3.1

安装前准备

3.1.1 设置 vm.swappiness 和 vm.max_map_count

[root@agsenterprise arcgis]# echo 'vm.max_map_count = 262144' >> /etc/sysctl.conf
[root@agsenterprise arcgis]# echo 'vm.swappiness = 1' >> /etc/sysctl.conf

运行如下命令使上述变更生效。

[root@agsenterprise arcgis]# /sbin/sysctl -p
vm.max_map_count = 262144
vm.swappiness = 1

3.1.2 诊断当前环境是否满足 Data Store 安装要求

运行datastorediag脚本诊断当前环境是否满足ArcGIS DataStore的安装要求。

[root@agsenterprise arcgis]# su - arcgis
[arcgis@agsenterprise ~]$ ArcGISDataStore_Linux/datastorediag/datastorediag

当出现如下信息,说明当前环境满足需求,可安装ArcGIS DataStore。

There were 0 failure(s) and 0 warning(s) found:

3.2

安装 ArcGIS DataStore

这里利用silent模式进行静默安装

[arcgis@agsenterprise ~]$ cd ArcGISDataStore_Linux/
[arcgis@agsenterprise ArcGISDataStore_Linux]$ ./Setup -m silent -l Yes

安装完毕,显示如下信息,说明安装成功。

3.3

配置 ArcGIS Data Store

在浏览器中输入ArcGISDataStore的访问地址

https://agsenterprise.esrichina.com:2443/arcgis/datastore/,开始进行 ArcGIS Data Store的配置。

1 输入步骤2中的 ArcGIS Server 的地址以及步骤2.3中设置的ArcGIS for Server主站点管理员账户的用户名和密码 ,点击下一步。

2 设置内容目录的位置,点击下一步。

3 根据需要,选择配置关系型、切片缓存型和时空型的Data Store,点击下一步。

4 点击完成,直至安装成功。

4

安装和配置 Portal for ArcGIS

4.1

安装前准备

4.1.1 安装包文件

安装dos2unix。

[root@agsenterprise arcgis]# yum install dos2unix

4.1.2 诊断当前环境是否满足 Portal for ArcGIS 安装要求

运行portaldiag脚本诊断当前环境是否满足 Portal for ArcGIS 的安装要求。

[arcgis@agsenterprise ~]$ PortalForArcGIS/portaldiag/portaldiag

当出现如下信息,说明当前环境满足需求,可安装Portal for ArcGIS。

There were 0 failure(s) and 0 warning(s) found:

4.2

安装 Portal for ArcGIS

这里利用console模式进行交互安装。

[arcgis@agsenterprise ~]$ cd PortalForArcGIS/
[arcgis@agsenterprise PortalForArcGIS]$ ./Setup -m console

安装完毕,显示如下信息,说明安装成功。

4.3

配置 Portal for ArcGIS

在浏览器中输入Portal for ArcGIS的访问地址 ,

https://agsenterprise.esrichina.com:7443/arcgis/home/开始进行Portal for ArcGIS的配置。

1 点击CREATE NEW PORTAL

2 设置初始管理员账户信息和Portal for ArcGIS站点的内容目录,点击CREATE开始创建。

5

安装和配置 Web Adaptor

5.1

安装前准备

5.1.1 安装 JDK

  • 解压JDK 解压后,移动到指定路径并重命名
[root@agsenterprise arcgis]# tar -zxvf jdk-12.0.2_linux-x64_bin.tar.gz 
[root@agsenterprise arcgis]# mv jdk-12.0.2 /home/jdk12
  • 配置JDK环境变量

1 编辑/etc/profile,配置JDK环境变量。

# /etc/profile
JAVA_HOME=/home/jdk8
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

2 运行 source /etc/profile,使JDK环境变量配置生效。 3 验证JDK配置

5.1.2 安装tomcat

  • 解压tomcat
[root@agsenterprise arcgis]# tar -zxvf apache-tomcat-9.0.19.tar.gz 
[root@agsenterprise arcgis]# mv apache-tomcat-9.0.19 /home/tomcat9
  • 创建自签名证书

1 创建私钥和证书请求 依次根据以下命令生成证书,看截图:

至此证书生成完毕。

  • 对tomcat启用ssl

编辑tomcat的server.xml文件,1) 将8080端口号修改为80;2) 将8443端口修改为443;3) 取消端口号8443对应的connector的注释,并启用ssl。

[root@agsenterprise home]# vi /home/tomcat9/conf/server.xml

1 将8080端口号修改为80。

2 取消端口号8443对应的connector的注释,将8443端口修改为443,并启用ssl。

  • 启动和验证tomcat

运行startup.sh启动tomcat。

用http://域名 和https://域名 访问出现如下界面说明tomcat已经配置并启动成功。

5.2

安装和部署Web Adaptor

5.2.1 安装 Web Adaptor

以静默模式安装Web Adaptor。

[arcgis@agsenterprise WebAdaptor]$ ./Setup -m silent -l Yes

看到如下信息,说明Web Adaptor安装成功。

[ArcGIS Web Adaptor (Java Platform) 11.0 Installation Details]
UI Mode..................silent
Agreed to Esri License...yes
Installation Directory.../home/arcgis/webadaptor11.0

Starting installation of ArcGIS Web Adaptor (Java Platform) 11.0...
...ArcGIS Web Adaptor (Java Platform) 11.0 installation is complete.

5.2.2 部署Web Adaptor到tomcat下

依次部署名为portalwa和serverwa的Web Adaptor应用到 tomcat下,用于实现对Portal for ArcGIS和ArcGIS for Server的配置。

[root@agsenterprise home]# cp /home/arcgis/webadaptor11/java/arcgis.war /home/tomcat9/webapps/portalwa.war
[root@agsenterprise home]# cp /home/arcgis/webadaptor11/java/arcgis.war /home/tomcat9/webapps/serverwa.war

5.3

配置 Web Adaptor

当通过浏览器对Portal for ArcGIS和ArcGIS for Server配置Web Adaptor时,要求必须在Web Adaptor所在的机器上。因此,当从非Web Adaptor所在机器的其他客户端配置Web Adaptor时,需要以命令行的形式。

5.3.1 对Portal for ArcGIS配置名为portalwa的Web Adaptor

先切换到arcgis账户

[root@agsenterprise tools]# su arcgis
[arcgis@agsenterprise tools]$ ./configurewebadaptor.sh -m portal -w https://agsenterprise.esrichin ... aptor -g agsenterprise.esrichina.com -u portaladmin -p 12345678
Successfully Registered.

返回** Successfully Registered.**说明配置成功,即可通过webadaptor访问Portal for ArcGIS。

5.3.2 对ArcGIS for Server配置名为serverwa的Web Adaptor

[arcgis@agsenterprise tools]$ ./configurewebadaptor.sh  -m server -w https://agsenterprise.esrichin ... aptor -g agsenterprise.esrichina.com -u siteadmin -p 123456 -a true
Successfully Registered.

返回** Successfully Registered.**说明配置成功,即可通过webadaptor访问ArcGIS for Server。

6

实现 Portal 和 Server 的托管

1 登录 Portal for ArcGIS 2 依次点击My Organization->EDIT SETTINGS->Servers,然后点击 add server site。

3 在弹出的Add ArcGIS Server对话框上设置Services URL、Administration URL,和主站点管理员账户的用户名和密码,点击ADD。

4 对Hosting Server选中联合的Server,即agsenterprise.esrichina.com/server。

5 点击SAVE保存。

7

Linux上设置开机自启动

7.1

server的开机自启动

(1)切换至root账户下

将 < Server安装目录>/framework/etc/scripts/arcgisserver.service 单元文件复制到 /etc/systemd/system。

将 /etc/systemd/system/arcgisserver.service 的文件权限从 700 更改为 600

# cp /home/arcgis/arcgis/server/framework/etc/scripts/arcgisserver.service /etc/systemd/system
# chmod -R 600 /etc/systemd/system/arcgisserver.service

2)仍然以root的身份运行# systemctl enable arcgisserver.service命令,以在 /etc/systemd/system/multi-user.target.wants 中自动创建链接

3)验证 systemd 服务是否配置正确,请重新启动服务后检查其状态。

# systemctl stop arcgisserver.service
# systemctl start arcgisserver.service
# systemctl status arcgisserver.service

7.2

portal的开机自启动

(1)切换至root账户下,

将<Portal安装目录>/framework/etc/arcgisportal.service单元文件复制到/etc/systemd/system

文件复制完成后,请确认 /etc/systemd/system/arcgisportal.service 已将其文件权限设置为 600

# cp/home/arcgis/arcgis/portal/framework/etc/arcgisportal.service /etc/systemd/system
# chmod -R 600 /etc/systemd/system/arcgisportal.service

(2) 仍然以root用户的身份运行命令

# systemctl enable arcgisportal.service

以在 /etc/systemd/system/multi-user.target.wants 中自动创建链接: (3)验证 systemd 服务是否配置正确,请重新启动服务后检查其状态。

# systemctl stop arcgisportal.service
# systemctl start arcgisportal.service
# systemctl status arcgisportal.service

7.3

datastore的开机自启动

(1)切换至root账户下,

将<ArcGIS Data Store 安装目录>

/framework/etc/scripts/arcgisdatastore.service

复制到 /etc/systemd/system

将 /etc/systemd/system/arcgisdatastore.service 的权限从 700 更新为 600。

# cp /home/arcgis/arcgis/datastore/framework/etc/scripts/arcgisdatastore.service /etc/systemd/system
# chmod -R 600 /etc/systemd/system/arcgisdatastore.service

(2)仍然以root的身份运行# systemctl enable arcgisdatastore.service命令,以在 /etc/systemd/system/multi-user.target.wants 中自动创建链接 (3)验证 systemd 服务是否配置正确,请重新启动服务后检查其状态。

# systemctl stop arcgisdatastore.service
# systemctl start arcgisdatastore.service
# systemctl status arcgisdatastore.service

7.4

Tomcat设置自启动

根据你的Linux操作系统具体版本。 第一种:不支持systemctl的操作系统,参考

https://blog.csdn.net/smss007/article/details/77649634

第二种:支持systemctl 的操作系统,参考:

http://zhihu.geoscene.cn/article/3880

重新启动操作系统,然后验证是否能正确重启。

8

统一证书

在单机环境下,为了确保ArcGIS for Server、Portal for ArcGIS和Web 服务器三个层面证书的统一,可将ArcGIS for Server和Portal for ArcGIS的证书更新为Web服务器的同一证书。

不统一证书有可能造成后期使用过程中各种问题,比如三维服务发布失败等。

8.1

对 ArcGIS for Server更新证书

1 访问 ArcGIS for Server 的 admin 页面,即

https://agsenterprise.esrichina.com:6443/arcgis/admin/

输入用户名和密码登录。

2 导航至 machines -> Machines下机器名,

如AGSENTERPRISE.ESRICHINA.COM -> sslcertificates,点击importExistingServerCertificate。输入agsenterprise.pfx的路径和密码,设置证书别名,点击 Submit。

3 返回至Machines - 机器名即

Machine - AGSENTERPRISE.ESRICHINA.COM页面,点击edit。

4 在Edit Machine页面上,,设置 Web server SSL Certificate的值为步骤2中的证书别名如 agsenterprise以引用上述证书,点击 Save Edits。

如上,完成了对 ArcGIS for Server 的证书更新。

8.2

对 Portal for ArcGIS更新证书

1 访问 Portal for ArcGIS 的admin页面,

即 https://agsenterprise.esrichin ... dmin/ ,输入用户名和密码登录。 2 导航至 security -> sslCertificates,点击importExistingServerCertificate。输入agsenterprise.pfx的路径和密码,设置证书别名,点击 import。

3 在 sslCertificate 页面上点击 Update。 4 在 Update Web Server Certificate 页面上,输入步骤2中的证书别名引用上述证书,点击 Update。

如上,完成了对Portal for ArcGIS的证书更新。

8.3

在客户端机器上安装证书

将证书安装到计算机的受信任的根证书颁发机构。 1 在浏览器中打开 Portal for ArcGIS,

如https://agsenterprise.esrichina.com/portalwa/home/。 2 点击 Internet 选项 -> 安全,选中 受信任的站点,点击 站点,将 https://agsenterprise.esrichina.com 添加 到 受信任的站点 列表。

3 点击证书错误,在弹出的不受信任的证书对话框中,点击查看证书。 4 在弹出的证书对话框中,点击安装证书。 5 选择弹出位置本地计算机,点击下一步。 6 指定将所有的证书都放入下列存储并选中受信任的根证书办法机构,点击确定。

7 点击下一步->完成,直至证书安装成功

统一证书更详细的操作可考 :

https://blog.csdn.net/weixin_44616652/article/details/104834774

至此,在linux单机环境下的基础部署就此完成。

本文转载于网络 如有侵权请联系删除

相关文章

  • mybatis generator逆向工程使用

    项目中有大量表格,可以使用mybatisgenerator来逆向生成代码: 首先在pom文件中引入:<build> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> </plugin> </plugins> </build>复制写好配置文件:<?xmlversion="1.0"encoding="UTF-8"?> <!DO

  • Ubuntu20.04修改ip地址的方法示例

    说明:今天在继续上次的办公协作平台实验的时候发现虚拟机因为之前是DHCP的方式获取的ip地址,而这次虚拟机开机后DHCP获取的地址变更了,因为网站上已经配置了固定ip地址访问,导致不能访问网页,所以需要修改ip地址为上次获取的ip地址才能访问,查了一下ubuntu怎么修改ip地址才发现“ubuntu从17.10开始,已放弃在/etc/network/interfaces里固定IP的配置,即使配置也不会生效,而是改成netplan方式,配置写在/etc/netplan/01-netcfg.yaml或者类似名称的yaml文件里” 话不多说,直接说netplan怎么修改ip地址0x00使用ifconfig命令查看网卡ifconfig复制0x01修改yaml配置文件sudovi/etc/netplan/00-installer-config.yaml network: ethernets: ens33:#配置的网卡的名称 addresses:[192.168.31.215/24]#配置的静态ip地址和掩码 dhcp4:no#关闭DHCP,如果需要打开DHCP则写yes optional:tr

  • 什么是云原生?

    云原生(CloudNative)是最近技术圈一个比较火的名词,相信大家或多或少都听说过。不过对于大多数普通研发朋友来说,"云原生"这个词多少可能还是有些陌生,以至于刚开始听到这个词时可能还会一脸懵逼的问"这到底是一个什么技术,我用过吗?"这样的问题。其实这并不奇怪,因为对于绝大多数普通开发者来说,我们大部分时间都是在别人构建的基础设施里专注于业务代码的开发,而很少关心业务应用运行所依赖的基础设施环境,但这恰恰也是构建云原生应用的核心意义所在。在今天的文章中,就和大家聊一聊关于云原生的话题!云原生的概念什么是云原生?对于这个问题我们需要理解,云原生并不是指某一项具体的技术,而是一组技术体系、概念及系统设计原则的集合。例如我们常讨论的微服务架构、Kubernetes容器编排、Devops等内容都是云原生体系的组成部分。从这个角度看,对于目前已经实现了云服务部署、SpringCloud微服务架构体系、Kubernetes容器化部署、且构建起了一套自动化发布系统的公司来说,事实上就已经是在践行云原生架构理念了。所以,你看是不是很多公司其实都已经在实施云原

  • 构建AI新生态,“软件定义”摄像机打造机器智能新捷径

    如今,新基建的浪潮已经席卷了几乎所有社会经济领域。各行各业都希望借助新基建普及的东风,搭上数字化经济的帆船。AI作为推动社会科技进步的原动力,一直受到社会各界的普遍关注,而机器视觉作为人工智能发展的重要分支,尤其在安防领域发展飞速。两年前,华为就提出了“软件定义”的概念,提出了机器视觉前端智能化的几点优势,如今,软件定义摄像机的出现将这一切变成了现实。8月26日,华为机器视觉与InfoQ联合举办的DevRun开发者沙龙·华为机器视觉技术开放日-杭州专场,在华为杭州研究所成功举办。本次沙龙邀请到华为机器视觉多位资深技术专家对摄像机App开发、摄像机AI模型转换与精度分析、摄像机AI模型部署与推理等几个议题做了深度分享,沙龙介绍了AI算法实践以及软件定义摄像机的特点和功能。华为机器视觉专家们还通过实操环节为与会开发者们进行了演示。什么是软件定义摄像机?华为机器视觉营销专家孟杭理就华为软件定义摄像机(Software-DefinedCamera,简称SDC)进行了介绍。面向不同的行业和不同的算法性能要求,华为X、M、C、D四大系列软件定义摄像机提供了开放的接口和强劲的算力,开放者基于软件定义

  • 非阻塞算法(Lock-Free)的实现

    上篇文章我们讲到了使用锁会带来的各种缺点,本文将会讲解如何使用非阻塞算法。非阻塞算法一般会使用CAS来协调线程的操作。虽然非阻塞算法有诸多优点,但是在实现上要比基于锁的算法更加繁琐和负责。本文将会介绍两个是用非阻塞算法实现的数据结构。非阻塞的栈我们先使用CAS来构建几个非阻塞的栈。栈是最简单的链式结构,其本质是一个链表,而链表的根节点就是栈顶。我们先构建Node数据结构:publicclassNode<E>{ publicfinalEitem; publicNode<E>next; publicNode(Eitem){ this.item=item; }}复制这个Node保存了内存item和它的下一个节点next。然后我们构建非阻塞的栈,在该栈中我们需要实现pop和push方法,我们使用一个Atomic类来保存top节点的引用,在pop和push之前调用compareAndSet命令来保证命令的原子性。同时,我们需要不断的循环,以保证在线程冲突的时候能够重试更新。publicclassConcurrentStack<E>{ AtomicRefer

  • 什么是5G?关注MWC 2019前你需要了解这些知识

    选自digitaltrends作者:ChristiandeLooper机器之心编译 参与:路5G是什么?5G的工作原理是什么?5G可应用到哪些领域?5G什么时候能够真正实现?美国运营商、中国运营商在5G竞赛中做了什么?5G竞赛中重要参与者都有谁?5G智能手机值不值得购买?本文将为你解答这些问题。5G的研发已有将近十年,终于快要变成现实。2018年,运营商开始在选定城市中实施固定(fixed)5G,2019年美国将出现移动5G,预计2020年5G将覆盖更多区域。目前与5G相关的问题似乎比答案还多。一些人思考到底什么是5G、他们的城市里是否会出现5G,还有一些人对5G智能手机更感兴趣。当然,还有人在争论哪个运营商拥有最好的5G服务。如果你对5G有问题,请看此文。这里有你想了解的关于5G的一切。5G的工作原理在解释5G工作原理之前,我们先来看什么是5G。5G即第五代移动通信系统,将最终取代或者至少增强你的4GLTE连接。5G可使下载和上传速度指数倍增加,延迟(即设备与无线网络之间通信的时间)大大下降。接下来我们来看5G的工作原理,这与传统4GLTE大不相同。频谱图源:https://www.

  • 腾讯云多媒体处理新增人声分离模板api接口

    功能描述CreateMediaTemplate用于新增人声分离模板。 请求请求示例POST/templateHTTP/1.1 Host:<BucketName-APPID>.ci.<Region>.myqcloud.com Date:<GMTDate> Authorization:<AuthString> Content-Length:<length> Content-Type:application/xml <body>复制 说明: Authorization:AuthString(详情请参见请求签名文档)。 请求头此接口仅使用公共请求头部,详情请参见公共请求头部文档。 请求体该请求操作的实现需要有如下请求体。 <Request> <Tag>VoiceSeparate</Tag> <Name>TemplateName</Name> <AudioMode>IsAudio</AudioMode> <AudioCo

  • 随笔记一些莆田话

    莆田话是闽南话和福州话混合的产物,当然也是古汉语保留至今的珍宝。很多莆田话的词语是有源可溯的。这里记录一些平常想到的又可能不为人知的词语。 莆田话——普通话解释   物件——东西 万代——很多 先生——老师(先生白读时是老师的意思),先生(先生文读时就是先生) 头家(常用头鸡,其实是头家的闽南话发音)——领导 之后想到再加……

  • 金融项目测试 接口自动化 安全测试

    一。专业术语 本金 利息 利率 等额本息:利息均摊,先息后本,每个月固定 等额本金:长期利息少,按剩余本金均摊 二。项目介绍 P2P借贷平台  

  • Fine-tune with Pretrained Models

    Gluon版本微调见这里。基于NDarray,类似于Pytorch动态图。而module版本类似于TF,基于Symbol,用的是静态graph。一般静态图用于快速调试见效果,而静态图效率高,速度快,实际中应更多使用。 本文基于module和symbol。利用imagenet训好的模型来微调caltech-256数据集。首先是制作数据: 训练集每类随机采样60张图,其余作为验证集。将图像resize成256,并打包成rec文件: wgethttp://www.vision.caltech.edu/Image_Datasets/Caltech256/256_ObjectCategories.tar#下载解压 tar-xf256_ObjectCategories.tar mkdir-pcaltech_256_train_60#划分数据集,训练集每类60张图 foriin256_ObjectCategories/*;do c=`basename$i` mkdir-pcaltech_256_train_60/$c forjin`ls$i/*.jpg|shuf|head-n60`;do mv$

  • 通过logistic预测digital number

    02.WorkingwithImages&LogisticRegressioninPyTorchnote Imports 1.引包 importtorch importtorchvision fromtorchvision.datasetsimportMNIST#下载数据 importtorchvision.transformsastransforms#将灰度图片转化为tensor importmatplotlib.pyplotasplt#画图,打印datasets里的图片数据 fromtorch.utils.dataimportrandom_split#随机划分,用于划分出验证集 importpylab#辅助plt绘图 复制 2.下载训练数据,并预处理数据 MNIST是一个图片库,里面有很多label了的画了0~9数字的数据,全部用灰度表示。所有的图片均为28*28 #train默认为true为true就是下载训练数据为false就是测试数据训练数据有6w张,测试数据有1w张 dataset=MNIST(root='data/',download=True,transfor

  • C语言:类似linux内核的分等级DEBUG宏(打印宏)

    总结几种log打印printf函数的宏定义http://blog.chinaunix.net/uid-20564848-id-73402.html #include<stdio.h> #definelU_DEBUG_PREFIX"##########" #defineLU_DEBUG_CMD0x01 #defineLU_DEBUG_DATA0x02 #defineLU_DEBUG_ERROR0x04 #defineLU_PRINTF_cmd(msg...)do{if(g_lu_debugs_level&LU_DEBUG_CMD)printf(lU_DEBUG_PREFIXmsg);}while(0) #defineLU_PRINTF_data(msg...)do{if(g_lu_debugs_level&LU_DEBUG_DATA)printf(lU_DEBUG_PREFIXmsg);}while(0) #defineLU_PRINTF_error(msg...)do{if(g_lu_debugs_level&LU_DEBUG_ERROR)p

  • 5年开发不如新人,反例何其多,望君惜前路

    最怕不过是不知道到自己想要什么,又无法安心做好眼下的事,最后一无所获。-洛夫斯基.小作   小作,90后,高中毕业后,在三本与职业培训中抉择,最终进入了IT行业名声相当不好的培训机构。 两年不到的培训时间,三个学期,近四万的学费,学习了网页制作,数据库操作,C#,JAVA等相关技术。   毕业季,小作陆续参加学校推荐的几个公司面试,有包吃住远在郊区工厂的2k的工作,有各种外包公司2k5,3k的工作,有各种校友创业开的小公司。 最后选择了一家规模不到20人的旅游系统公司,不包吃不包住,月薪3k,就这样开启了自己的码农生涯。   进入公司没多久,小作偶尔浏览CSDN,当时某马刚开始招生没几期,宣传网站上写的十分吸引他,据说还能工作后分期还款。 于是默默地报名,线上考试,各种加群,写博文,最终获取了入学资格,却说小作学历不够,需要先付学费,因此作罢。   第一家公司不到半年经历了空降高管,内部管理混乱,资金周转不灵等变故最终遣散了大部分员工。 机缘巧合,小作之后又进了一家做企业ERP的外包公司,月薪3k5,在甲方公司工作,每天还要签字打卡,甲方许多对接

  • 计算复杂性理论——正则表达式

    正则表达式提过的三种运算符的优先级顺序: Kleene星号 接合 并   进步是留给时间最美的礼物

  • shift 函数

      DataFrame.shift(periods=1,freq=None,axis=0)复制   参数 periods:类型为int,表示移动的幅度,可以是正数,也可以是负数,默认值是1,1就表示移动一次,注意这里移动的都是数据,而索引是不移动的,移动之后没有对应值的,就赋值为NaN。 freq:DateOffset,timedelta,ortimerulestring,可选参数,默认值为None,只适用于时间序列,如果这个参数存在,那么会按照参数值移动时间索引,而数据值没有发生变化。 axis:{0,1,‘index’,‘columns’},表示移动的方向,如果是0或者’index’表示上下移动,如果是1或者’columns’,则会左右移动。   假如现在有一个DataFrame数据df,如下所示: indexvalue1 A 0 B 1 C 2 D 3 执行代码: df.shift()复制 indexvalue1 A NaN B 0 C 1 D 2   执行代码: df.

  • 从json-lib转成jackson的遇到的问题

    从json-lib转成jackson的遇到的问题 问题一:json字符串,再经过Jackson序列化之后就变成原生字符串了。而json-lib经过再序列化之后,还是json格式的串。 针对这种情况,可以写一个Serializer类,遇到json串的时候就当作原生字符串写入即可。 <<JsonStringSerializer>>  /** *序列化时,对Json格式的字符串做特殊处理:不用引号括起来 *@author * */publicclassJsonStringSerializerextendsJsonSerializer<Object>{      @Override   publicvoidserialize(Objectvalue,JsonGeneratorjgen,SerializerProviderprovider)throwsIOException{    

  • 使用矩不变量匹配图像

      在图像模式匹配中,可以使用图像矩不变量进行形态匹配,具体如下: 1图像的矩   图像的(p+q)阶矩可表示为  ,   当同一图像发生平移后,除了  保持不变,其他高阶矩均会发生改变,为了使图像矩的平移不变,需要引入中心矩。   使用以下公式 可得到图像中心,   图像中心矩可表示为 。   图像中心矩与图像矩之间存在一个固定的关系,在时间计算中,一般可以遍历图像以求解到图像矩,   然后根据中心矩与矩之间的关系可直接计算出中心矩形,公式如下:                   当同一图像发生缩放变化后,所有中心矩都发生了改变,为了保持缩放不变性,需要引入归一化中心矩。   定义  可对中心矩归一化。 &n

  • Linova and Kingdom CodeForces - 1336A

    贪心好难啊,不好猜。 这道题的话,易得,如果一个节点是工业区的话,它的子节点也都是工业区,因为否则我们对调该节点和子节点,答案就多了1。所以说是先选子节点在选择父节点作为工业区,同理如果假定全为工业区,我们选择旅游区的话,我们应该先选择父节点为旅游区,所以我们选择策略时要避开这种情况,我们先不考虑这种情况,在得出的策略中判断是否会出现这种情况,如果不出现这种情况则说明这种策略可以用。 我们先假设全部都是工业区,那么快乐值为0,如果我们把某一个设成旅游区,那么快乐值会变成sub-deep,其中sub是包括本身和子节点的和,比如样例1中1的sub就是8,7个子节点包括自己就是8了,deep就是深度,我们假定root的deep为1,那么样例1的root就为1,这样如果把1变成旅游区快乐值就能加8-1=7(注意k是工业区的数量,旅游区的数量为n-k)。为什么是这样呢?众所周知,该节点如果变成了旅游区,那么它的子节点的快乐值都会加1,这就加了sub-1了,但是由于自己变成了旅游区,自己的快乐值就没了,减少了deep-1(因为根据第一段的策略,在选此节点作为旅游区时,其父节点必都为旅游区)。这样,

  • 关于设计模式(起源分类)

    设计模式最早可追溯到1970年亚历山大Alexander的著作《建筑的永恒之道》 书中如此描述:模式是由3部分组成的通用规则 特定环境 一类问题 一个解决方案 每个模式描述不断重复发生的问题,及其解决方案的核心设计 设计模式的正式提出 软件领域的设计模式,是由ErichGamma等1990年提出的 设计模式分类 创建型 结构型 行为型 创建型 研究如何创建对象 注意:并非是直接实例化对象 程序根据特定场景,选择创建对象的方式,从而保证性能,确定架构优势 常见的有: 工厂模式 单例模式 原型模式 生成器模式 结构型 组织对象,形成复杂结构 常见的有: 适配器模式 桥接模式 组合器模式 装饰器模式 门面模式 亨元模式 代理模式 行为型 处理对象间的信息交流和系统流程控制 常见的有: 访问者模式 中介者模式 命令模式 解释器模式 模板模式 迭代器模式 观察者模式 备忘录模式 状态模式 策略模式

  • hdoj 1874 dijkstra

    在做PAT的甲1003,思考DFS和图什么的,时间紧张直接去看柳神(日后上传柳神的C++版本)的订阅,得知是dijkstra,转去用hdoj1874练手,写了两天,终于调出来了   题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 题目大意:给你点和边的数目,接下来输出边的信息(a,b,c表示a和b之间距离为c),最后给你两个数字,表示两点的点信息。让你输出最短路径,没有就-1. 解题思路:dijkstra的思想是贪心,越想越经典。 起始动作就是从出发点开始,把其余所有点到出发点的最近距离存储下, 接下来的动作就是逐渐辐射, 方法是:存储:找到距离出发点最近的点记录下来(从存储的所有点中遍历),这个点就是出发点到这个点的最近距离,   批量处理:下一次把这个点作为过渡,如果起点到这个点+这个点到其他某点的距离<起点直接到其他某点的距离,就把起点直接到某点的距离更新为通过过度得到的距离,相当于把所有的更新存储的一下。 再接着执行,直到没有新的点可以加入作为过度为止(注意:每次得出的过度点是上一次得到的,然后上一次得到过

  • Word2013文档中如何批量调整图片大小

    在我们用Word2013编辑器文档的时候,经常会遇到打印一些图片的情况,但是手工插入后图片后,打印出来有些乱,很不美观,特别是有多个图片的情况时。以下是学习啦小编为您带来的关于Word2013批量调整图片大小,希望对您有所帮助。   Word2013批量调整图片大小   1、新建一个Word文档,然后点击菜单栏上的“布局”菜单   2、接下来点击工具栏上的箭头所指的位置,打开Word页面设置窗口   3、在页面设置窗口中,我们把页边距设置为0.5厘米,然后调整纸张方向为横向   4、接着点击菜单栏上的“插入”菜单项,在打开的插入工具栏上点击“图片”按钮,在打开的窗口选择要插入的图片文件,把需要打印的图片全部插入到文档中   5、然后点击菜单栏上的“视图”菜单项,接着点击工具栏上的“宏”按钮   6、在打开的宏设置窗口中,为要编辑的宏设置一个名称,如“调整照片大小”,然后点击右侧的“创建”按钮   7、在打开的代码输入框中输入以下代码:   DimiAsInteger   Fori=1ToActiveDocument.InlineShapes.Count   WithActi

相关推荐

推荐阅读