- 博客(33)
- 资源 (18)
- 收藏
- 关注
转载 java线程池使用详解
http://automaticthoughts.iteye.com/blog/1612388一 简介线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的。在jdk1.5之后这一情况有了很大的改观。Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供...
2018-05-28 19:37:26 2244
原创 分析内存泄露的一般方法
分析内存泄露的一般步骤 如果发现Java应用程序占用的内存出现了泄露的迹象,那么我们一般采用下面的步骤分析把Java应用程序使用的heap dump下来使用Java heap分析工具,找出内存占用超出预期(一般是因为数量太多)的嫌疑对象必要时,需要分析嫌疑对象和其他对象的引用关系。查看程序的源代码,找出嫌疑对象数量过多的原因。dump heap 如果Java应用程序出现了内存泄露,...
2018-05-28 19:28:23 3318
原创 epoll介绍
什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。 epoll的相关系统调用epol...
2018-05-25 16:28:14 380
原创 RDD、DataFrame和DataSet比较
RDD、DataFrame和DataSet是容易产生混淆的概念,必须对其相互之间对比,才可以知道其中异同。RDD优点:编译时类型安全 编译时就能检查出类型错误面向对象的编程风格 直接通过类名点的方式来操作数据缺点:序列化和反序列化的性能开销 无论是集群间的通信, 还是IO操作都需要对对象的结构和数据进行序列化和反序列化.GC的性能开销 频繁的创建和销毁对象, 势必会增加GCimport org.a...
2018-05-23 11:01:27 982
原创 Cloud foundry基础
Cloud Foundry 组件概述路由Router认证OAuth2 Server UAA 和 Login Server应用生命周期Cloud Controller 和 Diego BrainnsyncBBS 和 Cell Reps应用存储和执行BlobstoreDiego Cell服务Service Brokers通信Consul 和 BBS指标和日志LoggregatorMetrics Col...
2018-05-22 20:43:59 7137
原创 Cloudify基本介绍
介绍Cloudify 是开源的云编排框架,管理应用的整个生命周期,主要功能包括:应用编排:blueprint,部署和管理应用维护:工作流,事件和日志管理可插拔:使用插件垒起来的标准:基于TOSCA的DSL(领域描述语言)术语blueprint:cloudify 用blueprint 来定义应用,blueprint 是应用的逻辑展示,包括配置脚本、和其他资源的关联等应用需要的一切;workflow:...
2018-05-22 20:17:35 6039
原创 Google Guice 基础应用
Google Guice 是一个轻量级的依赖注入框架,它支持Java 5或者更高版本的JDK,得利于Java 5中提供的泛型 (Generics) 和注解 (Annotations) ,它可以使得代码类型安全 (type-safe) 。那么何时使用在代码中使用 Guice 进行注入呢?一般来说,如果在你的应用代码中业务对象 (Business Objects) 之间的关系或者依赖需要手动维护的话,...
2018-05-22 10:33:38 372
转载 kafka consumer 配置详解
1、Consumer Group 与 topic 订阅每个Consumer 进程都会划归到一个逻辑的Consumer Group中,逻辑的订阅者是Consumer Group。所以一条message可以被多个订阅message 所在的topic的每一个Consumer Group,也就好像是这条message被广播到每个Consumer Group一样。而每个Consumer Group中,类似于...
2018-05-18 15:04:22 1085
转载 springcloud-eureka详解
前言Oracle转让Java,各种动态语言的曝光率上升,Java工程师的未来在哪里?我觉得Spring Cloud让未来有无限可能。拖了半年之久的Spring Cloud学习就从今天开始了。中文教材不多,而且大多都是简单的离散的信息,想要找到企业级的一体化解决方案很少。不过,对于入门来说,简单就够了,等到用的时候自然而然的汇总起来。目标是把springcloud的子项目过一遍。ComponentE...
2018-05-18 14:55:18 759 1
原创 jvm GC日志分析详解
JVM和GC调优,总结下CMS的一些特点和要点,让我们先简单的看下整个堆年轻代和年老代的垃圾收集器组合(以下配合java8完美支持,其他版本可能稍有不同),其中标红线的则是我们今天要着重讲的内容:垃圾回收器的可用组合: ParNew and CMS"Concurrent Mark and Sweep" 是CMS的全称,官方给予的名称是:“Mostly Concurrent Mark and Sw...
2018-05-18 11:36:59 6654
原创 jvm 常用工具
jps查看所有的jvm进程,包括进程ID,进程启动的路径等等。我自己也用PS,即:ps -ef | grep javajstack观察jvm中当前所有线程的运行情况和线程当前状态。系统崩溃了?如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。系统hung...
2018-05-18 11:20:00 833
原创 JVM 栈分配与TLAB
我们在学习使用Java的过程中,一般认为new出来的对象都是被分配在堆上,但是这个结论不是那么的绝对,通过对Java对象分配的过程分析,可以知道有两个地方会导致Java中new出来的对象并一定分别在所认为的堆上。这两个点分别是Java中的逃逸分析和TLAB(Thread Local Allocation Buffer)。本文首先对这两者进行介绍,而后对Java对象分配过程进行介绍。1. 逃逸分析1...
2018-05-18 11:08:20 10445 5
原创 JVM G1详解
java程序性能当我们调优java程序时,通常的目标有两个: 响应能力 或者 吞吐量响应能力响应能力指一个程序或者系统对请求的是否能够及时响应。 比如: 一个桌面UI能多快的响应一个事件; 一个网站能够多快返回一个页面请求; 数据库能够多快返回查询的数据;对于这类对响应能力敏感的场景,长时间的停顿是无法接受的。吞吐量吞吐量关注的是,在一个指定的时间内,最大化一个应用的工作量。 如下方式来衡量一个系...
2018-05-17 17:21:25 13412 5
原创 HashMap原理基础
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。哈希表那么我们能不能综合两者的特性...
2018-05-17 14:30:10 265
原创 jvm详解
JVM内存模型总体架构图程序计数器多线程时,当线程数超过CPU数量或CPU内核数量,线程之间就要根据时间片轮询抢夺CPU时间资源。因此每个线程有要有一个独立的程序计数器,记录下一条要运行的指令。线程私有的内存区域。如果执行的是JAVA方法,计数器记录正在执行的java字节码地址,如果执行的是native方法,则计数器为空。虚拟机栈线程私有的,与线程在同一时间创建。管理JAVA方法执行的内存模型。每...
2018-05-17 09:46:53 617
原创 JVM堆外内存
广义的堆外内存说到堆外内存,那大家肯定想到堆内内存,这也是我们大家接触最多的,我们在jvm参数里通常设置-Xmx来指定我们的堆的最大值,不过这还不是我们理解的Java堆,-Xmx的值是新生代和老生代的和的最大值,我们在jvm参数里通常还会加一个参数-XX:MaxPermSize来指定持久代的最大值,那么我们认识的Java堆的最大值其实是-Xmx和-XX:MaxPermSize的总和,在分代算法下,...
2018-05-17 09:43:50 1069
原创 Guava基本使用
Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O 等等。guava类似Ap...
2018-05-15 16:31:33 770
原创 Mondrian开源OLAP引擎详解
Mondrian是一个基于Java语言的开源OLAP引擎,它通过MDX语句执行查询,从关系型数据库RDBMS中读取数据,然后经过Java API以多维度的形式展示查询结果。Mondrian是一个OpenSource的基于关系数据库的分析服务器,遵循MDX、XML/A和JOLAP标准。Mondrian的架构Mondrian从架构上可以分为四个层次:表现层、计算层、聚合层、存储层。表现层:指最终呈现在...
2018-05-14 16:09:35 6894
原创 Java8新特性简明教程
通过简单明了的代码示例,你将会学习到如何使用默认接口方法,Lambda表达式,方法引用和重复注解。看完这篇教程后,你还将对最新推出的API有一定的了解,例如:流控制,函数式接口,map扩展和新的时间日期API等等。允许在接口中有默认方法实现Java 8 允许我们使用default关键字,为接口声明添加非抽象的方法实现。这个特性又被称为扩展方法。下面是我们的第一个例子:1234567interfac...
2018-05-14 16:06:07 545
原创 TCP/IP协议三次握手和四次挥手详解
TCP(Transmission Control Protocol)网络传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议,数据传输前建立连接的工作要经过三次握手,数据传输后断开连接的工作要经过四次挥手。工作过程TCP标志位:TCP共有6个标志位,分别是:SYN(synchronous),建立联机。ACK(acknowledgement),确认。PSH(push),传输。FIN(f...
2018-05-14 11:22:50 964
原创 Go 方法与函数区别
方法是特殊的函数,定义在某一特定的类型上,通过类型的实例来进行调用,这个实例被叫接收者(receiver)。 函数将变量作为参数:Function1(recv) 方法在变量上被调用:recv.Method1() 接收者必须有一个显式的名字,这个名字必须在方法中被使用。 receiver_type 叫做 (接收者)基本类型,这个类型必须在和方法同样的包中被声明。在 Go 中,(接收者)类型关联的方法...
2018-05-14 11:11:25 8370 2
原创 Go 通道 Chan 详解
首先我们来看线程,在golang里面也叫goroutineGo 语言 select 语句select是Go中的一个控制结构,类似于用于通信的switch语句。每个case必须是一个通信操作,要么是发送要么是接收。select随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。一个默认的子句应该总是可运行的。语法Go 编程语言中 select 语句的语法如下:sel...
2018-05-11 11:14:41 2376
原创 kylin详细介绍
由eBay开源的一个大数据OLAP框架,2014年11月加入了Apache,项目名字也改成了“Apache Kylin”,Apache Kylin是唯一来自中国的Apache顶级开源项目,定位于在Hadoop平台之上实现传统数据仓库,商业智能的能力,提供交互式的,多维分析能力,并提供在传统数据仓库技术所不能做到的超大规模数据集的快速查询,并使用普通的PC硬件,而无需采购专用的,私有的一体机或者高端...
2018-05-10 11:35:14 3157 1
原创 Prometheus 简介
Prometheus 是什么?Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社区也十分活跃,他们便将它独立成开源项目,并且有公司来运作。google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容...
2018-05-10 10:04:27 2319
原创 Protocol 3.0基本使用
简介proto3语法定义一个 Message定义多个 message 类型定义变量类型分配Tag指定变量规则注释保留变量不被使用默认值定义枚举 Enumerations如何引用其他 proto 文件升级 proto 文件正确的姿势Any 的使用Oneof 的使用Maps 的使用Packages 的使用Options定义 Services简单RPC服务器端流式 RPC客户端流式 RPC双向流式 RP...
2018-05-09 10:10:43 1782
原创 docker Calico, Flannel, Weave and Docker Overlay
Calico, Flannel, Weave and Docker Overlay Network在以前的帖子中,分析了4种不同的Docker多主机网络解决方案 :Calico,Flannel,Weave和Docker Overlay Network。 Docker的多主机网络解决方案基于Docker 覆盖网络的FlannelDocker的网络管理 DockerDocker多主机覆盖网络与Etcd...
2018-05-08 15:10:14 1495
原创 Spark 内存管理详解
Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色。理解 Spark 内存管理的基本原理,有助于更好地开发 Spark 应用程序和进行性能调优。本文旨在梳理出 Spark 内存管理的脉络,抛砖引玉,引出读者对这个话题的深入探讨。本文中阐述的原理基于 Spark 2.1 版本,阅读本文需要读者有一定的 Spark 和 Java 基础,了解 RDD、Shuff...
2018-05-07 17:19:59 610
原创 堆外内存与堆内内存详解
堆外内存一直是Java业务开发人员难以企及的隐藏领域,究竟他是干什么的,以及如何更好的使用呢?那就请跟着我进入这个世界吧。一、什么是堆外内存1、堆内内存(on-heap memory)回顾堆外内存和堆内内存是相对的二个概念,其中堆内内存是我们平常工作中接触比较多的,我们在jvm参数中只要使用-Xms,-Xmx等参数就可以设置堆的大小和最大值,理解jvm的堆还需要知道下面这个公式:堆内内存 = 新生...
2018-05-07 17:14:42 33305 7
原创 多租户用户管理系统中常见的业务场景
在多租户用户管理系统中,常见的业务场景有以下几种:用户注册用户通过填写手机号码等信息,进行注册操作;该场景这重验证用户手机号码的有效性,一般通过短信验证码进行验证;租户注册用户通过填写租户的相关信息,注册租户,该用户默认为租户的超级管理员。该场景注重收集租户的相关信息;用户登录通过验证用户的手机和密码等方式,进行用户的登录认证操作,并查询出用户的关联租户信息。该场景重点关注用户身份认证的有效性和合...
2018-05-04 16:48:40 8991 1
原创 redis3.0 cluster功能介绍
redis3.0 cluster功能介绍redis从3.0开始支持集群功能。redis集群采用无中心节点方式实现,无需proxy代理,客户端直接与redis集群的每个节点连接,根据同样的hash算法计算出key对应的slot,然后直接在slot对应的redis上执行命令。在redis看来,响应时间是最苛刻的条件,增加一层带来的开销是redis不原因接受的。因此,redis实现了客户端对节点的直接访...
2018-05-04 16:44:33 430
原创 机器学习分类简单介绍
一,从机器学习问题角度分类我们先从机器学习问题本身分类的角度来看,我们可以分成下列类型的算法。监督学习机器学习中有一大部分的问题属于监督学习的范畴,简单口语化地说明,这类问题中,给定的训练样本中,每个样本的输入x都对应一个确定的结果y,我们需要训练出一个模型(数学上看是一个x→y的映射关系f),在未知的样本x′给定后,我们能对结果y′做出预测。这里的预测结果如果是离散值(很多时候是类别类型,比如邮...
2018-05-04 15:09:46 1733
原创 Linux proc文件系统说明
在Linux上,proc是一个伪文件系统,提供了访问内核数据的方法,一般挂载在“/proc”目录,其中的大部分内容是只读的,挂载(mount)信息可能为:proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)proc文件系统支持如下挂载选项:hidepid=_ngid=_gid_n设置访问“/proc/[pid]”目录的权限,可以取值为...
2018-05-04 14:11:38 3299
ReceiverCleanupUtility
2018-09-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人