- 博客(113)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 CRC校验
什么是CRC简介CRC循环冗余校验码是数据通信中的一种查错校验码。原理CRC 算法的基本思想是将传输的数据[M(X)] 当做一个位数很长的数。将这个数除以另一个数[G(X)] ,得到的余数[R(X)] 作为校验数据附加到原数据后面,组成循环校验码。M(X)代表待编码的有效信息G(X)代表约定好的多项式R(X)代表代表检验位由于,CRC的结构 = 信息位(N位) + 校验位(K位)所以,CRC编码 = M(X) + R(X)https://blog.csdn.net/huoji555/a
2020-12-21 15:07:19
26686
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 一个自用的二进制通讯消息协议
格式[7f] [命令(1byte)] [子命令(2byte)] [dataLength(2byte,范围:data + CRC + end)] [data] [crc(2byte)][7e]编码BinaryMessagepackage com.xxx.play.base.controllerimport com.xxx.play.base.util.{CRC16, HexadecimalUtil}/** * 二进制消息 * * 格式:[7f] [命令(1byte)] [子命令(2byt
2020-12-21 13:20:56
654
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 计算机基础:位运算
原文阅读简介计算机中的数在内存中都是以二进制形式进行存储的,用位运算就是直接对整数在内存中的二进制位进行操作,因此其执行效率非常高,在程序中尽量使用位运算进行操作,这会大大提高程序的性能。位操作符& 与运算 两个位都是 1 时,结果才为 1,否则为 0,如: 1 0 0 1 1& 1 1 0 0 1------------------------------ 1 0 0 0 1| 或运算 两个位都是 0 时,结果才为 0,否则为 1,如: 1 0 0 1 1|
2020-12-12 00:46:02
605
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Netty: websocket 文件分段上传
阅读原文简介前端用 Blob 分割文件,定义好每一段数据的大小,首先要把文件信息,包括文件名、文件大小、校验值、分段大小等信息发给服务器。然后是执行每一段的发送任务,可异步(有待研究,是开多个ws连接还是?????)也可同步(服务端最好要有回应事件),异步的话需要注意文件段的顺序,最好的话同步异步都用自己定义个格式帧去传输,方便校验。这里是简单版的,直接发送,没有校验! 还有,分段下载也是一样的操作~前端前端用的是 ant-design-vue upload组件,customRequest自定义上
2020-12-11 15:18:54
1605
2
原创 SSE在Nginx转发时“net :: ERR_INCOMPLETE_CHUNKED_ENCODING”问题处理
这里主要是把缓存,压缩等关闭。因为SSE是异步实时消息,不能当普通http数据可以缓存。
2022-06-10 10:35:58
2268
1
原创 Liquibase 报错 Unexpected error running Liquibase: Found 2 files that match
错误信息Starting Liquibase at 22:26:47 (version 4.2.2 #36 built at 2020-12-09 20:07+0000) Unexpected error running Liquibase: Found 2 files that match io/jmix/securitydata/liquibase/changelog/001-security-data.xml: jar:file:/E:/Users/Administrator/.gradle/cac
2021-02-26 23:22:26
1155
原创 Jmix_0.3.1 项目 liquibase 删除索引失败问题
阅读原文问题描述当你添加对象关系时,系统默认会给你将当前字段设为索引! 但代码里却没有显示指定对应索引的话,下次扫描时 liquibase 会创建删除索引的changelog,但由于对象关系引用的需要所以就会报错!问题处理手动添加关联对象相对于的索引删除 需要删除索引的changelog文件启动项目总结Jmix 好用,但新框架还很多Bug,新手程序员 使用的话很容易掉坑!????...
2021-02-26 16:50:09
413
1
翻译 HTTP/3 协议(部分解读)
原文:Hypertext Transfer Protocol Version 3 (HTTP/3)协议信息Workgroup: QUICInternet-Draft: draft-ietf-quic-httpPublished: 2 December 2020Intended Status: Standards TrackExpires: 5 June 2021Author: M. Bishop, Ed.Akamai6.1. 双向流所有客户端启动的双向流都用于HTTP请求和响应。双向流
2020-12-08 11:41:43
1572
翻译 QUIC:基于UDP的多路复用安全传输(部分翻译)
title: QUIC:基于UDP的多路复用安全传输(部分翻译)date: 2020-12-07 12:36:55comments: truecategories:HTTPHTTP/3tags:httphttp3文档信息Workgroup: QUICInternet-Draft: draft-ietf-quic-transport-32Published: 20 October 2020Intended Status: Standards TrackExpires: 2.
2020-12-08 11:40:28
1227
原创 C&C++:2. 运算符
算术操作符操作符表达式后递增x++(需要临时变量)后递减x- -(需要临时变量)前递增++x(不需要临时变量)前递减- -x(不需要临时变量)一元加+x一元减-x乘法x * y除法x / y求模x % y加法x + y减法x - y一元减号操作符用于对一个数值取反。布尔操作符!bx > yx < yx >= yx <= yx == yx != yb &
2020-12-06 18:57:00
306
原创 C&C++:1. 基本数据类型
原文阅读基础不牢,地动山摇!基本数据类型是所有编程语言的第一门课,必须要好好学习掌握,要非常熟悉每种类型的用途、范围大小、所占内存。位、字节和字位(bit)是最小存储单元,可以存储0或1。字节(byte)是常用的计算机存储单位。几乎对所有机器,1字节均为8位。字(word)是设计计算机时给定的自然存储单位,对于8位的微型计算机,1个字长只有8位。从那以后,个人计算机字增长至16位、32位直到目前的64位。计算机的字长越大,其数据转移越快,允许的内存访问也更多。int类型比较特殊,具体的字节
2020-12-06 17:29:48
666
原创 DIV滚动条自动滚动到最底部的两种方法
查看原文方法1function updateScroll(){ var element = document.getElementById("divId"); element.scrollTop = element.scrollHeight;}方法2<div class="container"> <div class="inner">Bottom</div> <div class="inner">Hi</div>
2020-12-04 12:53:35
11444
3
原创 Ant Design Vue table组件 websocket通讯,高速、大批量数据处理,视图卡顿问题
问题Vue 常用的UI框架,table组件在websocket通讯时,大量数据过来时页面数据加载不过来的情况,三个UI框架对比结果 ant-design-vue 和 iview比较差 element-ui 相对好点,但也卡顿。下图是博主开发的读卡器SDK测试工具,在做测速时就遇到的这问题,找来找去,最终发现是UI框架的问题!效果对比测试机器:NRP-D915I4 超高频分体式读写器单天线模式,2500~3600ms读500张卡,测试环境非严苛,严苛环境下读卡性能更强悍。卡顿需要鼠标移动视图才
2020-12-02 20:05:00
2285
1
原创 scala.math.BigDecimal,使用Gson转换时内存溢出错误。
错误Uncaught error from thread [application-akka.actor.default-dispatcher-7]: null, shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for ActorSystem[application]java.lang.StackOverflowError at com.google.gson.reflect.TypeToken.get(TypeTok
2020-11-13 09:25:11
882
原创 Scala:写一个好用的Tree工具
一、定义IdName特质包含Id和Nametrait Id { val fdId: String}trait Name { val name: String}trait IdName extends Id with Name二、定义引用类(父类)/** * 关联对象 * * @param fdId ID * @param name 名字 */case class Relevance(fdId: String = "-", name: String = "-") ex
2020-11-07 15:08:55
369
原创 vue组件 - select组件(动态数据,显示默认对象信息,返回选中对象ID)
需求还是对象关联,如父类别。对象关联对象的更新时用到本组件。开始做新建 KaiSelect.vue 文件(项目名叫KaiAdmin,自己琢磨的通用后台,在为此项目写组件。????)本组件是基于 Ant Design Vue Select 选择器 修改而来的。…效果博客迁移...
2020-11-03 21:43:18
791
原创 vue查询组件——根据ID获取对象信息,指定属性显示
需求很多时候因对象关联,前端只收到一个关联对象的ID,或者枚举值。这个如果后台不处理的话前端往往需要根据ID再去后台查询获得对象数据显示对象信息(一般显示name)。因此这是一个很常见的操作,所以我们可以封装一个组件,让组件自动帮我们去查询。开始做新建 GetModelInfo.vue 文件定义参数包含 fdId(要查询的ID)、url(后台接口路径)、show(显示的字段)、attributes(要查询的属性)props: { fdId: { type: String,
2020-11-03 14:51:02
12437
原创 Akka Actors入门案例解析
1. HelloWorldimport akka.actor.typed.scaladsl.Behaviorsimport akka.actor.typed.scaladsl.LoggerOpsimport akka.actor.typed.{ActorRef, ActorSystem, Behavior}object HelloWorld { /** * 某人打招呼 * * @param whom 谁(某人) * @param replyTo 消息的回复者
2020-10-29 13:53:23
857
原创 l100_Issuer_test 使用说明
介绍一个JFX小程序,R100发卡测试、设置区域运行环境Window7及其以上JDK1.8使用说明如果系统未配置JDK环境请先配置好安装jdk-8u251-windows-x64双击自解压解压完成,进入主程序点击连接输入串口号和波特率,波特率默认115200不需要修改,绿灯亮起,连接成功。点击 “T”,弹出读卡数据显示窗口点击 inventory按钮,开始读卡点击 stop按钮,停止读卡点击 “R”,弹出设置区域窗口选择好区域后点击"OK"设置完毕..
2020-10-16 14:22:21
277
原创 play framework + vue-antd-admin 开发一个新模块的过程
需求做一个简单的增删改查功能添加页面简单的话一个list就搞定了。使用的组件Table 表格 - 可编辑行Table 表格 - 可编辑单元格代码<template> <a-card :bordered="false"> <a-button type="primary" style="margin-bottom: 10px" @click="handleAdd">Add</a-button> <a-table :col
2020-09-18 18:12:36
490
原创 Netty中协议的动态切换
使用场景不同设备间不同协议的解析Netty常规使用启动服务前向Bootstrap中添加handler,启动后数据就安装添加的Handler顺序流动,Handler各自处理自己相关业务。显然在客户端已知的情况下这样是没毛病的,但在客户端未知的情况下,这就有点尴尬了。不同的设备(客户端)又有不同的协议,不同协议就要有不同的解码程序,所以常规的方式此时就不可用了。效果是这样的查看全文...
2020-09-17 14:22:25
704
原创 JS ArrayBuffer 数据获取与转换
简介ArrayBuffer 对象用来表示通用的、固定长度的原始二进制数据缓冲区。它是一个字节数组,通常在其他语言中称为“byte array”。你不能直接操作 ArrayBuffer 的内容,而是要通过类型数组对象或 DataView 对象来操作,它们会将缓冲区中的数据表示为特定的格式,并通过这些格式来读写缓冲区的内容。ArrayBuffer - JavaScript | MDN查看ArrayBuffer内容内部有4种存储方式,一般 Uint8Array 使用的多[Int8Array]]
2020-09-11 12:27:30
9499
原创 Ant Design Vue Tree 树形控件实现添加子节点
先上个效果图????#要点# JS对象是地址引用的所以找到了要添加子节点的对象把它赋值到自己定义的对象中,就可操作此对象了,如添加子节点。添加到根目录下这个比较简单,因为树就是从root开始的,所以直接拿到root节点的子节点数组,添加新节点对象即可。addMenu() { const newChild = { title: '编辑菜单', key: (new Date()).getTime(), scopedSlots: {title: 'title'},
2020-08-28 13:41:51
4716
10
原创 slick 通用查询工具(带分页)
1. 首先定义一个CRUD特质package reposimport repos.table.Tables.profile.api._import slick.jdbc.JdbcProfileimport slick.lifted.TableQueryimport scala.concurrent.duration.Durationimport scala.concurrent.{Await, Future, Promise}/** * Slick CRUD util * * @a
2020-08-26 18:07:55
662
原创 playframework Module加载流程
com.google.inject.AbstractModule本类实现 com.google.inject.Module接口Guice 用来配置依赖关系play.api.inject.Module抽象类,源码注释很直观/** * A Play dependency injection module. * Play 依赖项注入模块。 * * Dependency injection modules can be used by Play plugins to provide binding
2020-08-19 16:23:07
483
1
原创 2020-08-31
pom.xml<plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass&g
2020-08-18 10:57:03
384
原创 JVM规范阅读:徒手解析class文件
Class文件结构ClassFile { u4 magic; // 魔数 u2 minor_version; // 副版本号 u2 major_version; // 主版本号 u2 constant_pool_count; // 常量池计数器 cp_info constant_pool[constant_pool_count-1]; // 常量池数据区
2020-08-04 20:26:29
267
原创 JVM规范阅读:2 Java 虚拟机结构
标题数据类型分两类:原始类型(原始值)、引用类型(引用值)JVM运行前,编译器会先尽可能的完成类型检查JVM直接支持对象,实例或数组(数组在JVM里是对象),JVM中用reference表示原始类型与值引用类型与值运行时数据区栈帧对象的表示浮点算法特殊方法字节码指令集类库共有设计、私有实现...
2020-08-02 15:28:40
314
原创 windows 批处理小知识
windows 批处理出现“此时不应有×××”第一,批处理中单字符变量的引用使用要把%改为%%第二, 要将用命令的执行结果作为循环体,用反引号``不是单引号’’第三,使用反引号情况下, /F选项要加上 usebackq参数一次运行多个命令现在和流行的UNIX SHELL一样了,可以用 && 和 || 组合两条命令,依次执行…比如aa && bb就...
2020-03-06 07:20:35
432
转载 cmd-bat批处理命令延时方法
方法一:ping缺点:时间精度为1秒,不够精确@echo off@ping 127.0.0.1 -n 6 >nulstart gdh.txt方法二:vbs start /wait缺点:生成临时文件有点:时间精度为0.001秒,精度高@echo offecho wscript.sleep 5000>sleep.vbsstart /wait sleep.vbssta...
2020-03-06 06:15:15
3217
原创 Axon参考指南 - 聚合事件回放
1.配置Repository @Bean public Cache cache() { return new WeakReferenceCache(); } @Bean public Repository<OrderAggregate> orderAggregateRepository(EventStore eventStor...
2020-03-03 12:23:10
778
翻译 Axon参考指南 - 6.命令处理 - State-Stored Aggregates(状态存储的聚合)
简介在“聚合”主页中,我们看到了如何创建由“事件来源”支持的聚合。换句话说,事件源聚合的存储方法是通过重放(事件重放)构成聚合上的更改的事件。但是,聚合也可以原样存储。这样做时,用于保存和加载聚合的存储库就是GenericJpaRepository。(疑问:每一次改变就保存一个聚合状态?还是更新状态?)状态存储的聚合的结构与事件来源的聚合略有不同:import org.axonframewo...
2020-03-02 17:09:15
475
翻译 Axon参考指南 - 5.命令处理 - External Command Handlers(外部命令处理程序)
简介命令处理功能通常直接放置在集合上(如此处更详细描述)。但是,在某些情况下,既不可能也不希望将命令直接路由到Aggregate实例。消息处理功能(例如命令处理程序)可以放在任何对象上。因此可以实例化“命令处理对象”。命令处理对象是一个简单的(常规)对象,具有带@CommandHandler注释的方法。与聚合不同,命令处理对象只有一个实例,它处理在其方法中声明的所有类型的命令:impor...
2020-03-02 16:51:57
669
翻译 Axon参考指南 - 4.命令处理 - Multi-entity Aggregates(多实体聚合)
简介复杂的业务逻辑通常需要的内容超出了仅具有聚合根的聚合所提供的内容。在这种情况下,重要的是将复杂性分布在聚合中的多个“实体”上。在本章中,我们将讨论有关在聚合中创建实体的细节以及它们如何处理消息。实体之间的状态对聚合不应公开状态的规则的常见误解是,任何实体都不应该包含任何属性访问器方法。不是这种情况。实际上,如果聚合中的实体将状态暴露给同一聚合中的其他实体,则聚合可能会受益匪浅。但是,建...
2020-03-02 16:41:08
833
翻译 Axon参考指南 - 3.命令处理 - Aggregate(聚合)
简述在本章中,我们将更详细地介绍Axon应用程序中处理和调度命令的过程。这里将涉及诸如聚合建模,外部命令处理程序,命令分派和测试之类的主题。1. Aggregate1.1. Aggregate 基本使用聚合是一个常规对象,其中包含状态和更改该状态的方法。创建Aggregate对象时,您实际上是在创建“ Aggregate Root”,通常带有整个Aggregate的名称。出于此描述的目的,...
2020-03-02 15:47:28
1594
转载 Linux系统下安装nginx
下载解压包(以1.59版本为例)$ cd /usr/src$ wget http://nginx.org/download/nginx-1.12.0.tar.gz解压压缩包$ tar xvf nginx-1.12.0.tar.gz设置配置$ cd nginx-1.12.0普通安装$ ./configure --prefix=/usr/local/nginx安装SSL模块(支...
2020-02-25 09:48:35
558
转载 已安装nginx支持https配置 the "ssl" parameter requires ngx_http_ssl_module
一:开始Nginx的SSL模块Nginx如果未开启SSL模块,配置Https时提示如下错误:nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf解释:nginx缺少http_ssl_module模块,需要在已安装的nginx中添加ssl模块。说明...
2020-02-25 09:39:01
5788
1
原创 Linux开启密码登陆
sudo vim /etc/ssh/sshd_configpasswordAuthentication项,修改成yes重启ssh服务:sudo service sshd restart密码设置:sudo passwd user-name
2020-02-25 09:26:39
2384
原创 手写JDK动态代理
JDK动态代理原理:拿到被代理对象的引用,然后获取它的接口JDK代理重新生成一个类,同时实现我们给的代理对象所实现的接口把被代理对象的引用也拿到了重新动态生成一个class字节码然后编译1. 获取动态生成的class文件我们知道了JDK动态代理是动态生成java代码,然后编译、加载、执行实现的。我们如何看看JDK自动生成的java文件是怎样的呢?可以通过以下代码获取动态class...
2020-02-16 18:09:09
243
Linux命令大全完整版
2017-09-01
go-ethereum 源码运行报错!
2018-03-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人