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

为啥第二个for循环不加框红代码运行失效呢?(文末赠书)

一、前言 前几天在Python最强王者群【哎呦喂 是豆子~】问了一个Python自动化办公问题,一起来看看吧。 大佬们 请教个问题 为啥第二个for循环不加框红代码运行失效呢?...这个变量开头就有声明了 二、实现过程 这里【瑜亮老师】给了一个解答,如下所示: 后来还补充到:你可以去搜索一下generator用法。...这个file_list属性就是generator,不是常规理解list。想要重复用,可以list转换一下类型。生成器和列表用法看着是一样,都能遍历取值,但本质上还是有很大区别的。...后来【维哥】还提到了一个办法,如下所示: 相当于把生成器里边元素一次性取出了。顺利地解决了粉丝问题!

9530

持续集成只是个脚本运行

原本应该是一个简单任务调度和运行工具,却变成了一个难以调试复杂单体,对系统几乎毫无描述,拖累您团队。 CI 未来 相信团队开始意识到这些系统已经变得非常复杂和臃肿。...CI 未来需要我们暂停一下,从一开始我们被承诺重新开始:简单版本控制集成、任务调度和运行。我们需要认真考虑 CI 应该做什么,相对于我们给它控制了哪些它不该控制东西。...您流水线应该能表达应用复杂性,对依赖性敏感,随着应用或技术栈增长易于配置和编辑。它应存在于您代码仓库中,完全独立且与平台无关。 如果我们当前提供商提价了?...不想在机器上访问日志;想在笔记本上运行流水线,实时查看执行日志。 希望在将更改推送到代码库之前就可以调试新测试设置。 提交、推送后等待 CI 反馈更改是否有效时代已经过去了。...可组合构建块 微服务架构教会我们,在某些场景下,将复杂领域分解成更小子域可以是有益为什么我们不对交付过程做同样事情呢?我们为什么更倾向于“智能”全能解决方案不是可组合性?

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

数据结构思维 第九章 `Map`接口

但是在我们可以解释哈希表之前,我们将从一个Map开始,它使用键值对List来简单实现。 9.1 实现MyLinearMap 像往常一样,提供启动代码,你将填写缺少方法。...然后运行ant MyLinearMapTest;几个测试应该失败,因为你有一些任务要做。 首先,填写findEntry主体。...给定一个目标键(Key),它应该搜索条目(Entry)并返回包含目标的条目(按照键,不是值),或者如果不存在则返回null。请注意,提供了equals,正确比较两个键并处理null。...你可能希望从一个版本开始,其中put始终添加新条目,并且不会修改现有条目;这样你可以先测试简单情况。或者如果你更加自信,你可以一次写出整个东西。...在findEntry中,我们可能会很幸运,并在一开始找到我们要找键,但是我们不能指望它。一般来说,我们要搜索条目数量与n成正比,所以findEntry是线性

29330

最流行编程语言JavaScript能做什么?

最成功案例就是估值达30亿美元Slack: So,如果你使用桌面端Slack就会很卡~ 全平台应用 还记得那篇《一份代码构建移动、桌面、Web全平台应用》,在Eletcron上运行Ionic...,意味着无限可能性。...硬件 早先看到了Arduino在编译时候,以DSL方式封装了API。NodeMCU则内建了Lua语言支持,可以让开始者使用Lua来开始。...Tessel 原生就提供了JavaScript运行环境,我们写需要写好JavaScript就可以在上面运行。 Tessel 2属于配置比较高硬件,低配呢?...三星设计了JerryScript引擎,它能够运行在小于64KB内存上,且全部代码能够存储在不足200KB只读存储(ROM)上。 想想觉得未来是美好

1.8K80

测试代码时你会犯 11 个错误

从一开始就在项目的生命周期添加测试可以节省时间和精力。 3.编写失败测试 TDD方法普及将红—绿—重构理念带到软件测试世界。这个理念常常被误认为应该“通过编写一个失败测试开始”。其实并非如此。...8.担心代码覆盖率 代码覆盖率理念很崇高,但往往实际价值有限。知道运行测试时候有多少代码被执行应该是有用,但因为它不考虑正在执行代码测试质量,因此变得没有意义。...有回归错误或新异常,那么测试应该重复运行以尽早发现问题,这将意味着错误和异常可以更快,更便宜和更容易被修复。没有变化(人为错误)可自动和快速执行测试,是为什么编码测试如此有价值原因。...自动运行测试(作为一个持续集成系统一部分)是一个开始,但项目的任何一个人都应该能够随时运行测试。如果需要特殊设置,机器,权限,或配置来运行测试,那么这些将成为执行测试壁垒。...开发者需要能够在检查代码之前运行测试,因此他们需要能够访问并有运行所有相关测试权力。代码和测试应保持在同一个地方,并且所需任何设置都应该写好脚本。

34920

Rufus作者长文痛斥UWP,微软还是十年前香!

3、当涉及到应用程序可以做什么时,它功能是非常有限,因为微软对UWP应用程序安全问题答案是削弱UWP应用程序可以执行低级操作手段,这就是为什么Windows终端团队必须花费大量时间(他们确实有一个庞大团队和近乎无限资源...2、不要把批评(比如微软推出了另一个UI层,让老版本Windows用户束手无策,不是改进他们现有的一些API,这些API仍然被广泛使用,而且早就应该改进,比如引入一个完整UTF-8层)当成是恶意...实际上,应该是比UWP更好过渡路径。 相信我已经回答了你问题,将close这个issue。 随后这个问题也是被关闭掉了。 对于这么长回复,bnainar也是表示太受宠若惊了!...例如,目前估计,获得一个Linux版本Rufus,将提供至少75%Windows版本功能(而言,这甚至还不接近于我会满意地向公众发布东西,因为它仍然会丢失太多功能),至少4个月全职工作...他们从一个好概念开始,但是半途废(包括 windowsphone 和 Xbox) ,然后基本上放弃了它。他们本来打算跨平台,但他们没有做到。

41510

kotlin修炼指南9-Sequence秘密

每当我们要求下一个数字时,Sequence生成器就会运行,直到使用yield产生一个值。然后停止执行,直到我们要求得到另一个数字。下面是一个无限下一个斐波那契数字列表。...基本上,这些都是Sequence更有效操作,因为它们不需要处理所有元素。尽管注意到对于大多数这些操作来说,很容易陷入无限循环。any操作符只能返回true或者永远运行。...让我们从一个极端但又常见案例开始:文件读取。文件可以达到数千兆字节。在每个处理步骤中分配一个集合中所有数据将是对内存巨大浪费。这就是为什么我们默认使用Sequence来处理文件。...但这种差异仍然是不可忽视,这也是为什么我们更愿意使用Sequence来处理超过一个处理步骤大集合主要原因。 所说 "大集合 "是指许多元素和真正大集合。它可能是一个有几万个元素整数列表。...添加它是因为它是一个流行函数,而且这样使用它要容易得多。尽管Kotlin开发者应该记住它缺陷,特别是它不能用于无限Sequence。

49820

初学者回归测试基础

通知我们由于模块或应用程序中修复或增强发生任何副作用。 确保之前发现错误不会再次出现。 它不仅可以手动完成,而且可以使用工具使其自动化。 它有助于提高产品质量。...选择涵盖集成测试测试用例。 但是,集成测试是软件测试过程一部分。但它一些测试也应该与回归测试一起运行。它有助于排除产品因最后一刻更改错过重要功能任何可能性。...根据回归测试优先级过滤测试用例。 我们不能有一个不断增加无限回归。这些案例中。在某个地方我们必须停下来,我们应该通过做出明智和深思熟虑决定来了解这一点。 所以开始对所有回归测试用例进行分类。...但是,如果需要,测试人员也可以运行 P3 测试用例。顺便说一句,如果错误修复需要添加新测试用例,那么它们也应该作为回归一部分运行。...为了实现这个目标,QA 团队和开发人员应该从一开始设计一个有效回归测试策略。在这里,我们列出了有助于成功进行回归测试步骤列表。

32010

给初学者RxJava2.0教程(九):响应式拉取

从上上篇文章中我们知道并不是这样,上游仍然是一开始发送了所有的事件,也就是说小日本并没有等叶问打死一个才拿出一个,而是一开始就拿出了所有的鬼子,这些鬼子从一开始就在这儿排队等着被打死。...来看个例子吧: 代码很简单,来看看运行结果: 大家应该能看出端倪了吧,下游调用request(n) 告诉上游它处理能力,上游每发送一个next事件之后,requested减一,注意是next事件,...带着这个疑问我们继续来研究一下: 这次我们在下游调用了request(1000)告诉上游要打1000个,按照之前我们说,这次运行结果应该是1000,来看看运行结果: 卧槽,你确定你没贴错代码?...为了答疑解惑,直接上图了: 可以看到,当上下游工作在不同线程里时,每一个线程里都有一个requested,而我们调用request(1000)时,实际上改变是下游主线程中requested,上游中...= 0时候才会发事件,然后我们调用request(96)去消费96个事件(为什么是96不是其他数字先不要管),来看看运行结果吧: 首先运行之后上游便会发送完128个事件,之后便不做任何事情,从打印结果中我们也可以看出这一点

61930

数据结构——30行代码实现栈和模拟递归

栈这个结构想大家应该都耳熟能详,尤其是在很多地方将和堆并列在一起,称作“堆栈”更广为人知了。但其实堆和栈本质上是两种不同数据结构,我们不能简单地混为一谈。让我们先从比较简单开始。...从下面这张图应该很容易能看明白。 ? 栈规定了我们只能从一侧进行读写,常规上我们将能够读写一侧称作是栈顶。不能读写另一侧称为是栈底。...也就是说递归并不是无限,因为除了操作系统对于运行内存限制之外,编译器还会有最大递归深度限制,防止递归中死循环导致系统崩溃。...原本在递归当中,由于程序会记录递归时状态和代码运行位置,递归回溯之后会回到上次调用位置,所以我们可以忽略这个问题。现在我们由于不再使用递归,所以需要我们自己来判断节点状态。...接着就很简单了,我们就按照左中右顺序遍历节点,只要左子树存在往左边遍历,在一路往左过程中遇到这些节点flag全部置为False,因为它们回溯已经开始,以后不会再发生回溯了。

1.1K20

【Go回忆】Go,小众型开发语言么?但我建议你学一下

当时也是面临着学哪个技术分岔口。...对于Python,若基于丰富资源库考虑,论内置工具库我会搬出C#,论开源项目我会拿起java;若基于脚本语言特性,又会翻出php,加之早期Python部署很麻烦(现在有Docker应该好很多),最后没有玩个蛇...Go,两年年度语言,虽然现在还没能进去前十,看上去似乎有点小众,但不能掩盖其简单、高并发、高性能、跨平台特点,基于Go相关评论,以下链接可以看一下: 为什么要使用 Go 语言?...Go 语言优势在哪里? 也不是安利你一定要用某个语言,只是觉得它不错,推荐一下。 最开始实际应用Go,是为了替代C#WCF(因为服务器原因)。...发现用Go写服务很简单,从一开始学习Go没多久一直蠢蠢欲动想使用,实际应用起来也比较满意,比起java、C#,省很多代码,速度快、稳定性好,其中最喜欢是它部署,不用安装运行环境,简单得不要不要

64430

哈希——202. 快乐数

「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上数字平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。...因为我们得到了1,我们知道7是一个快乐数,函数应该返回true 。 再举—个例子,让我们从116开始。通过反复通过平方和计算下一个数字,我们最终得到58,再继续计算之后,我们又回到58。...我们怎么知道它会继续变大,不是最终得到1呢?我们可以仔细想—想,每—位数最大数字下一位数是多少。 对于3位数数字,它不可能大于243。这意味着它要么被困在243以下循环内,要么跌到1。...但它不无限期地进行下去,所以我们排除第三种选择。 即使在代码中你不需要处理第三种情况,你仍然需要理解为什么它永远不会发生,这样你就可以证明为什么你不处理它。...每次生成链中下一个数字时,我们都会检查它是否已经在哈希集合中。 如果它不在哈希集合中,我们应该添加它。 如果它在哈希集合中,这意味着我们处于一个循环中,因此应该返回false 。

23320

对流处理误解

其次,有两种处理模型: 流处理:只要有数据生成就会一直处理 批处理:在有限时间内运行完处理,并释放资源 让我们再深入一点,有两种无限数据集:连续流(有连续到达数据流)和间歇流(周期性到达数据流)。...流难以解决时间窗、事件时间、触发器问题 流需要结合批处理,而我已经知道如何使用批处理,那为什么还要使用流? 我们永远不会仅仅因为我们认为流处理很酷怂恿你使用流处理。...相反,我们认为使用流处理决定最终应该取决于你数据性质和代码性质。在做决定之前问问自己:’现在使用什么类型数据集?’...Flink StreamSQL 等努力可以让你在永无止境流上运行 SQL 查询。 完成思考练习:如果你代码比数据变更更频繁怎么办?在这种情况下,我们认为你遇到了探索性问题。...但是,一旦你代码稳定下来,你就会遇到流处理问题。我们建议你从一开始开始思考流处理长期解决方案。 7.

38310

学完数据结构之后很纳闷,栈到底有什么用?

作者 | 梁唐 大家好,是梁唐。 栈这个结构想大家应该都耳熟能详,尤其是在很多地方将和堆并列在一起,称作“堆栈”更广为人知了。 但有名归有名,真要问起来栈这个结构到底有什么用?...从下面这张图应该很容易能看明白。 代码实现 栈规定了我们只能从一侧进行读写,常规上我们将能够读写一侧称作是栈顶。不能读写另一侧称为是栈底。...所以,递归深度并不是无限,因为除了操作系统对于运行内存限制之外,编译器还会有最大递归深度限制,防止递归中死循环导致系统崩溃。...原本在递归当中,由于程序会记录递归时状态和代码运行位置,递归回溯之后会回到上次调用位置,所以我们可以忽略这个问题。现在我们由于不再使用递归,所以需要我们自己来判断节点状态。...属于典型看着简单实际不容易题,个人比较喜欢这类问题,除了锻炼思维之外也很适合用来面试,候选人思维能力、代码驾驭能力基本上都一清二楚了。

63710

如何实现可扩展架构?

例如,Python 有非常丰富语法糖,非常适合处理数据,而且代码简短富有表现力。但为了实现这一点,它需要运行在解释器上,在默认情况下,这比编译后在裸金属上运行 Go 或 C 是要慢。...NodeJS 外部工具可能是最丰富,但它是单线程。要在多核机器上运行 NodeJS,必须使用像 PM2 这样东西,但这样的话,就必须保持代码是无状态。...对于显示新闻这样读取优先任务,最好使用像 MongoDB 这样东西。 如果两者都需要,安装两个数据库!这不是不行。这不会造成什么破坏。事情就应该这样做。  ...相信我,你不会想让这种事情发生。 尽快实现无状态。最好从一开始选择无状态。如果你在使用 NodeJS 和 PM2,如果你想让 PM2 帮你增加运行时以实现负载均衡,那你就必须让代码保持无状态。...fileGuid=gr8wsimng4sTPe0C 本周好文推荐 对话极狐(GitLab)公司CEO陈冉:从GitLab落地中国透视国产开源大势 使用两年之后,为什么卸载了Istio?

97610

浅谈:在2020年,该如何选择合适小程序框架?

从一开始只能选择原生语法,到如今小程序框架 Rax/Taro/uni-app百花齐放。这背后是小程序原生语法造成生态割裂,也是业务对「一码多端」强烈诉求,更是前端现在繁荣生态体系。...微信小程序诞生之初自己定义了一套”标准“,与前端已有的生态格格不入,最开始框架甚至没有组件、没有 npm,和 Web 生态严重脱节。由于特殊双线程模型与四不像语法,开发者苦不堪言。...但是在小程序领域上暂时还不可能存在这么好事情,这也是小程序原生语法最后执拗。没有语法限制带来更多性能上牺牲,这个与运行时方案实现方式有很大关系,接下来详细介绍一下。...然后再通过 npm 包形式,引入到运行项目中去,从而有效降低了运行时方案性能损耗,并且能保证绝大部分业务场景可以用无限语法完成,开发者所面对都是 Rax DSL。...所以,站在 2020 年这个时间点,无论是框架提供者,还是业务开发者都应该更多从标准角度思考问题,这样才能让业务代码有更多可能性。

1.1K40

为什么JavaScript开发如此疯狂

或者过多地添加Babel到你预处理? BDD还是常规单元测试?应该使用什么断言框架?当然从命令行运行测试会很好,所以也许PhantomJS也行? Angular还是React?Ember?...让来帮助你理解为什么要说这一切是如此疯狂。让我们从一个例子开始,然后转移到漂亮图片。 这是React“Hello, world!”应用。 ? 没有完全完成。 ?...你是(大多数时候)对,但你还需要走一小步才能理解为什么一切都疯了。 下面是承诺过图片。 ? 绝大多数你将工作JavaScript web应用程序,会落在钟形曲线中部某个位置。...并且在中部,如果你从一个完整React堆栈开始,那么从一开始大量过度设计了你应用程序。 这就是为什么一切都变得疯狂。...如果你知道如何正确地构建Javascript app,那么你就会开始懂得如何、何时以及为什么使用框架或npm/requir/webPack或ES6,什么时候编写测试,什么时候应该费心让你测试本地运行vs

63420

Flutter常见开发问题

简而言之,这些文件夹是整个应用程序,它们为 Flutter 代码运行奠定了基础。 为什么 Flutter 应用这么大? 如果您运行过 Flutter 应用程序,您就会知道它速度很快。速度极快。...它是如何做到?在构建应用程序时,它不是只使用特定资源,而是实质上需要所有资源。为什么这有帮助?因为如果将一个图标从一个更改为另一个,则不必完全重建应用程序。...如果是编程新手,想从移动端开发入手,应该从 Flutter 开始吗? 这有更多两部分答案。 Flutter 非常适合编写代码,并且在相同页面上代码比 Android 或 iOS 应用程序少得多。...如果您想编写任何本机代码,您肯定需要在任一平台或两个平台上经验。 个人意见是先学习一两个月 Android/iOS,然后从 Flutter 开始。 什么是package和插件?...package允许您将新小部件或功能导入您应用程序。package和插件之间有一个小区别。包通常是纯粹用 Dart 编写新组件或代码插件则可以使用本机代码在设备端提供更多功能。

6.7K20

PE文件和COFF文件格式分析--MS-DOS 2.0兼容Exe文件段

那么为什么PE格式文件会有个Dos文件头呢?Dos系统时代,有两种(所知道压根没经历过那个年代)可执行文件格式,一种是.exe为后缀文件,其结构是MZ格式。...于是我们PE可执行文件一开始处便插入了一个MS-Dos 2.0兼容Exe文件头,Dos系统加载我们PE文件时,从一开始读取我们文件,发现是“DOS下可执行程序”,于是成功且顺利执行我们程序中DOS...在做注册表沙箱时,研究了下某公司沙箱,可是它沙箱不让regedit.exe进入沙箱运行,于是改了e_res[4]这段数据中部分,从而让修改后regedit.exe在它沙箱中运行。...为什么呢?很容易想象,“MD5+签名”是安全公司一大“安全准绳”。改了这个没啥用数据段,不会影响程序运行,但是会使MD5不同,且签名被破坏。这段地址是(文件起始偏移0x1C) ?        ...再仔细看,除了e_magic和e_lfanew两个字段要保证OK外,其他字段和DOS代码空间都可以被利用!那么不禁有人要问,这样做有什么好处呢?首先,减少了PE文件大小(虽然只是那么一点点)。

1.4K40

Flutter常见开发问题

简而言之,这些文件夹是整个应用程序,它们为 Flutter 代码运行奠定了基础。 为什么 Flutter 应用这么大? 如果您运行过 Flutter 应用程序,您就会知道它速度很快。速度极快。...它是如何做到?在构建应用程序时,它不是只使用特定资源,而是实质上需要所有资源。为什么这有帮助?因为如果将一个图标从一个更改为另一个,则不必完全重建应用程序。...如果是编程新手,想从移动端开发入手,应该从 Flutter 开始吗? 这有更多两部分答案。 Flutter 非常适合编写代码,并且在相同页面上代码比 Android 或 iOS 应用程序少得多。...如果您想编写任何本机代码,您肯定需要在任一平台或两个平台上经验。 个人意见是先学习一两个月 Android/iOS,然后从 Flutter 开始。 什么是package和插件?...package允许您将新小部件或功能导入您应用程序。package和插件之间有一个小区别。包通常是纯粹用 Dart 编写新组件或代码插件则可以使用本机代码在设备端提供更多功能。

6.8K30
领券