腾讯架构师谈技术管理:十年沉浮,最后我选择了离开……

2023-11-07

转自:http://www.techug.com/post/tencent-architect-talk-about-team-managment.html

作者介绍

韩伟,腾讯科技互娱研发部架构师。曾在网易任职8年,担任无线事业部产品总监。多年来一直从事技术开发,擅长开发高性能系统,对于软件架构设计也有丰富的经验。个人的技术兴趣在设计模式、软件体系架构等提高软件开发效率方面的知识。

从2001年在网易成为一名项目经理,到2011年进入腾讯,我经历了从“领导”几个人到几百个人的好几种管理岗位,名字有的叫“总监”,有的叫“经理”,还有什么O之类的。但在十年之后,现在的我没有一个下属,一般的人看来似乎有点不可理解。正常来说,中国人的传统是“学而优则仕”,管人的总比做事的看起来要“高级”一点。

那么,为什么我要“急流勇退”呢?其实并不是我觉得做一般的管理工作力不从心,也不是因为厌倦了管人,或者想要做闲云野鹤,而是我发现,如果要真正的管理好一个技术团队,还是要从技术方面下手。而这些真正能对技术团队管理有帮助的技术,不实际地去学习和实践,是非常难以掌握和熟练的。

我在管理技术团队碰到的三大挑战

1、人员流动

技术团队有多难管,从人员流动这个事上,最能直接体会到。记得我第一次参加网易的校园招聘,招聘了几十个应届毕业生,这些毕业生在一年之内,有70%都离职了:有的是去考研、有的去留学,还有继承家族生意和考公务员的。当然留下来的那批,也有一部分在两年之内跳槽了。

按理说,网易也算是不错的公司,尚且面临如此之高的离职率,其它的公司可能会更加严重。我在这个事情上,花了无数的精力希望打造一个“具备凝聚力”的团队,试图降低这种流动性。但无论如何努力,技术团队还是会“维持”着某个流动率,所以我意识到,如何降低人员流动对工作的冲击,才是一个必须要做的事情。

我们知道,软件开发的交接,不是一个简单的事情。因为软件开发的文档、代码、工作关系,甚至很多工作的经验,都是以一种智力形式存在的。这种智力产品,如何从一个人的大脑迁移到另外一个大脑,如果不借助任何工具,无异于师徒传授技艺,是一个效率很低,结果非常不确定的过程。所以我认为,技术知识在团队内的共享,必须要有一些强而有力的技术工具来保障,才能成功。

2、项目进度控制

技术团队的管理除了要应付人员流动的挑战外,如何衡量技术人员的工作量,从而预估工期和掌控开发进度,这也是一个巨大的挑战。这方面关于“项目管理”的知识也算汗牛充栋了。在实际的工作过程中,我们也尝试各种方法,但是不管使用什么“项目管理”的方法,总会发现,在项目经理的表格到产品里可运行的代码之间,总有一道深深的鸿沟。不管我们的开发进度预留多少buff,也不管我们的项目进度报告的周期,从月、周细化到日甚至小时,都无法真正准确的回答——现在项目开发到什么地步、将来的某个时间点,项目可能开发到什么程度。

所以我开始承认,掌控技术项目开发进度,在一些需求变更特别频繁的领域,特别是互联网、游戏这类没有明确客户代表的领域,是一个非常模糊而且复杂的工作。我们必须抛弃工业时代对于某个“项目”的管理思路,而采用更新的思路,以及更有效的技术工具,才能真正的对项目管理提供有效的推动。

3、软件质量提升

管理技术团队,就必须对技术团队的产出负责:软件的质量和开发效率。我们既需要稳定的软件质量,尽量少的BUG,尽量好的性能和扩展性,也需要能跟随市场快速变化的软件迭代速度。而我们的技术团队总会抱怨,需求变化太快,没有时间去重构系统,导致代码的质量下降,开发效率也受影响等等。如果我们仅仅是通过提高技术团队的个人技术能力,或者刺激开发者更多的“主观能动性”,结果还是会不尽人意的。因为个人的技术能力成长需要时间和实践经验,而且人员也很有可能会流动;如果主观能动性被刺激成无休止的加班,到头来最后还是会降低团队的工作效率,因为疲劳的开发者只会制造更多的BUG和怨言。因此我们不能单靠传统的工商管理的思路去解决技术团队的产品质量问题,而应该看到软件开发本身是一种具有鲜明特色的行业,要提高产品质量和生产效率,还需要使用更先进的软件生产工具和生产流程。

人员流动、项目进度控制、软件质量提升,是我在管理技术团队中,碰到的最多也是最大的三个挑战。在深刻的思考和做了大量的管理实践后,我深深地认识到,作为一个技术团队的管理者,最需要的往往不是所谓的“管理能力”,而是对软件开发这个行业,更专业的技术能力。这些技术能力,大体包含了所谓的“软件工程”知识,以及大量的软件开发工具以及最佳行业实践的经验。所以我认为,认真地去研究、实践、开发这些,能有效提高技术团队开发效率、准确掌控项目进度、降低人员流动性影响的技术,这些是具有非常重要的意义的。

技术管理者需要研究的三种“技术”

在这里我所说的这种“技术”,具体包含些什么呢?概括一下,无非有这几类:软件模式知识、开发工具和实践、需求领域知识:

1、软件模式知识

主要是来自软件工程类,包括如何写出可读性好的代码,面向对象或者结构化编程的知识,设计模式、架构模式等等。其中最基础也最重要的,就是“编写可读性好的代码”,与其说这是一种知识,还不如说是一种态度。无可否认大多数工科、理科出身的程序员,对于写文章的训练都比较少,所以也不难理解为何对此没有“感觉”。其实要编写可读性好的代码,最简单的方式就是重视“命名”。顾名思义是人类最简单的阅读体验,代码中的变量、函数、类的名字如果是“有意义”的,那就会大大提高代码的可读性。

但是,怎样才能定义一个有意义的名字,而不是仅仅根据技术功能实现的需求来设计名字呢?我知道我们都爱循环变量int i,但那是因为我们都熟悉它的这个含义。对于可能阅读代码的人来说,还有什么是确定大家都会比较熟悉的呢?肯定就是业务领域的内容,因为要接触这份代码,肯定就是那些要在这个业务领域工作的人,所以使用业务领域的内容词汇是最好的。但是,由于我们的代码往往会有很多层的抽象和封装,所以在某些层次也许无法找到业务领域词汇去对应,这确实需要一些想象力和抽象能力,但是不管这种想象的是否合理,一定会比不假思索的用Controllor或者Manager这样的名字来得“有意义”。

除了命名以外,代码可读性还有各种各样的需求,而业界也对这一类要求,总结出很好的规范,他们就是各种“代码风格规范”,最著名的有Google公司开放的规范,包含了多种编程语言的版本。更重要的是,我们还可以用类似cpplint这类的“代码静态检查工具”来自动的检查代码是否符合这样的规范。就连Google这样业界知名的公司,也会要求所有程序员写出来的代码,都要像是一个人写出来的那样(出自《Google软件测试之道》),我们还有什么理由去追求各种代码编写层面的奇技淫巧呢?

除了静态代码检查工具,我们也可以组织一些代码检视(Code Reivew)来保障这个方面,所幸的是,市面上的大多数IDE都支持某些Code Review的插件,寻找一个好的代码检视工具,然后在实践中用好这个软件,也是一种让人愉快的体验。更重要的是,如果一个新入职的程序员,能发现自己的代码是受人关注的,在编码上的技巧和问题是有人指导的,也会加强对团队的信任和凝聚力,从另外一个意义上看,这也是一种有效的降低团队流动性的手段。反过来说,如果不时地参加代码检视或者其它代码监管的活动,管理者也能更准确地了解成员的编码水平,从而做到赏罚有据。

在良好的代码可读性基础之上,对于代码模块和模块抽象,也是需要一定的专门技术的。这里要接触到的就是“结构化编程”和“面向对象”两种概念。这两方面的书籍汗牛充栋,但是我觉得需要强调的是,“结构化编程”并不和“面向对象”是冲突的,它们之间的关系非常密切。如果你能把某个需求有逻辑性的细分下去,必须要有足够的抽象思考和业务领域理解知识。

面向对象是一种面向名词的思考方式,结构化的思维同样需要用到。所以结构化编程的思维同样是面向对象设计的基础。这方面的专业论述有很多,但是最可惜的是,我们很多技术团队,仅仅把这些看成是程序员的“个人修养”,而不是一个团队的必要要求,所以我们的代码质量往往参差不齐。

其实和“代码风格规范”一样,代码模块的设计也是必须要符合一定规范的,这个在不同的团队和业务领域中可能不一样,但是没有规范或者指导思想,是最差的一种。因为这个层面的知识,由于业务需求和领域的不同,往往很难有完全统一的业界标准,所以更加需要团队的管理者来制订和执行。这也是对一个技术团队管理中最具挑战性的部分——如何定义、抽象、管理业务模型。而这部分也是很多管理者忽视的部分,他们有太多行政工作要做,反而认为这些事情应该交由其他人代劳。在这个事情上,如果不是有业务领域经验丰富的人去做抽象,就一定避免不了模型和需求不对应产生的修改工作量;如果不具备丰富的代码设计能力,如设计模式的人去设计,需求变更造成的工作量可能会毁掉整个项目。

优秀的程序员——往往都成了管理者,必须要发挥自己的这些智力优势来提高技术团队的产出,而不是去做别的一些没有什么“技术要求”的工作。况且这些设计工作是那么的有挑战性和趣味性,工作量(从开发时间看)也不是那么大。如果管理者在系统的设计过程中和团队密切的互动,解释和宣导自己的想法,在执行过程中监督这些设计的实施,本身也是对产品质量的一种把控,不管是评价下属的工作量,还是理解项目的进度和瓶颈,都是拥有第一手资料的。这种情况,就是我认为的技术管理工作,最后还是要落实到技术工作之中的重要理由。

当然,你可能会说,如果一个非常大型的团队,CTO也是需要这样去管理吗?听起来似乎不太可能,但实际上任何一个团队,在某个时间点上,一定会有一些非常重点的项目,或者一些关键的问题要解决,CTO并不是简单的做做规划想想点子,而是要针对关键的业务问题,去做具体的解决方案的。这里提一点题外的例子,比如二战时德国装甲兵总监古德里安,除了多次打报告要求组建强大的装甲兵集团,还自己去找了两辆卡车装上铁皮,安排模拟的坦克训练。这类高级管理者做具体工作的例子非常多,最重要的是要抓到问题的关键点去做。我们最常见的毛病反而是不关注难点重点,一味高屋建瓴的提要求而不找解决方案,这是管理的大忌。

如果一个团队能关注代码模块的抽象,能经常讨论诸如设计模式、重构这些设计问题,那么就能有机会在更高的抽象层次上,使用更有价值的设计理论,比如架构模式。最近几年无论是Web service、SOA、restful,还是所谓云(PaaS、SaaS),这些流行的名词,从某种意义上来说,都是一种架构上的创新:结合最新的技术和最新的业务领域。使用什么技术,上生命架构,是一个技术团队管理者必须随时学习和思考的问题,固步自封肯定会有稳定可靠的好处,但也是让一个产品腐烂落后的原因。勇于挑战和尝试,才是一个积极向上的技术团队的应有的气氛,而这个气氛首先要考验的是管理者的勇气。

2、开发工具和实践

关于先进的开发工具和实践,一直以来都有推陈出新,从最简单的版本管理工具(《人月神话》中写到,由于没有版本管理工具,作者所在的团队花了巨大的努力,制定了各种管理规范,来解决代码分支和覆盖的问题,甚至要靠把源代码打印到纸上,堆得比人还高),到各种高级的IDE软件、缺陷管理系统、知识库管理等等……其中自动化测试技术,是最重要的一种。

我们常常把测试认为是一种“质量检查”的工作,但实际上,测试是代码生产的生产线。我们如果以测试驱动开发的角度来看,需求首先变成测试用例代码,具体实现代码的首次运行也是在测试用例代码中,最后整体项目的运行,也是由测试代码来启动。这个过程中,测试代码就好像产品的模具,保障整个产品是设计的样子。可惜我们常常并不愿意花时间去打造模具,就好像我们直接用手工直接去做产品一样。

但问题是,如果我们的产品只是一次做出来就好,但是软件系统往往需要大量的,不同部分的修改,没有测试系统的保障,我们肯定会改了A地方,B功能就会出错。一个项目如果测试用例足够全面,就算功能代码全部丢失了,凭借测试用例,也能很快地重建出功能代码来。更重要的是,测试代码还能保证多个层次的代码,都维持一个稳定的“样子”,这对于项目团队的人员交接,是有重要意义的。

我们在项目管理的过程中,常常会苦于不知道项目进度如何,但如果你有一个完整的测试驱动开发的流程,这个问题就不会那么棘手。

  • 首先,需求的明确工作可以看测试用例的编写进度。在编写测试用例的过程中,大量的模糊不清的需求,都会被落实成代码,这也排除了很多日后延期的可能。如果在比较复杂的系统中,代码的抽象层次有多个,所以测试用例也许同样会有很多组。但不管怎么说,每一层的设计最后都落实成为测试用例的话,整个项目的需求也会因此就稳定下来。
  • 然后,如果我们是针对这些测试用例去做开发,那么每天我们都可以统计到有多少个用例被完成,这比从或空洞或繁琐的程序员日报里,可以获得的信息准确的多。
  • 最后,在产品运营的过程中,我们可以把所有发现的故障和缺陷,都补充为测试用例,这样就可以确保项目的质量可以逐渐稳定下来,当我们真的需要重构的时候,只要有这些测试用例,就能放心大胆的去修改代码,因为只要通过所有的测试用例,项目的质量就一定是可靠的。所以一个自动化、高覆盖率的测试系统,是一个项目在管理上最有效的工具。

测试工作有那么多好处,但为啥总会觉得有很多困难无法实践呢?关键点就是测试中的各种依赖很难构建,这就是一个比较专业的技术问题——Mock和Fack系统。所以我们的问题又一次回到了技术上,构建足够专业的Mock和Fack系统。

3、需求领域知识

需求领域知识,从某种方面来说,不算是“纯技术”的领域,但对于特定开发某个业务领域的团队,这些知识的掌握程度,往往是至关重要的,因为只有在深刻地理解了需求,才能真正用好各种抽象、模式等软件工程知识。

程序员们往往都会有一些误区,认为只有技术领域才是自己应该关注的,有些人可以非常熟悉Linux内核的各种实现细节,但却对最近的一个项目的市场情况漠不关心。很多程序员往往会认为,计算机科学中的那些知识,才是知识,而他们所接触的其它业务领域,都应该不是他们关心的。可惜的是,大部分的程序员,也叫软件工程师,都是需要解决计算机科学以外的业务问题的。所谓工程师,就是利用已有的工具,去解决实际的问题。

所以,对于实际要解决的问题领域,不进行完整细致的学习理解是不行的。事实上,计算机科学,也是因为其它业务领域的需求而发展起来的,比如军事、金融等。要深入地去学习一个业务行业领域的知识,也是需要很多时间的,这往往和程序员希望自己的技能通用化有冲突。但我认为这个世界上没有那么多“通用”的知识可以用,能专心做好某一个领域已经很不错了。所以在花时间到具体的业务领域上,去学习和实践各种技术解决方案,会比只是空泛的“领导”一队人做事更能发挥作用。 

小结

技术团队的管理,如果仅仅从一般意义的“管理”上去解决问题,往往是无解的。但彼得·德鲁克说:管理本质就是创新。我的理解是,管理就是要去找解决问题的方法,如果这个方法看起来很不像一般意义上的管理,那也无所谓,因为解决问题才是目的。

打破对“管理”的看法,求真务实的去寻找解决问题之道,才是真正的“管理”。技术团队的管理问题用技术手段解决,是我切身体会的最好的解决方法。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

腾讯架构师谈技术管理:十年沉浮,最后我选择了离开…… 的相关文章

  • [创业之路-73] :如何判断一个公司或团队是熵减:凝聚力强、上下一心,还是,熵增:一盘散沙、乌合之众?

    目录 前言 一盘散沙 乌合之众 凝聚力强 上下一心 一 股权结构与利益分配 一盘散沙 乌合之众 凝聚力强 上下一心 二 组织架构与岗位职责 一盘散沙 乌合之众 凝聚力强 上下一心 三 战略目标 一盘散沙 乌合之众 凝聚力强 上下一心 四 规
  • [管理与领导-63]:IT基层管理者 - 潜技能 - 1 - 职场中的陷阱 - 看清楚职场中的霸凌现象

    目录 前言 1 打击自尊心 2 孤立他人 3 恶意针对 4 当众羞辱 5 持续性否定 前言 职场中 什么样的人都有 害人之心不可有 防人之心不可无 前者教人从善 后者教善人如何保护自己受到 坏人 的伤害 有一种情形 每天上班都陷入抑郁 总是
  • 吴博:京东应用架构设计与治理

    吴博 京东应用架构设计与治理 经过十年的业务快速发展 京东信息系统复杂度越来越高 一般电商系统只需关心 进销存 中的 销 京东系统需要管理采购 进 销售 销 和库存 存 三个环节 系统做水平垂直拆分后 需要解决系统间如何解藕 如何保证高效通
  • [管理与领导-74]:IT基层管理者 - 辅助技能 - 4- 职业发展规划 - 构建自己的个人品牌

    前言 一 什么是信任账户 在职场中受到信任是建立良好声誉和专业形象的基础 以下是一些可以帮助职场人受到信任的方法 诚实守信 始终保持诚实和可靠的行为 遵守诺言 履行承诺 不轻易背信弃义 专业素养 展现专业的知识和技能 以及对工作的敬业精神
  • [创业-36]:《从员工到老板,你必须经历的三次跃迁》解读

    目录 前言 1 关于如何成为好的员工 第一 工资是给职位的定价 价值 第二 职位的价格由最便宜的可胜任者决定 价格 第三 解读 2 关于如何成为好的管理者 第一 衡量标准 第二 如何设计制度是衡量治理水平的一把尺 第三 解读 3 关于如何成
  • 如何做好项目的需求与业务调研?

    1 调研工作如何组织 很多人认为调研工作极难 水平最高的人才能做好一次调研 软件工程中也强调需求获取是最难的事情 有的人要么认为不过如此 甚至是一个普通技术支持都可以做的工作 现在有很多企业上管理软件之前都希望软件公司派人来了解情况 提出针
  • 代码质量评估的新方法

    我们如何对写出的代码进行质量评估 在这一块的方法 标准一直都比较模糊 传统意义上 我们一直使用CMMI中bug率 千行代码缺陷率 bug数量 1K行代码 对软件代码质量进行评估 这种方法也被广泛的应用到6西格玛质量管理方法里 千行代码缺陷率
  • * 引领华为:任正非的七大领导力启示

    中国有诗云 江山代有才人出 各领风骚数百年 的确 任正非制定了最为有效的战略 让华为成长为一家全球领先的企业 这证明了他的巨大影响力和远见卓识 在本文里 大卫 德克莱默和田涛探讨了帮助华为取得巨大成功的七大领导力启示 中欧关系源远流长 自中
  • 敏捷虽好勿盲从

    原文作者 MARK LEVISON 很多公司正在往陷阱里掉 常常表现为 我们的合作伙伴 或竞争对手 采用了敏捷 因此我们也需要采用敏捷 如果没有正当的理由就向敏捷转型 组织将会受到伤害 就这么简单 多说无益 在20世纪80 90年代 制造商
  • 技术管理者培训小结一:内在修养

    经过技术管理者培训课程 将一些内容以小结方式记录下来 既能作为培训沉淀 又能作为备忘 一 管理者的内在修养 1 情绪控制应该脱离 刺激 回应模式 人的终极自由是自己的情绪由自己控制 发挥四大天赋潜能 自我意识 想象力 良知 独立意志 由受制
  • 看板的六大实践学习总结

    这次活动主要是学习看板的实践 看板的六大实践介绍如下 可视化 可视化价值项和价值流 story和它的流动 将问题和 瓶颈也在看板上可视化 可激发团队协作 限制在制品 通过限制各阶段的在实现的story 来加速流动 避免造成 交通 阻塞 考虑
  • [管理与领导-40]:IT基层管理者 - 做事管理 - 计划到位,干活不累;计划不到位,累死累活不得好

    前言 计划到位 干活不累 计划不到位 累死累活不得好 很多人对计划有一种误解 以为做计划就是纸面上的工作 就是指定时间计划 就是上级给下级指派任务 很显然 这种对计划的误解导致很多人不屑做计划 实际定计划的重点是对目标非分解 分解成可执行的
  • 成为合格管理者的几个关键词

    http www csdn net article 2014 05 05 2819612 Management 职业通路是狭窄的 金字塔 结构很好地描绘了每个人在职场将要走过的路 在职位与薪酬待遇紧密挂钩的当今职场 芸芸技术专家总有一天会面
  • 2008.06.02 读华为前执行副总裁李玉琢的《我与商业领袖的合作与冲突》有感(三)

    理解一下书中提到的几点管理思想 和大家一起分享 1 柳传志的 搭班子 定战略 带队伍 这里需要注意的是搭班子 定战略 带队伍顺序不可乱 为什么这样说 一个组织只有先存在核心 才可能确定明确的战略 不同的核心 定出来的战略就可能不一样 因此是
  • Scrum中的产品需求预审

    原文作者 Mike Cohn 为了保持产品待办事项 product backlog 的整洁有序 我们需要召开product backlog refinement会议 有时也叫product backlog grooming 这个会议是在一个
  • 理事的三板斧-以项目部为例

    作为管理者来说 无非是理事 管人 这中间理事尤为重要 因为事理的不清楚 人肯定难管好 即使有个人魅力 队伍凝聚力强 事理的不对 也会事倍功半 长期的去看 团队也会出问题的 事理的清楚 我认为主要有三点 目标 流程 模板 目标清楚了 方向就不
  • 华为的成功依靠的不是IPD

    几次聊天中 有人提到他们的公司在学习华为 贯彻IPD 这些企业都发展的比较大了 希望能用一套行之有效的管理方法来进行规范化管理 对于IPD我总是保持谨慎的态度 如果公司已经发展到一定阶段 内部形成了明确的部门分工 同时也出现了严重的部门墙
  • ACE_Proactor实现

    ACE Proactor实现了Facade模式 其方法可以分为四类 生命周期管理方法 事件循环管理方法 定时器管理方法 IO操作facilitator方法 须知ACE Proactor是使用Bridge模式的 ACE aynch Read
  • 每日站会是在浪费时间...吗?

    原文链接作者 Mark Levison 又要开站会 实在是浪费时间 打断我的工作啦 每日站会只是为ScrumMaster刷存在感而设计的 便于他微观管理 每日站会上就是汇报一下状态 而我写个邮件就行了啊 你以前听说过这些抱怨吗 我听过 不过
  • 组建一家IT公司的一些事项

    组建一家IT公司需要考虑多个方面 包括确定公司名称 选择注册地点 确定公司类型 组建团队 选择合适的技术和平台以及建立良好的客户关系等 以下是一些详细的步骤和建议 一 组建事项 确定公司名称 在选择公司名称时 需要考虑名称的含义和市场竞争性

随机推荐

  • java比较器Comparable接口和Comaprator接口

    java的比较器有两类 分别是Comparable接口和Comparator接口 在为对象数组进行排序时 比较器的作用非常明显 首先来讲解Comparable接口 让需要进行排序的对象实现Comparable接口 重写其中的compareT
  • MySQL - 普通索引

    创建和查看索引 创建索引是指在某个表的一列或多列上建立一个索引 以便提高对表的访问速度 创建索引有3种方式 分别是创建表的时候创建索引 在已经存在的表上创建索引和使用ALTER TABLE语句来创建索引 本节将根据具体的索引分类详细的讲解这
  • (最简单)使用 reset-css 初始化浏览器css样式

    目录 背景 实现 步骤一 步骤二 背景 在我们的项目初始化搭建过程中会遇到这种情况 需要我们自己清除css默认样式 但是我们不可能一周都有那个清除默认css样式的文件 实现 步骤一 在终端使用 npm 引用 reset css npm i
  • mysql linux redhat_RedHat Linux 6 下 MySQL 8.0.11安装配置

    我这里是RHEL6 5的系统 因此选择RedHat 6 x86 64bit操作系统 下载第一个RPM Bundle即可 MySQL 8 0 11 1 el6 x86 64 rpm bundle tar 目前MySQL8 0 11社区版提供了
  • C++ system()函数的常用用法 (史上最详细)

    目录 一 推荐 1 system pause 2 system color 3 system title 4 system cls 二 文件操作 1 system start 2 system del 3 system copy A B 4
  • ReactDOM.render(...) 渲染方法

    React代码的书写格式和以前的JS有很大的不同 下面通过对这段代码进行分析了解一下他 以前使用Javascript定义一个变量用var ES6加入了const关键字 用来定义一个常量 const div document createEl
  • 【Kotlin】快速理解协程与挂起

    本文不介绍协程和挂起的基础用法 如需要请移步其他博客 本文主要讲解 kotlin中的协程是什么 协程的作用 挂起是什么 挂起的作用 本文全程尽量白话 使得协程和挂起理解起来更容易 小故事or小事故 之前面试的时候 有个面试官问了我一个问题
  • 语义分割任务中的Transformer

    文章目录 语义分割中的Transformer 1 Patch based Transformer 1 1 SETR 1 2 Segformer 2 Query Based Transformer 2 1 Transformer with O
  • vscode更新时报错怎么办?

    请用管理员权限 打开试试
  • vue2组件系列:Slider 滑块

    我所接触到的Slider滑块应用的场景 主要有图片的放大缩小 调节声音的大小 不知道小伙伴们的应用场景都有哪些呢 欢迎在文章下方留言讨论哈 准备工作 创建一个页面 Slider vue在router js里配置 Slider页面的路由 pa
  • js实现文字上下滚动(到底回到顶部重复滚动)

    直接贴代码 div class scroll ul li 开始 li li 用户 li ul div
  • mybatis传参1 - 传入map类型的参数

    本章将介绍mybatis如何传入参数 传入map类型的参数 我们需要定义如下三部分 目录 1 接口部分 2 mapper文件部分 3 测试类部分 4 测试本次结果 4 1跑出来的值 4 2mysql值 1 接口部分 定义一个接口返回User
  • 【轩说Java】JavaSE知识点难点汇总

    文章目录 JAVA SE 抽象类与其实现子类 抽象类与其子类如下 静态函数不存在重写和多态的概念 重写的要求 接口interface 类 接口的实现 一对多 接口 接口的继承 一对多 接口中的变量和函数 接口作为一种标签 堆 栈 静态方法区
  • Flask-SQLALchemy 连接数据库

    Flask SQLALchemy 连接数据库 在 Flask Web 框架中 Flask SQLALchemy 扩展对数据库操作进行了封装 使用 Flask SQLALchemy 可以通过 Python 对象来操作数据库 一 Flask S
  • Kubernetes集群配置免费的泛域名证书支持https

    前言 kubernetes 集群默认安装的证书是自签发证书 浏览器访问会发出安全提醒 本文记录了利用 dnspod cert manager let s encrytp 等开源组件 实现泛域名证书的自动生成 续期管理 为现有kubernet
  • [转]:Javascript+xmlhttp调用Webservice

    原文地址 http netboy cnblogs com archive 2006 02 18 333260 html 1 创建webservice 为了免于落俗我稍稍修改了创建webserice的默认webmethod using Sys
  • Python 30天: 第一天 -- 简介

    第二天 gt gt 第一天 欢迎观看python30天 介绍 Python 是一种用于通用编程的高级编程语言 它是一种开源 解释型 面向对象的编程语言 Python 是由荷兰程序员 Guido van Rossum 创建的 Python 编
  • Redis之String类型

    文章目录 Redis之String类型 1 赋值 获取值 2 同时设置 获取多个键值 3 数值增减 4 获取字符串长度 5 向尾部追加值 6 分布式锁 7 应用场景 Redis之String类型 Redis命令不区分大小写 1 赋值 获取值
  • 测试基础-系统测试包括哪些内容

    一 系统测试包含哪些测试 1 测试范围 整个系统 功能 性能 安全 界面 兼容等等 2 测试方法 黑盒测试 3 测试依据 需求规格说明书 SRS 4 评估基准 需求覆盖 5 测试类型 测试策略 补充说明 实例 淘宝登录操作 10万用户操作
  • 腾讯架构师谈技术管理:十年沉浮,最后我选择了离开……

    转自 http www techug com post tencent architect talk about team managment html 作者介绍 韩伟 腾讯科技互娱研发部架构师 曾在网易任职8年 担任无线事业部产品总监 多