深圳网站建设服务公司网页设计架构

pingmian/2026/1/24 18:10:10/文章来源:
深圳网站建设服务公司,网页设计架构,大连在建项目,证券公司客户经理怎么拉客户2019独角兽企业重金招聘Python工程师标准 看着简单而又复杂的pom.xml文件#xff0c;看似熟悉#xff0c;当自己编写的时候觉得简单#xff0c;但是看人家项目的时候又觉得复杂的很#xff0c;现在我们一起来分析这个pom文件。 Maven的坐标为各种构件引入了秩… 2019独角兽企业重金招聘Python工程师标准 看着简单而又复杂的pom.xml文件看似熟悉当自己编写的时候觉得简单但是看人家项目的时候又觉得复杂的很现在我们一起来分析这个pom文件。 Maven的坐标为各种构件引入了秩序任何一个构件都必须明确的定义自己的坐标maven的坐标包括如下的元素 groupId: 定义当前Maven项目隶属的实际项目 artifactId: 该元素定义实际项目中的一个Maven项目或模块 version: 该元素定义Maven项目当前所处的版本 packaging: 该元素定义Maven项目的打包方式 classifier: 该元素用来帮助定义构建输出的一些附属构件 注groupId、artifactId、version、packaging是必须定义的classifier是不能被直接定义的因为附属构件不是项目直接默认生成的而是由附加的插件帮助生成的。 元素详解 根元素project下的dependencies元素详解 dependencies可以包含一个或者多个dependency元素以声明一个或多个项目依赖, 其包含的元素 groupId、artifactId、version依赖的基本坐标对于任何一个依赖来说基本的坐标是最重要的Maven是根据坐标来找到需要的依赖 type: 依赖的类型 scope: 依赖的范围 optional: 标记依赖是否可选(参见可选性依赖) exclusions: 用来排除传递性依赖(参见依赖的传递性) 依赖范围详解 Maven在编译项目主代码的时候需要使用一套classpath Maven在编译和执行测试的时候会使用另外一套classpath Maven在实际运行项目的时候又会使用一套classpath 依赖范围就是用来控制依赖与这三种classpath(编译classpath、测试classpath、运行classpath)的关系 Maven的6种依赖范围 compile: 编译依赖范围(默认)对于编译、测试、运行三种classpath都有效 test: 测试依赖范围 只对测试classpath有效。典型范例Junit provided: 已提供依赖范围 对于编译和测试classpath有效但在运行时无效。典型范例servlet-api runtime: 运行时依赖范围 对于测试和运行classpath有效但在对编译主代码时无效。典型范例JDBC system: 系统依赖范围 import: (maven2.0.9及以上): 导入依赖范围它不会对三种实际的classpath产生影响 依赖范围(Scope)对于编译classpath有效对于测试classpath有效对于运行时classpath有效例子compileYYYspring-coretestYjunitprovidedYYservlet-apiruntimeYYJDBC驱动实现systemYY本地的Maven仓库之外的类库文件 了解了依赖的基本元素和依赖范围之后我们会发现在我们项目中经常会出现一些默认的配置问题导致编译和运行失败的情况现在让我们来学习如何解决这些问题首先要了解一下依赖的传递性 传递性依赖和依赖范围 简单的说一般项目中出现问题多数是因为重复的引用或者引用了较低版本的依赖或者是他们的依赖范围发生了变化。 举个例子来理解传递性依赖 我们创建了一个Maven Project-----learnDependency然后我们引入了spring-core这个依赖然后我们打开spring-core的 pom.xml发现spring-core也有自己的依赖commons-logging而且该依赖没有声明依赖范围那么默认的就是 compile所以这时我们就可以说commons-logging也是learnDependency的一个依赖这时我们就将这种依赖称之为传递 性依赖commons-logging是learnDependency的一个传递性依赖。有了传递性依赖我们就可以在使用的时候不去考虑我们引入的 依赖到底是否需要其它依赖和是否引入多余的依赖Maven 会解析各个直接依赖的pom将必要的间接依赖引入到项目中。 细说传递性依赖 假设A依赖于BB依赖于C那么我们就说A对于B是第一直接依赖B对于C是第二直接依赖A对于C是传递性依赖。 因为依赖是有依赖范围的那么对于这种传递性依赖Maven又是如何界定其依赖范围的呢 当第二直接依赖的范围是compile的时候传递性依赖的范围与第一直接依赖的范围一致 当第二直接依赖的范围是test的时候依赖不会得以传递 当第二直接依赖的范围是provided的时候只传递第一依赖范围也为provided的依赖且传递性依赖的范围同样是provided 当第二直接依赖的范围是runtime的时候传递性依赖的范围与第一直接依赖的范围一致但compile除外此时传递性依赖范围为runtime  compiletestprovidedruntimecompilecompileruntimetesttesttestprovidedprovidedprovidedprovidedruntimeruntimeruntime 左侧第一列表示第一直接依赖范围最上面一行表示第二直接依赖 optional: 有时候我们不想让依赖传递那么可配置该依赖为可选依赖将元素optional设置为true即可。 在我们了解了Maven强大的依赖机制之后我们开始解决问题 常见问题一依赖的重复引入 之前说过Maven可以有效的解决依赖的重复引入问题但是为什么我们在项目还会出现这类问题呢先让我们来看一下Maven是如何处理重复引入问题的 情景一我们在项目中分别引入了2个依赖A和BA又依赖的CC又依赖了DB也依赖了D但是这个时候C依赖的D和B依赖的D的版本是不同的 项目----A---C----D 项目----B---D 也就是说当前项目引入了2次D依赖那么这时Maven将采用第一原则路径最近原则 情景二我们在项目中分别引入了2个依赖A和B而A和B又都引入了C但是此时A依赖的C和B依赖的C版本是不一致的那么这个时候Maven如何处理呢 这时第一原则已经不起作用了 在Maven2.0.8及之前的版本中  和 Maven2.0.9之后的版本Maven对于这种情况的处理方式是不一致的 确切的说 在Maven2.0.8及之前的版本中Maven究竟会解析哪个版本的依赖这是不确定的 在Maven2.0.9之后的版本中制定了第二原则第一声明者优先 就是说它取决于在POM中依赖声明的顺序 这个问题就说明了为什么我们常常遇到的可以正常运行的项目然后我们增加了一个看似无关的依赖然后项目就出现了错误就是这个传递性依赖搞的鬼 还要补充说明的一种情况是可选依赖 为什么会有可选依赖呢是因为某一个项目实现了多个特性但是我们在面向对象的设计中有一个原则叫单一职责性原则就是强调在一个类只有一项职责而不是糅合了太多的功能所以一般这种可选依赖很少会出现。 常见问题二默认引入的依赖----第二直接依赖的版本过低或者依赖了不稳定的快照 这个问题我们在开发中也经常遇到在某个第二直接依赖中引入了1.0版本但是我们现在想使用2.0版本这时我们要如何解决 引入一个名词排除依赖也可以叫替换依赖 想实现依赖排除然后替换成自己想要的依赖这时我们要用到的一个配置是exclusions 和exclusion我们可以使用这一元素声明排除依赖然后显示的声明我们想要的依赖在exclusions中可 以声明一个或多个exclusion来排除一个或多个传递性依赖。 注声明exclusion的时候只需要声明groupId和artifactId就能唯一定位依赖图中的某个依赖。 A -------  B ------×----C(version1.0) |  | C(version2.0) 常见问题三解决重复的配置 我们在开发中也经常遇到这样的情况比如在使用spring framework的时候他们都是来自于同一个项目的不同模块因此这些依赖的版本都是相同的而且在将来升级的时候这些版本也会一起被升级这时 Maven又提供了一种解决方案------使用properties元素定义Maven属性然后引用。 示例 properties  springframework.version2.5.6/springframework.version   /properties 这个时候我们就可以在声明依赖的时候使用${springframework.version}来替换具体的版本号 dependency  groupIdorg.springframework/groupId  artifactIdspring-context-support/artifactId  version${springframework.version}/version   /dependency 如何正确的优化依赖 首先我们必须要对maven的依赖处理方式了然于胸然后我们就可以去除多余的依赖显示的声明必要的依赖保证每个构件都只有唯一的版本在依赖中存在 使用命令来查看当前项目的已解析依赖 mvn dependency : list 经过Maven解析之后就会构成一个依赖树 也可以使用命令查看当前项目的依赖树 mvn dependency : tree 使用命令分析当前当前项目的依赖 mvn dependency : analyze 该命令执行结果的两个重要部分 Used undeclared dependencies: 表示项目中使用到的但是没有显示声明的依赖 Unused declared dependencies: 表示项目中未使用的但显示声明的依赖 注dependency : analyze只会分析编译主代码和测试代码需要用到的依赖一些执行测试和运行时需要的依赖它无法发现。 对于项目中的最佳实践需要自己多多的尝试或者看别人的一些分享这样对于开发效率会有很大的帮助当然在项目开发的过程中不断的优化和调整这种方法也未尝不可。 转载于:https://my.oschina.net/u/2418042/blog/491698

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/86127.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站都是用什么编写的湖南湘潭网站建设

1.数据切分概念 数据的切分[(Sharding)]根据其切分规则的类型,可以分为两种切分模式。一种是按照不同的表(或者Schema)来切分到不同的数据库(主机))之上,这种切可以称之为数据的垂直…

河北秦皇岛建设局网站网站建设可行性分析包括什么

博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家 👉点击跳转到教程 Android OkHttp源码阅读详解一 看OkHttp源码,发现OkHttp里面使用了责任链设计模式,所以才要学习…

设计相关的网站招贴广告设计图片

在 Ubuntu 22.04 LTS 中,默认情况下不会自动启动 SSH 服务。如果你想通过 SSH 访问你的 Ubuntu 系统,你需要手动安装 SSH 服务器,并确保 22 端口(SSH 的默认端口)是开放的。以下是必要的步骤: 安装 SSH 服…

嘉兴网站建设品牌升级影响网站速度的因素

“一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。 ——有感于实际编程和开源项目研究。 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时&#xff…

做网络课程的网站罗村网站建设

IP-tools 网管员的第三只眼^ Ip-tools是一款功能齐全的网管软件,可以随时随地的向网管员报告网络的运行情况ip-tools自身集成多种tcp/ip使用工具,如本地信息、链接信息、端口扫描、ping、WHOIS、finger、nslookup、telnet、NetBIOS等功能。界面是全英的&…

遵义市住房城乡建设局网站网站分析seo情况

文章目录1. 题目2. 解题1. 题目 给你字符串 key 和 message ,分别表示一个加密密钥和一段加密消息。 解密 message 的步骤如下: 使用 key 中 26 个英文小写字母第一次出现的顺序作为替换表中的字母 顺序 。将替换表与普通英文字母表对齐,形…

网站建设副业手机网站关于我们

题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 数学家高斯很小的时候就天分过人。一次老师指定的算数题目是:12...100。 高斯立即做出答案:5050! 这次你的任务是类似的。但并非是把一个个…

长沙网站收录佛山网站设计哪家便宜

本文基于ZC706FMCOMMS5的平台,介绍了多片AD9361同步的方法。并将该设计移植到自行设计的ZYNQ70354片AD9361(实现8路同步收发)的电路板上。本设计采用纯逻辑的方式,仅使用了ZYNQ芯片的PL部分。 9361多芯片同步主要包括基带同步和射频同步两大块任务。其中…

网站制作应用知识北京计算机培训机构前十名

关注并标星星CSDN云计算每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 大家好!偶是要闻君。近日网传原百度智能硬件事业部总经理、渡鸦科技创始人吕骋已成立AI娱乐公司一家,并已获得来自YCombinator中国等投资;据早前…

博罗做网站哪家强做网站一般是什么工作

参考链接: Python元组Tuple 目录 一.元组tuple定义 二.元组tuple查询 三.元组tuple不支持删除/修改数据 四.元组tuple与列表list的相互转换 五.重点总结 在上一篇文章中我们讲解了关于python列表List的相关内容,今天给大家解释一下列表List的…

无烟锅网站规划与建设湘潭建网站

文章目录 前言对象配置链式调用队列调用并发执行未完待续 前言 以下都是我个人遇到的前端JS原生编码设计上的一些案例记录,希望能帮助新手开拓写代码的思想,并且能够结合自己的想法应用在实际的项目中,写出更加易读,拓展&#xf…

夏津网站建设费用全国加盟网站大全

HTTP首部 在HTTP协议通信交互中使用的首部字段。不限于RFC2616中定义的47种首部字段,还有Cookie、setCookie和Content-Disposition等 HTTP 首部字段将定义成缓存代理和非缓存代理的行为,分成 2 种类型。端到端首部和逐跳首部

中国网站设计公司桂林山水甲天下是哪个景点

Unix网络编程是针对类Unix操作系统(包括Linux、BSD以及其他遵循POSIX标准的操作系统)进行网络通信开发的技术领域。网络编程涉及创建和管理网络连接、交换数据以及处理不同层次网络协议栈上的各种网络事件。在Unix环境中,网络编程通常涉及到以…

网站开发毕设文献网站设计说明书摘要

目录 1. 问题引入 2.死锁问题的概念和原因 3. 解决死锁问题 1. 问题引入 在学习死锁之前, 我们先观察下面的代码能否输出正确的结果: 运行程序, 能正常输出结果: 这个代码只管上看起来, 好像是有锁冲突的, 此时的 locker 对象已经是加锁的状态, 在尝试对 locker 加锁, 不应该…

如何选择网站关键词响应式网站建设公司

一、分析介绍 MoviePy是一个用于视频编辑和处理的Python库。它提供了一种简单而直观的方式来创建、编辑和合成视频,同时也支持添加音频和图像。 以下是MoviePy的一些主要功能和用法示例: 创建视频剪辑: from moviepy.editor import VideoFi…

做电影网站需要外贸展示型网页设计

近期开发一个在线坐席的功能。发现推送的消息中空格变成了 。查询发现URLEncoder.encode的问题。曾经用的时候也没注意过,解决的方法网上是对URLEncoder.encode的之后的字符串进行替换号,这样的方式假设真的有号那也被替换了。所以应该在URLEncoder.enco…

优惠劵网站怎么做walker wordpress

前言 图像经过算子处理后得到若干特征点,使用opencv进行渲染显示出这些特征点并且连线,更直观的对比处理前后的一些差异性 demo核心代码 //画出特征点并连线 void drawFilterLinePoints(cv::Mat& srcMat, cv::Point2f pointStart, cv::Point2f po…

网页游戏中心大全下载优化大师app

我们了解RobotFramework编写自动化测试用例的方法,了解如何将用例在Jenkins上运行。 但是,随着用例的增多,传统的pybot/robot命令运行测试用例会耗费大量的时间,这就慢慢成为了一个苦恼的问题。 那么,在Jenkins上如何…