自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

有信仰的蜗牛

尊重每一行代码

  • 博客(44)
  • 收藏
  • 关注

原创 Java多线程之AQS(AbstractQueuedSynchronizer )实现原理和源码分析(三)

HelloWorld

2018-11-08 11:25:02 1622

原创 Hbase大批量数据迁移之BulkLoad

Hbase大批量数据迁移方案只BulkLoad

2022-08-31 15:09:46 1926 1

原创 Tomcat极限性能测试(二)

基础环境Linux操作系统,128G内存,40核心数CPU测试代码@RequestMapping(value = "/test/tomcat", method = RequestMethod.GET) @ResponseBody public void testTomcat() { int j = 0; for (int i = 0; i < 2000; i++) { j = j + i; }

2021-06-22 10:38:38 1656 1

原创 Tomcat高性能测试(一)

tomcat说明tomcat参数说明:tomcat核心参数: max-threads,accept-count,max-connections,connection-timeoutmax-threads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200accept-count:当accept队列中连接的个数达到acceptCount时,队列满,进来的请求一律被拒绝。默认值是100max-connectionstomcat在任意时刻接收和处理的最大连接数。当Tom

2021-06-21 09:18:21 1427

原创 Hbase大批量写的实践

概述最近在做全量库手机号的MD5和SHA256,从130号段到199号段。差不多有140亿的数据量,其中md5是70亿,SHA256也是70亿。如何让这140亿的手机号批量写入到Hbase中去,达到效率最高不丢数据。且出现异常,可以自行修复。设计思路任务拆分将70亿是手机号,按照号段进行拆分,平均1000w个手机号为一个任务单元。开启多线程去处理每个任务单元预分区 + Rowkey设计为了让Hbase可以大批量写入,同时解决数据热点问题。那么对Hbase进行rowkey和预分区设计必不可好。我

2021-05-06 10:15:09 1788

原创 误删除HDFS文件的终极恢复

概述使用过HDFS的同学都知道,HDFS有垃圾回收站的功能,当你误删除文件的时候,HDFS会把文件存储到你所在用户的垃圾回收站中,想要恢复文件,只需要从垃圾回收站中找回,当然必须在垃圾回收站的指定日期中。这个是正常的操作。下面我说一个不正常的操作,如果你的垃圾回收站的间隔日期设置的比较大,当你需要执行大量MR任务时候,就会存在很多垃圾日志存储到你的回收站中,这样就占用了系统大量的存储资。为了解决这个问题,于是想到了如果跳过回收站去删除文件不就可以了。接着执行了一下的指令:hdfs dfs -rm -R

2020-05-09 22:24:24 2711 1

原创 6、netty-4.1 源码编译

概述:在分析Netty 源码之前,我们先编译下Netty源码。由于使用Apache的Maven仓库,这块对网络要求比较高,其次由于一些 Maven的插件和依赖可能存在某些私有的仓库中,所以在编译的过程中下载失败。但是对整体的编译影响不大,这块我们可以不予考虑。1、Netty 源码编译流程1.1、安装Maven可以在本地电脑安装Maven仓库,这里的Maven要求3.0以上的版本即可,具体...

2019-01-16 17:12:13 4647 1

原创 5、深入剖析Java NIO之Selector(多路复用器)

章节概览Netty源码分析章节概览1、概述关于多路复用的基本原理,在大白话分析BIO,NIO,AIO中简单的介绍了关于多路复用技术的理解。这章节,我们深入理解分析多路复用技术。以及JDK的部分源码作为参考。2、多路复用快速认知为了快速理解多路复用技术,我们以生活中的小案例进行说明。老张开大排档,刚刚起步的时候,客人比较少。接待,炒菜,上菜都是老张一个人负责。老张的手艺不错,炒出来的菜...

2018-12-19 11:39:22 14454 8

原创 4、深入剖析Java Nio编程原理之Buffer

章节概览Netty源码分析章节概览1、概述前面我们做了很多基础知识的准备,包括bio,nio,aio的理论和概念。BIO实现原理和通信原理知识的梳理等。下面我们深入的分析下NIO相关的知识。和Socket类和ServerSocket类相对应的,NIO也提供了SocketChannel和ServerSocketChannel两种不同的套接字接口实现。当然这两种新增的模式支持阻塞模式和非阻塞模...

2018-12-18 15:04:50 607 3

原创 3、Java网络编程之深入理解BIO原理和实现

章节概览Netty源码分析章节概览1、概述关于网络方面的知识,这里不再赘述。可以看七层网络模型,TCP/IP协议,三次握手,四次挥手等网络编程方面的知识。本章节主要结合Java BIO 讲解BIO编程的原理和过程。1.1、七层网络协议1.2、 五层网络协议2、socket发送和接受数据过程发送过程:应用程序调用系统调用,将数据发送给socketsocket检查数据...

2018-12-17 17:22:14 1642

原创 2、大白话分析BIO,NIO,AIO

章节概览Netty源码分析章节概览1、概述上一篇文章一分钟弄懂同步,异步,阻塞,非阻塞简单的了解了下同步,异步,阻塞,非阻塞的概念。那么在java的网络编程中,这些不同的IO状态又是怎么规划的呢。为了深入的理解这个问题。我们参考了《Netty 权威指南》 部分章节进行详细说明。深入理解不同的IO网络流的情况。同时进一步分析下BIO的原理。2、Linux网络模型简介Linux的内核将所有...

2018-12-17 14:02:05 2622

原创 透视设计模式之装饰者模式

概述说到装饰者设计模式,大家并不陌生。在jdk源码中的 IO框架大量使用了装饰者设计模式,所以学习好装饰者设计模式对我们理解java 的 io框架有很大的帮助。1、定义装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。1.2、装饰者模式UML图1.3、 装饰者模式具备的特点装饰者和被装饰对象有相同的超类型。你可以用一个或多个装饰者包装一个对...

2018-12-11 22:18:10 245

原创 Netty源码分析章节概览

目录:一分钟弄懂同步,异步,阻塞,非阻塞

2018-12-06 10:31:39 708

原创 1、一分钟弄懂同步,异步,阻塞,非阻塞

1、概述不管是什么开发语言,都会涉及到网络编程。在分布式计算、存储、微服务中,网络编程作为底层的核心支柱技术必不可少。以Java开发语言为例,我们经历了从BIO,NIO,AIO的不同阶段。但是每个阶段都是围绕着几个概念展开:同步,异步,阻塞,非阻塞。这边文章我们用浅显易懂的案例去说明这些概念。2、场景描述为了更好的讲解,我们以身边的订外卖为场景进行详细说明2.1、场景一:同步小明在努力...

2018-12-06 10:28:21 1203

原创 Java多线程之CountDownLatch实现原理和源码分析(八)

章节概览:Java多线程之章节概览1、概述CountDownLatch是一个用来控制并发的很常见的工具,它允许一个或者多个线程等待其他的线程执行完其操作。比如我需要统计多篇文章中出现不同单词的数量,我们会为每篇文章分配一个线程进行统计,统计完成之后,会保存一个单词统计列表。等所有的统计线程都执行完成以后,对这些统计出来的结果用一个线程去汇总,这就可以使用CountDownLatch。...

2018-11-29 15:37:57 596

原创 Java多线程之ReentrantReadWriteLock实现原理和源码分析(七)

章节概览、Java多线程之章节概览

2018-11-28 16:37:58 659

原创 Java多线程之Future实现原理和源码分析(六)

章节概览、Java多线程之章节概览

2018-11-15 18:02:48 2048 2

原创 Java多线程之ThreadPoolExecutor实现原理和源码分析(五)

章节概览、Java多线程之章节概览

2018-11-14 10:31:02 444

原创 Java多线程之Condition实现原理和源码分析(四)

1、回顾Java多线程之线程概述(一)Java多线程之ReentrantLock实现原理和源码分析(二)Java多线程之AQS(AbstractQueuedSynchronizer )实现原理和源码分析(三)...

2018-11-09 16:56:16 385

原创 Java多线程之章节概览

目录:Java多线程之线程概述(一)Java多线程之ReentrantLock实现原理和源码分析(二)Java多线程之AQS(AbstractQueuedSynchronizer )实现原理和源码分析(三)...

2018-11-08 14:53:40 486

原创 Java多线程之线程概述(一)

cas原理

2018-11-06 16:57:12 325

原创 Java多线程之ReentrantLock实现原理和源码分析(二)

1、ReentrantLock概述ReentrantLock字面含义是可重入的互斥锁,实现了和synchronize关键字一样的独占锁功能。但是ReentrantLock使用的是自旋锁,通过CAS硬件原语指令实现的轻量级的锁,不会引起上下文切换。而Synchronize关键字是重量级的且是独占的悲观锁。在使用过程中,会引起上下文切换。同时ReentrantLock增加了一些高级的扩展功能,比如它...

2018-11-06 16:56:45 627

原创 SpringOauth2.0源码分析之Token持久化(五)

1.概述前面几个章节所述内容如下:SpringOauth2.0源码分析之认证流程分析(一)SpringOauth2.0源码分析之ProviderManager(二)SpringOauth2.0源码分析之客户端认证(三)SpringOauth2.0源码分析之获取access_token(四)本章节主要叙说Token的存储情况。默认的情况下,SpringOauth2.0 提供4种方式存...

2018-10-29 14:51:28 2618

原创 SpringOauth2.0源码分析之获取access_token(四)

1.概述前面三个章节叙述了用户名密码认证方式中客户端用户名密码认证细节。SpringOauth2.0源码分析之认证流程分析(一)SpringOauth2.0源码分析之 ProviderManager(二)SpringOauth2.0源码分析之客户端认证(三)本章节主要深入分析access_token的实现细节。整个流程实现细节如下:整个流程中主要核心分为三大块:用户的用户名密...

2018-10-25 11:43:56 7178

原创 SpringOauth2.0源码分析之客户端认证(三)

1.概述上面的2个章节我们分别介绍了:SpringOauth2.0源码分析之认证流程分析 以及SpringOauth2.0源码分析之 ProviderManager。下面我们在此基础上进一步的分析认证过程的细节。本章节主要深入分析,客户端的用户名密码认证过程。整合认证流程如下图所示:2.客户端认证流程源码详解当用户通过用户名密码进行认证获取access_token的时候,首先需要认证的是...

2018-10-24 14:27:42 1897 1

原创 SpringOauth2.0源码分析之ProviderManager(二)

1.概述在SpringOauth2.0中,所有的认证服务,均通过ProviderManager认证管理中心进行认证。通过分析ProviderManager,可以理解SpringOauth2.0认证的细节。也是整个流程中最核心的环节之一。2.ProviderManager 的类结构ProviderManager 继承实现AuthenticationManager接口。public class...

2018-10-23 15:17:45 2836

原创 SpringOauth2.0源码分析之认证流程分析(一)

1.概述本专题的源码分析均以用户名密码认证模式进行叙述。在此先了解下用户名密码认证的协议流程说明:(A)用户向客户端提供用户名和密码。(B)客户端将用户名和密码发给认证服务器,向后者请求令牌。(C)认证服务器确认无误后,向客户端提供访问令牌。(B)步骤:客户端发出https请求。从用户名密码认证方式可以看出,在获取access_token的过程中,将用户名和密码完全交给客户端,然后客...

2018-10-23 12:42:52 4438 4

原创 SpringOauth2.0 用户名密码验证方式(二)

1.Oauth2.0 用户名密码认证流程(A)用户向客户端提供用户名和密码。(B)客户端将用户名和密码发给认证服务器,向后者请求令牌。(C)认证服务器确认无误后,向客户端提供访问令牌。请求示例(B)步骤:客户端发出https请求用户名密码认证方式,其实是对Code认证方式的高度封装,将其中的用户确认授权的步骤直接整合到:用户向客户端提供用户名和密码在这种模式下,用户必须对客户端...

2018-10-22 09:46:05 6907

原创 SpringOauth2 Authorization_code 模式(一)

1. Oauth2 authorization_code 认证协议说明Oauth2 Authorization_code 模式是 Oauth2 认证中最完善的认证方式。其完整的认证模式如下:(A)用户访问客户端,客户端将用户引导向认证服务器。(B)用户选择是否给予客户端授权。(C)如用户给予授权,认证服务器将用户引导向客户端指定的redirection uri,同时加上授权码code。...

2018-10-19 14:14:44 11294 2

原创 3.数据仓库之确定粒度

在数据仓库的开发过程中,确定数据仓库中的数据的粒度是至关重要的,翻阅了很多书籍,对粒度的描述都过于笼统,百度百科对数据粒度的定义: 数据粒度,是指数据仓库中数据的细化和综合程度。根据数据粒度细化标准:细化程度越高,粒度越小;细化程度越低,粒度越大。分析了数据仓库中的粒度模型,在此基础上提出了一种估计数据仓库大小的方法。看完这段描述,估计也是云里雾里的,晦涩难懂!!在设计数据仓...

2018-09-17 10:24:04 1649

转载 2.数据仓库之事实表设计规则

1.事实表特性事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计,通过获取描述业务过程度量来表达业务过程。包含了引用的维度和业务过程相关的度量。事实表中一条记录所表达的业务细节程度被称之为粒度。通常粒度可以通过两种方式来表达:一种是维度属性组合所表达的细节程度;一种是所表示的业务具体含义。作为度量业务过程的事实,一般为整型或浮点型的十进制的数值,有可加性,半可加性和不可加性三种...

2018-09-14 16:09:59 2271 1

原创 1.数据仓库概述

一:数据仓库简介数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。数据仓库系统是一个信息提供平台,他从业务处理系统获得数据,主要以星型模型和雪花模型进行数据组织,并为...

2018-09-13 15:30:26 555

原创 JVM线上实战(2)

通过《jvm线上实现(1)》定位到问题的所在,为了更近一步的定位错误信息,dump当前java进程堆信息加载当前的堆信息:jmap -dump:live,format=b,file=dump.hprof 5511 通过 Eclipse IDE MAT 插件进行堆分析Java堆分析: Eclipse 导入堆信息 1. 查看当前堆内存泄漏情况 堆的对象泄漏可以分析出,...

2018-08-30 13:58:10 2886

原创 高并发系统概念思想

什么是高并发高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。高并发是概念上的逻辑,表达的含义就是同一时间点出现大量的请求。高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。响应时...

2018-08-30 09:23:24 2696

原创 Linux文件已删除,引用未释放(deleted)

问题描述:警告文件磁盘已经满了,通过:df -h, du -sh * 等指令配合使用,发现当前系统任然存在大量可以使用的空间。大量剩余的磁盘空间不清楚怎么丢失了…问题重现:通过指令:lsof | grep deleted 指令,查看当前系统句柄未释放情况[root@bigdata-hadoop2:/proc/21893/fd]# lsof | grep deleted...

2018-08-28 14:20:55 25018 1

原创 可重入锁:ReentrantLock理解使用

(一)可重入性可重入性描述这样的一个问题:一个线程在持有一个锁的时候,它内部能否再次(多次)申请该锁。如果一个线程已经获得了锁,其内部还可以多次申请该锁成功。那么我们就称该锁为可重入锁。通过以下伪代码说明:void methodA(){ lock.lock(); // 获取锁 methodB(); lock.unlock() // 释放锁}void met...

2018-08-28 11:16:32 23165 1

原创 java线程间通信wait,notify/notifyAll

1.概述Java所有的类都继承Object对象。Object对象有以下常用方法:// 克隆当前对象protected Object clone() // 判断对象内存空间地址是否相同boolean equals(Object obj) // 显示调用对象清理protected void finalize()// 获取当前对象的Class对象,可以获取方法区里类的元数据信息...

2018-08-24 17:50:35 242

原创 Jvm线上调优实战(1)

侦探问题根源通过top指令发现,当前5511的线程cup和内存的使用率过高:top : 5511 root 20 0 16.841g 6.088g 5584 S 47.0 39.2 4011:41 java 9550 root 20 0 2516200 67892 2436 S 0.7 0.4 204:20.40 java...

2018-08-23 17:12:52 11242 1

原创 线程安全之volatile

概述:Volatile是java提供的一种同步的手段,只不过它是轻量级的同步,为什么这么说,因为volatile只能保证多线程的内存可见性,不能保证多线程的原子操作。运用场景: 1. 运算结果并不依赖变量的当前的值,或者能够确保只有单一线程修改改变量的值 1. 该变量没有包含在具体的其他变量的变式中其实就是这个变量只提供读属性,不具备写和后期计算属性,只能读取,不能具体到业务中使用...

2018-08-23 16:53:32 244

原创 Java安全线程判断

1. 概述通俗的讲,java多线程本质上就是管理状态的访问,而通常来讲这些状态是:共享的,可变的状态 状态 : 一个对象的状态就是它的数据,存储在状态变量中。比如他的实例域和静态域。 共享: 是指一个变量可以被多个线程进行访问。 可变: 变量的值在其生命周期内是可以被其他线程改变的   无论何时,只要多余一个的线程访问给定的状态变量,而且摸个线程会写入改变量,时需要有必须需要用协调线程...

2018-08-23 15:55:16 1142

空空如也

空空如也

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

TA关注的人

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