摘要: 物联网产品设计中的设备升级功能 一、背景 在迅速变化和发展的物联网市场,新的产品需求不断涌现,因此对于智能硬件设备的更新需求就变得空前高涨,设备不再像传统设备一样一经出售就不再变更。 物联网平台支持通过在线升级方式进行设备固件升级,是智能设备修复系统漏洞、实现系统升级的手段,为用户通过固件升级提供更 阅读全文
posted @ 2020-12-17 10:38 JerryMouseLi 阅读(2369) 评论(2) 推荐(5)
摘要: 线程(一)——线程,线程池,Task概念+代码实践 摘要 线程中的概念很多,如果没有代码示例来理解,会比较晦涩,而且有些概念落不到实处,因此,本文以一些运行示例代码,结果来阐述线程中的一些基础概念。让自己跟读者一起把线程中的概念理解地更深刻。 1 线程安全 1.1 未出现线程抢占 class Thr 阅读全文
posted @ 2020-12-14 20:48 JerryMouseLi 阅读(1863) 评论(0) 推荐(11)
摘要: 深入理解C#中的异步(一)——APM模式EAP模式 1 使用异步编程的原因 同步编程,服务器在响A服务的数据库读取,网页请求或者文件请求(这里我们统称为IO操作),如果延迟很大,此时如果来了B服务的IO请求,可能无法及时响应(阻塞),此时异步编程模式(非阻塞)应运而生。 异步编程模式是为了避免性能瓶 阅读全文
posted @ 2020-12-07 23:55 JerryMouseLi 阅读(2290) 评论(2) 推荐(10)
摘要: DotNetty关键概念及简单示例(基于NET5) 1.DotNetty 设计的关键 异步和事件驱动是Netty设计的关键。 1.1 核心组件 1.1.1 Channel Channel:一个连接就是一个Channel。 Channel是Socket的封装,提供绑定,读,写等操作,降低了直接使用So 阅读全文
posted @ 2020-12-04 15:45 JerryMouseLi 阅读(6981) 评论(4) 推荐(8)
摘要: WEB组态可视化软件 1 B/S组态软件 它是一个独立的产品,包含编辑器(设计时)和运行环境(运行时)两大模块,我们将其命名为——WEB组态可视化软件(下称“组态软件”)。 2 组态概念 组态(Configure)的概念来自于20世纪70年代中期出现的第一代集散控制系统(Distributed C 阅读全文
posted @ 2020-12-03 18:49 JerryMouseLi 阅读(6681) 评论(3) 推荐(4)
摘要: C# 中大端序与小端序 static void Main(string[] args) { uint value = 0x12345678; Console.WriteLine("原始字节序:0x12345678"); byte[] bigLittleEndian = BitConverter.Ge 阅读全文
posted @ 2020-11-17 23:34 JerryMouseLi 阅读(1564) 评论(0) 推荐(0)
摘要: IL角度理解for 与foreach的区别——迭代器模式 1 最常用的设计模式 1.1 背景 如果问你最常用的设计模式是哪种?你可能会说单例模式,工厂模式。但根据我在项目里的经验,一个完整的应用,应该是迭代器模式。 1.2 摘要 本文不讲怎么去实现迭代器模式,但介绍迭代器模式到底是什么?为什么迭代器 阅读全文
posted @ 2020-11-15 17:17 JerryMouseLi 阅读(810) 评论(0) 推荐(2)
摘要: System.Net邮件发送功能踩过的坑 1.EazyEmail邮件发送类库 Net 类库自带了邮件发送功能。笔者对该类库,从使用的角度进行了二次封装,nuget上可搜索EazyEmail,注入容器时通过委托来获得邮箱服务器的配置地址以及发送地址直接调用send方法即可。 容器注入代码。这里定义的委 阅读全文
posted @ 2020-11-10 15:40 JerryMouseLi 阅读(1317) 评论(8) 推荐(4)
摘要: IL角度理解C#中字段,属性与方法的区别 1.字段,属性与方法的区别 字段的本质是变量,直接在类或者结构体中声明。类或者结构体中会有实例字段,静态字段等(静态字段可实现内存共享功能,比如数学上的pi就可以存在静态字段)。一般来说字段应该带有private 或者 protected访问属性。一般来说字 阅读全文
posted @ 2020-10-22 00:34 JerryMouseLi 阅读(1770) 评论(8) 推荐(10)
摘要: #从IL角度彻底理解回调_委托_指针 #1.创作此文的背景 又是一个月的时间没写博文,瞎忙活,来武汉重新上班了,武汉这边中小学都开学了,很安全,大家可以放心 来商务出差个人游玩,重新招了个后端进团队,一个是在QQ技术群认识的,在他身上放佛看到了过去的自己,希 望以后能帮我分担更多的工作,得组织培训, 阅读全文
posted @ 2020-09-11 20:24 JerryMouseLi 阅读(898) 评论(0) 推荐(4)
摘要: #abp框架Excel导出——基于vue #1.技术栈 ##1.1 前端采用vue,官方提供 UI套件用的是iview ##1.2 后台是abp——aspnetboilerplate 即abp v1,https://github.com/aspnetboilerplate/aspnetboilerp 阅读全文
posted @ 2020-07-29 19:00 JerryMouseLi 阅读(2636) 评论(5) 推荐(7)
摘要: #数据库对应EFCore操作 #1,查某个id在某个集合被包含的数据 例如: 查 Id 在ids里的结合 //实现的sql是实体Id in ids,也就是ids跟Id 两个集合的交集 var _ainfcfgs = await _ainfcfgServices.GetListAsync(x => i 阅读全文
posted @ 2020-07-22 13:45 JerryMouseLi 阅读(412) 评论(0) 推荐(0)
摘要: #1 linq介绍 ##1.1 linq产生背景 一个应用服务后台程序,肯定会需要格式各样的数据检索跟操作,而这些数据在过去的这些年里一般都会包含在关系型数据库或者xml文件中。 .Net3.5版本发行之前,传统的数据源访问方式就是直接对数据库或者xml文件进行检索操作。在.Net3.5 Visua 阅读全文
posted @ 2020-07-21 18:43 JerryMouseLi 阅读(1228) 评论(0) 推荐(5)
摘要: #物联网海量设备心跳注册,脱网清除——多线程高并发互斥锁落地 #1.应用背景 在物联网应用场景中,需要维护很多个设备的连接,比如基于TCP socket通信的长连接,目的是为了获取设备采集的信息,反向控制设备的数字开关或者模拟量。我们把这些TCP长连接都放入了基于线程安全的ConcurrentDic 阅读全文
posted @ 2020-04-15 22:29 JerryMouseLi 阅读(2778) 评论(6) 推荐(3)
摘要: #1.粘包现象 每个TCP 长连接都有自己的socket缓存buffer,默认大小是8K,可支持手动设置。粘包是TCP长连接中最常见的现象,如下图 socket缓存中有5帧(或者说5包)心跳数据,包头即F0 AA 55 0F(十六进制),通过数包头数据我们确认出来缓存里有5帧心跳包,但是5帧数据彼此 阅读全文
posted @ 2020-04-08 14:48 JerryMouseLi 阅读(2282) 评论(2) 推荐(11)
摘要: [toc] 1.背景 接上篇文章 "深入浅出C 结构体——封装以太网心跳包的结构为例" ,使用结构体性能不佳,而且也说明了原因。本篇文章详细描述了以类来封装网络心跳包的优缺点,结果大大提升了解析性能。 2.用类来封装以太网心跳包的优缺点 2.1.优点 + 可以在类里直接new byte[],即直接实 阅读全文
posted @ 2020-04-01 08:56 JerryMouseLi 阅读(2193) 评论(0) 推荐(1)
摘要: #1.应用背景 底端设备有大量网络报文(字节数组):心跳报文,数据采集报文,告警报文上报。需要有对应的报文结构去解析这些字节流数据。 #2.结构体解析 由此,我第一点就想到了用结构体去解析。原因有以下两点: ##2.1.结构体存在栈中 类属于引用类型,存在堆中;结构体属于值类型,存在栈中,在一个对象 阅读全文
posted @ 2020-03-31 17:55 JerryMouseLi 阅读(2435) 评论(2) 推荐(3)
摘要: [toc] 1.背景介绍 主要应用场景在物联网中,底端设备注册报文的上报,需要对报文的有效载荷(data)进行CRC16的复验,验证与设备端的CRC校验是否相等,如果相等,报文有效,设备上报就会注册成功,不是第一次则会刷新心跳时间,避免通信中断告警。设备的报文结果以及设备的CRC16位置如下: 平台 阅读全文
posted @ 2020-03-29 15:32 JerryMouseLi 阅读(11790) 评论(0) 推荐(3)
摘要: Git在公司内部的使用规范 [toc] 1.版本定义 版本号使用x.x.x.x进行定义. + 第一个x代表大版本只有在项目有重大变更时更新; + 第二个x保留; + 第三个x代表常规版本有新求会更新; + 第四个x代表紧急Bug修正; 一个常见的版本号类似于:0.0.10.11 2.系统开发环境 | 阅读全文
posted @ 2020-03-24 11:10 JerryMouseLi 阅读(2643) 评论(0) 推荐(2)
摘要: [toc] Abp系列 一. "abp框架运行——前后端分离(基于VUE)" 二. "基于abp框架的数据库种子数据初始化" 基于abp框架的数据库种子数据初始化 1.背景 最近在用abp开发项目,需要将如下区域数据通过程序的初次运行种入数据库。 不知道大家是怎么去管理数据库跟后台程序的同步的, " 阅读全文
posted @ 2020-03-06 17:59 JerryMouseLi 阅读(3366) 评论(0) 推荐(2)