自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 rocketmq消费者线程模型

两种消费模式在RocketMQ中,Consumer端的两种消费模式(Push/Pull)都是基于拉模式来获取消息的,而在Push模式只是对pull模式的一种封装,其本质实现为消息拉取线程在从服务器拉取到一批消息后,然后提交到消息消费线程池后,又“马不停蹄”的继续向服务器再次尝试拉取消息。如果未拉取到消息,则延迟一下又继续拉取。rocketmq的消费是靠client进程主动请求broker的逻辑队列,拿到一个索引,然后再从CommitLog里面读取真正的消息内容。PullConsumer启动过程

2021-09-27 22:10:44 1500

原创 Netty的线程模型以及玩法

事件循环组Netty中所有的I/O操作都是异步的,通过ChannelFuture来获取异步执行结果。异步执行依赖一个线程池EventLoopGroup,它继承了ExecutorService。这玩意底层是个数组,存放一堆EventLoop,而EventLoop继承了EventExecutor,所以EventLoopGroup的execute()方法可以不断调用next()丢给下一个线程执行,就是个线程池,全异步。BoosGroup&WorkGroupweb系统的I/O事.

2021-07-10 22:26:49 357 1

原创 MongoTemplate findOne方法底层还会加同步锁?

有一天我在观察阿里云ARMS线程栈监控时,发现一个WAITING状态的线程栈很有意思,看起来是MongoDAOSupport.getById()导致线程进入WAITING状态,出乎意料,这就探究下是神马情况~为什么加锁?一般来说,多个线程执行的SQL查询互不相干,MongoTemplate的查询方法中为什么要加锁呢?到底要保护什么临界资源呢?了解MongoTemplate查询结果的解析和转换内部执行find one查询的方法调用时,new 了一个ReadDocumentCallback对象,这个对

2021-04-25 15:51:01 1160

原创 MongoDB索引最佳实践

MongoDB Index文章目录MongoDB Index#0 什么是索引#1 MongoDB索引原理#2 何时不建议使用索引#3 何时应该使用索引#4 子文档字段建立索引的效率问题#5 显式地指定索引#6 OR条件查询注意事项#7 对子文档建立索引的注意事项#8 Mongo4.2新特性:Wildcard Index#9 Mongo4.2新特性:Full Text Search#0 什么是索引寻找扑克牌游戏有方片A~10这样10张扑克牌,现在牌全都盖住,我们需要从中找到方片5,怎么做?[外链图片

2021-04-25 15:45:06 547

原创 logback-RollingFileAppender源码分析(关于缓冲和性能)

打印性能是日志打印框架的核心关注点之一,从logback的日志打印流程看看其性能如何?本文基于logback1.2.3版本,以下配置(1.2.0版本后,logback提供了 SizeAndTimeBasedRollingPolicy 策略,可同时基于时间+空间两个维度控制日志文件的滚动)形如下面这句debug日志的打印,调用栈是这样的LOGGER.debug("msg {}", msg);Appender接口&实现类Appender接口作为logback的核心三大件(Logger、A

2021-04-25 15:33:49 1480

原创 慢查询导致API服务雪崩案例分析

为什么要做这个案例分析?因为在其他同学已经找到问题代码并修复后,我还没有彻底弄明白下面这2个问题:  1.为什么是这段代码导致的?  2.为什么看起来跟问题代码无关的接口也受影响变得恶化,这段代码到底是如何造成整个服务雪崩的?在搞懂上面的一系列问题后,我认为这是一次典型的慢查询导致服务雪崩案例(因为没有其他次要因素),沉淀总结下来,或许可以帮助我下次更快更准的找到排查思路,而不至于没有方向...

2020-03-09 18:28:51 573

原创 【Java内存溢出排查】gc监测以及内存突增问题排查

前情提要文档:【Java内存溢出排查】测试环境服务器挂...链接:http://note.youdao.com/noteshare?id=783e7ec89950f4167867ef3ef33470b6&sub=48AEFC6FDECB4C60869FAA5FABF57AB0通过以下命令信息可以确定是内存溢出,且Full GC后内存无法得到回收top -Hp 1 (发...

2020-02-29 22:35:45 3196

原创 《分布式服务架构:原理、设计与实战》

1 分布式微服务架构设计原理1.1 从传统单体架构到服务化架构JEE架构针对企业级应用定义,进行了逻辑分层,包括Web层、业务逻辑层、数据存取层,大多数项目仍然部署在同一个应用服务器上的一个JVM进程中。SSH架构仍然以服务企业级用户为主,分为三个层次:实现UI交互的Web MVC层、实现业务逻辑的Spring层及实现对象对象关系映射的Hibernate层,与JEE对应层次对比层次更简单...

2019-09-23 15:57:39 675

原创 《大型网站技术架构:核心原理与案例分析》读书笔记

第1篇大型网站架构演化大型网站架构技术的核心价值是随网站所需灵活应对驱动大型网站技术发展的的主要力量是网站的业务发展网站架构设计误区一味追随大公司的解决方案,一句话“淘宝就是这样做的”…为了技术而技术,网站架构是因业务而存在,除此之外毫无意义。技术选型和架构设计中,脱离网站业务发展的实际,一味追求时髦新技术,可能会将网站技术发展引入崎岖小道,架构之路越走越难。企图用技术解决...

2019-09-20 11:46:25 169

原创 《Java性能优化权威指南》读书笔记

第1章 策略、方法、方法论略…第2章 操作系统性能监控2.1 定义性能监控、性能分析及性能调优性能监控,非侵入方式收集或查看应用程序性能数据的活动。性能分析,以侵入方式收集运行性能数据的活动。性能调优,一种为改善应用响应性能或吞吐量而更改参数(Tune-able)、源代码或属性配置的活动。2.2 CPU使用率带着下面这个目标/问题去读如何让多处理器、多核系统上运行的多线程...

2019-09-18 12:14:55 199

原创 数据结构-二叉排序树

如果需要一个满足:支持排序性、高效插入、删除操作、高效查找的数据结构,怎么做?先看看一些简单的数据结构:1)排序顺序表(数组):查找可以采用折半查找算法,时间效率为O(log2n);插入、删除操作的时间复杂度为O(n),数据量大时,效率太低。2)排序单链表:只能采用顺序查找,时间复杂度为O(n),不能采用折半查找法;插入和删除操作时间负责度为O(n),虽然没有数据移动,

2016-09-27 10:22:40 622

原创 HashMap的put、get方法分析与Hash冲突的分析、解决

HashMap的put、get方法分析与Hash冲突的分析、解决

2016-09-26 23:40:35 5150

原创 使用spring mvc 4.2.x.jar ClassNotFoundException:org.springframework.web.cors.CorsConfigurationSource

使用spring mvc的包时,如果选择了4.2.x及以上版本,在控制器中调用RequestMapping("")注解时启动Tomcat报错:ClassNotFoundException:org.springframework.web.cors.CorsConfigurationSource原因是4.2版本后,spring支持跨域共享,具体的使用方法参考文档CORS suppo

2016-04-29 16:21:04 10221

原创 关于如何使用Jeesite快速开发笔记

公司要求学习jeesite这个框架,网上全是关于jeesite的描述,完全无用,在此只记录如何使用jeesite进行快速开发。一、搭建环境:1、这是我的Eclipse、Maven等环境,此步骤略过。 注意:以前试过jdk1.6以上都可以使用jeesite 2、下载最新版本jeesite源码:下载地址:[GitHub/jeesite] https://github.com/thi

2016-04-26 17:25:06 56884 10

原创 TreeSet唯一性以及有序性底层剖析

TreeSet底层原理TreeSet底层数据结构是红黑树(一种自平衡的二叉树,自平衡是指如果有空的左/右子树,元素会先入空的左/右子树,而不会一直往一个方方向添加元素出现不平衡现象)。该自平衡二叉树保证了元素的有序性(存储逻辑顺序),因为按照前、中、后三种顺序都可以有序的读取到集合中的元素。 下面是关键底层源码: 发现add方法中调用了TreeSet中的一个成员变量m.put()方法。而Navi

2016-03-22 01:24:32 5534

转载 Java HashMap的hash和indexFor函数

Java HashMap的hash和indexFor函数

2016-03-22 00:31:55 1323

原创 HashSet的add(E e)方法剖析

HashSet底层原理 JDK 1.6 中文API描述:此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。 此类为基本操作提供了稳定性能,这些基本操作包括 add、remove、contains 和 size,假定哈希函数将这些元素正确地分布在桶中。对此 set 进行迭代所需的时

2016-03-22 00:29:32 3348

原创 数组实现顺序队列、顺序循环队列

一、数组实现顺序队列 /** * 顺序队列 此实现会出现假溢出现象 * * @author Administrator * */ public class MyArrayQueue implements Serializable {/** * */private static final long serialVersionUID = 74811495914348

2016-03-20 17:21:51 671

转载 顺序存储结构与链式存储结构的比较(也可以说的顺序表与链表的比较)

顺序存储结构与链式存储结构的比较(也可以说的顺序表与链表的比较)

2016-03-20 13:03:29 1233

转载 spring中配置log4j

spring中配置log4j

2016-03-19 18:27:15 455

转载 Struts2 页面url请求如何找action

Struts2 页面url请求如何找action

2016-03-19 18:16:13 1278

转载 Struts2 Result-type(封装Action层到View层的跳转逻辑)

Struts2 Result-type(封装Action层到View层的跳转逻辑)

2016-03-19 17:23:02 445

转载 电话号码等常见的正则表达式

电话号码等常见的正则表达式

2016-03-19 17:11:42 594

转载 applicationContext.xml 配置文件的存放位置

spring配置文件路径问题。

2016-03-17 23:29:30 883

原创 win7 X64 安装Oracle VM VirtualBox后无法创建com对象问题(已解决)

win7 X64 安装Oracle VM VirtualBox后无法创建com对象问题(已解决)

2016-01-29 23:16:38 3265 1

原创 Android 简单欢迎页面设计

Android 简单欢迎页面设计

2016-01-29 22:26:53 994

原创 Android 带固定图片的EditText

带固定图片的EditText

2016-01-29 22:23:05 413

空空如也

空空如也

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

TA关注的人

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