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

使用MASA全家桶从零开始搭建IoT平台(七) 查询历史数据

: -10h)代表查询最近十小之内数据,这里有个需要注意地方,range(start: -1d),可以这样写来查一天之内数据,但是这一天按照UTC时间来统计。..._field == "PM_25",将只返回PM_25值 |> aggregateWindow(every: 2h, fn: mean) 由于设备上报数据比较频繁(我这里模拟数据5s上报一次),但是当我展示给用户图表时候...查询结果tables集合,我们可以通过GetTime()和GetValue()方法来拿到时间和对应值。...由于influxdb存储时间都是UTC时间,所以查询条件需要转换成UTC时间,使用o.GetValue()获取到object类型,我们需要转换成double。...,点击设备右侧按钮,弹出抽屉页面,显示我们ECharts图表,这里还使用了Tab组件,方便以后扩展设备相关其他功能 @page "/DeviceList" @using MASA.IoT.Core.Contract.Device

28520

.net core web api + Autofac + EFCore 个人实践

其一,修改ConfigureServices返回类型:void => IServiceProvider ;其二,如红色部分,这个懒得说太细,太费事儿,总之跟.NET其他框架下集成大同小异,没杀特别。...于是,这个模块类就成了你现在看到这个样子,通俗点儿讲就是找出当前模块文件所在程序集中所有类型注册为其实现服务接口,注册模式为生命周期模式。...,如果由我们业务代码主动引发业务级别异常,也就是类型为自定义BusinessException,则直接设置相应json结果状态码及 错误信息为我们引发异常定义状态码及错误信息;如果框架或数据库操作失败引发...老WebAPI中,需要通过Route来设置,具体请求方法约束需要单独通过类似HttpGet、HttpPut等来约束,而.NET CORE中,可以合二为一,路由设置和请求方法约束一起搞定。...实际上,路由中不光可以有控制器占位符,还可以有操作占位符,运行时会被操作名称代替,但这里Rest服务,不是MVC终结点,所以我没有添加控制器方法占位符[action]。

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

Repository个人实践

,前者Repository基础契约定义,后者该契约基于EF实现。...泛型IRepository接口用来规范所有仓储都应该具有的基础增删查改方法,这里有2点需要注意: 1)方法返回类型为IQueryable,目的延迟查询,用过类似EFORM应该都知道; 2)接口有个泛型参数...,很明显,DBContext基于EF数据上下文,而且,一般,我们具体项目中才用到上下文,都是SchoolDBContext之类,那么这里如何注册进来呢?...4、应用 基础架构定义好了,接下来就是我们仓储层具体应用,这里以一个简单ManifestRepository为例看下如何实现:   public class ManifestRepository :...我们再看看具体一个Add方法,看下它是如何与Repository、UoW交互: public Manifest AddManifest(Manifest manifest) {

96520

无需 XML Mapper,Fluent Mybatis 代码即是 SQL 操作!真香?

你好,我 Guide。最近看到一个 ORM 框架 Fluent Mybatis 挺有意思,整个设计理念非常符合工程师思维。...,注入到 Mybatis 解析器 应用编译,根据 Entity 注解,编译生成对应方法 SqlProvider,利用 Mybatis Mapper 上 @InsertProvider 、@SelectProvider..., 或者利用 Entity get 方法 lambda 表达式 通过编译手段生成对应方法名,直接调用方法即可 字段变更后错误发现 通过 get 方法 lambda 表达可以编译发现,通过字段编码无法编译发现...编译便可发现 不同字段动态 SQL 构造方法 通过接口参数方式 通过接口名称方式, Fluent API 编码效率更高 语法渲染特点 无 通过关键变量 select, update, set, and...测试 注入 HelloWorldEntity 对应 Mapper 类: HelloWorldMapper, 这个类 Fluent Mybatis 编译生成

91520

Wire 最佳实践

为在库中使用提供者集,你可以进行以下更改而不会破坏兼容性: •更改提供者集使用提供者来提供特定输出,只要不引入新提供者集输入。...相反,库提供者集应该只包含用于 API 客户端提供者,并让 *http.Client 成为提供者集输入。 模拟 有两种方法可以创建一个包含模拟依赖注入应用。...方法A:将模拟对象传递给注入器 创建一个仅用于测试注入器,将所有模拟对象作为参数传递给它;参数类型必须模拟接口类型。...方法B:从注入器返回模拟对象 创建一个新结构体,其中包含应用程序以及你想要模拟所有依赖。...创建一个仅用于测试注入器,返回这个结构体,并为具体模拟类型提供者,使用 wire.Bind 来告诉 Wire 这些具体模拟类型应该用于满足相应接口。

19920

阿里又来卷啦,一款比 Mybatis 更牛框架....

解析器应用编译,根据 Entity 注解,编译生成对应方法 SqlProvider,利用 Mybatis Mapper 上 @InsertProvider 、@SelectProvider 、...或者利用 Entity get 方法 lambda 表达式通过编译手段生成对应方法名,直接调用方法即可字段变更后错误发现通过 get 方法 lambda 表达可以编译发现,通过字段编码无法编译发现编译便可发现不同字段动态..., 可读性更高 Fluent Mybatis 实战 接下来,我们来看看如何使用 Fluent Mybatis 来实现增删改查。...,并且 Fluent API,让我们写一个测试来见证一下 Fluent Mybatis 魔法力量!...测试 注入 HelloWorldEntity 对应 Mapper 类: HelloWorldMapper, 这个类 Fluent Mybatis 编译生成

38420

AngularDart4.0 英雄之旅-教程-06服务 顶

Angular为组件生命周期中关键时刻提供接口:创建,每次更改之后,最终销毁。 每个接口都有一个方法组件实现该方法,Angular会在适当时候调用它。...当你点击一个英雄名字,应用程序应该显示英雄名单和英雄详情视图。 异步英雄服务 HeroService立即返回模拟英雄列表; 它getHeroes()签名同步。...使用远程服务器,用户不必等待服务器响应; 此外,您在等待期间无法阻塞用户界面。 为了协调视图和响应,你可以使用Futures,这是一个改变getHeroes()方法签名异步技术。...你正在模拟一个超快,零延迟服务器行为,通过返回一个模拟英雄立即可用Future。 将方法标记为async会自动将返回类型设置为Future。...您必须更改实现以在完成处理Future结果。 Future成功完成,您将显示英雄。

2.9K10

学点算法之队列学习及应用

队列定义很好理解: 队列有序结合,其中添加新一端称为队尾,移除一端称为队首。一个元素从队尾进入队列,一直向队首移动,直到它成为下一个需要移除元素为止。...队列抽象数据类型由以下结构和操作定义。如上所述,队列被构造为在队尾添加有序集合,并且从队首移除。队列保持 FIFO 排序属性。 队列操作如下。 Queue() 创建一个空新队列。...它不需要参数,并返回一个空队列。 enqueue(item) 将新添加到队尾。 它需要 item 作为参数,并不返回任何内容。 dequeue() 从队首移除。它不需要参数并返回 item。...如何活到最后 那我们回到上面的问题,如果你,你要如何选择并活到最后呢?...学生向共享打印机发送打印任务,任务被放置在队列中以便以先来先服务方式被处理。如何才能通过python程序模拟方式得到每次提交任务平均等待时间呢?

79170

如何在 Spring 中使用依赖注入

好吧,不就是去源码吗,让我们看看Spring文档: 依赖注入 (DI) 一个过程,对象仅通过构造函数参数、工厂方法参数或对象实例在构造或从工厂方法返回。...然后容器在创建 bean 注入这些依赖。这个过程基本上 bean 本身逆过程(因此得名,控制反转),它通过使用类直接构造或服务定位器模式自行控制其依赖实例化或位置。...结果,您类变得更容易测试,特别是依赖位于接口或抽象基类上,这允许在单元测试中使用存根或模拟实现。 “好吧好吧,但我还是不明白这一切要点,请你说得更清楚些?” ...当然,我们目标如何在代码中使用他,对吧?因此,让我们看一下这是如何在代码上工作。...,而注入过多依赖意味着类承担了过多责任,违反了面向对象单一职责原则,再多也没有警告被引入,因为这种方法可以无限期地扩展。

28120

如何进行微服务API测试

来自ThoughtWorksToby Clemson 在枚举您可能想要在微服务架构中使用测试策略方面做得非常出色(请参阅他文章,了解您可能想要创建不同类型测试),但主流知识如何构建和维护这些不同类型测试仍处于起步阶段...完成此操作后,可以独立于其两个依赖测试Portfolio微服务。 下一个挑战为不同情况配置不同环境,例如Accounts和Quotes服务显示预期和意外行为时。...Portfolio微服务订阅了“帐户更新”事件流,它看到Accounts微服务发布事件, 这种类型体系结构中异步通信引入了服务彼此高度分离好处 – 每个服务实例可以被替换,重新部署或扩展,...RabbitMQ微服务架构中用于实现此模式通用框架。一个微服务需要发布第二个微服务事件来处理然后等待从该第二个微服务读取“回复”事件,就会出现这种模式特定化身。...然后,这个虚拟微服务可以在可能需要它多个不同测试场景中重用。 第一种方法很简单,它是一种独立测试资产,在测试基础架构上没有额外外部依赖性。第二种方法可重用对系统真实行为更接近模拟

2.9K20

Linux系统下读取目录操作及可重入函数介绍

我自身一个小菜鸟,第一次听QEMU模拟器软件,不过听完老师介绍感觉这功能好强大,感觉都不用买硬件了来做实验(不过还是建议买开发板来做实验,比较有感觉,因为它还是不能模拟出特别先进芯片,以及无法模拟出类似于...dirent类型指针,这个指针指向一个结构体变量,这个结构体变量里面记录了一个目录(所谓目录就是目录中一个子文件)。...readdir函数内部户记住哪个目录已经被读过了哪个还没读,所以多次调用后不会重复返回已经返回目录readdir函数返回NULL就表示目录中所有的目录已经读完了。...else { break; } }; printf("总文件数为:%d\n", cnt); return 0; } 演示效果: 小结:这里也可以去尝试测试一下其他一些类型文件方法一样...,因为(**)语句刚执行完后,另外一个使用本函数进程可能正好被激活,那么新激活进程执行到此函数,将使 Exam 赋与另一个不同 para 值,所以控制重新回到 “temp = Square_Exam

1.6K10

.NET单元测试艺术-2.核心技术

通过使用存根,你在测试代码无需直接处理这个依赖。...二、交互测试-模拟对象   工作单元可能有三种最终结果,目前为止,我们编写过测试只针对前两种:返回值和改变系统状态。现在,我们来了解如何测试第三种最终结果-调用第三方对象。...我们看到这段代码只包含调用外部对象逻辑,没有返回值,也没有系统状态改变,那么我们如何测试Web Service抛出异常LogAnalyzer正确地调用了电子邮件服务呢?   ...3.4 使用NSubstitute模拟值   如果接口方法返回不为空,如何从实现接口动态伪对象返回一个值呢?...3.5 同时使用模拟对象和存根   这里我们在一个场景中结合使用两种类型伪对象:一个用作存根,另一个用作模拟对象。

1.6K20

响应Android系统事件

HARDKEYBOARDHIDDEN_YES,值为十六进制1。 keyboard:获取当前关联额键盘类型:该属性返回值: KEYBOARD_12KEY:只有12个键小键盘。...如果程序需要监听系统设置更改,则可以考虑重写ActivityonConfigurationChanged (Configuration newConfig)方法,该方法一个基于回调事件处理方法:...系统设置发生更改时,该方法会被自动触发。...,这样程序改变手机屏幕方向,ActivityonConfigurationChanged()方法就会被回调。...在Genymotion模拟器上修改模拟屏幕方向,具体操作如下左图所示,模拟器屏幕方向切换,可以看到如下右图所示消息提示。 ? 当然如果用真机测试,测试就更方便了。

1.4K90

与我一起学习微服务架构设计模式9—测试策略(上)

使用模拟和桩进行测试 被测系统在运行时常会依赖另一些系统,依赖麻烦在于它们可能把测试复杂化,减慢测试速度。 解决方案使用测试替身,该对象负责模拟依赖行为。...测试替身分为stub(代替依赖向被测系统发送调用返回值),mock(用来验证被测系统是否正确调用来依赖,也扮演stub角色) Mockito:流行java模拟对象框架 测试不同类型 根据范围分类...为服务编写单元测试 两种类型单元测试: 独立型单元测试: 使用针对类依赖性模拟对象隔离测试类,常用于领域服务(Service),控制器类、入站和出站消息网关测试。...一种方法编写使用真实数据库和消息代理以及桩服务测试,以此模拟各种Saga参与方,但这样测试缓慢,更有效方法编写模拟与数据库和消息代理交互测试,这样可以专注于Saga核心职责。...为领域服务编写单元测试 三个阶段: 配置服务依赖模拟对象 调用服务方法 验证服务方法返回值是否正确,以及是否已正确调用依赖 为控制器编写单元测试 如Spring Mock Mvc这类框架使你能够测试

2.8K00

架构之路 (七) —— iOS AppSOLID原则(一)

您可能能够快速找到任何给定论文,但是其他人在寻找某些东西,就很难找到他们需要东西。你代码很像你办公桌,只是其他人更有可能需要它东西。...您定义每个类或类型应该只有一工作要做。这并不意味着你只能实现一种方法,而是每个类都需要有一个专注、专门角色。 2....如何不这样做一个完美例子每日和每周报告实施。...date: Date, comment: String ) -> Bool { 接下来,在方法结束返回 true。...它现在可以自由使用任何类型存储,只需对您代码进行最少更改。 3) 添加新报告类型在枚举中添加新值问题。 4) 创建预览和测试比以前容易得多,而且您不再需要任何复杂模拟对象。

4.7K10

10个小技巧助您写出高性能ASP.NET Core代码

return Ok(posts); } catch (Exception) { return BadRequest(); } } 接下来代码然了我们如何在...Wait 和 Task.Result 在AggregateException中包含所有类型异常,并在在执行异常处理增加复杂性。...我们有很多异步方法可用于I/O操作,如ReadAsync、WriteAsync、FlushAysnc等。下面一个简单例子,说明我们如何异步创建一个文件副本。...第一次,您将请求服务器并获得响应,此响应将在某个地方存储一段时间(将有一些到期),下一次您对相同响应进行调用时,您将首先检查您是否已经在第一个请求中获得了数据并存储在某个地方,如果是的话,您将检查是否已经获得了数据...我们可以在ASP.NET Core中使用不同类型缓存,比如我们可以在内存中进行缓存,也可以使用响应缓存,也可以使用分布式缓存。

4.5K31
领券