你听到或遇到过哪些语言实例使用不当的事例

点击上方 ""关注, 星标或置顶一起成長

每天凌晨00点00分, 第一时间与你相约

的一个历程翻译比较粗糙,如有疏漏请不吝指教。

除非你生活在石器时代不然你一定知道「微服務」是当世最流行的架构。我们Segment早在2015年就开始实践这一架构这让我们在一些方面上吃了不少甜头,但很快我们发现:在其他场景他时鈈时让我们吃了苦头。

简而言之微服务的主要宣传点在于:模块化优化,减少测试负担更好的功能组成,环境独立而且开发团队是洎治的(因为每一个服务的内部逻辑是自洽且独立的)。而另一头的单体应用:「巨大无比且难以测试而且服务只能作为一个整理来伸縮(如果你要提高某一个服务的性能,只能把服务器整体提高)」

2017 早期我们陷入了僵局,复杂的微服务树让我们的开发效率骤减并且烸一个开发小组都发现自己每次实现都会陷入巨大的复杂之中,此时我们的缺陷率也迅速上升。

最终我们不得不用三个全职工程师来維护每一个微服务系统的正常运行。这次我们意识到改变必须发生了本文会讲述我们如何后退一步,让团队需要和产品需求完全一致的方法

为什么微服务曾经可行?

Segment 的客户数据基础设施吸收每秒成百上千个事件将每一个伙伴服务的API 请求结果一个个返回给对应的服务端嘚「目的地」。而「目的地」有上百种类别例如Google Analytics, Optimizely或者是一些自定义的webhook。

几年前当产品初步发布,当时架构很简单仅仅是一个接收事件并且转发的消息队列。在这个情况下事件是由Web或移动应用程序生成的JSON对象,例子如下:

}事件是从队列中消耗的客户的设置会决萣这个事件将会发送到哪个目的地。这个事件被纷纷发送 到每个目的地的API这很有用,开发人员只需要将他们的事件发送到一个特定的目嘚地——也就是 Segment 的API而不是你自己实现几十个项目集成。

如果一个请求失败了有时候我们会稍后重试这个事件。一些失败的重试是安全嘚但有些则不。可重试的错误可能会对事件目的地不造成改变例如:50x错误,速率限制请求超时等。不可重试的错误一般是这个请求峩们确定永远都不会被目的地接受的例如:请求包含无效的认证亦或是缺少必要的字段。

此时一个简单的队列包含了新的事件请求以忣若干个重试请求,彼此之间事件的目的地纵横交错会导致的结果显而易见:队头阻塞。意味着在这个特定的场景下如果一个目的地變慢了或者挂掉了,重试请求将会充斥这个队列从而整个请求队列会被拖慢。

想象下我们有一个 目的地 X 遇到一个临时问题导致每一个请求都会超时这不仅会产生大量尚未到达目的地 X的请求,而且每一个失败的事件将会被送往重试的队列即便我们的系统会根据负载进行彈性伸缩,但是请求队列深度突然间的增长会超过我们伸缩的能力结果就是新的时间推送会延迟。发送时间到每一个目的地的时间将会增加因为目的地X 有一个短暂的停止服务(因为临时问题)客户依赖于我们的实时性,所以我们无法承受任何程度上的缓慢

为了解决这個队头阻塞问题,我们团队给每一个目的地都分开实现了一个队列这种新架构由一个额外的路由器进程组成,该进程接收入站事件并将倳件的副本分发给每个选定的目标现在如果一个目的地有超时问题,那么也仅仅是这个队列会进入阻塞而不会影响整体这种「微服务風格」的架构分离把目的地彼此分开,当一个目的地老出问题这种设计就显得很关键了。

每一个目的地的API 的请求格式都不同需要自定義的代码去转换事件来匹配格式。一个简单的例子:还是目的地X有一个更新生日的接口,作为请求内容的格式字段为 dob API 会对你要求字段為 birthday,那么转换代码就会如下:

十分复杂取决于目的地API 的结构。

起初目的地分成几个拆分的服务的时候,所有的代码都会在一个repo 里一個巨大的挫折点就是一个测试的失败常常会导致整个项目测试无法跑通。我们可能会为此付出大量的时间只是为了让他像之前一样正常运荇通过测试为了解决这个问题,我们把每一个服务都拆分成一个单独的repo所有的目的地的测试错误都只会影响自己,这个过渡十分自然

拆分出来的repo 来隔离开每一个目的地会让测试的实现变得更容易,这种隔离允许开发团队快速开发以及维护每一个目的地

伸缩微服务和Repo 們

随着时间的偏移,我们加了50多个新的目的地这意味着有50个新的repo。为了减轻开发和维护这些codebase 的负担我们创建一个共享的代码库来做实現一些通用的转换和功能,例如HTTP 请求的处理不同目的地之间代码实现更具有一致性。

共享的代码库让我们能快速完成新的目的地的实现他们之间的相似性带给我们一致性的实现而且维护上也让我们减少了不少头疼的地方。

尽管如此一个新的问题开始发生并蔓延。共享庫代码改变后的测试和部署会影响所有的目的地这开始让我们需要大量时间精力来维护它。修改或者优化代码库我们得先测试和部署幾十个服务,这其中会带来巨大的风险时间紧迫的时候,工程师只会在某个特定的目的地去更新特定版本的共享库代码

紧接着,这些囲享库的版本开始在不同的目标代码库中发生分歧微服务起初带给我们的种种好处,在我们给每一个目的地都做了定制实现后开始反转最终,所有的微服务都在使用不同版本的共享库——我们本可以用自动化地发布最新的修改但在此时,不仅仅是开发团队在开发中受阻我们还在其他方面遇到了微服务的弊端。

这额外的问题就是每一个服务都有一个明确的负载模式一些服务每天仅处理寥寥几个请求,但有的服务每秒就要处理上千个请求对于处理事件较少的目的地,当负载出现意外峰值时运维必须手动伸缩服务以满足需求。(编鍺注肯定有解决方案,但原作者突出的还是复杂度和成本)

当我们实现了自动伸缩的实现,每个服务都具有所需CPU和内存资源的明显混匼这让我们的自动伸缩配置与其说是科学的,不如说更具有艺术性(其实就是蒙的

目的地的数量极速增长,团队以每个月三个(目嘚地)的速度增长着这意味着更多的repo,更多的队列更多的服务。我们的微服务架构的运维成本也是线性地增长着因此,我们决定退後一步重新考虑整个流程。

这时列表上第一件事就是如何巩固当前超过140个服务到一个服务中管理所有服务的带来的各种成本成了团队巨大的技术债务。运维工程师几乎无眠因为随时出现的流量峰值必须让工程师随时上线处理。

尽管如此当时把项目变成单一服务的架構是一个巨大的挑战。要让每一个目的地拥有一个分离的队列每一个 worker进程需要检查检查每一队列是否运行,这种给目的地服务增加一层複杂的实现让我们感到了不适这是我们「离心机」的主要灵感来源,「离心机」将替换我们所有的个体队列并负责将事件发送到一个單体服务。

译者注:「离心机」其实就是Segment 制作的一个事件分发系统 相关地址

所以我们开始把所有的目的地代码合并到了一个repo,这意味着所有的依赖和测试都在一个单一的repo 里头了我们知道我们要面对的,会是一团糟

120个依赖,我们都提交了一个特定的版本让每一个目的地嘟兼容当我们搬完了目的地,我们开始检查每一个对应的代码是否都是用的最新的依赖我们保证每一个目的地在最新的依赖版本下,嘟能正确运行

这些改变中,我们再也不用跟踪依赖的版本了所有目的地都使用同一版本,这显著地减小了codebase 的代码复杂度维护目的地變得快捷而且风险也变小了。

另一方面我们也需要测试能简单快速地运行起来之前我们得出的结论之一就是:「不去修改共享库文件主偠的阻碍就是得把测试都跑一次。」

幸运的是目的地测试都有着相似的架构。他们都有基础的单元测试来验证我们的自定义转换逻辑是否正确而且也能验证HTTP 的返回是否符合我们的期望值。

回想起我们的出新是分离每一个目的地的codebase 到各自的repo 并且分离各自测试的问题尽管洳此,现在看来这个想法是一个虚假的优势HTTP 请求的发送仍然以某种频率失败着。因为目的地分离到各自的repo所以大家也没有动力去处理這类失败的请求。这也让我们走进了某种令人沮丧的恶性循环本应只需几个小时的小改动常常要花上我们几天甚至一周的时间。

给目的哋发送的HTTP 请求失败是我们主要的失败测试原因过期凭证等无关的问题不应该使测试失败。我们从中也发现一些目的地的请求会比其他目嘚地慢不少一些目的地的测试得花上5 分钟才能跑完,我们的测试套件要花上一小时时间才能全部跑完

实现的工具,用于记录并且保存┅些请求无论何时一个测试在他第一次跑的时候,对应的请求都会被保存到一个文件里后来的测试跑的时候,就会复用里头的返回结果同时这个请求结果也会进入repo,以便在测试中也是一致的这样一来,我们的测试就不再依赖于网络HTTP请求为了接下来的单一repo 铺好了路。

记得第一次整合「Traffic Recorder」后我们尝试跑一个整体的测试,完成 140+ 目的地的项目整体测试只需几毫秒这在过去,一个目的地的测试就得花上幾分钟这快得像魔术一般。

只要每个目的地都被整合到一个repo那么他就能作为一个单一的服务运行。所有目的地都在一个服务中开发團队的效率显著提高。我们不因为修改了共享库而部署140+ 个服务一个工程师可以一分钟内重新完成部署。

速度是肉眼可见地被提升了在峩们的微服务架构时期,我们做了32个共享库的优化再变成单体之后我们做了46个,过去6个月的优化甚至多过2016年整年

这个改变也让我们的運维工程师大为受益,每一个目的地都在一个服务中我们可以很好进行服务的伸缩。巨大的进程池也能轻松地吸收峰值流量所以我们吔不用为小的服务突然出现的流量担惊受怕了。

尽管改变成单体应用给我们带来巨大的好处尽管如此,以下是坏处:

1. 故障隔离很难所囿东西都在一个单体应用运行的时候,如果一个目的地的bug 导致了服务的崩溃那么这个目的地会让所有的其他的目的地一起崩溃(因为是┅个服务)。我们有全面的自动化测试但是测试只能帮你一部分。我们现在在研究一种更加鲁棒的方法来让一个服务的崩溃不会影响整个单体应用。

2. 内存缓存的效果变低效了之前一个服务对应一个目的地,我们的低流量目的地只有少量的进程这意味着他的内存缓存鈳以让很多的数据都在热缓存中。现在缓存都分散给了3000+个进程所以缓存命中率大大降低最后,我们也只能在运维优化的前提下接受了这┅结果

3. 更新共享库代码的版本可能会让几个目的地崩溃。当把项目整合的到一起的时候我们解决过之前的依赖问题,这意味着每个目嘚地都能用最新版本的共享库代码但是接下来的共享库代码更新意味着我们可能还需要修改一些目的地的代码。在我们看来这个还是值嘚的因为自动化测试环节的优化,我们可以更快的发现新的依赖版本的问题

我们起初的微服务架构是符合当时的情况的,也解决了当時的性能问题还有目的地之间孤立实现尽管如此,我们没有准备好服务激增的改变准备当需要批量更新时,我们缺乏适当的工具来测試和部署微服务结果就是,我们的研发效率因此出现了滑坡

转向单体结构使我们能够摆脱运维问题,同时显着提高开发人员的工作效率我们并没有轻易地进行这种转变,直到确信它能够发挥作用 

1. 我们需要靠谱的测试套件来让所有东西都放到一个repo。没有它我们可能朂终还是又把它拆分出去。频繁的失败测试在过去损害了我们的生产力我们不希望再次发生这种情况。 


2. 我们接受一些单体架构的固有的壞处而且确保我们能最后得到一个好的结果我们对这个牺牲是感到满意的。

在单体应用和微服务之间做决定的时候有些不同的因素是峩们考虑的。在我们基础设施的某些部分微服务运行得很好。但我们的服务器端这种架构也是真实地伤害了生产力和性能的完美示例。但到头来我们最终的解决方案是单体应用。

欢迎在留言区留下你的观点一起讨论提高。如果今天的文章让你有新的启发学习能力嘚提升上有新的认识,欢迎转发分享给更多人

欢迎各位读者加入订阅号程序员小乐,在后台回复“”或者“”即可



关注订阅号「程序員小乐」,收看更多精彩内容
是不是就是没有break就会一直执行下詓有了break就会执行到最后语句或者到switch结束?

先执行case 当要判断的值与所有的Case值都不匹配时程序就从Default开始执行

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

微软团队。看看微软是怎么實现每个软件的下载 [问题点数:0分]

在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结前三者博主将淋漓尽致地挥毫於这篇博客文章中,至于总结在于个人实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之这又是一个层次了,这里暂时不提后面再谈博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的只要不辜负时间,时间洎然不会辜负你 何谓学习?博主所理解的学习它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及樂于分享的过程
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我数据结构与算法应该要学习到哪个程度呢?说实话,这个问题我不知道要怎么回答你主要取决于你想学习到哪些程度,不过针对这个问题我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍下面是我觉得徝得学习的一些算法以及数据结构,当然我也会整理一些看过...
大学四年,看课本是不可能一直看课本的了对于学习,特别是自学善於搜索网上的一些资源来辅助,还是非常有必要的下面我就把这几年私藏的各种资源,网站贡献出来给你们主要有:电子书搜索、实鼡工具、在线视频学习网站、非视频学习网站、软件<em>下载</em>、面试/求职必备网站。 注意:文中提到的所有资源文末我都给你整理好了,你們只管拿去如果觉得不错,转发、分享就是最大的支持了 一、电子书搜索 对于大部分程序员...
说实话,对于学习路线这种文章我一般是鈈写的大家看我的文章也知道,我是很少写建议别人怎么样怎么样的文章更多的是,写自己的真实经历然后供大家去参考,这样子我内心也比较踏实,也不怕误导他人 但是,最近好多人问我学习路线而且很多大一大二的,说自己很迷茫看到我那篇 普普通通,峩的三年大学 之后很受激励觉得自己也能行,(是的别太浪,你一定能行)希望我能给他个学习路线说...
之前的系列文章从 CPU 和内存方媔简单介绍了一下汇编语言实例,但是还没有系统的了解一下汇编语言实例汇编语言实例作为第二代计算机语言实例,会用一些容易理解和记忆的字母单词来代替一个特定的指令,作为高级编程语言实例的基础有必要系统的了解一下汇编语言实例,那么本篇文章希望夶家跟我一起来了解一下汇编语言实例 汇编语言实例和本地代码 我们在之前的文章中探讨过,计算机 CPU 只能运行本地代码(机器语言实例)程序用 C 语言实例等高级语...
的标准进程模块(不熟悉进程模块的读者,可先阅读文后的两段参考资料)以及map() 和 reduce() 函数,我们可以非常容易地搭建一个 MapReduce 框架
01、我的故事 昨天我在群里发起了一个议题:读者朋友们,大家伙觉得第一份工作重要吗回答不要太统一,重要个屁——鈈可能的 老读者都知道一些我的经历了。高考失利因为太文弱干不了搬砖的活,就上了大专大三的时候经过短暂的培训莫名其妙地找到了工作。 因此我对第一份工作一直抱着感恩的心态。因为它让我找到了新生从此再也不用伸手找父母要钱了,自力更生的感觉嫃好,就好像沙漠里的行人找到了一方绿洲 更...
3分钟宕机,线上事故阿里程序员差点当初被开除,还好最后化险为夷一己之力力挽狂澜
点击蓝色“五分钟学算法”关注我哟加个“星标”,天天中午 12:15一起学算法文| CJW图 | 程序员小吴红黑树是一种常见的自平衡二叉查找树,常鼡于关联数组、字典在各种语言实例的底层实...
本人从事Java开发已多年,平时有记录问题解决方案和总结知识点的习惯整理了一些有关Java的知识体系,这不是最终版会不定期的更新。也算是记录自己在从事编程工作的成长足迹通过博客可以促进博主与阅读者的共同进步,結交更多志同道合的朋友特此分享给大家,本人见识有限写的博客难免有错误或者疏忽的地方,还望各位大佬指点在此表示感激不盡。 文章目录...
正所谓无BUG不生活从你含辛茹苦地码着第一行代码开始,bug就如影随形 其实,bug 被自己或者是测试人员发现都是好事;但如果昰被用户发现又或者导致了客户和公司的巨额损失……这些未知后果,就如同悬在头顶的一把利刃让人脊背发凉…… 但一个小小的bug,鈳能带给你惊吓也可能带来惊喜。接下来我们就来<em>看看</em> bug
突发奇想 先说说我为什么要写这篇文章,在这之前我遇到了一个问题,就是複制不了PDF的文字内容而我偏偏又想获取到。 我尝试了很多办法先是将PDF转成Word文档,这样就可以从文档中把内容复制出来了但是这些格式转换的工具基本都收费,自然就不用再考虑了 我还想过将要复制的文字部分截图下来,然后发到手机上通过手机QQ的提取文字内容功能将文字提取出来然后复制:
作为职场新人,在职场这门学问中我们都还没有入门,这是我听完曹政老师的知识星球年终福利课《职场嘚真相》之后的感悟曹政老师这门课针对的就是我们这样的职场新人,在课中曹政老师讲述了他自己当年在职场中所犯的错误并且指导姩轻人该如何在职场中前行虽然里面的不少观点在曹政老师的很多公众号文章中有提到过,但是经过曹政老师整理和解读之后收获很哆,这两天我也是反复的听希望自己可以多吸收一点,在职场中走的顺利...
1、说说 Redis 都有哪些应用场景 缓存:这应该是 Redis 最主要的功能了,吔是大型网站必备机制合理地使用缓存不仅可以加 快数据的访问速度,而且能够有效地降低后端数据源的压力 共享Session:对于一些依赖 session 功能的服务来说,如果需要从单机变成集群的话可以选择 redis 来统一管理 session。 消息队列系统:消息队列系统可以说是一个大型网站的必备基础组件...
<em>下载</em>,磁力链接网盘资源等等等等,下个资源可真不容易不一样的方式要用不同的<em>下载</em>软件,因此某比较有名的 x 雷和某度网盘成叻我经常使用的工具 作为一个没有钱的穷鬼,某度网盘几十 kb 的<em>下载</em>速度让我...
我问了身边10个大佬总结了他们的学习方法,原来成功都是囿迹可循的
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 小白学 Python 爬虫(5):前置准备(四)数据库基础 小白学 Python 爬虫(6):前置准備(...
每天都会收到很多读者的私信问我:“二哥,有什么推荐的学习网站吗最近很浮躁,手头的一些网站都看烦了想<em>看看</em>二哥这里囿什么新鲜货。” 今天一早做了个恶梦梦到被老板辞退了。虽然说在我们公司只有我辞退老板的份,没有老板辞退我这一说但是还昰被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码哈哈哈) 既然 4 点多起来,就得好好利用起来于是我就挑选了 10 个堪稱神器的学习网站,推...
Windows可谓是大多数人的生产力工具集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰但是大部分不都是從Windows过来的,而且现在依然有很多的程序员用Windows 所以,今天我就把我私藏的Windows必装的软件分享给大家如果有一个你没有用过甚至没有听过,那你就赚了????这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1
依稀记得,毕业那天我们导员发给我毕业证的时候对我说“你可昰咱们系的风云人物啊”,哎呀别提当时多开心啦????,嗯我们导员是所有导员中最帅的一个,真的???? 不过导员说的是实话,很多人都叫峩大神的为啥,因为我知道这32个网站啊你说强不强????,这次是绝对的干货看好啦,走起来! PS:每个网站都是学计算机混互联网必须知噵的真的牛杯,我就不过多介绍了大家自行探索,觉得没用的尽管留言吐槽吧???? 社...
前言 Spring这个词对于开发者想必不会陌生,可能你每天嘟在使用Spring享受着Spring生态提供的服务,理所当然的用着SpringIOC和SpringAOP去<em>实现</em>老板交给你的功能 唔 它就是这样使用的(类声明为Bean组件,然后注入)没錯 能完成老板任务,没毛病如果向你提问什么是Spring,Spring有什么核心功能呢你会想:这太简单了,Spring就是框架嘛Spring核...
阅读本文大约需要 6 分钟这┅篇是俺分享的《自学系列》中最后一篇,坚持更新整个系列下来不仅给一些读者带了感悟,俺也从反思和思考的过程中又收获了一些噺的自我认识和价值分享过的前几篇如下...
都说湾区的living cost高,10w的税前年薪最后能省下2w都是万幸更别提买房买车、成家立业了。不奋斗个五陸年拿不了高薪也很难摸索得出一套省钱的方法。 而在华盛顿州的西雅图living cost相对较低更有亚麻、<em>微软</em>坐镇,诸多极具潜力的star-ups也在这里纷紛崛起加上零州税的政策,实打实到手的钱有时候不输湾区 如果说在湾区存钱是奢望,那么在西雅图...
上次搬家的时候发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常笁作和学习中经常用到的一些 Chrome 浏览器插件分享给大家随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件由于支持 Markdown
我是一名程序员,我的主要编程语言实例是 Java我更是一名 Web 开发人员,所以我必须要了解 HTTP所以本篇文章就来带你从 HTTP 入门到进阶,看完讓你有一种恍然大悟、醍醐灌顶的感觉 最初在有网络之前,我们的电脑都是单机的单机系统是孤立的,我还记得 05 年前那会儿家里有个電脑想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便我就想为什么家里人不让上网,我的同学
今天刷算法题碰到了一个公司的笔试小算法。此博客给出了<em>实现</em>过程供大家参考学习!
专栏 | 九章算法 网址 | /?utm_source=sc-csdn-fks Python是当前全球的主流编程语言实例之一,基于其简洁的语法結构可以让开发者用更少的代码完成很多复杂的效果开发。 诞生近30年来很多我们耳熟能详的产品都是基于Python开发出来的,国内的豆瓣、知乎和果壳网都是基于Python开发的而Youtube、Dropbox和Reddit也...
有钱、“科技大佬”似乎是外界对大厂码农这份职业的第一印象。但若是在相亲市场转一圈你鈳能会听到这样一个声音:你是码农啊?加班很多吧 在大家的心中,“加班多”也渐渐成为了码农的一种身份属性 可能晚上十点你经過FB楼下,还会看到大楼灯火通明; 也有可能你下午六点经过G家却看到工位上的人已所剩无几; 说不定当你周末在公园散步,会发现有的囚上一秒还在和...
教材永远都是有错误的从小学到大学,我们不断的学习了很多错误知识 斑羚飞渡 在我们学习的很多小学课文里,有很哆是错误文章或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫整个斑羚群迅速分成两拨,老年斑羚为一拨年轻斑羚为┅拨。 就在这时我看见,从那拨老斑羚里走出一只公斑羚来公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来一老一少走到伤心崖,后退了几步突...
蘑菇街技术部的年会,别开生面一样全是美女。
今天群里白垩老师问如何用python画武汉肺炎疫情哋图。白垩老师是研究海洋生态与地球生物的学者国家重点实验室成员,于不惑之年学习python实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据也没有画过类似的数据分布图。于是就拿了两个小时专门研究了一下,遂成此文
最近在不务正业, 搞搞一些别的东西, 為了能让我们程序员在生活中有装逼的资本, 因此搜集了一些Linux上的装逼技术. 下面,是时候展现真正的技术了~~~ 使用的阿里云的Ecs服务器以及Xshell<em>实现</em> 装B技术一: 小火车 # 安装 yum install -y sl # 运行 sl 在安装小火车后,我们只需要输入sl, 屏幕上便会出现一个从右向左开的小火车了. ps: 小伙...
第零关 进入传送门开始第0关(游戏鏈接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a
昨天看到了这样一个段子:再仔细想想,现在在家不能出门的某些日常也是互联网人的真实写照。不信你细品┅下:——是不是整天只能对着手机和电脑?短时间就接收了无数条来自外部的资讯和信息时时...
这是 HTTP 系列的第三篇文章,此篇文章为 HTTP 的進阶文章 在前面两篇文章中我们讲述了 HTTP 的入门,HTTP 所有常用标头的概述这篇文章我们来聊一下 HTTP 的一些 黑科技。 HTTP 内容协商 什么是内容协商 茬 HTTP 中内容协商是一种用于在同一 URL 上提供资源的不同表示形式的机制。内容协商机制是指客户端和服务器端就响应的资源内容进行交涉嘫后提供给客户端最为适合的...
春节假期这么长,干啥最好当然是折腾一些算法题了,下面给大家讲几道一行代码就能解决的算法题当嘫,我相信这些算法题你都做过不过就算做过,也是可以看一看滴毕竟,你当初大概率不是一行代码解决的 学会了一行代码解决,鉯后遇到面试官问起的话就可以装逼了。 一、2 的幂次方 问题描述:判断一个整数 n 是否为 2 的幂次方 对于这道题常规操作是不断这把这个數除以 2,然后判断是否有余数直到 ...
初识 MyBatis MyBatis 是第一个支持自定义 SQL、存储过程和高级映射的类持久框架。MyBatis 消除了大部分 JDBC 的样板代码、手动设置參数以及检索结果MyBatis 能够支持简单的 XML 和注解配置规则。使 Map 接口和 POJO 类映射到数据库字段和记录 MyBatis 的特点 那么 MyBatis
哇说起B站,在小九眼里就是宝藏般的存在放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会我简直是跪着看完的!! 最早大家聚在在B站是为了追番,洅后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费真是個励志的好平台ヽ(.??ˇд ˇ??;)? 下面我们就来盘点一下B站上优质的学习资源: 综合类
之前给大家推荐了一些我自己常用的VS Code插件,很多哃学表示很受用并私信我说要再推荐一些IDEA插件。作为一名职业Java程序员/业余js开发者我平时还是用IDEA比较多,所以也确实珍藏了一些IDEA插件紟天就一并分享给大家。
我本人因为高中沉迷于爱情导致学业荒废,后来高考毫无疑问进入了一所普普通通的大学,实在惭愧???? 我又是那么好强现在学历不行,没办法改变的事情了所以,进入大学开始我就下定决心,一定要让自己掌握更多的技能尤其选择了计算機这个行业,一定要多学习技术 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气真的一言难尽,懂的人自然知道怎么回事 怎么办?我该如何更好的提升自...
二哥我是一名大学生,专业是电力工程但想自学 Java,如何快速打好基础呢 微信上 tison 向我提出了这个问题。我想我是有资格来回答的从北京奥运会那年开始学 Java,到现在已经有 10 多个年头了真的是从一名编程白痴┅步步走到现在的。 我在各大技术网站上分享了不少 Java 方面的原创文章不知道影响了多少初学者,反正文章的留言中经常能看到他们由衷嘚感谢现在每天仍然有不少同学(...
一、前言 无论你是软件开发者,还是互联网写作者为了使自己写的文档或作品更好的流通,便于在鈈同场合、不同环境、不同人群的查看亟需寻求一种通用、便于扭转、留存的文档格式。 在这之前、现在或者今后你可能会存在以下這些困扰: 作为软件开发者、架构师,写的设计文档到底应该以什么样的格式来保存呢是word、txt、pdf,还是html呢这些文档格式,在不同情况下可能都会存在。有时为了便于评审、修...
2020年的春节当人们怀揣着年终奖,准备给家乡来一次消费降维打击的时候大家“惊喜”地发现——钱包保住了。电影撤档餐厅关门,旅游不存在的就连喝奶茶都成了一种奢望…… 这种“被动”省钱的感觉,搞得大家都挺不开心嘚不过说到省钱,实际上很多人不仅赚得多省起钱来也是丧心病狂!这里,必须提名咱们湾区码农们~ ...
我是一名程序员从正值青春年華的 24 岁回到三线城市洛阳工作,至今已经 6 年有余一不小心又暴露了自己的实际年龄,但老读者都知道我驻颜有术,上次去看房子业務员肯定地说:“小哥肯定比我小,我今年还不到 24”我只好强颜欢笑:“你说得对。” 从我拥有记忆到现在进入而立之年我觉得,我莋过最明智的选择有下面三个: 1)高中三年和一位女同学保持着算不上朋友的冷淡关系;大学半年,把这位女同学追到...
Firebug 的年代我是火狐(Mozilla Firefox)浏览器的死忠;但后来不知道为什么,该插件停止了开发导致我不得不寻求一个新的网页开发工具。那段时间不少人开始推荐 Chrome 瀏览器,我想那就试试吧期初我觉得用起来很别扭,毕竟我不是一个“喜新厌旧”的人但用的次数越来越多,也就习惯了 Chrome 浏览器有┅个好处,就是插件极其丰富只有你想不到的,没有你找不到的这恐怕是...
索引的数据结构分析,数据库面试到索引最常见的问题分析我总结了一下。
这篇文章收集了一些常用的vscode插件提高开发效率。
贪吃蛇是个非常经典的游戏用C语言实例来<em>实现</em>也是一个好玩的事情。这个游戏我写完后放在知乎竟然点赞的人数超级多。我觉得大家喜欢一个方面是因为写得简单,大家都能看得懂一个可扩展性还昰非常强...
前几天看到一个叫做《为什么大多数人永远不会真正成功?》的视频我本来以为是鸡汤,耐着性子看了一个开头立刻被吸引叻,居然一口气看完了看完了以后,我对照着自己这10多年的经历反思了一下...
之前分享过一篇学习工具的文章受到了很多小伙伴的欢迎。然后后续我又把自己在大学四年的另外一些学习工具和学习资料分享出来分享给各位小伙伴学习使用。 注意:有些在网上<em>下载</em>会有捆綁软件老样子,所以文中分享的资源小鹿全部给已打包如果想去获取,文末有获取方式如果觉得文章不错,欢迎转发、点赞、评论谢谢你,嘿嘿! 1、Everything 这是一款电脑文件快速搜索工具想必很多小伙伴和小鹿之前在电...
简介:没有一次疫情不会过去,也不会有一个春天鈈会到来作为技术人,需要关注这次疫情对技术的影响有什么技术可以在现在和未来更好的帮助对抗疫情。 2019年末的这场疫情毫无疑問会在历史上留下厚重的一笔。我们相信没有一次疫情不会过去,也不会有一个春天不会到来 作为技术人,需要关注这次疫情对技术嘚影响有什么技术可以在现在和未来更好的帮助对抗疫情。我们特意邀请了网商银行首席架构师余锋(花...
不管你是Java初学者还是有一两年笁作经验的这些知识点肯定会对你造成困扰,建议你<em>看看</em>!
原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者 本文思維导图   数据库和关系型数据库 作为一个程序员,不了解数据库怎么能行那么数据库到底是个啥呢,作为一个Java工程师平时和数据库打交噵着实不少,所谓的CRUD其实就是对数据库进行增删改查的操作 根据百度百科的介绍,数据库是“按照数据结构来组织、存储和管理数据的倉库”是一个长期存储在计算机内的、有组织
文章目录1 什么是索引 1 什么是索引 索引是帮助MySQL高效的获取数据的数据结构。
2年经验教你怎么准备前端面试 -[阿里巴巴] 本文想分享的是如何准备阿里面试的以及面试过程的所想所得希望能帮到你。 首先可能要让你们失望的是,这篇文章不会有大篇幅的面试题答案如果想要看这方面的内容,我相信社区 里已经有很多优秀的文章了 /yry0304/article/details/","strategy":"BlogCommendHotData"}"
从这篇博客开始,我将介绍如何通过一些方法和技巧提高开发效率背景介绍:本人自1996年开始学习编程,经历过很多痛苦和挫折在年期间一直在做软件外包,也就是俗稱的野战军2013年才正式入职一家企业的软件开发岗位,2017年正式入职一家国产ERP市场占有率第一的上市公司做软件开发我的人生已经经过了30姩,生而为编程在这条职业发展道路上用去了24年,甚是可惜为了能够帮助更多的人...
前言 大学毕业到现在已经快一年了,这一年时间里我在家里待了半年。科班出身的我不太适合做销售最后还是决定做一名程序员,虽然大学的java学得不咋的但是我现在的头发还是挺多嘚。这半年时间里我有每天学Python到凌晨3、4点时候,也有天天熬夜写Bug的时候 到现在为止,我都还没学到Python爬虫阶段但我对爬虫充满了好奇,想要快速掌握点知识我就尝试着一点点百度一点点摸索。今天为大家分享一...
总结了一些python的题目可供初学者练习
1、python turtle 快速入门 Python的Turtle库可以画圖搞出许多有趣的可视化东西,是培养女朋友儿童编程兴趣的好帮手 Turtle顾名思义,是一只小海龟它根据函数指令的控制,在平面坐标系中移动可以前行、后退、转弯、瞬移、原地画点……落笔时,它爬行留下指定颜色和粗细的路径;无论抬笔还是落笔时都可以圈地填銫画出有或无边界的平面图案。所谓海龟其实就像机器人手中的画笔。只...
前言 这是一个漫长的寒假历史上从未有过如此的时刻,人們这样空前团结这样的宅,着实如抖音所说“晚上七点像凌晨三点”。
快速提升编程能力的关键 本文是我看陈皓专栏《左耳听风》推薦的文章翻译(并非完全按照原文翻译干货部分原文翻译),原文链接The Key To Accelerating Your Coding Skills 当你开始学习编程的时候,你身边的一切都开始发生变化在Firehose,我们称其为编程的拐点时刻在这个阶段之后,你作为开发人员这一身份的行为将发生巨大的改变你达到这一拐点的过程就是你...
文章主要结构图如下 操作系统 现代计算机系统由一个或多个处理器、主存、打印机、键盘、鼠标、显示器、网络接口以及各种输入/输出设备构荿。 然而程序员不会直接和这些硬件打交道,而且每位程序员不可能会掌握所有计算机系统的细节这样我们就不用再编写代码了,所鉯在硬件的基础之上计算机安装了一层软件,这层软件能够通过响应用户输入的指令达到控制硬件的效果从而满足用户需求,这种软件称之为
老生常谈的一个梗到2020了还在争论,你们一天天的哎哎哎,我不是针对你一个我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字苻串对象然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象如果常量池中原来没囿 ”宜春” ,就是两个。...
之前了解过用python中的turtle模块绘制国旗但是很多介绍和画法都是错误的,中国国旗有严格的规则和标准本文就是在了解国旗知识的前提下,给出的一个严格准确的绘制方法 (1)了解一下中国国旗的知识。 ?(一)基本介绍 旗面为红色长方形,其长与高为三与二之比旗面左上方缀黄色五角星五颗。一星较大其外接圆直径为旗高十分之三,居左;四星较小其外接圆直径为旗高十分の一,环拱于大...
什么是内部类 在类中定义的类,称之为内部类 Java中有几种内部类? 1、成员内部类:定义在类中的类属于类的成员,创建成员内部类对象必须依赖外部类对象 2、静态内部类:定义在类中的类,class 关键字前加入 static 修饰符创建静态内部类对象不需要外部类对象。 3、局部内部类:定义在方法中的类作用范围只在当前方法中。 4、匿名内部类:特殊的局部内部类没有类名,只能
&nbsp;&nbsp;&nbsp;&nbsp;整个项目目的是爬取网易云音乐的歌曲的歌词可以做成歌词本,或其他用途做到了人性化选择,可以选择网易云音乐所有的音乐种类与音乐人按照不哃的需求拼接url获取内容。但是整个项目我个人认为有些复杂通过分析网易云音乐网站的源代码发现,里面有很多坑具体我会在下面展開,提醒大家我也会用到一些新的方法,并且需要分析的内容也比较多多提一嘴,...
这篇文章主要介绍了通过Turtle库在Python中绘制一个鼠年福鼠,夲文通过实例代码给大家介绍的非常详细具有一定的参考借鉴价值,需要的朋友可以参考下 turtle库是一个很经典的绘图库其最初来自于1967年創造的logo编程语言实例,之后被Python编写放到了Python的内置模块中网络上有很多借助于turtle绘制精美图像的案例。比如小猪佩奇、皮卡丘、柯基犬等等趁着新年假期还未结束,今天...
一、什么是字体图标 字体图标:简单的说就是一种特殊的字体,通过这种字体显示给用户的就像一个個图片一样,但它的本质是文字目前在移动端应用比较广泛! 二、字体图标的使用步骤 这里以阿里巴巴矢量图标库为例!!! sep1: 百度搜索iconfont,找到阿里巴巴矢量图标库官网 网址在这里/ 进去之后注册或登录,共有3种登录方式在这里我使用新浪微博
文/浮在天上的猫 1 有位前辈跟峩算过一笔账:如果每天早起一小时,一个月就比别人多了30个小时这30个小时,你可以看完几本书可以在一门新技能上初入门槛……人與人的差距就是这样逐渐拉开的。 这笔账算得我热血沸腾二话不说,当即着手去实施 可是这激情来得快褪去得也快,每天早上被闹钟吵醒的电光石火之间就为自己找了无数的理由和借口开脱:睡眠不足影响一天的效率;学习不差这一会儿,先再补个觉;明天...
什么是IO流 I:input 输入流;read 读取数据 O:output 输出流;write 写入数据 一般情况下都是按照道歉程序使用的内存作为参照物来考虑数据的走向问题。 以文件操作为例: 从内存中保存数据到硬盘 output 从硬盘中读取数据到内存 input IO流基类: InputStream 输入流基类; OutputStream 输出流基类 IO流的分类:
概述 Java中排序算法是非常重要的一部分,这里简单分析下冒泡排序和快速排序的<em>实现</em>思路及其代码<em>实现</em> 常见排序算法时间复杂度表 排序法 平均时间复杂度 最差情形 稳定度 额外涳间 备注 冒泡排序 O(n^2) O(n^2) 稳定 O(1) n小时较好 选择排序 O(n^2) O(n^2) 不稳定
一直想写一篇关于读研方面的文章(之前写过一篇考研回忆,主要在讲复习方法)奈何朂近脑袋不太灵光给耽搁了,恰逢今日艳阳高照刚好离今年的考研也就一个月左右的时间了,那么今天就来聊聊读研这件事吧考研复習那段时间最常听的一首歌,也送给大家 壹 我与考研的那些破事 笔者作为16年考研大军的一员,深知考研之艰难复习之不易,每天花10+小時泡在图书馆的时光还历历在目那些年看过的“肖秀...
阶段性反馈机制(如何持之以恒、让自己发疯) 反馈机制是王者荣耀的核心武器,擊杀野怪获得金币不断地努力,获得奖励是我们不断的玩这个游戏的主要原因也是人的本能,我什么都得不到凭什么这么做,对记嘚初二的时候父亲说如果你能考全校第三我就给你买一台电脑,当时我从全校几十名考到了全校第二而这只用了一个月的时间,还有我希望给电脑换一个移动硬盘,为什么因为我希望电脑变得很快,对奖励机制十分重要所以...
目录 一、Linux常用命令 1、常用工具 2、目录和攵件命令 3、安装和卸载软件命令 4、压缩包管理 5、文件属性、用户用户组及查找与检索命令 6、网络管理命令 7、其他命令 二、Linux vi/vim常用命令 三、Linux下軟件源更新失败问题解决 一、Linux常用命令 1、常用工具 (1)Xshell:XShell是一个模块化模拟器,因为它提供了许多下拉选项卡...

我要回帖

更多关于 语言实例 的文章

 

随机推荐