当前位置: 首页 > news >正文

化工营销型网站哈尔滨市延寿建设局网站

化工营销型网站,哈尔滨市延寿建设局网站,郑州专门做网站,针织厂家东莞网站建设作者 | cxuan 来源 | 程序员cxuan责编| 王晓曼前言我最近一直在写Spring的文章#xff0c;而且仅仅是 Spring FrameWork 的文章 ,从最开始的官网入门到现在源码的深度分析。主要就是三个系列#xff1a;官网入门系列#xff0c;Spring官网读书笔记#xff0c;这一系列的文章… 作者 | cxuan 来源 | 程序员cxuan责编| 王晓曼前言我最近一直在写Spring的文章而且仅仅是 Spring FrameWork 的文章 ,从最开始的官网入门到现在源码的深度分析。主要就是三个系列官网入门系列Spring官网读书笔记这一系列的文章是入门Spring的不二之选也是后续源码阅读的基础。杂谈系列Spring杂谈这主要是一些补充内容可以帮助大家更全面学习到Spring中的各个知识点同时也会分享一些源码阅读技巧个人学习心得之类的杂谈嘛就是不知道放哪里的文章都打算放这里比如这篇文章。源码分析系列Spring源码解析该专栏目前正在创作中相对而言学习难度比较大而且因为笔者写的比较细估计大部分同学看起来会很费劲不过如果你能认真看完收获绝对巨大本文的主要目的是教zhuang学bi。就是从笔者的实际经验出发谈一谈怎么成为一个开源项目的贡献者。经历我先说说我自己的经历吧在创作上篇文章的时候笔者发现 Spring 在实例化对象的时候有这么一段代码在org.springframework.beans.factory.support.ConstructorResolver#resolveConstructorArguments方法中// 本文不探讨技术细节只是为了简单说明这个问题所以省略无关代码  private int resolveConstructorArguments(String beanName, RootBeanDefinition mbd, BeanWrapper bw,ConstructorArgumentValues cargs, ConstructorArgumentValues resolvedValues) {// ....for (Map.EntryInteger, ConstructorArgumentValues.ValueHolder entry : cargs.getIndexedArgumentValues().entrySet()) {int index  entry.getKey();if (index  0) {throw new BeanCreationException(mbd.getResourceDescription(), beanName,Invalid constructor argument index:   index);}// 问题就出在这里if (index  minNrOfArgs) {minNrOfArgs  index  1;}// .....  上述代码中minNrOfArgs 这个变量就是保存方法需要的最小参数个数但是index是下标索引索引是从0开始的如果有下标为n的元素那么最小的参数个数应该是n1嘛所以if中的逻辑是没有问题的但是if这个判断是有问题的正确的做法应该是if (index1  minNrOfArgs) {minNrOfArgs  index  1; } 这个问题的时候第一反应就是肯定是我的姿势不对错的怎么可能是代码肯定是我调试接下来我就对这段代码进行了惨无人道的调试在无数次 debug 后我发现这个地方确实有问题在确认了这个问题之后我要思考的就是怎么把自己的想法反馈给 Spring 换而言之怎么为伟大的开源来做贡献呢正常来要达到这个目的有两个方式提交 issue直接在 GitHub 上提交 PRpull request。对应的就是在 GitHub 上点击下图红框选中的两个位置。如果是使用提交 issue 的方式相当于给官方团队提交了一个议题这个议题可能是你发现代码中的某个 bug也可能是你觉得官方的做法不够好你有更好的想法等等。感兴趣的话大家可以去看看 Spring 中现在有哪些还未关闭的 issue说不定其中一个你就能解决呢如果要采用提交 PR 的方式的话首先你得将代码 fork 到自己的 GitHub 中然后再从自己的 GitHub 检出到本地在本地做完修改后提交到 GitHub 仓库中最后从自己的 GitHub 向 Spring 官方仓库发起一个 PR。像我的话很早就已经将代码 fork 到了自己 GitHub。上图中的第一个红框说明我这个仓库是从 Spring 官方 fork 过来的第二个红框就是可以从这里向 Spring 官方提交一个 PR。关于详细的如何提交 PR大家可以自行百度这里不做详细的介绍了。另外说了这么多先给大家看下我提交的 issue 吧。issue链接https://github.com/spring-projects/spring-framework/issues/25130因为内容也不长所以我这里把原文就直接放到下面了In ConstructorResolver:private int resolveConstructorArguments(String beanName, RootBeanDefinition mbd, BeanWrapper bw,ConstructorArgumentValues cargs, ConstructorArgumentValues resolvedValues) {TypeConverter customConverter  this.beanFactory.getCustomTypeConverter();// ...for (Map.EntryInteger, ConstructorArgumentValues.ValueHolder entry : cargs.getIndexedArgumentValues().entrySet()) {int index  entry.getKey();if (index  0) {throw new BeanCreationException(mbd.getResourceDescription(), beanName,Invalid constructor argument index:   index);}if (index  minNrOfArgs) {minNrOfArgs  index  1;}// ....} // ....return minNrOfArgs; } I assume that method  resolveConstructorArguments is to resolve contructor arguments in the XML file and return the minimum number of parameters required by contructor. But if the first parameter is autowired , the second parameter  is config by XML filethe method will not work well.Example:public class FactoryObject {public DmzService getDmz(String name, int age, Date birthDay, OrderService orderService) {public DmzService getDmz(OrderService orderService,String name) {return new DmzService(orderService,name);}} ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsddefault-autowireconstructorbean idfactoryObject classcom.dmz.spring.first.instantiation.service.FactoryObject/bean classcom.dmz.spring.first.instantiation.service.OrderService idorderService/bean iddmzService factory-beanfactoryObject factory-methodgetDmzconstructor-arg index1  valuedmz//bean/beans The resolveConstructorArguments method will return 1,but correct answer is 2.I think the problem arises because of this judgment:if (index  minNrOfArgs) {minNrOfArgs  index  1; } It might be better to change it to look like this.if (index  1  minNrOfArgs) {minNrOfArgs  index  1; }s 思路我在提交 issue 时主要是按照这种思路:首先摆出有问题的代码描述具体的问题我是直接通过一个例子来描述的说出自己的建议。这几天我又多看了看别人提交的issue对比起来我觉得至少应该还要添加一点应该要明确的指出具体哪个版本上出现的问题。碰到的问题1、担心闹乌龙虽然在之前我已经调试过了无数次代码但是心里还是没谱啊。毕竟我这么谨cai慎ji的一个人万一被人喷了怎么办不知道你会不会这么想反正我当时就是这么想的如果你是这么想的建议你去看看别人提交的 issue。搜索条件如下is:closed label:status: invalid我觉得你看几个自然就有信心了2、不知道要怎么提交每个开源的项目只要作者希望这个项目越来越好的话都会详细的说明如何给这个项目做开源贡献Spring肯定也不例外这里还是以提交 issue 为例当你点击 New issue 的时候会出现下面这张图在上图左边的框里很明确的告诉了你提交issue应该要注意什么首先你应该要去 Stack Overflow 提问如果是 bug你应该要指明版本以及你想要做什么如果是一个增强的话要提供上下文并且描述清楚问题同一个问题issue 跟 PR 最好只提交一个因为 GitHub 认为它们是一样的如果你还不能确定的话先提交一个 issue。而右上角还有更加详细的文档可供参考。3、英文大家应该看到了整个 issue 都是用英文写的那么英文不好怎么办呢这个时候就要掏出我们的神器了嗯就是词典笔者习惯是使用有道词典。我建议英文不好的同学可以这样先将整个 issue 用中文写好如果你真的英文一窍不通的话可以直接通过翻译软件逐句翻译然后粘贴到 GitHub 上。但是千万千万不要使用中文就像下面这个哥们issue 链接https://github.com/spring-projects/spring-framework/pull/25127像这种 issue 是会被直接打上 invalid不合格标签的你就想想吧你学不会英文你指望我们的外国朋友能看懂中文嘛是我中华上下五千年的文化不够博大精深吗4、担心问题描述的不清楚其实这个问题就是因为英文不好衍生出来的。因为英文不好自然就会担心我写的东西他能不能看懂呢我的建议就是结合你测试的代码去描述问题。你不用去担心别人看不懂你写的代码就以我那个 issue 的处理流程为例吧。在你刚刚提交 issue 时有专门的 issuemaster issue管理员会给你提交的 issue  打上一个 wait-for-triage 的标签标志这个 issue 是待处理的。随后我提交的这个 issue就被指派给了 jhoeller 。你要担心他看不懂代码吗给你看两个东西吧。你知道那个红框是啥意思吗就是说我发现的那个有问题代码的类的作者就是他。再看一张就是说jhoeller 从 2003 年开始就已经是 Spring 这个项目的管理者以及发布经理了。2003 年我还是一个小学生........所以啊只要你稍微正常点基本上人家都能 get 到你的点。建议其实笔者从发现这个问题到最终提交 issue 大概经过了一周时间期间一直在犹豫要不要提交 issue就是因为上面提到的几个问题一直踌躇不前。但是等我下定决心要去做这件事的时候总共就花了几个小时的时间。包括研究issue 提交的规则以及写一篇英文版的 issue并且我提交 issue 的第二天就马上被处理了并且 jhoeller 在 f9aae8d 这个 commit 中已经接受我的建议。所以我要说的就是真正动手的话不管什么问题总能找到解决方案而只是停留在空想、在踌躇你永远有一堆问题。临渊羡鱼不如退而结网。以此文与君共勉推荐阅读云计算巨头们的背水一战整理了一份 Docker系统知识从安装到熟练操作看这篇就够了 | 原力计划借助大数据进行社交媒体营销企业们得这么玩追忆童年教你用Python画出儿时卡通人物AI 终极问题我们的大脑是一台超级计算机吗公链的历史交叉口PoS还能走多远真香朕在看了
http://www.zqtcl.cn/news/362796/

相关文章:

  • 电子网站建设心得企业查询app排行榜
  • 杭州做网站的科技公司永川做网站的公司
  • 动物自己做的网站网站优化外包公司
  • 企业网站建设的三种方式并举例手机wap网站是什么
  • 做深圳门户网站起什么名字好建设网站对公司起什么作用是什么
  • 长春企业网站设计建设公司资质查询官网
  • 医疗网站前置审批查询免费网站建设可信赖
  • 摄影师个人网站模板宝坻集团网站建设
  • 比较多人用什么网站做推广wordpress数据库表管理系统
  • 网页开发和游戏开发东莞优化怎么做seo
  • 北京网站搭建开发高级网页设计教程
  • 北京南站是中高风险地区吗网站建设上机实验心得
  • 大学生做兼职的网站有哪些免费行情软件网站有哪些
  • 静安手机网站建设常见的网络营销方法及其效果
  • 怎么改版网站湖南长沙地图
  • 中卫网站推广公司如何自创app软件
  • 无棣网站建设电子商务网站设计原理书籍
  • 做t-shirt素材网站企业网站建设结论
  • 唐山公司做网站查询建筑资质的网站
  • 邯郸的网站建设网站正能量入口
  • 网站导航栏最多可以做几个宝安网站设计排名
  • 自己怎样用手机建网站网件app
  • 周口网站开发西安市建设厅网站
  • 怎么授权小说做游戏网站论坛网站开发语言
  • 烟台商城网站建设怎么样引流顾客到店方法
  • 北京做网站公司的排名python基础教程pdf
  • 网站建设为什么学flash建设工程询价网站有哪些
  • 网站内容建设机制企业管理模式有哪些
  • 中山网站建设文化价格建网站域名注册
  • 手机电影网站怎么做大连最新发布