自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

黑猫小长的博客

记录自己java学习过程

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

IoT MQ实现篇:组件选型与插拔式设计 概述 本篇是IoT MQ内部实现篇的第一篇,实现篇主要介绍在内部设计和实现时对很复杂的功能点的设计与考虑,也是jmqtt的内部的具体实现,本篇主要介绍: 模块化与各个组件的选型 模块插拔式的设计 模块化与各个组件的选型 模块化和组件两个概念总是在设计架...

2019-03-14 09:38:16 294 1

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

概述 本篇是IoT MQ设计篇的最后一篇,前面分别介绍了一些IoT MQ的基本信息以及趟过的开源项目的坑,本篇主要介绍下我们在经历一系列问题后确定的最终架构以及我开源的jmqtt项目的介绍: 最终架构的确定 jmqtt介绍 为什么选择主主架构 最终架构 在经历对m...

2019-02-28 13:43:03 1608 2

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

概述 在对开源项目进行一些调研后,结合实际情况,我们选择了基于Moquette进行开发,本篇主要从以下两个个维度介绍在二次开发遇到的问题: moquette介绍,为什么选择moquette 从选择到放弃,趟不过去的坑就不趟了吧 moquette moquette是一个用ja...

2019-02-28 09:36:43 828 0

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

概述 上一篇介绍了IoT MQ的一些基本知识以及与Kafka这类“系统级别”的MQ的区别,同时简单介绍了使用最广的两种物联网通信协议coap与mqtt并最终决定使用mqtt作为基础协议,本篇主要介绍IoT MQ在进行设计时考虑到的一些问题: IoT MQ需求及系统复杂度分析 开源...

2019-02-28 09:36:17 518 0

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

概述 本篇是IoT MQ系列的第一篇,本篇主要从以下几个维度介绍下IoT MQ: IoT MQ和Kafka,RocketMQ,RabbitMQ这些消息队列有什么区别 目前IoT的传输协议有哪些,有什么区别,如何选择合适的协议作为基础协议? IoT MQ的适用场景有哪些?...

2019-02-28 09:35:39 543 4

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

高性能的那些事儿-缓存设计 概述 在设计与开发高性能的系统时,基本都离不开缓存的设计,无论是在cpu的L1,L2,L2缓存,数据库的sql语句执行缓存,系统应用的本地缓存,乃至于现在用的最多的memcache,redis集中式缓存等,缓存总是解决性能的一把利器,对于缓存,本文主要从六个方面总结...

2019-02-01 10:22:37 110 0

原创 高性能Reactor模式概述与实践

高性能的那些事儿-缓存设计 概述 在设计与开发高性能的系统时,基本都离不开缓存的设计,无论是在cpu的L1,L2,L2缓存,数据库的sql语句执行缓存,系统应用的本地缓存,乃至于现在用的最多的memcache,redis集中式缓存等,缓存总是解决性能的一把利器,对于缓存,本文主要从六个方面总结一下...

2019-01-30 10:25:13 172 0

原创 MQTT Broker选型

MQTT Broker选型 一、简述 MQTT协议是IBM开发的一个即时通讯协议,目前已经是物联网的一个重要组成部分,该协议支持所有平台,是一个主要作为物联网设备消息传输的通信协议。 目前很多公有云平台都已经对MQTT协议有了很好的支持,例如阿里的LMQ,腾讯的IoT-MQ等,这里主要讨论一...

2018-12-09 22:54:33 9178 2

翻译 MySQL Daemon failed to start

MySQL Daemon failed to start 在linux-centos6.5安装mysql时,最后启动的时候出现: MySQL Daemon failed to start 这个问题有点坑,stackoverflow 执行下面这个命令再启动就OK install -m ...

2018-12-07 16:26:56 318 0

原创 RocketMQ是如何实现事务消息的

RocketMQ是如何实现事务消息的 前言 在RocketMQ4.3.0版本后,开放了事务消息这一特性,对于分布式事务而言,最常说的还是二阶段提交协议,那么RocketMQ的事务消息又是怎么一回事呢,这里主要带着以下几个问题来探究一下RocketMQ的事务消息: 事务消息是如何实现的 ...

2018-11-06 17:15:04 10092 0

原创 Redis使用实践

Redis使用实践场景一:数据缓存在使用Redis时,利用Redis作为系统的分布式缓存组件是非常多的,主要解决两个问题:数据量太大时,与关系型数据库的大量交互会产生一定的性能瓶颈问题。本地缓存可能导致数据不一致的问题。在之前使用Redis做数据缓存时,主要是两个应用方面:大量的查询数据,利用Re...

2018-06-12 14:25:59 374 0

原创 系统优化实践记录—JVM

系统优化实践记录—JVMjvm方面的优化往往是系统优化的最后一步,万不得已时才会基于JVM去优化系统,在对mqtt系统进行优化时,也是仅仅对jvm层面进行了少量的修改。下面总结记录一下一、设置合适的JVM大小设置合适的堆的大小:主要涉及三个参数:-Xms:设置JVM的初始化内存的大小,JVM启动时...

2018-05-23 01:45:47 201 0

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

系统优化实践记录—多线程方面的处理因为mqtt也是一种适合于物联网的mq,简单来说是比较轻量级的mq,对于消息的tps等没有像传统mq那么高,但是要求的是多终端,其中也涉及了很多多线程地方的处理。这里总结和记录一下。一、netty的多线程处理与设置在netty中,有两个EventLoopGroup...

2018-05-23 01:45:21 174 0

原创 系统优化实践记录—日志

系统优化实践记录—日志在决定使用该开源项目后,首先熟悉了项目的架构,然后在阅读源码的过程中,发现日志打印十分不规范,同时对日志的使用也很差,于是,我利用jmeter和jvisualvm在windows机器上进行了简单的测试。发现写日志的时间占据了整个系统执行时间(CPU)时间的40%多,于是,首先...

2018-05-10 21:40:20 583 0

原创 系统优化实践记录

系统优化实践记录—引言从2017年11月初截至2018年5月,一直在从事一个mqtt消息中间件项目的开发,整个项目从最初的开发到如今稳定的运营也经历主要四个阶段,这里总结下在对系统进行优化时的一些处理。四个阶段主要有开源项目选型,最终综合选择了一款开源但是不成熟的mqtt代理作为开发的原型。存储实...

2018-05-10 20:28:37 83 0

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

抽象类与接口的异同及实践一、相同点 都不能被实例化二、不同点抽象类可以定义具体的方法,(jdk8以后,接口也是可以定义具体的方法的,必须有default关键字)接口是implements,抽象类是extends设计理念不同,接口是“has-a”,抽象类是"is-a"抽象类可以...

2018-04-24 22:09:28 124 0

原创 java中==和equals和hashcode的区别

一、相同点都是用来进行值或对象的比较。二、不同点对于“==”而言,对于基本类型(char,byte,short,int,long,float,double,boolean),对比的是值,所以是相等的,对于引用对象,对比的是引用的对象的堆地址,例如:public class Main {   p...

2018-04-24 21:31:58 70 0

转载 事物—事物的传播性与Spring事物传播特性

事物的传播性我们都知道事务的概念,那么事务的传播特性是什么呢?(此处着重介绍传播特性的概念,关于传播特性的相关配置就不介绍了,可以查看spring的官方文档) 在我们用SSH开发项目的时候,我们一般都是将事务设置在Service层 那么当我们调用Service层的一个方法的时候它能够保证我们的...

2017-08-03 20:25:24 444 0

原创 事物—事物的隔离级别

四个隔离级别脏读,重复读,幻读的含义一个客户端session会对应产生一个数据库端的server process。同时产生一个事物来处理session的操作。当系统并发量十分大时,就可能会发生上面的读数据的错误。

2017-08-02 22:07:43 343 0

原创 事物—事物四大特性

事物(一)——事物四大特性原子性(Atomicity)原子性是事物最小的单元,是不可再分的,对一个数据库小的操作。这些必须同时完成,如果有一个失败了。则一切的操作都全部失败。比如A给B转账,A是一个操作,B也是一个操作。A转账失败,则B接帐也失败一致性(Consistency)指在数据库操作前后是...

2017-08-01 22:56:33 1236 0

原创 linux安装pcre

1.获取pcre: 最新版本为8.40wget https://netix.dl.sourceforge.net/project/pcre/pcre/8.40/pcre-8.40.tar.gz2.解压:tar -zxvf pcre-8.40.tar.gz3.编译: 进入pcr...

2017-03-08 10:15:55 12714 0

转载 bootstrap-paginator分页插件运用-一个网上的资料里的

需要引入jquery,bootstrap.css和bootstrap-paginator.js文件 html: <div style="text-align: center;"> <ul id="pageHelper&quo...

2017-02-27 14:10:11 300 0

原创 springboot与mybatis整合dao层不能注入的问题

需要重写VFS,并将其在mybatis整合类中指定为VFS的实现类public class SpringBootVFS extends VFS { private final ResourcePatternResolver resourceResolver; public Spring...

2017-02-27 14:03:18 6424 3

原创 AES加密在linux上的问题

AES加密在Linux上加密和解密都必须加上 KeyGenerator kgen = KeyGenerator.getInstance("AES"); SecureRandom random = SecureRandom.getInstance("S...

2017-02-27 13:59:28 975 0

原创 java基础之操作符

java运算符

2016-12-22 23:15:11 231 0

原创 java基础之几个基本概念

三大特性封装概念:把客观事物封装成抽象的类,并且类可以让自己或自己的方法或字段让其它类进行操作。 用法:private default protected public关键字定义在类,方法或字段上。 作用:增强了安全性,提高可用性和可控性,提高了可维护性和可复用性继承(is-a)概念:一个类继...

2016-12-22 22:30:18 206 0

原创 初探JVM之垃圾收集器

前面大约了解了下JVM的垃圾收集算法,如果说收集算法是内存回收的方法,那么垃圾收集器就是内存回收的具体实现。现在HotSpot虚拟机都是用的G1收集器。 这里先总结下具体收集器的使用地方: 新生代:Seria,ParNew,Parallel Scavenge. 老生代:CMS,Paralle...

2016-03-11 20:40:17 273 0

原创 初探JVM之垃圾收集算法

当垃圾收集成为系统达到更高并发量的瓶颈时,就需要对“自动化”的技术实施必要的监控和调节。 引用计数算法 就是对一个对象添加一个引用计数器,每当有一个对象引用时,计数器就加1,引用失效时,对象减一,当计数器为0时,代表不可能再被使用,就开始回收。 但是在主流java虚拟机里面没有选用引用计数算...

2016-03-10 10:35:25 359 0

原创 初探JVM之对象的创建

对象的创建 虚拟机在遇到一条一条new指令时,首先先检查该指令的参数能否在常量池中定位到这个类的符号引用,并检查该类是否被加载,解析,初始化过,若没有,则先加载。 若类加载检查通过,则将为新生对象分配内存,对象所需内存的大小在类加载完后就可确定,有两种方式,第一种是“指针碰撞”,指针碰撞方式指...

2016-03-10 09:33:07 337 0

原创 重温javase—MySQL数据库基础

MySQL语句基础 DML(数据操作语言):inset、update、delete DDL(数据定义语言):create、alter、drop、truncate DCL(数据控制语言):grant、revoke ENGINE= MyISAM,强制使用MyISAM存储机制。 ENGINE=...

2016-03-07 23:12:02 371 0

原创 Java设计模式之桥接模式(Bridge)

意图 将抽象与抽象方法的实现相互分离来实现解耦,以便二者可以相互地变化。 书上说的太抽象了,直接写个例子来总结。

2016-03-05 19:20:49 289 0

原创 初探JVM之java内存区域

这些理解都是基于学习《深入理解Java虚拟机》的,因为很多还不能理解,这里以及后面就只总结我可能常用到或要分析的最重要是我理解到了的~~。 Java运行时数据区域 方法区、虚拟机栈、本地方发栈、堆、程序计数器 他们有的随着虚拟机进程的启动而存在,有的则依赖用户线程的启动和结束而建立和销毁。 ...

2016-03-04 09:01:08 242 0

原创 Java设计模式之合成模式(Composite)

意图 为了保证客户端调用单对象与组合对象的一致性 黑猫的理解 就是相当与一棵大树,把树干和树叶组合到一起,统一管理。要管理,就需要getComponent,removeComponent,addComponent等方法,合成模式主要分为安全式和透明式(不安全)的,由于要想要满足这种方式,一般...

2016-03-03 14:16:12 323 0

原创 SpringAOP动态代理小结

学习springAOP时,顺便学习了jdk与cglb动态代理,jdk与cglb动态代理最大不同之处就是jdk动态代理是基于接口的,如果有的项目不是基于接口又想实现动态代理,就需要cglb动态代理,这里总结下AOP的动态代理。 springAOP动态代理实现方式 是基于jdk与cglb的,就是选...

2016-03-02 18:08:03 723 0

原创 jdk动态代理与cglib动态代理

最近学习springaop的知识,看到了其中的aop的代理的实现,现在总结一下,aop的代理其实就是用jdk的动态代理或者cglib动态代理来实现的,所谓的代理就是来给某个方法,在执行这个方法之前多一些事,在执行这个方法之后做一些事,下面各个分析一下: jdk动态代理 jdk动态代理需要4样东...

2016-03-01 13:19:02 344 0

原创 Java设计模式之外观模式(Facade)

Facade的意图 为子系统提供一个接口,便于它的使用。 比如医院看病,咱们不知道医生的话是不是直接找接待员呢?,这个接待员再找适合医生来看病,直接上代码,清晰易懂: 几个医生类,不同医生不同职责public class Doctor1 { /* * 作为一个医生的职责 ...

2016-02-29 13:44:32 255 0

原创 Java设计模式之适配器模式(Adapter)

上课的时候不能撸其它代码,只能看下java设计模式的书,网上也有很多总结好的,但觉得自己总结一遍能收获的更多,下来慢慢总结下这些设计模式。之所以叫接口型模式,是因为这些设计模式都需要用到Interface。 适配器模式的意图 使用不同接口的类所提供的服务为客户端提供它所期望的接口 Adapt...

2016-02-28 23:16:42 271 0

原创 Java国际化与spring框架国际化的处理

今天学习springIOC时学习到了其国际化的用法,这里总结下自己学习到的知识点, 这里先上两种简单的格式化 日期格式化 //日期格式化,得到当前系统时间,转换成想要的格式,一般放在项目中的util包里 String date = new SimpleDateFo...

2016-02-28 20:09:25 1352 0

原创 ajax与json的学习总结

最近重温了下ajax与json技术,发现又收获了不少,这里记录下,我是一只接触编程8个月的小白,如有错误,还请指出,后面直接上干货。 首先,为什么要学习ajax与ajax的优势?   以我自己的理解,其实ajax就是方便数据从前端传递到后端。在java中,主要有两种。第一种就是通过html的f...

2016-02-27 12:41:16 8508 7

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