自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 资源 (6)
  • 收藏
  • 关注

原创 netty源码阅读--处理客户端请求

netty是一个非常成熟的NIO框架,众多apache的顶级项目底层通信框架都是用的是netty,本系列博客主要是记录自己复习netty源码的过程,重在理解netty的关键如:如何启动,如何接受网络数据、netty的内存管理机制以及编解码器等,废话不多说,直接跟着netty源码中的MQTT的官方示例来看netty服务端启动完成之后,如何处理客户端请求。前面的执行方法work线程和boss线程执行的一模一样,但是从下面步骤开始会有差异,主要原因还是unsafe对象不一样。

2023-04-21 22:36:05 791

原创 netty源码阅读--服务启动

netty源码阅读

2023-04-21 22:09:19 511

原创 2022年工业与电力物联网技术现状分析

物联网架构体系主要包含物联网用、云、管、边、端五大主要层级,该5层架构目前已经是物联网行业的主流架构,用:主要包含基于物联网技术的面向各行业用户开发的各种物联网应用服务/程序等云:主要指物联网相关的云化能力平台/组件等,这里的云并不特指物联网公司搞出来的公有云——个人对公有云在工业尤其是电力行业的应用并不看好,本文的“云”主要指“私有云”或“混合云”管:有的公司或组织又称为“网”,主要指连接云端到硬件设备之间的网络环境,如蜂窝网络、局域网络、工业环网、电力专网等。

2022-11-29 19:41:26 901

原创 HXAPIGate系列——HXAPIGate快速入门

HXAPIGate(中文名:浩心API网关),其核心能力在于对API微服务的零侵入,使用HXAPIGate代理微服务API接口时,微服务建设只需要进行纯粹的业务代码实现即可,不需要考虑任何权限管理以及数据安全和服务安全等,将这部分工作完全交给浩心API网关来管理和维护;浩心目前仅依赖mysql,有选择的依赖zookeeper,目前已经支持分布式架构下的API接口鉴权、限流、负载均衡、熔断、降级等整体的部署架构如图所示:注:ignite为嵌入式内存数据库,不需要用户单独部署。......

2022-08-30 19:54:01 826

原创 物联网物模型

物联网物模型1. 背景2. 物模型类别2.1 ICA2.2 OneDataModel2.3 3IM(AII-DTML)2.4 电力模型规范3.物模型思考1. 背景万物互联,为数据创建价值;生活中,家用智能空调、智能扫地机器人、智能电视等等,物联网技术其实早早就已经走进了千家万户,当前疫情大背景下,远程办公、健康码、核酸检测电子报告等等,更使得听起来高大上的物联网从幕后走到台前,不过目前物联网领域,山头林立——短时间甚至可遇见的未来这一情况将一直延续,不同厂家之间、不同行业之间数据互不相通,加大的限制了物

2022-05-03 18:19:25 5535

原创 IOTGate新特性介绍--- kernel模式

背景IOTGate项目地址 前往IOTGate在IOTGate最新版本中,最近新增了一个重要的新特性,那就是kernel模式,在此之前的版本中,网关与前置服务(规约解析务)基于nomer模式通信,即前置为TCP/IP服务端,而网关为TCP/IP客户端,下图为normal模式示意图:在某些场景下,normal模式有一定的弊端,尤其是在网络比较复杂的情况下,由于在normal模式下前置master是服务端程序,因此必须要将前置master所在服务器开启相应通信端口供网关服务访问,在服务扩展性上,由于网关

2021-10-01 17:03:56 2817

原创 一道面试题--设计炸船互动游戏

游戏规则游戏分为甲乙双方两人。游戏规则如下游戏双方各拥有一个 10*10 的地图中部署战舰进行初始化分布。布局完成后,玩家只能看到自己战舰,看不到对方战舰。战舰有三种形状, 每个玩家分别拥有每个模型的一条战舰。三个模型分别为:三种战舰可以自由旋转。例:甲为红色,已为蓝色,初始布局可以如下:乙方地图(战舰只对乙方可见)甲方地图(战舰只对甲方可见)游戏开始,甲乙两人轮流挑选对方坐标进行炸弹盲投,如果炸弹击中对方战舰,则标记击中,如果没有击中,标记 miss。如果一个战舰的所有位置

2021-09-05 23:00:00 2704 7

原创 iRpc进阶之节点扩容

iRpc选举iRpc项目地址:gitee: https://gitee.com/willbeahero/iRpcgithub: https://github.com/BrianApple/iRpciRpc基于raft选举算法实现服务节点自举,由于iRpc需要集群节点扩容,因此没有直接使用dledger项目作为选举实现框架,不过iRpc在实现选举和节点扩容的过程中,复用了dledger项目相关源代码,并按照iRpc所需做出相关调整,在此再次想dledger项目及作者表示感谢,dledger项目

2021-04-11 12:59:40 284

原创 iRpc入门

简介iRpc是基于Nio通信框架Netty编写的支持同步、异步方法执行的高性能RPC框架;特点高性能: iRpc底层通信基于NIO网络通信模式,java对象传输基于ProtoBuf序列化之后传输,支持同步异步: 可根据需求选择同步和异步方法调用单机、leader-follower模式可选: iRpc支持单机或leader-follower模式(无需第三方依赖)支持leader-follower模式动态扩容: 基于raft选举算法自举leader,同时支持新iRpc节点动态增加到leader-f

2021-04-11 12:26:03 819

原创 发布jar程序到maven中央仓库

1.申请仓库访问sonatype(https://issues.sonatype.org )注册并登录----这里需要注意,sonatype账号注册时,密码要求很严格,但是,由于最终该密码要配置到maven的setting.xml文件中,如果包含了类似“&”之类的特殊字符时,会比较麻烦,所以建议密码中不要包含特殊字符,可以使用“_”.具体申请过程可以参考该博客:https://blog.csdn.net/wo541075754/article/details/107633976申请通过之后

2021-03-30 21:18:01 218

原创 Docker安装单机版Tdengine2.x时序数据库

Docker安装单机版Tdengine2.x时序数据库根据官方文档下载官方镜像,通过docker命令启动服务docker run --add-host=yc.tdengine.com:127.0.0.1 -d -v /etc/taos:/etc/taos -p 6030:6030 -p 6035:6035 -p 6041:6041 -p 6030-6040:6030-6040/udp tdengine/tdengine:2.0.3.1其中–add-host=yc.tdengine.com:127.0

2020-09-19 09:01:21 1662

原创 记一次mysql重装

###mysql版本信息暴露公司mysql可以获取到版本信息,因此公司让隐藏版本信息,网上收到当地之后(将mysqld中版本号强制改为不存在的版本号),在修改并执行restart命令之后,发现mysql重启失败,报错信息如下网上搜索该异常,发现很少遇到此问题,并且遇到此问题的人也都是在用户登录的时候发生,解决方法是修改mysql源代码并重新编译源码,由于这个mysql不是源码自行编译安装的(据说是yum安装—后面会说为什么是“据说”)1. 排查无果只能关闭mysql,因为mysql数据是..

2020-09-19 08:56:47 367

原创 IOTGate多规约分布式物联网网关

项目地址: https://gitee.com/willbeahero/IOTGate

2020-07-05 18:12:17 1196

原创 华为机试--模拟内存分配

模拟一个连续的内存块,其大小固定为100字节:- 1.用户输入"REQUEST=10"表示从内存中分配一个连续的大小为10字节的空间,当分配成功时,输出内存区块的首地址,分配失败(内存空间不足)时输出"error"- 2.用户输入“RELEASE=0”,表示释放首地址为0所对应的区块,如果不存在相应区块,则输出“error”,反之不输出public class Test003 { public static void main(String[] args) { Scanner i..

2020-06-30 18:49:26 2014

原创 dubbo泛化调用内存溢出报OutOfMemoryError异常

dubbo客户端泛化调用服务端接口时,客户端程序分配2G内存,但是服务最多运行1小时就会内存溢出,异常信息如下(异常显示SendThread这个线程出出现了内存溢出):[rpc_dubbo_call_thread_1_1-SendThread(127.0.0.1:2182)] WARN org.apache.zookeeper.server.ZooKeeperThread - Exception occurred from thread rpc_dubbo_call_thread_1_1-SendTh

2020-05-10 21:33:13 2129 1

原创 浅谈企业级物联网平台

随著越来越多的公司开始涉足物联网相关领域,这也意味着会有很多原来是做互联网项目开发的同学也不得不开始学习物联网的开发,同样的对于项目经理来说,如何确定一个满足业务需求的物联网技术架构则至关重要,笔者根据一直以来物联网研发经验浅谈企业级物联网平台与各位探讨。

2020-05-06 18:18:45 3105

原创 Ignite计算网格第二部分

8.负载平衡8.1.概述Ignite中负载平衡是通过LoadBalancingSpi实现的,它控制所有节点的负载以及确保集群中的每个节点负载水平均衡。对于同质化环境中的同质化任务,负载平衡采用的是随机或者轮询的策略。不过在很多其它场景中,特别是在一些不均匀的负载下,就需要更复杂的自适应负载平衡策略。LoadBalancingSpi采用“前”负载技术,即在将其发送到集群之前就对作业在某个...

2020-04-10 13:55:58 652

原创 Ignite计算网格第一部分

1.计算网格Ignite的计算网格可以将比如一个计算这样的逻辑片段,可选地拆分为多个部分,然后在不同的节点并行地执行,这样就可以并行地利用所有节点的资源,来减少计算任务的整体执行时间。并行执行的最常见设计模式就是MapReduce。但是,即使不需要对计算进行拆分或者并行执行,计算网格也会非常有用,因为它可以通过将计算负载放在多个可用节点上,提高整个系统的扩展性和容错能力。计算网格的API非...

2020-04-09 18:57:00 753

原创 Ignite配置

集群发现Ignite的发现机制,根据不同的使用场景,有两种实现:TCP/IP发现:面向百级集群节点设计和优化; ZooKeeper发现:允许将Ignite集群节点数扩展至百级甚至千级,仍然保证扩展性和性能。1.TCP/IP发现1.1.概述Ignite中,通过DiscoverySpi节点可以彼此发现对方,Ignite提供了TcpDiscoverySpi作为DiscoverySpi...

2020-04-07 12:19:20 2003

原创 netty整合shiro,报There is no session with id [xxxxxx]问题定位及解决

#### 问题描述:##### 在做netty和shiro整合测试时,程序启动并正常运行一段时间之后会发现shiro出现异常,异常信息为There is no session with id [xxxxxx]!重启之后可以恢复但是运行一会儿又会出现该情况,由于我这里没有使用shiro的web认证机制,网上一些解决类似此情况的方法无效。以下为我自己排查分析并解决的过程##### 从dub...

2020-04-01 14:50:53 1423

原创 Nginx搭建TCP反向代理服务

访问 https://www.nginx.com/resources/wiki/modules/index.html 并找到nginx的Stream插件,跳转到相应页面( https://github.com/openresty/stream-lua-nginx-module )在项目的README中有如何安装nginx并添加相应module的说明:使用命令如下:tar -xzvf...

2019-12-26 14:47:31 663

原创 HXAPIGate(中文名:浩心API网关)

简介HXAPIGate是我最新开源的专门针对非springcloud家族的REST微服务的一款高性能网关,性能比Zuul更加优秀,依赖少,不依赖spring!HXAPIGate(中文名:浩心API网关)由HXAPIGate、bootshiroPro组成。HXAPIGate基于Netty+Shiro开发的一款高性能API网关,对基于REST服务的细粒度API资源的权限管理平台,bootshir...

2019-11-13 16:47:09 854 2

原创 jvm崩溃并输出 hs_err_pidxxxx.log文件异常原因

今天在服务其上面部署一个已经存在得jar包可执行文件时,猛然发现在jar得同级目录下居然存在多个 hs_err_pidxxxx.log文件,查看该文件,里面内容如下## A fatal error has been detected by the Java Runtime Environment:## SIGSEGV (0xb) at pc=0x00007f5a7617ce38, pid...

2019-09-14 20:57:22 4233

原创 MQTT客户端软件mqtt-spy使用教程

mqtt-spy简介mqtt-spy is an open source utility intended to help you with monitoring activity on MQTT topics. It’s been designed to deal with high volumes of messages, as well as occasional publications...

2019-08-10 10:22:06 5106

原创 配置中心阿波罗学习之二 项目实战

一、背景通过上一篇日志,我们已经将一个单机版的apollo server端搭建起来了,并且可以通过官方提供的demo实现最基本的配置文件的读取。接下来我主要通过一个实际的spring项目来演示如何利用apollo的java客户端实现项目的配置文件动态更新。apollo的Java客户端可以通过纯java API,spring注解,springboot注解等形式绑定到我们的项目中,我项目使用的...

2019-06-23 21:13:46 420

原创 配置中心阿波罗学习之一 Quick Start

### 下载Quick Start安装包#### 我打算讲配置中心服务端安装在我本地的虚拟机中的centos中- 第一步需要下载quick start安装包,然后上传到我的centos中,上传之后需要手动将jar和demo.sh赋权为可执行 chmod 744 demo.sh chmod 744 apollo-all-in-one.jar- 第二部 ...

2019-06-22 12:04:52 567

原创 IOTGate系列之四 网关所有功能预览

企业级IOTGate支持了动态长度域规约解析能力,可以实现类似于MQTT这种动态长度域的规约的解析配置普通规约配置变长长度规约(最典型的如:MQTT)动态配置各个网关节点所支持解析的规约类型,实时控制网关规约解析功能网关性能实时监控节点异常信息及时报警...

2019-04-24 21:01:13 2726 4

原创 netty CPU使用率达到100%问题解决

如下图,当netty(版本是4.1.6)的并发量达到一定数量级之后,CPU的使用率达到了100%解决办法:按照在google上面搜索得到的解决方法操作之后,再次测试netty,同样的并发请求下重复测试10次,CPU的使用率一直都在正常的水平:...

2019-03-31 14:47:11 8530 3

原创 IOTGate系列之三 多规约配置——包含本地和控制台配置

本地多规约配置概念与原理多规约,即物联网设备的多种数据传输格式,每一种数据格式都会存在一套详细的规约来表述,作为开发人员,我们通过规约的表述,来解析和组装终端所认可的数据—纯粹个人理解。网关是如何实现多规约呢?1.通过比较多种规约的报文格式,我发现,每个报文虽然格式相差很大,但是有一点是共同的,那就是报文都具有长度域——长度域中包含的值一般为报文中特定区块的字节总数(可能同时包含了长度域...

2019-03-24 22:01:49 3538 9

原创 IOTGate系列之二 如何启动

*IDE启动启动master首先启动test包下的moniMaster类,该类模拟了master,其主要作用是开启8888端口,并将物理设备通过gate发送过来的上行报文原文发送回gate由gate转发给原物理设备!最新的master默认会将自己的信息注册到zookeeper中,如果已经搭建好了zookeeper集群,请配置正确的zookeeper地址,如果IOTGate只打算启动单机版那么...

2019-03-24 11:48:36 2944 5

原创 IOTGate系列之一 源起

码云地址:https://gitee.com/willbeahero/IOTGateIOTGate是什么?IOTGate是基于netty实现的支持多规约物联网设备同时接入的一个“物联网智能网关程序”。为什么会有IOTGate?如上图,物联网设备管理模块中,左侧master模块,主要用于向其它多类型平台提供统一的API接口,同时与终端通讯的报文解析与报文组装等工作全部交由mast...

2019-03-24 10:37:09 3558 6

原创 RocketMQ源码解读系列——2、filtersrv源码

1. Broker 所在的机器会启劢多个 FilterServer 过滤进程2. Consumer 启动之后后,会向 FilterServer 上传一个过滤的 Java 类3. Consumer 从 FilterServer 拉消息,FilterServer 将请求转发给 Broker,FilterServer 从 Broker 收到消息后,按照Consumer 上传的 Java 过滤程序做...

2018-12-22 11:58:29 449

原创 RocketMQ源码解读系列——1、namesrv源码

我看的源码是RocketMQ的3.2.6版本,该版本是RocketMQ被apache组织孵化之前的版本了,但是不影响源码阅读,阅读源码主要是想学一下大牛们的开发思想namesrv的项目结构:NamesrvStartup类作为namesrv的启动入口,主要作用是加载配置文件,环境检查,调用NamesrvController类启动server服务NamesrvController作为n...

2018-12-21 12:45:26 309

原创 批量日志入DataHub环境(非实时)

先说下需求吧,由于前置机每天产生数百G的日志报文,这些日志只有在现场反应出现问题之后,才会查找具体的日志,因此需要将前置机上面的大量日志转存到dataHub上(datahub会自动向odps(MaxCompute)转存),本来先要将入datahub代码融入前置机,这样前置直接实时往datahub写入,但是由于一些历史原因,不能这样做,最后考虑到业务上面对实时性要求不强自己便通过java程序实现了日...

2018-11-20 11:34:20 2352

原创 JAVA版基于netty的物联网网关

码云地址:https://gitee.com/willbeahero/IOTGate通过netty实现自定义协议物联网网关(附有报文格式)window笔记本电脑本地测试:单网关、单前置节点,每秒处理上行并发心跳6000+,20W在线终端内存占用量1G左右终端心跳检测,终端超过300秒无应答,则网关主动关闭通道,并清理缓存...

2018-10-18 18:26:42 14851

转载 HTTP三次握手实践遇到的问题及对应的解决思路

原文链接:https://mp.weixin.qq.com/s?__biz=MzIzOTU0NTQ0MA==&mid=2247487779&idx=1&sn=0980243dcec05c5df8e2e60937c2c5ed&chksm=e9292c2cde5ea53a7b309e3575c78940a378b358292a3badb828d6c9bb6e8d3997...

2018-07-06 10:55:29 576

原创 windows解压缩版mysql5.6.40安装

由于官网现在不提供mysql安装版的32位版下载,所以从官网下载了64为的压缩版,该版本下载之后需要自己手动配置并通过命令行形式安装安装步骤:1.    将下载好的文件解压缩到安装目录(自定义)下D:\myprograms\1.    配置mysql的环境变量,与java环境变量一样,先配置一个MYSQL=D:\myprograms\mysql-5.6.40-winx64然后在path中添加: %...

2018-06-08 17:48:29 7465 4

原创 由单线程到多线程生产消费模式的代码改造历程

最近很长时间没更新博客了,主要是最近项目上线,加班比较多,同时自己还得拿出一部分时间在网上找找资料学学新东西,也就没有额外的时间写博客了。好了 进入正题,这篇博客主要是记录我在项目上线期间,由于项目上线之后需要批量获取现场终端设备状态(终端设备数为1500万左右,页面上点的话不能满足需求,一次只能召测数百),因此我用公司原有的一套代码去实现这个召测任务——由于代码我不可能贴出来,且我主要是分享我改...

2018-05-31 18:39:13 512

转载 调度框架Quartz

Quartz可以用来做什么?Quartz是一个任务调度框架。比如你遇到这样的问题想每月25号,信用卡自动还款想每年4月1日自己给当年暗恋女神发一封匿名贺卡想每隔1小时,备份一下自己的爱情动作片 学习笔记到云盘这些问题总结起来就是:在某一个有规律的时间点干某件事。并且时间的触发的条件可以非常复杂(比如每月最后一个工作日的17:50),复杂到需要一个专门的框架来干这个事。 Quartz就...

2018-03-15 09:48:50 210

原创 xstream练习

xtream用于javabean和.xml文件之间的序列化与反序列化操作。下面是我自己做的相关练习,我把代码贴出来以供分享。定义了三个类:Classes  班级类                         Student 学生类                        MapBean 用于单独测试map转成xml之后的xiaoguopublic class Classes { pub...

2018-03-04 15:52:51 264

Netty4.0.54英文版API文档

Netty4.0.54英文版API文档,与官网中文档内容一致,方便用户在离线环境下,开发Netty

2018-06-11

xstream相关的jar包

xstream所需要的jar包,xstream-1.4.9.jar、dom4j-1.6.1.jar、xpp3_min-1.1.4c.jar等

2018-03-04

搭建一个SSM框架的WEB项目所需要的jar包

搭建一个SSM框架的WEB项目所需要的jar包,里面包含spring、springMVC以及mybatis相关的jar包等

2018-01-02

redis-4.0.1的linux安装包

1.首先安装gcc插件(用于编译c语言的程序) 2.安装redis 运行命令: tar zxvf redis-3.0.4.tar.gz 进入解压后的文件夹: cd redis-3.0.4 编译源码: make Make之后继续执行make install,执行文件被复制到了/usr/local/bin中, 需要手动复制配置文件' cp redis.conf /usr/local/bin 到解压文件的src目录下启动服务器: ./redis-server 启动服务端 ./redis-cli 启动客户端

2017-08-18

搭建SSM项目所需要的jar包

搭建SSM项目所需要的jar包

2017-06-26

Oracle中文API

Oracle中文API文档,里面包含了Oracle常用的相关知识(如果下载后打不开 鼠标右键点击API 选择属性 进去点击“解除锁定”即可)

2016-07-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除