自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

转载 LongAdder源码分析

LongAdd

2022-11-27 11:24:11 160

原创 ConcurrentHashMap扩容机制源码分析

首先思考几个问题: ConcurrentHashMap是如何实现扩容机制的? 多线程辅助扩容?如何分配扩容迁移任务? 源码分析:public V put(K key, V value) { return putVal(key, value, false);}final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == null || value == null) throw new Null

2021-11-26 23:11:42 1769

转载 i++和++i的真正区别详解

在解释这两个运算之前,先引入局部变量表和操作数栈。i++的通俗的解释即是先赋值再自增,其实这里赋值的值是从操作数栈取的值,也就是说先将i的值压入栈中,而自增是局部变量表的值自增。而++i则相反,是先自增后赋值,就是局部变量表的自增,然后把局部变量表的值压入栈中。现在我们用一道经典题来从底层原理解释这两个运算操作public static void mian(string[] arg){int i = 1;i = i++;int j = i++;int k = i + ++i *

2021-11-06 12:22:28 2276 1

原创 Dubbo Wrapper 解析

发现别人写的很好了,这只是自己记录一下。摘抄一下,以后遇到问题,再更新Wrapper的规范Wrapper 机制不是通过注解实现的,而是通过一套 Wrapper 规范实现的。Wrapper 类在定义时需要遵循如下规范:该类要实现 SPI 接口 该类中要有 SPI 接口的引用 该类中必须含有一个含参的构造方法且参数只能有一个类型为SPI借口 在接口实现方法中要调用 SPI 接口引用对象的相应方法 该类名称以 Wrapper 结尾...

2021-06-08 16:33:51 510 1

原创 dubbo SPI及自适应扩展机制

官网:https://dubbo.apache.org/zh/docs/v2.7/dev/source/adaptive-extension/

2021-06-08 15:29:44 172 1

原创 rocketmq rebalance

接着上编文章继续this.rebalanceService.start(); // 重平衡 public void run() { log.info(this.getServiceName() + " service started"); while (!this.isStopped()) { this.waitForRunning(waitInterval); this.mqClientFactory.

2021-05-11 16:30:25 294

原创 rocketmq push消费信息

一、使用推送模式,设置消费者所属组,订阅主题、定义消息消费回调接口,推送消息后消费方具体业务处理,并返回CONSUME_SUCCESS表示消费成功。/* * Instantiate with specified consumer group name. */ DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name_4");.

2021-05-11 16:11:18 228 1

原创 Rocketmq 通信协议及编解码

一.通信协议的格式 1.length:4字节整数,二三四部分长度总和;(length - 4 - headLength) 2.header length:4字节整数,第三部分header data长度; 3.header data:存放Json序列化的数据; 4.body data:应用自定义二进制序列化的数据。二.消息的编码过程public ByteBuffer encode() { // 1> header length size ...

2021-05-06 16:45:08 1809

转载 spring 讲解

Spring Boot、Spring MVC 和 Spring 有什么区别?分别描述各自的特征:Spring框架就像一个家族,有众多衍生产品例如boot、security、jpa等等;但他们的基础都是Spring 的ioc和 aop,ioc提供了依赖注入的容器,aop解决了面向切面编程,然后在此两者的基础上实现了其他延伸产品的高级功能。Spring MVC提供了一种轻度耦合的方式来开发web应用;它是Spring的一个模块,是一个web框架;通过DispatcherSer...

2021-04-23 18:27:13 87

原创 java8 TreeMap红黑树节点删除源码解析

仅记录笔记用。摘抄大神的目录一、红黑树的规则二、红黑树节点删除整体分析三、红黑树节点删除具体情形分析四、TreeMap删除节点源码解析一、红黑树的规则1、每个节点都只能是红色或者黑色2、根节点是黑色3、每个叶节点(NIL节点,空节点)是黑色的。4、如果一个结点是红的,则它两个子节点都是黑的。也就是说在一条路径上不能出现相邻的两个红色结点。5、从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点,即相同的黑色高度。重点说明下,所谓的叶节点就是空节点,必须是黑色

2020-07-01 07:27:42 281

转载 RocketMQ为什么要保证订阅关系的一致性

问题:同一个订阅组内不同Consumer实例订阅不同topic消费混乱问题调查subscriptionData = consumerGroupInfo.findSubscriptionData(requestHeader.getTopic());if (null == subscriptionData) { log.warn("the consumer's subscription not exist, group: {}, topic:{}", requestHeader.getConsumerG

2020-06-14 23:28:15 430

原创 rocketmq consumer

1: consumer会每30s从nameserver上更新所订阅的topic路由列表,同时会更新broker路由->brokerName与角色和地址关系2: consumer会每30s与所有broker进行一次心跳,将clientid,topic,group发送至brokerrebalance开始: consumer会每10s进行一次rebalance1 首先选择一个broker,根据topic和group查询到订阅此topic的属于同一group的所有的consumer clientid..

2020-06-13 23:50:53 835

原创 springIoc 讲解

仅为做笔记用 什么是IOC? IOC解决了什么问题? IOC 和 DI 的区别? 首先声明:IOC & AOP不是Spring提出来的,它们在Spring之前其实已经存在了,只不过当时更加偏向于理论。 Spring 在技术层次将这两个思想进行了很好的实现。 什么是 IOC IOC (Inversion of control )控制反转/反转控制。它是一种思想不是一个技术实现。描述的是:Java 开发领域对象的创建以及管理的问题。 例如:现有 类A依赖于类B 传统的开发

2020-05-30 13:40:51 202

原创 reactor讲解

本文目录 (本文仅为记录用)1. 为什么是Reactor模式2. Reactor模式简介3. 多线程IO的致命缺陷4. 单线程Reactor模型4.1. 什么是单线程Reactor呢?4.2. 单线程Reactor的参考代码4.3. 单线程模式的缺点:5. 多线程的Reactor5.1. 基于线程池的改进5.2. 改进后的完整示意图5.3. 多线程Reactor的参考代码6. Reactor持续改进7. Reactor编程的优点和缺点7.1. 优点7.2. 缺点1..

2020-05-29 00:40:23 1465

转载 Java线程池

Java线程池详解构造一个线程池为什么需要几个参数?如果避免线程池出现OOM?Runnable和Callable的区别是什么?本文将对这些问题一一解答,同时还将给出使用线程池的常见场景和代码片段。基础知识Executors创建线程池Java中创建线程池很简单,只需要调用Executors中相应的便捷方法即可,比如Executors.newFixedThreadPool(int nThreads),但是便捷不仅隐藏了复杂性,也为我们埋下了潜在的隐患(OOM,线程耗尽)。Executors创

2020-05-24 15:36:13 125

原创 AbstractQueuedSynchronizer源码

坐下笔记而已public abstract class AbstractQueuedSynchronizer extends AbstractOwnableSynchronizer implements java.io.Serializable {public abstract class AbstractOwnableSynchronizer implements java.io.Serializable { private static final long ...

2020-05-24 15:05:32 137

原创 rocketmq IndexFile源码分析

IndexFile 存储具体消息索引的文件,文件的内容结构如图

2020-05-19 23:23:31 225

转载 spring 生命周期最详解

目的在大三开始学习spring时,老师就说spring bean周期非常重要,当时也有仔细看,但是说实话搞不大懂,后面工作面试也问过,还是有点模糊,就是没有掌握好,进行深入理解,这次“老大”又问到了。不允许再回避了,所以这次坚决搞明白,理解生命周期作用,为啥要这样设计,我们能在生命周期做哪些更高层次的编程。生命周期流程图先总体看下spring的生命周期流程图,实现(继承)这些接口(抽象类)...

2019-12-31 13:29:39 255

转载 Java集合:HashMap详解(JDK 1.8)

前言JDK 1.8 对 HashMap 进行了比较大的优化,底层实现由之前的 “数组+链表” 改为 “数组+链表+红黑树”,本文就 HashMap 的几个常用的重要方法和 JDK 1.8 之前的死循环问题展开学习讨论。JDK 1.8 的 HashMap 的数据结构如下图所示,当链表节点较少时仍然是以链表存在,当链表节点较多时(大于8)会转为红黑树。本文地址:http://blog.csd...

2019-12-30 11:44:37 199

转载 红黑树基础原理

本文以Java TreeMap为例,从源代码层面,结合详细的图解,剥茧抽丝地讲解红黑树(Red-Black tree)的插入,删除以及由此产生的调整过程。总体介绍JavaTreeMap实现了SortedMap接口,也就是说会按照key的大小顺序对Map中的元素进行排序,key大小的评判可以通过其本身的自然顺序(natural ordering),也可以通过构造时传入的比较器(Compar...

2019-12-26 17:43:24 178

转载 Spring MVC 原理探秘 - 一个请求的旅行过程

1.简介在前面的文章中,我较为详细的分析了 Spring IOC 和 AOP 部分的源码,并写成了文章。为了让我的 Spring 源码分析系列文章更为丰富一些,所以从本篇文章开始,我将来向大家介绍一下 Spring MVC 的一些原理。在本篇文章中,你将会了解到 Spring MVC 处理请求的过程。同时,你也会了解到 Servlet 相关的知识。以及 Spring MVC 的核心 Dispa...

2019-12-17 16:51:55 127

转载 netty自定义消息实现心跳检测与重连

netty的心跳发送的重连,主要在client端。前面有关于自定义协议的demo:https://blog.csdn.net/zc_ad/article/details/83829620其实客户端心跳发送用到的是IdleStateHandler,详细看代码你就会明白为什么。大神链接:https://www.iteye.com/blog/user/jinnianshilongnian,htt...

2019-11-17 16:19:01 383

转载 RocketMQ源码阅读-环境搭建

转载:https://blog.csdn.net/tdt008/article/details/100559993

2019-10-30 11:05:26 318

原创 Win10中VMware14安装CentOS7详细步骤

转载:https://www.jianshu.com/p/0416e6242e67(https://blog.51cto.com/13878155/2148571)问题:ifconfig 找不到转载:https://blog.csdn.net/ychgyyn/article/details/880756543、安装iptables-servicesyum install ipt...

2019-10-12 11:20:48 79

原创 消息中间件知识整理一

1、系统架构中要引入消息中间件 1)系统解耦 2)异步调用 3)流量削峰2、生产数据不丢失 1)消息的持久化,用英文来说就是durable机制3、保证数据100%不丢失 1)自动ack改成手动ack 必须要消费者确保自己处理完毕了一个消息,才能手动发送ack给MQ,MQ收到ack之后才会删除...

2019-06-15 23:28:53 245

转载 nginx安装

安装依赖:yum -y install gccyum -y install gcc-c++yum -y install pcre-develyum -y install openssl-develyum -y install zlib-devel下载:http://nginx.org/en/download.html 一个稳定版压缩...

2019-04-02 15:30:23 93

转载 大数据学习之路

【转载】http://blog.csdn.net/zys_1997/article/details/78358992前言:一、背景介绍 二、大数据介绍正文:一、大数据相关的工作介绍 二、大数据工程师的技能要求 三、大数据学习规划 四、持续学习资源推荐(书籍,博客,网站) 五、项目案例分析(批处理+实时处理)前言一、背景介绍本人目前是一名大数据工程师,项目数据...

2019-03-20 22:40:03 1369

原创 idea 环境配置(简单记录)

1、在文件里点击pom文件右击以idea方式打开。2、添加jar包3、

2018-10-11 09:45:46 811

原创 Project facet Java version 1.7 not supported错误

由于经常改变eclipse的环境,所以报以上这个错误,就是jdk版本不一样,我的eclipse默认jdk版本是1.6的,但是我从来没有过,导致上面的错误,改正方法:Window --> Preferences --> Java --> Installed JRE右击项目,properties,project facets,改动Java的version

2017-09-05 09:55:22 290

原创 java图片从本地上传服务器

1、applicationContext.xml配置文件里配置如下:              2、form表单里配置:enctype="multipart/form-data"3、springMVC controller层如下:public String insertSelective(Employees employees,@RequestParam(val

2017-07-31 16:07:41 444

原创 maven基础知识总结

1.引进maven版本,svn下载项目转maven项目,右击maven-》convertMavenproject等2.设置maven仓库位置(setting.xml文件里面配置Maven仓库的路径)    例如:G:\Maven\repository(这个仓库是公司Maven服务器仓库down下来的)3.5.新建Maven工程Maven工程结构; 打

2017-07-27 22:41:28 328

原创 Cause: java.lang.NumberFormatException: For input string: "COM201512220000004"

错误:org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTempl

2017-07-27 16:24:17 1961

原创 webservice接口开发和调用

1:准备:    JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1902814.html    eclipse:http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/

2017-04-18 16:40:03 11682

转载 使用FastJSON,将对象或数组和JSON串互转

Fastjson,是阿里巴巴提供的一个Java语言编写的高性能功能完善的JSON库。其开源的下载网址为:https://github.com/alibaba/fastjson。示例代码如下:[java] view plain copy package test;    import java.util.ArrayList;  

2017-04-17 14:34:15 18080

转载 JSONObject使用方法详解

JSONObject使用方法详解投稿:mrr 字体:[增加 减小] 类型:转载 时间:2015-12-17 我要评论JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包,本文给大家介绍jsonobject使用方法相关知识,感兴趣的朋友一起学习吧1.JSONObject介

2017-04-05 10:25:01 53974 2

原创 xml解析实例

<![CDATA[0011]]><![CDATA[2014]]><![CDATA[佳佳]]><![CDATA[牛排家公司]]><![CDATA[000]]><![CDATA[卫生过关吗]]><![CDATA[为客户服务]]><

2017-03-18 20:29:48 929

原创 xml解析详解

TopXML语法XML解析1. XML语法1.1. XML用途1.1.1. XML用途XML 指可扩展标记语言(EXtensible Markup Language),是独立于软件和硬件的信息传输工具,应用于 web 开发的许多方面,常用于简化数据的存储和共享。1.2. 基本语法1.2.1. xml指令处理指令,简称PI (process

2017-03-18 12:58:42 1475

原创 配置spring事务管理的几种方式(声明式事务)----使用tx标签配置的拦截器

xml version="1.0" encoding="UTF-8"?>beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.o

2017-02-13 22:58:31 1329

转载 Spring通过@Value注解注入属性的几种方式

场景假如有以下属性文件dev.properties, 需要注入下面的tagtag=123通过PropertyPlaceholderConfigurer 代码@Value("${tag}")private String tag;通过PreferencesPlaceholderConfigurer 代码:@Value("${tag}"

2017-02-12 21:38:57 1530

转载 SpringMVC+Spring Data JPA+Shiro+EasyUI简单权限管理系统

自己记得笔记,用别人的http://blog.csdn.net/csujiangyu/article/details/48804731http://blog.csdn.net/csujiangyu/article/details/48804731

2017-02-12 21:23:01 359

空空如也

空空如也

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

TA关注的人

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