自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 akka介绍

1、概述Akka是JAVA虚拟机JVM平台上构建高并发、分布式和容错应用的工具包和运行时。Akka用Scala语言写成,同时提供了Scala和JAVA的开发接口。Akka处理并发的方法基于Actor模型。在Akka里,Actor之间通信的唯一机制就是消息传递。Akka框架支持两种语言Java和Scala。Akka是一个运行时与编程模型一致的系统。2、Akka中的Actor是什么Actor本质上就是接

2017-03-06 19:25:27 3166

转载 Spring框架中获取连接池的四种方式

1、连接池概述  数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。      数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没

2017-02-28 20:28:12 11435

原创 Jackson详细介绍

Jackson是基于Java平台的一套数据处理工具,被称为”最好的Java Json解析器”。它可以使我们高效、简便的处理json字符串。1、Jackson的版本以及maven依赖重点内容<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId

2017-02-28 20:18:16 8951 2

原创 多线程——java实现多线程的方式

1、线程和进程 要理解多线程,我们必须首先弄清楚线程和进程的概念。在上一篇博文总已经较为详细的介绍过,本篇博文只做总结。进程就是运行的程序,每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1–n个线程。线程是程序执行的最小单位,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。线程和进程可以分为五个阶段:创建、就绪、运

2016-12-10 18:58:06 976

原创 多线程——java线程方法详细介绍

1、线程调度 1.1 调整线程优先级 Java线程有优先级,优先级高的线程会获得较多的运行机会。Java线程的优先级用整数表示,取值范围是1~10,Thread类有以下三个静态常量:static int MAX_PRIORITY:线程可以具有的最高优先级,取值为10。static int MIN_PRIORITY:线程可以具有的最低优先级,取值为1。static int NORM_PRIO

2016-12-10 16:15:04 1992

转载 Java虚拟机(七)——垃圾收集GC介绍

1、概述本文的目的是用简单的方式向你介绍GC。在学习GC前,应该知道一个技术名词:“stop-the-world“。无论你选择哪种GC算法,Stop-the-world都会发生。Stop-the-world意味着JVM停止应用程序,而去进行垃圾回收。当stop-the-world发生时,除了进行垃圾回收的线程,其他所有线程都将停止运行。被中断的任务将在GC任务完成后恢复执行。GC调优往往意味着减少s

2016-11-16 19:56:23 455

原创 java解析excel文件为txt文件

java解析excel文件,并将其以建松格式保存到txt文件中。 1、maven配置<!-- poi--><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version></dependency><!-- jsckson --><depende

2016-11-09 19:04:09 2918

原创 spring-data-redis简介

1、简述 Redis是一种nosql数据库,在开发中常用做缓存。Jedis是Redis在Java中的redis- client。spring把专门的数据操作独立封装在spring-data系列中,spring-data-redis自然是针对Redis的独立封装了。2、使用 2.1 pom.xml<!-- redis --> <dependency> <groupId>redis.c

2016-11-02 18:41:30 2626

原创 POI对Excel操作——java读取Excel数据

在上篇博文Java创建数据到Excel——POI对Excel操作我们介绍了java poi创建数据保存到Excel文件,本篇博文我将介绍如何读取Excel中的数据。下面看java代码:import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apac

2016-11-01 18:39:26 738

原创 POI对Excel操作——java保存数据到Excel

1、常见的java操作Excel API介绍 1.1 Java Aspose Cells Java Aspose Cells是一种纯粹的Java授权的Excel API,开发和供应商Aspose发布。这个API的最新版本是8.1.2,是一个丰富而厚重的API(普通Java类和AWT类的组合)设计,可以读、写和操纵电子表格Excel的组件。此API常见用途如下: (1)Excel报表,建立动态E

2016-10-28 18:51:54 6608

原创 存储过程

1、存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。简单来说存储过程可以说是一个记录集,它是由一些SQL语句组成的代码块,这些SQL语句代码像一个方法一样来实现一些功能(对单表或多表的增删改查),然后再给这个

2016-10-22 11:26:43 1443

原创 Java线程锁(二)——循环打印ABC

1、经典例子   对Object.wait(),Object.notify()的应用最经典的例子,应该是三线程打印ABC的问题了吧,这是一道比较经典的面试题(网上关于本面试题很多),题目要求如下:   建立三个线程,A线程打印10次A,B线程打印10次B,C线程打印10次C,要求线程同时运行,交替打印10次ABC。这个问题用Object的wait(),notify()就可以很方便的解决。代码如下

2016-10-12 22:21:05 1191 2

原创 Java线程锁(一)——wait(),notify(),synchnorized使用

1、synchronized关键字    JAVA的进程同步是通过synchronized()来实现的。需要说明的是,JAVA的synchronized()方法类似于操作系统概念中的互斥内存块,在JAVA中的Object类型中,都是带有一个内存锁的,在有线程获取该内存锁后,其它线程无法访问该内存,从而实现JAVA中简单的同步、互斥操作。   理解了这个,就能理解为什么synchronized(

2016-10-12 22:02:41 2133

原创 Java虚拟机(六)——内存溢出和内存泄露分析

关于内存溢出和内存泄露在我以前的博文Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式中做过大概介绍,此处在进行补充。 1、内存溢出 内存溢出:OOM(OutOfMemoryError)异常,即程序需要内存超出了虚拟机可以分配内存的最大范围。在Java 虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他区域都可能发生异常。2、内存溢出区域 常见的

2016-10-11 08:48:43 2667

原创 Java虚拟机(五)——垃圾收集机制

1、垃圾回收介绍    Java虚拟机内存划分讲到了Java 内存运行时区域的各个部分,其中程序计数器,虚拟机栈,本地方法栈三个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来是就已知了。因此这几个区域的内存分配和回收都具有确定性,在这几个区域就需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟

2016-10-11 08:43:31 3956

原创 Java序列化与反序列化

1、Java序列化与反序列化(what) Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。序列化是Java中实现持久化存储的一种方法。 2、为什么需要序列化与反序列化(why) 我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等,而这些数据都会以二进制序列的形式在网络上传送。

2016-10-09 21:44:58 570

原创 Java虚拟机(四)——对象的创建、存储和定位

1、对象的创建   Java是一门面向对象的编程语言,Java 程序运行过程中无时无刻都有对象被创建出来,在语言层面上,创建对象(例如克隆,反序列化)通常仅仅是一个new关键字而已,例如下面的语句。Object obj = new Object();其实在在虚拟机中,当遇到上述语句时,其执行过程大致要经历下面几个阶段。1.1 类加载检查   虚拟机遇到一条new指令时,首先将去检查这个指令的参

2016-09-28 08:49:15 534

原创 Java虚拟机(三)——类加载机制

1、概述   虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被Java虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。   类从被加载到虚拟内存中开始,到卸载内存为止,它的整个生命周期包括了:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initializa

2016-09-28 08:44:43 547

原创 Java虚拟机(二)——Java堆内存划分

1、堆内存介绍 对于大多数应用来说,Java堆(Java Heap)是Java 虚拟机所管理的内存中最大的一块。此内存区域的唯一目的就是存在对象实例,几乎所有的对象实例都在这里分配内存。这个区域也是Java垃圾收集器管理的主要区域,因此很多时候也被称为”GC堆”。所以堆内存非常重要,我们有必要去了解它的细节,这对我们深入了解Java 垃圾回收机制非常有帮助。2、堆内存划分 在 Java 中,堆被

2016-09-27 08:54:24 727

原创 Java虚拟机(一)——Java内存区域划分

1、介绍 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。1.1 内存区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。Java虚拟机规范将JVM所管理的内存分为以下几个运行时数据区:程序

2016-09-27 08:50:21 2684

原创 hbase参数配置

1、hbase参数配置 配置文件:hbase-site.xml和hbase.tmp.dir (1)本地文件系统tmp目录,一般配置成local模式的设置一下,但是最好还是需要设置一下,因为很多文件都会默认设置成它下面的: 线上配置 hbase.tmp.dir /mnt/dfs/11/hbase/hbase-tmp 默认值: java.io.tmpdir/hb

2016-09-25 17:05:30 1210

原创 ElasticSearch插入数据优化

1、多线程程序插入 可以根据服务器情况开启多个线程index,速度可以提高n倍, n>=2。如在上篇博文《将Mysql数据导入到ElasticSearch集群》示例的代码,开启了10个线程。但是可以线程也不是越多越好,要根据你磁盘的io,cpu等而定。2、设置复制分片数量 如果有多台机器,可以以每台设置n个shards的方式,根据业务情况,可以考虑取消replias(复制分片),等数据插入结束以

2016-09-12 08:48:18 5760

原创 将Mysql数据导入到ElasticSearch集群

一星期没有写博文了,只是因为最近领导交代了一项艰巨的任务,让我无暇顾及其他。将mysql数据库中的数据搬到我们的ES集群中。mysql数据是我们从阿里那边拉过来临时存放数据的地方,现在要将其存储到我们的集群中。说道这里,可能读者会觉得,这有什么难度。是的,如果数据量很少,几百万或者上千万确实多花点时间传送,就可以了。可是,如果是二十几亿的数据量呢,怎么办?领导给了我一星期时间,包括我写代码,调试速度

2016-09-10 10:54:34 1509

原创 ElasticSearch基本概念介绍(二)

1、特点 (1)Elasticsearch致力于隐藏分布式系统的复杂性。以下这些操作都是在底层自动完成的:1)将你的文档分区到不同的容器或者分片(shards)中,它们可以存在于一个或多个节点中。 2)将分片均匀的分配到各个节点,对索引和搜索做负载均衡。 3)冗余每一个分片,防止硬件故障造成的数据丢失。 4)将集群中任意一个节点上的请求路由到相应数据所在的节点。 5)无论是增加节点,还是移

2016-09-10 10:48:08 979

原创 ElasticSearch基本概念介绍(一)

1、概述 Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document)。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在Elasticsearch中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。ES比传统关系型数据库,就像如下:

2016-09-05 20:06:03 2211

原创 多线程中ThreadLocal的理解

1、理解ThreadLocal 在多线程开发的过程中可能会有这样的需求,有些变量或者对象在同一个线程中是共享的,在不同的线程中是隔离的,如何实现? (1)下面的这个例子是演示了在多线程的环境下不同的业务对象使用相同的对象数据时出现了错乱:public class ThreadSingleton { public static Integer data; public static

2016-09-04 16:07:24 689

原创 mysql流式读取大数据量与批量插入数据分析

1、流式读取 java从mysql读取大量数据,当结果从myql服务端返回后立即对其进行处理,这样应用就不需要大量内存来存储这个结果集。此时应该用流式读取。PreparedStatement ps = connection.prepareStatement("select .. from ..", ResultSet.TYPE_FORWARD_ONLY, ResultSe

2016-09-04 14:48:45 6433

原创 ElasticSearch的增删改查API介绍

1、基本用法 Elasticsearch集群可以包含多个索引(indices),每一个索引可以包含多个类型(types),每一个类型包含多个文档(documents),然后每个文档包含多个字段(Fields),它是面向文档型的储存。ES比传统关系型数据库,就像如下:Relational DB -> Databases -> Tables -> Rows -> ColumnsElasticsear

2016-09-04 14:22:47 3767

原创 Elasticsearch的Bulk API使用

1、Elasticsearch的Bulk API允许批量提交index和delete请求。如: (1)用法1BulkRequestBuilder bulkRequest = client.prepareBulk();bulkRequest.add(client.prepareIndex("index1", "type1", "id1").setSource(source);

2016-09-04 14:07:33 19399

原创 读取海量数据到文件并拆分排序

/** * Created by xxx on 2016/8/29. */import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; i

2016-09-04 13:40:52 1398

原创 将Mysql数据导入到ElasticSearch集群

一星期没有写博文了,只是因为最近领导交代了一项艰巨的任务,让我无暇顾及其他。将mysql数据库中的数据搬到我们的ES集群中。mysql数据是我们从阿里那边拉过来临时存放数据的地方,现在要将其存储到我们的集群中。说道这里,可能读者会觉得,这有什么难度。是的,如果数据量很少,几百万或者上千万确实多花点时间传送,就可以了。可是,如果是二十几亿的数据量呢,怎么办?领导给了我一星期时间,包括我写代码,调试速度

2016-09-04 11:23:38 17013 16

原创 Java泛型详解

1、引言   我们知道,使用变量之前要定义,定义一个变量时必须要指明它的数据类型,什么样的数据类型赋给什么样的值。假如我们现在要定义一个类来表示坐标,要求坐标的数据类型可以是整数、小数和字符串,例如:x = 10、y = 10x = 12.88、y = 129.65x = "hello"、y = "world"针对不同的数据类型,除了借助方法重载,还可以借助自动装箱和向上转型。

2016-08-22 19:58:29 1900

原创 设计模式之单例模式

1、单例模式的特点 (1)单例类只能有一个实例;单例类必须自己创建自己的唯一实例;单例类必须给所有其他对象提供这一实例。 (2)单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spool

2016-08-22 08:51:24 355

原创 java反射机制

1、java反射   Class类与java.lang.reflect类库一起对反射的概念进行了支持。该类库包含了Filed,Method和Constructor类(每个类都实现了member接口)。这些类型的对象是由jvm在运行时创建的,用来表示未知类里对应的成员。这样可以使用Constructor创建新的对象,用get()和set()方法读取和修改Field对象关联的字段,用invoke()方

2016-08-16 19:14:28 366

原创 java中类的加载顺序介绍(ClassLoader)

1、ClassNotFoundExcetpion 我们在开发中,经常可以遇见java.lang.ClassNotFoundExcetpion这个异常,今天我就来总结一下这个问题。对于这个异常,它实质涉及到了java技术体系中的类加载。Java的类加载机制是技术体系中比较核心的部分,虽然它和我们直接打交道不多,但是对其背后的机理有一定理解有助于我们排查程序中出现的类加载失败等技术问题。

2016-08-14 10:44:15 62278 10

原创 详解Java内存分配

1、内存分配   我们知道,一个Java程序是运行在JVM(Java Virtual Machine,Java虚拟机)上的,我们可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM中进行的,JVM是内存分配原理的基础与前提。

2016-08-14 09:55:11 523

原创 详解java异常的处理

1、JAVA异常   异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通 过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错误条件。当条件生成时,错误将引发异常。

2016-08-09 08:58:23 1485

原创 JDBC连接数据库详细介绍

1、JDBC连接数据库步骤介绍   在我们的开发中,必不可少要与数据库打交道。今天我将介绍一下,我们经常用的JDBC连接关系型数据库的例子。创建一个以JDBC连接数据库的程序,包含以下步骤: (1)加载JDBC驱动程序

2016-08-06 17:55:55 687

原创 java api从高德地图获取某个位置的经纬度

1、代码展示import com.fasterxml.jackson.databind.JsonNode;import com.ning.http.client.AsyncHttpClient;import com.ning.http.client.AsyncHttpClientConfig;import com.ning.http.client.ListenableFuture;

2016-08-05 08:51:47 18422 6

原创 java中根据两个位置的经纬度计算距离

1、代码 /** * 根据两个位置的经纬度,来计算两地的距离(单位为KM) * 参数为double类型 * long1 位置1经度 * lat1 位置1纬度 * long2 位置2经度 * lat2 位置2纬度 */ public class Distance { private static final double EARTH_RAD

2016-08-05 08:42:47 7017

空空如也

空空如也

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

TA关注的人

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