自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2016-09-28 08:49:15 546

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

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

2016-09-28 08:44:43 551

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

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

2016-09-27 08:54:24 773

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

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

2016-09-27 08:50:21 2709

原创 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 1292

原创 ElasticSearch插入数据优化

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

2016-09-12 08:48:18 5789

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

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

2016-09-10 10:54:34 1532

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

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

2016-09-10 10:48:08 1004

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

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

2016-09-05 20:06:03 2235

原创 多线程中ThreadLocal的理解

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

2016-09-04 16:07:24 705

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

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

2016-09-04 14:48:45 6573

原创 ElasticSearch的增删改查API介绍

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

2016-09-04 14:22:47 3790

原创 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 19478

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

/** * 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 1415

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

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

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

原创 Spring AOP介绍

1、简介 spring提供了两个核心功能,一个是IoC(控制反转),另外一个便是Aop(面向切面编程),IoC有助于应用对象之间的解耦,AOP则可以实现横切关注点(如日志、安全、缓存和事务管理)与他们所影响的对象之间的解耦。AOP主要包含了通知、切点和连接点等术语,下面分别介绍。1.1 通知(Advice) 通知定义了切面是什么以及何时调用,何时调用包含以下几种:Before 在方法被调用之前调

2016-09-29 18:53:44 491

原创 Spring IoC介绍

在前一篇文章中,我们讲了java web项目搭建,现在看下spring ioc在java中的运用,开发工具为Intellij Idea。1、简介 IoC(Inversion of Control)通常称为控制反转,是Spring框架的核心。即通过Spring容器控制对象之间的依赖关系,而不是对象自己通过new的方式去创建依赖的对象,相对于主动去创建对象,这种失去对对象的控制便叫做控制反转,控制反转

2016-09-29 18:43:17 444

原创 Java web项目搭建

1、简介 本篇博文我将介绍利用Spring MVC+Spring+Hibernate的架构,如何去搭建一个java web项目。2、Spring MVC+Spring+Hibernate结构 2.1 Spring MVC Spring MVC的职责是作为web层框架,实现了我们常见的MVC模式。Spring 作为服务层,利用自身特性IOC、AOP,提供数据从DAO层到Web层的桥梁作用。

2016-09-29 08:52:18 644

原创 Hibernate查询、连接池、二级缓存

1、查询概述 (1)Get/load主键查询。 (2)对象导航查询。 (3)HQL查询, Hibernate Query language hibernate 提供的面向对象的查询语言。 (4)Criteria 查询, 完全面向对象的查询(Query By Criteria ,QBC)。 (5)SQLQuery, 本地SQL查询。 缺点:不能跨数据库平台, 如果该了数据库,sql语

2016-09-25 15:01:39 400

原创 分页查询SQL

1、mysql中的分页查询select * from ddmcontent limit offSet,pageSize;pageSize;--每页显示几条数据pageCount;--共有多少页totalCount;--共有多少条数据currentPage;--当前是第几页offset;--偏移量,从第几条数据开始select * from ddmcontent limit 3,10;--从第

2016-09-23 08:51:22 3179

原创 Java实现冒泡排序、快速排序、选择排序、插入排序和归并排序

1、常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,归并排序等。1.1 冒泡排序   冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。/** * 冒泡法排序<br/>

2016-09-22 09:02:51 579

原创 java中的throw和throws区别

1、throws throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象。如下面例子所示:public class Shoot { static void pop() throws NegativeArraySizeException { //定义方法并抛出Negative

2016-09-21 08:57:58 488

原创 HashCode详解

1、概念   通常想查找一个集合中是否包含某个对象,就是逐一取出每个元素与要查找的元素进行比较,当发现某个元素与要查找的对象进行equals方法比较的结果相等时,则停止继续查找并返回肯定的信息,否则返回否定的信息。如果一个集合中有很多元素譬如成千上万的元素,并且没有包含要查找的对象时,则意味着你的程序需要从该集合中取出成千上万个元素进行逐一比较才能得到结论,于是,有人就发明了一种哈希算法来提高从集

2016-09-20 19:34:46 2140

原创 java定时器用法

1、代码示例//继承TimerTaskpublic class TestTimerTask extends TimerTask{ public void run() { while (true) { boolean result = getFlag(); if (result) { break;

2016-09-20 19:12:03 357

原创 js数组去重的几种常用方法总结

1、第一种是比较常规的方法 思路: (1)构建一个新的数组存放结果 (2)for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比 (3)若结果数组中没有该元素,则存到结果数组中Array.prototype.unique1 = function(){ var res = [this[0]]; for(var i = 1; i < this.length; i

2016-09-13 08:52:53 458

原创 有状态对象和无状态对象

1、线程安全   要搞清楚有状态对象和无状态对象,首先需要弄清楚线程安全的问题。如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,那么就是线程安全的。   或者说,一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不

2016-09-10 16:02:09 7842 9

原创 过滤器Filter在项目中应用详解

1、过滤器的概念   Java中的Filter 并不是一个标准的Servlet ,它不能处理用户请求,也不能对客户端生成响应。 主要用于对HttpServletRequest 进行预处理,也可以对HttpServletResponse 进行后处理,是个典型的处理链。  过滤链的好处是,执行过程中任何时候都可以打断,只要不执行chain.doFilter()就不会再执行后面的过滤器和请求的内容。

2016-09-10 14:43:33 1266

原创 过滤器Filter介绍

1、Filter简介   Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源,例如Jsp,Servlet,静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。   Servlet API中提供了一个Filter接口

2016-09-10 12:32:52 524

原创 JavaScript对象介绍

1、JavaScript对象 (1)作为对象方法访问<p id="demo"></p><script> var person = { firstName: "John", lastName : "Doe", id : 5566, fullName : function() { return

2016-09-10 11:23:49 870

空空如也

空空如也

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

TA关注的人

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