很久就一直在使用Kotlin写项目,说实话到目前为止Kotlin用的是越来越顺手了(心里只能用美滋滋来形容了)。当然这次依然讲的是Kotlin,说下我这次需求开发中自己一些思考和实践。...Kotlin来改造Java中的回调 针对上述Java中的回调写法,估计大部分人转到Kotlin后,估计会做如下处理: 1、如果接口只有一个回调函数可以直接使用lamba表达式实现回调的简写。...区别就在这里,所以在性能方面object对象表达式这种方式会更优一点,但是通过问过一些Kotlin社区的大佬们他们还是更倾向于DSL配置这种写法。...kotlin来撸个自动生成ListenerBuilder的插件吧) 使用过DSL配置回调的小伙伴们有没有觉得写这些代码没有任何技术含量的,且浪费时间, 那么Don't Repeat Yourself从现在开始...有时候当我们在重复性做一些操作的时候,不妨去思考下用什么工具能否把整个流程给自动化。归根结底一句话: Don't Repeat Yourself.
按需内容处理 HTTP客户端可能发送一些协议头来告诉服务端它们已经看过了哪些资源。这在获取网页(使用HTTPGET请求)时非常常见,可以避免发送客户端已经获得的完整数据。...第一个装饰器不知道后面的任何事情,并且可能发送“未修改”的响应,即使第二个装饰器会处理别的事情。condition装饰器同时更使用两个回调函数,来弄清楚哪个是正确的行为。...例如,考虑以下客户端和服务端之间的交互: 客户端请求/foo/。 服务端回复一些带有"abcd1234"ETag的内容。 客户端发送HTTP PUT 请求到 /foo/ 来更新资源。...客户端在接收到412响应之后,发送 GET请求到 /foo/,来在更新之前获取内容的新版本。 重要的事情是,这个例子展示了在所有情况下,ETag和最后修改时间值都采用相同函数计算。...如果一些都执行得非常快,坚持使用中间件在如果视图没有修改的条件下也会使发回客户端的网络流量也会减少。
有时候出于种种目的,我们会用宏来写一些函数。有人称之为宏函数。下面我们来模拟一场面试: 面试官 先来个简单的热热身,用宏实现求两个数最大值。...其实我觉得叫做函数宏可能更准确。因为从偏正短语的文法角度讲,『宏』才是中心词,应该放后面。好了,不上语文课了。 为什么我想强调宏,而不是函数。因为并不是所有带括号的宏,都能当成『函数』使用。...当然这是一个抽象后的问题,大概知道有时候有这样一类需求,不是像三目运算符那样可以一行求值,当成函数用。需要一些额外操作才能出值,这时候怎么变成宏函数呢?...是不是更简洁了。 lamba形式繁多,在无参的时候,可以省略参数列表。另外其实完整版的lamba是连返回值类型也要声明的。但在编译器能正确推导返回值类型的时候,通常我们省略了。...= nullptr) { stg->run(); } 问题就是简化版的lambda,无返回值声明。然而这个lambda内部可能返回两种类型。
我可以简单地说,在某些情况下,解耦系统,更容易更换前端并加快开发阶段是有用的,但我觉得有必要使用无序列表更好地解释。...垂直解决方案:HCMS做一件事。这使得学习和维护变得非常容易。 灵活性:一旦你选择了你的HCMS(无论是本地还是云端),你的开发人员都可以使用他们喜欢的任何语言来实现前端。...对其他auth系统进行身份验证的可能性 可以使用挂钩/事件系统添加业务逻辑的可能性 可以添加自定义端点来管理与数据无关的事件的可能性 可以在插件系统中添加功能的可能性 验证数据的可能性 使用多种协议公开数据...基于此,您可以通过实现lamba来调整系统中的所有内容。每个lambda实例都在运行时发现,并根据lamba类型和事件调用,并将数据上下文传递给它。 下面给出一些lambda示例。...兴趣点 HMCS是解耦架构和避免无用工作的绝佳机会。这可能会带来诸如减少时间和成本等好处,使各方独立。当然,这不是灵丹妙药,您必须了解垂直解决方案是否更方便,或者您的企业登录是否避免你使用它。
这个例子中,10块钱是我给儿子的,就相当于调用函数时传递到参数,让儿子买烟这个事情最终的目标是,让他把烟给你带回来然后给你对么,此时烟就是返回值。...综上所述: 所谓“返回值”,就是程序中函数完成一件事情后,最后给调用者的结果。 (2)带有返回值的函数 想要在函数中把结果返回给调用者,需要在函数中使用return。...result已经保存了add2num的返回值,所以接下来就可以使用了 print(result) (六)4种函数的类型 函数根据有没有参数,有没有返回值,可以相互组合,一共有4种: 无参数,无返回值 无参数...,有没有返回值可以相互组合 定义函数时,是根据实际的功能需求来设计的,所以不同开发人员编写的函数类型各不相同 (七)函数的嵌套调用 def testB(): print('---- testB...(十二)引用 在python中,值是靠引用来传递来的。 我们可以用id()来判断两个变量是否为同一个值的引用。 我们可以将id值理解为那块内存的地址标示。
函数参数和返回值的作用 函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形式 无参数,无返回值 无参数,有返回值 有参数,无返回值 有参数,有返回值 ?...,应用场景如下: 只是单纯地做一件事情,例如 显示菜单 在函数内部 针对全局变量进行操作,例如:新建名片,最终结果 记录在全局变量 中 注意: 如果全局变量的数据类型是一个 可变类型,在函数内部可以使用...函数的返回值 进阶 在程序开发中,有时候,会希望 一个函数执行结束后,告诉调用者一个结果,以便调用者针对具体的结果做后续的处理 返回值 是函数 完成工作后,最后 给调用者的 一个结果 在函数中使用 return...关键字可以返回结果 调用函数一方,可以 使用变量 来 接收 函数的返回结果 问题:一个函数执行后能否返回多个结果?...有时可能需要 一个函数 能够处理的参数 个数 是不确定的,这个时候,就可以使用 多值参数 python 中有 两种 多值参数: 参数名前增加 一个 * 可以接收 元组 参数名前增加 两个 * 可以接收
这里没有特指,也没有嘲讽,更多的是自我反思过后的一些体会,只求写一篇爽文,记录下近期来的一些想法,再过一段时间回来看看,有哪些想法其实还可以再升华。...一些思考 有时候埋头苦干真的可能只是苦干 以前我也是以为只要专心做事就够了,每天上班下班把事情搞定,遇到问题自己埋头解决,加班加点的,看起来好像很努力很励志的样子,但最后发现其实是自我陶醉,一年下来好像做了很多事情...道理2:别人的挑战或者别人的提问其实是能更好帮助自己去加深思考的,别人可能会从更多维的角度去看待你所做的事情,让你做的这个事情更全面一些,而不是单点思考。...那怎么衡量你做的事情产生了多大的价值呢,那就得用数据证明,那么日常工作中就得思考: 为什么要做这件事情,为什么必须由你来做,你做这件事情有什么优势,你希望从这个事情得到什么(价值思考) 做这个事情之前是怎么样的...经常会被一些猎头骚扰,会问最近有没有看外面的机会,每次我都回一句,暂时不考虑。
(3)对象式的组件声明方式vue2.x 中的组件是通过声明的方式传入一系列 option,和 TypeScript 的结合需要通过一些装饰器的方式来做,虽然能实现功能,但是比较麻烦。...其实当代码的功能复杂之后,必须有一个静态类型系统来做一些辅助管理。现在 vue3.0 也全面改用 TypeScript 来重写了,更是使得对外暴露的 api 更容易结合 TypeScript。...,immediate 三个属性**; (3)监听是一个过程,在监听的值变化时,可以触发一个回调,并**做一些其他事情**。...是用来函数劫持的方式,重写了数组方法,具体呢就是更改了数组的原型,更改成自己的,用户调数组的一些方法的时候,走的就是自己的方法,然后通知视图去更新。...key 是给每一个 vnode 的唯一 id,依靠 key,我们的 diff 操作可以更准确、更快速 (对于简单列表页渲染来说 diff 节点也更快,但会产生一些隐藏的副作用,比如可能不会产生过渡效果,
前言 大多数的编程语言都是足够开放的,允许程序员用多种方式来做类似的结果。 JavaScript也不例外。...对于JavaScript,我们经常会发现,为了一个相似的结果,我们可以用多种方式来做事情,这有时会让人感到困惑。 有些用法比其他替代方法更好。 你如何改变你的JS代码,让它更简单,更容易阅读?...->promise 为了让事情变得更干净、更高效,你可以将回调(ourCallbackFn)转化为承诺是一个函数。...在调用函数时,你可以为这些参数传值,也可以不传值。如果你不为param传值,它将是未定义的,可能会引起一些不必要的副作用。 在定义函数参数时,有一种简单的方法可以将默认值传递给函数参数。...let [fire, clock, , watermelon] = emojis; 这和做,让火=表情符号[0]是一样的;但多了很多灵活性。 你有没有注意到,我只是用中间的空位忽略了奖杯表情?
我们所谓的「回退」到历史记录,随时查看更改了什么地方,利用这个功能可以做的事情简直太多啦!...想想看,用 git 的分支管理不比拷贝粘贴更方便吗? 3、健身 有个哥们为了激励自己健身把每日计划都放上去了,还可以邀请其他人一起来相互监督!...· GitHub 就是国内一个自发组织起来的团队,30多个人用9天时间即将翻译和校对工作全部完成,他们每人都还有自己的事情,上班、上线、创业,这么大的工作量在以往简直是不可能完成的任务!...甚至专门有一个项目就是自动根据你的 GtiHub 公开项目创建个人简历: 我们可以使用 Git 以及 GitHub 做哪些事情?...- Kane Blueriver 的回答 10、设计资源库(重点来了!!!) 做 ppt 不知道到哪里去找高质量美图? 最近半年初入设计圈,收集了不少 bookmark 想在年底来一个总结。
如果觉得上面我说的不够清楚,可以这么来理解:有压缩功能的二进制算法都是有代价的,代价就是需要遵循一定规则,升级很可能会打破这个规则,造成错误。...最冤枉的是原来的代码本来问题也不大,只是风格不符合代码评审人员的习惯。结果评审人员非要编码人员改了,结果没改全出现了问题。虽然有一些手段进行规避,比如单元测试。但是修改的代价还是很高。...我在进行代码评审的时候,第一件事是确认代码编写人员的修改范围,看看这个修改范围我之前有没有对逻辑做细致的梳理。如果没有梳理过,那我先梳理一遍,照着梳理的内容进行评审。...最可怕的是评审出来问题后,评审人让写代码者改什么,写代码者就是无脑照办。评审人很可能由于使用脑补细节有疏漏,造成问题。...后来我想明白了:就像99%的时间会花在线上只有1%几率出现的问题一样。多囫囵吞枣的做事情并不多花多少时间,而想把质量提高一些,做的更好一些,却是更难的事。
基于我的理解,如果一个Python函数能够符合下面的大部分条件,我会认为它是一个“好”函数: 命名合理 单一功能 包括文档字符串 返回一个值 不超过50行 是幂等函数或纯函数 对许多人来说,这些要求可能显得过于苛刻了...这种处理方式,不仅能让测试函数更容易,并且还允许这两个部分有了迁移性,如果合适的话,还可能一起应用到不同的模块中。 在编程中,你会发现好多函数都可以做很多很多事情。...如果你不能写一个清晰的文档字符串来描述函数做什么,就说明你需要再考虑考虑为什么要写这个函数了。 返回值 函数可以被认为是一些独立的程序。它们以参数的形式接受一些输入,并返回一些结果。...参数有没有都可以,但从Python内部的角度来看,返回值是必须要有的。你不可能创建一个没有返回值的函数。如果函数没有返回值,Python会“强制”返回None。...其次,即使这样做不可行,复制某个参数的成本太高,你也可以回到上一条建议。 “我需要返回多个值。单独返回一个值是没有意义的。” 可以使用元组返回多个值。
这种处理方式,不仅能让测试函数更容易,并且还允许这两个部分有了迁移性,如果合适的话,还可能一起应用到不同的模块中。 在编程中,你会发现好多函数都可以做很多很多事情。...如果你不能写一个清晰的文档字符串来描述函数做什么,就说明你需要再考虑考虑为什么要写这个函数了。 4. 返回值 函数可以被认为是一些独立的程序。它们以参数的形式接受一些输入,并返回一些结果。...参数有没有都可以,但从 Python 内部的角度来看,返回值是必须要有的。你不可能创建一个没有返回值的函数。如果函数没有返回值,Python 会“强制”返回 None。...当给定函数没有返回值时,有一些常见的原因: “它所做的只是[一些与 I/O 相关的事情,比如将一个值保存到数据库中]。我不能返回任何有用的东西。” 我不同意。...其次,即使这样做不可行,复制某个参数的成本太高,你也可以回到上一条建议。 “我需要返回多个值。单独返回一个值是没有意义的。” 可以使用元组返回多个值。
做积极向上的前端人! 前言 大多数的编程语言都是足够开放的,允许程序员用多种方式来做类似的结果。 JavaScript也不例外。...对于JavaScript,我们经常会发现,为了一个相似的结果,我们可以用多种方式来做事情,这有时会让人感到困惑。 有些用法比其他替代方法更好。 你如何改变你的JS代码,让它更简单,更容易阅读?...->promise 为了让事情变得更干净、更高效,你可以将回调(ourCallbackFn)转化为承诺是一个函数。...在调用函数时,你可以为这些参数传值,也可以不传值。如果你不为param传值,它将是未定义的,可能会引起一些不必要的副作用。 在定义函数参数时,有一种简单的方法可以将默认值传递给函数参数。...let [fire, clock, , watermelon] = emojis; 这和做,让火=表情符号[0]是一样的;但多了很多灵活性。 你有没有注意到,我只是用中间的空位忽略了奖杯表情?
那些带有文字的线段(一般使用有箭头的有向线段),线的一端连的是中间节点、另一端连的是另一个中间节点或叶节点,然后线段上还有文字,它叫做边。 到这里,你可能已经看出来了。...最后的叶节点又是怎样确认的?到什么程度呢? 我们怎样把这个事弄的更细致,能够让计算机来实现。 02 — 算法描述 从01中的描述知道,决策树从根节点到叶节点,越往下,最后那个因变量的取值越单一。...也就是说,越往下的节点它因变量取某一个值的可能性越大,到达叶节点的时候这个可能性达到最大。...内部节点的每个属性值都会引出一条边来,那到底哪个好呢?这里要引入一个叫“信息增益“的概念。 信息增益这个事可以用一大堆公式来说明,也可以先有个感性的认识。...相对应的晴天、阴天、雨天的后验熵 ? 那知道天气情况后校运会的条件熵为: ? 那么相对应的在有没有天气情况这个条件前后的信息增益就是: ?
编程是一个很有趣、容易的事情,但是编写好的程序可能是一项艰巨的任务。...这样的情况或许会降低我们的信心,但事实上,我们可以通过适当的发展实践来解决。这里有7个值得的习惯,用更少的努力来投入更干净,更智能的代码。现在开始研究这些习惯!...使用一些简单的标签键,您可以清楚地了解整个代码结构并编辑代码,并清楚了解它们的功能。对于换行符,当同一行上的2个代码执行不同的事情时使用它。...例如,最好不要在一行中链接CSS属性 – 这会使事情变得复杂。 组织与代码结构的使用 除了更清晰的代码之外,代码的结构、组织也有助于可读性问题。...只要有可能,请确保该语言只能达到特定目的。如果您使用CSS3编写动画效果,请避免编写jQuery动画效果,除非您有足够的理由。如果你这样做,在CSS文件中注释有关异常。
概率论给我们搭建了一个大的框架来进行上述的决策,而通过这么做, 我们能做出更有效的决策。...相反的,它有一组可能的取值,也称作样本空间,以及这组里的每一个取值可能发生的概率是通过这样表示的。它们既可以是离散的,只表示一定数量的值,也可以是连续的,能够取到一定范围内的任何值。...假设现在有两件可能发生的事情 A和B,比如,我们抛一枚硬币,以及掷一枚六面的骰子。我们可以用三种方式来衡量它们的可能性,即当硬币是正面时,骰子是4的概率,这便是条件概率。...贝叶斯统计 在机器学习中我们做了很多类似的假设,有些时候它们是错的(一家公司),现在十分流行使用贝叶斯定理,它构建于条件概率的原理之上。 它之所以被称为定理,是因为我们可以通过逻辑来证明它的真实性。...总结一下,概率论将有助于我们正式地将生活中的不确定因素用模型建立出来,这简直太棒啦,贝叶斯定律描述一件事情的概率是基于,之前所有可能和这个事件相关的条件,朴素贝叶斯分类器,将带有独立性假设的贝叶斯定律应用于各种特征之中
不过,如果把命令名字改了,效果也许会更好。因为在Linux上,kill根本就不是杀死的意思。 它只是想要给进程发送一个信号而已。使用kill -l可以看到长长的信号列表。 ?...大家都知道电视剧里,重要人物临死的时候,会啰啰嗦嗦说很多话,话说不完是不会死的。无论是武林高手,还是达官贵人,都得交代一些能让故事情节继续发展下去的废话。...《水浒传》里的“英雄们”,来的就相对直接一些。看的不爽,直接单刀直入切中要害,不允许他人有一丁点的废话,通常情况下直接嗝屁。...但有时候kill -15并不能杀死进程,这个时候,才是kill -9需要出场的时候。 听够了15临死前说的一些废话,使用9要它的命。 一般的,需要使用kill -15去尝试杀死进程。...kill的默认信号值,就是15,可以说是很贴心了。但还是有很多人使用9。 我想了半天原因,就是一个字:懒。 kill -15需要多次确认,而kill -9一次完事,多数情况下不会出事。
领取专属 10元无门槛券
手把手带您无忧上云