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

《ASP.NET Core 与 RESTful API 开发实战》-- (第6章)-- 读书笔记(下)

; } 由于 LINQ 的 OrderBy 扩展方法不支持直接使用字符串,当资源支持多个排序字段时,一一判断比较繁琐,而且在进行后续排序时,还应该使用 ThenBy 子句,使得判断更加复杂,幸运的是可以借助第三方库...System.Linq.Dynamic.Core 实现动态 LINQ 查询 System.Linq.Dynamic.Core 除了支持直接使用属性名排序之外,还支持多属性排序,多个属性之间使用逗号隔开...parameters.SearchQuery, sortBy = parameters.SortBy }) : null 为了解决 DTO 与实体属性名不同时的映射问题,可以在程序中添加一个字典...IsRevert = isRevert; TargetProperty = targetProperty; } } } 接着,可以在...pageSize=3&sortby=birthplace,age 6.4 日志与异常 ASP.NET Core 内部集成了日志的功能,但是并不支持文件输出日志,因此我们通过 NLog 实现 安装nuget

58910

浅析Entity Framework Core2.0的日志记录与动态查询条件

本文主要是浅析一下Entity Framework Core2.0的日志记录与动态查询条件 去年写过一篇关于Entity Framework Core1.0和1.1的日志记录和事务的文章: 一步步学习...IRelationalCommandBuilderFactory ,DbCommandLogData 但是Entity Framework Core2.0 在DbContextOptionsBuilder添加了新的扩展方法...Entity Framework Core2.0出来这么久了..Github上面也有很多相关的扩展类库..今天我们就来玩玩这个动态查询库 开源地址:https://github.com/StefH/System.Linq.Dynamic.Core....where条件可以传递格式化字符串.包括排序与查询..都可以传入字符串的条件.....因为它是对IQueryable进行的扩展,所以没有数据库不支持的情况..只要有相关的驱动,就可以基于驱动来生成相关的SQL代码..(这里访问的就是MySQL) .. 写在最后 就到这里了..

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

用ASP.NET Core 2.1 建立规范的 REST API -- 翻页排序过滤等

这里简单讲一下,万一您不知道lambda表达式的话可以看一下。lambda表达式就是匿名的函数,它的类型是Func(可以赋值给Func类型的变量): ?...相信你能看懂,就不解释了,下面测试: ? 总之是好用的,就不贴其他测试结果的图片了。 应该把上面这段代码提取出来封装成一个方法函数并泛型化,但是暂时先不这样做。...幸好有一个微软的库支持这种操作,它叫做System.Linq.Dynamic.Core(其作者是红衣教主啊): ? 把它安装在了Infrastructure项目里供Repository使用。...注意这里OrderBy的命名空间是:System.Linq.Dynamic.Core。...由于Id这个属性可能是每个相关的Model共有的,所以在这个父类里,添加了Id属性的映射,Id是一对一的映射,排序方向相同。

1.2K10

c#基础系列3---深入理解ref 和out

应用场景 out 修饰函数参数,以传递引用的方式函数传递参数。 out 关键字也可与泛型类型参数结合使用,以指定该类型参数是协变参数 ref 修饰函数参数,以传递引用的方式函数传递参数。..."); 运行结果为 2 在struct声明中声明 ref struct 或 ref readonly struct,来实现值类型的引用语义(c#7.2新增,此处不做讨论) 相同之处 ref 和out都可以修饰函数的参数...ref告诉编译器调用函数之前必须初始化;out则反之,调用函数之前不必初始化。这其实也证实了“ref用于输入,out用于输出”的说法是有一点道理的,但是不是完全正确,难道ref不能用于方法的输出?...至于引用类型无特殊需求场景觉得没有必要添加ref或者out来画蛇添足。...的确,大多数情况下引用类型参数的传递没有必要添加ref或者out来修饰,但是如果方法体内修改了指针的指向的内存地址,我们的方法调用者又需要这个新的内存地址呢?

88710

神经网络基础之可视化和交互式指南!

以它为指导来训练我们的模型并使之成为我们的损失函数(也就是成本函数)。 既然我们已经定义了一个更好的模型的度量标准,让我们用更多的权重值进行实验,并将它们与我们的平均选择进行比较: ?...知道我们要最小化的函数(我们的损失函数,所有数据点的的平均值),并且知道它当前输入(当前的权重和偏差),损失函数的导数告诉我们为了最小化误差,哪个方向推和。 6....另外两个例子 房子的大小是决定房价的唯一变量?显然还有很多其它因素。我们再加一个变量,看看如何调整我们的神经网络。 假设你的朋友做了更多的研究,发现了更多的数据点。...特征 现在我们已经看了具有一个和两个特征的神经网络,我们还可以想办法添加额外的特征,并使用它们来计算得到预测。...权重的数量将继续增长,我们的梯度下降的实现将不得不在添加每个特征时进行调整,以便它可以更新与新特征相关联的新权重。

43820

POSTGRESQL 吊打 ORACLE 的“傲娇”

希望以此能获得 group by 1 2 + group by 1 + group 2 的数据,POSTGRESQL 可以?...继续不使用索引,3892ms 完成了整体的计算 继续提高要求,目前需要 GROUP (1 2) ROLLUP+ GROUP 1 ROLLUP + GROUP 2 ROLLUP POSTGRESQL 可以...这没有完,继续,在统计分析中有一个概念叫中位数概念,这个概念是抛弃所有数据的50%后,在做统计,当然也可以调整,抛弃更多的数据或留下更多的数据。 具体还是看下面的语句把,都完成了。 秒级完成。...并且 partition by order by 也没有问题 么最后我们还可以进行 而我们最常用的就是对我们查询的记录进行重新的排序编号 当然 POSTGRESQL 在数据库处理方面的函数也是一大把 简单列举一些...first_value() nth_value() last_value() row_number() 函数等等 同时还可以创建自己的聚集,方便定制化的功能。

1.2K40

JavaScript第七弹——深入理解浅拷贝与深拷贝

Hello小伙伴们,抱歉这两天没有更文,今天来将功补过啦,今天的主题是“拷贝”!大家还记得之前说过的数据类型,那可是我们今天的基础呢!...一个变量另一个变量复制基本类型的值,就会创建被复制值的副本,基本数据类型的值不能够添加属性。 ? 引用数据类型: 引用数据类型是对象,被保存在堆内存中。...从一个变量另一个变量复制引用类型的值时,复制的其实是指针地址而已,因此两个变量最终都指向同一个对象。 ? 那么对于基本类型和应用类型的数据,我们分别要怎样进行拷贝呢?...说到深拷贝,这又要分成是对数组对象的拷贝还是普通对象的拷贝,因为数组有自己的特性和函数。...好啦,今天的内容就是这么多了,不要看篇幅不大,但是信息量很大哦,大家也可以自己敲一遍,顺便通过更改对象的某个属性值来判断是不是真的实现了深拷贝呢~~ 喜欢兔妞的文章请给点个好看让更多人看到呦~~么么哒!

38830

全网最全的,最详细的,最友好的 Typescript 新手教程

TypeScript会自己添加更多类型,就像any(或更多)一样。 any是一个“松散的”TypeScript类型。这意味着:这个变量可以是任何类型:字符串,布尔值,对象,真的,不在乎。...想知道是否有一种方法可以的IDE中检查这个函数,而不需要运行代码或使用Jest测试它。这可能?...让我们函数添加第一个类型注释。...总之,跳过了TypeScript的另一个有用特性:函数的返回类型。 要理解为返回值添加类型注释为什么很方便,请想象一下正在摆弄您的奇特函数。...现在应该可以了! 我们代码添加了另一层保护。当然,这个bug可以通过单元测试发现。TypeScript是一个很好的安全层,而不是测试的完全替代。 让我们继续探索类型别名!

5.9K40

比Python更牛的语言有?看我用元类(metaclass)花式创建Python类

为了让更多的人看到本文,请各位读者动动小手,点击右上角【...】,将本文分享到朋友圈,thanks! Python类的定义再简单不过了。不过你有想过动态定义一个Python类?What?...动态定义,是动态解析Python代码?不,这仍然是静态定义。是说,干预类的创建过程,在类的创建过程中,对类中的一切东西动态干预,这个听起来很酷,那么到底是怎么做到的呢?继续看文章吧! 1....还记得type函数?该函数可以让你知道对象的类型。...# FooChild类动态添加echo_bar函数 FooChild = type('FooChild', (Foo,), {'echo_bar': echo_bar}) print(hasattr(...hasattr(FooChild, 'echo_bar')) # 输出:True my_foo = FooChild() my_foo.echo_bar() # 输出:True 在动态创建类之后,可以该类中添加更多方法

78220

译 - 为什么要学习Go?

没有什么比新的编程语言更使开发人员疯狂了,对?因此,在4到5个月前开始学习Go语言,在这里将告诉您为什么还要学习这种新语言。 不会教你如何在本文中写“ Hello World !!”。...将解释计算机硬件软件的当前阶段,以及为什么我们需要像Go这样的新语言?因为如果没有问题,那么我们就不需要解决方案,对? 硬件限制: 摩尔定律失败了。...从上面的图表中可以看到,单线程性能和处理器频率在近十年中一直保持稳定。如果您认为添加更多晶体管是解决方案,那么您错了。...因此,为了解决上述问题, 制造商开始处理器添加越来越多的内核。如今,我们有四核和八核CPU。 我们还介绍了超线程。 处理器添加更多缓存,以提高性能。 但是上述解决方案也有其 自身的局限性。...由于缓存具有物理限制,因此无法处理器添加越来越多的缓存来提高性能:缓存越大,缓存越慢。处理器添加更多内核也有其成本。同样,这不能无限期地扩展。这些多核处理器可以同时运行多个线程,这带来了并发性。

55650

怎样设计一个 JavaScript 插件系统

接下来就要添加更多的功能了。首先创建一个插件系统: 世界上最小的插件系统 先创建一个 register 方法,这样其他人就可以 BetaCalc 注册插件了。...如果插件作者忘了定义名称或返回值,可以通过添加错误处理机制来通知插件作者。需要像 QA 那样思考问题,并想象在什么情况下会使我们的系统崩溃,这样才能使我们为这些情况添加容错机制并避免崩溃。...我们还可以扩展插件的功能范围。现在一个 BetaCalc 插件可以添加一个功能。不过如果它还可以为某些生命周期事件注册回调,例如计算器将要显示结果值时,该怎么办?...我们还可以扩展插件注册。如果需要使用一些初始设置来注册插件怎么办?可以使插件更灵活?如果插件作者希望注册整个功能套件而不是一个功能该怎么办?为了支持这一点需要做哪些更改?...它足够简单?足够强大可以长期工作? 这种努力的付出是值得的,拥有一个好的插件系统可以帮助所有人。

78110

Flutter常见开发问题

它具有文本等属性,可让您按钮添加文本。但是 Flutter 中的按钮不是将标题作为字符串,而是另一个小部件。...它们还帮助您项目添加权限和特定于平台的功能。当您运行 Flutter 项目时,它会根据运行的模拟器或设备进行构建,使用其中的文件夹进行 Gradle 或 XCode 构建。...如果是编程新手,想从移动端开发入手,应该从 Flutter 开始? 这有更多的两部分答案。 Flutter 非常适合编写代码,并且在相同页面上的代码比 Android 或 iOS 应用程序少得多。...包通常是纯粹用 Dart 编写的新组件或代码,而插件则可以使用本机代码在设备端提供更多功能。通常在 DartPub 上,包和插件都被称为包,只有在创建新包时才会明确提到区别。...为什么我们将函数传递给小部件? 我们将一个函数传递给一个小部件,本质上是说,“当有事情发生时调用这个函数”。函数是 Dart 中的第一类对象,可以作为参数传递给其他函数

6.7K20

Flutter常见开发问题

它具有文本等属性,可让您按钮添加文本。但是 Flutter 中的按钮不是将标题作为字符串,而是另一个小部件。...它们还帮助您项目添加权限和特定于平台的功能。当您运行 Flutter 项目时,它会根据运行的模拟器或设备进行构建,使用其中的文件夹进行 Gradle 或 XCode 构建。...如果是编程新手,想从移动端开发入手,应该从 Flutter 开始? 这有更多的两部分答案。 Flutter 非常适合编写代码,并且在相同页面上的代码比 Android 或 iOS 应用程序少得多。...包通常是纯粹用 Dart 编写的新组件或代码,而插件则可以使用本机代码在设备端提供更多功能。通常在 DartPub 上,包和插件都被称为包,只有在创建新包时才会明确提到区别。...为什么我们将函数传递给小部件? 我们将一个函数传递给一个小部件,本质上是说,“当有事情发生时调用这个函数”。函数是 Dart 中的第一类对象,可以作为参数传递给其他函数

6.8K30

仅用50 行 JavaScript 代码从头构建区块链,向你介绍区块链的工作原理

今天的文章中,将通过仅使用 50 行 JavaScript 代码从头构建区块链,您展示区块链的工作原理。 在我们开始之前,想指出,如果您了解一些基本的编程知识,这篇文章会更容易理解。...还记得说过我们需要计算哈希值?是的,哈希值不仅仅是一个随机字符串,为了安全起见,我们需要根据当前数据和之前的哈希值来找到当前的哈希值。...我们还将链中添加一个 genesisBlock。genesis block 它基本上是链中的第一个块。因此,我们可以传递“0”作为前一个哈希值,因为没有前一个块。...接下来,我们将实现 addBlock 函数,该函数将一个新块添加到链中。 该函数接受新数据作为参数,并根据该数据和前一个区块的哈希值创建一个新区块。...总结 以上就是所要分享的文章内容。希望对您想更多地了解区块链会有所帮助。如果您觉得今天内容对您有所帮助,也请您分享给您的朋友,也许也可以帮助到他。

1K20

快速了解 React Hooks 原理

想阅读更多优质文章请猛戳GitHub博客,一年百来篇优质文章等着你! 我们大部分 React 类组件可以保存状态,而函数组件不能? 并且类组件具有生命周期,而函数组件却不能?...React 16.8 新出来的Hook可以让React 函数组件具有状态,并提供类似 componentDidMount和componentDidUpdate等生命周期方法。 类被会替代?...函数组件转换为类组件的过程中大概有5个阶段: *否认:也许它不需要是一个类,我们可以把 state 放到其它地方。 实现: 废话,必须把它变成一个class,不是? 接受:好吧,我会改的。...使用 Hook 轻松添加 State 接下来,使用新的 useState hook普通函数组件添加状态: import React, { useState } from 'react' function...它开始是空的, 每次调用一个hook时,React 都会该数组添加该 hook。

1.3K10

堆栈里的秘密行动:劫持执行流

居然还做了检查” “这可不是程序员做的,这是GCC编译器干的,只要编译的时候添加了-fstack-protector标记就会自动添加,对原来的程序代码是透明的” 听着小P的话,陷入了沉思。...但可以在它做检查之前就动手,抢先一步劫持执行流程,就没有机会做检查了。”,说完小P朝我眨了眨眼睛。 还有这种操作,还是第一次听说,“不覆盖返回地址怎么能劫持到执行流程呢?你打算怎么做?” “嘘!...不过你怎么知道对象的虚函数表指针在哪里呢?”,小P提出了疑问。 “虚表指针一般都是在对象的头部,也就是最前面8个字节” “所有对象都是?”...果不出乎所料,按照周密的计划,终于等来了执行的机会,潜伏这么久,总算是可以活动活动了。 “你在干嘛?”,小P大声喝住了。 “按照计划,在和0xCC大人联系啊” “你就这样直接建立网络连接?...原创不容易,快转发分享给更多人看啊

46910

用Numba加速Python代码

另外,因为我们的排序算法是O (n²),当我们添加更多的项目列表,我们的运行时增加成平方! 让我们用numba加快速度。...第二个问题是我们在函数上使用了jit修饰器。 将jit装饰器应用于函数numba发出信号,表示我们希望将转换应用于机器码到函数。...只要在函数上面添加@jit(nopython=True), Numba就会处理剩下的事情! 在的电脑上,整理所有这些数字平均需要0.1424秒——这是21倍的速度! ?...这一次,我们在函数的上方添加了vectorize装饰器,numba发出信号,它应该对我们的函数执行机器码转换。 ? vectorize装饰器接受两个输入。...上面的代码在的PC上组合数组的平均运行时间为0.001196秒——大约是2倍的加速。添加一行代码也不错! 它总是这么快

2.1K43

Citus 11 官方手册脑图 - PostgreSQL 超大规模分布式数据库解决方案上手指南

create_distributed_table 不存在 解决方法 不能使用列引用调用 UPDATE 查询中使用的 STABLE 函数 解决方法 FAQ 常见问题 可以在分布式表上创建主键?...忘记了表的分布列,如何找到? 可以通过多个键分发表? 为什么 pg_relation_size 报告分布式表的零字节?...为什么看到有关 max_intermediate_result_size 的错误? 可以在 Microsoft Azure 上运行 Citus ?...对于多租户应用程序,可以在 Citus 上按 schema 分片? cstore_fdw 如何与 Citus 一起工作? pg_shard 发生了什么?...一个带有 HLL 的汇总表胜过一千个没有 HLL 的汇总表 想了解更多关于 Postgres 中的 HLL 的信息

4.2K30
领券