Cicizz_
码龄7年
  • 88,159
    被访问
  • 35
    原创
  • 1,340,475
    排名
  • 52
    粉丝
  • 0
    铁粉
关注
提问 私信

个人简介:python这么优雅,所以我们还是用java吧

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:四川省
  • 加入CSDN时间: 2015-05-31
博客简介:

黑猫小长的博客

博客描述:
记录自己java学习过程
查看详细资料
个人成就
  • 获得52次点赞
  • 内容获得28次评论
  • 获得84次收藏
创作历程
  • 8篇
    2021年
  • 8篇
    2018年
  • 7篇
    2017年
  • 15篇
    2016年
成就勋章
TA的专栏
  • 架构
    1篇
  • java
    19篇
  • javascript/jquery
    1篇
  • java命令
  • 数据库
    5篇
  • 设计模式
    4篇
  • 前端篇
    2篇
  • 问题总结
    3篇
  • linux+服务器
    1篇
  • 一个知识点
    3篇
  • 性能优化
    2篇
  • 消息队列
  • iot
    7篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

IoT MQ实现篇:Jmqtt设计与源码阅读指导

一、概述本篇是第一篇,主要介绍jmqtt架构思想和一些模块介绍,帮助一些需要使用jmqtt的同学更好的理解Jmqtt,方便问题排查和二次开发。二、Jmqtt架构思想Jmqtt主要分为四大块,上层用netty做协议编解码和与设备间的通信,接收到mqtt报文后进行协议处理及消息分发处理,并对一些mqtt元信息做存储管理等。请先阅读理解mqtt协议,再结合代码一起看,方便理解。三、Jmqtt模块介绍主要关注Jmqtt-broker即可,相关的代码都在这里四、Jmqtt-brok
原创
发布博客 2021.03.15 ·
176 阅读 ·
2 点赞 ·
1 评论

领域驱动设计-从分层架构聊起

一、概述对于比较复杂的业务流程,传统的分层架构等在后续代码可扩展性,可维护性,可测试上存在很大的问题,最近也在学习和研究领域模型相关的设计,实践总结一下。代码仓库:Jmqtt,只关注其中的jmqtt-admin模块即可,欢迎老铁给个star二、传统的分层架构如图:这是一个极简的三层架构模式,每层的关系和职责大约是:WEB层(Controller层):提供http接口给外部,处理参数的接收和响应;依赖业务层;与之类似的层包括:Gateway层,OpenAPI层,服务层(提供RPC给
原创
发布博客 2021.03.01 ·
271 阅读 ·
1 点赞 ·
0 评论

IoT MQ实现篇:Jmqtt3.x升级总篇

欢迎关注Jmqtt并给个star背景之前没怎么运营,纯属感兴趣做的broker,发现star,感兴趣的朋友还挺多的。 之前的版本木有代码注释,木有技术文档,木有测试,不能开箱即用 mqtt5标准版都出了一版了,支持一波目标jmqtt3.0的版本将分为三个大的阶段进行开发发布:目标第一阶段:架构重构 jmqtt3.0版本将实现基于db/redis的存储/集群,基于db的只要有数据库,开箱即用:集群节点理论上可横向扩容(依赖db的性能),理论上集群可支持百万级设备;基于redis的性能更高
原创
发布博客 2021.02.26 ·
199 阅读 ·
0 点赞 ·
2 评论

IoT MQ实现篇:组件选型与插拔式设计

IoT MQ实现篇:组件选型与插拔式设计概述本篇是IoT MQ内部实现篇的第一篇,实现篇主要介绍在内部设计和实现时对很复杂的功能点的设计与考虑,也是jmqtt的内部的具体实现,本篇主要介绍:模块化与各个组件的选型模块插拔式的设计模块化与各个组件的选型模块化和组件两个概念总是在设计架构时会讨论到的两个概念,一般来说,模块化是指功能上的拆分,将各个功能拆分为模块,组件化指根据模块对于技...
原创
发布博客 2021.02.26 ·
697 阅读 ·
5 点赞 ·
2 评论

IoT MQ设计篇:最终架构与jmqtt介绍

概述本篇是IoT MQ设计篇的最后一篇,前面分别介绍了一些IoT MQ的基本信息以及趟过的开源项目的坑,本篇主要介绍下我们在经历一系列问题后确定的最终架构以及我开源的jmqtt项目的介绍: 最终架构的确定 jmqtt介绍 为什么选择主主架构 最终架构在经历对moquette的深入二次开发后,我们发现仍然有很多需求不能满足,但是却掌握了很多基于mqtt协议的开发...
原创
发布博客 2021.02.26 ·
3336 阅读 ·
6 点赞 ·
7 评论

IoT MQ设计篇:基于开源项目二次开发的坑

概述在对开源项目进行一些调研后,结合实际情况,我们选择了基于Moquette进行开发,本篇主要从以下两个个维度介绍在二次开发遇到的问题: moquette介绍,为什么选择moquette 从选择到放弃,趟不过去的坑就不趟了吧 moquettemoquette是一个用java和netty实现的mqtt broker,主要特性有以下几点: 基本完整支持了mqtt协议...
原创
发布博客 2021.02.26 ·
1774 阅读 ·
2 点赞 ·
0 评论

IoT MQ设计篇:开源or自研,系统复杂度分析

概述上一篇介绍了IoT MQ的一些基本知识以及与Kafka这类“系统级别”的MQ的区别,同时简单介绍了使用最广的两种物联网通信协议coap与mqtt并最终决定使用mqtt作为基础协议,本篇主要介绍IoT MQ在进行设计时考虑到的一些问题: IoT MQ需求及系统复杂度分析 开源or自研 需求及系统复杂度分析因为初始阶段对于IoT MQ并不是很了解,也从未涉及过物联网领域...
原创
发布博客 2021.02.26 ·
1223 阅读 ·
1 点赞 ·
0 评论

IoT MQ设计篇:调研与协议选型

概述本篇是IoT MQ系列的第一篇,本篇主要从以下几个维度介绍下IoT MQ: IoT MQ和Kafka,RocketMQ,RabbitMQ这些消息队列有什么区别 目前IoT的传输协议有哪些,有什么区别,如何选择合适的协议作为基础协议? IoT MQ的适用场景有哪些? IoT MQ到底是什么东东IoT MQ(Internet of things message...
原创
发布博客 2021.02.26 ·
1184 阅读 ·
2 点赞 ·
4 评论

高性能的那些事儿-缓存设计

高性能的那些事儿-缓存设计概述在设计与开发高性能的系统时,基本都离不开缓存的设计,无论是在cpu的L1,L2,L2缓存,数据库的sql语句执行缓存,系统应用的本地缓存,乃至于现在用的最多的memcache,redis集中式缓存等,缓存总是解决性能的一把利器,对于缓存,本文主要从六个方面总结一下缓存及缓存的使用: 为什么需要缓存,缓存带来了什么 缓存的类型及常用缓存选型 ...
原创
发布博客 2019.02.01 ·
148 阅读 ·
0 点赞 ·
0 评论

高性能Reactor模式概述与实践

高性能的那些事儿-缓存设计概述在设计与开发高性能的系统时,基本都离不开缓存的设计,无论是在cpu的L1,L2,L2缓存,数据库的sql语句执行缓存,系统应用的本地缓存,乃至于现在用的最多的memcache,redis集中式缓存等,缓存总是解决性能的一把利器,对于缓存,本文主要从六个方面总结一下缓存及缓存的使用:为什么需要缓存,缓存带来了什么缓存的类型及常用缓存选型缓存的基本算法思想缓...
原创
发布博客 2019.01.30 ·
255 阅读 ·
0 点赞 ·
0 评论

MQTT Broker选型

MQTT Broker选型一、简述MQTT协议是IBM开发的一个即时通讯协议,目前已经是物联网的一个重要组成部分,该协议支持所有平台,是一个主要作为物联网设备消息传输的通信协议。目前很多公有云平台都已经对MQTT协议有了很好的支持,例如阿里的LMQ,腾讯的IoT-MQ等,这里主要讨论一些开源的MQTT协议产品。二、EMQ(Erlang)EMQ是一个基于Erlang语言的开源mq...
原创
发布博客 2018.12.09 ·
12087 阅读 ·
3 点赞 ·
2 评论

MySQL Daemon failed to start

MySQL Daemon failed to start在linux-centos6.5安装mysql时,最后启动的时候出现:MySQL Daemon failed to start这个问题有点坑,stackoverflow执行下面这个命令再启动就OKinstall -m 0700 -o mysql -g mysql -d /var/lib/mysql-files再启动...
翻译
发布博客 2018.12.07 ·
416 阅读 ·
0 点赞 ·
0 评论

RocketMQ是如何实现事务消息的

RocketMQ是如何实现事务消息的前言在RocketMQ4.3.0版本后,开放了事务消息这一特性,对于分布式事务而言,最常说的还是二阶段提交协议,那么RocketMQ的事务消息又是怎么一回事呢,这里主要带着以下几个问题来探究一下RocketMQ的事务消息:事务消息是如何实现的我们有哪些手段来监控事务消息的状态事务消息的异常恢复机制###RocketMQ的事务消息是如何实现的Ro...
原创
发布博客 2018.11.06 ·
12934 阅读 ·
6 点赞 ·
1 评论

Redis使用实践

Redis使用实践场景一:数据缓存在使用Redis时,利用Redis作为系统的分布式缓存组件是非常多的,主要解决两个问题:数据量太大时,与关系型数据库的大量交互会产生一定的性能瓶颈问题。本地缓存可能导致数据不一致的问题。在之前使用Redis做数据缓存时,主要是两个应用方面:大量的查询数据,利用Redis对这些数据做缓存用户会话信息的保存,在用户登陆后的session会话信息,利用Redis做ses...
原创
发布博客 2018.06.12 ·
690 阅读 ·
0 点赞 ·
0 评论

系统优化实践记录—JVM

系统优化实践记录—JVMjvm方面的优化往往是系统优化的最后一步,万不得已时才会基于JVM去优化系统,在对mqtt系统进行优化时,也是仅仅对jvm层面进行了少量的修改。下面总结记录一下一、设置合适的JVM大小设置合适的堆的大小:主要涉及三个参数:-Xms:设置JVM的初始化内存的大小,JVM启动时就会分配这么大的内存-Xmx:设置JVM最大可用内存的大小,JVM在运行期间如果内存超过-Xms设置的...
原创
发布博客 2018.05.23 ·
267 阅读 ·
0 点赞 ·
0 评论

系统优化实践记录—多线程方面的处理

系统优化实践记录—多线程方面的处理因为mqtt也是一种适合于物联网的mq,简单来说是比较轻量级的mq,对于消息的tps等没有像传统mq那么高,但是要求的是多终端,其中也涉及了很多多线程地方的处理。这里总结和记录一下。一、netty的多线程处理与设置在netty中,有两个EventLoopGroup,维护了两个线程组,如果不设置初始化的大小,那么默认初始化的线程数的大小为:系统内核数*2,如果现在主...
原创
发布博客 2018.05.23 ·
239 阅读 ·
0 点赞 ·
0 评论

系统优化实践记录—日志

系统优化实践记录—日志在决定使用该开源项目后,首先熟悉了项目的架构,然后在阅读源码的过程中,发现日志打印十分不规范,同时对日志的使用也很差,于是,我利用jmeter和jvisualvm在windows机器上进行了简单的测试。发现写日志的时间占据了整个系统执行时间(CPU)时间的40%多,于是,首先便是对日志的重构。 PS:这里主要用jmeter进行压力测试,用jvisualvm监控java程序的方...
原创
发布博客 2018.05.10 ·
871 阅读 ·
0 点赞 ·
0 评论

系统优化实践记录

系统优化实践记录—引言从2017年11月初截至2018年5月,一直在从事一个mqtt消息中间件项目的开发,整个项目从最初的开发到如今稳定的运营也经历主要四个阶段,这里总结下在对系统进行优化时的一些处理。四个阶段主要有开源项目选型,最终综合选择了一款开源但是不成熟的mqtt代理作为开发的原型。存储实现与优化,由于开源的不支持集群和数据的持久化(持久化实现的很差),我们自己实现了数据的持久化和集群。对...
原创
发布博客 2018.05.10 ·
161 阅读 ·
0 点赞 ·
0 评论

抽象类与接口的异同及实践

抽象类与接口的异同及实践一、相同点 都不能被实例化二、不同点抽象类可以定义具体的方法,(jdk8以后,接口也是可以定义具体的方法的,必须有default关键字)接口是implements,抽象类是extends设计理念不同,接口是“has-a”,抽象类是"is-a"抽象类可以有构造器,接口没有,抽象类的构造方法是不能直接实例化的,但是一旦一个具体的类继承了抽象类,那么就可以在子类中调用抽象类的构...
原创
发布博客 2018.04.24 ·
174 阅读 ·
0 点赞 ·
0 评论

java中==和equals和hashcode的区别

一、相同点都是用来进行值或对象的比较。二、不同点对于“==”而言,对于基本类型(char,byte,short,int,long,float,double,boolean),对比的是值,所以是相等的,对于引用对象,对比的是引用的对象的堆地址,例如:public class Main {   public static void main(String[] args) throws Interr...
原创
发布博客 2018.04.24 ·
161 阅读 ·
0 点赞 ·
0 评论
加载更多