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

0x01 - 第一个 Object Visitor

创建一个简单数据模型 我们使用 IDE 打开刚刚创建项目,添加一个简单数据模型类 OrderInfo : public class OrderInfo{ public int OrderId...我们 Program.cs 中添加以下代码来完成这些逻辑: new 一个 OrderInfo order 使用 StringBuilder 将 order 所有属性名称和值拼接在一起 输出最后...首先,使用 Object Visitor 可以动态适应模型类变化,这点好处非常明显。 当 OrderInfo 中属性增加,“拼接部分” 代码可以不用变化,实现动态适配。...另外,还有一些好处是本示例没有体现,将会在后续文档中进行介绍: 它运行效率很高。根据已有的基准测试,其性能表征和直接硬编码差距很小。...使用反射来实现以上效果也是可以,但相较来说,Object Visitor 实现方式性能方面根据优势: 根据已有的基准测试,Object Visitor 基于表达式树实现,其运行效率要比直接使用反射相关读写方法高出许多

45400

docker-mcr 助您全速下载 dotnet 镜像

dotnet tool update newbe.mcrmirror -g 拉取国内服务器上镜像 加速本质是因为将镜像推送到了国内服务器,目前以下服务器均存在镜像: 阿里云 registry.cn-hangzhou.aliyuncs.com...使用 DockerHub 加速器 也将镜像推送到了 dockerhub ,所以正常来说,中国大陆使用 dockerhub 加速器也可以达到加速效果。...但是,中国大陆从 MCR 上拉取镜像简直慢得让人发指。 MCR 团队已经决定尝试一些方案为此提速,相关讨论罗列在这个issue中。也将会持续跟踪这个issue。...代码仓库 docker-mcr 以及 Github Action 相关代码都在以下仓库中,如果您在使用中遇到了任何问题,可以通过 issue 进行反馈: Github: https://github.com...希望为开发者提供能够便于开发出“分布式”、“可水平扩展”、“可测试性高”应用系统——Newbe.Claptrap 此次加速工具实际上是笔者在编写样例遇到下载困难编写工具。

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

Newbe.Claptrap框架入门,第三步——定义Claptrap,管理商品库存

若要查看最新开发文档,请移步 https://claptrap.newbe.pro 开篇摘要 本篇,通过实现“管理库存”需求来了解一下如何在已有的项目样例中定义一个 Claptrap。...定义 ClaptrapTypeCode ClaptrapTypeCode 是一个 Claptrap 唯一编码。其 State 识别,序列化等方面起到了重要作用。...由于 Claptrap 是基于事件溯源模式 Actor。因此定义恰好 State 非常重要。 示例当中,我们只需要记录当前 SKU 库存即可,因此,State 设计非常简单。...EventCode 是 Claptrap 系统每个事件唯一编码。其事件识别,序列化等方面起到了重要作用。 打开HelloClaptrap.Models项目中ClaptrapCodes类。...此处没有创建更新库存对外 API,因为本示例将在下篇进行下单购物进行库存操作,此处暂不需要 API。 小结 至此,我们就完成了“管理商品库存”这个简单需求所有内容。

12730

Newbe.Claptrap 框架入门,第三步 —— 定义 Claptrap,管理商品库存

定义 ClaptrapTypeCode ClaptrapTypeCode 是一个 Claptrap 唯一编码。其 State 识别,序列化等方面起到了重要作用。...由于 Claptrap 是基于事件溯源模式 Actor。因此定义恰好 State 非常重要。 示例当中,我们只需要记录当前 SKU 库存即可,因此,State 设计非常简单。...由于示例代码采用是程序集范围内扫描,因此实际上不需要进行修改。 这里指出发生注册位置: 打开 HelloClaptrap.BackendServer 项目的 Program 类。...EventCode 是 Claptrap 系统每个事件唯一编码。其事件识别,序列化等方面起到了重要作用。...此处没有创建更新库存对外 API,因为本示例将在下篇进行下单购物进行库存操作,此处暂不需要 API。 小结 至此,我们就完成了 “管理商品库存” 这个简单需求所有内容。

29030

开始第一个QQ机器人【适用于v1.9-v1.X】

示例将会使用”嘤鹉学舌”这个小插件实现来演示如何使用Newbe.Mahua实现第一个机器人插件。 入坑提示 建议开发者先根据自身需求结合表格,选择属于自己专属开发框架,避免浪费时间。...编写一套代码就能在多个平台运行 支持使用除了C#之外开发语言来开发 希望他足够简单,不用学习太多就能掌握,通常只需要半个小时就能掌握所有内容 希望社区反馈足够快,有问题都可以帮我解决 SDK名称...,需自行解决) Visual Studio Code Rider(Newbe更加推荐) 设置Powershell执行策略限制 简单来说,使用管理员权限cmd中运行以下命令: powershell -command...该插件实现将好友私聊消息回发给好友功能。"; } } 添加”接收好友消息事件”代码实现 新建出来项目中包含一个 ItemTemplate 文件夹,里面包含了所有需要项模板。...复制文件到机器人平台 bin目录下会按照当前安装平台生成相应目录。本示例将会生成CQP、Amanda和MPQ三个目录。 分别将三个文件夹下所有文件和文件夹都复制到对应机器人平台根目录。

96600

Newbe.Mahua 插件热更新

软硬条件 名 值 IDE VS2017.5 Newbe.Mahua 1.11 项目基础 阅读本教程之前,想必开发者已经学会了如何插件插件项目。因此本节只将本示例使用关键参数和代码贴出。...绝对没有月落意思 其他注意点 开始热更新事件 IPluginHotUpgradingMahuaEvent 开发者可以订阅”开始热更新事件”,插件开始热更新进行一些操作。...以下便是一个订阅例子,该示例将允许奇数秒进行热更新,偶数秒阻止热更新: using Newbe.Mahua.MahuaEvents; using System; namespace Newbe.Mahua.Samples.HotUpdate.MahuaEvents...同时,热更新成功之后,也将再次触发此事件。 热更新过程中消息 热更新开始后,将会将后续接收所有的消息进行暂存,热更新成功之后发送后热更新之后插件进行处理。...示例代码 本教程中所有示例代码,都可以以下链接获取: https://github.com/newbe36524/Newbe.Mahua.Framework/tree/master/src/Newbe.Mahua.Samples.HotUpdate

47900

你掉是这个免费服务器,还是这个 Docker 实验平台

部署 Nginx 本示例,我们部署一个 nginx ,并且通过将服务公开在一个公网地址上。 登录并创建实例 这一步非常简单,不多说明,成功创建完成之后便可以看到如下所示界面。...拉取镜像 运行以下命令,便可以拉取最新 nginx 镜像。 docker pull nginx 拉取速度非常快速,因为这个实例节点是部署在国外,因此无需设置镜像也可以极速下载。...,界面上会自动出现一个新按钮,表示当前可以已经部署成功公网地址,如下图所示: 点击按钮便可以浏览器中访问刚刚部署成功 nginx 服务。...如果生成按钮,也可以点击 “OPEN PORT” 来选择开放端口。 部署火车票售票系统 如果只是部署一个简单 nginx 显然不够快乐。因此,来部署一个稍微复杂一点系统。...这是一个由 7 个容器构成演示系统,参考《火车票售票系统 - 部署》说明,运行以下命令来启动一个模拟火车票售票系统: git clone https://github.com/newbe36524

3.4K30

【开源访谈】对接 QQ 机器人平台,对接共同成长开源社区(开源中国采访)

发布了 1.10 版本,为开发者带来了完整 Amanda 平台开发体验,一间引起了热议。...因此本框架仅仅被定义为一个”用于开发插件 SDK”,插件必须依附于这些 QQ 机器人平台才能运行,并且 API 能力上也受限于特定机器人平台。...Newbe.Mahua 框架,或者说 QQ 机器人插件开发是一个相对不要求界面制作技术领域,首先这可以让和参与项目的开发者把目光聚焦所说”学会学习”上。...而社区意义在于让其中开发者,能够项目过程中,一步步解决诸如”如何一套接口对接多个平台”、”如何制作简单 IDE 插件”、”如何实现非托管代码与托管代码调用”等问题过程中,学习到开发各种工具...还有更多社区开发者,他们热心解答他人技术疑问。 其中有一件事让印象深刻,它也让到了这个社区整体性,大家为了同一个目标集思广益。 当时我们是被问题困扰住了。

1.4K00

Newbe.Pct-开发环境准备

但是,假如读者希望先了解本项目的功能效果,读者可以先阅读《Newbe.Pct 开始使用)》 操作系统 本项目基于Java与NodeJs运行。...Java环境安装,可以参考以下文章: http://www.runoob.com/java/java-environment-setup.html 对于初学者需要特别注意是:以上链接中提到了Java...其中IDE安装是本项目所不需要,注意甄别。 作者编写此文章,所使用Java版本为 x64 1.8.0_112。建议至少安装同版本或更高版本以便能够正常运行示例内容。...建议至少安装同版本或更高版本以便能够正常运行示例内容。 安装与设置 webdriver-manager webdriver-manager 作为本项目的浏览器驱动引擎,是非常关键一项内容。...由于众所周知原因,大陆访问该站点,会出现无法下载情况,导致这一步失败。

70700

开始第一个QQ机器人【适用于v1.8】

示例将会使用”嘤鹉学舌”这个小插件实现来演示如何使用Newbe.Mahua实现第一个机器人插件。 插件功能 自动将发送者消息回发给发送人,嘤鹉(Parrot,其实是说嘤嘤嘤怪)学舌。...3.0及以上 设置Powershell执行策略限制 参考链接:http://www.pstips.net/powershell-create-and-start-scripts.html 简单来说,使用管理员权限...新建项目 项目名称至少需要包含三部分,形如AAA.BBB.CCC形式。 新建项目,可以根据”希望支持插件平台”来选择特定后缀项目模板来安装。...该插件实现将好友私聊消息回发给好友功能。"; } } 添加”接收好友消息事件”代码实现 MahuaEvents处右键,选择”添加->新建项”。...复制文件到机器人平台 bin目录下会按照当前安装平台生成相应目录。本示例将会生成CQP、Amanda和MPQ三个目录。 分别将三个文件夹下所有文件和文件夹都复制到对应机器人平台根目录。

1K00

开始第一个QQ机器人【适用于v1.4-1.7】

示例将会使用”鹦鹉学舌”这个小插件实现来演示如何使用Newbe.Mahua实现第一个机器人插件。 插件功能 自动将发送者消息回发给发送人,鹦鹉(英文:Parrot)学舌。...3.0及以上 设置Powershell执行策略限制 参考链接:http://www.pstips.net/powershell-create-and-start-scripts.html 简单来说,使用管理员权限...新建项目 项目名称至少需要包含三部分,形如AAA.BBB.CCC形式。 新建项目,可以根据”希望支持插件平台”来选择特定后缀项目模板来安装。...该插件实现将好友私聊消息回发给好友功能。"; } } 添加”接收好友消息事件”代码实现 MahuaEvents处右键,选择”添加->新建项”。...复制文件到机器人平台 bin目录下会按照当前安装平台生成相应目录。本示例将会生成CQP、Amanda和MPQ三个目录。 分别将三个目录中文件复制到对应机器人平台根目录。

69400

——Newbe.Claptrap 框架水平扩展实验

虽然可以运行,但是运行效率会降低。原来登录可能只需要 100 ms。使用到虚拟内存用户则需要 2 s。 因此,速度降低情况下,验证需要多少内存意义可能不大。...可以参看这篇文档进行设置 源码构建 使用控制台进入 src/Newbe.Claptrap.Auth 文件夹。运行以下命令便可以本地完成代码构建: 1 2 ....运行以下命令便可以启动相关容器: 1 docker-compose up -d 常见问题解答 文中为何没有说明代码和配置细节?...当然,另外一点就是目前框架没有最终定版,所有内容都有可能发生变化,讲解代码细节意义不大。 但可以提前说明是:编写非常简单,由于本样例业务需求非常简单,因此代码内容也不多。...全部都可以示例仓库中找到。 用 Redis 存储 Token 也可以实现上面的需求,为什么要选择这个框架?

1.2K00

使用 Tye 辅助开发 k8s 应用竟如此简单(四)

建议可以先从本文末尾入门文章开始了解。 必不可少日志管理 对应用进行日志记录和分析是诊断排查线上问题重要手段。而简单基于控制台或者文件直接记录既不利于开发者直接读取也不利于大规模分析。...打开 seq 便可以看到 seq 查询界面: 使用浏览器调用一下 swagger 界面中 API。便可以 seq 中查看到最新日志。 这便是使用 seq 最简单一种方式。...不想每次都重新部署 Seq 我们都知道, Tye 停止运行时会尝试停止此次所有部署容器,Seq 也是以容器方式运行,因此,每次停止 Tye ,容器都会被自动移除。...实际上,根据 Tye 中代码,如果服务中已经存在一个名称为 seq 服务,那么就会自动使用该服务,而跳过创建步骤。...添加了一个名为 seq 服务,其中 external: true 指定了其为一个外部服务。故而启动不会尝试去创建这个服务。 这样使用 tye run 启动后得到结果和先前效果是一致

46600

C#中使用依赖注入-生命周期控制

容器中每次获取同一个接口实现,每次获取到都是不同实例。读者可以翻阅一下先前示例代码回顾一下。 单例模式 单例模式也是一种常见设计模式,这种设计模式。...简单来说,这段代码运行结果会随着时间变化而变化,每次运行结果都不相同,这样通常来说是不可测。因此,应用依赖注入进行一下改造。...读者可以将上文代码SingleInstance代码去掉来体验单例和非单例运行结果区别。 生命周期内单例 上文单例是一种全局性单例配置。只要容器建立起来,容器内就是完全单例。...以上代码关键点: 注册ILogger,注册为了生命周期内单例。 获取IAccountBll,开启了一个生命周期,那么在这个生命周期内获取ILogger实例都是同一个。...总结 使用依赖注入时候,生命周期控制是一个相当重要课题。读者需要在实践中注意分析。 以上示例代码都是基于较为简单业务场景与基础代码实现,实际操作中不一定是如此,读者需要在实践中注意分析。

1.6K00

画着图,FluentAPI 她自己就生成了

Newbe.ObjectVistor 0.3 版本中我们非常兴奋引入了一个紧张刺激新特性:使用状态图来生成任意给定 FluentAPI 设计。...开篇摘要 非常多优秀框架中都存在一部分 FluentAPI 设计。这种 API 设计更加符合人类自言语言描述。使得代码更加具备可读性。... Newbe.ObjectVistor 0.3 版本中,我们设计引入了一种使用状态图来自动生成 FluentAPI 代码机制。极大了简化了 FluentAPI 实现所需要脑力劳动。...示例调用代码如下: [Test] public void MultipleSumList() { var builder = new MultipleSumBuilder(new List<List...0.1.4 发布,初始版本 使用样例 Newbe.ObjectVisitor 样例 1 番外分享 寻找性能更优秀动态 Getter 和 Setter 方案 寻找性能更优秀不可变小字典 画着图,FluentAPI

21900

使用 Tye 辅助开发 k8s 应用竟如此简单(五)

建议可以先从本文末尾入门文章开始了解。 是谁?在哪儿?咋了? 分布式系统纷繁复杂,特别以现在微服务架构出现,使得应用系统中应用实例变得更加多变难以捉摸。...httpResponseMessage.Content.ReadAsStringAsync(); return json; } } } 这样,我们就得到了一个服务...TyeTest 中调用 TyeTest2 一个服务间调用示例。...这其实和 使用 Tye 辅助开发 k8s 应用竟如此简单(二) 中得到测试用例是相同。 然后使用 tye run 便可以启用测试应用。开发者可以 swagger 页面中测试具体效果。 但是!...然后回来查询,便可以查询到服务调用情况: 点击其中 Show 按钮,便可以查看到一次服务调用详细过程信息: 这就是使用 zipkin 对 http 调用进行追踪最简易示例

38600

使用 Tye 辅助开发 k8s 应用竟如此简单(六)

透过这个抽象层,开发者可以节约很多基础设施上所需要投入精力,进一步得到自我解放。 安装 Dapr runtime 为了开发环境运行 dapr runtime。...需要先在开发机上进行一些简单安装。...tye run,便可以 tye dashboard 中查看成功运行服务实例和 dapr 实例: 使用 swagger 页面,可以正常访问服务。...,然后文件夹中运行以下命令以创建项目: new.sh dotnet new newbe.claptrap --name HelloClaptrap 部署辅助组件 新建好项目中存在一个 docker-compose.yml...本系列所有测试代码,均可以以下仓库查看: https://github.com/newbe36524/Newbe.Demo/tree/master/src/BlogDemos/Newbe.Tye 最后但是最重要

43300

Newbe.Claptrap 框架入门,第一步 —— 创建项目,实现简易购物车

让我们来实现一个简单 “电商购物车” 需求来了解一下如何使用 Newbe.Claptrap 进行开发。...SDK 安装完毕后,打开控制台运行以下命令来安装最新项目模板: dotnet new --install Newbe.Claptrap.Template 安装完毕后,可以安装结果中查看到已经安装项目模板...创建项目 选择一个位置,创建一个文件夹,本示例选择 D:\Repo 下创建一个名为 HelloClaptrap 文件夹。该文件夹将会作为新项目的代码文件夹。...SkuId = skuId, }); await Claptrap.HandleEventAsync(evt); return StateData.Items; } 此时,代码已经运行到了一个具体购物车对象...我们按照业务需求,判断状态中字典是否包含 SkuId,并对其数量进行更新。 继续调试,代码将会运行到这段代码结尾。

97500

Newbe.Mahua 测试与调试

掌握单元测试技能,将会在使用Newbe.Mahua进行开发无往不利成功秘诀。 本教程将使用VS2017作为开发IDE进行演示。 新建测试项目 ?...新建测试项目”Newbe.Mahua.Plugins.Parrot.Tests”中新建一个类”ParrotTest”,并填写以下代码: using Autofac.Extras.Moq; using...运行测试代码 ? 来吧!真正勇士,就绿了它们! 需求变化 需求变了,只有消息当中有”收到回复”这个字符串,那么才需要回发,并且要删除其中”收到回复”字符串。...单元测试只要Newbe.Mahua提供接口稳定,自己业务逻辑没有变化,那么你业务逻辑就永远能够通过单元测试。也就是说,这段代码就是为了确保你有底气说出:”代码不可能出错!”...以上演示代码,均可以本项目代码仓库中找到。 调试 单元测试是开发阶段最初测试,但事实是,绝大多数的人更喜欢”跑一下看看”。因此调试,也就很有必要。

2.1K00
领券