自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 性能优化笔记(一)

概述: 笔者近期接受一个大数据项目的性能优化,为期两周,2.6万/s的日志处理速度提升至需求目标值5万/s。从整理项目流程阅读代码到性能优化目标实现,整个过程颇多波折。准备记录其间的技术性问题以做总结,希望可以对大家有所助益。 part1、你以为的真的是你以为的么---redis数据过期策略项目接手时,项目研发人员X告知的信息,是模块A的实现kafka单一消费者性能不足(其实模块A的原...

2018-04-27 11:11:02 257

原创 Spark的那些事(四) java操作kudu全示例(含sparksql)

上文提到,使用kudu等列式存储将数据以update模式写入kudu. 下面说一下java操作kudu的相关demo。java操作kudu在git上有相关demo,而spark操作kudu并没有。cloudera官网的操作中只提到了scala版本。本文列举java操作kudu的全示例,仅供入门参考。(痛苦的是sparksql查询kudu的java实现,官方没有示例,google也不好用)1)...

2018-03-22 18:10:08 2113

原创 spark的那些事(三) Structured streaming 窗口期内存数据的查询

之前的文章中提过,structured streaming处理流数据,如果使用聚合,将会有window的概念,对应属性watermark.不知你是否了解过druid,druid处理数据同样有窗口期的概念,用于判断数据何时丢弃.超时的数据将被直接丢弃. druid的实现比较完善.不管是窗口期的内存数据还是固化到hdfa中的数据,都可以实时联合查询.而structured streaming目前尚未...

2018-03-22 18:09:16 1009

原创 Spark的那些事(二)Structured streaming中Foreach sink的用法

Structured streaming默认支持的sink类型有File sink,Foreach sink,Console sink,Memory sink。 特别的说明一下Foreach sink的用法(ps:以通过Foreach sink写入外部redis为例)。 lastEtlData.writeStream().foreach(new TestForeachWriter()).o...

2018-03-22 18:07:40 2286 1

原创 Spark的那些事(一)一文了解spark

Spark是一个快速的集群化的实时计算系统。支持Java, Scala, Python 和R语言的高级API。一 Spark生态: 支持Spark Sql用于sql和结构化数据查询处理;支持MLlib用于机器学习;支持GraphX用于图形处理;支持Spark Streaming和Structured Sql(spark2.1.1版本发布)用于实时计算。(其中,我们使用的Spark功能主要

2018-01-15 14:29:08 759

原创 dropwizard微服务实践

一 Dropwizard是什么? Dropwizard是一个跨越了库和框架的界限,他的目标是提供一个生产就绪的web应用程序所需的一切性能可靠的实现。 (一)它主要包含以下组件: 1、Jetty for HTTP 将Jetty的http库嵌入到项目中,不需要将我们的服务提交到复杂的服务器上。只需要一个main方法就可以启动服务。 2、Jersey for REST 使用Jersey来支

2017-08-10 16:03:56 604

原创 基于jetty9实现java版的webcoket服务端和客户端

接上文,“websocket协议简析”。分享一下基于jetty9实现java版的webcoket服务端和客户端demo。 没有理论,话不多说,代码奉上。 准备工作: 新建maven工程,pom文件引入: <dependency> <groupId>org.eclipse.jetty.websocket</groupId>

2017-08-07 19:13:07 448

原创 websocket协议简析

websocket协议是基于tcp的网络协议,实现了浏览器与客户端的全双工通信,与http协议不同的是,它允许服务器主动推送消息给客户端。这样便可以取代原来低效的轮询。背景在websocket出现之前,客户端获取服务器消息,需要通过不停的轮询。有如下缺陷:1)服务器被迫为每个客户端使用许多不同的底层TCP连接:一个用于向客户端发送信息,其它用于接收每个传入消息。2)http

2017-08-04 13:51:59 317

转载 jstat命令详解

Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于Java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。jstat工具特别强大,有

2017-04-25 16:46:09 236

转载 优秀Java程序员必须了解的GC工作原理

一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率 ,才能提高整个应用程序的性能。一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理

2017-04-25 16:44:51 187

转载 apache kafka中server.properties配置文件参数说明

每个kafka broker中配置文件server.properties默认必须配置的属性如下:[java] view plaincopybroker.id=0  num.network.threads=2  num.io.threads=8  socket.send.buffer.bytes=1048576  socke

2017-04-25 14:21:38 313

原创 java进程CPU占用高的问题排查

在某版代码提测时发现,java进程启动话,宿主机CPU使用率立马升到100%。百思不得其解,遂查之。top命令查看占用cpu高的java进程号,记录11303.ps -mp 11303 -o THREAD,tid,time 查看占用cpu高的线程号,记录。jstack 11303 >/usr/local/agent.log查看agent.log,并将线程号转为16禁止,搜索

2017-03-17 11:18:18 260

转载 java.io.IOException: No FileSystem for scheme: hdfs

http://www.cnblogs.com/justinzhang/p/4983673.html

2017-03-13 19:09:14 690

原创 java虚拟机 内存运行时数据区域

java虚拟机运行时数据区域广义上可以分为程序计数器 堆 栈和直接内存。程序计数器(线程私有)可以看作当前线程所执行的字节码的行号指示器。众所周知,多线程是争抢CPU执行时间的,轮流切换并分配cpu时间,每个cpu同一时刻只能处理同一个线程。程序计数器可以保证线程切换后能恢复到正确的执行位置。栈(先进后出,线程私有,生命周期与线程相同)包括java虚拟机栈和本地方法栈。

2017-01-13 18:32:27 966

原创 Elasticsearch---- delete by query

针对ES2.0 已经弃用delete-by-query,如需使用需要安装插件1 安装插件每台装有Es的机器,ES安装目录下执行bin/plugin install delete-by-query2 重启所有ES服务3 在运维平台执行删除操作:例如: 删除12.20号id为y502YZtTHt5tuychnIw的任务生成的概要数据。ycb_action_sum

2016-12-21 11:54:26 5586

原创 thinking in java 4th 读书笔记

Everything is an Object。对象拥有独立状态、行为和身份,而具有共性行为属性的对象归属于同一个类。每个对象是一个类的实例。对象有自己的存储空间,可以由其他对象组成。所谓程序就是,一系列的对象,通过消息传递告诉彼此该做些什么。每种编程语言都提供了抽象。通过抽象可以定义具有不同行为属性的类。汇编语言是对机器语言的部分抽象;命令式语言如C是对汇编语言的抽象。但是这些语

2016-10-09 13:29:13 421

原创 elastatic search 查询语法

es中的数据可以分为两种:一种是准确值;一种是全文检索值。全文搜索使用分词器。es提供多种分词器。分词器的作用简单描述:比如文档q有一个字段date 值为2016-03-28.如果是准确值,将会存储为2016-03-28;如果使用分词器,将存储为,2016,03,28 这样如果查询GET /_search?q=2016,所有文档将匹配。查询GET

2016-09-19 15:15:48 3777

原创 linux系统最大打开文件数和socket端口数限制的坑

由于产品需求,高并发不断创建socket短连接来仿http请求。使用java socket来实现,在centos6.5系统上运行。过程中遇到不到的坑,最头疼的就是最大打开文件数和socket可用端口限制的问题。linux和mac默认最大打开文件数256.上限是65535.在创建socket连接时,每个连接需要占用一个文件打开,所以256是远不能满足需求的。需要进行参数修改。另外,linux系统的最

2016-09-19 15:11:16 8205 1

原创 ElastaticSearch 去重cardinality的坑

项目中,Elastatic search(下面简称ES)用于数据存储和分析。项目中的存储的对象有包含关系。A对象是B对象的集合,即一个A对象包含多个属于A对象的B对象。在前端展示的时候,需要分别对A和B级别进行查询汇总。设计的时候,考虑到尽可能的减少存储量又能满足各种查询条件,决定以B为单位进行存储,同时B对象拥有属性Aid,用于表示B的归属。在普通sql数据库中如此存储不会有什么问题

2016-09-19 15:08:26 5548 2

原创 多线程对象传递的坑

高并发&多线程环境下的对象传递高并发环境下,很多莫名其妙的问题会出现。通过单元测试跑通的代码,真正并发起来后就会出现各种奇葩问题。最坑的,就是父子线程间或同一线程的不同类不同方法间的变量传递。按照单线程的思维去考虑,完全木有任何问题,但是并发起来,由于多线程间的上下文切换和java指令重排序的影响,就会出现变量获取不到的问题。 上代码: 如上图中,在父线程中定义对象time

2016-09-19 15:03:57 1124

原创 elastic search系列(一)基本概念和增删改查逻辑

(翻译:jasonlee  970858106@qq.com)分布式策略:ES致力于分布式系统实现细节对于用户的透明性。在ES使用过程中,集群自动执行一下步骤:1 分配文档到相同节点或不同节点的不同分片上。2 通过集群中的多节点来平衡分配数据,用以减轻索引和查询的压力。3 复制各分片,提供复制分片来防止硬件故障引起的数据丢失。4 路由集群中每个节点的请求到该包含请求所需数据

2016-09-19 14:55:11 602

原创 kafka zookeeper elasticsearch集群环境搭建

ES/kafka/zookeeper部署机器三台,同一内网。  安装kafka 建议版本kafka_2.11-0.9.0.0.tgz准备工作修改hosts。编辑vim /etc/hosts1)修改默认127.0.0.1  127.0.0.1   localhost  ::1         localhost2)添加三台机器的

2016-01-20 10:15:26 2264

转载 java 死锁产生原因及解锁

进程死锁及解决办法 一、要点提示(1) 掌握死锁的概念和产生死锁的根本原因。(2) 理解产生死锁的必要条件--以下四个条件同时具备:互斥条件、不可抢占条件、占有且申请条件、循环等待条件。(3) 记住解决死锁的一般方法,掌握死锁的预防和死锁的避免二者的基本思想。(4) 掌握死锁的预防策略中资源有序分配策略。(5) 理解进程安全序列的概念,理解死锁与安全序列的关系。(6

2015-12-31 16:51:42 264

原创 kafka centos 单点配置

kafka&zookeeper环境 centos64虚拟机单节点单broker1 下载kafka2  解压并进入kafka目录3 修改配置文件 vim config/server.properties 如修改brokerId和端口4 启动zookeeper bin/zookeeper-server-start.sh c

2015-12-30 17:49:41 1488

原创 linux sigar java.lang.UnsatisfiedLinkError

使用siagr的java项目,将项目.jar放入linux机器,使用java -jar 运行时会报错 java.lang.UnsatisfiedLinkError解决办法:需要将so库(libsigar-amd64-linux.so,libsigar-x86-linux.so)放在linux机器某文件夹下 运行时命令:java  -Djava.library.path=/usr

2015-12-30 17:45:16 2070

转载 同步异步堵塞非堵塞

“阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。1.同步与异步同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由*调用者

2015-11-09 11:25:01 344

原创 初识nginx负载均衡

环境:主机三台,系统centos,一个为nginx服务器(1)180.150.184.156,另外两台发布tomcat服务(2)180.150.184.202(3)180.150.184.203。(1)nginx安装:yum -y install nginx修改nginx配置文件nginx.confvim /etc/nginx/nginx.confuser

2015-10-29 15:59:26 278

原创 数据库事务隔离级别

数据库事务隔离级别分为四种:以下四种隔离级别依次递增。read uncommitted(未提交读):事务可以读取未提交的数据。一般不会使用该级别。可能出现“脏读”。所谓脏读,指的是两个或多个并发事务,其中一个事务读取了另一个尚未提交的事务数据。脏读实例:公司发工资了,领导把5000元打到singo的账号上,但是该事务并未提交,而singo正好去查看账户,

2015-10-27 17:26:05 242

原创 linux安装并通过SSH链接

1安装下载mysql-5.5.46-linux2.6-x86_64.tar.gz。a.       检查是否已安装,grep的-i选项表示匹配时忽略大小写[root@localhost JavaEE]#rpm -qa|grep -i mysqlmysql-libs-5.1.61-4.el6.x86_64*可见已经安装了库文件,应该先卸载,不然会出现覆盖错误。

2015-10-27 17:09:13 327

转载 java集群技术

序言越来越多的关键应用运行在J2EE(Java 2, Enterprise Edition)中,这些诸如银行系统和账单处理系统需要高的可用性(High Availability, HA),同时像Google和Yahoo这种大系统需要大的伸缩性。高可用性和伸缩性在今天高速增长的互连接的世界的重要性已经证实了。eBay于 1999年6月停机22小时的事故,中断了约230万的拍卖,使eBay的股

2015-10-14 16:25:08 243

转载 java.net.SocketException: Too many open files 问题的解决办法

linux 上tomcat 服务器抛出socket异常“文件打开太多”的问题 java.net.SocketException: Too many open filesat java.net.PlainSocketImpl.socketAccept(Native Method)at java.net.PlainSocketImpl.accept(PlainSocketImpl.java

2015-09-09 16:45:26 906

原创 java List 删除若干元素

对于LIst的删除操作,由于删除时会引起索引改变。直接使用循环遍历进行删除,只能删除1/2. 剩余部分由于索引问题而不能被删除。对于LIst遍历元素按需删除,可使用Iterator。Iterator itr = s.iterator(); while (itr.hasNext()) { Integer i = itr.next();

2015-07-16 16:06:44 301

转载 curl获取站点的各类响应时间(dns解析时间,响应时间,传输时间)

有时候为了测试网络情况,需要返回每个阶段的耗时时间,比如DNS解析耗时,建立连接所消耗的时间,从建立连接到准备传输所使用的时间,从建立连接到传输开始所使用的时间,整个过程耗时,下载的数据量,下载速度,上传数据量,上传速度等等。使用 cURL 获取站点的各类响应时间 – dns解析时间,响应时间,传输时间  curl -o /dev/null -s -w %{http_code}:%{ht

2015-06-25 11:28:54 5738

原创 关于curl java 模拟http请求

近期笔者项目需求java模拟http请求,获取dns解析 tcp连接等详细耗时信息。java api中提供的urlConnection 及apache提供的httpClient都不能胜任该需求,二次开发太费时间。于是google之。最后 得出两种解决办法:一是使用HTTP4J。该开源项目使用socket方式,模拟请求,记录时间戳,基本满足需求。对于header自定义等细节,可在此基

2015-06-25 11:22:20 19353 10

原创 java多线程&&Jmeter压测实现

笔者最近在看jmeter源码,对多线程处理部分的了解记录如下。Part1 线程与多线程概念提到线程先来看一下进程(线程的容器)的概念,进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。对于jmeter来说,运行中的jmeter

2015-06-05 12:10:17 3663

转载 JMeter源码目录解析

Src目录下的各个子目录的功能与作用components—包含与协议无关的组件,如可视化、断言等等。core —JMeter的核心代码,包括所有的核心接口和抽象类。examples —演示采样器如何使用新bean框架的例子。functions —所使用的组件的标准功能。jorphan—提供常见实用功能的实用工具类monitor—tomcat 5的mo

2015-05-27 14:03:04 2459

原创 jmeter源码编译(eclipse)

jmeter官网提供两种下载:即releases和develoer build两版。对于想要使用jmeter进行测试的小伙伴来说,直接下载releases版,解压,通过命令行运行jmeter.bat即可。但是,想要学习jmeter源码进行二次开发的小伙伴则需要下载developer版。下载地址一  /下载src bin lib三个zip包 。放在同一文件目录下 ,并分别解压,解压过程中

2015-05-27 12:13:50 1445 1

转载 java多线程

在java中,线程有两种实现方式,一种是继承Thread类,一种是实现Runnable接口 对于继承Thread代码实现大概如下:public class ThreadTest extends Thread{ //方法1 //方法2 //... //属性1 //属性2 //... @Override public void r

2015-05-22 17:54:36 262

原创 Provider sun.tools.attach.WindowsAttachProvider could not be instant

解决方法:将jdk原路径下的jre/bin路径添加到环境变量path下。eg:C:\Program Files (x86)\Java\jdk1.8.0_45\jre\bin

2015-05-20 15:24:52 2931 3

原创 no sigar-x86-winnt.dll in java.library.path

在windows中使用sigar获取系统信息或服务进程时,需要用到 sigar-x86-winnt.dll ; linux中为.so文件下载地址 http://download.csdn.net/detail/zhongyuan_1990/8720491下载dll后解压 然后进行配置 项目--右键--build path --config build path --source --如图

2015-05-20 15:23:03 3298 2

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