自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Leo专题

工作总结/技术积累/源码解读笔记

  • 博客(64)
  • 资源 (1)
  • 收藏
  • 关注

原创 深入JVM系列-类加载原理

看完这系列文章能对JVM有一个全新而全面的认识!(文章来源于我的公众号:Java技术泛)首先介绍的是类的生命周期,类的生命周期主要分为以下几个阶段,如下图所示:类加载类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在内存中创建一个java.lang.Class对象(JVM规范中并未说明class对象位于哪里,HotSpot虚拟机将其放在了方法区中)用来封装类在方法区内的数据结构。类连接...

2021-03-19 01:22:43 423 1

原创 消息中间件介绍

文章目录一、消息中间件概念二、主流消息中间件及选型三、消息中间件应用场景及解决方案四、JMS规范和AMQP协议讲解一、消息中间件概念    维基百科对消息中间件的解释:面向消息的系统(消息中间件)是在分布式系统中完成消息的发送和接收的基础软件。    消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型,可以在分布式环境下扩展

2021-03-02 12:55:53 485

原创 MYSQL之MHA介绍与集群搭建

文章目录1.MHA架构1.1MHA介绍1.2MHA节点介绍1.3MHA故障处理机制1.4MHA优点2.MHA主备切换2.1主备切换策略3.MHA集群搭建3.1基本环境3.2下载与安装3.3修改配置3.3安装成功验证3.4后台启动4.安装过程中常见问题1.MHA架构1.1MHA介绍    MHA(Master High Availability)是一套比较成熟的 MySQL 高可用方案,也是一款优秀的故障切换和 主从提升的高可用软件。在MySQL故障切换过程中,M

2021-03-02 12:54:23 310

原创 Spring IOC初始化流程

文章目录1、Spring IOC初始化整体流程1.1 Spring IOC的容器体系介绍1.2 编写测试代码1.3 初始化整体流程源码剖析1.4 初始化整体流程与时序图2、Spring BeanFactory创建流程2.1 BeanFactory创建与BeanDefinition加载流程源码2.2 BeanFactory创建与BeanDefinition加载注册时序图2.3 BeanDefinition加载及注册源码剖析2.4 BeanDefinition加载于注册时序图1、Spring IOC初始化整体

2021-03-02 12:52:35 401

原创 Hadoop入门篇

文章目录一、Hadoop起源二、Hadoop简介2.1、Hadoop的核心思想2.2、Hadoop 四大模块三、HDFS介绍3.1、数据块3.2、namenode和datanode3.3、块缓存3.4、联邦HDFS3.5、HDFS的高可用性四、YARN介绍4.1、YARN的运行机制五、MapReduce介绍5.1、MapReduce编程模型5.2、Hadoop的MapReduce介绍5.3、MapReduce经典实现案例一、Hadoop起源    提到Hadoop

2021-03-02 12:50:55 161

原创 Spring循环依赖源码剖析

文章目录Spring循环依赖主要流程Spring循环依赖核心源码Spring循环依赖时序图Spring循环依赖主要流程    上篇文章中介绍了Spring初始化的整体流程,本篇文章主要是对初始化过程中finishBeanFactoryInitialization这个方法进行剖析,该方法主要是初始化所有非懒加载的单例Bean,创建Bean对象,完成属性填充,调用init-method进行初始化,然后调用后置处理器处理Bean,解决循环依赖就发生在这个过程中。大体流程

2021-03-02 12:48:15 119

原创 深入JVM原理系列(一)

上周分享了一篇关于RocketMQ的文章,有很多的不足,很多小伙伴说少了一些图和代码,然后还有小伙伴建议我贴一些应用层面的,跟框架整合的代码。后来想了想,代码的话GitHub上面太多Demo了,就不在此分享啦,加上最近一直在研究学习JVM这块的内容,因此准备分享一个JVM的系列性的文章,让之前没怎么研究JVM的或者没有过深入了解JVM的同学,看完这系列文章能对JVM有一个全新的认识,结合上...

2019-11-27 15:55:55 283 4

原创 RocketMQ组件及原理深度剖析详解

RocketMQ于2017年9月成为Apache基金会的顶级项目。有着支撑亿级消息量的能力,可以为复杂的业务场景提供系统解耦、削峰填谷、以及低延迟、高吞吐的能力,下面将详细介绍RockeMQ的核心组件和功能,以及细节。RocketMQ应用场景及作用? 应用解耦:用户调用订单系统创建订单后,分别调用库存系统、支付系统、物流系统,使用解耦之后,支付系统、库存系统、物流系统...

2019-11-25 15:41:45 1020

原创 从Lucene到Elasticsearch

Lucene的总体架构:    文档:索引与搜索的主要数据载体,它包含一个或多个字段,存放将要写入索引或将索引搜索出来的数据。    字段:文档的一个片段,它包括两个部分:字段的名称和内容。    词项:搜索时的一个单位,代表文本中的某个词。    词条:词项在字段中的一次出现,包括词项的文本,开始和结束的位移以及类型。Apache Lucene

2017-09-14 10:32:47 2005

原创 Split过程源码分析

split来源:    1、Memstore flush时直接CompactSplitThread.requestSplit。    2、HBaseAdmin客户端发起的请求,HRegionServer收到后,转CompactSplitThread.requestSplit处理。    下面介绍HBaseAdmin发起请求的实现细节:    client通过

2017-09-14 10:05:21 1502

转载 ES: 架构及原理

Elasticsearch 是一个兼有搜索引擎和NoSQL数据库功能的开源系统,基于Java/Lucene构建,可以用于全文搜索,结构化搜索以及近实时分析。可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架。 说明: Lucene:只是一个框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene,学习成本高,Lucene确实非常复杂。 Elasticsearch 是

2017-02-08 10:24:12 37112 2

转载 TF-IDF与余弦相似性的应用(二):找出相似文章

今天,我们再来研究另一个相关的问题。有些时候,除了找到关键词,我们还希望找到与原文章相似的其他文章。比如,"Google新闻"在主新闻下方,还提供多条相似的新闻。为了找出相似的文章,需要用到"余弦相似性"(cosine similiarity)。下面,我举一个例子来说明,什么是"余弦相似性"。为了简单起见,我们先从句子着手。  句子A:我喜欢看电视,不喜欢看电影

2016-10-11 12:01:38 420

转载 Git使用手册

GitUserManualChinese - Robin WikiGitUserManualChineseGit 用户手册(1.5.3 及后续版本适用)翻译: 罗峥嵘 (Robin Steven) [email protected] >英文版本: http://www.kernel.org/pub/soft

2016-05-05 10:31:40 2781

原创 Java 多线程之信号量 Semaphore

信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。为了完成这个过程,需要创建一个信号量VI,然后将Acquire Semaphore VI以及Release

2016-04-27 14:54:20 648

转载 Git客户端图文详解如何安装配置GitHub操作流程攻略

Git介绍分布式 : Git版本控制系统是一个分布式的系统, 是用来保存工程源代码历史状态的命令行工具;保存点 : Git的保存点可以追踪源码中的文件, 并能得到某一个时间点上的整个工程项目额状态; 可以在该保存点将多人提交的源码合并, 也可以会退到某一个保存点上;Git离线操作性 :Git可以离线进行代码提交, 因此它称得上是完全的分布式处理, Git所有的操作不需要在线

2016-04-14 17:04:39 93

转载 Git版本控制软件结合GitHub从入门到精通常用命令学习手册

GIT 学习手册简介本站为 Git 学习参考手册。目的是为学习与记忆 Git 使用中最重要、最普遍的命令提供快速翻阅。 这些命令以你可能需要的操作类型划分,并且将提供日常使用中需要的一些常用的命令以及参数。本手册将从入门到精通指导大家。 首先,我们要从如何以 Git 的思维方式管理源代码开始。如何以 GIT 的方式思考(这节可以不用看懂,接着看下面的内容,看完就全懂了。)

2016-04-14 16:54:12 473

原创 关于java的n=n++问题

public class Test2 { public static void main(String[] args) { int n = 0; for(int i = 0; i<3; i++){ n = n++; System.out.println(n); } System.out.println(n); }}输出结果为:0000原因

2016-04-14 14:56:22 2509 7

转载 Windows和Linux环境下Memcached安装与配置

一、memcached安装配置windows平台安装1、memcached-1.2.6-win32-bin.zip下载地址: http://code.jellycan.com/memcached/,执行memcached.exe -d install 安装。2、守护进程方式启动:memcached.exe -m 512 -d start-d为守护进程启动,不能指

2016-04-05 17:25:04 505 1

转载 Linux文本处理工具集锦

原文出处: 大CC  本文将介绍Linux下使用Shell处理文本时最常用的工具:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk;提供的例子和参数都是最常用和最为实用的;我对shell脚本使用的原则是命令单行书写,尽量不要超过2行;如果有更为复杂的任务需求,还是考虑python吧;find 文件查找查找

2016-03-28 11:31:49 758

原创 静态内部类

1.非静态内部类是附属在外部类对象上的,需要先实例化一个外部类的对象,通过外部类对象才能实例化非静态内部类;而静态内部类可以看做是直接附属在外部类上的,这个静态代表附属体是外部类,而不是外部类实例。public class outClass { public static class innerClass{ public innerClass(){

2016-03-23 09:48:57 337

转载 数据库连接学习(二)——Tomcat下使用C3P0配置JNDI数据源

一、C3P0下载  C3P0下载地址:http://sourceforge.net/projects/c3p0/files/?source=navbar    下载完成之后得到一个压缩包。二、使用C3P0配置JNDI数据源  Tomcat6.x中配置JNDI数据源时默认使用的是Tomcat6.x自带的DBCP连接池,Tomcat6.x使用DBCP连接池配置J

2016-03-03 11:51:03 504

转载 数据库连接学习(一)——JNDI数据源的配置

一、数据源的由来  在Java开发中,使用JDBC操作数据库的四个步骤如下:      ①加载数据库驱动程序(Class.forName("数据库驱动类");)      ②连接数据库(Connection con  = DriverManager.getConnection();)      ③操作数据库(PreparedStatement stat = con.pr

2016-03-03 11:40:56 824

转载 日志聚集相关配置参数

日志聚集相关配置参数:日志聚集是YARN提供的日志中央化管理功能,它能将运行完成的Container/任务日志上传到HDFS上,从而减轻NodeManager负载,且提供一个中央化存储和分析机制。默认情况下,Container/任务日志存在在各个NodeManager上,如果启用日志聚集功能需要额外的配置。(1) yarn.log-aggregation-enable参数解释:是否启用

2016-01-31 16:57:08 469

原创 Memcached分布式Cache的简单测试

服务器端安装:1. 下载win32 版本 memcached-1.2.1-win32.zip  下载memcache的windows稳定版,解压放在e:/memcached 2. 在终端下输入 'e:/memcached/memcached.exe -d install' 安装3. 在终端下输入   'e:/memcached/memcached

2016-01-31 16:40:12 311

转载 NameNode启动过程详细剖析

Namenode会将HDFS的文件和目录元数据存储在一个叫fsimage的二进制文件中,每次保存fsimage之后到下次保存之间的所有hdfs操作,将会记录在editlog文件中,当editlog达到一定的大小(bytes,由fs.checkpoint.size参数定义)或从上次保存过后一定时间段过后(sec,由fs.checkpoint.period参数定义),namenode会重新将内存中对整

2016-01-30 12:36:27 425

原创 NameNode启动过程

NameNode(NN代指)中存储的HDFS中文件的元信息,是整个文件系统的管理节点,它维护着整个文件系统的目录结构,文件/目录的元信息和每个文件对应的数据块列表。接收用户请求(上传、下载、删除。。。),接收datanode的心跳和块报告。NN的启动过程:首先执行NN中的main函数main函数的主要工作是创建一个NN对象,并通过join方法等待其他线程运行结束。

2016-01-30 12:29:52 1424

原创 错误:Unable to load native-hadoop library for your platfor

在CentOS6.4上安装完hadoop2.5以后,使用以下命令:hadoop fs -ls /提示: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable有个WARN提示had

2016-01-23 00:28:15 733

原创 VM上配置linux服务器解决mac地址冲突,无法联网问题

一、第一步,修改VM的网络编辑器,将VMnet8设置为NAT模式,子网IP和电脑上的VM8在同一个网段二、将Linux的虚拟机设置改为NAT模式。三、配置linux上的ip地址,使ip地址网段和VMnet8一致,如果还是没网络可能是mac地址冲突,需要修改mac地址。四、新生成mac地址五、修改linux服务器上的mac地址1.  vim /etc/

2016-01-02 22:32:13 3313

原创 继承中的this的含义及通过反射获取泛型参数

在继承中,如果A类继承了B类,super对应B类,this对应A类。package cn.test;import java.lang.reflect.ParameterizedType;public class Animal { Class clazz=null; public Animal() { //这里的this.getClass()实际上得到的是子类中的new的类对

2015-12-25 11:16:44 982

转载 在MySQL中设置外键约束

1) 外键的使用:外键的作用,主要有两个:    一个是让数据库自己通过外键来保证数据的完整性和一致性    一个就是能够增加ER图的可读性    有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库有时候会由于没有通过外键的检测而使得开发人员删除,插入操作失败.他们觉得这样很麻烦其实这正式外键在强制你保证数据的完整性和一致性.这是好事儿.    例如:

2015-12-24 23:33:56 639

转载 快速破解本地的mysql用户名和密码

Windows:1.用系统治理员登陆系统。2.停止MySQL的服务。3.进入命令窗口,然后进入MySQL的安装目录,比如我的安装目录是c:\mysql,进入C:\mysql\bin4.跳过权限检查启动MySQL, c:\mysql\bin>mysqld-nt --skip-grant-tables5.重新打开一个窗口,进入c:\mysql\bin目录,设置root的新密码 c:

2015-12-14 17:06:09 6143

转载 Maven在Myeclipse上配置

一:Maven的下载安装准备工作:1)安装环境 Windows 72)需安装JDK ,并配置环境变量(略)3) Maven版本3.0.54)下载地址:http://mirror.bit.edu.cn/apache/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.zip5)zip包解压。路径为:D

2015-11-20 19:22:53 375

原创 Thinking in java:多线程详解

一.线程的创建和启动java虚拟机的主线程,它从启动类的main()方法开始运行,此外,用户还可以创建自己的线程,它将和主线程并发运行。创建线程的两种方式:1.继承java.lang.Thread类2.实现Runnable接口Thread类代表线程类,它的最主要的两个方法是:run()——包含线程运行时所执行的代码,start()——用于启动线程。

2015-09-23 16:48:15 290

原创 Thinking in java 之:容器介绍

Set和存储顺序:Set:存入Set的每个元素都必须是唯一的,因为Set不保存重复元素。加入Set不保存重复元素。加入Set的元素必须定义equals()方法以确保对象的唯一性。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。HashSet *:为快速查找而设计的Set。存入HashSet的元素必须定义hashCode()TreeSet:保持次序的Set,

2015-09-10 10:54:07 261

原创 Thinking in java 之:迭代器Iterator

迭代器(也是一种设计模式)是一个对象,它的工作是遍历并选择序列中的对象,而客户端程序员不必知道或关心该序列底层的结构。此外迭代器通常被称为轻量级对象:创建它的代价小。因此,经常可以见到迭代器有些奇怪的限制,例如:Java的Iterator只能单向移动,这个Iterator只能用来:1.使用方法Iterator()要求容器返回一个Iterator。Iterator将准备好返回序列的第一个元素。

2015-09-08 10:41:39 431

原创 Thinking in java 之:内部类的继承

因为内部类的构造器必须连接到指向其外围类对象的引用,所以在继承内部类的时候,事情会变得有点复杂。问题在于,那个指向外围类对象的“秘密的”引用必须被初始化。class InnerOut { class Inner { public void print() { System.out.println("Inner"); } }}public class InheritIn

2015-09-07 13:14:34 454

原创 Thinking in java 之:内部类

可以将一个类的定义放在另一个类的定义内部,这就是内部类。普通内部类:public class InnerDemo { private Object[] item = { 2, 12, 3 }; public void print() { System.out.println("aaaa"); } public static void main(String[] args)

2015-09-07 09:30:56 273

原创 Thinking in java 之:静态数据的初始化及初始化顺序

无论创建了多少个对象,静态数据都只占用一份存储区域,static关键字不能应用于局部变量,因此它只能作用于域。如果一个域是静态的基本类型域,且也没有对它进行初始化,那么它就会获得基本类型的标准初值,如果它是一个对象引用,那么它的默认初始化值就是null。实例:public class StaticInitialization { static Bowl b11 = new Bowl(11

2015-09-06 10:40:54 427

原创 Thinking in java 之:可变参数列表

有了可变参数,就再也不用显示地编写数组语法了,当你指定参数时,编译器实际上会自动为你去填充数组,你获取的仍是一个数组,这就是为什么print()可以使用foreach来迭代该数组的原因,但是,当你传递的参数已经是一个数组的时候,编译器发现你已经是一个数组了,便不会为你做任何的转换操作,所以,如果你有一组事物,可以把它们当做列表传递,而如果你已经有了一个数组,该方法可以把它们当做可变参数列表来接受。

2015-09-06 10:26:02 787

原创 mac下为eclipse安装svn插件

1、从官网下载site-1.6.10.zip文件,网址是:subclipse.tigris.org,2、从中解压出features与 plugins文件夹,复制到/Applications/MyEclipse10/MyEclipse 10.app/Contents/Profile/dropins里面,其它的*.xml文件不要。3、删除\Contents\Eclipse\configur

2015-09-05 17:14:09 1948

jstl的jar包

java项目所需要的jar包,大家需要可以进行下载和使用!

2015-03-02

空空如也

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

TA关注的人

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