首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

增加了一行代码,让我们提高了3000%的性能

项目地址:https://github.com/YunaiV/ruoyi-vue-pro 认知改变时刻 在某次事件中,用户增加了对我们应用的使用率,导致我们应用的数据流量大幅增加。...最终,我们的一个 TeamLeader 发现,pod 的存活探针在做一次简单的 DB 心跳请求之后没有释放 DB 连接。随后,我们立即在 pod 存活探针的请求中增加了一行用于释放 DB 连接的代码。...结论四:每一行代码都很重要 有时,当我们在编写代码的时候,我们可能会忘记这些代码最终运行将在生产环境中,并为一个真实用户的真实工作服务。...上面提到的我们亲身经历的案例中,仅仅只是因为程序员忘记了释放 DB 连接(一行代码而已),就可以干扰一个用户的正常工作(那些工作受影响的用户估计很不愿意给我们付钱)。...提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。 获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。 文章有帮助的话,在看,转发吧。

33840

增加了一行代码,让我们提高了3000%的性能

认知改变时刻 在某次事件中,用户增加了对我们应用的使用率,导致我们应用的数据流量大幅增加。在此事件过程中,用户抱怨我们的应用性能实在太差,以至于无法在应用上完成全套的业务流程。...最终,我们的一个 TeamLeader 发现,pod 的存活探针在做一次简单的 DB 心跳请求之后没有释放 DB 连接。随后,我们立即在 pod 存活探针的请求中增加了一行用于释放 DB 连接的代码。...结论四:每一行代码都很重要 有时,当我们在编写代码的时候,我们可能会忘记这些代码最终运行将在生产环境中,并为一个真实用户的真实工作服务。...上面提到的我们亲身经历的案例中,仅仅只是因为程序员忘记了释放 DB 连接(一行代码而已),就可以干扰一个用户的正常工作(那些工作受影响的用户估计很不愿意给我们付钱)。...我的建议是: 想象一下(虽然很难),在世界的另一端,某个用户的工作完全依赖你编写的代码,同时试想一下,你写的每一行代码都将影响其使用应用的体验。 在 CI 或者 CD 环节执行负载测试。

30530
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    远程备份Bug:你黑压压几十行,大神只轻轻加了一个点,高下立辨!

    引言 同样一个需求,不同阶段的开发者,所使用的工具和解决思路也不尽相同。 菜鸟程序员不断采坑,一步步总结自己的教训,不断升级,学会最优的解决方案,这是成长。...今天我们说一个“文件备份”的案例,看看初级程序员,和高级程序员,到底差距在哪里! ?...可是,我无法预先知道这一点,也无法预先删除 server2 上的 dir2。 一个初级的方案 上面的问题,这位小哥给出了一个粗略的脚本用于实现,并且运行起来似乎正常: #!...实现的方式很冗余,且没有什么安全性,可靠性。 这个解决方案肯定不是最优解,只是出现问题,临时打上的一个补丁,不是长久之计,也没有真正解决疑惑。...scp -prq server1:dir1/. server2:dir2/ 没错,大神给出的就是这一行,只是加了一个点! 这会复制该目录的内容,而不是目录本身,而且比 * 号更为便捷。

    33450

    PQ-M及函数:为什么加了新的内容,拆分列不对了?

    :返回最后一个要查找字符(“-”)的位置; List.Count对返回的所有位置进行计数,即得到有多少个“-”,再加1就是内容项数。...不记得的话回去看看文章《PQ-M及函数:重要!很重要!非常重要!理解PQ里的数据结构之二、行列引用》)的最大值,得到最多可能分出的内容数。...然后用Text.From转为文本(因为列名必须是文本) 最后用构造列表的方法去得到动态的字段名序列。 小勤:啊。理解了,反正就是想办法根据内容的最大项数构造一个动态的列名列表给拆分列的步骤去用。...大海:那需要进一步使用其他的函数,先提供个思路给你,比如可以先直接生成数字序列【{1..List.Max()}】,然后将数字序列转换为文本序列【List.Transform】,你自己查文档试试?...大海:随着慢慢理解PQ的操作和M语言及函数的用法,一定要学会自己查文档解决问题,才可能更加快速的提升。 小勤:好的。师父领进门,修行在个人嘛。

    53820

    【开源】QuickPager ASP.NET2.0分页控件V2.0.0.7 增加了一个js函数的分页方式。

    昨天在csdn上看到一个人提出来了一种分页的需求,大致是分页控件只负责绘制总页数、上一页、下一页等信息,然后在用户翻页的时候可以触发一个js函数,然后自己实现这个js函数。...并不需要提交表单,他想用ajax的方式来获取数据,但是又不想使用微软的ajax。      大概的需求就是这样的(至少我的理解是这样的),不知道吴旗娃的分页控件是不是支持这种需求。...想了一下,比较简单,只要继承PageUI类,写一个UI_JS子类,在这个子类里面override几个函数就可以了。好先试一下。大约半个小时之后,ok。达到了自己想要的目的。      ...分页控件在这种方式下负责的事情:绘制总记录数,总页数,第几页,首页,末页,上一页,下一页,还有在翻页的时候触发一个js函数,不会触发表单提交。...然后需要在aspx页面里面写一个js函数来实现提取数据的代码,这个就要自己实现了。

    85190

    Excel公式技巧05: IFERROR函数,从结果中剔除不需要的值

    学习Excel技术,关注微信公众号: excelperfect 在使用公式时,我们经常遇到将某个值从结果数组中剔除,然后将该数组传递给另一个函数的情形。...然而,如果指定该参数的值为14-19,那么可以先操作任何单元格区域,也可以使用来源于AGGREGATE函数里的其他函数生成的数组、或者常量数组,这些都不是指定其值为1-13所能够处理的。)...然而,有时包含0的数组不是一个简单的工作表单元格区域而是由函数通过计算生成的数组。...[a_very_long_formula],"") 下面用一个例子来说明,如下图1所示: ?...并且,这样的公式对于很小的数据量来说可能算不了什么,但是如果数据量很大且有很多相同的公式,将公式的主要部分计算两次将占用双倍的资源。如果有一个与IFERROR函数类似的IFZERO函数就好了!

    5.9K20

    一个函数的自白

    尾调用是指一个函数里的最后一个动作是一个函数调用,即在函数尾部发生的递归调用。...尾递归即在函数尾部发生的递归调用,尾递归发生时,程序语言的处理器可以安全地删除先前的栈记录,因为该调用返回时栈中不需要继续其他操作,这就是尾递归优化,尾递归优化有效地将递归函数转为迭代,节省了时间和内存...一般地,函数间的调用是显式的,即一个函数执行完毕在执行下一个函数。...但有这样一种使用场景,一个函数有一个额外的参数,通常是最后一个,这一参数是另一个函数,在函数执行到末尾的时候,作为参数的函数也会被调用。...在C/C++中,回调函数就是一个通过函数指针调用的函数,把函数的指针(地址)作为参数传递给另一个函数,用这个指针来调用其所指向的函数。回调函数一般使用通知机制。

    77250

    PQ-M及函数:如何按某列数据筛选出一个表里最大的行?

    关于筛选出最大行的问题,通常有两种情况,即: 1、最大行(按年龄)没有重复,比如这样: 2、最大行(按年龄)有重复,比如这样: 对于第1种情况,要筛选出来比较简单...,直接用Table.Max函数即可(得到的是一个记录,也体现了其结果的唯一性),如下图所示: 对于第2种情况,可以考虑用Table.SelectRows函数来进行筛选,即筛选出年龄等于源表...(数据导入Power Query后做了类型更改,产生了”更改的类型“步骤)中最大值(通过List.Max函数取得,主要其引用的是源表中的年龄列)的内容: 当然,第2种情况其实是适用于第1...种情况的。...这也是为什么说——Table.SelectRows这个函数非常常用,其可使用的场景非常的多。

    2.7K20

    行上下文筛选函数Earlier的含义及用法

    (相当于固定一个之前层级的数值) E. 案例 ? 我们要添加一列上一天的金额。在Excel里面我们很容易,直接相对引用上一行的金额单元格就可以。...这时就需要我们使用到表的层级的概念。 我们知道Power Pivot的计算原则,是以筛选作为计算基础。 步骤: 因为我们知道在Power Pivot中是不存在单元格的概念,只有表和列的概念。...Filter('表1','表1'[时间]='表1'[时间]-1)但是如果是这样的表达式肯定是不会筛选出结果的,所以这里涉及到2个表,一个是当前表,一个是之前表,之前表我们就需要用EARLIER来体现。...Filter('表1','表1'[时间]=Earliter('表1'[时间])-1)))每一行都会执行这个公式来进行比较。...其次:我们要针对这个表进行取值,我们需要的是金额这一列的数字,因为我们每天只有一条数据,我们可使用任意的取值公式。这里我们用最简单的sum,min,max等函数进行取值。

    1.7K10

    一个有味道的函数

    一个有味道的函数 最近想到了一个自认为很有意思的面试题 如何实现一个compose函数。 函数接收数个参数,参数均为Function类型,右侧函数的执行结果将作为左侧函数执行的参数来调用。...1.0实现方案 大致的思路为: 获取所有的参数 调用最后一个函数,并接收返回值 如果没有后续的函数,返回数据,如果有,将返回值放入下一个函数中执行 所以这种情况用递归来实现会比较清晰一些 function...我们之前的代码只能支持普通函数的处理,现在因为添加了Promise对象的原因,所以我们要进行如下修改: 首先,异步函数改为同步函数是不存在的readFile/readFileSync这类除外。...(func(arg, arg => exec(arg))) 也就是说,我们会提前执行下一个函数,而且下一个函数的then事件注册是在我们当前函数内部的,当我们拿到返回值后,就可以进行后续的处理了。...而我们所有的函数是存放在一个队列里的,在我们提前执行完毕该函数后,后续的执行也就不会再出现了。避免了一个函数被重复执行的问题。

    54230

    写一个resample的函数

    之前因为需要自己写了一个resample的函数。 因为传统实现resample的方法好像没有做迭代,只会重抽一次。这就导致了每次重抽会有一些差别。于是我加入了迭代。...懒得写成独立的函数了,就这样放出来,可以看到我每一步的想法。 思路是对于每个样本,先将每一个OTU和其对应的序列数相乘,从这个结果中进行重抽,并加入迭代。...虽然用了几种方法提高速度:并行;提前建好最后的数据框;利用foreach;每次循环清空内存。 但是本身方法比较笨,算得特别慢,加入迭代之后就更慢了。不推荐平时使用。但是需要迭代的时候可以试试。...function(x){mean(as.numeric(as.vector(x)))} 41 mean_read = apply(total.summary,2,f) #对1000次迭代的结果取平均后再取整作为最后结果

    75621

    一个有味道的函数

    一个有味道的函数 最近想到了一个自认为很有意思的面试题 如何实现一个compose函数。...1.0实现方案 大致的思路为: 获取所有的参数 调用最后一个函数,并接收返回值 如果没有后续的函数,返回数据,如果有,将返回值放入下一个函数中执行 所以这种情况用递归来实现会比较清晰一些 function...我们之前的代码只能支持普通函数的处理,现在因为添加了Promise对象的原因,所以我们要进行如下修改: 首先,异步函数改为同步函数是不存在的readFile/readFileSync这类除外。...(func(arg, arg => exec(arg))) 也就是说,我们会提前执行下一个函数,而且下一个函数的then事件注册是在我们当前函数内部的,当我们拿到返回值后,就可以进行后续的处理了。...而我们所有的函数是存放在一个队列里的,在我们提前执行完毕该函数后,后续的执行也就不会再出现了。避免了一个函数被重复执行的问题。

    657120

    一个52000+行代码文件给我的启示

    万行全部写在一个 TS 文件里,而文件大小则达到了惊人的 2.92 MB —— 这相当有趣,为什么?...00.五万行 all-in-one 的 checker.ts 这个文件很暴力,类型系统全部逻辑 5 万行 all-in-one file ,是 TS 源码维护者不会写代码吗?...01.低配版 named parameters 众所周知,JS 各种规范都推荐你用一个对象来传递多个参数,然后在函数里解构 —— 多数时候这没什么,但是在 TS compiler 里,任何浪费都会被极限放大...毕竟五万行呢。。。...08.无类编程,推崇组合编程 checker.ts 几万行核心逻辑几乎没有 class 和继承,完全通过函数组合的方式来架构代码,整体看着像是有 rust impl 关键字的 TS 那样: 代码里大部分函数都是上面这种风格

    247.3K10

    一个只有135行源码的插件!

    问题 我们是不是会遇到这样的场景: 当访问一个图片展示比较多的网页时,页面加载速度很慢,尤其是其中的图片半天转不出个所以然来 很多时候,这是因为图片多导致的:大量的img图片导致页面渲染的堵塞。...因此,网页中图片的处理不可大意,尤其是图片很多的时候! 解决 遥想当年,为了解决这个问题,自己抄起键盘一个劲儿的疯狂输出,最终勉强解决了问题。...正在为自己的成就欣喜若狂的时候,发现“图片懒加载”的轮子早就有啦~ 了不起翻了翻相关的插件!Echo.js是最为简单明了,杠杠的好!这里分享给大家。...Echo.js Echo.js 是一个独立的延迟加载图片的 JavaScript 插件。Echo.js 不依赖第三方库,压缩后不到1KB大小。 GitHub上翻了下源码,打开一看,共计135行!...Echo.js中,通过计算,当图片元素进入窗口可视区域的时候,它就会改变图像的 src 属性,从服务端加载所需的图片。 Sorry,画图不是我的强项。 但这不影响我们的理解。

    16130

    VBA实战技巧09: 一个仅对满足条件的可见行求平均值的自定义函数

    excelperfect 对满足条件的值求平均值,一般我们会使用AVERAGEIF函数,如下图1所示。 ?...图1 如果隐藏了某些行,AVERAGEIF函数仍会对所有行中满足条件的值求平均值,并不会受到隐藏行的影响,如下图2所示。 ? 图2 如果我们只想对满足条件的可见行求平均值,怎么办呢?...最简单的方法就是使用VBA自定义一个函数,如下面的代码: Function AVERAGEIfVISIBLE(range As range, criteria, average_range As range...,像Excel内置函数一样,求可见行满足条件的值的平均值,如下图3所示。...图3 我们的自定义函数AVERAGEIfVISIBLE模仿了内置的AVERAGEIF函数,都是使用3个参数,且参数的作用相同,即: 参数range代表查找是否满足条件的单元格区域。

    1.5K10

    一个Sqrt函数引发的血案

    这种算法的原理很简单,我们仅仅是不断用(x,f(x))的切线来逼近方程x^2-a=0的根。根号a实际上就是x^2-a=0的一个正实根,这个函数的导数是2x。...也就是说,函数上任一点(x,f(x))处的切线斜率是2x。那么,x-f(x)/(2x)就是一个比x更接近的近似值。...这次真的是质变了,结果竟然比系统的还要好。。。哥真的是震惊了!!!哥吐血了!!!一个函数引发了血案!!!血案,血案。。。 到现在你是不是还不明白那个“鬼函数”,到底为什么速度那么快吗?...没错,一般的求平方根都是这么循环迭代算的但是卡马克(quake3作者)真正牛B的地方是他选择了一个神秘的常数0x5f3759df 来计算那个猜测值,就是我们加注释的那一行,那一行算出的值非常接近1/sqrt...最后Lomont怒了,采用暴力方法一个数字一个数字试过来,终于找到一个比卡马克数字要好上那么一丁点的数字,虽然实际上这两个数字所产生的结果非常近似,这个暴力得出的数字是0x5f375a86。

    1.2K50
    领券