-
总是听到有人说AndroidX,到底什么是AndroidX?
2019-08-26 08:06:59不知从什么时候开始,总是会时不时听到AndroidX这个名词,这难道又是什么新出技术吗?相信有很多朋友也会存在这样的疑惑,那么今天我就来写一篇科普文章,向大学介绍AndroidX的前世今生。 Android系统在刚刚面世的....本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新。
Android技术迭代更新很快,各种新出的技术和名词也是层出不穷。不知从什么时候开始,总是会时不时听到AndroidX这个名词,这难道又是什么新出技术吗?相信有很多朋友也会存在这样的疑惑,那么今天我就来写一篇科普文章,向大家介绍AndroidX的前世今生。
Android系统在刚刚面世的时候,可能连它的设计者也没有想到它会如此成功,因此也不可能在一开始的时候就将它的API考虑的非常周全。随着Android系统版本不断地迭代更新,每个版本中都会加入很多新的API进去,但是新增的API在老版系统中并不存在,因此这就出现了一个向下兼容的问题。
举个例子,当Android系统发布到3.0版本的时候,突然意识到了平板电脑的重要性,因此为了让Android可以更好地兼容平板,Android团队在3.0系统(API 11)中加入了Fragment功能。但是Fragment的作用并不只局限于平板,以前的老系统中也想使用这个功能该怎么办?于是Android团队推出了一个鼎鼎大名的Android Support Library,用于提供向下兼容的功能。比如我们每个人都熟知的support-v4库,appcompat-v7库都是属于Android Support Library的,这两个库相信任何做过Android开发的人都使用过。
但是可能很多人并没有考虑过support-v4库的名字到底是什么意思,这里跟大家解释一下。4在这里指的是Android API版本号,对应的系统版本是1.6。那么support-v4的意思就是这个库中提供的API会向下兼容到Android 1.6系统。它对应的包名如下:
类似地,appcompat-v7指的是将库中提供的API向下兼容至API 7,也就是Android 2.1系统。它对应的包名如下:
可以发现,Android Support Library中提供的库,它们的包名都是以android.support.*开头的。
但是慢慢随着时间的推移,什么1.6、2.1系统早就已经被淘汰了,现在Android官方支持的最低系统版本已经是4.0.1,对应的API版本号是15。support-v4、appcompat-v7库也不再支持那么久远的系统了,但是它们的名字却一直保留了下来,虽然它们现在的实际作用已经对不上当初命名的原因了。
那么很明显,Android团队也意识到这种命名已经非常不合适了,于是对这些API的架构进行了一次重新的划分,推出了AndroidX。因此,AndroidX本质上其实就是对Android Support Library进行的一次升级,升级内容主要在于以下两个方面。
第一,包名。之前Android Support Library中的API,它们的包名都是在android.support.*下面的,而AndroidX库中所有API的包名都变成了在androidx.*下面。这是一个很大的变化,意味着以后凡是android.*包下面的API都是随着Android操作系统发布的,而androidx.*包下面的API都是随着扩展库发布的,这些API基本不会依赖于操作系统的具体版本。
第二,命名规则。吸取了之前命名规则的弊端,AndroidX所有库的命名规则里都不会再包含具体操作系统API的版本号了。比如,像appcompat-v7库,在AndroidX中就变成了appcompat库。
一个AndroidX完整的依赖库格式如下所示:
implementation 'androidx.appcompat:appcompat:1.0.2'
了解了AndroidX是什么之后,现在你应该放轻松了吧?它其实并不是什么全新的东西,而是对Android Support Library的一次升级。因此,AndroidX上手起来也没有任何困难的地方,比如之前你经常使用的RecyclerView、ViewPager等等库,在AndroidX中都会有一个对应的版本,只要改一下包名就可以完全无缝使用,用法方面基本上都没有任何的变化。
但是有一点需要注意,AndroidX和Android Support Library中的库是非常不建议混合在一起使用的,因为它们可能会产生很多不兼容的问题。最好的做法是,要么全部使用AndroidX中的库,要么全部使用Android Support Library中的库。
而现在Android团队官方的态度也很明确,未来都会为AndroidX为主,Android Support Library已经不再建议使用,并会慢慢停止维护。另外,从Android Studio 3.4.2开始,我发现新建的项目已经强制勾选使用AndroidX架构了。
那么对于老项目的迁移应该怎么办呢?由于涉及到了包名的改动,如果从Android Support Library升级到AndroidX需要手动去改每一个文件的包名,那可真得要改死了。为此,Android Studio提供了一个一键迁移的功能,只需要对着你的项目名右击 → Refactor → Migrate to AndroidX,就会弹出如下图所示的窗口。
这里点击Migrate,Android Studio就会自动检查你项目中所有使用Android Support Library的地方,并将它们全部改成AndroidX中对应的库。另外Android Studio还会将你原来的项目备份成一个zip文件,这样即使迁移之后的代码出现了问题你还可以随时还原回之前的代码。
好了,关于AndroidX的内容就讲到这里,相信也是解决了不少朋友心中的疑惑。由于这段时间以来一直在努力赶《第一行代码 第3版》的进度,所以原创文章的数量偏少了一些,也请大家见谅。
关注我的技术公众号,每个工作日都有优质技术文章推送。
微信扫一扫下方二维码即可关注:
-
苹果手机各种尺寸详细表以及iPhoneX、iPhoneXS、iPhoneXR、iPhoneXSMax、iPhone 11、iPhone 11 Pro、iPhone...
2018-08-07 15:26:49iPhone设备 物理分辨率是硬件所支持的,逻辑分辨率是软件可以达到的。 代数 设备 操作系统 逻辑分辨率(point) 物理分辨率(pixel) 屏幕尺寸(对角线长度) ... 320 x 480 480 x...iPhone设备
物理分辨率是硬件所支持的,逻辑分辨率是软件可以达到的。
代数 设备 操作系统 逻辑分辨率(point) 物理分辨率(pixel) 屏幕尺寸(对角线长度) 缩放因子 iPhone 第一代 iPhone 2G iOS 1 320 x 480 480 x 320 3.5寸 1x 第二代 iPhone 3 iOS 2 320 x 480 480 x 320 3.5寸 1x 第三代 iPhone 3GS iOS 3 320 x 480 480 x 320 3.5寸 1x 第四代 iPhone 4 iOS 4 320 x 480 960 × 640 3.5寸 2x 第五代 iPhone 4S iOS 5 320 x 480 960 × 640 3.5寸 2x 第六代 iPhone 5 iOS 6 320 x 568 1136 x 640 4.0寸 2x 第七代 iPhone 5S/5C iOS 7 320 x 568 1136 x 640 4.0寸 2x 第八代 iPhone 6 iOS 8 375 x 667 1334 x 750 4.7寸 2x 第八代 iPhone 6 Plus iOS 8 414 x 736 2208 x 1242 (1920x1080) 5.5寸 3x 第九代 iPhone 6S iOS 9 375 x 667 1334 x 750 4.7寸 2x 第九代 iPhone 6S Plus iOS 9 414 x 736 2208 x 1242 (1920x1080) 5.5寸 3x iPhone SE iOS 9 320 x 568 1136 x 640 4寸 2x 第十代 iPhone 7 iOS 10 375 x 667 1334 x 750 4.7寸 2x 第十代 iPhone 7 Plus iOS 10 414 x 736 2208 x 1242 (1920x1080) 5.5寸 3x 第十一代 iPhone 8 iOS 11 375 x 667 1334 x 750 4.7寸 2x 第十一代 iPhone 8 Plus iOS 11 414 x 736 2208 x 1242 (1920x1080) 5.5寸 3x 第十一代 iPhone X iOS 11 375 x 812 2436 × 1125 5.8寸 3x 手机型号 尺寸(对角线) 物理点 宽长比例 像素点 倍数 状态栏高度 底部安全距离 导航栏高度 tabbar高度 iPhone 4/4S 3.5英寸 320x480 0.667 640x960 @2x 20 - 44 49 iPhone 5/5S/5C 4英寸 320x568 0.563 640x1136 @2x 20 - 44 49 iPhone SE 4英寸 320x568 0.563 640x1136 @2x 20 - 44 49 iPhone 6 4.7英寸 375x667 0.562 750x1334 @2x 20 - 44 49 iPhone 6 Plus 5.5英寸 414x736 0.563 1242x2208 @3x 20 - 44 49 iPhone 6S 4.7英寸 375x667 0.562 750x1334 @2x 20 - 44 49 iPhone 6S Plus 5.5英寸 414x736 0.563 1242x2208 @3x 20 - 44 49 iPhone 7 4.7英寸 375x667 0.562 750x1334 @2x 20 - 44 49 iPhone 7 Plus 5.5英寸 414x736 0.563 1242x2208 @3x 20 - 44 49 iPhone 8 4.7英寸 375x667 0.562 750x1334 @2x 20 - 44 49 iPhone 8 Plus 5.5英寸 414x736 0.563 1242x2208 @3x 20 - 44 49 iPhone X 5.8英寸 375x812 0.462 1125x2436 @3x 44 34 44 83 iPhone XS 5.8英寸 375x812 0.462 1125x2436 @3x 44 34 44 83 iPhone XS Max 6.5英寸 414x896 0.462 1242x2688 @3x 44 34 44 83 iPhone XR 6.1英寸 414x896 0.462 828x1792 @2x 44 34 44 83 iPhone 11 6.1英寸 414x896 0.462 828x1792 @2x 44 34 44 83 iPhone 11 Pro 5.8英寸 375x812 0.462 1125x2436 @3x 44 34 44 83 iPhone 11 Pro Max 6.5英寸 414x896 0.462 1242x2688 @3x 44 34 44 83 如图所示:
Tips:
机型 屏幕宽高比 iPhone 5 320÷568=0.563 iPhone 6 375÷667=0.562 iPhone 6 Plus 414÷736=0.5625
最终发现iPhone5和6一个小秘密,它们的比例是不变的iPod设备
设备 操作系统 物理分辨率(pixel) 屏幕尺寸(对角线长度) 缩放因子 iPod Touch 1 iOS 1 480 x 320 3.5寸 1x iPod Touch 2 iOS 2 480 x 320 3.5寸 1x iPod Touch 3 iOS 3 480 x 320 3.5寸 1x iPod Touch 4 iOS 4 960 x 640 3.5寸 2x iPod Touch 5 iOS 6 1136 x 640 4.0寸 2x iPod Touch 6 iOS 8 1136 x 640 4.0寸 2x iPad设备
设备 操作系统 物理分辨率(pixel) 屏幕尺寸(对角线长度) 缩放因子 iPad 1 iOS 3 1024 x 768 9.7寸 1x iPad 2 iOS 4 1024 x 768 9.7寸 1x iPad 3 (The New iPad) iOS 5 2048 x 1536 9.7寸 2x iPad 4 iOS 6 2048 x 1536 9.7寸 2x iPad Air iOS 7 2048 x 1536 9.7寸 2x iPad Air 2 iOS 8 2048 x 1536 9.7寸 2x iPad Pro iOS 9 2048 x 1536 9.7寸 2x iPad (第五代) iOS 10 2048 x 1536 9.7寸 2x iPad Pro iOS 9 2732 x 2048 12.9寸 3x iPad Pro (取代9.7寸) iOS 10 2224 x 1668 10.5寸 3x iPad mini iOS 6 1024 x 768 7.9寸 1x iPad mini 2 iOS 7 2048 x 1536 7.9寸 2x iPad mini 3 iOS 8 2048 x 1536 7.9寸 2x iPad mini 4 iOS 9 2048 x 1536 7.9寸 2x 所有设备型号官网地址:https://www.theiphonewiki.com/wiki/Models
//获得屏幕的宽高
#define kScreenWidth ([UIScreen mainScreen].bounds.size.width)
#define kScreenHeight ([UIScreen mainScreen].bounds.size.height)
//iPhoneX / iPhoneXS
#define isIphoneX_XS (kScreenWidth == 375.f && kScreenHeight == 812.f ? YES : NO)
//iPhoneXR / iPhoneXSMax
#define isIphoneXR_XSMax (kScreenWidth == 414.f && kScreenHeight == 896.f ? YES : NO)
//异性全面屏
#define isFullScreen (isIphoneX_XS || isIphoneXR_XSMax)// Status bar height.
#define StatusBarHeight (isFullScreen ? 44.f : 20.f)// Navigation bar height.
#define NavigationBarHeight 44.f// Tabbar height.
#define TabbarHeight (isFullScreen ? (49.f+34.f) : 49.f)// Tabbar safe bottom margin.
#define TabbarSafeBottomMargin (isFullScreen ? 34.f : 0.f)// Status bar & navigation bar height.
#define StatusBarAndNavigationBarHeight (isFullScreen ? 88.f : 64.f)转载:http://blog.csdn.net/Scorpio_27/article/details/52297643
-
linux下chmod +x的意思?为什么要进行chmod +x
2018-05-24 17:14:39上周在工作中接触到chmod +x 这个命令,如下图: 首先对start.sh这个启动文件删除,然后使用rz命令上传了新的start.sh,然后发现还有进行下一步,chmod +x start.sh 这一步是什么意思呢?经过上网查询(说的比较...上周在工作中接触到chmod +x 这个命令,如下图:
首先对start.sh这个启动文件删除,然后使用rz命令上传了新的start.sh,然后发现还有进行下一步,chmod +x start.sh
这一步是什么意思呢?经过上网查询(说的比较复杂,引申太多
)和咨询我们研发(还是研发说的通俗易懂
)
chmod +x的意思就是给执行权限
- LINUX下不同的文件类型有不同的颜色,这里
蓝色表示目录; 绿色表示可执行文件,可执行的程序; 红色表示压缩文件或包文件; 浅蓝色表示链接文件; 灰色表示其它文件;
红色闪烁表示链接的文件有问题了
黄色表示设备文件- 因此如果只是普通的上传start.sh这个文件,那么上传之后也就是一个普通的文件,不能执行
- 下面实践来看
首先上传了一个stop1.sh文件,是灰色,然后进行chmod +x给了权限。后来使用chmod -x 去除执行权限,可以明显看到效果
补充:
chmod +x 和 chmod u+x的区别?
就是设置谁拥有执行这个文件权限
chmod +x 和chmod a+x 是一样的,一般没有明确要求,可以就用chmod +x
-
VMware报错:此主机支持Intel VT-x,但Intel VT-x处于禁用状态
2019-04-10 17:40:12在使用VMware,安装Ubuntu时,VMware提示: 此主机支持Intel VT-x,但Intel VT-x处于禁用状态 ,如下图所示: 那么,这是咋回事呢? 于是乎,上网 查了一下。 Intel VT-x全称:Intel Virtualization Technology,...在使用VMware,安装Ubuntu时,VMware提示: 此主机支持Intel VT-x,但Intel VT-x处于禁用状态 ,如下图所示:
那么,这是咋回事呢? 于是乎,上网 查了一下。
Intel VT-x全称:Intel Virtualization Technology,就是Intel虚拟技术,开启它可以让硬件平台同时运行多个操作系统,是虚拟机软件运行必备的技术之一,如果禁用,就会弹出“此主机支持Intel VT-x,但Intel VT-x处于禁用状态” 这个提示,解决办法就是电脑进入BIOS,开启 Intel Virtualization Technology。
Intel Virtualization Technology BIOS什么地方,就要自己慢慢的在BIOS中找,一般在Advanced、Security、BIOS Features、Configuration下面,找到 Intel Virtualization Technology ,选择 Enabled,表示开启。然后 保存, 退出 即可。 亲测 有效 。写个博客记录一下, 方便以后查阅。
参考资料
[1] https://blog.csdn.net/u014470361/article/details/83758174
[2] http://www.xitongcheng.com/jiaocheng/xtazjc_article_38955.html
-
AndroidX了解一下
2018-08-06 09:25:311.前言 我选取了几个常用依赖库,我们可以看看变化: Old build artifact AndroidX build artifact com.android.support:support-compat ... androidx.core:core:1.0.0+ ... androidx.appco... -
visual assist x trial enter key 注册文件 破解
2011-10-11 16:06:57原来下载了个AssistX10.6.1822,用了一段时间突然要求输入visual assist x trial enter key 使用这个注册机后,就可以正常使用了,经过本人实际使用测试 -
postman中 form-data、x-www-form-urlencoded、raw、binary的区别
2015-08-19 15:39:25form-data: 就是multipart/form-data,将表单内要上传的数据,处理为一条消息,以标签为单元,一个个的隔开。... multipart/form-data与x-www-form-urlencoded区别就是,multipart/form-data还可以上传文件等二 -
关于概率论里的Z=max{X,Y},min{ X,Y }分布的理解与计算方法
2019-06-03 14:59:35解法一:分情况讨论然后加起来 首先我们来分析这个意思 ...这里是以X,Y分别服从指数分布为例的,x<0时候密度函数=0。 (注:对于每一种情况,比如第二种情况 Y<=z和X<Y是同时发生,不是说Y<=z是在X&... -
linux中 chmod +x 和 chmod u+x的区别
2016-03-01 17:56:21通过man查询可知: u 代表用户. g 代表用户组....o 代表其他....a 代表所有. ... 而 chmod +x somefile 和 chmod a+x somefile 是一样的 Just doing +x will apply it to all flags: [u]ser, [g]roup, [o] -
androidx.recyclerview:recyclerview的使用
2019-06-10 18:18:12添加扩展 或手动修改app/build.gradle...implementation 'androidx.recyclerview:recyclerview:1.0.0' 新建布局layout item布局fruit_item.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout ... -
go项目运行cannot find parkeg “golang.org/x/crypto/acme/autocert“ in any of:
2019-11-22 12:06:51cannot find parkeg "golang.org/x/crypto/acme/autocert" in any of: -
jdk1.7 64位官方版 jdk-7u79-linux-x64.tar.gz
2015-10-14 11:18:19jdk1.7 64位官方正式版 jdk-7u79-linux-x64.tar.gz -
Quantumult X 懒人规则
2020-03-09 14:17:21详细教程还请参考 「Quantumult X 不完全教程 (https://www.notion.so/1d32ddc6e61c4892ad2ec5ea47f00917)」 1. 打开Quantumult X,可以先导入 懒人配置 ... -
python xticks()函数设置X轴方法--刻度、标签
2019-05-31 17:46:48locs函数用于设置X轴刻度间隔 [labels]参数用于设置每个间隔的显示标签 **kwargs可用于设置标签字体倾斜度和颜色等 例如下图,X轴间隔2显示一个刻度,由locs参数设置 X轴上的数字2、4、6等就称为标签,具体显示... -
oppo k7x和oppo k7哪个好 oppo k7x和oppo k7参数对比
2020-11-30 19:59:02OPPO K7x采用了一块6.5英寸的打孔屏,屏占比为90.5%,而OPPO K7则是采用的水滴屏设计,屏幕尺寸为6.4英寸,屏占比为90.8%,遗憾的是,OPPO K7x支持高刷屏,而OPPO K7并不支持。 OPPO手机爆降600这活动太给力了 机会... -
洛达芯片检测工具AB153x_UT,检测蓝牙芯片协议
2020-10-10 22:03:14AB153x_UT.apk 亲测真实可用 连接蓝牙耳机后打开应用,点击153X MCSync即可看到蓝牙耳机芯片名称 下载地址:https://download.csdn.net/download/Langze7/12915445 -
chmod a+x和chmod u+x区别
2019-08-23 20:38:37chmod a+x a.txt 等价于 chmod +x a.txt 给所有用户给予a.txt文件可执行权限 chmod u+x a.txt a.txt文件的所有用户可执行权限 chmod g+x a.txt a.txt用户组可执行权限 chmod o+x a.txt a.txt其他用户可执行... -
2020年是时候迁移AndroidX了
2020-04-21 12:11:092018开始Andorid 已经宣布不再维护support, 最终定版在28.0.0, 而现在最新AS(Android Studio )项目新建默认都是AndroidX,甚至都不支持Android(特殊手段可以修改),这对新项目基本没有影响,但是对新建module会带来很大... -
c语言中 X=10 x-=x+x 等于多少 为什么?
2019-07-27 21:45:00等于-10 因为+的优先级比-=高一些,所以先计算x+x,变成了x -= 20,结果为-10 -
SpringBoot 出现 Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
2019-03-12 23:40:33如果Content-Type设置为“application/x-www-form-urlencoded;charset=UTF-8”无论是POST请求还是GET请求都是可以通过这种方式成功获取参数,但是如果前端POST请求中的body是Json对象的话,会报上述错误。 请求中传... -
Z=X+Y型概率密度的求解
2016-11-09 10:39:13Z=X+Y型概率密度的求解@(概率论)Z=g(X,Y)Z = g(X,Y)总结过一次,一般方法是可以由分布函数再求导得到概率密度,计算一定更要小心才能得到正确的解。FZ(z)=P(Z≤z)=P(g(X,Y)≤z)=∫∫g(x,y)≤zf(x,y)dxdy F_Z(z) = P... -
HBuilderX的下载和安装--详细
2019-03-05 14:44:29HBuilderX下载 HBuilderX:官方IDE。建议下载App开发版,如下载标准版,还需在插件管理中安装uni-app插件。 HBuilderX下载地址:添加链接描述 HBuilderX安装 找到下载好的安装包。如图 解压安装包。 解压后... -
java中--x;x--;x-1;x=x-1;介绍
2018-08-22 11:16:58x--和--x的区别: int x=5; int num=--x;//等价于x=x-1;int num=x; num=x--;//等价于num=x;x=x-1; 实例如下: int x=5; System.out.println((x--)+":"+(x-1)+":"+x);//输出5:3:4 ... -
Thinkpad VMware 安装虚拟机出现此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态
2019-02-20 11:11:16今天在使用VMware打算在机器中安装新的虚拟机时,出现“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”错误如下: 提示信息: 此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态。 如果已在 BIOS/固件... -
Cocos2d-x 3.x项目实战:星空大战(射击类游戏)
2016-09-06 22:08:43本课程是《从零开始掌握Cocos2d-x 3.0(基于3.0正式版) 》课程配套的项目实战课程。建议对Cocos2d-x 3.0不了解的同学先学习该课程。本课程将利用《从零开始掌握Cocos2d-x 3.0(基于3.0正式版) 》中讲解的知识开发... -
x509: cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs 解决:
2018-12-20 09:51:17x509: cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs 解决: 一, 编辑openssl.cnf,在[v3_ca]下面添加:subjectAltName = IP:IP地址 注意, 直接写成123.56.157.144就行, 不用... -
x=x+1, x+=1, x++ 哪个效率更高?
2018-03-20 19:15:29x=x+1最低,因为它的执行过程如下: (1)读取右x的地址。 (2)x+1.做加1操作 (3)读取左x的地址。 (4)将右值传给左边的x(编译器并不认为左右x的地址相同)。 x+=1其次,其执行过程如下: (1)读取右x... -
windows x64和x86的区别
2019-06-29 00:15:48windows x64和x86有啥区别”这个问题和“windows64和32有啥区别”是一样的, 因为x64其实就是64位,x86其实就是32位,在口语中我们说32位会多于x86。 都是用来形容操作系统的,所以我们在下载的时候,会存在winx64... -
%02x与%2x
2013-10-27 12:29:59代码做得多的人,肯定经常见到%02x这个东西,下面写个小程序学习一下: #include int main() { int i; for(i = -20; i ; i++) { printf("%2x\n", i); printf("%02x\n", i); } return 0; } 结果为: ... -
x = x.view(x.size(0), -1) 的理解
2017-12-23 22:15:56之前对于pytorch的网络编程学习都是大致理解每一层的概念,有些语法语句没有从原理上弄清楚,就比如标题的x = x.view(x.size(0), -1) 。 这句话一般出现在model类的forward函数中,具体位置一般都是在调用分类器...
-
【VRP问题】粒子群求解VRPTW模型【Matlab 282期】
-
[vue进阶]2021最新vue自定义指令详解
-
视网膜血管分割代码(Pytorch实现)
-
MySQL 高可用工具 DRBD 实战部署详解
-
==和equals区别?附源码
-
Mysql数据库面试直通车
-
通过在单镜头系统中调制复振幅来减少斑点的全息显示
-
FTP 文件传输服务
-
NFS 网络文件系统
-
一天学完MySQL数据库
-
使用 Linux 平台充当 Router 路由器
-
ajax
-
应用于FMCW频率合成器的宽分频范围的可编程分频器
-
LVS + Keepalived 实现 MySQL 负载均衡与高可用
-
用微服务spring cloud架构打造物联网云平台
-
工程制图 AutoCAD 2012 从二维到三维
-
FET2020_22468_RitishaPawar:所有作业和研讨会-源码
-
Node.js中的模块机制
-
python三维散点图
-
aihaoztv_77897.apk