基于本地centos构建gdal2.4.4镜像
1.前言
基于基础镜像构建gdal环境一般特别大,一般少则1.6G,多则2G甚至更大,这对于镜像的迁移造成了极大的不便。究其原因在于容器中有大量的源码文件以及编译中间过程文件,还要大量编译需要的yum库。本文主要通过在centos系统上先构建基础gdal环境,然后将编译好的二进制文件以及动态库拷贝出来。通过DockerFile或者操作容器的方式构建进行。通过这样的方式,镜像700M左右(基础镜像200M+gdal500M)。当然文章末尾还提供压缩的方式导出镜像(大小约250M左右)。
2. 编译环境
2.1 操作系统
[root@surpass ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
2.2 gdal以及插件及版本
| 序号 | 软件名称 | 版本号 |
|---|---|---|
| 1 | ant | apache-ant-1.10.12 |
| 2 | gdal | gdal-2.4.4 |
| 3 | geos | geos-3.7.3 |
| 4 | hdf4 | hdf-4.2.13 |
| 5 | hdf5 | hdf5-1.10.5 |
| 6 | jpegsrc | jpegsrc.v8c |
| 7 | netcdf | netcdf-c-4.4.1.1 |
| 8 | pcre | pcre-8.45 |
| 9 | proj | proj-6.0.0 |
| 10 | swig | swig-2.0.9 |
| 11 | jdk | jdk-8u361-linux-x64 |
这里我已经准备好,如果自己下载麻烦,可以直接用的准备好的。gdal2.4.4源码编译及相关插件
3.环境准备
3.1 拷贝文件
当然,第一步还是先将文件拷贝到centos系统中。
[root@surpass gdal]# ll
总用量 200516
-rw-r--r--. 1 root root 5424638 3月 4 21:20 apache-ant-1.10.12-bin.tar.bz2
-rw-r--r--. 1 root root 14748072 3月 4 21:20 gdal-2.4.4.tar.gz
-rw-r--r--. 1 root root 2000211 3月 4 21:20 geos-3.7.3.tar.bz2
-rw-r--r--. 1 root root 4418314 3月 4 21:20 hdf-4.2.13.tar.gz
-rw-r--r--. 1 root root 12030972 3月 4 21:20 hdf5-1.10.5.tar.gz
-rw-r--r--. 1 root root 138762230 3月 4 21:20 jdk-8u361-linux-x64.tar.gz
-rw-r--r--. 1 root root 956918 3月 4 21:20 jpegsrc.v8c.tar.gz
-rw-r--r--. 1 root root 17670828 3月 4 21:20 netcdf-c-4.4.1.1.tar.gz
-rw-r--r--. 1 root root 1578809 3月 4 21:20 pcre-8.45.tar.bz2
-rw-r--r--. 1 root root 2405217 3月 4 21:20 proj-6.0.0.tar.gz
-rw-r--r--. 1 root root 5307341 3月 4 21:20 swig-2.0.9.tar.gz
3.2 安装依赖环境
yum -y groupinstall "Development tools"
yum -y install gcc-c++
yum -y install zlib-devel
yum -y install sqlite-devel
yum -y install bzip2
3.3 查看四个文件夹的内容
查看下面四个文件夹,是否为空的,如果不为空,要记下里面的文件,我这里是空的。
[root@surpass local]# ll /usr/local/bin/
总用量 0
[root@surpass local]# ll /usr/local/lib
总用量 0
[root@surpass local]# ll /usr/local/include/
总用量 0
[root@surpass local]# ll /usr/local/share/
总用量 0
drwxr-xr-x. 2 root root 6 4月 11 2018 applications
drwxr-xr-x. 2 root root 6 4月 11 2018 info
drwxr-xr-x. 21 root root 243 4月 27 2022 man
4. 安装依赖文件
4.1 Proj安装
tar -zxvf proj-6.0.0.tar.gz
cd proj-6.0.0
./configure
make
make install
# 验证是否安装成功
proj —help
此时,proj文件编译的位置如下:
- 可执行文件
[root@surpass bin]# ll /usr/local/bin/ 总用量 2096 -rwxr-xr-x. 1 root root 192008 3月 4 21:42 cct -rwxr-xr-x. 1 root root 192544 3月 4 21:42 cs2cs -rwxr-xr-x. 1 root root 279296 3月 4 21:42 geod -rwxr-xr-x. 1 root root 222448 3月 4 21:42 gie lrwxrwxrwx. 1 root root 4 3月 4 21:42 invgeod -> geod lrwxrwxrwx. 1 root root 4 3月 4 21:42 invproj -> proj -rwxr-xr-x. 1 root root 172400 3月 4 21:42 proj -rwxr-xr-x. 1 root root 1070520 3月 4 21:42 projinfo - 动态库
[root@surpass bin]# ll /usr/local/lib 总用量 114204 -rw-r--r--. 1 root root 85747468 3月 4 21:42 libproj.a -rwxr-xr-x. 1 root root 940 3月 4 21:42 libproj.la lrwxrwxrwx. 1 root root 17 3月 4 21:42 libproj.so -> libproj.so.15.0.0 lrwxrwxrwx. 1 root root 17 3月 4 21:42 libproj.so.15 -> libproj.so.15.0.0 -rwxr-xr-x. 1 root root 31187152 3月 4 21:42 libproj.so.15.0.0 drwxr-xr-x. 2 root root 21 3月 4 21:42 pkgconfig - 共享文件
[root@surpass proj]# ll /usr/local/share/proj/ 总用量 6180 -rw-r--r--. 1 root root 1183 3月 4 21:42 CH -rw-r--r--. 1 root root 728 3月 4 21:42 GL27 -rw-r--r--. 1 root root 2099 3月 4 21:42 ITRF2000 -rw-r--r--. 1 root root 3660 3月 4 21:42 ITRF2008 -rw-r--r--. 1 root root 3498 3月 4 21:42 ITRF2014 -rw-r--r--. 1 root root 19535 3月 4 21:42 nad27 -rw-r--r--. 1 root root 16593 3月 4 21:42 nad83 -rw-r--r--. 1 root root 6385 3月 4 21:42 nad.lst -rw-r--r--. 1 root root 232 3月 4 21:42 null -rw-r--r--. 1 root root 3915 3月 4 21:42 other.extra -rw-r--r--. 1 root root 6242304 3月 4 21:42 proj.db -rw-r--r--. 1 root root 7079 3月 4 21:42 world - 文件头
[root@surpass include]# ll /usr/local/include/ 总用量 184 -rw-r--r--. 1 root root 44277 3月 4 21:42 geodesic.h -rw-r--r--. 1 root root 2960 3月 4 21:42 org_proj4_PJ.h drwxr-xr-x. 2 root root 179 3月 4 21:42 proj -rw-r--r--. 1 root root 8346 3月 4 21:42 proj_api.h -rw-r--r--. 1 root root 23206 3月 4 21:42 proj_constants.h -rw-r--r--. 1 root root 34185 3月 4 21:42 proj_experimental.h -rw-r--r--. 1 root root 42507 3月 4 21:42 proj.h -rw-r--r--. 1 root root 19796 3月 4 21:42 proj_symbol_rename.h
后面编译的软件基本在这几个文件夹,如有特殊会单独说明。
4.2 安装java环境
4.2.1 解压压缩包
tar -zxvf jdk-8u361-linux-x64.tar.gz -C /usr/local/
4.2.2 编辑环境变量
# 编译/etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_361
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
4.2.3 配置文件生效
source /etc/profile
4.2.4 验证java环境有效性
[root@surpass jdk1.8.0_361]# java -version
java version "1.8.0_361"
Java(TM) SE Runtime Environment (build 1.8.0_361-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.361-b09, mixed mode)
4.3 安装ant
4.3.1 解压压缩包
# 注意这里的参数是-j,不是-z.
tar -jxvf apache-ant-1.10.12-bin.tar.bz2 -C /usr/local/
4.3.2 配置环境变量
vim /etc/profile
export ANT_HOME=/usr/local/apache-ant-1.10.12
export PATH=$PATH:$ANT_HOME/bin
4.3.3 配置文件生效
source /etc/profile
4.3.4 验证ant环境有效性
[root@surpass apache-ant-1.10.12]# ant -version
Apache Ant(TM) version 1.10.12 compiled on October 13 2021
4.4. 安装pcre
tar -jxvf pcre-8.45.tar.bz2
cd pcre-8.45
./configure --enable-utf8
make
make install
# 验证是否安装成功
[root@surpass bin]# geod
Rel. 6.0.0, March 1st, 2019
4.5 安装swig
tar -zxf swig-2.0.9.tar.gz
cd swig-2.0.9/
./configure
make
make install
[root@surpass swig-2.0.9]# swig -version
SWIG Version 2.0.9
Compiled with g++ [x86_64-unknown-linux-gnu]
Configured options: +pcre
Please see http://www.swig.org for reporting bugs and further information
4.6 安装geos
tar -jxvf geos-3.7.3.tar.bz2
cd geos-3.7.3
make
make install
ldconfig
4.7 安装jpeg
4.7.1 编译插件
tar -zxvf jpegsrc.v8c.tar.gz
cd jpeg-8c/
./configure --prefix=/opt/jpeg
make
make install
4.7.2 查看编译成果
[root@surpass jpeg]# ll /opt/jpeg/
总用量 0
drwxr-xr-x. 2 root root 80 3月 4 22:22 bin
drwxr-xr-x. 2 root root 74 3月 4 22:22 include
drwxr-xr-x. 2 root root 103 3月 4 22:22 lib
drwxr-xr-x. 3 root root 17 3月 4 22:22 share
4.8 安装hdf5
4.8.1 编译插件
tar -zxvf hdf5-1.10.5.tar.gz
cd hdf5-1.10.5
export F9X=ifort
./configure --prefix=/opt/hdf5 --with-hdf4=/opt/hdf4 --with-jpeg=/opt/jpeg --enable-java --enable-cxx
make
make install
4.8.2 查看编译成果
[root@surpass hdf5]# ll /opt/hdf5/
总用量 12
drwxr-xr-x. 2 root root 4096 3月 4 22:32 bin
drwxr-xr-x. 2 root root 4096 3月 4 22:32 include
drwxr-xr-x. 2 root root 4096 3月 4 22:32 lib
drwxr-xr-x. 3 root root 27 3月 4 22:32 share
4.9 安装hdf4
4.9.1 编译插件
tar -zxvf hdf-4.2.13.tar.gz
cd hdf-4.2.13
./configure --prefix=/opt/hdf4 --enable-netcdf --enable-jpeg --with-jpeg=/opt/jpeg --enable-hdf5 --with-hdf5=/opt/hdf5 --enable-shared --disable-fortran --enable-java
make
make install
4.9.2 查看编译成果
[root@surpass hdf-4.2.13]# ll /opt/hdf4
总用量 12
drwxr-xr-x. 2 root root 4096 3月 4 22:36 bin
drwxr-xr-x. 2 root root 4096 3月 4 22:36 include
drwxr-xr-x. 2 root root 4096 3月 4 22:36 lib
drwxr-xr-x. 4 root root 38 3月 4 22:36 share
4.10 安装netcdf
4.10.1 编译插件
tar -zxvf netcdf-c-4.4.1.1.tar.gz
cd netcdf-c-4.4.1.1
CPPFLAGS="-l/opt/hdf4/include -l/opt/hdf5/include -l/opt/jpeg/include"
LDFLAGS="-l/opt/hdf4/lib -l/opt/hdf5/lib -l/opt/jpeg/lib"
./configure --prefix=/opt/netcdf --enable-hdf5 --with-hdf5=/opt/hdf5 --enable-hdf4 --with-hdf4=/opt/hdf4 --enable-jpeg --with-jpeg=/opt/jpeg --disable-netcdf-4
make
make install
4.10.2 查看编译成果
[root@surpass opt]# ll /opt/netcdf/
总用量 0
drwxr-xr-x. 2 root root 78 3月 4 22:40 bin
drwxr-xr-x. 2 root root 63 3月 4 22:40 include
drwxr-xr-x. 3 root root 158 3月 4 22:40 lib
drwxr-xr-x. 3 root root 17 3月 4 22:40 share
5. 安装gdal
5.1 编译软件
经过一系列的插件,终于可以编译gdal了。
tar -zxvf gdal-2.4.4.tar.gz
cd gdal-2.4.4
./configure --prefix=/opt/netcdf --enable-hdf5 --with-hdf5=/opt/hdf5 --enable-hdf4 --with-hdf4=/opt/hdf4 --enable-jpeg --with-jpeg=/opt/jpeg --disable-netcdf-4
make
make install
5.2 修改配置文件
vim /etc/profile
export PATH=${PATH}:/opt/hdf4/include:/opt/hdf4/bin:/opt/hdf5/include:/opt/hdf5/bin:/opt/netcdf/include:/opt/netcdf/bin:/opt/gdal/include:/opt/gdal/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/opt/hdf4/lib:/opt/hdf5/lib:/opt/netcdf/lib:/opt/gdal/lib
source /etc/profile
[root@surpass gdal-2.4.4]# gdalinfo --version
GDAL 2.4.4, released 2020/01/08
6. 后期数据准备
6.1 删除中间编译数据
将/usr/local、/opt/hdf4、/opt/hdf5、/opt/jpeg、/opt/netcdf的lib下的所有以a和la结尾的文件删除。
6.2 拷贝文件
将/opt/hdf4、/opt/hdf5、/opt/jpeg、/opt/netcdf下的bin、include、lib、share分别复制到/usr/local下相对应的文件夹下。
6.3 压缩导出
将/usr/local下的bin、include、lib、share赋值出来打成压缩包。如果想直接用,可以看到这里:gdal2.4.4编译的动态库
7. 打开镜像
7.1 下载centos镜像
docker pull centos
[root@surpass gdal_lib]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7.9 eeb6ee3f44bd 17 months ago 204 MB
7.2 打开镜像
- 打开镜像容器
docker run --rm -it centos:7.9 bash - 将本地文件拷贝容器里
[root@surpass gdal_lib]# docker cp bin/ d21d5b03fbb4:/usr/local [root@surpass gdal_lib]# docker cp include/ d21d5b03fbb4:/usr/local [root@surpass gdal_lib]# docker cp lib/ d21d5b03fbb4:/usr/local [root@surpass gdal_lib]# docker cp share/ d21d5b03fbb4:/usr/local - 加载动态库
在/etc/ld.so.conf.d,创建文件gdal.conf,加入如下代码:/usr/local/lib - 加载动态库
ldconfig
7.3 提交镜像
docker commit -m="gdal_java" -a="surpassliang" d21d5b03fbb4 gdal2.4.4_java:v0.1
[root@surpass gdal_lib]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gdal2.4.4_java v0.1 5895879a8d11 27 seconds ago 759 MB
8. 导出镜像
# 导出镜像
docker save gdal_java:v0.2 | gzip > gdal_java_v0.2.tar.gz
# 导入镜像
gunzip -c gdal_java_v0.2.tar.gz | docker load
相关文章:
基于本地centos构建gdal2.4.4镜像
1.前言 基于基础镜像构建gdal环境一般特别大,一般少则1.6G,多则2G甚至更大,这对于镜像的迁移造成了极大的不便。究其原因在于容器中有大量的源码文件以及编译中间过程文件,还要大量编译需要的yum库。本文主要通过在centos系统上先…...
生产环境线程问题排查
线程状态的解读RUNNABLE线程处于运行状态,不一定消耗CPU。例如,线程从网络读取数据,大多数时间是挂起的,只有数据到达时才会重新唤起进入执行状态。只有Java代码显式调用sleep或wait方法时,虚拟机才可以精准获取到线程…...
Day908.joinsnljdist和group问题和备库自增主键问题 -MySQL实战
join&snlj&dist和group问题和备库自增主键问题 Hi,我是阿昌,今天学习记录的是关于join&snlj&dist和group问题和备库自增主键问题的内容。 一、join 的写法 join 语句怎么优化?中,在介绍 join 执行顺序的时候&am…...
算法 - 剑指Offer 丑数
题目 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 解题思路 这题我使用最简单方法去做, 首先我们可以获取所有2n,3n,5*n的丑数,只是我们这里暂时无法排序,并且可能…...
【ONE·C || 文件操作】
总言 C语言:文件操作。 文章目录总言1、文件是什么?为什么需要文件?1.1、为什么需要文件?1.2、文件是什么?2、文件的打开与关闭2.1、文件指针2.2、文件打开和关闭:fopen、fclose2.3、文件使用方式3、文…...
cmd窗口中java命令报错。错误:找不到或无法加载主类 java的jdk安装过程中踩过的坑
错误: 找不到或无法加载主类 HelloWorld 遇到这个问题时,我尝试过网上其他人的做法。有试过添加classpath,也有试过删除classpath。但是依然报错,这里javac可以编译通过,说明代码应该是没有问题的。只是在运行是出现了错误。我安装…...
Breathwork(呼吸练习)
查了下呼吸练习相关内容,做个记录。我又在油管学习啦。 喜欢在you. tube看一些self-help相关的内容。比如学习方法、拉伸、跑步、力量举、自重锻炼等等。 总是听Obi Vicent说起Breathwork,比如: My 6am Morning Routine | New Healthy Habit…...
taobao.itemprops.get( 获取标准商品类目属性 )
¥开放平台基础API不需用户授权 通过设置必要的参数,来获取商品后台标准类目属性,以及这些属性里面详细的属性值prop_values。 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 请求参数 点…...
QT配置安卓环境(保姆级教程)
目录 下载环境资源 JDK1.8 NDK SDK 安装QT 配置环境 下载环境资源 JDK1.8 介绍JDK是Java开发的核心工具,为Java开发者提供了一套完整的开发环境,包括开发工具、类库和API等,使得开发者可以高效地编写、测试和运行Java应用程序。 下载…...
【uni-app教程】八、UniAPP Vuex 状态管理
八、UniAPP Vuex 状态管理 概念 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 应用场景 Vue多个组件之间需要共享数据或状态。 关键规则 State:…...
同花顺测试面经(30min)
大概三十分钟,面试官人还挺好的 1.自我介绍 2.详细问你了自我介绍中的一个实习经历 3.对我们公司有什么了解 !!(高频) 4.对测试有什么看法,为什么选测试 5.黑盒白盒分别是什么 6.对测试左移有什么看法…...
C++-简述#ifdef、#else、#endif和#ifndef的作用
回答如下: #ifdef,#else,#endif和#ifndef都是预处理指令,用于条件编译。#ifdef:这个指令用来判断一个宏是否已经被定义过,如果已经定义过,则执行后面的代码块。#else:这个指令一般与…...
VictoriaMetrics 集群部署
官网 ## 官网 https://github.com/VictoriaMetrics/VictoriaMetrics 集群角色详解 VictoriaMetrics 集群模式。主要由 vmstorage ,vminsert,vmselect 三部分组成,这三个组件每个组件都可以单独进行扩展。其中: vmstorage 负责提供数据存储服务vminsert 是数据存…...
【基于感知损失的无监督泛锐化】
PercepPan: Towards Unsupervised Pan-Sharpening Based on Perceptual Loss (PercepPan:基于感知损失的无监督泛锐化) 在基于神经网络的全色锐化文献中,作为地面实况标签的高分辨率多光谱图像通常是不可用的。为了解决这个问题…...
在vercel上用streamlit部署网站
Verce和Streamlit都是非常流行的Web应用程序部署平台。以下是从零开始在Vercel上部署Streamlit应用程序的一些基本步骤。 安装 Streamlit 在本地计算机上安装Streamlit。可以轻松地通过在命令行中运行以下命令来安装: pip install streamlit为 Streamlit 应用程序…...
华为OD机试题 - 斗地主(JavaScript)| 含思路
更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜索引擎搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:斗地主题目输入输出描述示例一输入输出示例二输…...
i.MX8MP平台开发分享(clock篇)-计算clock速度相关的内核API
专栏目录:专栏目录传送门 平台内核i.MX8MP5.15.71文章目录 clk消费者clk生产者clk_set_rateclk_round_rateclk_pll1443x_recalc_rate这一篇我们具体来看看其他驱动如何使用clock,这里以lcdif驱动为例。 IMX8MP_CLK_MEDIA_BLK_CTRL_LCDIF_PIXEL是门控时钟,名为pix,这个门控时…...
实验4 设计模式实验3
实验内容: 1. 某软件公司为新开发的智能手机控制与管理软件提供了一键备份功能,通 过该功能可以将原本存储在手机中的通信录、短信、照片、歌曲等资料一次性全 部拷贝到移动存储介质(例如MMC 卡或SD 卡)中。在实现过程中需要与多个 已有的类进行交互,例如通讯录管理类、短信…...
CNN基础
Tip:仅供自己学习记录,酌情参考 1. 前馈与反馈神经网络 神经网络有前馈神经网络和反馈神经网络,前向神经网络也就是前馈神经网络。 前馈型神经网络各神经元接收前一层的输入,并输出给下一层,没有反馈。节点分为两类…...
【UEFI基础】UEFI事件介绍
简述 在【UEFI基础】System Table和Architecture Protocols介绍Boot Service时提到有一部分与事件相关的接口,它们创建、触发、等待和关闭事件,来完成某些功能,本文将进一步介绍事件。 需要注意,因为Boot Service需要在DXE阶段才…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
