首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Uber亲历严重工程灾难

他们很短时间内与少数工程师一起创造了令人惊叹体验,核心产品大部分功能都已经完成。 于是,全公司范围内推广开始了。各个团队开始将更多功能引入到新 App 。...有一个 Uber 工程师 Xcode 输入了一行代码,等了 45 秒之后,字母才慢慢地、一个接一个地出现在编辑器。 随后,我们又遇到动态链接器问题。...一些 Twitter 旧同事建议离开这家会追踪用户位置“坏”公司。受到“惊吓”的人们关闭了手机位置权限,但新 App 并没有相应解决办法。 我们赶紧想办法讨论对策。...问题持续存在和缓慢开发环境 Uber iOS 工程师形成了两个敌对派别,称它们为“Swift 狂热派”和“Objective-C 顽固派”。外部压力和内部派系斗争让气氛变得高度紧张。...社区也从我们经历受益。Ellie 做了一个很棒演示,并通过巡回演讲来分享我们经验。经验去教其他团队如何做出更好决策。

63220

吐槽见过Java代码

只针对spring框架,贴一份见过代码(没有之一),就想知道,有没有其他人能写出这样代码?还有没有更加烂编码方式?...其实,对于个人来说,技术很重要,但是对于工作来说,编码习惯比技术更加重要。工作你面试大部分技术用到很少。...说实话,项目组开发人员都是比较幸运,觉得能学到东西,不是像其他项目组,写了几年都是一样CRUD代码,虽然比较严厉,但是还是愿意待在项目组,毕竟加班比其他项目组少啊。...这就是工作,编码习惯(或者说编码风格)比技术更加重要。工作了也有很长时间了,觉得个人价值最大地方就是这些,技术上其实也和大家差不多,但编码上还是觉得可以超过大部分人。...后面我会把我们这些业务系统中大家编码问题一个一个写出来,并把解决办法分享出来。

66400

这也许是见过“”烂代码!!

某些时候,我们写出了自己并不感到自豪代码。这些代码让你怀疑,"怎么会写出这样东西?"其实,这没什么好羞愧。 它发生在身上,发生在你身上,但它也发生在其他开发者身上。...花了点时间,收集了能找到最糟糕代码片断。 今天,将把它们介绍给你们。 重新造轮子出错了 常规布尔类型比较没有返回你要找东西。你应该怎么做?答案很简单,你自己创建一个。...请看下面的代码,自己决定。 到底谁在读提交t信息 如果你有一个同事反复使用相同提交信息。她可能是这样做。 如果这些变化任何一个 未来是不可预测。它可以一夜之间改变。...排版是最好 类型安全感觉是很好。那么如何更好地确保你不会出现任何类型错误呢?这些家伙,他们想出了这个办法。 如果它起作用,它就是起作用 真正要说是什么。只要确保参数总和始终是7。...但我想我们可以同意,这种类型代码不应该进入代码审查。 当你是个码农但你激情是书法时 尝试了不同类型字体。但我不得不说,它从未走到这一步。如果这让你怀疑 "盗版软件是这样写吗?"

25220

房贷利率有没有套路?这是见过透彻Python版解读!

我们就以商业贷款背景下,分别介绍这两种还款方式,然后再进行对比和验证。 等额本金 等额本金指每个月还本金都是一样,但是利息是动态变化,随着我们每期归还本金而不断递减。...刚才说了,利息是动态变化,也就是说银行每月会在剩余应还本金基础上去计算利率,是一个动态过程。公式如下: ? 有的朋友说了觉得这样说也不是很直观,那我直接来撸一段代码以表respect。...两种还款方式对比和验证 以下是两种计算方式还款金额对比,可以看到我们选择参数条件下等额本金比等额本息少了52万。 ? 为啥差这么多?...加上另一半工资一共还能有多少,一线城市真的很难受,所以大家宁愿想过得舒服点,哪怕多还点钱也忍了。...哪种更优还是要结合自己实际情况来看,也不能一概而论,不过一般资金不是很充裕情况下还是建议选择等额本息。 房贷利率有没有套路?

96350

房贷利率有没有套路?这是见过透彻Python版解读!

我们就以商业贷款背景下,分别介绍这两种还款方式,然后再进行对比和验证。 等额本金 等额本金指每个月还本金都是一样,但是利息是动态变化,随着我们每期归还本金而不断递减。...刚才说了,利息是动态变化,也就是说银行每月会在剩余应还本金基础上去计算利率,是一个动态过程。公式如下: ? 有的朋友说了觉得这样说也不是很直观,那我直接来撸一段代码以表respect。...两种还款方式对比和验证 以下是两种计算方式还款金额对比,可以看到我们选择参数条件下等额本金比等额本息少了52万。 ? 为啥差这么多?...加上另一半工资一共还能有多少,一线城市真的很难受,所以大家宁愿想过得舒服点,哪怕多还点钱也忍了。...哪种更优还是要结合自己实际情况来看,也不能一概而论,不过一般资金不是很充裕情况下还是建议选择等额本息。 房贷利率有没有套路?

82620

ThoughtWorks敏捷实践

Code review,检查代码,也叫代码审查,就是开发人员凑在一起来检阅彼此所产出代码。看看有没有代码坏味道,看看有什么不合理设计甚至是错误设计,等等。...---- CI 没有CI项目开发是耍流氓。CIAgile是一项基础设施,它通过自动化来提供有效反馈机制以及高效部署,大大降低代了码集成和项目交付风险。 CI,持续集成。...开发人员每天都在代码库提交代码,版本控制工具(比如Git)提交前必须更新代码库最新代码(解决冲突,代码合并,应用更改),然后将代码提交到代码。...,要第一时间修复。...Retro这个环节核心产出物是Action,团队共同一致商量出来措施,有没有效果就在于行动了,所以Action分配了Owner之后,一定要跟踪这些Action有没有落实执行。

1.9K30

没有之一,见过漂亮代码!!

某些时候,软件根本就不存在漂亮代码漂亮函数,或者漂亮程序。 >>>> 当然,我们很难对不存在事物进行讨论。...3.1 编写过漂亮代码 当Greg Wilson最初告诉本书编写计划时,曾自问编写过漂亮代码是什么。...如果你把问题改为“在你编写那些广为应用代码,哪一段代码漂亮?”答案还是Quicksort算法。和M. D....考虑到通过缩减代码量所得到好处,最后以第三种方式来问自己本章之初提出问题。“你没有编写过漂亮代码是什么?”。如何使用非常少代码来实现大量功能?...* 只有不仅没有任何功能可以添加,而且也没有任何功能可以删除情况下,设计师才能够认为自己工作已臻完美。 * 有时候,软件根本就不存在漂亮代码漂亮函数,或者漂亮程序。

1.8K2219

这是见过牛逼Shell,619行代码

sigRotate=25 sigLeft=26 sigRight=27 sigDown=28 sigAllDown=29 sigExit=30 #七不同方块定义 #通过旋转,每种方块显示样式可能有几种...read -s读取终端键时,终端属性会被暂时改变。 #如果在read -s时程序被不幸杀掉,可能会导致终端混乱, #需要在程序退出时恢复终端属性。...= -1 )) then #撞到其他已经存在方块了 return 1 fi done return 0; } #将当前移动方块放到背景方块中去, #并计算新分数和速度级。...s="$s`DrawCurBox 1`" #显示新下落后方块 echo -ne $s else #走到这儿, 如果不能下落了 Box2Map #将当前移动方块贴到背景方块...将当前移动方块贴到背景方块 RandomBox #产生新方块 } #旋转方块 function BoxRotate() { local iCount iTestRotate

51020

精通字符串,面试官竟然问我JavaString有没有长度限制!?

就如本文我们要讨论问题:JavaString有没有长度限制? 这个问题要分两个阶段看,分别是编译期和运行期。不同时期限制不一样。...1 编译期 首先,我们先来合理推断一下,当我们代码中使用String s = "";形式来定义String对象时候,""字符个数有没有限制呢?...JavaUTF-8编码Unicode字符串常量池中以CONSTANT_Utf8类型表示。...CONSTANTUtf8info介绍,这里就不详细展开了,我们只需要我们使用字面量定义字符串class文件,是使用CONSTANTUtf8info存储,而CONSTANTUtf8info中有u2...也就是说,Java,所有需要保存在常量池中数据,长度最大不能超过65535,这当然也包括字符串定义咯。

1.5K30

同事C代码#、##把秀了~

#和##对于大部分C语言玩得还算比较溜朋友并不是很陌生,不过能把这两个知识点游刃有余应用到所在代码每个角落,似乎并没有几个人能够做到,学时候朗朗上口,而编码时候却抛之脑后。...首先要知道原因 : 进行宏定义嵌套情况,#或者##仅在当前宏有效,嵌套宏不会再次展开,既然当前宏无法展开,那么只能再加一级宏定义作为转换宏进行展开,看能不能解决该问题: #include <stdio.h...所以采用##拼接出来标识符想要打印输出的话,使用#进行转换是直接、方便。 3 ##玩法 ##拼接符玩法有点多,甚至有些还比较绕,当然如果你游刃有余的话,这对于重构代码是一把“ 利器 ”。...1、结构体定义妙用 下面是bug菌经常在项目代码中用到##结构体定义法,也是非常多开源代码惯用做法,相比常规结构体定义法,确实省去很多重复代码。...bug菌代码中跟大家都标注了,相信大家一眼就能看懂,似乎并没有想象那么难。

12010

在工作常用代码管理

说是管理其实就是把常用一些JS方法,自己保存下来,这样以后工作可以比较方便使用。 哪些方法可以、或是说值得保存呢?...还有一些是扩展型函数,例如,判断数组,增加、删除数组什么, 还有一些工具类,什么复制属性啊,字数判断啊,DOM节点操作啊,轮播广告啊,日期操作 总之,上面列出那些内容JS代码都是与具体业务逻辑无关...============= 写这些东西基本都是“思路或方法”占多数,觉得思维层次上是高于具体实现。...这也是为什么很少写JS具体实现原因,总觉得应该给我粉丝们一些不一样东西,一些别的地方得不到东西。因为网上JS教程很多,又写不好JS教程,没耐心一步一步详细写。...要看JS教程有很多地方可以看到很好教程。 希望关注朋友们,看我微信公众号,能够体会一种“变通”能力。不要说一就是一,要懂得举一反三啊。 再三提醒啊,不要僵化去看待文中内容。

81950

择业思考:AI时候来到工业界!

从 2011 年学到2018 年学了很久机械机器人,不希望把这些东西全部丢掉,然后转做一个写代码的人。也并不觉得跟计算机本专业毕业这些人比,竞争优势上我会比他们强多少,因为毕竟时间短。...第二个想做,其实更多是希望能够为社会做出一些看得见效率提升,同时希望在做这个事情自己能够成长。最后一个就是养活自己,需要有个比较可观收入,最好能有一个财富自由机会。...毕业时候,这批企业,比如 AI 四小龙,比如说大互联网企业BAT,然后还有各种手机公司华为、 oppo vivo、小米,以及无数自动驾驶公司。...当时愣住了,就觉得这个场景一变,代码复用率并没有那么高,泛化能力并没有那么强,最终造成结果就是客户复购意愿低下。...还有另一件事,就是他们拿最好模型上线之后还要维护,但跑这个模型对性能要求有点高,他们当时维持这个模型运行过程也花了很多冤枉钱。

37120

一行代码修复DubboBug。

再加上这个BUG已于近期修复了,且只用了一行代码修复了,那我就写一下解决方案,以及背后原理。 即是对之前文章一个补充,也是一个独立知识点。...以下内容是对该issue详细说明: Dubbo对应源码,只需要一行代码。就可以判断是否有服务上下线操作: ?...为什么一行代码就能修复?...也就回答了为什么把上图中编号为①处代码替换为标号为②代码,这一行代码就能修复这个Bug,核心思想就是只关心List集合里面的元素变化,而不关心List集合容器是否发生变化。...最后说一句 开始找到这个BUG时候,自己也是有一套解决方案。思路也是只关心List里面的元素,而不关心List这个容器,但是实现方式比较复杂,改动点较多,还需要写一个工具类。

52610

是这样 React 实践 TDD 编程

Redux编写测试听起来肯定有悖直觉。如果你使用了Redux,它可能看起来更加复杂。 然而,添加功能之前编写测试有助于编写更好代码,因为你预先考虑了将使用设计模式、体系结构和变量名称。...编写测试 这是最有趣部分。让我们开始TDD。 首先,让我们创建并配置存储。src目录,创建一个名为index.js新目录。在这个文件,初始化存储。...Redux reducer逻辑和动作集合,通常定义单个文件。...slice默认状态应该是一个空数组,毕竟,我们处理是用户。 让我们通过编写一个测试: src/store创建一个名为slices新目录。...slice目录,创建一个名为user.js文件。

1.9K30

反思管理犯过重大错误

近一年来,管理犯下2个重要错误。该错误导致团队结构不清晰,骨干核心人员不稳定,易流失。...团队人员结构分布是 1个经理、2个高级、3级、4初级;组内划分是分成了3个小组,2个业务测试小组,一个测试基础小组。...组内结构划分可见下图所示: 二、是如何犯错,以及为什么犯错 错误一:资源错配 对于组长选择,以及组内骨干选择,如下图所示: 其中标记为组长,是团队内部小组内被任命为小组长,标记为骨干...两个业务小组,初中级员工干中高级员工活,中高级人员为相对边缘角色。这样资源错配,直接引发了核心、骨干员工离职率高后果。 为什么会这样做: 本质上是一个“谁能谁上”还是“谁上谁能”问题。...; 坏影响: 1、其他员工可能会感觉偏心; 2、被一直用那个人,对涨薪、奖金预期较高,很难满足,最后导致人员离职; 四、为什么说它是管理上重大错误 上述两个问题,直接就是导致了团队结构不稳

1.1K10
领券