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

使用过滤器在GetAll上运行Task.FromResult并等待它--这是一种糟糕的做法吗?

使用过滤器在GetAll上运行Task.FromResult并等待它是一种糟糕的做法。

首先,让我们解释一下这个问题的背景。在云计算领域中,过滤器是一种常用的技术,用于对数据进行筛选和处理。GetAll是一个方法,用于获取所有的数据。Task.FromResult是一个用于创建已完成的任务的方法。在这种情况下,使用过滤器在GetAll上运行Task.FromResult并等待它,意味着我们将使用过滤器对获取的所有数据进行处理,并等待处理完成。

然而,这种做法是糟糕的,原因如下:

  1. 性能问题:使用过滤器在GetAll上运行Task.FromResult并等待它可能会导致性能问题。由于过滤器是在获取所有数据后才进行处理,这意味着我们需要等待所有数据加载完成才能开始处理。如果数据量很大,这可能会导致延迟和性能下降。
  2. 内存问题:如果数据量很大,将所有数据加载到内存中可能会导致内存溢出。过滤器需要在内存中对数据进行处理,如果数据量过大,可能会导致内存不足的问题。
  3. 可维护性问题:将过滤器直接应用于GetAll方法可能会导致代码的可维护性下降。如果以后需要修改过滤器逻辑或者添加其他处理步骤,可能需要修改GetAll方法的实现。这样会增加代码的复杂性和维护成本。

相反,更好的做法是将过滤器应用于数据源,以便在获取数据时就进行筛选和处理。这样可以避免性能和内存问题,并提高代码的可维护性。可以使用适当的查询语言或数据库查询来实现这一点。

总结起来,使用过滤器在GetAll上运行Task.FromResult并等待它是一种糟糕的做法,可能会导致性能问题、内存问题和可维护性问题。更好的做法是将过滤器应用于数据源,以便在获取数据时进行筛选和处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET Core: 全新ASP.NET !

另外,使得 ASP.NET 应用更加精简和模块化(可以根据你应用需要向里面添加其他模块),跨平台(你可以很容易 Windows, Mac or Linux 开发和部署你应用),云优化(你可以云上部署和调试你应用...跨平台运行时 你可以 OSX 和 Linux运行 ASP.NET Core 应用,这对于 ASP.NET 来说,这具有跨时代意义,也给 ASP.NET 开发者和设计师们带来了全新体验。... 14年前,ASP.NET 平台基本只能部署一种服务器,那就是 IIS。...另外,ASP.NET Core 也会包含一个叫做 Kestrel Web 服务器,建立 libuv ,主要用于 iOS 和 Linux 操作系统。...以上 ASP.NET Core 1.0 新特性和新概念介绍,是为了更好帮助我们使用 ASP.NET Core 进行开发,同时开发过程中,我们还可以借助一些好工具来提高开发效率,减少代码量,如

11.3K101
  • asp.net core 认证及简单集群

    众所周知,Asp.net WebAPI中,认证是通过AuthenticationFilter过滤器实现,我们通常做法是自定义AuthenticationFilter,实现认证逻辑,认证通过,继续管道处理...Demo中,我要求也是这个,只要是经过基本认证用户即可,那为什么Demo中没有使用呢?因为这里是个坑!...因为,如果按注释中方法配置,我需要在每个希望认证控制器或方法都用Authorize标记,甚至还需要在特性配置角色或策略,而这里我预设是全局认证,所以,直接以全局过滤器形式添加到了MVC处理管道中...我也觉得没关系啊,这是net core认证第二个坑,那就是,.net core或者微软看来,认证仅仅提供Principal生成、序列化、反序列化及重新生成Principal,职责确实也包括了返回...,特别感谢Savorboard大神特别指正。

    1.2K10

    我是这样从零开始用深度学习做狗脸识别 iOS App

    iPhone 实时视频顶部运行 使用 ARKit 显示 3D 过滤器(二维表示不是那么酷) 从对深度学习一无所知到做出一个还不错 app(https://itunes.apple.com/...我想要分享我每一步中所学到经验。 我希望那些刚接触深度学习的人会觉得这些方法很有用。 步骤 1:深度学习大都是现成,有点奇怪 我需要回答第一个问题是“这是可能?”。我问题容易处理?...步骤 3:确保模型 iOS 运行 现在有了一个简单工作模型,我下一步是确保它能在一个手机上运行,并且运行得足够快。... iOS 运行.mlmodel 可以通过教程代(http://suo.im/4NmTUj)码完成。如此简单过程让我被征服了。...使用pip安装版本box外无法运行,我必须使用 python2.5 conda 环境中从源代码构建,打补丁。嘿,至少它有用。

    1.3K20

    《C#并发编程经典实例》笔记

    首先检查操作是否已经完成,如果完成了,就继续运行 (同步方式)。否则,它会暂停 async 方法,返回,留下一个未完成 task。一段时间后, 操作完成,async 方法就恢复运行。...await代码中抛出异常后,异常会沿着Task方向前进到引用处 你一旦代码中使用了异步,最好一直使用。调用 异步方法时,应该(调用结束时)用 await 等待返回 task 对象。...解决办法是可以使用 Task.FromResult 方法创建返回一个新 Task 对象,这个 Task 对象是已经 完成,并有指定使用 IProgress 和 Progress 类型。...其中一种做法使用 Task.Wait,并在有错误时拆开 AggregateException 对象。...NET 中使用 Task.Run,这是因为 ASP.NET 中,处理请求代码本来就是在线程池线程中运行,强行把放到另一个线程池线程通常会适得其反 (7) 实用技巧 程序多个部分共享了一个资源,

    1.7K71

    WordPress开发人员犯12个最严重错误

    一种非常流行站点快速搭建与运行方式。...2.使用那些变量、函数、常量或类中太常见名称 开发插件时,最好使用一种命名约定来防止代码冲突,以防有其他插件使用相同名称。...ver=1' />),根据仪表板中更新自定义设置生成CSS代码。 这在WordPress性能方面真的是一个糟糕做法。...当然,该文件可以浏览器中运行(虽然我确定打印时,甚至不会缩进或漂亮),但是如果您有本地项目副本浏览主题代码,并且需要找到一个CSS或JavaScript语法(使用script.php情况下)...PHP方法中使用HTML代码通常是一种不好做法(当然对于小HTML代码也有例外),特别是对于一个由多个开发人员维护插件来说。

    2.9K10

    深入探讨 C# 和 .NET 中 asyncawait 历史、背后设计决策和实现细节

    最后,我们需要一种方法来传播可能在任务中发生任何异常(如果这是一个通用MyTask,则返回_result);为了促进某些情况,我们还允许此方法阻塞等待任务完成,我们可以使用ContinueWith...这是模式另一部分,必须在异步方法返回位置使用类型公开,用于状态机上执行初始MoveNext。...如果数据存储在线程静态字段中,异步方法将能够访问,但是仅在它在调用线程同步运行点之前;如果它将一个continuation连接到某个启动操作,而该continuation最终某个其他线程运行...即使碰巧同一个线程运行,或者因为调度程序强制这样做,到运行时,数据可能已被该线程启动某些其他操作删除和/或覆盖。...这就是你能够UI应用程序某个事件处理程序中等待使代码等待完成后继续正确线程运行原因。

    89241

    .NET 源代码自动生成

    中介者模式 中介模式是应用程序中解耦模块一种方式。基于web应用程序中,通常用于将前端与业务逻辑解耦。 .NET平台上,MediatR库是该模式最流行实现之一。...有了CQRS,我们会从这样做: 改为这样做: CQRS通常与event sourcing相关联,但是使用CQRS并不需要使用event sourcing,而仅仅使用CQRS本身就会给我们带来很多架构优势...一个非常高层次,你可以看到如下: 首先,编译器编译你C#源代码生成语法树。 然后,源代码生成器可以检查这个语法树生成新C#源代码。...然后,这个新源代码被编译添加到最终输出中。 重要是要知道源代码生成器永远不能修改现有的代码,只能向应用程序添加新代码。...2、SourceGenerator-MediatR-CQRS 这是一个使用源代码生成器示例应用程序。查看项目文件,以了解该项目如何引用源生成器。

    18310

    找到杀掉 Linux 系统中僵尸进程命令方法

    重点要说是,僵尸进程并没有像名称那样看起来可怕。 但如果系统内存已经所剩不多或者有太多僵尸进程吃掉内存,问题会变得糟糕。...这是真实可能发生,它有一定概率,特别当存在一个编码糟糕程序开始大量产生僵尸进程时候。 在这种情况下,找到杀死僵尸进程是一个明智做法。...如何找到僵尸进程 Linux 系统中进程可能处于如下状态中一种: D = 不可中断休眠 I = 空闲 R = 运行中 S = 休眠 T = 被调度信号终止 t = 被调试器终止 Z = 僵尸状态...一个简单方法是终端中使用 top 命令。...如何找到杀死一个僵尸进程?僵尸进程能被杀死? 僵尸进程已经死了,要如何才能杀死一个已经死亡进程呢? 僵尸电影中,你可以射击僵尸头部或烧掉它们,但在这里是行不通

    11.1K40

    ASP.NET Core依赖注入深入讨论

    如果我们打算共享一个实例,这是一种方法: var dataService = new DataService(); services.AddSingleton(dataService...如果可能的话,我会尽量避免使用RequestServices,并且只中间件必须能够缺少某些组件一样可以运行情况下才使用它。...您也可以通过特定Action添加参数,使用FromServicesAttribute特性对其进行装饰来注入所需服务,这会指示MVC Core从服务集合中获取,而不是尝试对其进行模型绑定。...TypeFilterAttribute会先找出过滤器依赖项通过DI获取它们,然后创建过滤器。...{ mvc.Filters.Add(typeof(TestActionFilter)); }); } 这样就不需要将过滤器添加到服务集合,工作方式就好像您已经每个控制器添加了

    2.2K10

    C#异步使用要点(翻译)

    异步操作时需要注意要点 1.使用异步方法返回值应当避免使用void 使用异步方法中最好不要使用void当做返回值,无返回值也应使用Task作为返回值,因为使用void作为返回值具有以下缺点 无法得知异步函数状态机什么时候执行完毕...Task.FromResult代替Task.Run 对于一些预先知道结果或者只是一个简单计算函数,使用Task,FromResult要比Task.Run性能要好,因为Task.FromResult只是创建了一个包装已计算任务任务...(1 + 1); } 还有另外一种代替方法,那就是使用ValueTask类型,ValueTask是一个可被等待异步结构,所以并不会在堆中分配内存和任务分配,从而性能更优化....,这样通常会导致线程饥饿和死锁 线程饥饿(starvation):指等待时间已经影响到进程运行,如果等待时间过长,导致进程使命没有意义时,称之为饿死 死锁(deadlock):指两个或两个以上线程相互争夺资源...ConcurrentDictionary.GetOrAdd注意场景 缓存异步结果是一种很常见做法,ConcurrentDictionary是一个很好集合,而GetOrAdd也是一个很方便方法,它用于尝试获取已经存在

    3.4K50

    掌握这些 Redis 技巧,百亿数据量不在话下!

    一、Redis封装架构讲解 实际NewLife.Redis是一个完整Redis协议功能实现,但是Redis核心功能并没有在这里面,而是NewLife.Core里面。...大家运行调试后可以看到控制台输出内容:向右箭头=》是ic.Log=XTrace.Log输出日志。 ?...Redis中布隆过滤器,去重,面试时候问比较多。...2、Redis经验分享 Linux多实例部署,实例个数等于处理器个数,各实例最大内存直接为本机物理内存,避免单个实例内存撑爆(比方说8核心处理器,那么就部署8个实例)。...所以既可以实现列表结构,也能队列,还能实现栈。 Q3:存放多个字段类性能一样? A3:大部分场景都不会有偏差,可能对于大公司数据量比较大场景会有些偏差。

    69350

    马库斯:新必应比ChatGPT更狂野,微软是故意还是不小心?

    ,但是实际使用中预测了太多假阳性(false positives)样本。...也就是说,过滤器太烦人了,所以真正搜索引擎里不能用。 可能性3:为了获取用户反馈 Bing有可能故意关闭了过滤器限制,以获得更多关于可能出错用户反馈。...这是一个非常糟糕消息,不仅在人力和经济成本方面(意味着需要更多低薪人员做糟糕工作),而且可信度方面,也将意味着无法保证任何新大型语言模型迭代是安全。...类比医学领域发布新药,公众要求新药发布之前实验室内进行充分测试,换到大型语言模型发布,特别是如果数十亿人可能使用到,且可能存在严重风险(例如扰乱用户心理健康和婚姻状况)情况下,我们也不应该让他们直接公开测试...而目前,人工智能基本处于狂野发展阶段,任何人都可以发布一个聊天机器人。 国会需要弄清楚发生了什么,开始设置一些限制,特别是情感或身体很容易造成伤害地方。 新闻业里,媒体也让人很失望。

    30930

    学会这几个Redis技巧,让你程序快如闪电

    一、Redis封装架构讲解 实际NewLife.Redis是一个完整Redis协议功能实现,但是Redis核心功能并没有在这里面,而是NewLife.Core里面。...大家运行调试后可以看到控制台输出内容:向右箭头=》是ic.Log=XTrace.Log输出日志。 ?...Redis中布隆过滤器,去重,面试时候问比较多。...2、Redis经验分享 Linux多实例部署,实例个数等于处理器个数,各实例最大内存直接为本机物理内存,避免单个实例内存撑爆(比方说8核心处理器,那么就部署8个实例)。...所以既可以实现列表结构,也能队列,还能实现栈。 Q3:存放多个字段类性能一样? A3:大部分场景都不会有偏差,可能对于大公司数据量比较大场景会有些偏差。

    44140

    这几个Redis使用技巧,让你程序快如闪电

    大家运行调试后可以看到控制台输出内容:向右箭头=》是ic.Log=XTrace.Log输出日志。 ?...Redis中布隆过滤器,去重,面试时候问比较多。...2、Redis经验分享 Linux多实例部署,实例个数等于处理器个数,各实例最大内存直接为本机物理内存,避免单个实例内存撑爆(比方说8核心处理器,那么就部署8个实例)。...合理设计每一对KeyValue大小,包括但不限于使用批量获取,原则是让每次网络包控制1.4k字节附近,减少通信次数(实际经验几十k,几百k也是没问题)。...所以既可以实现列表结构,也能队列,还能实现栈。 Q3:存放多个字段类性能一样? A3:大部分场景都不会有偏差,可能对于大公司数据量比较大场景会有些偏差。

    58730

    几个Redis使用技巧

    一、Redis封装架构讲解 实际NewLife.Redis是一个完整Redis协议功能实现,但是Redis核心功能并没有在这里面,而是NewLife.Core里面。...大家运行调试后可以看到控制台输出内容:向右箭头=》是ic.Log=XTrace.Log输出日志。 ?...Redis中布隆过滤器,去重,面试时候问比较多。...2、Redis经验分享 Linux多实例部署,实例个数等于处理器个数,各实例最大内存直接为本机物理内存,避免单个实例内存撑爆(比方说8核心处理器,那么就部署8个实例)。...所以既可以实现列表结构,也能队列,还能实现栈。 Q3:存放多个字段类性能一样? A3:大部分场景都不会有偏差,可能对于大公司数据量比较大场景会有些偏差。

    50920

    这几个Redis使用技巧,让你程序快如闪电

    实际NewLife.Redis是一个完整Redis协议功能实现,但是Redis核心功能并没有在这里面,而是NewLife.Core里面。...大家运行调试后可以看到控制台输出内容:向右箭头=》是ic.Log=XTrace.Log输出日志。 ?...Redis中布隆过滤器,去重,面试时候问比较多。...2、Redis经验分享 Linux多实例部署,实例个数等于处理器个数,各实例最大内存直接为本机物理内存,避免单个实例内存撑爆(比方说8核心处理器,那么就部署8个实例)。...所以既可以实现列表结构,也能队列,还能实现栈。 Q3:存放多个字段类性能一样? A3:大部分场景都不会有偏差,可能对于大公司数据量比较大场景会有些偏差。

    44620

    Struts2【拦截器】

    什么是拦截器 拦截器Interceptor…..拦截器是Struts概念,它与过滤器是类似的…可以近似于看作是过滤器 为什么我们要使用拦截器 前面介绍Struts时候已经讲解过了,Struts为我们实现了很多功能...因为我们启动服务器时候会自动装载这个文件,因此我们才可以Action中使用到Struts为我们提供功能【数据自动封装…文件上传】 struts-default.xml中定义拦截器就有32个之多...如果我们想要使用默认拦截器栈功能,就必须把配置我们自定义栈中!...来编写了一个防止表单重复提交小程序了,我们来回顾一下我们当时是怎么做Servlet生成独一无二token,保存在Session域中,交给JSP页面 JSP页面提交表单数据时候,把token...这里写图片描述 需要提交表单使用token标签 <td

    87950

    Envoy实现.NET架构网关(三)代理GRPC

    gRPC是一种与语言无关高性能远程过程调用 (RPC) 框架。gRPC 主要好处是:现代、高性能、轻量级 RPC 框架。契约优先 API 开发,默认使用协议缓冲区,与语言无关实现。...可用于多种语言工具来生成强类型服务器和客户端。支持客户端、服务器和双向流调用。通过 Protobuf 二进制序列化减少网络使用。这些优势使 gRPC 非常适合:效率至关重要轻量级微服务。...什么是grpc-json转码器grpc-json转码器是Envoy中一个过滤器允许 RESTful JSON API 客户端通过 HTTP 向 Envoy 发送请求代理到 gRPC 服务。...,其中需要注意是以下几点我们需要将dns_type改为static,因为我们grpc用是ip而不是域名并且需要指定auto_mapping: true,这样就可以我们没有设置http method.../我们需要使用POST方法。 通过postman调用接口来看,我们成功利用GRPC-Json转码器实现了grpc代理,实现了grpc负载!!

    66030

    【微服务架构】微服务不是魔术:处理超时

    超时(或更糟糕是,无限长等待)是分布式系统一个基本事实,我们需要知道如何处理它们。 问题 让我们从一个思想实验开始:你有没有给同事发邮件向他们要东西?...方法 当人们远程系统调用中遇到超时时,有几种常见方法。我并不声称这份清单是详尽无遗,但它确实涵盖了我见过许多最常见场景。 方法#1 当您遇到超时时,假设成功继续前进。 请不要这样做。...[1]不幸是,我不得不说这是一个常见无意识选择,即使在生产应用程序中,也会有一些非常糟糕用户体验结果。...远程服务器可能由于与初始故障相同原因而完全无法访问,但即使这是真的,我们仍然无法知道问题是处理初始请求之前还是之后发生。 方法#5 放弃让用户弄清楚。...这需要最少努力,并且可以说可以防止我们做出错误决定,因此许多情况下这可能是最佳选择。我们还需要问自己:我们用户能找出正确做法?他们是否有足够信息和对其他系统洞察力来确定如何前进?

    63610
    领券