Netty:多协议的动态切换 使用场景不同设备间不同协议的解析 Netty常规使用启动服务前向Bootstrap中添加handler,启动后数据就安装添加的Handler顺序流动,Handler各自处理自己相关业务。显然在客户端已知的情况下这样是没毛病的,但在客户端未知的情况下,这就有点尴尬了。不同的设备(客户端)又有不同的协议,不同协议就要有不同的解码程序,所以常规的方式此时就不可用了。 看看源码对一个Handler往上走 2020-09-17 Netty 网络 netty
Android TCP通讯 Android通过USB线与本地服务通讯思路USB线通讯的本质是tcp通讯,通过adb转发数据。 所以首先服务端软件需要配置adb。写一个脚本,在准备连接之前调用一下 adb脚本adb shell am broadcast -a NotifyServiceStop adb forward tcp:5000 tcp:13000 adb shell am broadcast -a NotifyServ 2020-09-14 网络 物联网 网络 通讯
服务端连接客户端串口设备(Chrome App)方案 可选的方案 写个Java程序读取本地串口并通过TCP连接到服务器,打包成jar,放到指定目录,web页面通过nodejs的child_process模块唤起服务。 serialport.io 一开始以为可以通过页面直接调用本地串口,呵呵想多了虽是JS控制串口,但人家是运行在服务端的JS,要用的话与上面的操作一样。 chrome app 这个其实本质上和前两个一样,但它直接使用的是Google Ch 2020-09-11 网络 物联网 网络 串口
JS ArrayBuffer 数据获取与转换 JS ArrayBuffer 数据获取与转换简介 ArrayBuffer 对象用来表示通用的、固定长度的原始二进制数据缓冲区。 它是一个字节数组,通常在其他语言中称为“byte array”。 你不能直接操作 ArrayBuffer 的内容,而是要通过类型数组对象或 DataView 对象来操作,它们会将缓冲区中的数据表示为特定的格式,并通过这些格式来读写缓冲区的内容。 ArrayBuffer - 2020-09-11 JS 数据结构 数据结构 js
Netty:一个分帧解码程序 package sdk.protocol.m200x.frame.coder; import sdk.protocol.m200x.frame.FrameConstant; import sdk.util.HexadecimalUtil; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; import io.n 2020-09-03 Netty 解码 网络 netty
Rancher的安装配置及服务部署+私有服务部署 1. 官网文档 https://rancher.com/docs/rancher/v2.x/en/quick-start-guide/deployment/quickstart-manual-setup/Install Rancher sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:st 2020-08-31 容器 Docker Rancher docker rancher
maven-assembly-plugin打包加入本地lib中的jar包 pom.xml<plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <m 2020-08-31 工具 编译工具 Maven maven
Ant Design Vue 树形控件实现添加子节点 先上个效果图😎 前奏上面的树是基于 Ant Design Vue 可搜索树 修改而来的。 #要点# JS对象赋值是基于地址引用的所以找到了要添加子节点的对象把它赋值到自己定义的对象中,就可操作此对象了,如添加子节点。 添加到根目录下这个比较简单,因为树就是从root开始的,所以直接拿到root节点的子节点数组,添加新节点对象即可。 定义的字段currentSelectTreeData Tree 2020-08-30 UI框架 ant-design-vue ant-design-vue vue
slick 通用查询工具(带分页) 1. 首先定义一个Model特质在指定ID查询和删除时用,根据实际情况定义字段。 package slick.crud import slick.lifted.Rep /** * @author Rubin * @version v1 2020/8/26 12:50 */ trait Model { val fdId: Rep[String] } 2. 再建一个 2020-08-30 Scala Slick tool scala slick