本文基本参照了LBM的用户手册进行。

环境:Ubuntu 18.04LTS (Windows Subsystem Linux)

编译器:gfortran 7.5.0

安装包:

lapack-3.9.0.tar.gz 下载地址 https://codeload.github.com/Reference-LAPACK/lapack/tar.gz/v3.9.0

lapack-3.8.0.tar.gz 下载地址 http://www.netlib.org/lapack/lapack-3.8.0.tar.gz
lapack-3.2.tgz 下载地址 http://www.netlib.org/lapack/lapack-3.2.tgz

ln_solver2.2.tar.gz (需要给作者发邮件下载)下载地址 https://ccsr.aori.u-tokyo.ac.jp/~hiro/access_lmtd/ln_solver2.2.tar.gz

注意:请去https://ccsr.aori.u-tokyo.ac.jp/~lbm/sub/lbm_4.html 下载最新的代码和补丁包,因为老的代码bug太多,且资料不全。

0 文件准备

新建一个文件夹,把需要用到的安装包移到这个文件夹

jiang@jiang:/mnt/d/WSL/LBM$ ls
lapack-3.9.0.tar.gz  ln_solver2.2.ecmdata.tar.gz  ln_solver2.2.ncepdata.tar.gz  ln_solver2.2.tar

1 安装lapack.3.9.0

安装lapack-3.2 (似乎是能兼容的最新版本)

jiang@jiang:/mnt/d/WSL/LBM$ tar -xzvf lapack-3.9.0.tar.gz
jiang@jiang:/mnt/d/WSL/LBM$ cd lapack-3.9.0/
jiang@jiang:/mnt/d/WSL/LBM/lapack-3.9.0$ cp make.inc.example make.inc

(注:对于intel编译器,需要修改CC=icc, FC=ifort, 另外就是TIMER    = EXT_ETIME_ 参考自http://blog.sciencenet.cn/blog-349974-615188.html)

编辑 Makefile  vi Makefile

找到 lib: 选项。默认的情况是不编译 blas 库的。需要修改这一行改为

lib: blaslib variants lapacklib tmglib

再编译这些库

make

此时,在该目录下会生成如下库文件: liblapack.a, librefblas.a, libtmglib.a  blas_LINUX.a, lapack_LINUX.a, tmglib_LINUX.a,variants_Linux.a

将它们复制到需要的目录下

2 安装ln_solver2.2

2.0 解压安装包,设置环境变量

jiang@jiang:/mnt/d/WSL/LBM$ tar -xzvf ln_solver2.2.tar.gz
jiang@jiang:/mnt/d/WSL/LBM$ export LNHOME=/mnt/d/WSL/LBM/ln_solver

2.1 根据实际情况,修改$LNHOME/Lmake.inc文件。 vi $LNHOME/Lmake.inc 

因为是linux系统,所以将ARC这行改为

ARC = linux

根据使用资料的分辨率,修改对应行 (HRES, VRES等变量):

###### Horizontal Resolution ################
#HRES = t10
HRES = t21
#HRES = t42 ###### Vertical Resolution ################
#VRES = l1
#VRES = l5
#VRES = l8
#VRES = l11
VRES = l20 ###### Zonal wave truncation ################
#ZWTRN =
#ZWTRN = m15
#ZWTRN = m10
ZWTRN = m5
#ZWTRN = m6

2.2 根据使用的编译器情况,酌情修改./model/src/sysdep/Makedef.linux文件中编译器的定义。  vi $LNHOME/model/src/sysdep/Makedef.linux 

CC,FC和LD分别指定了C编译器,Fortran编译器和链接器,根据实际,进行修改。

修改了这些

CC = gcc
FC = gfortran
LD = gfortran

2.3 编译生成 静态库文件。由于默认的安装包没有linux文件夹,需要自行创建(在lib和bin两个地方都要创建)

jiang@jiang:/mnt/d/WSL/LBM/ln_solver$ mkdir $LNHOME/model/lib/linux

jiang@jiang:/mnt/d/WSL/LBM/ln_solver$ mkdir $LNHOME/model/bin/linux

jiang@jiang:/mnt/d/WSL/LBM/ln_solver$ cd $LNHOME/model/src

jiang@jiang:/mnt/d/WSL/LBM/ln_solver/model/src$ make lib

如果没有报错,并且在$LNHOME/model/lib/linux目录下会生成LBM库文件,应该就没问题了。

这个库文件的文件名反映了模拟的设置,比如你用的LBM版本号是2,模式的水平分辨率是T21,模式层20层的,文件名就是liblbm2t21ml20c.a

注意:有时候虽然目录下生成了静态库文件,但编译时出现错误,表明还没编译成功

比如出现如下错误: make[1]: *** No rule to make target 'yylinux.o', needed by 'lib'.  Stop. 这种情况说明编译时yylinux.o没有生成。

一个笨重的解决办法是进入$LNHOME/model/src/sysdep目录,手动生成这个文件:

cd $LNHOME/model/src/sysdep
gcc -c yyLinux.c

然后返回到$LNHOME/model/src,继续编译make (记住不要make clean),如果没有报错,那么就成功了

另一个相对不那么笨重的办法是修改$LNHOME/model/src/sysdep目录下的Makefile 文件,然后重新编译 vi $LNHOME/model/src/sysdep/Makefile

将lib这一段进行修改,加入 yy$(SYSTEM).c这个文件的实现规则(红色字体部分)

1 lib:            $(OBJS) yy$(SYSTEM).c
2 $(CC) -c yy$(SYSTEM).c
3 $(AR) $(LIBRARY) $(OBJS)
4 $(RANLIB) $(LIBRARY)

注意: 上面第2-4行前面为TAB键,并非空格

2.4准备基本态

在 $LNHOME/bs/grads 和 $LNHOME/bs/gt3 文件夹提供了几种基本态。例如ncepwin.t21l20.grd是对于T21L20模式的基本态,从1958-1997冬季平均的NCEP/NCAR再分析数据得到的。而erawin.t21l20.grd是对于T21L20模式的基本态,从1961-90年 ECMWF的再分析(ERA 40)数据得到的。可以使用一个工具去从从NCEP-NCAR或者ECMWF再分析中 将观测气候场作为平均态.

2.4.1NCEP-NCAR 基本态

1) 将ln_solver2.2.ncepdata.tar.gz文件放到 $LNHOME 目录下,随后进入 $LNHOME 目录,解压

cd $LNHOME
tar -xzvf ln_solver2.2ncapdata.tar.gz

在 $LNHOME/bs/ncep 目录下会发现6个GrADS文件和对应的ctl文件,分别对应了三种不同水平分辨率的气候资料。

2) 随后,编译工具

需要先在 $LNHOME/solver/include  目录下创建make.inc.linux,这里参考 $LNHOME/solver/include/make.inc.sgl  文件进行修改,并在该文件中指定刚才安装的lapack库文件所在路径

vi $LNHOME/solver/include/make.inc.linux

这是我用的make.inc.linux,记住根据自己的实际情况,修改对应编译器和库,把 BLASLIB、LAPACKLIB、和TMGLIB 这三个库的路径写对:

#  The machine (platform) identifier to append to the library names
#
PLAT = linux
#
# Modify the FORTRAN and OPTS definitions to refer to the
# compiler and desired compiler options for your machine. NOOPT
# refers to the compiler options desired when NO OPTIMIZATION is
# selected. Define LOADER and LOADOPTS to refer to the loader and
# desired load options for your machine.
#
FORTRAN = gfortran
OPTS = -O3 -u -static
NOOPT =
LOADER = gfortran
LOADOPTS =
#
# The archiver and the flag(s) to use when building archive (library)
# If you system has no ranlib, set RANLIB = echo.
#
ARCH = ar
ARCHFLAGS= cr
RANLIB = echo
#
RM = rm -f
CP = cp -f
MV = mv -f
#
# The location of the libraries to which you will link. (The
# machine-specific, optimized BLAS library should be used whenever
# possible.)
#
BLASLIB = /mnt/d/WSL/LBM/lapack-3.9.0/librefblas.a
LAPACKLIB = /mnt/d/WSL/LBM/lapack-3.9.0/liblapack.a
TMGLIB = /mnt/d/WSL/LBM/lapack-3.9.0/libtmglib.a
#EIGSRCLIB =
#
# LBM library
#
LDLIBS = $(LNHOME)/model/lib/$(ARC)/liblbm2$(HRES)m$(VRES)c.a
#
# byte unit
#
MBYT = 4

将之前编译好的lapack 库链接到指定目录下(注意正确的路径)

3)创建linux文件夹,编译生成 ncepsbs可执行文件

mkdir  $LNHOME/solver/lib/linux/
cd $LNHOME/solver/util
make bs

目前出现问题,缺失rewnml函数文件,待完成后更!

经过检查发现,这个函数的实现位于model/ylinux中,而联想到编译liblbm2t21ml20c.a静态库时出现的一个错误,最后确认是Lmake.inc没有正确指定C编译器。

此时路径下应该生成了可执行文件ncepsbs。

4) 指定文件名称和参数,从而通过时间平均,创建基本态,将垂直坐标从气压坐标转换成σ坐标。

设置初始场的选项,根据实际情况,修改SETPAR这个文件  $vi $LNHOME/solver/util/SETPAR

需要注意的是,垂直层次的基本态已经在Lmake.inc中指定,如果想要考察在夏季(JJA)的线性响应,可以通过指定如下来准备夏季基本态 (如起始月份kmo,平均时段navg)

&nmncp cncep='/mnt/d/WSL/LBM/ln_solver/bs/ncep/ncep.clim.y58-97.t21.grd',
       cncep2='/mnt/d/WSL/LBM/ln_solver/bs/ncep/ncep.clim.y58-97.ps.t21.grd',
       calt='/mnt/d/WSL/LBM/ln_solver/bs/gt3/grz.t21',
kmo=6, navg=3, ozm=f, osw=f, ousez=t
&end

&nmbs cbs0='/mnt/d/WSL/LBM/ln_solver/bs/gt3/ncepsum.t21l5',
cbs='/mnt/d/WSL/LBM/ln_solver/bs/grads/ncepsum.t21l5.grd'
&end 

或者,通过选择 ozm=t 来获取纬向均一基本态。当你指定上述参数后,执行 ./ncepsbs 将会创建基本态。会生成两个文件,它们的名称分别由cbs0和cbs变量指定,是Gtool和GrADS格式的。此处可以看到在 $LNHOME/bs/gt3/ 和 $LNHOME/bs/grads/目录下分别生成了这两个文件。

看看如下输出:

注:#巨坑#!官方提供的初始场(包括NCEP和ECMWF的)是在SUN机器上写的,字节序为Big_Endia,正常PC机器写的二进制的字节序是Little_Endian。在用gfortran编译器编译时,执行 ./ncepsbs会报错,无法读取数据。这个时候,需要告诉gfortran编译器环境变量 GFORTRAN_CONVERT_UNIT='big_endian'才能执行:

export GFORTRAN_CONVERT_UNIT='big_endian'
./ncepsbs

看看相应输出

jiang@jiang:/mnt/d/WSL/LBM/ln_solver/solver/util$ GFORTRAN_CONVERT_UNIT='big_endian' ./ncepsbs

 ### start making basic state ###

 ... selected month from:          12  ...
... number of month averaged: 3 ... @@ Input :/mnt/d/WSL/LBM/ln_solver/bs/ncep/ncep.clim.y58-97.t21.grd
@@ Input :/mnt/d/WSL/LBM/ln_solver/bs/ncep/ncep.clim.y58-97.ps.t21.grd
@@ Output:/mnt/d/WSL/LBM/ln_solver/bs/gt3/ncepsum.t21l5zm.sy
@@ Output:/mnt/d/WSL/LBM/ln_solver/bs/grads/ncepsum.t21l5zm.sy.grd ... data read start ...
... month = 12
... month = 1
... month = 2
... data read end ...
... Z used for Ps ...
*** precision check .. 1.1000000000000001
*** precision check .. 1.0100000000000000
*** precision check .. 1.0009999999999999
*** precision check .. 1.0001000000000000
*** precision check .. 1.0000100000000001
*** precision check .. 1.0000009999999999
*** precision check .. 1.0000001000000001
*** precision check .. 1.0000000099999999
*** precision check .. 1.0000000010000001
*** precision check .. 1.0000000001000000
*** precision check .. 1.0000000000100000
*** precision check .. 1.0000000000010001
*** precision check .. 1.0000000000000999
*** precision check .. 1.0000000000000100
*** precision check .. 1.0000000000000011
*** precision check .. 1.0000000000000000
... spectral smoothing for Ps ...
@@@ DSPHE: SPHERICAL TRANSFORM INTFC. 93/12/07
... P( 17 ) --> S( 20 ) transform OK ...
... write basic state ...
... spectral smoothing for U ...
... U ...
... spectral smoothing for V ...
... V ...
... spectral smoothing for T ...
... T ...
... Ps ...
... spectral smoothing for Q ...
... Q ...
... end execution ...

作为正压模式(c.f. section8),一个基本态仅仅包含流函数,如果你使用正压模式,参考section8,这描述了如何生成基本态。

2.4.2 ERA 40 基本态

1)对于使用ERA40数据的情况,将ECMWF数据ln_solver2.2.ecmdata.tar.gz拷贝到$LNHOME,随后执行

cd $LNHOME
tar -xzvf ln_solver2.2.ecmdata.tar.gz

2)设置初始场的选项,根据实际情况,修改SETPAR这个文件  $vi $LNHOME/solver/util/SETPAR

 &nmecm cecm='/mnt/d/WSL/LBM/ln_solver/bs/ecmwf/ERA40.clim.t21.grd',
calt='/mnt/d/WSL/LBM/ln_solver/bs/gt3/grz.t21',
kmo=6, navg=3, ozm=f, osw=f
&end

&nmbs cbs0='/mnt/d/WSL/LBM/ln_solver/bs/gt3/erasum.t21l5',
cbs='/mnt/d/WSL/LBM/ln_solver/bs/grads/erasum.t21l5.grd'
&end

同上面的巨坑一样,执行的时候要先设置好编译器的字节序

 export GFORTRAN_CONVERT_UNIT='big_endian'

./ecmsbs

 看看如下输出:

jiang@jiang:/mnt/d/WSL/LBM/ln_solver/solver/util$ GFORTRAN_CONVERT_UNIT='big_endian' ./ecmsbs

 ### start making basic state ###

 ... selected month from:           6  ...
... number of month averaged: 3 ... @@ Input :/mnt/d/WSL/LBM/ln_solver/bs/ecmwf/ERA40.clim.t21.grd
@@ Input :/mnt/d/WSL/LBM/ln_solver/bs/gt3/grz.t21
@@ Output:/mnt/d/WSL/LBM/ln_solver/bs/gt3/erasum.t21l5
@@ Output:/mnt/d/WSL/LBM/ln_solver/bs/grads/erasum.t21l5.grd ... data read start ...
... month = 6
... month = 7
... month = 8
... data read end ...
... topography data read end ...
... Z used for Ps (temporary) ...
*** precision check .. 1.1000000000000001
*** precision check .. 1.0100000000000000
*** precision check .. 1.0009999999999999
*** precision check .. 1.0001000000000000
*** precision check .. 1.0000100000000001
*** precision check .. 1.0000009999999999
*** precision check .. 1.0000001000000001
*** precision check .. 1.0000000099999999
*** precision check .. 1.0000000010000001
*** precision check .. 1.0000000001000000
*** precision check .. 1.0000000000100000
*** precision check .. 1.0000000000010001
*** precision check .. 1.0000000000000999
*** precision check .. 1.0000000000000100
*** precision check .. 1.0000000000000011
*** precision check .. 1.0000000000000000
... spectral smoothing for Ps ...
@@@ DSPHE: SPHERICAL TRANSFORM INTFC. 93/12/07
... P( 23 ) --> S( 20 ) transform for T and Q ...
... spectral smoothing for T ...
... spectral smoothing for Q ...
... SLP --> Ps ...
... spectral smoothing for Ps ...
... P( 23 ) --> S( 20 ) transform ...
... write basic state ...
... spectral smoothing for U ...
... U ...
... spectral smoothing for V ...
... V ...
... spectral smoothing for T ...
... T ...
... Ps ...
... spectral smoothing for Q ...
... Q ...
... end execution ...

3 稳定响应

LBM的一个主要用途是计算大气对规定强迫(如非绝热加热异常)的稳定响应。在这个软件包中,我们提供了三种获得稳态响应的方法。3.1中描述的第一种方法是模式的时间积分。这种方法通常用于获得稳定响应(如Jin和Hoskins 1995)。另外两种方法都是基于稳定模态动力学方程(the steady version of the dynamical equation)的矩阵反演。虽然它们肯定能确保响应是对强迫的精确稳定解,但矩阵求逆在计算上可能非常昂贵,尤其是对于第3.2节中介绍的第二种方法。由于获得稳定解的最佳方法取决于你想解决的问题,你应该根据自己的目的选择一种合适的方法。

3.1 时间积分

LBM的时间积分可以用与AGCM相似的方式进行,只是模型需要一个基本状态和初始扰动或稳态强迫,而不是边界和初始条件。输出文件包含以下8个(你不能添加或者删除变量):

  • 流函数 [m2 s-1]
  • 速度势 [m2 s-1]
  • 纬向风 [m s-1]
  • 经向风 [m s-1]
  • 气压层垂直速度(ω) [hPa s-1]
  • 温度 [K]
  • 位势高度 [m]
  • 表面压力 [hPa]

为了实现计算,有以下四步

3.1.1 生成模式二进制文件

在 $LNHOME/Lmake.inc 文件中指定'PROJECT = tintgr' 。注意在该文件中的纬向波截断和模式选项应当这样给定

###### Zonal wave truncation ################
ZWTRN =
#ZWTRN = m15
#ZWTRN = m10
#ZWTRN = m5
#ZWTRN = m6 ###### Model options ################ ### time-advance linear model (incl. storm track model)
######## dry model
MODELOPT = -DOPT_CLASSIC
######## moist model
#MODELOPT =
#MODELOPT = -DOPT_POSDEF
#MODELOPT = -DOPT_OUTPOSDEF

然后,输入以下命令

cd $LNHOME/model/src
make clean.special
make lbm

假设你选择了水平分辨率为T21和垂直20层,在Sun WS机器上。以上程序会在 $LNHOME/model/bin/sun/ 目录下生成libm2.t21ml20cintgr可执行文件。该可执行文件用于运行LBM

我们的情况(水平T21和20层,Linux系统),在 $LNHOME/model/bin/linux/ 也生成了对应的文件lbm2.t21ml20ctintgr。

3.1.2 强迫的准备 preparing forcing

在运行LBM之前。你需要准备一个GrADS文件的初始扰动或稳定强迫的数据(这两个文件都需要相同格式)。在 $LNHOME/sample/ 中可以找到一个使用T21L2分辨率进行强迫的例子。强迫文件frc.t21l20.classic.grd模拟了一种与厄尔尼诺有关的非绝热加热异常,可以用来测试你的模式。通过查看相应的.ctl文件可以清楚地了解到,该文件包含了所有的预测变量,因此可以进行其他类型的稳定强迫,例如涡度强迫而不是加热

我们也提供了一种工具,mkfrcng,可以容易地创建一个理想化的简单强迫。可以在编辑参数文件 $LNHOME/solver/util/SETPAR 后,创建强迫数据。例如。示例数据frc.t21l20.classic.grd是通过指定参数来实现的

 &nmfin cfm='/home/tropics/hiro/ln_solver/data/frc.t21l20.classic.mat',
cfg='/home/tropics/hiro/ln_solver/sample/frc.t21l20.classic.grd'
fact=1.0,1.0,1.0,1.0,1.0
&end &nmvar ovor=f, odiv=f, otmp=t, ops=f, osph=t
&end &nmhpr khpr=1,
hamp=1.,
xdil=40.,
ydil=12.,
xcnt=210.,
ycnt=0.
&end &nmvpr kvpr=2,
vamp=8,
vdil=20.,
vcnt=0.45
&end &nmall owall=t
&end &nmcls oclassic=t
&end

由 cfg文件定义GrADS强迫数据,而cfm确定了对应的球面系数数据,这个在此处没有使用,但是在3.2和3.3节是有必要的。其他参数被简要的描述了,可以参考描述文件 $LNHOME/solver/util/param_list 获取更多信息。&nmvar表示需要对哪个变量进行强迫(在上面的例子中是只有温度变量进行强迫)。强迫的水平和垂直形态由&nmhpr和&nmvpr所确定。

khpr 水平形态: 1=椭圆,2=带状均匀

hamp 水平函数振幅

xdil 纬向范围(半径的一半)

ydil 经向范围(半径的一半)

xcnt 中心经度(从0°到360°)

ycnt 中心纬度(从-90°到90°)

kvpr 垂直廓线: 1=正弦, 2=gamma, 3=uniform

vamp 垂直廓线的振幅(单位是 day-1

vdil 扩张参数(dilation parameter)(仅用于kvpr=2)

vcnt 在σ坐标系中的中心层次

当你根据上述说明修改了件 $LNHOME/solver/util/SETPAR之后,执行

1 cd $LNHOME/solver/util
2 make clean
3 make
4 mkfrcng

3.1.3 运行模式

----(略)-------

3.1.4 后处理和可视化

3.2 矩阵求逆。 第一部分:求解全矩阵

3.2.1 生成模式二进制文件

3.2.2 计算线性算子矩阵

3.2.3 驱动的准备 preparing forcing

3.2.4 求解线性系统

3.3 矩阵求逆。 第二部分:定常波模型(stationary Wave Model, SWM)

3.3.1 生成模式二进制文件

3.3.2 计算线性算子矩阵

3.3.3 驱动的准备 preparing forcing

3.3.4 求解线性系统

3.3.5 关于地形强迫

3.4 加速迭代方法(Accelerated iterative method, AIM)

3.4.1 生成模式二进制代码

3.4.2 计算线性算子矩阵

3.4.3 加速矩阵和求逆 (acceleration matrix and inverse)

3.4.4 驱动的准备 preparing forcing

3.4.5 迭代

4 风暴轴模式(Storm Track Model, STM)

4.1 什么是STM?

4.2 生成模式二进制文件

4.3 准备初始扰动

4.4 运行STM

5 模态分解

5.1 首选的检测模式

5.2 特征值分析 eigenvalue analysis

5.3 奇异向量分析 singular vector analysis

6 非线性动力模式

6.1 用剩余项R驱动非线性运行

6.1.1 准备R

6.1.2 运行模式

6.2 使用温度复原temperature restoring进行非线性运行

6.3 后处理和可视化

7 湿LBM

7.1 时间积分

7.1.1 生成模式二进制文件

7.1.2 准备基本态SST

7.1.3 驱动的准备 preparing forcing

7.1.4 运行模式

7.1.5 后处理和可视化

7.2 稳定响应

7.2.1 准备模式二进制

7.2.2 准备基本态和异常SST

7.2.3 计算线性算子矩阵

7.2.4 计算驱动向量

7.2.5 求解线性系统

7.2.6 关联加热响应

8 正压模式

8.1 稳定响应

8.2 模态分解

A 线性动力的数学原理

A.1 线性动力系统

A.2 动态算子的正交基orthogonal basis for dynamical operator

A.3 偏好模的检测 detection of preferred modes

A.4 线性对流和动力的相互作用 linear convective interation with dynamics

B 故障排除

B.1 如何在不同的系统中使用?

B.2 如何在T21高斯网格中生成基本态和强迫

B.3 为什么不能编译命令符

B.4 想要对模式进行修改,我需要在哪里查看?

B.5 想要在SR8000中提交批处理作业

参考文献

  

线性斜压模式LBM学习&安装实录的更多相关文章

  1. linux自学(七)之开始ccentos学习,安装jdk

    上一篇:linux自学(六)之开始centos学习,更换yum源 如果你认真跟着前面操作那么一定都完成相关配置及下载,我们的目的是部署Javaweb项目,需要jdk,mysql,tomcat.那么接下 ...

  2. Linux学习安装

    Linux学习安装 服务器指的是网络中能对其他机器提供某些服务的计算机系统,相对普通PC, 服务器指的是高性能计算机,稳定性.安全性要求更高 linux安装学习 1.虚拟机 一台硬件的机器 安装vmw ...

  3. Lamp源码包安装实录

    Lamp源码包安装实录 附件中是安装步骤,下载站点里包含视频(http://down.51cto.com/data/460776) 本文出自 "李晨光原创技术博客" 博客,请务必保 ...

  4. UML和模式应用学习笔记-1(面向对象分析和设计)

    UML和模式应用学习笔记-1(面向对象分析和设计) 而只是对情节的记录:此处的用例场景为:游戏者请求掷骰子.系统展示结果:如果骰子的总点数是7,则游戏者赢得游戏,否则为输 (2)定义领域模型:在领域模 ...

  5. ArcGIS Desktop 10.5 安装实录

    ArcGIS Desktop 10.5 安装实录 by 李远祥 几天前已经收到ArcGIS10.5的最终版安装介质,终于有时间可以安装一下.尽管ArcGIS10.5系列中,桌面软件不是主角,但笔者还是 ...

  6. linux自学(九)之开始centos学习,安装数据库MariaDB

    上一篇:linux自学(八)之开始centos学习,安装tomcat 数据库我们不安装mysql,我网上看了好多资料发现mysql安装比较麻烦,我们这里安装同一个父亲的产品MariaDB.驱动,端口等 ...

  7. linux自学(八)之开始centos学习,安装tomcat

    上一篇:linux自学(七)之开始ccentos学习,安装jdk 由于tomcat小,我们直接使用在线下载然后解压形式 首先,进入cd /usr/local目录下并创建tomcat目录,把tomcat ...

  8. Docker以及registry的入门学习安装

    一.前言 如果你是数据中心或云计算IT圈子的人,我想你一定听过Docker,关于它们的新闻从未间断过.Docker的发展历程虽然算不上太长,但是自2014年6月Docker 1.0 正式发布,但是Do ...

  9. 装饰者模式的学习(c#) EF SaveChanges() 报错(转载) C# 四舍五入 保留两位小数(转载) DataGridView样式生成器使用说明 MSSQL如何将查询结果拼接成字符串 快递查询 C# 通过smtp直接发送邮件 C# 带参访问接口,WebClient方式 C# 发送手机短信 文件 日志 写入 与读取

    装饰者模式的学习(c#) 案例转自https://www.cnblogs.com/stonefeng/p/5679638.html //主体基类 using System;using System.C ...

  10. sail.js学习 - 安装篇

    导言: 最近在学习sails.js(http://sailsjs.org/),因为用的人不多,资料较少,故写些自己的学习过程.因自己也是初学node.js,有问题大家指出. 介绍: sails.js的 ...

随机推荐

  1. Postgresql架构体系解析

    一.PostgreSQL物理架构 postgresql的物理架构非常简单,它由共享内存.一系列后台进程和数据文件组成. 二.Shared Memory 共享内存是服务器服务器为数据库缓存和事务日志缓存 ...

  2. Linux操作命令(七) 1.cut命令 2.paste命令 3.tr命令

    1.cut 命令 常用参数 参数 描述 -b 以字节为单位进行分割 -c 以字符为单位进行分割 -d 自定义分隔符,默认为制表符 -f 自定义字段 --complement 抽取整个文本行,除了那些由 ...

  3. SAP NOTE 489676 VF188异常

    解决方案 VOFM->复制请求->出具发票单据(B) 新建999例程

  4. C#判断一个字符串是否为整数

    判断一个字符串是否为数字 使用int.TryParse()方法   利用int类型自带的TryParse(string, ou int) 方法可以解决问题,此方法通过对应的输入内容string,如果是 ...

  5. WPF 打印界面控件内容

    public class PrintDialogHelper { private const string PrintServerName = "DESKTOP-49LV5U6"; ...

  6. lg7863

    傻题. 对于相邻的每个点,从高度高的点向高度低的点连边. 依靠差分的思想,设边权是高度差. 考虑第一问,答案显然是这个图dag路径覆盖,可以运行最大流. 考虑第二问.如果每连一条链,那么答案会加上这条 ...

  7. UVM——callback机制应用示例

    对应代码: 1.在UVM组件中主操作函数或者任务之前或者之后内嵌callback函数或任务 1 class driver extends uvm_driver #(transaction); 2 `u ...

  8. flannel 关闭SNAT

    flannel 关闭SNAT 默认情况下,flannel 访问集群外网络是通过 SNAT 成宿主机 ip 方式,在一些金融客户环境中为了能实现防火墙规则,需要直接针对 POD ip 进行进行规则配置, ...

  9. foreach 和for

    "foreach和for循环如果只是遍历集合或者数组,用foreach好些,如果是对集合中的值进行修改,就要用for循环了,其实foreach的内部原理其实也是Iterator,但不能像It ...

  10. 【26期】如何判断一个对象是否存活?(或者GC对象的判定方法)?

    这个问题,面试被问到的概率还是很大的.以下关于 如何判断一个对象是否存活 的回答,完全参照<深入理解Java虚拟机>一书,有需要的可以看书学习.以下是题目解析 判断对象是否存活的算法包括: ...