自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(98)
  • 资源 (6)
  • 收藏
  • 关注

原创 C# 获取类型 Type.GetType()

有时候需要使用Type来进行反射、序列化、筛选等,获取Type有Type.GetType, typeof(),object.GetType() 等方法,本文重点介绍Type.GetType()。

2024-02-29 17:01:14 910

原创 Blazor 向 ECharts 传递 option

将ECharts封装为Blazor组件,然后通过jsRuntime向ECharts传递参数,即设置option。

2024-02-29 08:51:46 490

翻译 OPC UA 会话,订阅和超时

关于OPC UA通讯中几个参数的解释,包括PublishingInterval, SamplingInterval, KeepAliveCount, LifeTimeCount等

2023-07-21 11:50:44 1808

原创 OPC UA客户端访问 OPC DA服务器

用OPC UA客户端(如UaExpert)通过OPC基金会 UA COM Server Wrapper 读取OPC DA服务器上的点。

2023-05-29 15:18:37 1865

原创 C#调用iLog Cplex 输出不收敛的约束

用C#调用 iLog Cplex 的API 求解规划问题如果模型不收敛(infeasible),可以使用本文中代码打印不收敛的约束,便于查找问题。

2023-05-20 10:21:45 385

原创 .net7 通过 JsonTranscoding 实现 gRPC 与 Web API 一鱼两吃

.net7 不仅使 gRPC性能提高了8倍,还可以通过 JsonTranscoding 实现一个项目即提供 gRPC 又提供 Web API接口

2023-05-05 17:47:31 715

原创 Dotnetty TcpClient 自动重连服务器

Dotnetty实现一个断开能够自动重连的Tcp Client,关键是解决I/O 错误问题,该问题是因为IByteBuffer被释放引起的。

2023-02-26 14:19:11 707

原创 C#实现一个可撤销出队的队列

现有的Queue Dequeue后不能在队列头部插入一条,即不能撤销出队操作,我实现了一个可撤销的队列,根据传进来的处理函数是否返回false决定是否撤销出队。

2023-02-02 17:32:49 170

原创 如何从外部灵活的给C#脚本传递参数

编辑一段C#脚本,使用Microsoft.CodeAnalysis.Scripting 解析脚本,脚本中可能出现外部变量,找到一种通行的办法传递外部参数。

2023-01-31 18:58:03 453

原创 C# 用一个文件实现对象的二进制序列化和缓存

开辟一个文件,同时支持读和写,设置大小上限,当文件达到上限时从头覆盖写入,如此往复,用作数据的持久化缓存。

2023-01-29 10:07:34 368

原创 .Net6 Blazor 制作购物车应用

大家推荐我翻译制作的油管视频教程系列合集:Net6+Blazor Web assembly+EFCore+Web Api 购物车应用实战——油管视频翻译配音解读

2022-10-18 17:38:59 292

原创 ubuntu下找不到 libmodbus.so 错误的解决办法

libmodbus.so.5 file not found 的解决办法

2022-09-13 17:07:16 816 1

原创 AI视觉应用的4G远程测试

通过移动网络远程访问摄像头,就可以把机器视觉应用的前后端分开调试,不需要蹲现场了

2022-09-12 17:04:19 220

原创 Jetson Nano 系列之:保存整张图片

在Jetson Nano deepstream C代码中,保存完整图片,包括设置图片的宽高、文件路径和文件名,以及避免obj_meta为NULL。

2022-08-26 15:37:56 759 5

原创 Jetson Nano 系列之:C通过内存映射操作GPIO

Jetson Nano GPIO的内存映射地址和设备地址,以及用C语言通过内存映射操作GPIO的步骤。

2022-08-18 14:07:45 820

原创 Jetson Nano 系列之:25FPS性能优化之路

将训练好的模型放到jetson nano上抛出25FPS实时检测需要C+Deepstream,并在必要时减小输入视频的尺寸

2022-08-13 13:15:43 1947 2

原创 Jetson Nano 系列之:刷机、瘦身、部署应用

在jetson nano b01的16G emmc里部署deepstream和跑模型,经过刷机->安装SDK->瘦身->装deepstream->部署应用 5步,省去TF卡。

2022-08-13 12:50:51 2249 6

原创 如何快速为YOLO准备标注好的图像样本库

用视频自动生成YOLOv5标注格式的样本库

2022-06-09 09:21:28 978

原创 写一个强化学习训练的gym环境

需求 要用强化学习(Reinforcement Learning)算法解决问题,需要百千万次的训练,真实环境一般不允许这么多次训练(时间太长、试错代价太大),需要开发仿真环境。OpenAI的gym环境是目前的标准,遵守其API写一个自定义的环境可以被各种强化学习算法无码调用。gym API要求 分析gym的代码和文档,可以看出,一个环境至少应该包含动作空间(action space)、状态空间(observation space)定义,以及reset()、step()、rende...

2022-05-09 14:07:09 3178 2

原创 alibabaprotect 是危险的有害的顽固的病毒般的存在

昨天电脑蓝屏,SSD系统盘C在,机械硬盘D和E不见了,重启后还是没有,关机一会再开好了,吓得我一激灵,数据都在机械盘里。开机后打开任务管理器,半天没反应,风扇呜呜转,ctrl+alt+del发现alibabaprotect进程占cpu靠前,以前用过阿里旺旺,已经卸载了,电脑里没有阿里的软件了啊?!然后alibabaprotect既不能杀掉,也不能停止服务,也不允许卸载,通过一个伪装成驱动的alipaladin64,赖着不走了。用了彻底删除AlibabaProtect 和 AliPal...

2022-04-02 09:57:17 2743

原创 C# 调用 Matlab 函数

类型对应关系 Matlab中一切皆矩阵,只不过维度不同,标量维度1,1 向量维度n,1 矩阵维度 m,nC# Matlab MWArray.Dimensions[0] MWArray.Dimensions[1] int / double MWNumericArray 1 1 int[n] / double[n] MWNumericArray n 1 int[m,n]/double[m,n] MWNumeric...

2022-03-07 11:22:23 2444

原创 用 Ant Blazor 实现 PropertyGrid

目标 做一个类似 vs2019 属性的 PropertyGrid,支持对各种属性的编辑,省去为各种类型制作编辑表单的工作。 PropertyGrid的主要特性:支持bool, int, double, string, object, 集合 属性的编辑; int double 类型可设定最大值、最小值、默认值,可以给定单位; string 类型可指定编辑器为颜色; string类型可从下来列表框中选择; object, 集合 按照父子行显示,父行只读; 可以设定属性不可编辑...

2021-12-29 10:58:48 929

原创 C# 静态扩展类不具有多态性质

假设类型 ClassA 有子类 ClassB,用静态类分别给ClassA 和 ClassB 加上同名的扩展方法,然后创建对象 ClassA obj = new ClassB(),实例调用 obj 扩展方法时,只会调用其声明类型(ClassA)对应的扩展方法,而不会像普通子类 override 父类 virtual/abstract 方法那样去调用子类的同名扩展方法,即不具有多态性质。 代码验证:namespace TestExtensions{ internal clas...

2021-12-28 14:52:49 170

原创 blazor webassembly 导出csv文件

目标将blazor webassembly中的数据打包成字符串,导出csv文件,浏览器自动下载csv文件(其他文件格式思路类似)。通过Server web api方式行不通在server上创建controller, 返回 IActionResult 或者 FileResult public async Task<IActionResult> Download(string id) { Stream stream = await {{__get_stream

2021-10-28 12:08:58 609

原创 理化计算程序必备:CoolProp+UnitsNet

物理化学计算 这类计算往往涉及到单位及单位换算,并且要用到物性参数。 例如:0℃=273.15K 质量流量 kg/h = 体积流量 m3/h * 密度 kg/m3 密度就是物性参数,随压力、温度变化。常规做法 只有Frink 、F#、Modelica 少数语言变量是自带单位的,大部分语言变量仅包含数值,单位转换需要在变量进行公式计算之前(预处理)完成,计算后再把结果单位转换为输出单位,单位转换主要通过若干常数实现。...

2021-10-09 09:29:27 1029

原创 将 blazor webassembly 部署到 iis 10 上

第一步 发布blazor wasm在工程上右键选择 发布,发布到文件夹,默认到 bin/debug/release/publish 下,然后点 【发布】按钮,发布成功后,在 publish 文件夹内能看到 wwwroot和 web.config。第二步 将发布的文件夹拷贝到服务器上,编辑绑定要求服务器上安装相应的.net 运行时,我的是.net core 3.1第三步 解决跨域问题blazor wasm 需要通过 HttpClient 跟其他 web server 进行 GET POS.

2021-09-07 15:34:24 2531 2

原创 子类型JSON序列化 mscorlib vs System.Private.CoreLib

问题 如果你需要支持子类反序列化,那么需要用到Newtonsoft.json,并设置 JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All }此时,所生成的 json 字符串在 .net framework(或mono) 与 .net core 之间不能通用。反...

2021-08-23 16:44:37 905

原创 asp.net mvc 到 asp.net core3.1 mvc 迁移

目标把以前的asp.net web api网站迁移到asp.net core3.1,过程很不平滑,磕磕绊绊。HttpContent.Current 找不到了core里面需要先在 Startup.cs 的 ConfigureServices 方法里加一句services.AddHttpContextAccessor(),再通过HttpContextAccessor.HttpContext 获得这个HttpContent.Current,参考这篇文章。调用不了 gRPC http 服务g..

2021-08-06 14:38:06 439

原创 Dotnetty ClosedChannelException I/O error occurred 异常原因

症状 折磨了我一整天,在单独的console application下好好的,集成到一块就在 bootstrap.BindAsync()处抛出ClosedChannelException “I/O error occurred" 异常,也没有其他有价值的信息了。集成环境与console app的区别有3处:集成环境是在asp.net core3.1中; 集成环境是通过反射加载的; 集成环境中,还有一个地方用到了Dotnetty。分析是不是 asp.net core 不支持udp ...

2021-07-30 13:56:11 919

原创 .net gRPC Client 集中配置、反射加载

目标 在调用 gRPC 服务时,避免重复写FromAddress(url)代码,而是通过配置文件反射加载 gRPC 服务。硬编码写法 假设我们在 proto 文件中定义了叫ServiceRPC 的 service,.net gRPC 会自动创建一个 ServiceRPCClient 类型,该类的构造函数中需要一个 channel,如下代码所示。using Grpc.Net.Client;namespace XXX{ public class Program ...

2021-07-22 10:55:30 911

原创 decimal 在数采中的用途

浮点数精度损失问题无论是 float 还是 double,都是不能精确进行二进制编码的,CPU计算时会产生浮点数偏移。例子1 0.7/0.025 =27.999999999999996在计算机中, double 0.7和0.025 实际分别为:0.69999999999999995559107901499373838305473327636718750.025000000000000001387778780781445675529539585113525390625因此,他们相除..

2021-07-19 10:45:10 85

原创 NB-IOT UDP透传测试

目标具备NB-IOT的仪表通过UDP将数据上传到非电信、华为、移动等云平台的公网服务器,服务器收到报文与仪表发送报文一致,即透传。电信NB-IOT 乱码电信最早搞NB-IOT,可惜走上了邪路,非要经过电信AEP云平台,或者华为的OC云平台,对NB-IOT 与 公网服务器 这种直接透传做了限制。本测试中,仪表发送报文为:C04134018012972304020000000000000062001300030000000099AAD25543AA00000000000000000000B404

2021-07-13 10:31:10 854 1

原创 Blazor Webassembly、Blazor 组件库 之初体验

目标 用 C# 代替 javascript 做前端开发。Hello World项目 选了 Blazor.Diagrams作为上手程序,这是一个小巧但例子很丰富的流程图绘制库,内核设计比较清晰,扩展性强。Blazor 组件库(Component Library) 前端开发的趋势是组件化,可以创建 .net standard 类库(对应vs2019模板类型:Razor类库),把Blazor组件包装起来,然后在Blazor Server或者Blazor Webasse...

2021-05-20 17:10:55 1190 2

原创 .net gRPC CRUD 实战

目标 通过.net gRPC实现对数据库的增删改查。解决方案结构Protos 文件夹 存放 proto 文件,分为两组,一组定义message,一组定义rpc; Models .net standard 2.1 项目,导入message.proto,并通过 public partial class 扩展实体; Contract.net standard 2.1 项目,导入rpc.proto,引用Models项目,提供服务端和客户端调用; Service gRPC asp.n...

2021-04-15 16:17:50 330

原创 .net gRPC 初步上手

1. gRPC gRPC是谷歌推出的语言无关、平台无关的高性能RPC库,现已成为微服务集成的主要通讯手段,微软从.net core3.0开始将gRPC作为首选,系统学习可以看微软的文档。关于proto3的语法,这篇写的不错。2. 编辑proto文件 注意:proto文件应保存到解决方案中(例如Protos文件夹),而不是某项目下面,否则编译时生成的cs文件位置不对。 根据proto3的语法,把原来的业务实体定义为message,远程接口定义为service。 用...

2021-04-12 13:56:52 460

原创 .net 前世今生2——C#开发者的春天

去年.net5出来后,我在.net前世今生里问了一个问题,就是能不能用C#做全栈开发,带着这个问题去观察和理解.net,得到了完全肯定的答案,以后用C#就可以一张蓝图绘到底了。1. 性能提升 .NetCore3.1 .Net 5 .Net 6(2021年11月)每个版本都非常重视性能优化。众所周知,C#是托管语言,相比于C和C++,托管代码与内存之间有一个垃圾回收机制,这降低了内存访问速度(换来了安全性)。为提高内存访问速度,C#引入了Span<T>这个接近指针的...

2021-04-08 15:00:28 309 2

原创 基于 Dotnetty 的 Mqtt Client

Dotnetty Netty是顶顶大名的网络通讯开发库,使通讯开发人员再也不用非九牛二虎之力来处理socket通讯和一些常见应用层协议如HTTP、WEBSOCKET、MQTT等底层问题,而可以专心做应用层的开发工作。Dotnetty是Azure团队照着Netty开发的C#版本。MQTT Client 基于 Netty/Dotnetty 提供的是MQTT 14种Packet和编码、解码的实现,没有提供MQTT客户端或服务端的官方实现,我重点参考了https://github.com/j...

2021-03-12 16:18:42 1468

原创 MQTT 协议14种消息类型表

根据MQTT V3.1 协议文本整理了14种消息类型分别使用/不使用的参数,●使用 /不使用,给出了协议中明确的QoS和VariableHeader值。CLIENT列表示由MQTT客户端发送的消息类型,SERVER列表示由MQTT服务端(broker)发送的消息类型。相对地,CLIENT列表示由MQTT服务端接收的消息类型,SERVER列表示由MQTT客户端接收的消息类型。该表可以为 开发MQTT 客户端/服务端者 提供参考。...

2021-03-10 09:02:42 1354

翻译 Sparkplug规范-11.Sparkplug持久和非持久连接

持久连接用来始终保持与MQTT网络的连接,正常情况下从不发送MQTT DISCONNECT消息,这让主应用能够通过上线/下线机制,提供MQTT保活周期内网络内持久连接节点的实时状态。但在有些情景中,例如发送GPS坐标做定位跟踪,或其他周期性从传感器采集数据的物联网应用,MQTT设备不需要保持连接。此时,设备在下线之前需要发送MQTT DISCONNECT控制包,“优雅地”离开网络,用不到MQTT设备或关联设备下线消息。系统设计者只需知道,主应用的测点代表“最近已知良好”(Last Known Good)

2021-03-02 08:21:33 2362

翻译 Sparkplug规范-10.多MQTT服务器下的主应用状态

多MQTT服务器情况下,如果主应用与MQTT服务器失去连接,边缘节点有可能“搁浅”,这种情况下,边缘节点虽然连接MQTT服务器并正常发布信息,却不知道主应用无法收到消息。当采用多MQTT服务器时,主应用实例必须发布STATE上线消息,所有边缘节点需要订阅这个STATE消息。主应用需要说明是不是“主”命令/控制实例,如果是,每次连接MQTT服务器时,STATE上线消息就是成功建立MQTT会话后的第一条消息。边缘节点在多MQTT服务器网络中,可以连接任何一台MQTT服务器,连上后,边缘节点订阅主应用发布

2021-03-02 08:19:38 531

Mqtt.Client.rar

C# dotnetty mqtt client,支持自动重连和自动重传。

2021-03-12

Sparkplug规范2.2翻译.pdf

对Eclipse基金会Sparkplug 规范V2.2 的翻译,英文原文: https://www.eclipse.org/tahu/spec/Sparkplug%20Topic%20Namespace%20and%20State%20ManagementV2.2-with%20appendix%20B%20format%20-%20Eclipse.pdf

2021-03-02

h5无插件 RTSP 摄像头在线播放代码2

参考博客https://blog.csdn.net/xhydongda/article/details/81208192#commentsedit

2018-11-03

h5无插件 RTSP 摄像头在线播放代码

详见博客“h5无插件 RTSP 摄像头在线播放(用海康摄像头测试)”

2018-07-25

Unfold 作者 Francois Vanderseypen 公司 Orbifold 时间:2007

开源项目Netron 作者 Francois Vanderseypen 在2007年随Netron V3一同发布的WPF版本Diagram,满世界难找了。

2014-08-22

Bryntum scheduler-2.2.10.js 代码

去掉了 Bryntum scheduler-2.2.10 trial 中的时间限制,恢复了代码,仅供学习使用。

2013-11-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除