精华内容
参与话题
问答
  • Java基础-----什么叫依赖

    千次阅读 2019-05-10 21:22:21
    继承: package a.sample; public class a{int a = 1;} package a.sample; public class b extend A{int B = A;} //这是有效的 ...依赖: 下面重给a类: package a.sample; import a.sample.b; public cla...

    继承:


    package a.sample;
    public class a{int a = 1;}

    package a.sample;
    public class b extend A{int B = A;} //这是有效的


    也就是B继承了A类 B类可以用A类的变量A


    依赖:


    下面重给a类:
    package a.sample;
    import a.sample.b;
    public class a{int a = 1;int c = b.B;} //如果删掉B类,此代码无效!


    也就是说a类引用了b类的b变量
    这就是一个依赖的关系,所以构成依赖

    展开全文
  • Maven依赖详解

    千次阅读 2018-03-09 08:56:37
    一、依赖 依赖是Maven 中最关键的部分,我们之所以在工程中使用Maven,就是因为它的依赖管理功能。如果我们想要在工程中引入某个jar 包,只需要在pom.xml 中引入其jar 包的坐标即可。比如引入log4j 的依赖: &...

    一、依赖

    依赖是Maven 中最关键的部分,我们之所以在工程中使用Maven,就是因为它的依赖管理功能。如果我们想要在工程中引入某个jar 包,只需要在pom.xml 中引入其jar 包的坐标即可。比如引入log4j 的依赖:

        <dependencies>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
                <scope>compile</scope>
            </dependency>
        </dependencies>

    Maven 通过groupIdartifactIdversion三个向量来定位Maven 仓库其jar 包所在的位置,并把对应的jar 包引入到工程中来。

    二、依赖范围

    在引入log4j 依赖的时候,有一个scope设置,这个scope设置的值就是对应的依赖范围(因为compile 是默认的依赖范围,所以有时也可以省略)。

    Maven 提供了六种依赖的范围:compiletestprovidedruntimesystemimport。其中compile 是默认的依赖范围。这里主要对比前三种常用的依赖范围。

    type 对主程序是否有效 对测试程序是否有效 是否参与打包与部署 典型例子
    compile Y Y Y log4j
    test N Y N junit
    provided Y Y N servlet-api

    需要注意的是:provided 范围依赖是不参与项目打包与部署的,比如 servlet-api,如果你把scope改成compile 范围的依赖,就会因为jar 包冲突报错。原因是我们在启动web 项目时,tomcat 已经在启动时加载了自身的 servlet-api。
    这里写图片描述

    三、依赖的传递性

    依赖的传递性是指:在A 中添加对B 的依赖,在B 中添加对C 的依赖,如果依赖范围是compile 的,A 不仅会有B 的jar 包,也会有C 的jar 包。如果在C 中添加了某个依赖,那么根据传递性,A 和B 也可以使用A 添加的依赖,而不需要自己再重新引入依赖。
    这里写图片描述

    四、依赖的原则

    最短路径优先原则:如果A 依赖于B,B 依赖于C,在B 和C 中同时有log4j 的依赖,并且这两个版本不一致,那么A 会根据最短路径原则,在A 中会传递过来B 的log4j版本。
    这里写图片描述

    路径相同先声明原则:如果在A 同时依赖于B 和C,B 和C 没有依赖关系,并且都有log4j 的依赖,且版本不一致,那么A 会引入在pom.xml 中先声明依赖的log4j 版本。
    这里写图片描述

    五、依赖的排除

    我们在当前工程中引入了A 的依赖,而A 同时有对B 的依赖,根据传递性我们知道,在当前工程中会自动引入对B 的依赖。其中B 可能是一个不稳定的版本,或者对当前的工程存在着不良的影响 。这时我们就可以在引入对A 依赖的同时排除对B 的依赖。

    下面我们以spriing-core 为例,当我们在pom.xml中引入对spriing-core 的同时,会自动将commons-logging 的jar 包引入进来。如下所示:
    这里写图片描述
    假设这个commons-logging 是一个不稳定的版本(只是假设),我们希望在引入spriing-core 时排除commons-logging。这时我们可以使用exclusion来进行排除。
    这里写图片描述

    六、总结

    在使用Maven 时,可能我们只是简单知道Maven 的用法,从而忽略了其中的一些细节。希望这篇博文能够为初步了解Maven 或只会简单使用Maven 的人提供帮助。

    展开全文
  • 函数依赖

    千次阅读 2019-06-07 15:17:57
    函数依赖是指关系中属性间(或者说是表中字段间)的对应关系。 定义:设 R 为任一给定关系,如果对于 R 中属性 X 的每一个值,R 中的属性 Y 只有唯一值与之对应,则称 X 函数决定 Y 或称 Y 函数依赖于 X ,记作 X—&...

    函数依赖是指关系中属性间(或者说是表中字段间)的对应关系。
    定义:设 R 为任一给定关系,如果对于 R 中属性 X 的每一个值,R 中的属性 Y 只有唯一值与之对应,则称 X 函数决定 Y 或称 Y 函数依赖于 X ,记作 X—>Y。其中,X 称为决定因素。
    通俗一点,就是给定一个 X 都有唯一的 Y。可以理解为函数 y = f(x); 对于任意的 x 都有唯一的 y ,且 y 的取值由 x 决定。
    例如:学生号—>学生姓名,学生年龄等等有关该学生的所有信息
    反之,像学生姓名不能决定唯一的学生,因为存在同名的可能,这种情况就不能称作函数依赖。
    根据函数依赖性质可分为以下三种:

    • 完全函数依赖
      • 书上定义的意思基本是:如果存在 X 属性集(注意是集合,说明是联合主键)决定 唯一的 Y ,且 X 中的任一子集都不能决定 唯一的 Y,则 Y 完全依赖于 X。
      • 例如:学生数学成绩完全由该学生的学号和数学课决定,所以数学课成绩完全依赖于(学号,数学课)
    • 部分函数依赖
      • 定义和完全函数依赖有一点不一样,就是 X 的属性集中任一子集可以决定唯一的 Y
      • 例如:学生学号和姓名可以决定唯一的学生,但是学生号也可以决定唯一的学生
    • 传递函数依赖
      • 定义:设 R 为任一给定关系, X Y Z 为其不同的属性子集,若 X —> Y, Y 不决定 X 且 Y —>Z,则有 X —>Z,称为 Z 传递函数依赖于 X
      • 例如:书的出版编号是唯一,版权归出版社所有,所以只能由该出版社出版。所以存在函数依赖:书出版编号—>出版社名,出版社名—>出版社地址,但是出版社名不能决定唯一的出版书编号(除非出版社只出版过一本书,那我没话说?),则有出版社地址传递函数依赖于出版书编号

    理解好函数依赖,对于理解关系数据库的三范式起到关键作用。

    展开全文
  • Android 查看并解决重复依赖

    千次阅读 2019-07-31 18:12:32
    有时候引入了新的sdk后,build会出现如下问题: Caused by: com.android.dex.DexException: Multiple dex files define Lcom/google/gson/internal/bind/TypeAdapters; at ...

    有时候引入了新的sdk后,build会出现如下问题:

    Caused by: com.android.dex.DexException: Multiple dex files define Lcom/google/gson/internal/bind/TypeAdapters;
            at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)
            at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)
            at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)
            at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
            at com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
            at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)
            ... 1 more
    
    
    * Get more help at https://help.gradle.org
    
    BUILD FAILED in 10s
    81 actionable tasks: 8 executed, 73 up-to-date

    这里的意思就是说,重复的dex文件出现在了TypeAdapters这个类了。

    简单的说就是重复依赖或者依赖冲突或者Jar包冲突了。


    解决方案

    除了删除冲突包外,我们还可以用Gradle的 exclude group 将指定的包名排除到编译范围外,如下所示:

    implementation ('cn.bmob.android:bmob-sdk:3.5.5'){ // gson-2.6.2
            exclude group: 'com.squareup.okhttp3'
            exclude group: 'com.squareup.okio'
            exclude group: 'com.google.code.gson'
            //exclude(module: 'gson')     // 防止版本冲突
        }
    
    

    Android获取所有依赖库的几种方式

    方式一:通过dependencies命令

    ./gradlew :app:dependencies 

    该task会显示如下所示的输出:

    输出列表展示了所有configuration下的依赖树,依赖关系明显,层次清晰。如果觉得输出的结果太冗长(通常情况下包含几十个configuration),可以通过指定configuration来显示特定的依赖树:

    ./gradlew :app:dependencies --configuration releaseCompileClasspath

    该命令只会显示release模式下编译过程中的依赖树。

    方式二: 通过androidDependencies命令

    ./gradlew :app:androidDependencies 

    输出结果如下:

    如图所示,该task会平铺展示依赖树,并且只展示几个主要的variant,看起来较为清爽,但是缺点是不能像方式一那样指定configuration。

    方式三:自定义task获取

    project.afterEvaluate {
     project.android.applicationVariants.all { variant ->
      tasks.create(name: "showDependencies${variant.name.capitalize()}",
        description: "展示所有依赖") {
       doLast {
        Configuration configuration
        try {
         // 3.x
         configuration = project.configurations."${variant.name}CompileClasspath"
        } catch (Exception e) {
         // 2.x
         configuration = project.configurations."_${variant.name}Compile"
        }
        configuration.resolvedConfiguration.lenientConfiguration.allModuleDependencies.each {
         def identifier = it.module.id
         println("${identifier.group}:${identifier.name}:${identifier.version}")
        }
       }
      }
     }
    }

    如上,通过这种自定义task的方式,可以选择打印依赖,也可以选择保存到文件中,灵活度最高。

    总结:

    方式一:通用task,按层次展示依赖树,可以通过指定configuration来过滤输出。
    方式二:android项目特有的task,平铺展示依赖树,不能过滤输出结果。
    方式三:自定义task获取依赖,灵活度最高,但是需要对gradle有较深的理解。

    解决重复依赖的方法

    1.Program type already present: android.support.design.widget.CoordinatorLayout$1

    需要将所有support包中的design模块移除

    implementation('com.android.support:appcompat-v7:27.1.0', {
        exclude group: 'com.android.support', module: 'design'
    })
    implementation('com.android.support:recyclerview-v7:27.1.0', {
        exclude group: 'com.android.support', module: 'design'
    })
    implementation('com.android.support:cardview-v7:27.1.0', {
        exclude group: 'com.android.support', module: 'design'
    })
    implementation('com.android.support:customtabs:27.1.0', {
        exclude group: 'com.android.support', module: 'design'
    })

    统一design包的版本,与以上support包版本一致

    implementation 'com.android.support:design:27.1.0'

    接着Sync → Clean → Build apk 即可。

    解决依赖主要有两种方式

    exclude方式

    特点:

    1. 配置较为麻烦,需要在引起冲突的每个依赖上进行exclude操作
    2. 配置繁琐,不美观

    下面的方式也是可以的。

     implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.0.2'
     implementation('org.eclipse.paho:org.eclipse.paho.android.service:1.0.2') {
             exclude(group: 'com.google.android', module: 'support-v4')
        }
    
    /* 或者粗暴点,就没有上面的坑了
    implementation('org.eclipse.paho:org.eclipse.paho.android.service:1.0.2') {
            exclude module: 'support-v4'
        }
    */

     

    通过configurations方式

    特点:

    1. 在configurations中,统一指定要配置的方式
    2. 配置简单,较为整洁

    找到依赖的问题根源后进行排除,按提示报错的来灵活处理冲突问题!下面的方式也是可以的。

    configurations {
       all*.exclude group: 'com.google.android', module: 'support-v4'
       //或者粗暴点,就没有上面的坑了  all*.exclude module: 'support-v4'
    }
    

    通过configurations.all同一版本

    configurations.all {
            resolutionStrategy {
                force "com.android.support:support-v4:$android_support_version"
                force "com.android.support:appcompat-v7:$android_support_version"
                force "com.android.support:constraint-layout:$android_support_version"
                force "com.android.support:support-core-utils:$android_support_version"
                force "com.android.support:exifinterface:$android_support_version"
                force "com.google.code.gson:gson:2.7"
            }
        }

     

    展开全文
  • 1、在vs的菜单-工具-命令行; 2、cd到dll所在目录; 3、输入命令:dumpbin /dependents myDll.dll;
  • 各种依赖各种有

    2020-06-30 18:52:19
    URI 获取图库:(读sd卡的权限) (1)uri:MediaStore.Images.Media.EXTERNAL_CONTENT_URI (2)字段: MediaStore.Images.Media.TITLE; 图片名称 MediaStore.Images.Media.SIZE;...MediaStore.Images.Media.DATA;...
  • 解决Maven依赖下载不全的问题

    千次阅读 2019-05-15 15:42:00
    背景描述 在日常学习过程中使用Maven构建SpringBoot+SpringCloud服务时,有时会使用非正式版的SpringBoot和SpringCloud(非正式版是指不是最终发布的版本,而是测试版或里程碑版本,例如:2.0.0.BUILD-SNAPSHOT、...
  • 下载依赖

    2020-03-03 22:48:35
    在下载项目的时候,npm install下载失败 1.删掉node_modules的包 2.删掉package.lock.json 3…清除cache npm cache clean --force 4.npm install 注意:不要用cnpm
  • golang 自动下载所有依赖

    千次阅读 2019-05-30 10:40:00
    如何自动下载所有依赖包? 大部分情况下大家下载 Go 项目都是使用go get命令,它除了会下载指定的项目代码,还会去下载这个项目所依赖的所有项目。 但是有的时候我们的项目由于各种原因并不是通过go get下载的,是...
  • 项目想下载一个依赖,在idea中死都下不了,查看网上各种解决方案都没有效果,出绝招,我使用命令下载导入到maven仓库 类似这种命令:mvn install:install-file -Dfile=d:\setup\dubbo-2.8.4.jar -DgroupId=...
  • 【UML】关联和依赖

    千次阅读 多人点赞 2018-09-27 09:03:17
    UML四大关系中,包括:泛化,实现,关联,依赖。 泛化就是我们在面向对象中提到的继承,而实现则更多的体现在类和接口之间的关系。 关联和依赖相对于上边两个关系,则表现的不是很容易理解,所以我们今天来深入...
  • 数据库,部分函数依赖,传递函数依赖,完全函数依赖,三种范式的区别
  • 一、对循环依赖的基本认识 (一)代码中形成循环依赖的过程及示例 (二)无环依赖的原则 二、识别和消除循环依赖的方法 (一)使用JDepend识别循环依赖 (二)消除循环依赖的三大方法思考 三、案件...
  • IDEA中Maven依赖包下载不了的问题解决方案汇总

    万次阅读 多人点赞 2018-04-25 14:11:16
    这个依赖包下载不了的问题真的是很烦,之前一直把下载不上的依赖剪切再粘贴到pom.xml文件中,保存它就自动下载了,但是今天怎么剪切粘贴都没用,所以就花了点时间在网上各种搜解决方案,试了一些之后终于从根本上解决了...
  • IDEA中Maven依赖下载失败解决方案

    万次阅读 多人点赞 2019-09-24 21:05:20
    使用IDEA进行Maven项目开发时,时不时会遇到pom.xml报错的情况,其中很大概率是因为Maven依赖的jar包下载失败,找来找去也没有找到是什么问题,困扰了很多程序猿,这里给出IDEA中Maven依赖下载失败解决方案,给大家...
  • 一、管理服务的依赖关系:构建无环依赖关系 1.上移切入点:交互部分抽离 2.下移切入点:依赖关系转移重构 3.回调切入点:接口或抽象类 二、管理服务数据 1.微服务中的数据管理策略 2.数据管理尝试策略:CQRS...
  • Maven-将jar包加入到本地仓库依赖

    万次阅读 2020-03-02 20:04:16
    命令: mvn install:install-file -Dfile=jar包的位置 -DgroupId=你的groupId -DartifactId=上面的artifactId -Dversion=此次version -Dpackaging=jar
  • Spring boot2基本依赖

    万次阅读 2019-01-24 18:25:48
    springboot基本依赖 <dependencies> <!--=================================================默认基础==============================================--> <dependency> &l...
  • IDEA_maven依赖错误 包下面红色波浪线

    万次阅读 多人点赞 2017-11-08 17:23:38
    我在给别的开发同事搭建开发环境的时候 经常遇到项目中报红色波浪线的问题。 类似下面的图片 具体原因不详 : 怀疑是包下载不全 下面给出两种解决方案 方案一 修改pom 配置文件,讲标红...从删
  • IntelliJ IDEA使用教程 (总目录篇) Maven 组件界面介绍   ...一般单我们在 pom.xml 添加了依赖包或是插件的时候,发现标注 4 的依赖区中没有看到最新写的依赖的话,可以尝试点击此按...

空空如也

1 2 3 4 5 ... 20
收藏数 2,823,655
精华内容 1,129,462
关键字:

依赖