自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

孤落

大漠孤烟直,长河落日圆。

  • 博客(48)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 HBase数据达到Memstore的过程

往HBase表中写入数据的主要流程。1 RegionServer启动的初始化工作启动RegionServer进程的入口类是HRegionServer,通过执行该类的main方法开始。其简单流程如下://通过main方法的执行流程//main()new HRegionServerCommandLine(regionServerClass).doMain(args);//doMainint ret = ToolRunner.run(HBaseConfiguration.create(), th

2021-04-21 20:21:59 315

原创 Java程序堆内存使用率很高的一般分析思路

当Java程序中堆内存使用率一直很高,且不下降时,如何定位是那一段程序出现了问题?1 Demo程序程序的主要思路就是,每发送一次请求,就会往ConcurrentHashMap中put一个value长度为1k的KV对。这样随着请求的不断增加,势必会造成程序中的内存资源被耗尽,具体表现就是Java程序的老年代使用率超过90%,程序出现卡死情况。主要代码如下://controller@RestController@RequestMapping("/test")public class TestCon

2021-04-20 20:20:24 5321

原创 Lucene创建索引源码分析

当用户往Lucene中添加一个文档时,Lucene会基于该文档创建倒排索引,具体是以文档中的字段Field为单位进行逐个处理的。大致流程就是对文档中的内容以Field为单位,进行分词处理,并基于处理后的分词(term)建立倒排索引。lucene中不管对文档,还是对字段进行处理,实际上都是在DefaultIndexingChain中处理的。1 创建DefaultIndexingChain对象DefaultIndexingChain对象在整个索引创建阶段仅存在一个。在创建DefaultIndexingCh

2020-09-16 09:24:02 555

原创 基本数据类型和引用型数据类型的内存分布

Java按照数据类型的不同,将数据分为基本数据类型和引用数据类型1 基本数据类型和引用型数据类型其中基本数据类型有8中:int char short byte long double boolean float除了这8种之外的都是引用型数据类型数据类型的不同,JVM对其的存储方式也是不同的,对于基本数据类型,在内存中声明一个空间a,则内存空间中存放的就是基本数据的实际值而针对引用型数据类...

2019-10-17 21:08:29 1117

原创 must和should联合使用失效问题

本文参考的是文章是:ES 的shoud和must共用不生效问题 但是这篇博文中最终给出的DSL语法是错误的在练习的时候,有这样一个需求:查询姓氏为张,且住址是北京或者上海的人员信息这个时候会想到使用bool查询:{ "query":{ "bool":{ "must":[ { ...

2019-10-11 17:30:13 1408

原创 ES基本操作

1 查询默认插叙,它会查询索引中的所有文档,并且默认返回10个文档给用户curl -X PUT node:9200/bank/_search?pretty相当于SQL中的查询表中的所有内容select * from table;query查询查询往往会跟随一定的条件,这个时候,可以使用ES的DSL查询语言//查询所有文档,并返回10个curl -X PUT node:9...

2019-09-29 10:02:18 1877

原创 select和epoll

select和epoll都是监控文件句柄的IO动作是否准备就绪的实现方式,区别在于才大多数情况下后者比前者更加高效。之所以造成这种情况,是由于两者的实现机制不同。1 select监控句柄IO动作的方式select内部维护了一个数组,这个数据中记录的都是文件句柄。select通过遍历这个数据,来监控有哪些句柄的IO动作已经准备就绪。1 在遍历数组过程中,如果发现有句柄准备就绪,那么就会返回,通...

2019-08-28 09:50:19 170

原创 Namenode学习

1 概述HDFS是一个主从架构,其核心就是Namenode,Namenode主要作用是存储整个集群的元数据信息,包括存储文件的详细信息、每个文件的Block及副本在Datanode上的位置;Namnode还被用于协调客户端对文件的访问,记录文件的改动,以及客户端对文件的操作历史。为了节约资源,Namenode不记录客户端对HDFS中文件的查询操作。Namenode作为HDFS中的Master,...

2019-05-30 09:46:35 396

原创 HDFS学习——基本概念

HDFS是Hadoop的核心之一,是一个分布式文件系统。所谓分布式文件系统,就是多个节点通过网络形成一个整体系统,它和单机文件系统的最大区别在于,可以存储一个远超单机存储能力的文件。其存储方式大致就是:把文件分隔成若干个份,存放在不同的节点上,再由一个角色(HDFS中是Namenode)负责记录文件的某一份存放在哪个节点上。当用户想要读取文件的时候,首先会和Namenode交互,获取文件数据的具...

2019-05-20 20:11:48 283

原创 Hadoop 2.7.1集群搭建

文章目录1配置hosts各个主机2 免密登录3 安装jdk4 安装hadoop5 测试hadoop集群github:hadoop集群搭建这里搭建hadoop集群,使用了三台电脑,分别是:192.168.0.11192.168.0.12192.168.0.13各个主机名分别是: master,salve1,salve21配置hosts各个主机修改hosts文件:127.0.0.1 ...

2019-02-25 14:01:55 427

原创 Java 动态代理

Java 动态代理1 普通代理代理模式是经典的设计模式,主要是:在客户不能够直接访问到目标对象的时候,设计一个代理对象(该代理对象可以直接访问真实对象),客户借助于代理对象去访问真实对象;或者是在调用目标方法的时候,想添加一些额外的操作,但是有不想改变原有的业务逻辑。代理模式实际上屏蔽了内部访问的细节,客户不管你内不是如何运行的,只要返回给我最终的结果即可。代理模式应用还是非常广泛的,Spri...

2018-09-24 13:47:17 113

原创 netty(六) ByteBuf学习.md

ByteBuf学习基于Java Nio的网络通信,必须依赖于ByteBuffer,从程序实际上是借助于ByteBuffer来与Channel进行交互的,可以向Channel读写数据,但是Java Nio原生的ByteBuffer存在一些问题。ByteBuffer有两种模式:读模式和写模式,写模式切换到读模式的时候,必须显示地调用flip()方法,否则从缓冲区中读数据会出现异常。这就要求程序猿必...

2018-09-17 22:23:17 1929

原创 netty(五) ChannelPipeLine和ChannelHandler学习

ChannelPipeline和ChannelHandler学习根据java NIO思想,不管是从文件中读写数据还是从网络中读写数据,都是借助于一个Channel来进行的。 即:File <–> Channel <–> 程序 在netty框架中,netty将Channel的数据管道(Channel中包含很多信息)抽象成一个ChannelPipeline,用于描述数据...

2018-09-12 22:46:46 547

原创 netty(四)ServerBootstrap学习

ServerBootstrap学习github:ServerBootstrap学习ServerBootstrap是一个启动辅助类,和普通Java网络编程一样,它的服务端和客户端所有的启动类是有一点差别的。Java网络编程中服务端用的是ServerSocket,而客户端使用的是Socket。和这个进行类比,netty框架的服务端和客户端使用的启动类辅助分别是:ServerBootstra...

2018-09-08 16:57:39 343

原创 netty(三) NioEventLoop再学习

NioEventLoop再次学习昨天开始学习了NioEventLoop,今天详细看了NioEventLoop的底层实现。NioEventLoop的继承关系如图所示: 从图中可以看出来,NioEventLoop的终极父类是Executor,也就是是说NioEventLoop是一个线程池(但是它也可以看做一个线程)。在程序中并没有使用NioEventLoop,而是通过使用NioEvent...

2018-09-07 22:36:14 241

原创 netty(二) NioEventLoop学习

EventLoop学习昨天我开始学习netty框架,写了一个小例子,今天学习下其中比较重要的技术之一:EventLoop。netty是基于Java NIO的框架,昨天学习的时候(包括前天学习Java NIO的时候)一直在想,当服务器线程没有客户端连接请求或者通道中没有IO操作的时候,就会陷入阻塞,一旦有感兴趣的动作发生的时候,线程就会被重新唤醒,继续执行,那么阻塞的线程为什么能够在事件发生...

2018-09-06 23:33:33 286

原创 netty 入门

netty 入门guthub: netty 入门使用Java NIO就可以进行高性能网络编程,但是利用jdk原生的NIO API的话,在编程的时候必须很小心,需要自己来规避一些可能的异常情况,如:epoll bug问题就是其中之一,理论上想Selector注册的所有Channel都没有IO操作的话,Selector.select()将会被阻塞,直至有Channel有IO操作,但是...

2018-09-05 19:47:23 640 1

原创 Java NIO

Java NIOgithub:Java NIO: https://github.com/guluo2016/studyNote/blob/RPC/RPC/java%20NIO.md昨天学习的Java IO是传统的IO,使得程序与存放在磁盘上的文件能够很方便的进行交互。但是它也存在一定的问题,问题的根源在于速度,由于磁盘IO速度远远小于CPU处理速度,这导致程序在进行IO操作的时候,不得不...

2018-09-05 19:44:52 448

原创 Java IO

Java IOgithub:Java IO: https://github.com/guluo2016/studyNote/blob/RPC/RPC/java%20IO.md程序运行过程中不可避免的需要同磁盘打交道,有的时候资源可能还不在本地,这个时候还可能借助于网络,不管是和本地磁盘还是通过网络与远程磁盘交互,有必须用到IO,因此Java IO还是非常重要的。 另外,基于Java ...

2018-09-05 19:43:02 143

原创 InnoDB逻辑逻辑存储结构及B树索引

1 mysql中的逻辑存储结构2 数据结构2.1 二分查找2.2 二叉排序树2.3 平衡二叉树2.4 B树和B+树3 B树索引1 mysql中的逻辑存储结构1 表空间基于InnoDB存储引擎的mysql数据库,存放在数据库中的数据实际上是存放在表空间中的。对于同一个基于InnoDB存储引擎的mysql实例,这个表空间是所有数据库共享的,存放在数据库...

2018-06-26 20:52:34 1016

原创 Servlet的生命周期

1 Servlet实例化2 业务处理3 注意4 servlet死亡5 总结github上阅读1 Servlet实例化实例化Servlet的时机: - 启动web容器的时候 - 启动web容器后规定的时间内 - 第一次请求该Servlet的时候当在web.xml文件中配置`时,会在规定的时间内实例化Servlet;当没有配置该属性时,在第一次请求该...

2018-06-08 18:28:55 196

原创 Spring MVC中的DispatcherServlet实现逻辑视图到实际视图映射的过程

github查看1 初始化视图解析器2 DispatcherServlet转发请求获得处理结果3 获取视图对象3.1 获取视图对象3.2 得到实际视图Spring MVC的大致流程:在Spring MVC框架下,请求通常会被拦截交给DispatcherServlet进行处理,DispatcherServlet会根据配置信息(HandlerMappin...

2018-06-06 20:49:04 2457 2

原创 Spring MVC中的适配器模式

Spring MVC中的适配器模式主要用于执行目标Controller中的请求处理方法。适配器模式适配器的类图如下所示: 在Spring MVC中,DispatcherServlet作为用户,HandlerAdapter作为期望接口,具体的适配器实现类用于对目标类进行适配,Controller作为需要适配的类。为什么要在Spring MVC中使用适配器模式?Spring MVC中

2018-01-21 00:52:52 3925 5

原创 基于ssm框架的小例子

看了好几天的Spring和Mybatis了,现在试着写一个基于SSM(Spring,SpringMVC,Mybtis)的小例子。 写在前面: 例子比较简单:从浏览器发出一个请求,由DispatcherServle进行拦截,交给对应处理器进行处理(controller),接着调用service层方法进行具体的业务逻辑处理,期间会用到数据库中的数据,因此会通过dao层与数据库进行交互,与数据库交互

2018-01-20 14:31:57 2881

原创 Mybatis启动源码分析

重新修改:2018.1.27更新根据上一篇博文第一个Mybatis的例子为例,分析Mybatis在启动过程找那个都干了什么事情。 创建SqlSessionFactory实例 每一个Mybatis应用都是以一个SqlSessionFactory实例为中心的(官网上的话),因此要使用Mybatis框架的功能,必须首先通过SqlSessionFactoryBuilder获得该实例,获取方法如下:

2018-01-18 16:57:24 330

原创 第一个Mybatis的例子

写在前面 利用maven创建的Mybatis; 数据库名字为mybatis; 数据表为users,表的结构如图所示; 创建Mybatis实例 1.配置Mybatis所以需要的架包dependency> groupId>mysqlgroupId> artifactId>mysql-connector-javaartifactId> version>5.1.44ver

2018-01-17 14:05:43 233

原创 利用Java创建带有多级目录的文件

今天看到有位博主“m0_37905429的博客”写了利用Java生成多级目录文章:java实现自动生成多级目录,文章中利用递归方式创建多级目录,目录名随机生成。 在这里我利用Java创建带有多级目录的文件,其中目录可以有自己定义。下面就是代码://创建多级目录public File createMultilevelDirectory(String[] directories,String

2018-01-10 20:32:24 5559

原创 HDFS的基本操作(增删查)

本片文章主要介绍利用FileSystem API对HDFS进行相关操作,如增删查等——HDFS不支持对文件在任意位置修改。1 从HDFS中读取数据从HDFS中读取数据,主要是从存放在HDFS中的文件中读取数据,可以利用FileSystem中的open()方法得到一个文件的输入流,从文件输入流中获取文件的数据。 具体步骤1)获取FileSystem的实例 2)利用open()方法获取文件输

2018-01-05 20:09:36 906

原创 Linux中的Ext2文件系统

之所以要写Ext2文件系统,是因为最近一直在看Hadoop,发现HDFS和Ext2文件系统非常类似,加上以前已经了解Ext2文件系统,所以,打算先把Ext2的思想梳理一遍。 1 Ext2综述在Linux操作系统中,一切皆文件。Linux文件最重要的特性:文件权限,文件属性和文件数据。其中文件权限如rwx,文件属性如文件的大小文件所有者等,文件数据是指文件中存放的数据信息。 在Ext2文件系

2017-12-27 22:01:49 389

原创 利用MapReduce统计随机数个数

刚刚开始学习MapReduce框架,试着利用MapReduce写一个程序用于统计生成的各个随机数个数,下面介绍各个步骤,以及在MapReduce框架中的运行流程。

2017-12-27 14:01:13 679

原创 MapReduce的执行流程

一个MapReduce的作业执行流程是:1)代码编写;2)作业配置;3)作业提交;4)Map任务的分配和执行;4)处理中间结果;5)Reduce任务的分配与执行;6)作业完成。具体如图1-1所示。下面以一个简单的单词计数例子对各个步骤做一个详细的介绍。 1代码编写及配置代码编写及配置主要是在客户端进行。1)代码编写主要是编写我们需要的map函数和Reduce函数。map函数代码如下:@Overri

2017-12-27 11:42:41 13398 2

原创 Spring AOP

本文参考JavaWeb编程实战宝典AOP解释AOP——面向方面编程OOP(面向对象编程)有时候会存在一定的缺点,比如说有时候我需要监控一个方法的被调用情况,在该方法内加入了特定的功能——使其能够将该方法的被调用情况记录下来,但是这个功能不是该方法所关注的主要业务。当加入了很多该方法所不关注的业务时,就会使得该方法“变味”了。为了将方法所关注的主要业务和次要业务区分开,使程序代码变得不那

2017-02-22 21:18:30 195

原创 迷宫问题

迷宫问题java代码实现

2016-12-30 15:45:59 467

原创 static关键字

static关键字可以修饰变量,方法以及内部类,被static修饰的部分可以使用类名直接调用,而不需要通过实例化对象来调用。被static修饰的部分会被存储在JVM的方法区中。       在这里要特别主要static修饰的属性,它属于类属性,并且由于其存放在方法区中,而方法区又属于线程共享区域,所以如果使用多线程来处理用static修饰的属性的时候,要特别注意同步问题;另外一个方面也要注意,

2016-11-05 14:56:41 203

原创 简单工厂、工厂方法与抽象工厂

简单工厂模式、工厂方法模式和抽象工厂模式的区别

2016-10-30 20:38:43 206

原创 <init>()方法

()方法,是虚拟机自己调用的,不在我们的程序中显性表示。      那么()的作用是什么?在什么时候被调用?实际上,JVM为每一个类的每一个构造方法都创建一个()方法,用于初始化实例变量。我们用一个例子来进行分析:public class Test{ private String name; private int age; public Test(){ } pu

2016-10-22 19:52:30 5342

原创 通过java自带的工具和linux命令来分析死锁

当我们编写java程序时,由于不合理的设计,可能会出现程序死循环/死锁问题。下面我就以程序的死锁为例,来进行分析我编写的测试类是Run类1.查找Run类对应的PID,使用命令:ps -ef | grep Rungl 6765 4121 0 13:52 ? 00:00:00 /opt/java/jdk1.8.0_101/bin/java -Dfil...

2016-10-15 14:04:48 2203

原创 整合Struts2,Hibernate和Spring的一个简单例子

先创建一个web项目IntegrationDemo;通过MyEclipse添加Hibernate配置(网上有很多教程,再次不多做赘述)。手动配置Struts2和Spring,只需添加如下包即可:在src文件夹分别创建applicationContext.xml文件和struts.xml文件;接着首先编写Bean,如下:package com.entity;/** *

2016-07-03 14:13:35 351

原创 Java异常处理

参考博客:http://blog.csdn.net/hguisu/article/details/6155636Java把所有的非正常情况分为两类:Error和Exception;其中Error是程序自身无法处理的错误;Exception是程序自身可以处理的异常。这两类非正常情况继承同一个父类:Throwable类;Java的异常类之间的关系(图片来自网上):Java通常将

2016-06-20 21:58:28 300

原创 Struts2的类型转换器

(本文的参考资料是Java Web开发 应用详解 独门架构)首先我们要明白一点:在Web应用中,所有的请求参数都是以字符串形式的,但是有时候我们需要获取这些参数,进行用Java进行处理,这时,就需要进行类型转换了。Struts2的类型转换有三种方式:内置类型转换器;ognl类型转换器;Struts类型转换器这三种方式各有优缺点,在这里就不多做比较了。现在我以Stru

2016-05-24 17:33:52 389

hadoop权威指南第4版(中文版)

hadoop权威指南第4版(中文版),带目录,比较清晰的。

2019-02-26

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

TA关注的人

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