学习笔记

IoTClient开发3 - ModBusTcp协议客户端实现

阅读目录 前言 进制转换 ModBusTcp协议介绍 ModBusTcp报文分析 ModBusTcp对寄存器的读取 ModBusTcp对寄存器的写入 结束 前言 进过前面两章的介绍,今天开始正式的实战。 进制转换 很多朋友对于进制转换可能是在刚学计算机的时候有接触,后来做高级语言开发可能就慢慢忘记了。我们做工控开发的时候需要经常进行进制转换,这里和大家一起复习下。 一个字节等8位(1byte = 8bit),可以存储2^8(0-255)共计256个数字。所以我们要对8、256等数字要敏感。 int16(short), int32(int), int64(long) 分别是占用2个字节、4个字节、8个字节,Single(float)也是占用4个字节。 ...

Spring使用@Async注解

本文讲述@Async注解,在Spring体系中的应用。本文仅说明@Async注解的应用规则,对于原理,调用逻辑,源码分析,暂不介绍。对于异步方法调用,从Spring3开始提供了@Async注解,该注解可以被标注在方法上,以便异步地调用该方法。调用者将在调用时立即返回,方法的实际执行将提交给Spring TaskExecutor的任务中,由指定的线程池中的线程执行。 在项目应用中,@Async调用线程池,推荐使用自定义线程池的模式。自定义线程池常用方案:重新实现接口AsyncConfigurer。 ...

这一次,彻底理解Promise源码思想

目录 实现一个简单的Promise函子 同时调用同一个Promise函子 增加reject回调函数 增加Promise状态 Maybe函子优化 总结 关于Promise的源码实现,网上有太多答案,我也看过很多资料,但都不是很明白。直到有一天我学完函数式编程之函子的概念,才对Promise源码有了更深刻的认识。今天,就让我们来重新认识一下Promise。 我们知道,Promise的诞生是为了解决“回调地狱”的问题,它用同步链式的方式去解决异步的嵌套回调。 啥?同步链式?这不就是我们上一节学习的函子的思想吗?如果对函子有所了解,那么再来学习Promise源码就比较容易理解了。接下来,我们探究一下函子和Promise有着怎样的关系。 ...

SpringBoot 2.0 开发案例之百倍级减肥瘦身之旅

前言 为了存我的小黄图,最近在做一款图床服务,集成了各种第三方云存储服务,目前正在内部测试阶段。项目是以Jar的形式运行在腾讯云上,不要问我为什么使用腾讯云了,因为阿里云老用户和狗不得入内。 问题凸显 因为内测期间代码逻辑会经常变动,这就免不了重新打包上传,虽然家庭是百兆带宽,奈何云服务器上行带宽有限制啊,总有那么几分钟不开心。 瘦身之旅 瘦身前,项目差不多得54MB 的样子,以后可能越来越肥胖!!!那怎么办? 程序员作为一个懒人职业,总会想到一些办法来搞定问题。 首先我们正常打包,解压 Jar 包,把 BOOT-INF 目录下的 lib 目录拷贝出来,这个后面会用到。 ...

.NET如何写正确的“抽奖”——打乱数组算法

NET如何写正确的“抽奖”——数组乱序算法 数组乱序算法常用于抽奖等生成临时数据操作。就拿年会抽奖来说,如果你的算法有任何瑕疵,造成了任何不公平,在年会现场code review时,搞不好不能活着走出去。 这个算法听起来很简单,简单到有时会拿它做面试题去考候选人,但它实际又很不容易,因为细节很重要,稍不留神就错了。 首先来看正确的做法: T[] ShuffleCopy(IEnumerable data, Random r) { var arr = data.ToArray(); ...

使用MySQL,SQL_MODE有哪些坑,你知道么?

SQL_MODE是MySQL中的一个系统变量(variable),可由多个MODE组成,每个MODE控制一种行为,如是否允许除数为0,日期中是否允许'0000-00-00'值。 为什么需要关注SQL_MODE呢? 首先,看三个简单的Demo(MySQL 5.6)。 1. 复制代码 mysql> create table t1(c1 datetime); Query OK, 0 rows affected (0.16 sec) mysql> insert into t1 values('2019-02-29'); ...

Vue躬行记(5)——组件通信

  组件之间除了保持独立之外,还需要相互通信,本章将介绍几种通信的方式。一、直接访问...

Bigo的Java面试,我挂在了第三轮技术面上.........

背景 前段时间家里出了点事,辞职回家待了一段时间,处理完老家的事情后就回到广州这边继续找工作,大概是国庆前几天我去面试了一家叫做Bigo(YY的子公司),面试的职位是面向3-5年的Java开发,最终自己倒在了第三轮的技术面上。虽然有些遗憾和泄气,但想着还是写篇博客来记录一下自己的面试过程好了,也算是对广大程序员同胞们的分享,希望对你们以后的学习和面试能有所帮助。 个人情况 先说下LZ的个人情况。 17年毕业,二本,目前位于广州,是一个非常普通的Java开发程序员,算起来有两年多的开发经验。 ...

Bigo的Java面试,我挂在了第三轮技术面上.........

背景 前段时间家里出了点事,辞职回家待了一段时间,处理完老家的事情后就回到广州这边继续找工作,大概是国庆前几天我去面试了一家叫做Bigo(YY的子公司),面试的职位是面向3-5年的Java开发,最终自己倒在了第三轮的技术面上。虽然有些遗憾和泄气,但想着还是写篇博客来记录一下自己的面试过程好了,也算是对广大程序员同胞们的分享,希望对你们以后的学习和面试能有所帮助。 个人情况 先说下LZ的个人情况。 17年毕业,二本,目前位于广州,是一个非常普通的Java开发程序员,算起来有两年多的开发经验。 ...

一个普通类就能干趴你的springboot,你信吗?

 先声明本人并不是标题党,如果看了本篇文章并且认为没有得到任何收获,请您随便留言骂我,本人绝不还口,已经对springboot了如指掌大大神,求放过!  不BB了,直接上代码,请各位在自己的springboot项目随便一个包下复制进去如下类(不要修改什么东西),如果你的springboot还能站起来算我输!...
青岛软件培训

可能你正在寻找一家靠谱的IT培训机构,学习一些专业的软件开发技术,找一份得体的工作。恰巧我们就是一家踏踏实实做教育的IT人才培养机构,我们咨询电话是 0532-85025005,如果你确实对IT感兴趣,我们不妨交流一下。

申请免费试听课程