- 博客(104)
- 资源 (6)
- 收藏
- 关注
原创 C# Blazor Server 调用海康H5Player播放摄像头画面
网页播放摄像头需要通过web socket,因为网页不支持rtsp协议,因此需要服务端进行协议转换(我的第一篇博客就讲了如何将rtsp转web socket以及如何在网页中播放)。海康服务器已经做了协议转换,并提供了ws的url,并且提供了h5player.js库,该库中可以对h265,h264解码播放,因此本文才能够实现网页摄像头的在线浏览。
2024-09-28 17:49:10 1383
原创 C#,JavaScript实现浮点数格式化自动保留合适的小数位数
C#, JavaScirpt 中,根据浮点数数值大小决定格式化字符串时保留小数点后几位,例如12345.62 得到"12345",0.0022124 得到"0.00221"
2024-05-30 17:12:12 323
原创 C#中用 protobuf Struct 实现弱类型的json 序列化/反序列化
用protobuf Struct来实现 C#弱类型与json的互操作,动态属性保存在一个json字符串中,巧妙设计 web api接口。
2024-05-30 09:43:58 852
原创 以Windows服务运行无法访问Sql Server 0x80004005
以Windows服务运行无法访问Sql Server 0x80004005,需在sql server中给SYSTEM账户增加 sysadmin服务器角色
2024-05-17 11:29:55 543 1
原创 C# 不用lock写一个多线程程序
bool 不需要锁,int/DateTime 用Interlocked,多用ConcurrentDictionary,ConcurrentQueue
2024-05-11 14:38:55 493 1
原创 List/ConcurrentBag Contains的效率比Dictionary/ConcurrentDictionary ContainsKey 低几千倍
50000个字符串集合包含判断,Dictionary/ConcurrentDictionary 只需1-2毫秒,List 需要3秒,ConcurrentBag需要 23秒!
2024-05-11 11:53:17 322
原创 C# 获取类型 Type.GetType()
有时候需要使用Type来进行反射、序列化、筛选等,获取Type有Type.GetType, typeof(),object.GetType() 等方法,本文重点介绍Type.GetType()。
2024-02-29 17:01:14 2467
原创 Blazor 向 ECharts 传递 option
将ECharts封装为Blazor组件,然后通过jsRuntime向ECharts传递参数,即设置option。
2024-02-29 08:51:46 743
翻译 OPC UA 会话,订阅和超时
关于OPC UA通讯中几个参数的解释,包括PublishingInterval, SamplingInterval, KeepAliveCount, LifeTimeCount等
2023-07-21 11:50:44 3117
原创 OPC UA客户端访问 OPC DA服务器
用OPC UA客户端(如UaExpert)通过OPC基金会 UA COM Server Wrapper 读取OPC DA服务器上的点。
2023-05-29 15:18:37 2419
原创 C#调用iLog Cplex 输出不收敛的约束
用C#调用 iLog Cplex 的API 求解规划问题如果模型不收敛(infeasible),可以使用本文中代码打印不收敛的约束,便于查找问题。
2023-05-20 10:21:45 524
原创 .net7 通过 JsonTranscoding 实现 gRPC 与 Web API 一鱼两吃
.net7 不仅使 gRPC性能提高了8倍,还可以通过 JsonTranscoding 实现一个项目即提供 gRPC 又提供 Web API接口
2023-05-05 17:47:31 780
原创 Dotnetty TcpClient 自动重连服务器
Dotnetty实现一个断开能够自动重连的Tcp Client,关键是解决I/O 错误问题,该问题是因为IByteBuffer被释放引起的。
2023-02-26 14:19:11 996
原创 C#实现一个可撤销出队的队列
现有的Queue Dequeue后不能在队列头部插入一条,即不能撤销出队操作,我实现了一个可撤销的队列,根据传进来的处理函数是否返回false决定是否撤销出队。
2023-02-02 17:32:49 221
原创 如何从外部灵活的给C#脚本传递参数
编辑一段C#脚本,使用Microsoft.CodeAnalysis.Scripting 解析脚本,脚本中可能出现外部变量,找到一种通行的办法传递外部参数。
2023-01-31 18:58:03 646
原创 C# 用一个文件实现对象的二进制序列化和缓存
开辟一个文件,同时支持读和写,设置大小上限,当文件达到上限时从头覆盖写入,如此往复,用作数据的持久化缓存。
2023-01-29 10:07:34 501
原创 .Net6 Blazor 制作购物车应用
大家推荐我翻译制作的油管视频教程系列合集:Net6+Blazor Web assembly+EFCore+Web Api 购物车应用实战——油管视频翻译配音解读
2022-10-18 17:38:59 340
原创 Jetson Nano 系列之:保存整张图片
在Jetson Nano deepstream C代码中,保存完整图片,包括设置图片的宽高、文件路径和文件名,以及避免obj_meta为NULL。
2022-08-26 15:37:56 1054 5
原创 Jetson Nano 系列之:C通过内存映射操作GPIO
Jetson Nano GPIO的内存映射地址和设备地址,以及用C语言通过内存映射操作GPIO的步骤。
2022-08-18 14:07:45 944
原创 Jetson Nano 系列之:25FPS性能优化之路
将训练好的模型放到jetson nano上抛出25FPS实时检测需要C+Deepstream,并在必要时减小输入视频的尺寸
2022-08-13 13:15:43 2172 2
原创 Jetson Nano 系列之:刷机、瘦身、部署应用
在jetson nano b01的16G emmc里部署deepstream和跑模型,经过刷机->安装SDK->瘦身->装deepstream->部署应用 5步,省去TF卡。
2022-08-13 12:50:51 2600 6
原创 写一个强化学习训练的gym环境
需求 要用强化学习(Reinforcement Learning)算法解决问题,需要百千万次的训练,真实环境一般不允许这么多次训练(时间太长、试错代价太大),需要开发仿真环境。OpenAI的gym环境是目前的标准,遵守其API写一个自定义的环境可以被各种强化学习算法无码调用。gym API要求 分析gym的代码和文档,可以看出,一个环境至少应该包含动作空间(action space)、状态空间(observation space)定义,以及reset()、step()、rende...
2022-05-09 14:07:09 3743 2
原创 alibabaprotect 是危险的有害的顽固的病毒般的存在
昨天电脑蓝屏,SSD系统盘C在,机械硬盘D和E不见了,重启后还是没有,关机一会再开好了,吓得我一激灵,数据都在机械盘里。开机后打开任务管理器,半天没反应,风扇呜呜转,ctrl+alt+del发现alibabaprotect进程占cpu靠前,以前用过阿里旺旺,已经卸载了,电脑里没有阿里的软件了啊?!然后alibabaprotect既不能杀掉,也不能停止服务,也不允许卸载,通过一个伪装成驱动的alipaladin64,赖着不走了。用了彻底删除AlibabaProtect 和 AliPal...
2022-04-02 09:57:17 3032
原创 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 2592
原创 用 Ant Blazor 实现 PropertyGrid
目标 做一个类似 vs2019 属性的 PropertyGrid,支持对各种属性的编辑,省去为各种类型制作编辑表单的工作。 PropertyGrid的主要特性:支持bool, int, double, string, object, 集合 属性的编辑; int double 类型可设定最大值、最小值、默认值,可以给定单位; string 类型可指定编辑器为颜色; string类型可从下来列表框中选择; object, 集合 按照父子行显示,父行只读; 可以设定属性不可编辑...
2021-12-29 10:58:48 1099
原创 C# 静态扩展类不具有多态性质
假设类型 ClassA 有子类 ClassB,用静态类分别给ClassA 和 ClassB 加上同名的扩展方法,然后创建对象 ClassA obj = new ClassB(),实例调用 obj 扩展方法时,只会调用其声明类型(ClassA)对应的扩展方法,而不会像普通子类 override 父类 virtual/abstract 方法那样去调用子类的同名扩展方法,即不具有多态性质。 代码验证:namespace TestExtensions{ internal clas...
2021-12-28 14:52:49 185
原创 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 697
原创 理化计算程序必备:CoolProp+UnitsNet
物理化学计算 这类计算往往涉及到单位及单位换算,并且要用到物性参数。 例如:0℃=273.15K 质量流量 kg/h = 体积流量 m3/h * 密度 kg/m3 密度就是物性参数,随压力、温度变化。常规做法 只有Frink 、F#、Modelica 少数语言变量是自带单位的,大部分语言变量仅包含数值,单位转换需要在变量进行公式计算之前(预处理)完成,计算后再把结果单位转换为输出单位,单位转换主要通过若干常数实现。...
2021-10-09 09:29:27 1294
原创 将 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 2947 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 995
原创 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 534
原创 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 1078
原创 .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 1058
原创 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 127
原创 NB-IOT UDP透传测试
目标具备NB-IOT的仪表通过UDP将数据上传到非电信、华为、移动等云平台的公网服务器,服务器收到报文与仪表发送报文一致,即透传。电信NB-IOT 乱码电信最早搞NB-IOT,可惜走上了邪路,非要经过电信AEP云平台,或者华为的OC云平台,对NB-IOT 与 公网服务器 这种直接透传做了限制。本测试中,仪表发送报文为:C04134018012972304020000000000000062001300030000000099AAD25543AA00000000000000000000B404
2021-07-13 10:31:10 937 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 1391 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 382
Sparkplug规范2.2翻译.pdf
2021-03-02
h5无插件 RTSP 摄像头在线播放代码2
2018-11-03
Unfold 作者 Francois Vanderseypen 公司 Orbifold 时间:2007
2014-08-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人