如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~ 本文是“为什么我建议”系列第二篇,本系列中会针对一些在高并发场景下,我对于组内后台开发的一些开发建议以及开发规范的要求进行说明和分析解读...往期回顾: 为什么我建议在复杂但是性能关键的表上所有查询都加上 force index 在业务一开始上线的时候,我们线上日志级别是 INFO,并且在日志内容中输出了代码位置,格式例如: 2022-03...模拟两种方式获取调用打印日志方法的代码位置,与不获取代码位置会有多大性能差异 以下代码我参考的 Log4j2 官方代码的单元测试,首先是模拟某一调用深度的堆栈代码: 然后,编写测试代码,对比纯执行这个代码...由此,我建议:对于微服务环境,尤其是响应式微服务环境,堆栈深度非常深,如果会输出大量的日志的话,这个日志是不能带有代码位置的,否则会造成严重的性能衰减。...我们在关闭输出代码行位置之后,同样压力下,CPU 占用不再那么高,并且整体吞吐量有了明显的提升。
一定要弄清楚之前这样编写代码是出于什么样的考虑。 项目背景 这段时间我们团队在修改之前的一个功能。在我接触到这个项目的时候,设计方案已经被讨论了多次,已经到了详细设计的阶段。...详细方案设计在别人写的代码上做修改,做详细设计时,第一步要做的是充分评估改动影响;第二步是画流程图梳理改动前后的调用链和数据流,列出修改点;第三步是定好测试关键案例,确保结果的正确性。...HR小姐姐说不是单单问我,要问我们在场所有人一个问题:“代码都读过了,为什么有些人还对逻辑不清楚?”其中一个架构师回答到:“就是你上学的时候读鲁迅的书和现在读鲁迅的书的区别。”...制定测试案例 在评估影响和逻辑梳理时,关键案例其实已经出来了,这个阶段是个整理阶段。同时,也是从另外的视角,看看是否能达到“蓦然回首”的境界,补齐之前逻辑上的疏漏。...逻辑是没有问题的。但是他觉得代码上层不加,语义上不连贯。我觉得逻辑应该内聚,自己做好的事情不应该让上层来做。这种问题,我统归为风格问题。每个人写文章的思路是不同的,写代码的思路也是不同的。
对于 MySQL 慢 SQL 的分析 在之前的文章,我提到过 SQL 调优一般通过下面三个工具: EXPLAIN:这个是比较浅显的分析,并不会真正执行 SQL,分析出来的可能不够准确详细。...但是不能直观的看出来为啥会走错索引,需要通过 OPTIMIZER TRACE 进行进一步定位。但是在进一步定位之前,我想先说一下 MySQL 的 InnoDB 查询优化器数据配置。...这也引出了一个新的可能大家也会遇到的问题,我在原有索引的基础上,加了一个复合索引(举个例子就是原来只有 idx_user_id,后来加了 idx_user_status_pay),那么原来的只按照 user_id...并且索引不能随便加,想加多少加多少,也有以上说的这两个原因,这样会加剧统计数据的不准确性,导致用错索引。 手动 Analyze Table,会在表上加读锁,会阻塞表上的更新以及事务。...结论和建议 综上所述,我建议线上对于数据量比较大的表,最好能提前通过分库分表控制每个表的数据量,但是业务增长与产品需求都是不断在迭代并且变复杂的。很难保证不会出现大并且索引比较复杂的表。
纽约客指出,Jeff 和 Sanjay 共用同一台电脑写代码。 文章发出之后,Jeff Dean 表示:「我认为这篇文章精准地捕捉了我们的工作风格。」 ?...「我也不知道当初是怎么决定在一起合作的。」他说。 「我们加入谷歌之前就是搭档了。」Jeff 说。 「但我记不清为什么要在一台电脑上编程,而不是在两台电脑上干活。」Sanjay 说。...「在 D.E.C. 工作的时候,我经常从我的实验室走两个街区去他的实验室,」Jeff 说道,「路上有家冰淇淋店。」 「是有家冰淇淋店!」Sanjay 高兴地说道。...在设计房子时,他发现虽然自己喜欢设计空间,但并没有耐心去完成「适合 Sanjay 的部分」:横梁的细节、螺栓以及保证整个设计不至于分崩离析。 「我不知道为什么别人不这么干——合作编程。」...他当时的经理 Alan Eustace 回忆道:「简直浪费人才。」Sanjay 也不能理解 Jeff 的举动。「你的工作是基础设施,」他认为,「你在那里做些什么?」
从事软件开发多年对于C/C++用的比较多,可以明确说这两种编程语言也是支持跨平台,肯定还是有很多人问什么是真正意义上的跨平台,所谓的跨平台就是同一套代码在不同的操作系统都能直接去运行,这里面涉及到一个很重要的问题...,在java这门编程语言刚开始流行的时候就提到了跨平台的功能,在windows上运行的jar包直接放在linux上也能直接去运行,单纯从C/C++角度出发也是能够实现这种功能的,因为其语法实现是相同的。...但在具体实施操作过程中还是多少有些差异,特别是涉及到操作系统接口等方面,毕竟linux和windows编程给出的api的接口还是存在一定的差异,所以单纯的谈跨平台还是有点差异,针对这种情况一般在软件架构里面会区分出很多的平台代码...,在具体软件的核心架构上代码是一致的,和平台相关的代码还是需要单独去实现,就拿简单的线程的实现,不同的操作系统的接口就存在很大的差异,所以完全意义上的跨平台方面距离高级编程语言还是存在差异。...,特别是在入门的时候显得困难一些,但是入门之后会更加有意思。
这两起事件的原因也出在了软件 bug 上,而且都是由面条式代码引起的。 面条式代码困扰着全世界上许许多多的代码库,包括飞机、医疗设备以及核电站上运行的代码。...如果代码不能正常运行,那说明出了问题。但是,如果人们不理解代码,那么它肯定会出问题。迟早的事儿。 此处,我们来谈论一下人类的大脑。人脑是世界上最强大的机器。但是,它有其自身的局限性。...这就会埋下深远的祸根,因为我们不清楚某些代码变动是否会引发问题。我们无法运行详尽的测试,找出所有缺陷,甚至没有人知道这样的系统是否能正常工作。即便系统能够正常工作,我们也不明白为什么。...不确定的程序则恰好相反,在大多数情况下,add(2, 2)将返回 4。但有时,该函数可能会返回 3、5,甚至 1004。程序中万万不能出现不确定性,我希望你明白为什么。 不确定的代码有什么后果?...14 现在就开始行动 面向对象编程本身就是一个巨大的错误。 如果我知道我乘坐的汽车运行的软件是由面向对象编程语言编写的,我会感到害怕;知道我和家人乘坐的飞机使用了面向对象的代码,也会让我感到不安。
那么,作为程序员的你,在日常工作过程中有没有遇到这样的情况。...,也可能一直不结束...当你遇到这种情况时,是否会心生恐惧,每当产品经过你身边时都会祈祷【不要改我的需求...】...,那么程序员为什么会害怕“改需求”呢?程序员害怕“改需求”,大致上可以从以下几个方面聊一聊。...,这些最大的原因就是时间仓促,不能细想导致的。...不确定性其次程序员害怕改需求另一个原因就是不确定性,对于改需求的操作,可以说这会儿改一个方向,那么程序员作为执行者并不能保证业务或者产品会继续往其他方向继续改,那么这样来来回回改需求,导致的除了时间的浪费
“最近发际线又后退一大节” …… “最近很焦虑,鸭梨山大啊”…… 基本上,我们都有类似这样的经历:某一次重要考试马上可以查分数了,我们心里就不自觉地焦虑不安。 为什么会焦虑不安呢?...我自己本身从事互联网产品与运营、营销推广、技术开发等多个模块的工作多年,我感觉到,在互联网的这些运营领域,一定有很多朋友跟我一样,曾经焦虑和压力山大,对如何确保业务结果的可控性、确定性这类问题疑惑,比如对...这本书是对“不确定性的焦虑”这个问题,从思维框架和实操案例上给出的解决方案。...它不能解决工作、生活中所有的焦虑,但我认为,它在互联网的产品与运营领域,在运营管理者如何追求结果的确定性问题上,是大有模仿借鉴作用的。 运营不是打杂,运营本身是高级的思维活动和思维实践。...如果你在互联网的产品与运营领域前行,又恰好希望提高自己所负责的业务结果的确定性,或恰好期待自己职场发展上的确定性再高一些,不妨看看这本《运营之上》。
在过去的几年里,我也看到过许多技术管理者放弃并离开。我还记得向一家知名公司 CEO 做过一场关于技术债务的报告。报告进行到一半时,这位 CEO 惊叫道:“现在我明白为什么前 CTO 会离开了。”...不幸的是,软件开发人员全球短缺——我们不能继续雇佣更多的人,因为不存在。 考虑到这些限制,在技术债务上浪费一半的资源在我看来是一种糟糕的权衡。...在一个人员过剩的项目中工作是痛苦的:你花在同步会议上的时间比花在代码编辑器上的时间还要多。 探索代码库中的技术债务 技术债务的主要问题是代码缺乏可见性。...向健康的代码中添加特效似乎是一个可预测的过程。数据表明,在不健康的红色代码中添加新特性在时间方面有显著的变化,可能要长 9 倍。这给组织带来了不确定性。...我将通过一家持有红色代码的虚拟公司来详细说明这种不确定性意味着什么。这家公司可能能够在 9 个月内实现一种新特性。如果他们的竞争对手持有绿色代码,他们可以在一个月内实现相同的特效。
为什么写代码是一件很爽的事情?...我的看法是: 及时反馈 —— 超级无敌的及时反馈 确定性强 —— 与代码打交道,确定性强 有成就感 —— 解决问题,或克服困难的成就感 被需要感 —— 如果自己的创作,还能服务于他人,爽上加爽(被需要感...我们经常说市场在变化,需求在变化,甚至是人在变化,这些变化导致了大量的不确定性。从找到/定义问题,到制定解决方案,再到实现,不确定性的趋势,是由高到低的。...有经验的PM, BA, TL被选中了!如果客户方有技术/架构师参与到项目交付中的时候,TL就跑不脱了。为什么不写代码是件”不爽”的事非彼无我,非我无所取。...既然加了一个“感”字,那就说明这个东西,就是“主观的”,我说有就有~如果感受不到成就感和被需要感,那就去寻找,创造,记得向外看(可以参看之前的博客: "拼命的工作有人教 快乐的工作没人教")那我不写代码
在我的大脑还在全速运转消化理解这些意思拼凑出连贯的指令之前,讲师已经转移到下一个主题。 “什么快捷键可以再次打开终端?命令和空格键——快点在Mac电脑上试试。” ...可悲的是,大多数时候我离完成模块,离让app工作,离突破其实已经只剩几个阶段了——但为时已晚。损害已经造成。 所以,我一直在想,这是为什么呢?为什么学习编程会这么难? ...我觉得这不是一个直接性的问题,没有直截了当的答案,但对于我自己为什么不能将编码当作一个简单的技巧来获取,我有一些自己的见解。...我也在Twitter社区上征求别人的看法,并得到了热烈的响应: 写过一篇文章@raygunio关于为什么“学习代码”会这么难。为什么有时候你会认为这是一个如此艰巨的挑战?...尝试新的东西是非常可怕的。你需要在处于这种未知的弱势地位时也敢于勇往直前,而且失败和不确定也没有关系—— 事实上,它们都是成功的重要组成部分。
认真地评估开发时间,会让你在开始动手写代码之前搞清楚要怎么写,每个模块的设计心理得有个谱。从宏观上拆分模块,然后详细地分解任务,具体到一个很小的功能点。 这样你就能清晰地设计代码,而不是堆代码。...也避免了很多时候写着写着发现不对,然后拉到重来的境地。就是要让你动手写代码之前胸有成竹! 初学者为什么评估不准? 如果你的项目经常delay,那么八成是时间评估不准。...如何精确评估开发时间 最近几年,我都是以小时为单位进行时间评估的,有没有觉得有点恐怖?长期以来这样的习惯让我收获颇多。...这得感谢我之前的领导,三年前强迫我们这样做,刚开始很抵触,后来才体会到其中的甜头。 1、任务拆分 拿到新需求后,对其进行充分了解,不清楚的就去问清楚,然后对其进行模块化。之后,再进行技术上的拆分。...不确定时间。和其他部门有交集的工作,最好多预留buffer。比如移动端和后台联调。后端信誓旦旦给你说11.11号可以进行联调,这次联调总共5个接口。
静态类的初始化工作是不确定,一般在第一次调用静态类的对象时执行。 所谓非静态类:就是类只是一个定义,需要用类作为模板进行实例化出具体的实例对象,这个实例对象就是内存中的空间。...实例对象的地址是不确定,所以静态对象无法直接访问非静态实例对象。[王清培版权所有,转载请给出署名] 我想上面的两句话对初学者来说可能还是不能起到理解作用,我们还是来画个图比较形象。...这样引发出两个问题:1.为什么在实例类中可以包含静态对象?2.为什么在静态类中不能包含实例对象?...但是反过来静态对象是不能够包含实例成员的,因为实例成员不确定位置,所以静态类是找不到实例对象的内存地址的。你也许还会问,那么为什么我在实例类中可以定义两种类型的对象,一种实例成员,一种静态成员。...我们都知道在程序中是不能够存在两个相同名称的类的,其实我们完全可以将上图的一个类分解成两个类,一个静态和一个非静态。这样也能够实现相同的效果,但是这样似乎不能满足我们的日常面向对象的开发。
Leo在走访多家实体店后,在工作室过起了真·码农生活,代码与思绪起飞,垃圾和饭盒共舞,一头钻进点餐系统之中。...创业者的头脑发热和“看起来”很认真,并不能清晰对市场动荡的模糊判断,也不能弥补宏观布局的思维缺失,在“小学生”产品问世之后,这场创业也以“失败”作为结局。...01 在不确定中把握能够控制的因素 尼采有句名言:“杀不死我的,只会让我更坚强。”跟这句话有异曲同工之妙的是反脆弱理论:从不确定中获益。...除了技术反脆弱之外,netflix在经营模式上,只有流媒体一种主营业务,20多年来无收购记录,以减少业务的复杂度,专注于用户服务,实现业务反脆弱性;在人才管理上,信奉“苦劳不重要,只care结果”和“忠诚度不重要...一些创业公司为什么一旦融不到资,就寸步难行?这是非常值得深思的问题。
在这篇文章的结尾,你将对KF的工作原理,其背后的想法,为什么需要多个变体以及最常见的变体有一个直观而详细的了解。 状态估计 KF是所谓的状态估计算法的一部分。什么是状态估计?...除此之外,我说过,你需要某种系统知识,你需要了解系统“行为”的模型(稍后会详细介绍),你的模型当然并不完美,因此你将拥有另一个误差。 在KF中,你可以使用高斯分布来处理所有这些不确定性。...另一方面,你根本不喜欢机器人技术,搜索了一下,发现了一个非常基本的运动模型:随机游走(基本上是一个仅由噪声给出运动的粒子)。很明显,你的模型不是很好,不能真正被信任,而你的测量结果却很好。...这相当于说:鉴于我目前对状态的信念,我所拥有的输入以及对系统的了解,我希望我的下一个状态是这样。这是预测步骤。 现在,由于我们还具有输出和测量模型,因此我们实际上可以使用实际测量“校正”预测。...实际中的KF 由于我谈到了很多有关带GPS的移动机器人的内容,因此我就此情况作了简短的演示(如果要使用它,可以在这里找到代码)。机器人的运动是使用单轮模型生成的。
虽然我们知道使用小数据集会导致模型在训练期间快速过拟合,但还有一个经常很少讨论的问题,即模型性能的不确定性问题。在这篇文章中,我将演示如何评估模型性能的不确定性,以及数据集的大小如何影响它。...性能不确定性的出现是因为你在测试集上评估模型,而测试集通常是从初始数据集中随机抽取的样本。...我执行了一些基本的清理工作,例如删除重复项和包含空值的行,选择要素的子集,然后在执行任何建模之前使用多数类的随机欠采样来平衡类。...为了简单起见,我讨论了二元分类器的情况,但这适用于任何模型和任何统计数据集,只需在许多测试集上评估你的模型,记录结果,并计算标准偏差。...重要的是,这表明如果你的数据集只有几百个点,你很可能有很大的不确定性围绕着统计数据,这可能解释为什么你的新模型训练在一个小数据集表现不佳。
读者:为什么这样的代码: a[i] = i++; 不能工作?...子表达式 i++ 有一个副作用 —– 它会改变 i 的值 —– 由于 i 在同一表达式的其它地方被引用, 这会导致无定义的结果, 无从判断该引用(左边的 a[i] 中)是旧值还是新值。...(注意, 尽管在 K&R 中建议这类表达式的行为不确定, 但C标准却强烈声明它是无定义的....读者:使用我的编译器,下面的代码 int i=7; printf("%d\n", i++ *i++); 返回 49?不管按什么顺序计算, 难道不该打印出56吗?...也不能保证变量的更新会在表达式 “完成”之前的某个时刻进行。本例中, 编译器选择使用变量的旧值相乘以后再对二者进行自增运算。
我说我知道这样调用是肯定有问题的,我肯定不会这么用,因为先调用基类构造函数,再调用子类,如果在基类构造函数中调用虚函数,此时虚表还未建立完整,调用子类虚函数肯定有问题,但这样能不能编译就不确定了,感觉可以编译...总结:只要你敢写在简历上,他就敢问,当然一面问的的确够基础,要求写出代码的一定要保证正确,编程习惯也要良好,对输入的指针进行判断,只要的东西最好用图示展示清楚,开放性问题考察时间规划和思维运转,总之不能冷场...又问到图像上的文本识别问题,好吧,结合对图像处理的理解,说了几种方法,也不知道面试官自己懂的多不多。可能也是考察能不能活学活用吧。 7....最后感觉面试官可能有点累了,说话不多,也不提问,在电脑上记录什么,有点尴尬,然后我就说我能不能问个问题,他说可以啊,我就说阿里的共享业务事业部是干啥的,为何它和聚划算啊天猫啊淘宝啊等等业务都有关系,他来了句...说一下你在做项目期间,是怎么和其他人合作的,是负责人还是参与者,你和其他人的职责各是什么,怎么分工。还有要是你需要的代码别人没完成,你是怎么和他处理的。能不能举例说明。
结合我自己的经验,今天就聊聊如何提升技术部的信任值。 为什么要提升信任度? 对于外部来说,我们技术部就是个黑盒子。他们提过来的需求,什么时候做,做成什么样子,什么时候做完,都是不确定的。...为什么做出来的效果总不是我想要的?等等 这种不理解如果不及时处理,很容易让双方变成一个不信任的状态。...这是一个很复杂的问题,基于我的经验,我觉得在提高技术部的信任值时,至少有四个方面是持续去做的。...1、找到机会就给对方讲讲技术部工作上的特性 技术部的工作存在很大的不确定性,需要多个岗位高效协同才能把事情做好,其中一环出了问题,就会影响到整个项目的上线。...虽然你这种回复对方当时会很满意,但基本上不靠谱,”爽约“是毁掉一个部门信任最容易的方式。我们虽然不能避免,但一定要减少。 3、对交付的结果负责 交付结果大家都会,但对结果负责的人很少。
不能人云亦云,我们应该从根上理解它,为什么要这样设计?为什么不走索引? 其实结果对我来说,并不重要,重要的是过程。设计过程或者实现过程,这才是我最关心的。...所以,今天我就从根上给你说一说为什么 like 查询 % 在前为什么不走索引? 例如,看这个例子: ? 说到这个例子,估计很多人会提到最左匹配原则。那么为什么要搞一个最左匹配原则呢?...所以要从左边开始,并且是不能跳过的。SQL 索引也是这样的。 然后,我们再来看标题中的问题。% 在前,就代表,我前面的内容不确定。不确定,我们怎么比较?...在关键字比较的时候,会把字符串转换成 ascll 码,如 abc 变成 97 98 99,然后从左往右一个字符一个字符进行对比。...后面,我再给你们讲讲,为什么说索引的离散型越高越好!
领取专属 10元无门槛券
手把手带您无忧上云