自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (3)
  • 收藏
  • 关注

原创 (1)flume-1.7.0 安装、配置、启动

flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力 。flume的数据流由事件(Event)贯穿始终。事件是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些Event由Agent外部的Source生成,当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中

2017-12-29 16:46:10 1343

原创 elasticsearch2.1.0 curl 相关操作命令(二)

es curl 命令相关操作

2017-12-19 18:47:17 422

原创 elasticsearch2.1.0 curl 相关操作命令(一)

es curl命令

2017-12-19 18:41:22 525

原创 elasticsearch2.1.0文档的相关操作

es文档的相关操作

2017-12-19 18:37:29 429

原创 elasticsearch2.1.0索引的相关操作

es的索引操作

2017-12-19 18:35:49 314

原创 elasticsearch-2.1.0 java客户端创建

es客户端分为两中模式:节点客户端(Node client)节点客户端作为一个非数据节点加入到本地集群中。换句话说,它本身不保存任何数据,但是它持有数据分片的路由表,它知道数据在集群中的哪个节点中,并且可以把请求转发到正确的节点,这种客户端模式下,需要维持一些与集群本身通信的连接,但是使用这种模式数据的查询和索引是最快的。传输客户端(Transport client)轻量级的传输客户端可以将请求发送到远程集群。它本身不加入集群,但是它可以将请求转发到集群中的一个节点上,使用这种模式存在“双跳”的现

2017-12-12 17:19:38 458

原创 elasticsearch-2.1.0集群搭建 及其出现的一些问题

Elasticsearch 是一个实时的分布式搜索分析引擎,建立在一个全文搜索引擎库 Apache Lucene 基础之上 它能让你以一个之前从未有过的速度和规模,去探索你的数据。 它被用作全文检索、结构化搜索、分析以及这三个功能的组合。我们从elasticsearch-0.17版本就开始使用,使用过程中遇到了很多问题同时也积累了一些使用的经验。

2017-12-12 16:19:59 570

原创 kafka 从分区任意位置、分区开头、分区末尾开始消费数据

redis和kafka都可以作为消息队列使用,都可以完成发布订阅功能,但是kafka相较于redis可以实现订阅消息的存储,可以实现订阅消息的任意位置消费,更重要的时kafka订阅消息是可以存储到磁盘上的,而redis订阅消息是无法存储磁盘的。在这里我给出了kafka生产数据和消费数据的一些代码示例,演示了kafka从分区的不同位置开始消费数据的方式。

2017-12-11 16:38:03 16112 2

原创 elasticsearch-2.1.0 及其插件head的安装

Elasticsearch 是一个实时的分布式搜索分析引擎, 它能让你以一个之前从未有过的速度和规模,去探索你的数据。它被用作全文检索、结构化搜索、分析以及这三个功能的组合。当然如果你想具体的了解elasticsearch的详细信息你可以去elasticsearch 官网查看。我这里记录一下elasticsearch-2.1.0 及其插件head的安装。elasticsearch不同版本对jdk有不同的要求我这里给你一些版本的参考链接:

2017-12-04 14:44:08 1379

原创 网络编程之Selector & SelectionKey详解(二)

这篇博文我希望能总结出一个实用的简单客户端服务器通信示例,我在前面几篇博文中说过,socket通信中存在数据无边界的问题,这样造成不知道read数据是否完成;在前面几篇博文中我们看到在对客户端SocketChannel进行注册感兴趣的事件时,并没有注册SelectionKey.OP_WRITE写事件,是因为写事件注册之后客户端通道大多数情况下都会立即满足可以写数据的条件,即使这个时候服务器逻辑还没有生成要写回去的数据,所以对于客户端SocketChannel的写事件,我们一般不是在注册通道时注册,而是在服务

2017-11-18 12:58:19 2235

原创 网络编程之Selector & SelectionKey详解(一)

每个选择器selector中会包含三种键的集合,也可以认为是三种状态通道的集合,比较通道和选择键是一一对应的:(1) 注册键的集合,通过register函数进行注册的通道这个集合可以通过Keys()方法返回(2) 已选择键的集合,这个是注册键集合的子集,可以通过selectedKeys()方法返回,该集合中的通道都是准备好执行相应操作的通道(3) 已取消键的集合,这个集合包含了cancel( )方法被调用过的键(这个键已经被无效化),但它们还没有被注销。这个集合是选择器对象的私有成员,因而无法直接访问

2017-11-18 12:20:02 3033 1

原创 网络编程之SocketChannel & ServerSocketChannel & Selector

在前面的文章中我们讲过Socket的读是阻塞模式,并且读写都是一个字节或者几个字节,为了提高响应性能往往需要在服务端为每一个请求分配一个线程。后来为了解决传统Socket的这种阻塞低效方式,在jdk1.4之后引入了New I/o(NIO)。

2017-11-09 17:53:49 1997

原创 网络编程之Socket&ServerSocket(一)

Socket和ServerSocket是网络编程非常重要的两个类,前者用于建立客户端套接字,并读写服务器;后者用于创建服务端套接字,监听某个端口并处理到达的客户端请求。按照TCP/IP的四层参考模型 从上到下依次是应用层、传输层、网络层、物理层,而Socket是工作与应用层和传输层之间,它抽象了应用层以下的通信复杂细节,从设计模式的角度将Socket就是一个门面模式。Socket网络编程中对于

2017-11-08 13:50:29 970

原创 commons-pool对象池实现原理及使用(二)

纸上得来终觉浅,绝知此事要躬行,我们用Commons-pool-1.6来写一个我们自己的对象池。类MyObject 为池对象类MyPoolableObjectFactory 为池对象工厂类MyObjectPool封装的一个对象池/** * * @author yujie.wang * 测试类 */public class MyObject { private Stri

2017-10-26 14:47:20 1112

原创 commons-pool对象池实现原理及使用(一)

我们知道频繁的创建对象是一个相对较重的过程,jvm要加载类,初始化对象,为对象分配内存涉及到多个系统调用,这样对一个高负载的系统来说是比较消耗资源的。这时我们可以将所需对象进行池化,apache开源的的commons-pool是一个比较典型的实现对象池化组件,笔者所在的公司在多个框架中都使用过这个组件,还有很多业界知名的中间件如Redis客户端Jedis等都使用到了这个池化组件。我们虽然不必重复造轮子,但是我们也得了解这个轮子是怎么造的。

2017-10-25 09:36:02 15142

原创 详解java动态代理机制以及使用场景(一)

说起java动态代理,在我刚开始学java时对这项技术也是十分困惑,明明可以直接调通的对象方法为什么还要使用动态代理?随着学习的不断深入和工作经验的积累,慢慢的体会并理解了java动态代理机制。昨天再给公司新同事做技术培训时有同学就对动态代理产生了疑问,我这里梳理一遍一并记录一下,方便大家查看对自己也是加深记忆。

2017-10-19 10:29:10 64201 23

原创 漫谈jvm垃圾收集(3)

在这篇博客漫谈jvm垃圾收集(2)中我们说了目前商业虚拟机进行垃圾收集的通用算法和收集器。这里我们继续深入讨论一些关于垃圾收集的一些细节。我们前面说了现在大多数虚拟机都是采用分代收集策略,jvm依据不同对象的生存周期不同,将堆分为新生代和老年代,其中新生代又分为Eden 、 S0 、 S1区,其中S0、S1称为Surivivor区,一般Eden和Surivivor比例为8:1,可以使用-XX:SurvivorRatio=8进行比例的设置。

2017-10-10 08:47:33 606

原创 漫谈jvm垃圾收集(1)

java程序员相比c++程序员最安逸的一个地方,就是不用负责对象内存的申请和释放,这部分功能都是由jvm自己负责,同时对java应用程序员来说这个过程是透明的。尽管这个过程大部分情况下不需要我们程序员去干预,但是了解这个过程并且合理的配置jvm垃圾回收策略的相关参数,能让我们在编程时更加游刃有余。

2017-10-09 09:50:17 621

原创 thrift(1)------基于thrift通信组件的简单RPC服务

2007年facebook 提交Apache 基金会将Thrift是一个开源项目,对于当时的facebook来说创造thrift是为了解决facebook系统中各系统间大数据量的传输通信以及系统之间语言环境不同需要跨平台的特性

2017-10-06 22:08:26 1580

原创 java序列化与反序列化(5)------反序列化时对象的创建方式

我在前四篇文章都讲了和序列化相关的东西,在第四篇文章中讲了通过实现Serializable,Cloneable这两个接口来实现深拷贝,但是一直有一个问题值得再讨论一下那就是:反序列化时对象是怎么创建的?在第四篇文章中我们看到,不管通过实现Cloneable接口还是Serializable来进行深拷贝创建新对象时,都没有调用任何的构造函数进行创建对象,这看起来好像是jvm直接操作内存创建了对象。我们知道java中创建对象的方式有如下三种:通过new关键字创建对象,这个过程一定是需要调用构造函数的反射C

2017-10-06 16:42:33 4854 2

原创 java序列化与反序列化(4)------jdk原生序列化机制实现深拷贝

java序列化与反序列化(4)------jdk原生序列化机制实现深拷贝

2017-10-06 15:57:24 931

原创 java序列化与反序列化(3)------jdk原生序列化机制Externalizable

我们在上一篇博客中介绍了类实现标记性接口Serializable来实现序列化,但是如果你只想序列化诸多域中的某几个域,一种选择是将不序列化的域都标记上transient关键字,但是如果不需要序列化的域比较多,那么这种方式看起来很麻烦呀,第二种选择就是实现Externalizable接口了。这个接口其实是继承自Serializable接口,继承Externalizable的类必须实现writeExternal(ObjectOutput paramObjectOutput)和readExternal(Objec

2017-10-05 16:46:16 845

原创 java序列化与反序列化(2)------jdk原生序列化机制Serializable

使用jdk原生的序列化机制,我们要把需要序列化的类实现Serializable接口,这是一个标记接口没有声明任何的方法。

2017-10-03 21:13:39 1124

原创 java序列化与反序列化(1)------序列化、反序列化概念浅述

java序列化与反序列化是一项比较重要的技术点,目前也有很多成熟的组件可以使用比如protobuf、thrift、jute、jdk自带序列化等诸多可选项。那么我们下面就介绍一下序列化相关的内容。(1)什么是序列化与反序列化?

2017-10-03 09:36:18 839

原创 随笔感想之------大半夜的牢骚

截止到目前也是工作两年有余的人了,近半年公司人员流动较大,不断从前同事手中接手新的业务,不同的业务技术选型又都一样,繁多的业务类型几乎要耗尽了自己的精力。我一向认为要成功必须专注的做一件事情,想来近半年在大量业务的摧残下,我已经很久没有专注的研究过一个技术方向了,很多需求和技术方向都是浅尝而止不求甚解,到头来很多事情都是能说上一点,但是深入了却无法解释,这种摸不到地的感觉让人烦恼。原有手里

2017-10-02 22:29:17 606

原创 Redis高可用方案哨兵机制------ 配置文件sentinel.conf详解

Redis的哨兵机制是官方推荐的一种高可用(HA)方案,我们在使用Redis的主从结构时,如果主节点挂掉,这时是不能自动进行主备切换和通知客户端主节点下线的。

2017-09-15 17:58:25 5362 2

原创 详细讲解Redis主从结构配置以及复制原理(二)

我在这篇博客详细讲解Redis主从结构配置以及复制原理(一)中讲了Redis2.6版本的主从结构和全量主从复制原理,接下来我会继续讲讲Redis2.8版本之后引入的增量主从复制原理。

2017-09-13 17:25:03 1422

原创 详细讲解Redis主从结构配置以及复制原理(一)

Redis是基于内存的NoSql数据库,同时以其卓越的读写性能闻名业内,并且我在这篇博客Redis持久化机制原理分析与解惑-为什么Redis进行RDB持久化数据时,新起一个进程而不是在原进程中起一个线程中讲过Redis的两种数据持久化方式,但是如果Redis读写压力较大的情况下,将所有的数据都存在一个实例中,这将会大大降低Redis的性能,但是我们可以使用Redis提供的主从复制功能来实现数据冗余和读写分离。

2017-09-08 12:28:30 1731

原创 聊聊操作系统-文件系统

工作也有两年了,在研究很多项目时发现很多问题追根溯源都会到计算机底层的知识,也是越来越发现编程语言只是一层外壳,这个外壳需要去和操作系统协商使用后者管理的的计算机资源,包括存储资源和计算资源。如果计算机底层知识不牢靠,遇到一些问题还真是不好分析,也很容易成为职业上升的瓶颈。现在回想起大学时学习这么课时是比较抽象的,那时没有太多编程经验,知识很难落地,造成了只知其然不知其所以然的情况,所以现在重新梳理一下计算机操作系统的一些底层知识,在这里记录一下。

2017-08-16 19:47:40 1550

原创 聊聊操作系统-存储管理之虚拟内存

工作也有两年了,在研究很多项目时发现很多问题追根溯源都会到计算机底层的知识,也是越来越发现编程语言只是一层外壳,这个外壳需要去和操作系统协商使用后者管理的的计算机资源,包括存储资源和计算资源。如果计算机底层知识不牢靠,遇到一些问题还真是不好分析,也很容易成为职业上升的瓶颈。现在回想起大学时学习这么课时是比较抽象的,那时没有太多编程经验,知识很难落地,造成了只知其然不知其所以然的情况,所以现在重新梳理一下计算机操作系统的一些底层知识,在这里记录一下。

2017-08-15 17:08:17 1541

原创 聊聊操作系统-进程与线程

工作也有两年了,在研究很多项目时发现很多问题追根溯源都会到计算机底层的知识,也是越来越发现编程语言只是一层外壳,这个外壳需要去和操作系统协商使用后者管理的的计算机资源,包括存储资源和计算资源。如果计算机底层知识不牢靠,遇到一些问题还真是不好分析,也很容易成为职业上升的瓶颈。现在回想起大学时学习这么课时是比较抽象的,那时没有太多编程经验,知识很难落地,造成了只知其然不知其所以然的情况,所以现在重新梳理一下计算机操作系统的一些底层知识,在这里记录一下。

2017-08-09 15:09:40 1027

原创 Redis持久化机制原理分析与解惑-为什么Redis进行RDB持久化数据时,新起一个进程而不是在原进程中起一个线程

最近部门新招过来的校招生问了我一个问题:“为什么redis进行RDB持久化数据时,新起一个进程而不是在原进程中起一个线程来持久化数据”。好吧,那今天我们就来讨论讨论这个问题。

2017-08-07 18:35:34 11125 5

原创 漫谈jvm垃圾收集(2)

上一篇博文中我们说了,哪些对象该被回收已经在程序运行到什么地方进行回收。接下来我们就来讨论怎么回收这些不在使用的对象。

2017-07-20 17:12:40 516

原创 (1)JVM运行时数据分区

我们知道java虚拟机在运行时会把它管理的内存分为若干个区域,有的随着虚拟机的启动而启动,有的随着应用线程的启动和创建,那下面我们就看看虚拟机运行时各个分区及其作用。

2017-07-20 17:07:56 1289

原创 redis列表类型list如何一次返回多个值并删除这些值

redis的列表类型list是一个常用的数据类型,但是这个类型并不支持一次性返回多个值并删除这些已经返回的值。

2017-07-07 12:06:35 34737 3

原创 详细教你如何部署ICE服务(三)---IceBox框架 & Ice Registry服务注册中心的联合使用

在详细教你如何部署ICE服务(二)---IceBox加载启动Ice服务这篇博客中,我们使用了IceBox来设计服务代码和启动Ice服务。单单使用IceBox组件来设计和启动Ice服务,客户端必须将服务端的EndPoint写死到代码中,为了解决这个问题,Ice设计了服务注册表Registry组件,这是一个以二进制文件形式存储运行期Ice服务注册信息的独立进程,作为服务的metadata存储数据中心,以供客户端查询。依托Registry的功能,Ice服务实现了Service Locator组件,这是一个标准的

2017-07-06 17:54:15 4905 1

原创 如何判断zookeeper节点是持久节点还是临时节点

最近有些同学过来问我如何判断zookeeper的节点是持久节点还是临时节点?其实很简单,接下来我们就来看看判断方法。zookeeper 持久节点:该数据节点被创建后,就会一直存在于zookeeper服务器上,直到有删除操作来主动删除这个节点。zookeeper临时节点:临时节点的生命周期和客户端会话绑定在一起,客户端会话失效,则这个节点就会被自动清除。

2017-07-06 12:19:08 23771

原创 详细教你如何部署ICE服务(二)---IceBox加载启动Ice服务

在上一篇文章中,我使用了自己实现的一个简单容器简单粗暴的启动一个ICE服务,正如上篇文章所总结的那样,这种部署服务的方式存在诸多缺点。这里我们给出使用IceBox这个框架来开发和部署我们的Ice服务。

2017-07-06 11:05:16 7785

原创 详细教你如何部署ICE服务(一)

这系列文章将会一步步教你如何部署一个ICE服务,如果你正在读这篇博客,我想你已经了解了什么是ICE(Internet Communications Engine),以及如何去实现ICE服务,并且了解什么是ICE对象、ICE对象标识符、ICE对象适配器、ICE服务实现servant、ICE通信器等概念,当然如果你连什么是ICE都不知道,我不建议你继续读下去。先说一下ICE的基本组件:(1)

2017-07-04 19:39:52 20830 2

转载 Java中equals()与hashCode()方法详解

java 中equals()与hashCode()的关系以及原理讲解

2017-06-05 15:06:16 1205

happens-before俗解

jvm happens-before通俗讲解 jvm happens-before通俗讲解

2018-11-05

微信红包之CBA实践

微信红包实践 移动互联网海量访问系统设计 微信红包之CBA实践

2018-11-05

空空如也

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

TA关注的人

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