Android studio之 build.gradle配置
在使用Android studio创建项目会出现两个build.gradle:
一. Project项目级别的build.gradle
(1)、buildscript{}闭包里是gradle脚本执行所需依赖,分别是对应的maven库和插件。
闭包下包含:
1、repositories闭包
2、dependencies闭包
maven库 repositories 示列
repositories {maven { url 'http://maven.aliyun.com/nexus/content/repositories/releases/' }google()jcenter() //代码托管仓库mavenCentral()}
插件dependencies示列
dependencies {classpath 'com.android.tools.build:gradle:4.0.0'}
(2)、allprojects{}闭包里是项目本身需要的依赖,比如项目所需的maven库。`
闭包下包含:maven库repositories
maven库示列
repositories {maven { url 'http://maven.aliyun.com/nexus/content/repositories/releases/' }google()jcenter() //代码托管仓库mavenCentral()}
(3)、task clean(type: Delete){}
- 1、是gradle 运行clean时,执行此处定义的task任务,该任务继承自Delete,删除根目录中的build目录。其中buildscript包含repositories闭包和dependencies闭包。
- 2、repositories{}闭包:配置远程仓库该闭包中声明了jcenter()和google()的配置,其中jcenter是一个代码托管仓库,上面托管了很多Android开源项目,在这里配置了jcenter后我们可以在项目中方便引用jcenter上的开源项目,从Android Studio3.0后新增了google()配置,可以引用google上的开源项目。
- 3、dependencies{}闭包:配置构建工具,该闭包使用classpath声明了一个Gradle插件,由于Gradle并不只是用来构建Android项目,因此此处引入相关插件来构建Android项目,其中’4.0.0’为该插件的版本号,可以根据最新的版本号来调整。
二. app模块下的build.gradle
(1)、apply 声明是Android程序 ,apply plugin表示应用了一个插件,一般分为两种类型:application程序木块和library模块
- 1、apply plugin: ‘com.android.application’ 表示这是一个应用程序模块
- 2、apply plugin: ‘com.android.library’ 标识这是一个库模块
- 3、apply from: ‘config.gradle’ 标识这是一个自定义的配置gradle
(2)、android{}闭包下的配置
-
compileSdkVersion是用来指定编译应用程序时所使用的Android SDK版本。它对应于在项目的build.gradle文件中的android块中设置的值。一般情况下,我们将其设置为最新的Android SDK版本,以便能够使用最新的Android平台提供的功能和特性
-
compileSdkVersion和minSdkVersion比较,compileSdkVersion表示当前项目的编译版本,即你想让AndroidStudio以什么SDK版本去编译你的项目,minSdkVersion表示当前项目支持的最低安卓系统版本,
-
buildToolsVersion则是指构建工具的SDK版本,也就是AndroidStudio中设置的AndroidSDK版本,buildToolsVersion要高于compileSdkVersion版本,这个很好理解,如果编译版本高于AndroidStudio的SDK版本,那AndroidStudio怎么给项目编译呢?
-
targetSdkVersion app的目标sdk版本,可以理解为当前app在这个版本是比较稳定的,针对这个版本所开发的,是安卓提供的前向兼容的主要手段,它的作用就是当targetSdkVersion为20的app运行在系统版本号高于20的手机系统中,app所执行的旧版本api,在高版本可能不一样了,但是安卓为了兼容在系统层会读取当前应用的targetSdkVersion,当targetSdkVersion版本号低于当前版本就会执行旧版本的api,不会导致由于系统的原因而让app运行失常。
-
defaultConfig{} 是 Android Gradle 插件中使用的默认配置块。它用于指定应用程序的默认配置参数。
defaultConfig {applicationId "com.yxj.xxxx"minSdkVersion rootProject.ext.android.minSdkVersiontargetSdkVersion rootProject.ext.android.targetSdkVersionversionCode 0000versionName "1.1.0000"ndk {
// 1、armeabi-v7a:第七代及以上的ARM处理器,2011年以后生产的大部分Android设备都使用。
// 2、arm64-v8a:第8代、64位ARM处理器,很少设备,三星GalaxyS6是其中之一。
// 3、armeabi:第5代、第6代的ARM处理器,早期的手机用的比较多。
// 4、X86:平板、模拟器用得比较多。
// 5、X86_64:64位得平板。
// abiFilters 'armeabi', 'x86',"armeabi-v7a", "arm64-v8a",'x86_64'}//Android应用程序默认具有SingleDex支持,这限制了您的应用程序只有65536个方法(引用).所以multidexEnabled = true只是意味着你现在可以在你的应用程序中编写超过65536个方法(引用).multiDexEnabled true}
- 自动化打包配置signingConfigs{}
signingConfigs {debug {storeFile file('F:\\Android_work\\work\\xxx.keystore')storePassword '000000'keyAlias = 'keyAlias' //key的别名keyPassword '000000'v1SigningEnabled truev2SigningEnabled true}release {storeFile file('F:\\Android_work\\work\\xxx.keystore')storePassword '000000'keyAlias = 'keyAlias '//key的别名keyPassword '000000'v1SigningEnabled truev2SigningEnabled true}}
- lintOptions{} 用于配置静态代码分析工具Lint的参数和行为
lintOptions {// true--关闭lint报告的分析进度quiet true// true--错误发生后停止gradle构建abortOnError false// true--只报告errorignoreWarnings true// true--忽略有错误的文件的全/绝对路径(默认是true)//absolutePaths true// true--检查所有问题点,包含其他默认关闭项checkAllWarnings true// true--所有warning当做errorwarningsAsErrors true// 关闭指定问题检查disable 'TypographyFractions','TypographyQuotes'// 打开指定问题检查enable 'RtlHardcoded','RtlCompat', 'RtlEnabled'// 仅检查指定问题check 'NewApi', 'InlinedApi'// true--error输出文件不包含源码行号noLines true// true--显示错误的所有发生位置,不截取showAll true// 回退lint设置(默认规则)lintConfig file("default-lint.xml")// true--生成txt格式报告(默认false)textReport true// 重定向输出;可以是文件或'stdout'textOutput 'stdout'// true--生成XML格式报告xmlReport false// 指定xml报告文档(默认lint-results.xml)xmlOutput file("lint-report.xml")// true--生成HTML报告(带问题解释,源码位置,等)htmlReport true// html报告可选路径(构建器默认是lint-results.html )htmlOutput file("lint-report.html")// true--所有正式版构建执行规则生成崩溃的lint检查,如果有崩溃问题将停止构建checkReleaseBuilds true// 在发布版本编译时检查(即使不包含lint目标),指定问题的规则生成崩溃fatal 'NewApi', 'InlineApi'// 指定问题的规则生成错误error 'Wakelock', 'TextViewEdits'// 指定问题的规则生成警告warning 'ResourceAsColor'// 忽略指定问题的规则(同关闭检查)ignore 'TypographyQuotes'}
- compileOptions{}是一个用于配置 Gradle 编译选项的对象。它可以在 Gradle 构建文件中使用
compileOptions {//配置 Java 编译参数:sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8// Java 编译器标志参数:compilerArgs.addAll(['-Xlint:unchecked', '-Xlint:deprecation'])//配置 Kotlin 编译参数:kotlinOptions {jvmTarget = "1.8"freeCompilerArgs += ['-Xopt-in=kotlin.RequiresOptIn']//配置 C 语言编译参数:apply plugin: 'cpp'cppCompilerArgs.add('-std=c99')cppCompilerArgs.add('-Wall')//配置 C++ 编译参数:apply plugin: 'cpp'cppCompilerArgs.add('-std=c++11')cppCompilerArgs.add('-Wall')}
- buildTypes{}可以配置我们需要的构建类型,例如我们常用到的 “测试类型” 和 “本地类型”,则可以使用如下配置
- minifyEnabled:表明是否对代码进行混淆,true表示对代码进行混淆,false表示对代码不进行混淆,默认的是false。
- proguardFiles: 指定混淆的规则文件,这里指定了proguard-android.txt文件和proguard-rules.pro文件两个文件,proguard-android.txt文件为默认的混淆文件,里面定义了一些通用的混淆规则。proguard-rules.pro文件位于当前项目的根目录下,可以在该文件中定义一些项目特有的混淆规则。
- buildConfigField:用于解决Beta版本服务和Release版本服务地址不同或者一些Log打印需求控制的。例如:配置buildConfigField(“boolean”, “LOG_DEBUG”, “true”),这个方法接收三个非空的参数,第一个:确定值的类型,第二个:指定key的名字,第三个:传值,调用的时候BuildConfig.LOG_DEBUG即可调用。
- debuggable:表示是否支持断点调试,release默认为false,debug默认为true。
- jniDebuggable:表示是否可以调试NDK代码,使用lldb进行c和c++代码调试,release默认为false
- signingConfig:设置签名信息,通过signingConfigs.release或者signingConfigs.debug,配置相应的签名,但是添加此配置前必须先添加signingConfigs闭包,添加相应的签名信息。
- renderscriptDebuggable:表示是否开启渲染脚本就是一些c写的渲染方法,默认为false。
- renderscriptOptimLevel:表示渲染等级,默认是3。
- pseudoLocalesEnabled:是否在APK中生成伪语言环境,帮助国际化的东西,一般使用的不多。
- applicationIdSuffix:和defaultConfig中配置是一的,这里是在applicationId
中添加了一个后缀,一般使用的不多。 - versionNameSuffix:表示添加版本名称的后缀,一般使用的不多。
- zipAlignEnabled:表示是否对APK包执行ZIP对齐优化,减小zip体积,增加运行效率,release和debug默认都为true。
buildTypes {//发布版本类型release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}// 测试类型,给测试人员debug{minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}// 本地类型,和后端联调使用local{minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}
- packagingOptions{}是一个用于配置Android项目的属性,用于控制应用程序打包过程中的资源和依赖项的处理方式。这个属性通常用于解决资源冲突和冗余问题。
在Android中,一个应用程序可能会依赖多个库或模块,每个库或模块都可能包含一些相同的资源文件或类文件。当编译和打包应用程序时,如果存在冲突的资源文件或类文件,编译器将会抛出错误。packagingOptions提供了一种配置方式,让开发者能够控制冲突的处理方式。
// 配置packagingOptionspackagingOptions {//exclude:用于排除特定的资源文件或类文件,使其不被打包到最终的APK文件中。可以使用通配符来匹配文件名或文件路径exclude 'META-INF/LICENSE.txt' // 排除名为LICENSE.txt的文件exclude 'META-INF/*.txt' // 排除所有以.txt结尾的文件//merge:用于控制冲突资源文件的合并策略。可以使用"0"表示不合并,使用"1"表示合并,使用"2"表示强制合并。merge 'resources.arsc' 0 // 不合并resources.arsc文件merge 'assets/strings.txt' 1 // 合并assets目录下的strings.txt文件merge 'assets/*.txt' 2 // 强制合并assets目录下所有以.txt结尾的文件//pickFirst:用于控制冲突资源文件的优先选择策略。可以使用"0"表示选择第一个出现的文件,使用"1"表示选择最后一个出现的文件,使用"2"表示选择全部文件。pickFirst 'res/values/strings.xml' 0 // 选择第一个出现的strings.xml文件pickFirst 'assets/logo.png' 1 // 选择最后一个出现的logo.png文件pickFirst 'assets/*.png' 2 // 选择全部以.png结尾的文件//doNotStrip Gradle 在构建 APK 时将会保留这些被标记的文件和文件夹,并不会进行剥离操作。doNotStrip "*/armeabi/libYTCommon.so"doNotStrip "*/armeabi-v7a/libYTCommon.so"doNotStrip "*/x86/libYTCommon.so"doNotStrip "*/arm64-v8a/libYTCommon.so"}
- sourceSets{}可以指定需要被编译的源文件,不在指定路径下的源文件将会被排除(即不会被编译)。Gradle通过SourceSets实现了Java项目的目录布局定义
sourceSets {main {manifest.srcFile 'AndroidManifest.xml'java.srcDirs = ['src']resources.srcDirs = ['src']aidl.srcDirs = ['src']renderscript.srcDirs = ['src']res.srcDirs = ['res']assets.srcDirs = ['assets']jniLibs.srcDirs = ['libs']//如果我们不想用默认的,可以重新指定,按如下方式就可以修改目录布局结构java {srcDir 'src/java' // 指定源码目录}resources {srcDir 'src/resources' //资源目录}}
- aaptOptions{} aapt 全称为 Android Asset Packaging Tool,即为Android资源打包工具。可以通过其来进行配置打包的细节。
aaptOptions {//给 aapt 执行时添加额外参数,添加的参数可通过 aapt --help 进行查看additionalParameters '--auto-add-overlay'additionalParameters '--rename-manifest-package','com.zinc.test' // 会将包名更改为 com.zinc.test//设置线程数cruncherProcesses 4//设置是否无法找到配置条目,则强制aapt返回错误。failOnMissingConfigEntry true//设置忽略的资源// 忽略掉 png 后缀的图像,只会排除 assets 下的资源,res下的资源不会排除ignoreAssets "*.png"//设置忽略的资源 noCompress 'foo', 'bar'ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"// 忽略掉 png 后缀的图像,只会排除 res 下的资源,assets下的资源不会排除ignoreAssetsPattern '*.png'//是否对资源进行压缩,默认不对"jpg"、"png"压缩。如果传入’’,则表明全部资源不会进行压缩。压缩后的资源可以通过 aapt l -v apk路径 进行查看压缩的细节。// 不对 bat 进行压缩noCompress '.bat'}
-
productFlavors{}闭包:多个渠道配置
productFlavors是android{}中的一个扩展属性,主要用来让同一套代码可以打包成不同的apk包,又可以成为变体(Variants)。其实该productFlavors属性是与buildTypes配合使用的 -
buildFeatures
(3)、dependencies{}闭包是指在开发 Android 应用程序时,所需的各种库和模块。这些依赖项可以帮助开发者实现不同的功能和特性,例如网络请求、图形绘制、数据库操作等
dependencies {//引入文件树,这里会把libs目录下所有的jar包自动引入implementation fileTree(dir: 'libs', include: ['*.jar'])implementation 'com.android.support:appcompat-v7:26.1.0'implementation 'com.android.support.constraint:constraint-layout:1.1.2'testImplementation 'junit:junit:4.12'androidTestImplementation 'com.android.support.test:runner:1.0.2'androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'//引入指定jar包文件,这里传递是相对路径即相当于module下的build.gradle文件的路径,如以下写法则是引入与module下的build.gradle同路径下的jar包implementation files('crazymo.jar')//引入依赖库Module方式1implementation project(':libcrazymo') implementation project(path:':libcrazymo')
}
gradle3.0中compile依赖关系已被弃用,被implementation和api替代,provided被compile only替代,apk被runtime only替代。
- runtime only——只打包不参与编译,用于指定Gradle
不与应用的apk一起打包的依赖库,如果运行时无需依赖此依赖库,这将有助于apk大小的优化。 - compile only——只编译不打包到apk
- api——跟2.x版本的 compile完全相同
- implementation——只能在内部使用此模块,比如我在一个library中使用implementation依赖了gson库且我的主项目依赖了library,那么主项目就无法访问gson库中的方法,这样的好处是编译速度会加快,推荐使用implementation的方式去依赖,如果你需要提供给外部访问,那么就使用api依赖即可。除了使用静态依赖的方式,还可以使用动态的形式进行依赖(实际项目中不太推荐),以下就是使用另一种形式进行依赖,虽然使用三句话都配置了相同的group和module的依赖,不过编译不会出错,因为Groovy会自动为你选择最新版本的并排除重复的。
相关文章:
Android studio之 build.gradle配置
在使用Android studio创建项目会出现两个build.gradle: 一. Project项目级别的build.gradle (1)、buildscript{}闭包里是gradle脚本执行所需依赖,分别是对应的maven库和插件。 闭包下包含: 1、repositories闭包 2、d…...
【ElasticSearch】一键安装IK分词器无需其他操作
要注意的时下面命令中的es是我容器的名称,要换成你对应的es容器名 docker exec -it es /bin/bash # 进入容器 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis- ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.1…...
在Ubuntu上启动一个简单的用户登录接口服务
一个简单的用户登录接口 我使用 Python 和 Flask 框架来创建这个接口 首先,确保你已经安装了 Python 和 Flask。如果没有安装,可以通过以下命令在 Ubuntu 上安装: sudo apt update sudo apt install python3 python3-pip pip3 install Fla…...
【PHP】函数-作用域可变函数匿名函数闭包常用系统函数
文章目录 函数定义&使用命名规则参数种类默认值引用传递函数返回值return关键字 作用域global关键字静态变量 可变函数匿名函数闭包常用系统函数输出函数时间函数数学函数与函数相关函数 函数 函数:function,是一种语法结构,将实现某一个…...
Python使用pymysql和sqlalchemy访问MySQL的区别
Python使用pymysql和sqlalchemy访问MySQL的区别 1. 两个数据库连接工具的对比 pymysql和sqlalchemy是两个Python中经常用于与MySQL数据库交互的库。都可以连接MySQL数据库,但它们有明显的区别。 (1)特点 pymysql是一个Python模块…...
ubuntu服务器的mysql,更改root密码,并允许远程连接
我只是一个搬运工 更改密码远程连接...
微信小程序【构建npm】使用记录
:: 问题 使用原生微信小程序开发时,通过官方 typescript 模板构建的小程序无法正确执行 构建npm 成功,从而导致我想通过 npm 安装并使用第三方库出现问题 :: 开发环境(可参照) 设备:macOS Ventura 13.0 微信开发者工…...
mybatis入门的环境搭建及快速完成CRUD(增删改查)
又是爱代码的一天 一、MyBatis的介绍 ( 1 ) 背景 MyBatis 的背景可以追溯到 2002 年,当时 Clinton Begin 开发了一个名为 iBATIS 的持久化框架。iBATIS 的目标是简化 JDBC 编程,提供一种更直观、易用的方式来处理数据库操作。 在传统的 JDBC 编程中&…...
《HeadFirst设计模式(第二版)》第九章代码——组合模式
上一章链接: 《HeadFirst设计模式(第二版)》第九章代码——迭代器模式_轩下小酌的博客-CSDN博客 前面说到,当一个菜单里面出现了子菜单的时候,前面的迭代器模式得换成组合模式。 组合模式: 允许将对象组合成树形结构来表现部分-整…...
iOS17 widget Content margin
iOS17小组件有4个新的地方可以放置分别是:Mac桌面、iPad锁屏界面、 iPhone Standby模式、watch的smart stack Transition to content margins iOS17中苹果为widget新增了Content margin, 使widget的内容能够距离边缘有一定的间隙,确保内容显示完整。这…...
计网第四章(网络层)(一)
前面学习了数据链路层,我们可以实现一个网络的内部通信,可是要把这些网络互连起来形成更大的互连网,就需要用网络层互联设备路由器。而有了路由器的参与,就有不同网络、跨网络的概念诞生。 这时候我想大家也能理解为什么叫网络层…...
【前端】vue3 接入antdv表单校验
1/🍕背景 1、表单校验是非常常见的需求,能够有效的拦截大部分的错误数据,提升效率。 2、快速的给使用者提示和反馈,用户体验感非常好。 3、成熟的表单校验框架,开发效率高,bug少。 最近使用的是vue3antdv的…...
CY3-COOH在蛋白质定位的特点1251915-29-3星戈瑞
欢迎来到星戈瑞荧光stargraydye!小编带您盘点: CY3-COOH是一种橙红色荧光标记试剂,可以用于蛋白质定位研究。**以下是CY3-COOH在蛋白质定位的特点和应用: 细胞定位:**将CY3-COOH标记到特定蛋白质上,可以…...
数据采集:selenium 获取某网站CDN 商家排名信息
写在前面 工作中遇到,简单整理理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大…...
5.从头跑一个pipeline
1.安装torch pip install torchvision torch PyTorch的torchvision.models模块中自带的很多预定义模型。torchvision 是PyTorch的一个官方库,专门用于处理计算机视觉任务。在这个库中,可以找到许多常用的卷积神经网络模型,包括ResNet、VGG、…...
leetcode原题: 堆箱子(动态规划实现)
题目: 给你一堆n个箱子,箱子宽 wi、深 di、高 hi。箱子不能翻转,将箱子堆起来时,下面箱子的宽度、高度和深度必须大于上面的箱子。实现一种方法,搭出最高的一堆箱子。箱堆的高度为每个箱子高度的总和。 输入使用数组…...
Java中数组和集合的对比,以及什么情况下使用数组更合适,什么情况下使用集合更合适。集合的基本介绍和集合体系图。
在Java中,数组和集合(Java集合框架)都用于存储多个元素。它们各自有不同的特点和适用场景。下面我会对数组和集合进行对比,并解释何时使用集合更好,以及何时使用数组更合适。 数组和集合的对比: 数组&…...
STM32之17.PWM脉冲宽度调制
一LED0脉冲宽度调制在TIM14_CHI,先将LED(PF9)代码配置为AF推挽输出模式,将PF9引脚连接到TIM14, #include <stm32f4xx.h>static GPIO_InitTypeDef GPIO_InitStruct;void Led_init(void) {//打开端口F的硬件时钟&a…...
VS2015打开Qt的pro项目文件 报错
QT报错:Project ERROR: msvc-version.conf loaded but QMAKE_MSC_VER isn‘t set 解决方法: 找到本机安装的QT路径,找到“msvc-version.conf”文件,用记事本打开, 在其中添加版本“QMAKE_MSC_VER 1900”保存即可。 …...
骨传导耳机会头疼吗?骨传导耳机会对身体不好吗
一般情况下,骨传导耳机不会引起头疼。由于骨传导耳机的工作原理是通过将声音传导到颞骨和耳部周围的骨骼来传达音频信号,而不是直接进入耳道,因此不会对耳朵造成压力或产生耳疼的感觉。 然而,每个人的感受和体验可能不同ÿ…...
【面试题系列】(一)
Redis有哪些数据结构?其底层是怎么实现的? Redis 系列(一):深入了解 Redis 数据类型和底层数据结构 字符串(String): 用于存储文本或二进制数据。可以执行字符串的基本操作…...
vscode C++17便捷配置教程(懒人版)
环境链接 以上是已经配置好的c17环境链接,直接下载解压即可(注意文件路径上不要带有中文) 下载解压之后按照msys64-mingw64-bin路径打开 然后单击该路径右方空白区域可直接复制路径 然后点击开始菜单搜索“环境变量“并打开(如…...
动态数组实现链地址法哈希表
通常情况下哈希函数的输入空间远大于输出空间,因此理论上哈希冲突是不可避免的。比如,输入空间为全体整数,输出空间为数组容量大小,则必然有多个整数映射至同一数组索引。 解决哈希冲突方法常见有:链地址法、开放寻址…...
Eclipse(STS):pom.xml 报错:Multiple markers at this line
pom.xml 报错:Multiple markers at this line STS中,项目能够正常运行,但是 pom.xml 报错:Multiple markers at this line 项目本身没有任何修改,之前不报错的,突然报错了。 Multiple markers at this li…...
CSerialPort教程4.3.x (3) - CSerialPort在MFC中的使用
CSerialPort教程4.3.x (3) - CSerialPort在MFC中的使用 环境: 系统:windows 10 64位 编译器:Visual Studio 2008前言 CSerialPort项目是一个基于C/C的轻量级开源跨平台串口类库,可以轻松实现跨平台多操作系统的串口读写&#x…...
2022版 的IDEA创建一个maven项目(超详细)
一.设置idea中指定的maven的位置以及本地存储仓库 开发中一般我们使用自己下载的maven,不使用IDEA工具自带的,这就需要将我们下载的maven配置到IDEA工具中,配置如下图所示: 或者直接 快捷键 CtrlAltS 直接进入设置 maven home pa…...
lvs实现DR模型搭建
目录 一,实现DR模型搭建 1, 负载调度器配置 1.1调整ARP参数 1.2 配置虚拟IP地址重启网卡 1.3 安装ipvsadm 1.4 加载ip_vs模块 1.5 启动ipvsadm服务 1.6 配置负载分配策略 1.7 保存策略 2, web节点配置 1.1 调整ARP参数 1.2 配置虚拟I…...
设计模式之迭代器模式(Iterator)的C++实现
1、迭代器模式的提出 在软件开发过程中,操作的集合对象内部结构常常变化,在访问这些对象元素的同时,也要保证对象内部的封装性。迭代器模式提供了一种利用面向对象的遍历方法来遍历对象元素。迭代器模式通过抽象一个迭代器类,不同…...
【0基础入门Python Web笔记】二、python 之逻辑运算和制流程语句
二、python 之逻辑运算和制流程语句 逻辑运算控制流程语句条件语句(if语句)循环结构(for循环、while循环)continue、break和pass关键字控制流程语句的嵌套以及elif 更多实战项目可进入下方官网 逻辑运算 Python提供基本的逻辑运算…...
容器——Docker
1.安装docker服务,配置镜像加速器 2.下载系统镜像(Ubuntu、 centos) 3.基于下载的镜像创建两个容器 (容器名一个为自己名字全拼,一个为首名字字母) 4.容器的启动、 停止及重启操作 5.怎么查看正在运行的容器…...
php wordpress 目录/怎么做一个网页
前言概要: 1,进大公司还是小公司,真的有的选? 2,校招的潜规则 3,校招想进大厂怎么办 4,社招的潜规则 5,社招想进大厂怎么办? 【一面】 Android四大组件是什么…...
哈尔滨城市宣传片/企业网站seo案例
Collection |–List 有序(存取顺序一致,可重复 |–Set 无序(存取顺序不一致) hashSet:它不保证set的迭代顺序,特别时它不保证该顺序恒久不变 注意虽然Set集合的元素无序,但是,作为集合来说,它肯定有它自己的存储顺序,而你的顺序恰好和它存储顺序一致,这代表不了有序,你可以多存…...
网站会员发展计划/上海今日头条新闻
MSTP是IEEE 802.1s中提出的一种STP和VLAN结合使用的新协议,它既继承了RSTP端口快速迁移的优点,又解决了RSTP中不同vlan必须运行在同一棵生成树上的问题 实例和域 多生成树协议MSTP(Multiple Spanning Tree Protocol)是IEEE 802.1s…...
电脑怎么登录wordpress/优化大师有必要花钱吗
碰到了一种避开惯性思维的写法想分享出来(由于标题不能打叹号,你品一下哈) #include<stdio.h> #include <math.h> int main() {int n 1;double e 1.0, term 1.0;double fac 1;double deta 0.0;scanf("%lf", &deta);//按照题目要求最后一项的绝…...
江苏外贸网站建设推广/seo优化员
Asp.Net MVC<;四>;:路由器路由的核心类型基本定义于System.Web.dll中,路由机制同样可应用与Web Forms,实现请求地址和物理文件的分离. web form中使用路由器的示例 路由配置 protected voi ...Java内部DNS查询实现和参数设…...
东营网站建设关键字排名问题/b站推广入口2023年
关键词: MFC, SetWindowOrg, SetViewportOrg, 深入浅出MFC 最近突然又很有激情的开始看Jeff Prosise的那本"Programming Windows with MFC, 2 ed."。尽管是英文版的,但是感觉这本书上手比喉结的那本所谓的 深入浅出MFC 要容易理解的多。候同学…...