zoukankan      html  css  js  c++  java
  • 基于centOs7下appium环境搭建

    事件背景:

    前几日在群里看到关总说他的server端是搭建在linux环境下,包括对客户端与服务端的交互处理,感觉整体思路清晰可鉴,于是就想尝试,动手实践,接着从环境搭建开始搞起,于是就有了这篇文章,不得不吐槽下,这是段很深刻的回忆呀,历时1.5工作日,终于搞定环境搭建!!

    依赖关联:

    ps:以我现在的为例,个别根据自己情况调整

    • JDK 1.8
    • Android SDK 1.0.40
    • nodejs 8.7
    • appium 1.9.1

    一、安装jdk:

    参考我之前写过的《ubuntu12.04 安装配置jdk1.7》

    二、安装Android SDK:

    1、下载sdk

    cd /opt  
    mkdir androidSdk  
    wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip   
    unzip sdk-tools-linux-3859397.zip 

    2、配置环境变量

    sudo vim /etc/profile
    #set sdk enviroment
    export ANDROID_HOME=/opt/androidSdk
    export PATH=$PATH:$ANDROID_HOME/tools/bin

    保存退出,输入以下命令使之立即生效

    source /etc/profile

    3、查看已安装信息

    复制代码
    sdkmanager --list
    
    Installed packages:
     Path        | Version | Description          | Location      
     -------      | ------- | -------            | -------      
     tools       | 26.0.1 | Android SDK Tools 26.0.1    | tools/
    
    Available Packages:
     Path               | Version   | Description           
     -------              | -------   | -------             
     add-ons;addon-g..._apis-google-15 | 3      | Google APIs           
     add-ons;addon-g..._apis-google-16 | 4      | Google APIs           
     add-ons;addon-g..._apis-google-17 | 4      | Google APIs           
     add-ons;addon-g..._apis-google-18 | 4      | Google APIs           
     add-ons;addon-g..._apis-google-19 | 20      | Google APIs           
     add-ons;addon-g..._apis-google-21 | 1      | Google APIs           
     add-ons;addon-g..._apis-google-22 | 1      | Google APIs           
     add-ons;addon-g..._apis-google-23 | 1      | Google APIs           
     add-ons;addon-g..._apis-google-24 | 1      | Google APIs           
     add-ons;addon-g...e_gdk-google-19 | 11      | Glass Development Kit Preview  
     build-tools;19.1.0        | 19.1.0    | Android SDK Build-Tools 19.1   
     build-tools;20.0.0        | 20.0.0    | Android SDK Build-Tools 20    
     build-tools;21.1.2        | 21.1.2    | Android SDK Build-Tools 21.1.2  
     build-tools;22.0.1        | 22.0.1    | Android SDK Build-Tools 22.0.1  
     build-tools;23.0.1        | 23.0.1    | Android SDK Build-Tools 23.0.1  
     build-tools;23.0.2        | 23.0.2    | Android SDK Build-Tools 23.0.2  
     build-tools;23.0.3        | 23.0.3    | Android SDK Build-Tools 23.0.3  
     build-tools;24.0.0        | 24.0.0    | Android SDK Build-Tools 24    
     build-tools;24.0.1        | 24.0.1    | Android SDK Build-Tools 24.0.1  
     build-tools;24.0.2        | 24.0.2    | Android SDK Build-Tools 24.0.2  
     build-tools;24.0.3        | 24.0.3    | Android SDK Build-Tools 24.0.3  
     build-tools;25.0.0        | 25.0.0    | Android SDK Build-Tools 25    
     build-tools;25.0.1        | 25.0.1    | Android SDK Build-Tools 25.0.1  
     build-tools;25.0.2        | 25.0.2    | Android SDK Build-Tools 25.0.2  
     build-tools;25.0.3        | 25.0.3    | Android SDK Build-Tools 25.0.3  
     build-tools;26.0.0        | 26.0.0    | Android SDK Build-Tools 26    
     cmake;3.6.4111459         | 3.6.4111459 | CMake 3.6.4111459        
     docs               | 1      | Documentation for Android SDK  
     emulator             | 26.1.2    | Android Emulator         
     extras;android;gapid;1      | 1.0.3    | GPU Debugging tools       
     extras;android;gapid;3      | 3.1.0    | GPU Debugging tools       
     extras;android;m2repository    | 47.0.0    | Android Support Repository    
     extras;google;auto        | 1.1     | Android Auto Desktop Head Unit...
     extras;google;g...e_play_services | 42      | Google Play services       
     extras;google;instantapps     | 1.0.0    | Instant Apps Development SDK   
     extras;google;m2repository    | 55      | Google Repository        
     extras;google;m...t_apk_expansion | 1      | Google Play APK Expansion library
     extras;google;market_licensing  | 1      | Google Play Licensing Library  
     extras;google;play_billing    | 5      | Google Play Billing Library   
     extras;google;simulators     | 1      | Android Auto API Simulators   
     extras;google;webdriver      | 2      | Google Web Driver        
     extras;m2reposi...ut-solver;1.0.0 | 1      | Solver for ConstraintLayout 1.0.0
     extras;m2reposi...er;1.0.0-alpha2 | 1      | com.android.support.constraint...
     extras;m2reposi...er;1.0.0-alpha3 | 1      | com.android.support.constraint...
     extras;m2reposi...er;1.0.0-alpha4 | 1      | com.android.support.constraint...
     extras;m2reposi...er;1.0.0-alpha5 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...er;1.0.0-alpha6 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...er;1.0.0-alpha7 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...er;1.0.0-alpha8 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...er;1.0.0-alpha9 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...ver;1.0.0-beta1 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...ver;1.0.0-beta2 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...ver;1.0.0-beta3 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...ver;1.0.0-beta4 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...ver;1.0.0-beta5 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...ut-solver;1.0.1 | 1      | Solver for ConstraintLayout 1.0.1
     extras;m2reposi...ut-solver;1.0.2 | 1      | Solver for ConstraintLayout 1.0.2
     extras;m2reposi...nt-layout;1.0.0 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...ut;1.0.0-alpha2 | 1      | com.android.support.constraint...
     extras;m2reposi...ut;1.0.0-alpha3 | 1      | com.android.support.constraint...
     extras;m2reposi...ut;1.0.0-alpha4 | 1      | com.android.support.constraint...
     extras;m2reposi...ut;1.0.0-alpha5 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...ut;1.0.0-alpha6 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...ut;1.0.0-alpha7 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...ut;1.0.0-alpha8 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...ut;1.0.0-alpha9 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...out;1.0.0-beta1 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...out;1.0.0-beta2 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...out;1.0.0-beta3 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...out;1.0.0-beta4 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...out;1.0.0-beta5 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...nt-layout;1.0.1 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...nt-layout;1.0.2 | 1      | ConstraintLayout for Android 1...
     lldb;2.0             | 2.0.2558144 | LLDB 2.0             
     lldb;2.1             | 2.1.2852477 | LLDB 2.1             
     lldb;2.2             | 2.2.3271982 | LLDB 2.2             
     lldb;2.3             | 2.3.3614996 | LLDB 2.3             
     ndk-bundle            | 15.1.4119039 | NDK               
     patcher;v4            | 1      | SDK Patch Applier v4       
     platform-tools          | 26.0.0    | Android SDK Platform-Tools    
     platforms;android-10       | 2      | Android SDK Platform 10     
     platforms;android-11       | 2      | Android SDK Platform 11     
     platforms;android-12       | 3      | Android SDK Platform 12     
     platforms;android-13       | 1      | Android SDK Platform 13     
     platforms;android-14       | 4      | Android SDK Platform 14     
     platforms;android-15       | 5      | Android SDK Platform 15     
     platforms;android-16       | 5      | Android SDK Platform 16     
     platforms;android-17       | 3      | Android SDK Platform 17     
     platforms;android-18       | 3      | Android SDK Platform 18     
     platforms;android-19       | 4      | Android SDK Platform 19     
     platforms;android-20       | 2      | Android SDK Platform 20     
     platforms;android-21       | 2      | Android SDK Platform 21     
     platforms;android-22       | 2      | Android SDK Platform 22     
     platforms;android-23       | 3      | Android SDK Platform 23     
     platforms;android-24       | 2      | Android SDK Platform 24     
     platforms;android-25       | 3      | Android SDK Platform 25     
     platforms;android-26       | 1      | Android SDK Platform 26     
     platforms;android-7        | 3      | Android SDK Platform 7      
     platforms;android-8        | 3      | Android SDK Platform 8      
     platforms;android-9        | 2      | Android SDK Platform 9      
     sources;android-15        | 2      | Sources for Android 15      
     sources;android-16        | 2      | Sources for Android 16      
     sources;android-17        | 1      | Sources for Android 17      
     sources;android-18        | 1      | Sources for Android 18      
     sources;android-19        | 2      | Sources for Android 19      
     sources;android-20        | 1      | Sources for Android 20      
     sources;android-21        | 1      | Sources for Android 21      
     sources;android-22        | 1      | Sources for Android 22      
     sources;android-23        | 1      | Sources for Android 23      
     sources;android-24        | 1      | Sources for Android 24      
     sources;android-25        | 1      | Sources for Android 25      
     system-images;a...ult;armeabi-v7a | 4      | ARM EABI v7a System Image    
     system-images;a...-10;default;x86 | 4      | Intel x86 Atom System Image   
     system-images;a...pis;armeabi-v7a | 5      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 5      | Google APIs Intel x86 Atom Sys...
     system-images;a...ult;armeabi-v7a | 2      | ARM EABI v7a System Image    
     system-images;a...ult;armeabi-v7a | 4      | ARM EABI v7a System Image    
     system-images;a...15;default;mips | 1      | MIPS System Image        
     system-images;a...-15;default;x86 | 4      | Intel x86 Atom System Image   
     system-images;a...pis;armeabi-v7a | 5      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 5      | Google APIs Intel x86 Atom Sys...
     system-images;a...ult;armeabi-v7a | 4      | ARM EABI v7a System Image    
     system-images;a...16;default;mips | 1      | MIPS System Image        
     system-images;a...-16;default;x86 | 5      | Intel x86 Atom System Image   
     system-images;a...pis;armeabi-v7a | 5      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 5      | Google APIs Intel x86 Atom Sys...
     system-images;a...ult;armeabi-v7a | 5      | ARM EABI v7a System Image    
     system-images;a...17;default;mips | 1      | MIPS System Image        
     system-images;a...-17;default;x86 | 3      | Intel x86 Atom System Image   
     system-images;a...pis;armeabi-v7a | 5      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 5      | Google APIs Intel x86 Atom Sys...
     system-images;a...ult;armeabi-v7a | 4      | ARM EABI v7a System Image    
     system-images;a...-18;default;x86 | 3      | Intel x86 Atom System Image   
     system-images;a...pis;armeabi-v7a | 5      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 5      | Google APIs Intel x86 Atom Sys...
     system-images;a...ult;armeabi-v7a | 5      | ARM EABI v7a System Image    
     system-images;a...-19;default;x86 | 5      | Intel x86 Atom System Image   
     system-images;a...pis;armeabi-v7a | 28      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 28      | Google APIs Intel x86 Atom Sys...
     system-images;a...-tv;armeabi-v7a | 3      | Android TV ARM EABI v7a System...
     system-images;a...;android-tv;x86 | 3      | Android TV Intel x86 Atom Syst...
     system-images;a...ult;armeabi-v7a | 4      | ARM EABI v7a System Image    
     system-images;a...-21;default;x86 | 4      | Intel x86 Atom System Image   
     system-images;a...;default;x86_64 | 4      | Intel x86 Atom_64 System Image  
     system-images;a...pis;armeabi-v7a | 20      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 20      | Google APIs Intel x86 Atom Sys...
     system-images;a...gle_apis;x86_64 | 20      | Google APIs Intel x86 Atom_64 ...
     system-images;a...-tv;armeabi-v7a | 1      | Android TV ARM EABI v7a System...
     system-images;a...;android-tv;x86 | 3      | Android TV Intel x86 Atom Syst...
     system-images;a...ult;armeabi-v7a | 2      | ARM EABI v7a System Image    
     system-images;a...-22;default;x86 | 5      | Intel x86 Atom System Image   
     system-images;a...;default;x86_64 | 5      | Intel x86 Atom_64 System Image  
     system-images;a...pis;armeabi-v7a | 14      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 14      | Google APIs Intel x86 Atom Sys...
     system-images;a...gle_apis;x86_64 | 14      | Google APIs Intel x86 Atom_64 ...
     system-images;a...-tv;armeabi-v7a | 10      | Android TV ARM EABI v7a System...
     system-images;a...;android-tv;x86 | 10      | Android TV Intel x86 Atom Syst...
     system-images;a...ear;armeabi-v7a | 6      | Android Wear ARM EABI v7a Syst...
     system-images;a...ndroid-wear;x86 | 6      | Android Wear Intel x86 Atom Sy...
     system-images;a...-23;default;x86 | 9      | Intel x86 Atom System Image   
     system-images;a...;default;x86_64 | 9      | Intel x86 Atom_64 System Image  
     system-images;a...pis;armeabi-v7a | 21      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 21      | Google APIs Intel x86 Atom Sys...
     system-images;a...gle_apis;x86_64 | 21      | Google APIs Intel x86 Atom_64 ...
     system-images;a...;android-tv;x86 | 11      | Android TV Intel x86 Atom Syst...
     system-images;a...fault;arm64-v8a | 7      | ARM 64 v8a System Image     
     system-images;a...ult;armeabi-v7a | 7      | ARM EABI v7a System Image    
     system-images;a...-24;default;x86 | 7      | Intel x86 Atom System Image   
     system-images;a...;default;x86_64 | 7      | Intel x86 Atom_64 System Image  
     system-images;a..._apis;arm64-v8a | 14      | Google APIs ARM 64 v8a System ...
     system-images;a...pis;armeabi-v7a | 14      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 14      | Google APIs Intel x86 Atom Sys...
     system-images;a...gle_apis;x86_64 | 14      | Google APIs Intel x86 Atom_64 ...
     system-images;a...s_playstore;x86 | 13      | Google Play Intel x86 Atom Sys...
     system-images;a...;android-tv;x86 | 5      | Android TV Intel x86 Atom Syst...
     system-images;a...ear;armeabi-v7a | 3      | Android Wear ARM EABI v7a Syst...
     system-images;a...ndroid-wear;x86 | 3      | Android Wear Intel x86 Atom Sy...
     system-images;a..._apis;arm64-v8a | 6      | Google APIs ARM 64 v8a System ...
     system-images;a...pis;armeabi-v7a | 6      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 6      | Google APIs Intel x86 Atom Sys...
     system-images;a...gle_apis;x86_64 | 6      | Google APIs Intel x86 Atom_64 ...
     system-images;a...;android-tv;x86 | 3      | Android TV Intel x86 Atom Syst...
     system-images;a...ndroid-wear;x86 | 1      | Android Wear Intel x86 Atom Sy...
     system-images;a...google_apis;x86 | 4      | Google APIs Intel x86 Atom Sys...
     system-images;a...s_playstore;x86 | 4      | Google Play Intel x86 Atom Sys...
     tools               | 26.0.2    | Android SDK Tools        
    
    Available Updates:
     ID   | Installed | Available
     ------- | -------  | ------- 
     tools  | 26.0.1  | 26.0.2
    复制代码

    4、安装需要的package,执行以下命令

    sdkmanager "build-tools;19.1.0"
    sdkmanager "build-tools;20.0.0"
    sdkmanager "build-tools;21.1.2"
    sdkmanager "build-tools;22.0.1"
    sdkmanager "build-tools;23.0.1"
    sdkmanager "build-tools;23.0.3"
    sdkmanager "build-tools;24.0.0"
    sdkmanager "build-tools;24.0.1"
    sdkmanager "build-tools;24.0.2"
    sdkmanager "build-tools;24.0.3"
    sdkmanager "build-tools;25.0.0"
    sdkmanager "build-tools;25.0.1"
    sdkmanager "build-tools;25.0.2"
    sdkmanager "build-tools;25.0.3"
    sdkmanager "build-tools;26.0.0"
    sdkmanager "build-tools;26.0.1"
    sdkmanager "build-tools;26.0.2"
    sdkmanager "build-tools;26.0.3"

    sdkmanager "build-tools;27.0.0"
    sdkmanager "build-tools;27.0.1"
    sdkmanager "build-tools;27.0.2"
    sdkmanager "build-tools;27.0.3"

    sdkmanager "build-tools;28.0.0"
    sdkmanager "build-tools;28.0.1"
    sdkmanager "build-tools;28.0.2"
    sdkmanager "build-tools;28.0.3"

    sdkmanager "platform-tools"
    sdkmanager "platforms;android-10"
    sdkmanager "platforms;android-11"
    sdkmanager "platforms;android-12"
    sdkmanager "platforms;android-13"
    sdkmanager "platforms;android-14"
    sdkmanager "platforms;android-15"
    sdkmanager "platforms;android-16"
    sdkmanager "platforms;android-17"
    sdkmanager "platforms;android-18"
    sdkmanager "platforms;android-19"

    sdkmanager "platforms;android-20"
    sdkmanager "platforms;android-21"
    sdkmanager "platforms;android-22"
    sdkmanager "platforms;android-23"
    sdkmanager "platforms;android-24"
    sdkmanager "platforms;android-25"
    sdkmanager "platforms;android-26"
    sdkmanager "platforms;android-27"
    sdkmanager "platforms;android-28"

     

    可以先执行1行命令看一下是不是能正常运行

    我执行了1个命令,出现了一个警告:Warning: File /root/.android/repositories.cfg could not be loaded. 

    说是是在目录 /root/.android/ 下没有找到文件repositories.cfg

    解决办法:

    使用touch命令在根目录下新建1一个repositories.cfg文件就可以了

    touch ~/.android/repositories.cfg

    然后执行sdkmanager xxxx就没问题了。

    执行完的效果:

    在android-home目录下多了4个文件夹

    5、配置platform tools

    打开 /etc/profile 添加环境变量

    执行以下命令,使配置文件生效
    source /etc/profile

    验证配置结

    三、安装nodejs:

    安装版本:8.7.0

    1、从源码下载Nodejs

    cd /usr/local/src
    wget https://npm.taobao.org/mirrors/node/v8.7.0/node-v8.7.0.tar.gz

    2、解压缩 nodejs 安装包

    tar xvf node-v8.7.0.tar.gz

    3、进入解压的node文件夹,安装必要的编译软件包

    cd node-v8.7.0
    ./configure

    如提示gcc too old (英文那一大串我忘记了),大概意思让你升级ggc到4.90以上版本,因为nodejs8.7.0编译时gcc版本要求在4.9.4+。

    升级gcc参考我另一篇Centos7升级gcc版本方法之一使用scl软件集

    再次执行

    ./configure
    make

    注:make过程较为耗时,可能需要30分钟以上

    4、安装Nodejs

    sudo make install

    5、验证是否正确安装

    node -v

    四、安装appium:

    方法一:

    1、源码安装:

    git clone https://github.com/appium/appium.git

    2、进入appium源码文件夹,使用cnpm install安装依赖

    cnpm install

    如在安装期间执行到这卡住了,一直不走,

    Downloading Selendroid standalone server version 0.17.0 from http://repo1.maven.org/maven2/io/selendroid/selendroid-standalone/0.17.0/selendroid-standalone-0.17.0-with-dependencies.jar --> /usr/local/lib/node_modules/appium/node_modules/_appium-selendroid-driver@1.6.4@appium-selendroid-driver/selendroid/download/selendroid-server-7cf7163ac47f1c46eff95b62f78b58c1dabdec534acc6632da3784739f6e9d82.jar

    自行到maven仓库下载 上传到对应目录下, 重命名为存放的文件名即可

    3、最后用appium -v试一下安装好的版本

     方法二:

    1. 安装 cnpm

    官网说用npm安装appium,我试了很久都不成功。因此先安装 cnpm, 再用 cnpm 安装appium等。

    npm 与 cnpm 的关系,详见博客 https://blog.csdn.net/shelly1072/article/details/51524029

    npm install -g cnpm --registry=https://registry.npm.taobao.org

    2. 安装 appium/appium-doctor

    cnpm install -g appium

    cnpm install -g appium-doctor

    目前发现版本1.9.0有问题,可安装1.8.1:

    cnpm install -g appium@1.8.1

    设置 appium/appium-doctor 的软连接方式,方式同 1-2

    3. 启动 appium

    终端输入:appium 即可

    4. 启动 appium-doctor

    终端输入:appium 即可

    appium-doctor 检查环境是否满足要求

    五、appium desktop 安装:

    官网上下载对应版本  https://github.com/appium/appium-desktop/releases

    linux 下载 appium-desktop-1.8.2-x86_64.AppImage

    设置 appium/appium-doctor 的软连接方式,方式同 1-2 (或者export 文件对应的路径,alias 等)

    终端输入 appium-desktop 启动 appium,start server

    点击此处可启动 appium inspector,可支持 IOS/Android 定位元素

     

    六、客户端部署(以Java为例)

    1、pom添加依赖

    <dependency>
        <groupId>io.appium</groupId>
        <artifactId>java-client</artifactId>
        <version>5.0.0-BETA9</version>
        <scope>test</scope>
    </dependency>

    2、代码实例

    package com.demo.test;
    
    import io.appium.java_client.android.AndroidDriver;
    import org.openqa.selenium.remote.DesiredCapabilities;
    
    import java.net.URL;
    
    /***
     * @author longrong.lang
     * appium demo
     */
    public class CalculatorTest {
    
        public static void main(String[] args) throws Exception {
            DesiredCapabilities capabilities = new DesiredCapabilities();
            capabilities.setCapability("deviceName", "GALAXY S7");//deviceID
            capabilities.setCapability("automationName", "Appium");
            capabilities.setCapability("platformName", "Android");//操作系统
            capabilities.setCapability("platformVersion", "8.0.0");//系统版本
            capabilities.setCapability("appPackage", "cn.pear.browser");//应用包名
            capabilities.setCapability("appActivity", "cn.pear.browser.activities.WelcomeActivity");//启动页面
            AndroidDriver driver = new AndroidDriver(new URL("http://172.25.40.208:4723/wd/hub"), capabilities);//appium服务端连接
            Thread.sleep(200000);
            driver.quit();
        }
    
    }
  • 相关阅读:
    Leetcode 92. Reverse Linked List II
    Leetcode 206. Reverse Linked List
    Leetcode 763. Partition Labels
    Leetcode 746. Min Cost Climbing Stairs
    Leetcode 759. Employee Free Time
    Leetcode 763. Partition Labels
    搭建数据仓库第09篇:物理建模
    Python进阶篇:Socket多线程
    Python进阶篇:文件系统的操作
    搭建数据仓库第08篇:逻辑建模–5–维度建模核心之一致性维度2
  • 原文地址:https://www.cnblogs.com/wsy0202/p/12098598.html
Copyright © 2011-2022 走看看