精华内容
下载资源
问答
  • 这样很容易导致 jar 包冲突,从而产生一些诡异问题,如版本问题导致的类、方法找不到等。下面我们将聊聊具体关于依赖冲突产生的原因、排查方式以及解决的方案。 一、Jar包产生冲突的原因 我们知道 maven 有传递性...

    本文目录

    一、Jar包产生冲突的原因

    二、排查Jar包冲突的方式

    2.1 Maven Helper 插件

    2.2 maven-enforcer-plugin插件

    2.3 maven命令行

    三、避免Jar包冲突

    四、总结


    在实际开发中,很多项目经常会使用 Maven 进行包管理。在 poml 文件中进行包依赖时,常存在引入一个 jar 包中默认依赖了其他的 jar 包的情况。这样很容易导致 jar 包冲突,从而产生一些诡异问题,如版本问题导致的类、方法找不到等。下面我们将聊聊具体关于依赖冲突产生的原因、排查方式以及解决的方案。

    一、Jar包产生冲突的原因

    我们知道 maven 有传递性依赖机制,举例来说,当我们需要依赖 A 的时候,就会在 pom.xml 中引入 A 的 jar 包;而 A 的 jar 包中依赖了 B 的 jar 包,这样 Maven 在解析 pom.xml 的时候,会依次将  A、B  的 jar包全部都引入进来。

    比如:

    A --> B --> C --> mapstruct 1.2.0(mapstruct 1.2.0)

    E --> F --> mapstruct 1.3.0(mapstruct 1.3.0)

    这样就会造成一个问题:

    假设 pom.xml 文件中引入 A 与 E 两个依赖,按照上述的传递性依赖机制,与默认的依赖调解机制(第一:路径最近者优先;第二:第一声明优先),默认引用的是 mapstruct 1.2.0 版本的jar包,mapstruct 1.3.0 的jar包不会被引用。

    如果 C 的 methodC 使用了新版本 mapstruct 1.3.0 才拥有的新类/新方法,程序中调用了 C 对应 mapstruct 1.3.0 的新类/新方法时,因为项目中引用的是 mapstruct 1.2.0,所以JVM去加载 Class 时就会发现 mapstruct 1.2.0 没有这个类,就会抛出 ClassNotFoundException;同样,调用mapstruct 1.2.0没有的新方法时会抛出 NoSuchMethodError。

    二、排查Jar包冲突的方式

    我们可以借助一些插件工具帮助找出冲突jar的具体位置。下面分享一下我在项目中排查并解决包冲突的两种方式。

    • Maven Helper 插件
    • maven-enforcer-plugin 插件
    • maven命令行

    2.1 Maven Helper 插件

    一般来说,使用IDEA插件是一个简便的排查方法

    下载 Maven Helper,如何下载,可以去查看我的另一篇文章:【IntelliJ IDEA插件】值得推荐的Idea几十大优秀插件、神级超级牛逼插件推荐(自用,真的超级牛逼)

    打开要查找冲突的 pom.xml

    点击 Dependency Analyzer 窗口一目了然

    2.2 maven-enforcer-plugin插件

     Maven提供了Maven-Enforcer-Plugin插件 , 用来校验约定遵守情况,比依赖 jar 包的版本等等。当规则检查不通过的时候则会构建失败。

    1、在pom.xml中引入该插件

    rules内则是定义校验规则,通过配置<dependencyConvergence/>可实现重复依赖检测。也支持自定义做一些其他检验如版本检验等。关于maven-enforcer-plugin插件rules的其他配置用法,感兴趣的朋友们,可以去查阅其相关的资料。

    <rules>
    	<requireMavenVersion>
    		<version>3.0.4</version>
    	</requireMavenVersion>
    	<!--要求JDK版本)-->
    	<requireJavaVersion>
    		<version>6.0</version>
    	</requireJavaVersion>
    	<bannedDependencies>
    		<!--是否检查传递性依赖(间接依赖)-->
    		<searchTransitive>true</searchTransitive>
    		<excludes>
    			<exclude>junit:junit</exclude>
    		</excludes>
    		<message>must use TestNG</message>
    	</bannedDependencies>
    </rules>

    2、配置好插件后进行项目构建,当存在包冲突时会在console中打印出来。

    3、依据信息便可将不需要的jar包通过<exclusion>排除掉。

    2.3 maven命令行

    通过Maven命名行的方式也是也不错的选择:

    1. 通过 mvn dependency:tree 可以在控制台上打印出依赖
    2. 通过 mvn dependency:tree -Dverbose -Dincludes=groupId:artifactId 只打印出你关心的Jar包的依赖关系
    3. 通过标签手动排除依赖

    例如:

    <!-- 内部引用 -->
    <dependency>
    	<groupId>com.iot.brain.platform</groupId>
    	<artifactId>back-brain-platform-business</artifactId>
    	<version>1.0-SNAPSHOT</version>
    	<exclusions>
    		<exclusion>
    			<groupId>org.mapstruct</groupId>
    			<artifactId>mapstruct</artifactId>
    		</exclusion>
    	</exclusions>
    </dependency>

    在引用guava时将com.google.errorprone这个包排除掉。

    当然也有一些其他方法,对我来说第一种已经满足日常使用了。

    三、避免Jar包冲突

    最重要的还是要主动避免jar包冲突的情况,在父pom文件中利用 ,对依赖Jar包进行统一版本管理,一劳永逸。通常的做法是,在parent模块的pom文件中尽可能地声明所有相关依赖Jar包的版本,并在子pom中简单引用该构件即可。

    例如在父pom文件中定义lombok的版本:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.10</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    然后在子moudle中:

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

    子moudle中自动会引用版本为1.18.10的lombok Jar包。

    四、总结

    关于依赖冲突解决方式有三种:最短路径原则、声明优先原则、依赖排除。在没有手动进行依赖排除的情况下,会依据最短路径原则、声明优先原则来选择jar包。关于依赖冲突排查可借助如maven-enforcer-plugin 与Maven Helper 插件。根据实际情况及环境,选择组合最优的解决方案解决依赖冲突问题。

    完结!

    展开全文
  • Gentoo 软件包冲突

    千次阅读 2021-11-28 17:46:34
    什么是软件包冲突?用一句话来概括就是两者无法共存。无法共存的原因是什么?两者在同一个依赖上有不同的要求。 举个例子。dev-libs/protobuf是media-libs/opencv的一个依赖。它同时也是media-video/vlc的一个依赖。...

    更多分享内容可访问我的个人博客

    https://www.niuiic.top/

    Gentoo 教程目录


    本文介绍 gentoo 系统下的软件包冲突及其解决思路。

    软件包冲突

    什么是软件包冲突?用一句话来概括就是两者无法共存。无法共存的原因是什么?两者在同一个依赖上有不同的要求。

    举个例子。dev-libs/protobufmedia-libs/opencv的一个依赖。它同时也是media-video/vlc的一个依赖。假设现在 vlc 想升级,需要3.19.1版本的 protobuf。但是当前版本的 opencv 要求 protobuf 的版本不得高于3.17.3。于是,由于 opencv 限制了 protobuf 的版本,导致 vlc 无法升级。 冲突就这样产生了。

    同理这样的冲突也可能是因为对依赖的 USE FLAGPYTHON_TARGET 等要求不同引起的。

    解决思路

    对于一般人来说,要去搞清楚 opencv 为什么要求 protobuf 版本不高于3.17.3,并且把它改了,是不太现实的。这基本上都会涉及源码。所以,解决问题的思路只有一个,使用 gentoo 包管理系统提供的操作让冲突双方对依赖的要求相同。

    还是上面的例子,当前版本的 opencv 要求 protobuf 版本低,无非是还没有适配高版本 protobuf 的部分特性。那么思路就来了。高版本的 opencv 对 protobuf 的版本要求肯定会提高。如果能找到一个版本的 opencv,其要求的 protobuf 版本包含3.19.1,问题就解决了。另外的像USE FLAGPYTHON_TARGET造成的问题也是一样的。

    我们在 gentoo 包管理系统提供的操作上能进行的只有修改软件的版本。所以不管是什么冲突,方法就一条。

    要修改版本,自然需要清楚各版本软件的信息。这一点通常可以通过eixequery来实现。

    比如equery -g media-libs/opencv查看各版本 opencv 的依赖,发现目前没有一个版本可以满足3.19.1的 protobuf。那么,一般人能做的就到此为止了,耐心等待上游更新软件版本即可。那假设有这么一个版本,又该怎么做呢?

    首先,把冲突的各方拎出来。现在有三个dev-libs/protobufmedia-libs/opencvmedia-video/vlc。思考谁会发生版本变化。现在是全都需要。直接emerge 三个包基本上可以解决问题,甚至不需要拆除旧版本。但 emerge 自动处理软件版本的能力是有限的。有时候,比如,从 python3.7 全面升级到 python3.8,过不了几天就可能有一大堆 python 依赖产生冲突,如果让人来看,很可能是先把什么拆了,然后装上什么,再拆掉什么,再装上什么……。但 emerge 分析不过来。这个时候就需要人来帮助分析,先手动拆除一部分,然后装一部分……。最极端的做法就是所有涉及冲突的全部 unmerge 掉。然后全部 emerge。这种做法一般是最省事的,也是风险最高的,弄不好系统就永远破了个大洞。因为你可以强制拆,但是不能强制装。

    综上,对于一般人而言,解决软件包冲突的方案就是找出冲突成因,查看是否可以通过修改软件版本解决冲突,然后修改为合适的软件版本,重新编译安装。

    特殊情况下,可能找到替代软件。如openjdkopenjdk-bin,如果后者需要的依赖更少,正好把冲突解决了,那么就可以通过软件替代来解决软件冲突。

    展开全文
  • 我认为哈希表其实就是一个存放哈希值的一个数组,哈希值是通过哈希函数计算出来的,那么哈希冲突就是两个不同值的东西,通过哈希函数计算出来的哈希值相同,这样他们存在数组中的时候就会发生冲突,这就是哈希冲突。...

    首先,要明白哈希冲突,我们需要明白什么是哈希表。

    一、哈希表

    概念:

    哈希表(又叫散列表)是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表

    二、哈希冲突

    我认为哈希表其实就是一个存放哈希值的一个数组,哈希值是通过哈希函数计算出来的,那么哈希冲突就是两个不同值的东西,通过哈希函数计算出来的哈希值相同,这样他们存在数组中的时候就会发生冲突,这就是哈希冲突。就像是高铁座位,一般是一人一座的,但是突然系统可能出了问题,两个人可能买到了同一个座位的票,那么这时候就发生了冲突。

    三、怎样解决哈希冲突

    一般解决哈希冲突有以下四个方法:

    1.开放地址法

    这种方法也称再散列法,其基本思想是:当关键字key的哈希地址p=H(key)出现冲突时,以p为基础,产生另一个哈希地址p1,如果p1仍然冲突,再以p为基础,产生另一个哈希地址p2,…,直到找出一个不冲突的哈希地址pi ,将相应元素存入其中。

    就是说当发生冲突时,就去寻找下一个空的地址把数据存入其中,只要哈希表足够大,就总能找到这样一个空的地址。

    2.拉链法

    将所有关键字为同义字的记录存储在一个单链表中 

    3.再哈希法

    在发生冲突的时候再用另外一个哈希函数算出哈希值,直到算出的哈希值不同为止。

    4.建立公共溢出区

    在创建哈希表的同时,再额外创建一个公共溢出区,专门用来存放发生哈希冲突的元素。查找时,先从哈希表查,查不到再去公共溢出区查。

    展开全文
  • 2、发生冲突最要不要采取的四种行动 3、建设性处理冲突的技巧 1. 摘要 每段人际关系中都难免存在冲突。处理冲突的方式对于关系的品质来说至关重要。当我们建设性地管理冲突时,冲突可以带来更强和更令人满意的互动,...

    本文是《沟通的艺术:看入人里,看出人外》第 15 版第十二章的读书笔记,用思维导图的方式进行了总结归纳。

    阅读本文可以了解:

    1、冲突的本质以及冲突的常见处理方式

    2、发生冲突最要不要采取的四种行动

    3、建设性处理冲突的技巧

    1. 摘要

    每段人际关系中都难免存在冲突。处理冲突的方式对于关系的品质来说至关重要。当我们建设性地管理冲突时,冲突可以带来更强和更令人满意的互动,但如果我们没有很好地处理它的话,关系也会因此恶化。本章所学的技巧可以帮助善意的人们更有建设性地处理他们之间的冲突。

    2. 冲突的本质

    2.1 冲突的定义

    至少两个相互依赖的个体在实现他们目标的过程中,察觉到彼此目标的互不相容、资源的不足和来自另一方的阻挠,并通过斗争的形式表达出来。

    表达出来的斗争:只有当两个个体都知道问题的所在且察觉到意见不合时才会产生冲突。比如你被邻居的噪声所烦恼,在你邻居不知道这个问题前冲突是不会产生的。

    感觉到互不相容的目标:所有的冲突看起来似乎都是其中一个个体有所得,另一个个体就会有所失。

    感觉到不足的资源:冲突也因为人们认为没有足够的资源而存在,比如金钱的不足导致员工和老板的冲突,时间的不足导致学习、工作、生活难以平衡。

    互相依赖:一个人的福祉和满足依赖于另一个人的行动。如果冲突双方不需要彼此来解决问题,他们就会各走各路,也就不会产生冲突了。

    另一方的阻挠:不论两个人的立场有多么不同,冲突也不会随随便便就发生,除非他们阻挠了彼此实现其目标。例如,朋友知道你反对他们酒后驾车,但是只有你真的阻止他们酒后驾车时冲突才会产生。

    2.2 冲突是自然的

    任何一段略有深度的关系都包含冲突,冲突也是有意义的关系中的组成部分。

    2.3 冲突可以是有益的

    因为避免冲突是不可能的,所以我们要做的,就是在其产生时,妥善处理他们。当我们建设性地管理冲突时,冲突可以带来更强和更令人满意的互动,但如果我们没有很好地处理它的话,关系也会因此恶化。

    3. 冲突的处理方式

    沟通者可以用来应对冲突的反应方式很多:包括逃避、调适、竞争、妥协、合作等,每一种类型都可能合理地被用在不同的情境中。

    3.1 逃避(双输)

    逃避发生在冲突双方或者一方不做主张地忽视或避免冲突之时。当事人持有没有好办法可以解决这个问题的悲观态度。有些逃避者认为把事情搁置会比直接面对并解决它更容易些,也有些逃避者觉得相较于一直面对无解的困境,放弃比较好。逃避最容易导致令人不满意的关系,长期的误解、怨恨和失望会堆积起来,破坏感情氛围。

    3.2 调试(一输一赢)

    调试发生在当你较少关切自己却对别人比较关切,允许别人按照他们的意思行事,而非坚持自己的意见之时。高语境文化倾向于认为逃避和调适是保留面子和处理冲突的高尚方法;而低语境文化则视逃避和调适为负面反应。

    3.3 竞争(一赢一输,有时会转成双输)

    这种对冲突的输赢取向较多地在乎自己而较少关切别人。通常的情况就是:不是你拿到你想要的,就是我拿到我想要的。比如多个候选人竞争同一个岗位。这种方式区别特征是权力,比如地位、财富、身体威胁等。竞争的黑暗面通常会滋生攻击。

    直接攻击:通过特征攻击、能力攻击、外貌攻击、诅咒、嘲弄、讥笑、威胁、咒骂和非语言的表征来直接攻击对方。受害者可能感觉无能、丢脸、绝望或抑郁,甚至在心理层面造成极大影响。

    被动攻击:不直接发起攻击,但是故意发起一些不友好的行为惹对方生气。有各种类型,比如总是隐约提及他们所烦恼的事情的危机挑逗者、总是把怨愤装入心理麻布袋的算总账者还有攻击对方脆弱伤口的罩门攻击者。

    3.4 妥协(部分双输)

    当事情看起来最多只能做到部分满足、而且似乎最好也不过是部分满足两人时,人们通常会选择妥协。虽然双方都牺牲了一部分目标,但是至少双方得到了部分他们想要的东西。比如找一个折中的解决方案。

    3.5 合作(双赢)

    在冲突中寻找双赢的解决之道。合作表示同时高度关心自己和别人,重视的是"我们的方法",而不是某一方的方法,最佳的合作状况会带来双赢的结果,大家都从中得到想要的。意味着他们不仅要避免以对方利益为代价取得胜利,而且相信经由共同的努力,他们能够找出一条超越妥协,使每一个人都达到自己目标的解决方案。

    3.6 哪一种方式最好

    当你决定要使用哪一种适合的沟通方案时,要考虑关系类型、情境、对象以及你的目标来做决定。比如有些关系中双方权力相差悬殊,这时可以考虑使用调适来处理;有些情境比如讲价可以用妥协折中方案来处理;也有时候因为原则性问题,这种情境下就可能采用竞争来解决;有的时候对方不愿意合作,就不能使用双赢的解决方式;如果你的目标是暂时让对方冷静下来你可能就会选择调适的方案。

    4. 关系系统中的冲突

    处理冲突的方式往往不取决于某个单独的个体,因为双方在发展出他们关系中特有的冲突形态时会互相影响,这种形态可能是互补的、对称的或平行的;它可能包含建设性的或者破坏性的惯例。在冲突的过程中,"末日四骑士"即批评、防卫、蔑视和回避这四种沟通方法会产生负面效果。

    4.1 互补、对称和平行的形态

    人际关系中的伙伴可以使用三种方式之一来管理冲突。在一段有着"互补的冲突形态"的关系中,伙伴之间表现出不同且互相增强的行为。比如攻击-逃避或者抗议-屈服。在"对称的冲突形态"中,伙伴都使用相同的行为,比如攻击-攻击、倾听-倾听、逃避-逃避等。在"平行的冲突形态中",双方伴随着话题的转变在互补和对称两种模式之间转换。

    4.2 破坏性的冲突模式:四骑士

    有些冲突类型是破坏性的,他们几乎必然会对人际关系造成严重的损害。典型的就是被称为末日四骑士的"批评"、"防卫""蔑视"和"回避"。(发生冲突时尽量不要采用下面这些行为)

    批评:这里指的是针对一个人的人格攻击。使用描述性的"我"的语言表达出对对方行为的合理抱怨,相较于使用评价性的"你"的语言攻击批评对方的人格,两者之间有着显著的差异。

    防卫:某种程度的自我保护是可以理解的,但是如果一个人拒绝听取别人的意见,甚至不承认不同意的意见的存在就会出现问题。

    蔑视:一个蔑视的评论包含着轻视和贬低。可以是语言也可以是非语言行为。比如用冷嘲热讽式的刻薄讽刺("哦,你真的是聪明绝顶啊")或者翻个白眼等。

    回避:回避发生在关系中的一方撤出交流,关闭对话,拒绝绝以任何双方都满意的方式解决问题的可能。传达了一个不肯定的信息("你无关紧要")给对方。

    例子:"你又透支了我们的账户,你能干点好事吗?"(批评)

    "嘿,你还怪我,大部分的钱是你花的。"(防卫)

    "至少我的数学能力比某个一年级生更好吧,加油吧,爱因斯坦。"(蔑视)

    "随便你。"(边走边说离开房间)(回避)

    4.3 冲突惯例

    指的是双方使用某种方式解决冲突,下次冲突时继续使用这种方案,无休止的下去。形成一种冲突惯例。

    5. 冲突类型的变项

    除了被关系塑造,冲突方式也会受个人的性别和文化背景影响。

    性别:男性更可能是具有攻击性的、命令的和竞争的,较为关注权力,并且对谈话内容的兴趣高于关系议题。女性则更倾向于合作,在冲突时更关系如何维持关系。相较于男性,女性认为从冲突中撤退的行为更具攻击性。

    文化:文化对人们面对冲突的态度的影响的两个主要因素是:集体主义和个人主义与高语境文化和低语境文化。在个人主义文化里,目标、权利和个人需求被认为是重要的,人们同意为自己据理力争是属于每个人的合理权利。相反的,集体主义文化,认为群体比个人重要的多。美国这样的低语境文化里,直接和无修饰的言行是被欣赏的。相反,在中日这样的高语境文化里,人们更强调自我约束和避免当面对抗。

    6. 建设性处理冲突的技巧

    6.1 大多数人不使用双赢模式解决冲突的原因

    1、缺乏这方面的意识。有些人太习惯于竞争,他们一直误认为要赢就必须打败的对手。

    2、冲突经常涉及情绪事件,人在情绪中经常像打仗一样剑拔弩张,而忘记了可以暂停下来思索其他更好的策略。

    3、竞争意识超过了合作意识。

    6.2 合作解决问题的步骤

    6.2.1 确认你的问题和未满足的需要

    在开口说话之前,重要的是你必须了解到问题所引起的冲突是属于你自己的。你才是那个不满意的人,你是哪个被邻居家的狗吵到无法睡眠的人,他们可能没觉得有什么问题;你是那个为了工作条件而心生不快的人,而不是你的上司。确实了解到这是"我的"问题,你将会以描述的方式来说明你的问题,而不是用情绪性或评价性的方式行动。这样不只能更精准地处理问题,而且可以减少对方采取防卫反应的可能。第二是弄清楚你没被满足的需求是什么,比如获得不被打断的睡眠或阅读。

    6.2.2 订立约会

    在你对问题有了清楚的想法之后,试着要求你的小伙伴一起解决它,例如"有些事情困扰着我,我们可以谈谈吗?",假如答案是"好",你就可以更进一步;假如当下不是切入问题的适当时机,就再找一个你们双方都合意的时间。注意,破坏性的争吵会开始,通常是因为其中一方没有准备好就被拖入了对抗之中,对方可能身体状况不佳,或者情绪不好等等。

    6.2.3 描述你的问题和需求

    如果你的小伙伴不知道你为什么沮丧,以及你需要什么,他就不可能满足你的需求。因此尽可能说清楚你的问题,传达完整而正确的信息是十分重要的。最好的方法是使用包含"行为""解释""感觉""结果""意图"五要素的清晰信息处方。在陈述你的问题和描述你的需求之后,要确定你的伙伴理解你的全部意思。不要因为误解而滋生本来不存在的矛盾。

    6.2.4 思考对方的观点

    表达清楚你的立场之后,接下来试图了解你的交流伙伴希望满足的需求有哪些。这点也非常重要,原因有二,一是这样做比较公平,对方有权利获得满意的结果;第二,发现对方的需求也符合你的个人利益,因为一个需求未被满足的小伙伴将会使你很难得到你想要的东西。

    6.2.5 商议解决之道

    找到满足彼此需求的解决方式

    1、确认和界定冲突:发现每个人的问题和需求,并准备好去满足这些需求。

    2、尽可能的提出可能的解决方案:在这个步骤中,双方共同思考,尽可能地激发出各式各样的想法是重要的,关键概念是数量,先不要去顾虑这些想法的是非好坏,写下每一个出现在脑袋里的灵感,不管它有多么不可行。有时不着边际的奇想会带来更可行的办法。

    3、评估各种解决方案:讨论每个一个方案的可行或者不可行。最重要的是,每个个体都必须诚实地表达出他们对所列出的各个解决方案的接受意愿。如果说选定了某个方案,那么每一个参与其中的人一定都支持这个方案。

    4、决定一个最好的解决方案:选择一个在每个人看来都是最好的、且都愿意共同努力实现它的方案。这个方案必须具有看上去有成功的潜力。

    6.2.6 追踪解决方案的后效

    在方案试行一段时间后,留出一些时间去讨论方案的实施进展,你会发现方案有需要改进的地方,甚至重新思考整个问题,把握问题的处理进度,继续利用创造力寻找解决之道。

    即使最终没有找到一个双赢的解决方案,最终的方案中包含了一些妥协的成分,但是因为双方都了解对方的需求且都曾尝试满足它,那么可以在沟通双方之间建立起善意的氛围,不但有助于问题的解决,也能使双方的关系变得更加融洽。

    6.3 建设性处理冲突的技巧的理性探讨

    6.3.1 双赢方法太好以至于不真实吗?

    完全真实,而且能产生相较于"一输一赢"更令人满意的结果。

    6.3.2 双赢方法太复杂吗?

    双赢方法注重细节和结构的完整。最好试着遵循每一个步骤,特别是遇到重要议题时,你会发现双赢方法的每一个步骤都非常重要。如果这个过程看起来非常耗时的话,可以试想一下如果不能及时解决这个议题,那又将耗费你多少的时间和精力。

    6.3.3 双赢磋商太理性吗?

    双赢的方法看似有点理性,看似只有圣人才能成功使用它,但是我们可以做的是当我们觉得自己十分不理性的时候,可以先短暂的从情境中撤离出来。

    6.3.4 有可能改变别人吗?

    让对方明白合作符合他的利益他自然就会同意合作了。比如说"看!假如我们无法把这件事搞定,我们俩都没好日子过,但如果我们能找到解决方案的话,想想我们会有多爽。"就算你的合作态度无法奏效,你至少也会得到自我尊重,因为你知道无论如何你的所作所为是正大光明且有建设性的。

    关注公众号TestDevelop,后台回复“沟通思维导图”领取《沟通的艺术》所有章节高清无水印思维导图

    源文:处理人际冲突

    欢迎关注公众号TestDevelop, 这里是一个互联网测试开发工程师的知识和经验分享小空间,分享各种测试开发技术知识、沟通技巧、职场感言。欢迎后续与我共同成长。

    展开全文
  • 这就出现了Hash冲突。 Hash冲突: 根据key(键)即经过一个函数f(key)得到的结果的作为地址去存放当前的key value键值对(这个是hashmap的存值方式),但是却发现算出来的地址上已经被占用了。这就是所谓的hash冲突...
  • 什么是雪花算法 Snowflake 中文的意思是雪花,所以常被称为雪花算法,是 Twitter 开源的分布式 ID 生成算法 Twitter 雪花算法生成后是一个 64bit 的 long 型的数值,组成部分引入了时间戳,基本保持了自增 .
  • 游戏服务器na是什么意思 内容精选换一换导读:以前学习mysql的时候,一直不知道“charset=utf8”是什么意思,更不知道“set names gbk”是什么意思,通过这篇文章将会给大家详细介绍客户端字符集、联接器connection...
  • 实验测试LAN环境下,部署了DHCP,Client均使用自动获取IP,却出现IP冲突,为什么,如何解决?总结 参考阅读 IP地址冲突的本质 LAN环境下,若两台PC的IP相同,会怎么样? 分析: 若两台PC的IP相同,那么在接入交换机...
  • IP地址冲突是网络管理的一个常见问题。尤其在企业局域网内部,由于管控策略的存在,总会有人试图通过修改IP地址来...维护网络稳定、高效运行,解决IP地址冲突问题,已成为网络管理中的重要任务之一,发生IP冲突的原因
  • 分布式系统中,有一些需要使用全局唯一 ID 的场景,这种时候为了...什么是雪花算法 Snowflake 中文的意思是雪花,所以常被称为雪花算法,是 Twitter 开源的分布式 ID 生成算法 Twitter 雪花算法生成后是一个 64bit
  • 这样如果多个应用程序自己直接去操纵硬件设备,就会出现相互冲突,有可能一个程序的数据被发送到了另一个程序等等 操作系统必须自己响应硬件中断,通过硬件中断来切换任务上下文,让合适的任务在合适的时机继续执行...
  • Jar包冲突详解(Java)

    2021-08-19 13:44:20
    Jar包冲突的本质是什么?Google了半天也没找到一个让人满意的完整定义。其实,我们可以从Jar包冲突产生的结果来总结,在这里给出如下定义: Java应用程序因某种因素,加载不到正确的类而导致其行
  • 1.调试 C 程序时常见的错误类型分析一般情况下,错误主要分为两大类:一、语法错误。对于这种错误,用编译器很容易解决。所以,改错题的第一步是先编译,解决这类语法错误。下面总结了二级C 语言上机改错题中常见的...
  • python字典中的键是什么

    千次阅读 2021-02-03 21:54:13
    字典的键字典中的值没有任何限制, 可以是任意Python对象,即从标准对象到用户自定义对象皆可... 当有键发生冲突(即字典键重复赋值),取最后(最近)的赋值。Python并不会因字典中的键存在冲突而产生一个错误,它不会...
  • BIOS是什么意思``

    千次阅读 2020-12-21 13:35:11
    最大传输速率PS/2 BIOS控制着什么 BIOS控制着什么 熟悉计算机的朋友都知道BIOS这个概念,我们也会经常听到老鸟在解决系统故障时候重复的那些话语:“先清除一下CMOS”或者“进入BIOS默认设置”等等。在普通人眼里,...
  • 409 Conflict(冲突) 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。 410 Gone(已删除) 如果请求的资源已永久删除,服务器就会返回此响应。 411 Length Required(需要有效长度) 服务器...
  • 散列查找中,什么冲突什么叫聚集(堆积)

    千次阅读 多人点赞 2020-12-18 21:51:22
    写在前边的话:你的支持是我写作的动力,有帮助到你的话麻烦点赞加收藏呦。感激不尽!如有错误也请留言指正。 考研数据结构练习,欢迎订阅我的专辑《考研数据结构题型分类讲解练习》 ... 非同义词之间发生冲突
  • LabVIEW解决项目冲突

    千次阅读 2020-12-22 03:32:41
    如LabVIEW项目中同一终端下有两个或两个以上项重名,就会发生可能的交叉链接,从而产生冲突。例如,当VI从另一个路径调用一个与项目中已有项同名的子VI时,将发生交叉链接的冲突。大多数冲突都存在,因为项目中的项...
  • git 解冲突需要注意的问题弄清除冲突双向的修改意图,并在解决冲突时,同时处理两边的意图。举例说明A.txt 文件,在 master 分支上,有一行文字(代码)是这样:这是一段在 master 分支上的文字。Alice 在 dev 分支上...
  • Git代码冲突

    2021-02-01 23:31:13
    冲突的文件,什么情况会发生冲突,冲突的解决方法等等 测试用例 1、新建一个码云仓库(因为码云比GitHub快,所以用码云做测试),并准备a.txt文件做用例 2、使用两个两个账户(A和B)对a.txt进行拉取,并同时修改 3...
  • 按照五级流水线,按序发射的意思是在开始和结束都有限制。 一个指令开始之前,下一个指令不能开始, 一个指令结束之前,下一个指令不能结束。 对于一个指令而言,第二个阶段 ID是译码和取寄存器,最后一个阶段WB是...
  • MySQL 复制 主键冲突

    2021-01-19 02:51:18
    看了下复制的问题,最明显的一个案例就是主键冲突,今天就看下这个问题什么原因会导致这个问题怎么规避这个问题一、什么原因导致网上最多的说就是:对于存在auto_increment字段或者unique索引字段,使用replace into...
  • MySQL数据的高级操作 之 主键冲突数据的高级操作数据的操作,无外乎 增删改查。新增数据的基本语法为:insert into + 表名 + [(字段列表)] + values (值列表);在数据插入的时候,假设主键对应的值已经存在,则插入...
  • 调试时遇到的问题; 原代码 #include<iostream> #include<string> #include<time.h> using namespace std; class car { string chepaihao; double arrive_time;... static int weiz
  • git 代码冲突处理

    2021-01-13 03:06:32
    在使用gitpull代码时,经常会碰到有冲突的情况,提示如下信息:error: Your local changes to 'c/environ.c' would be overwritten by merge. Aborting.Please, commit your changes or stash them before you can ...
  • 我的程序是这样一个逻辑。 首先创建用户列表,点击列表项弹出菜单,点击菜单上“设备选项”,弹出设备列表,上面显示这个用户拥有的设备...接下来问题出现了,上面操作重复两遍,会在第二次关闭设备列表的时候 发生...
  • mysql死锁是什么意思

    2021-01-19 21:38:32
    什么是死锁?它是如何产生的?死锁是指两个或多个事务在同一资源上相互占用,并请求锁定对方占用的资源,从而导致恶性循环。(推荐教程:mysql教程)当事务试图以不同的顺序锁定资源时,就可能产生死锁。...
  • 上面的意思就是你吧值付给了不该赋给的变量,或者说你把值付给了不能付给的变量(或者常量) (1)最简单也最直接的错误可能就是scanf()的问题,我们都知道输入的时候都是scanf("%格式",&变量),那么除了字符...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 85,058
精华内容 34,023
关键字:

发生冲突是什么意思