poco

.NET Core 选项模式【Options】的使用

别来无恙 提交于 2020-08-13 06:51:38
ASP.NET Core引入了Options模式,使用类来表示相关的设置组。简单的来说,就是用强类型的类来表达配置项,这带来了很多好处。利用了系统的依赖注入,并且还可以利用配置系统。它使我们可以采用依赖注入的方法直接使用绑定的一个POCO对象,这个POCO对象就叫做Options对象。也可以叫做配置对象。 以下大多内容来自官方文档,我只是个翻译官或者叫搬运工吧! 引入Options扩展包 PM>Package-install Microsoft.Extensions.Options 绑定分层配置 在appsetting.json文件增加如下配置 "Position": { "Title": "Editor", "Name": "Joe Smith" } 创建以下 PositionOptions 类: public class PositionOptions { public const string Position = "Position"; public string Title { get; set; } public string Name { get; set; } } 选项类: 必须是包含公共无参数构造函数的非抽象类。 类型的所有公共读写属性都已绑定。 不会绑定字段。 在上面的代码中,Position 未绑定。 由于使用了 Position 属性

C# 数据操作系列

…衆ロ難τιáo~ 提交于 2020-08-05 21:06:15
0. 前言 今天是NHibernate的第二篇内容,通过上一篇的内容,我们初步了解了NHibernate的创建和使用。这一篇,我继续探索NHibernate背后的秘密。嗯,就是这样。 1. NHibernate结构 先给小伙伴们放个图: 这是NHibernate的整体结构图。NHibernate通过ADO.NET 建立访问数据库的连接,然后封装了一个Transaction(事务)工厂和一个Session工厂。每次操作的时候,通过两个工厂获取对应的Session/Transaction示例操作数据对象。 ISessionFactory - NHibernate.ISessionFactory: 一个基于单数据库的已编译的映射缓存,它是持久不变的且线程安全(额,这句话是从它的文档翻译过来的)。是一个提供ISession的工厂类,同时也是一个 IConnectionProvider的客户端。可以设置一个在事务之间的进程级或集群级的二级缓存。 ISession - NHibernate.ISession: 一个单线程、短生命周期的对象,表示从应用程序和数据持久化之间一个连接。一个ADO.NET连接的封装,用来提供ITransaction的工厂。提供了一个通过主键检索对象和导航链接查询对象时的一级缓存。也就是EF Core中的导航属性。 Persistent Objects and

ASP.Net Core 3.1 中使用JWT认证

大憨熊 提交于 2020-08-04 11:11:54
JWT认证简单介绍 关于Jwt的介绍网上很多,此处不在赘述,我们主要看看jwt的结构。 JWT主要由三部分组成,如下: HEADER.PAYLOAD.SIGNATURE HEADER 包含token的元数据,主要是加密算法,和签名的类型,如下面的信息,说明了 加密的对象类型是JWT,加密算法是HMAC SHA-256 {"alg":"HS256","typ":"JWT"} 然后需要通过BASE64编码后存入token中 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 Payload 主要包含一些声明信息(claim),这些声明是key-value对的数据结构。 通常如用户名,角色等信息,过期日期等,因为是未加密的,所以不建议存放敏感信息。 {"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name":"admin","exp":1578645536,"iss":"webapi.cn","aud":"WebApi"} 也需要通过BASE64编码后存入token中

C# 数据操作系列

若如初见. 提交于 2020-07-24 04:13:46
0. 前言 今天是NHibernate的第二篇内容,通过上一篇的内容,我们初步了解了NHibernate的创建和使用。这一篇,我继续探索NHibernate背后的秘密。嗯,就是这样。 1. NHibernate结构 先给小伙伴们放个图: 这是NHibernate的整体结构图。NHibernate通过ADO.NET 建立访问数据库的连接,然后封装了一个Transaction(事务)工厂和一个Session工厂。每次操作的时候,通过两个工厂获取对应的Session/Transaction示例操作数据对象。 ISessionFactory - NHibernate.ISessionFactory: 一个基于单数据库的已编译的映射缓存,它是持久不变的且线程安全(额,这句话是从它的文档翻译过来的)。是一个提供ISession的工厂类,同时也是一个 IConnectionProvider的客户端。可以设置一个在事务之间的进程级或集群级的二级缓存。 ISession - NHibernate.ISession: 一个单线程、短生命周期的对象,表示从应用程序和数据持久化之间一个连接。一个ADO.NET连接的封装,用来提供ITransaction的工厂。提供了一个通过主键检索对象和导航链接查询对象时的一级缓存。也就是EF Core中的导航属性。 Persistent Objects and

11 | 如何测试基于Unity3D引擎的游戏

纵饮孤独 提交于 2020-05-07 08:59:47
转载: https://airtest.doc.io.netease.com/tutorial/0_automated_testing/ 11 | 如何测试基于Unity3D引擎的游戏 由于游戏的界面是通过游戏引擎渲染出来的,游戏界面没有系统原生的控件信息,所以对于游戏,我们需要接入Poco-SDK才能获取到游戏界面中的控件信息。下面以Unity开发的手游为例,介绍如何在Android和iOS平台进行连接。 11.1 Android 平台 从Poco SDK Repo将Unity3D这个文件夹克隆下来。 将克隆下来的Unity3D文件夹放置于你的Unity项目的Assets/Scripts文件夹下。 将Assets/Scripts/Unity3D目录下以未用到的UI系统命名的文件夹删除。例:假如您的项目使用的UI系统是UGUI,请将FairyGUI和NGUI两个文件夹删除,保留UGUI文件夹。 在Unity3D中打开您的项目,并将Unity3D/PocoManager.cs作为一个script component添加到您的GameObject中,通常情况下是您的主相机。 举例:点击demo这个场景下的Main Camera,会在右方出现inspector界面,点击inspector界面当中的Add Component。 在弹出的对话框中输入Poco,选择出现的Poco

Airtest常见的元素定位不到

心不动则不痛 提交于 2020-05-04 18:46:17
一.为什么发这博客 前几天业务需要需要操作云手机进行爬取没办法只有混进airtest官方群边学习边进行开发,蛮简单的东西(可能是我之前会selenium,appuim关系吧),但是群里会有很多问题,关于匹配元素其实很简单..... 我就把我使用经验总结一下 二.单个和多个 '你一定要把它当做一个网页' 匹配一个 poco('xx') 匹配多个 list(pcoc('xx')) #加个ls你可以看的更加清晰加了后也可以用 #for循环也好,切片工具也好你都可以选择 #其实就这么简单 三.元素的后续节点选择 当使用一个元素的属性没法精准匹配到该元素的时候的使用 poco('条件1').下面介绍的方法(条件2) child 获取当前节点下的子节点,如果是多个获取多个,没有转换list或者不用for循环提取默认提取第一个节点 children 获取子节点,如果是多个获取多个,没有转换list或者不用for循环提取默认提取第一个节点 #那他和child有什么区别呢,只能说用起来有区别child可以选择指定的子节点,而children没法指定 offspring 获取当前节点下的孙节点,如果是多个获取多个,没有转换list或者不用for循环提取默认提取第一个节点 sibling 获取当前节点的兄弟节点 parent 获取当前节点的父节点 元素文本正则匹配 poco(textMatches=

NEST 之旅 · 开启

冷暖自知 提交于 2020-04-28 08:09:38
NEST 之旅 · 开启 Version:5.x 英文原文地址: Getting started 说实话,这篇文章翻译的很糟糕。但是我的能力有限,目前只有这个水平,还望各位多指导。 NEST 是 Elasticsearch 的一个高层级的 .NET 客户端,但是它仍然非常接近原始的 Elasticsearch API 。NEST 中所有的请求和响应都是通过类型公开的,这使得它可以快速地启动和运行。 在美丽的外表之下,NEST 有着一个强大的低层级的核心 - Elasticsearch.Net 。有了这个核心,NEST 才得以(向 Elasticsearch 本体服务程序)发送请求和接收响应。这个过程中,NEST 使用和扩展了 Elasticsearch.NET 的许多类型。另外,NEST 公开了这个低级客户端,你可以通过 .LowLevel 属性来访问。 Connecting 连接位于 http://localhost:9200 的本地 Elasticsearch 是非常简单的,你只需要实例化一个客户端的实例即可。 var client = new ElasticClient(); 通常情况下,你会需要向客户端传递一些额外的配置选项。比如:你的 Elasticsearch 在远程服务器上运行,那你就需要传递它的具体地址。 ConnectionSettings

【android】Airtest IDE实现多设备管理以及自动装包

倾然丶 夕夏残阳落幕 提交于 2020-04-28 06:30:35
Airtest IDE简介   首先,感谢网易团队的各位大大开发并开源了Airtest这个自动化测试工具,Airtest是一款基于图像识别和poco控件识别的UI自动化测试工具。它适用于任意引擎和应用的自动化测试,支持Android、Windows和Ios。 安装Airtest IDE   从Airtest官网: https://airtest.netease.com 下载Airtest后,像安装普通软件一样安装即可。安装过程没有什么需要特别说明的地方,Airtest已经帮你打包好了使用需要的全部环境,所以安装完成Airtest以后就可以直接使用了。 安装好后运行界面如下: 更多的使用教程和功能可以查阅官方文档: https://airtest.readthedocs.io/zh_CN/latest/README_MORE.html Airtest IDE 实现多设备管理以及自动装包   简单介绍一下安装,现在回到标题,在测试工作中,有可能会遇到一次需要给好几个设备安装包的时候,针对这种情况,我们可以利用Airtest帮助我们实现,让我们的测试工作更方便快捷。 代码如下: 1 # -*- encoding=utf8 -*- 2 __author__ = " starkYang " 3 4 from airtest.core.api import * 5 from airtest

Airtest-UI自动化工具的使用

自作多情 提交于 2020-04-28 05:19:05
1、Airtest工具的介绍 Airtest是网易出品的一款基于图像识别和poco控件识别的一款UI自动化测试工具。Airtest的框架是网易团队自己开发的一个图像识别框架,这个框架用的是图形脚本语言Sikuli。Sikuli这个框架的原理是:计算机用户 不需要一行行的去写代码,而是用屏幕截屏的方式,用截出来的图形摆列组合成程序。 另外,Airtest也基于poco这个U控件搜索框架,这个框架也是网易自家的跨平台U测试框架,原理类似于appium,通过控件的名称,id之类的来定位目标控件,然后调用函数方法,例如click(),swip()之类的方法来对目标控件进行点击或者是操作。 2、工具的优缺点 优点: 框架基于图像识别。控件识别,操作简单 对代码能力要求不高,可直接录制脚本并一键生成报告 支持python进行个性化脚本编程 支持android、ios、windows和unity 缺点: 稳定性差,控件定位不太准确,如果控件位置变更或控件图案修改,会找不到控件 3、环境搭建 Airtest下载:http://airtest.netease.com/ AirtestIDE内置了Python3.6.5,airtest和poco环境,本地无需安装python环境就能 直接使用 AirtestIDE的官方文档: http://airtest.netease.com/docs/docs

EF快速入门--直接修改(简要介绍ObjectContext处理机制)

左心房为你撑大大i 提交于 2020-04-28 04:59:21
原地址:http://www.cnblogs.com/fly_dragon/archive/2011/06/05/2073084.html 正文: 在介绍Entity Framework的修改实体到数据库的方法之前呢,我们先简要的介绍一下ObjectContext的处理机制。 1、ObjectContext的处理机制 ObjectContext是Entity Framework封装了数据库访问的上下文,以及实体的映射关系元数据信息等。EF帮我们封装好了这么一个统一的接口。让我们所有的操作都只通过这个一个实体上下文就可以实现了增删查改等所有对应数据库的操作。当然,我们要了解EF的生成SQL的机制我们才能更好的使用EF帮我们生成效率更高的SQL脚本。 看一个实例:下图所示项目截图与实体模型图(一个简单的例子) 然后看下面一段代码: static void Main( string [] args) { SchoolDBEntities schoolDB = new SchoolDBEntities(); Student student = new Student(); student.Address = " 北京上地 " ; student.Name = " 飞龙 " ; student.Phone = " 110 " ; schoolDB.Student.AddObject