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

.NET面试题系列 - LINQ:性能

另外,如果程序涉及多线程,或者你序列含有随机因素,你每次枚举结果可能不同。我们只需要枚举同一序列一次,之后将结果储存为一个泛型集合即可。 例如我们序列带有随机数: ? 此时我们遍历序列四次。...但每次序列都会不同。例如如果我们呼叫Sum方法四次,则可能会出现4个不同和。我们必须使用ToList方法强制LINQ提前执行。...避免毫无必要缓存整个序列 获得序列最后一个成员时,我们有很多方法: ? 其中前两个方法都不是最好。当我们调用LINQ某些方法时,我们缓存了整个序列,而这可能是不必要。...自定义ORM 通常,只有如下情况下才会考虑将自己写ORM投入生产使用: 存在一些特定复杂查询,项目中广泛出现,此时自己写ORM做了很多优化,表现好于EF 存在一些特定业务逻辑,例如将表达式解析为...,令编写代码速度稍微加快 性能和EF相差无几,有些甚至还不如EF 没有经过彻底测试 自学使用 通常,自己开发一套ORM需要很长时间,才能保证没有错误,并用于生产环境。

2.5K40

MVC5 Entity Framework学习之异步和存储过程

为什么要使用异步代码 一个web服务器可用线程是有限高负载情况下,所有的可用线程可能都在被使用。当出现这种情况时,服务器将无法处理新请求,直到有线程被释放。...因此,异步代码可以更高效地使用服务器资源,并且能够没有延迟情况下处理更多流量。 .NET早期版本中,编写和测试异步代码是复杂、易于出错,且难以调试。...异步代码花费较少开销,低流量情况下,对性能影响是可以忽略不计,但在高流量情况下,潜在性能提升是巨大。...将返回类型由ActionResult更改为Task,Task类型表示正在进行工作返回T类型结果。...部署到Windows Azure 本节需要你完成之前 MVC5 Entity Framework学习之Code First迁移和部署 教程中将应用程序部署到Windows Azure章节,如果在迁移中出现错误

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

干货 | Trip.com Flutter代码质量探索

二、空安全&静态代码检测 空错误开发中出现频率较高且通常很难被发现一类错误。现在越来越多语言支持空安全。Dart 自2.12版本之后,也支持了稳定空安全声明,可以在编译期就避免空错误。...这里我们摘取了Mockito Wiki中一些建议,所以项目中尽量避免使用Mockito来进行Mock,但不能否认是,某些场景下Mockito很大降低单元测试编写复杂程度。...1)校验对话框 项目中,ViewModel中有一些展示对话框场景,比如在网络接口调用失败后,弹出一个提示框。此时,这个用例验证结果是是否弹出对话框、弹框上展示文案是否符合预期等。...对于一些模块,比如创单模块,需要从其他ViewModel获取数据最后调用创单接口,我们很难编写测试用例。...ViewModel单元测试覆盖率也已经高于90%,版本迭代过程中,也通过单元测试发现了几个错误。 以上总结了Trip.comFlutter空安全、静态代码扫描、单元测试上做一些探索。

2.1K30

RxHttp ,比Retrofit 更优雅协程体验

asFlow、retry、timeout、flowOn、filter、distinct、sort等30余个操作符来执行不同业务逻辑,本文后续一一介绍 第三步,最后,只需调用await、tryAwait...= 200(假设200代表数据正确),就会拿到msg字段给用户一些错误提示,如果等于200,就拿到data字段去更新UI,常规操作是这样 val response = RxHttp.get("/service...而且对于UI来说,只需要data字段即可,错误提示啥我管不着。 那有没有什么办法,能直接拿到data字段,并且对code做出统一判断呢?...为什么这样?原因很简单,timeout及retry操作符,仅对上游代码生效。如retry操作符,下游异常是捕获不到,这就是为什么timeoutretry下,超时时,重试机制没有触发原因。...() 以上代码正常情况下,都能正确拿到返回值,为什么

2K20

零成本异步 IO (下)

同时它还能够使我们程序不同部分之间建立真正清晰抽象边界,大多数 Future 库都带有事件循环(event loop),这也是调度你 Future 执行 I/O 方法,但你实际上对此没有任何控制权...可以看到,你执行了两个 I/O 事件,所以它有这几个状态。对于每个状态它都提供了所需内存空间,足够你 I/O 事件后恢复执行。...执行器轮询 Future,直到最终 Future 需要执行某种 I/O 。 ? 在这种情况下,该 Future 将被移交给处理 I/O 反应器,即 Future 等待该特定 I/O 。...这是在有关 Future 第一篇文章中发布基准测试,与其他语言许多不同实现进行了对比。...这是开头那个 get_user 方法,我们有这样一个 SQL 字符串,而在使用 SQL 字符串调用 query 方法时,我们传递SQL 字符串引用。

97210

每个 Flutter 开发人员都应该知道 16 个 Dart 技巧(第三节)

需要一个只能实例化一次类(又名单例)?使用带有私有构造函数静态实例变量。 单例最重要特性是整个程序中只能有一个它实例。这对于建模文件系统之类东西很有用。...13.如何使用try、on、catch、rethrow、finally try并且catch使用基于 Future API 时非常理想,如果出现问题,这些 API 可能引发异常。...您可以使用finallyFuture完成后运行一些代码,无论它是成功还是失败。 如果您正在使用或设计一些基于 Future API,请确保根据需要处理异常。 14....您可以使用这些构造函数来模拟来自基于 Future API 响应。这在您测试代码中编写模拟类时很有用。 15. 通用流构造器 Stream 类还带有一些方便构造函数。...函数内部,我们可以yield像在同步情况下一样取值。

1.2K10

号外!!!MySQL 8.0.24 发布

/sql/dd::objects 一些组件被重命名以提高组件命名一致性。...当前两个参数之一LIKE是使用多字节字符集字符串时,可能会出现问题,因为在这种情况下,空值被解释为意味着反斜杠(\)应该用作转义字符,从而破坏了预期行为。...(缺陷#32416811) TRUE源 代码中使用该符号导致某些平台上构建失败。替换为 true。...某些带有双重嵌套子查询查询中,一个这样隐藏项可能会成为其自己父子查询(而MySQL中标量子查询对此调用具有特殊旧式处理(对于不是的查询ONLY_FULL_GROUP_BY)),从而导致整个子查询...这也可以正确地处理表中行应使两个或多个单独实现无效情况,其中一些连接内,而某些更高。

3.6K20

ConfigureAwait in .NET 8

多年来,我见过这两种错误。 3、ConfigureAwait(false) 并不意味着”在线程池线程上运行此方法后续部分“或”不同线程上运行此方法后续部分“。...正常情况下await 会通过 await 时重新引发异常来观察任务异常。通常情况下,这正是你想要行为,但在某些情况下,你只想等待任务完成,而不在乎任务是成功完成还是出现异常。...当与 Task 一起使用时,其语义很清楚:如果任务失败了,异常将被忽略。但是,同样语义对 Task 并不完全适用,因为在这种情况下await 表达式需要返回一个值(T 类型)。...该规则默认为警告,但我建议将其设为错误,因为它在运行时总是失败。...就我个人而言,我发现强制异步行为单元测试中最有用。某些情况下,它还可以用来避免堆栈潜入。实现异步协调基元(如我 AsyncEx 库中原语)时,它也可能很有用。

18710

C#5.0新增功能01 异步编程

它遵循基于任务异步模式 (TAP)。 异步模型基本概述 异步编程核心是 Task 和 Task 对象,这两个对象对异步操作建模。 它们受关键字 async 和 await 支持。...大多数情况下模型十分简单: 对于 I/O 绑定代码,当你 await 一个操作,它将返回 async 方法中一个 Task 或 Task。...需了解要点 异步代码可用于 I/O 绑定和 CPU 绑定代码,但在每个方案中有所不同。 异步代码使用 Task 和 Task,它们是对后台所完成工作进行建模构造。...以下是编写代码前应考虑两个问题: 你代码是否“等待”某些内容,例如数据库中数据? 如果答案为“是”,则你工作是 I/O 绑定。 你代码是否要执行开销巨大计算?...请仅依赖方法返回值。 为什么? 这样更容易推断代码。 这样更容易测试代码。 混合异步和同步代码更简单。 通常可完全避免争用条件。 通过依赖返回值,协调异步代码可变得简单。

2.3K20

设置 PostgreSQL 以运行集成测试

隔离是首要目标什么不起作用使用事务使用 SQLite使用`pg_tmp`什么有效模板数据库安装内存盘使用带有内存磁盘 Docker 容器管理测试数据库结论测试方面,实现性能和可靠性至关重要。...本文中,我将解释如何设置PostgreSQL进行测试并讨论一些需要避免常见陷阱。隔离是首要目标我们深入细节之前,让我们先定义我们目标:隔离——我们希望确保每个测试都是隔离运行。...对于 CI/CD 管道中运行测试来说,缓慢解决方案将导致成本过高。我们提出解决方案必须允许我们不引入太多开销情况下执行测试。...需要注意模板数据库另一个限制是,复制源数据库时,没有其他会话可以连接到源数据库。CREATE DATABASE如果启动时存在任何其他连接,则会失败复制操作期间,将阻止与源数据库新连接。...该destroy方法可用于测试运行后清理数据库。结论这种设置允许我们多个分片上并行运行数千个测试,而不会出现任何问题。创建新数据库开销很小,并且隔离是在数据库级别的。

6110

代码测试意味着完全消灭了Bug?

像 Ruby 和 Python 这样动态语言中,测试对于不同前提很重要,就像下面这段代码将会正常工作: if condition: print('w00t') else: nonexistent_function...最糟糕是,除了验证你没有错误查询 SQL 查询之外,它甚至不测试任何其他内容。...对于大多数查询,集成测试和/或手动测试都是很好,并且广泛 SQL 模拟充其量是多余,并且最坏情况下是有害。...它可以很好解决一些问题; 对其他人而言并非如此。特别是,我认为“被迫在小单元编写代码” 某些情况下非常有害。有些代码只是一个串行脚本,上面写着“执行此操作,然后执行此操作,然后执行此操作”。...如果这样可以让事情变得更容易调试,那么我很乐意花更多精力写一些东西。 所有代码(包括测试代码)都可能以令人困惑,令人惊讶和意外方式(“错误”)失败,然后你需要调试该代码。

45910

sql连接查询中on筛选与where筛选区别

sql查询这个东西, 要说它简单, 可以很简单, 通常情况下只需使用增删查改配合编程语言逻辑表达能力,就能实现所有功能。 但是增删查改并不能代表sql语句所有, 完整sql功能人望而生畏。...连接查询语法中,人迷惑首当其冲就要属on筛选和where筛选区别了, 我们编写查询时候, 筛选条件放置不管是on后面还是where后面, 查出来结果总是一样, 既然如此,那为什么还要多此一举让...outer join相对于inner join一个主要特性就是以一侧表为基础,但是在这里以左表为基这一点却可以无视筛选条件,这未免也太霸道了一些。...而对于那条地址筛选where条件中sql,这一步便起到了作用,将所有地址不属于杭州记录筛选了出来 ?...通过上面的讲解,已经能反应出在outer join中筛选条件on中和where中区别,开发人员如能详细了解之中差别,能规避很多在编写sql过程中出现莫名其妙错误

3.2K80

Flask 之父:我不觉得有异步压力

背压很重要 我们从希思罗灾难中学到是,能够交流背压至关重要。现实生活中以及计算中,时间总是有限。最终人们放弃等待某些事情。特别是即使某些事物在内部可以永远等待,但在外部却不能。...但是,它隐藏了一个非常关键问题,这是我们所有问题根源:某些函数调用前面没有 await。在线程代码中,任何函数都可以 yield。异步代码中,只有异步函数可以。...当你设计自己基于数据流协议时,你需要绝对确保存在双向通信通道,即发送方不仅要发送,还要读取,以查看是否允许它们继续发。 对于数据流,关注点通常是不同。...然而,背压缺失是一种具有火箭筒大小步枪。如果你太晚意识到自己构建了个怪物,那么不对代码库进行重大更改情况下,几乎不可能修复它,因为你可能忘了某些本应使用异步函数上使用异步。...流量控制一出现时候,我就认为它非常复杂。很容易假装这不是个问题,这就是为什么我们处于这种混乱状态根本原因。流量控制还会增加大量开销,并且基准测试中效果不佳。

1.1K20

SparkSQL在有赞大数据实践(二)

本文接着上次的话题继续讲一下我们之后 SparkSQL 上所做一些改进,以及如何做到 SparkSQL 占比提升到 91% 以上,最后也分享一些 Spark 踩过坑和经验希望能帮助到大家。...这套 AB 测试灰度发布不能简单只是基于任务流量,我们希望先灰度一些非核心低优先级 SQL 任务并且白天时间段(低峰)来验证。...通过 tpcds 性能测试,同等资源情况下 SparkSQL 是 Hive 2~10 倍(不同 query 性能表现不一样)。在生产验证下来大部分确实有差不多 2 倍性能。...如果失败是因为 机器坏盘引起,那重试还是失败,重试次数达到最大后那最终整个 Job 失败。...4.7 低效且危险 Not in Subquery 举个例子, select * from t1 where f1 not in (select f1 from t2),对于 “ not in subquery

92910

如何查看 Linux 服务器性能参数指标?

通常来说运维人员、系统管理员会对这些数据极为敏感,但是这些参数对于开发者来说也十分重要,尤其当你程序非正常工作时候,这些蛛丝马迹往往帮助快速定位跟踪问题。...CPU 占用率高很多情况下意味着一些东西,这也给服务器 CPU 使用率过高情况下指明了相应地排查思路: √ 当 user 占用率过高时候,通常是某些个别的进程占用了大量 CPU,这时候很容易通过 top...-r:显示缺页错误和内存使用状况,缺页错误是程序需要访问映射在虚拟内存空间中但是还尚未被加载到物理内存中一个分页,缺页错误两个主要类型是 √ minflt/s 指 minor faults,当需要访问物理页面因为某些原因...,对于单个磁盘如果值>1表明设备饱和,对于多个磁盘阵列逻辑磁盘情况除外 √ await(r_await、w_await):平均每次设备 I/O 请求操作等待时间(ms),包含请求排列队列中和被服务时间之和...:设备使用率,表明每秒中用于 I/O 工作时间占比,单个磁盘当 %util>60% 时候性能就会下降(体现在 await增加),当接近100%时候就设备饱和了,但对于有多个磁盘阵列逻辑磁盘情况除外

6.7K30

linux性能统计

通常来说运维人员、系统管理员会对这些数据极为敏感,但是这些参数对于开发者来说也十分重要,尤其当程序非正常工作时候,这些蛛丝马迹往往帮助快速定位跟踪问题。...CPU 占用率高很多情况下意味着一些东西,这也给服务器 CPU 使用率过高情况下指明了相应地排查思路:√ 当 user 占用率过高时候,通常是某些个别的进程占用了大量 CPU,这时候很容易通过 top...-r:显示缺页错误和内存使用状况,缺页错误是程序需要访问映射在虚拟内存空间中但是还尚未被加载到物理内存中一个分页,缺页错误两个主要类型是√ minflt/s 指 minor faults,当需要访问物理页面因为某些原因...,对于单个磁盘如果值>1表明设备饱和,对于多个磁盘阵列逻辑磁盘情况除外√ await(r_await、w_await):平均每次设备 I/O 请求操作等待时间(ms),包含请求排列队列中和被服务时间之和...:设备使用率,表明每秒中用于 I/O 工作时间占比,单个磁盘当 %util>60% 时候性能就会下降(体现在 await增加),当接近100%时候就设备饱和了,但对于有多个磁盘阵列逻辑磁盘情况除外

24601

Linux性能指标测评

通常来说运维人员、系统管理员会对这些数据极为敏感,但是这些参数对于开发者来说也十分重要,尤其当程序非正常工作时候,这些蛛丝马迹往往帮助快速定位跟踪问题。...CPU 占用率高很多情况下意味着一些东西,这也给服务器 CPU 使用率过高情况下指明了相应地排查思路:√ 当 user 占用率过高时候,通常是某些个别的进程占用了大量 CPU,这时候很容易通过 top...-r:显示缺页错误和内存使用状况,缺页错误是程序需要访问映射在虚拟内存空间中但是还尚未被加载到物理内存中一个分页,缺页错误两个主要类型是√ minflt/s 指 minor faults,当需要访问物理页面因为某些原因...,对于单个磁盘如果值>1表明设备饱和,对于多个磁盘阵列逻辑磁盘情况除外√ await(r_await、w_await):平均每次设备 I/O 请求操作等待时间(ms),包含请求排列队列中和被服务时间之和...:设备使用率,表明每秒中用于 I/O 工作时间占比,单个磁盘当 %util>60% 时候性能就会下降(体现在 await增加),当接近100%时候就设备饱和了,但对于有多个磁盘阵列逻辑磁盘情况除外

30801

Linux 服务器性能参数指标总结

通常来说运维人员、系统管理员会对这些数据极为敏感,但是这些参数对于开发者来说也十分重要,尤其当你程序非正常工作时候,这些蛛丝马迹往往帮助快速定位跟踪问题。...CPU 占用率高很多情况下意味着一些东西,这也给服务器 CPU 使用率过高情况下指明了相应地排查思路: √ 当 user 占用率过高时候,通常是某些个别的进程占用了大量 CPU,这时候很容易通过 top...-r:显示缺页错误和内存使用状况,缺页错误是程序需要访问映射在虚拟内存空间中但是还尚未被加载到物理内存中一个分页,缺页错误两个主要类型是 √ minflt/s 指 minor faults,当需要访问物理页面因为某些原因...,对于单个磁盘如果值>1表明设备饱和,对于多个磁盘阵列逻辑磁盘情况除外 √ await(r_await、w_await):平均每次设备 I/O 请求操作等待时间(ms),包含请求排列队列中和被服务时间之和...:设备使用率,表明每秒中用于 I/O 工作时间占比,单个磁盘当 %util>60% 时候性能就会下降(体现在 await增加),当接近100%时候就设备饱和了,但对于有多个磁盘阵列逻辑磁盘情况除外

1.3K30

Linux 服务器性能参数指标总结

通常来说运维人员、系统管理员会对这些数据极为敏感,但是这些参数对于开发者来说也十分重要,尤其当你程序非正常工作时候,这些蛛丝马迹往往帮助快速定位跟踪问题。...CPU 占用率高很多情况下意味着一些东西,这也给服务器 CPU 使用率过高情况下指明了相应地排查思路: √ 当 user 占用率过高时候,通常是某些个别的进程占用了大量 CPU,这时候很容易通过 top...-r:显示缺页错误和内存使用状况,缺页错误是程序需要访问映射在虚拟内存空间中但是还尚未被加载到物理内存中一个分页,缺页错误两个主要类型是 √ minflt/s 指 minor faults,当需要访问物理页面因为某些原因...,对于单个磁盘如果值>1表明设备饱和,对于多个磁盘阵列逻辑磁盘情况除外 √ await(r_await、w_await):平均每次设备 I/O 请求操作等待时间(ms),包含请求排列队列中和被服务时间之和...:设备使用率,表明每秒中用于 I/O 工作时间占比,单个磁盘当 %util>60% 时候性能就会下降(体现在 await增加),当接近100%时候就设备饱和了,但对于有多个磁盘阵列逻辑磁盘情况除外

1.6K00
领券