JAVA
文章平均质量分 79
Kuzury
这个作者很懒,什么都没留下…
展开
-
JAVA 配置管理库 typesafe.config
Typesafe的Config库,纯Java写成、零外部依赖、代码精简、功能灵活、API友好。支持Java properties、JSON、JSON超集格式HOCON以及环境变量。它也是Akka的配置管理库。特性:纯java实现,无任何依赖充分的测试支持: Java properties, JSON, and a human-friendly JSON superset可以合并各种格式的配置原创 2017-07-27 18:13:14 · 5880 阅读 · 1 评论 -
HashMap和Hashtable的区别
HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。 1.HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行)。原创 2017-08-31 12:24:22 · 310 阅读 · 0 评论 -
ConcurrentHashMap原理分析
集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理上细致的了解它们,能够让我们在深度项目开发中获益非浅。原创 2017-08-31 12:18:21 · 288 阅读 · 0 评论 -
LinkedList源码解析
一、源码解析1、 LinkedList类定义2、LinkedList数据结构原理3、私有属性4、构造方法5、元素添加add()及原理6、删除数据remove()7、数据获取get()8、数据复制clone()与toArray()9、遍历数据:Iterator()二、ListItr 一、源码解析 1、 LinkedList类定义。 public class LinkedList<E>原创 2017-08-31 12:15:58 · 332 阅读 · 0 评论 -
大数据开源组件图谱
文件系统数据存储内存技术数据搜集消息系统数据处理查询引擎分析和报告工具调度与管理服务机器学习开发平台文件系统 HDFS Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。 GlusterFS原创 2017-04-13 13:50:38 · 13756 阅读 · 0 评论 -
OSGi的作用
Java的类加载器(Classloader)是一种分层结构,如下图所示,分为引导类加载器(Bootstrap Class Loader),扩展类加载器(Extension Class Loader),系统类加载器(System Class Loader)以及用户定义的类加载器(User-defined Class Loader)。引导类加载器在JVM时负责加载rt.jar里面的类,扩展类加载器负责加原创 2017-04-13 13:42:34 · 1812 阅读 · 0 评论 -
java.util.concurrent 源码分析-包结构
concurrent包结构:第一部分 Aomic数据类型这部分都被放在java.util.concurrent.atomic这个包里面,实现了原子化操作的数据类型,包括 Boolean, Integer, Long, 和Referrence这四种类型以及这四种类型的数组类型。 第二部分 锁这部分都被放在java.util.concurrent.lock这个包里面,实现了并发操作中的几种类型的原创 2017-03-10 18:08:35 · 910 阅读 · 0 评论 -
JAVA Lock与CAS 分析
原子(atomic),本意是指“不能被进一步分割的粒子”。原子操作意味着“不可被中断的一个或一系列操作”。在Java中通过锁和循环CAS的方式实现原子操作。锁锁机制保证了只有获得锁的线程才能操作锁定的内存区域,在JDK 5之前Java语言是靠synchronized关键字保证同步的,synchronized可以保证方法或代码块在运行时,同一时刻只有一个线程可以进入到临界区(互斥性),同时它还保证了共原创 2017-03-04 12:19:29 · 4411 阅读 · 0 评论 -
微服务安全和治理
在整体式架构中,由于运行应用程序的运行时环境相对隔离,所以治理和安全保护很简单。微服务架构具有典型的革新特征,给活动的治理和应用程序的安全威胁保护带来了更多挑战。 微服务架构中的安全性微服务架构通过定义分布式特征来获得灵活性,系统中的服务能够以分散方式独立开发和部署。从安全角度讲,这种开放架构的一个缺陷是,系统现在更脆弱,因为攻击面增加了。开放的端口更多,API 是公开的,而且安全保护变得更复杂,转载 2017-04-13 13:27:06 · 7879 阅读 · 1 评论 -
微服务企业数据访问模式
本文将介绍在使整体式应用程序演化为微服务架构时要考虑的重要数据库主题。其中将介绍一些可能遇到的挑战,以及可用来解决这些挑战的模式。还将通过一个示例,展示将 Java 应用程序从整体式模式转变为微服务的必要任务。 分布式数据管理常见的整体式应用程序通常会使用一个或两个关系数据库,数据库中包含运行系统所需的所有信息。这个整体式应用程序通常由一个专门的团队管理。该应用程序的架构使添加新功能、扩展和更改应转载 2017-04-13 13:15:30 · 2160 阅读 · 0 评论 -
ThreadLocal
ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把它命名为ThreadLocalVariable更容易让人理解一些。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。从线程的角度看,目标变量就象是线程的本地变量,这也是类名中“Local”所要表原创 2017-08-31 12:42:58 · 337 阅读 · 0 评论 -
HashMap源码剖析
Java集合—HashMap源码剖析 一、HashMap概述二、HashMap的数据结构三、HashMap源码分析 1、关键属性 2、构造方法 3、存储数据 4、调整大小 5、数据读取 6、HashMap的性能参数 7、Fail-Fast机制 一、H原创 2017-08-31 09:55:47 · 394 阅读 · 0 评论 -
KAFKA 知识点
Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务。它主要用于处理活跃的流式数据。 在大数据系统中,常常会碰到一个问题,整个大数据是由各个子系统组成,数据需要在各个子系统中高性能,低延迟的不停流转。传统的企业消息系统并不是非常适合大规模的数据处理。为了能在同时搞定在线应原创 2017-02-10 15:44:52 · 776 阅读 · 0 评论 -
Netty 3.x 和Netty4.x 开发示例
jboss规则引擎KIE Drools 前言目前世面上中文的KIE DROOLS Workbench(JBOSS BRMS)的教程几乎没有,有的也只有灵灵碎碎的使用机器来翻译的(翻的不知所云)或者是基于老版本的JBOSS Guvnor即5.x的一些教程,而且这些教程都是”缺胳膊少腿“的,初学者看后不知道它到底在干吗?能干吗?能够解决自己系统中什么问题。所以笔原创 2017-03-16 16:58:43 · 2231 阅读 · 0 评论 -
JUC 多线程辅助类
PAAS平台公共组件开发工程工程师XXAPM是一款面向大规模、分布式系统、多服务的应用性能管理(APM,Application Performance Management)工具。以Google Dapper为原型,通过跟踪分布式应用内各个组件间的事务,提供了分析系统的整体架构和各组件的交互行为的解决方案。 安装简单,无需改动应用已有的代码,对性能冲击非常低,支持基于JAVA、Python、原创 2017-03-13 19:14:19 · 560 阅读 · 0 评论 -
理解ClassLoader
当JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构: bootstrap classloader | extension classloader | system classloaderbootstrap classloader - 引导(也称为原始)类加载器,它负责加载Java的核心类。在Su原创 2017-04-11 20:15:38 · 495 阅读 · 0 评论 -
深入探索 Java 热部署
深入探索 Java 热部署 在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。本文将探索如何在不破坏 Java 虚拟机现有行为的前提下,实现某个单一类的热部署,让系统无需重启就完成某个类的更新。转载 2017-04-13 09:17:12 · 447 阅读 · 0 评论 -
JAVA AgentMain开发示例
agentmain方式premain时Java SE5开始就提供的代理方式,给了开发者诸多惊喜,不过也有些须不便,由于其必须在命令行指定代理jar,并且代理类必须在main方法前启动。因此,要 求开发者在应用前就必须确认代理的处理逻辑和参数内容等等,在有些场合下,这是比较苦难的。比如正常的生产环境下,一般不会开启代理功能,但是在发生问题 时,我们不希望停止应用就能够动态的去修改一些类的行为,以帮助排原创 2017-04-11 19:43:06 · 6071 阅读 · 0 评论 -
JAVA 资源获取方法
在开发java程序的过程中,我们经常要做的一件事就是获取资源。在java程序中资源的存放位置也是各异的。有的存放在classpath中,有的存放在文件系统中,有的存放在web应用中。而对于不同位置的资源,java程序获取这些资源的方法各有不同。URL url = this.getClass().getResource("resource_name");URL url = this.getClass原创 2017-04-11 19:59:35 · 997 阅读 · 0 评论 -
JAVA字节码增强技术之ASM分析2
3、使用ASMAPI生成和转换class中的方法前面已经简单介绍过已编译的class文件中的方法是由字节码指令序列构成,因此使用ASMAPI生成和转换class文件中的方法需要具备基本的字节码指令知识和基本的字节码指令运行原理。3.1、执行模型 我们知道java代码是运行在java虚拟机的线程中,每一个线程拥有各自的执行栈,执行栈由多个帧组成。每个帧可以代表一个方法的运行转载 2017-03-17 10:10:29 · 668 阅读 · 0 评论 -
JAVA字节码增强技术之ASM
ASM是一款基于java字节码层面的代码分析和修改工具;无需提供源代码即可对应用嵌入所需debug代码,用于应用API性能分析,代码优化和代码混淆等工作。ASM的目标是生成,转换和分析已编译的java class文件,可使用ASM工具读/写/转换JVM指令集。ASM工具提供两种方式来产生和转换已编译的class文件,它们分别是基于事件和基于对象的表示模型。其中,基于事件的表示模型使用一个有序的事转载 2017-03-17 10:07:23 · 10534 阅读 · 0 评论 -
JAVA字节码增强技术之ASM示例
ASM系列之一:初探ASM一、什么是ASM ASM是一个JAVA字节码分析、创建和修改的开源应用框架。在ASM中提供了诸多的API用于对类的内容进行字节码操作的方法。与传统的BCEL和SERL不同,在ASM中提供了更为优雅和灵活的操作字节码的方式。目前ASM已被广泛的开源应用架构所使用,例如:Spring、Hibernate等。二、ASM能干什么 分析一个类、从字节码角度创建一个类、修转载 2017-04-11 16:56:32 · 6365 阅读 · 1 评论 -
JAVA Agent 简析及开发示例
Java.lang.Instrument包是在JDK5引入的,程序员通过修改方法的字节码实现动态修改类代码。这通常是在类的main方法调用之前进行预处理的操作,通过java指定该类的代理类来实现。代理 (agent) 是在你的main方法前的一个拦截器 (interceptor),也就是在main方法执行之前,执行agent的代码。agent的代码与你的main方法在同一个JVM中运行,并被同一个原创 2017-03-17 10:00:38 · 10339 阅读 · 0 评论 -
java.util.concurrent 包源码分析之Fork/Join框架
在JDK7引入了Fork/Join框架,所谓Fork/Join框架,个人理解,有一种分治的策略在里边:Fork分解任务成独立的子任务,用多线程去执行这些子任务,Join合并子任务的结果。这样就能使用多线程的方式来执行一个任务。JDK7引入的Fork/Join有三个核心类:ForkJoinPool,执行任务的线程池ForkJoinWorkerThread,执行任务的工作线程ForkJoinTask,一原创 2017-03-14 15:54:06 · 1163 阅读 · 1 评论 -
深入理解Java注解
注解作用:每当你创建描述符性质的类或者接口时,一旦其中包含重复性的工作,就可以考虑使用注解来简化与自动化该过程。Java提供了四种元注解,专门负责新注解的创建工作。 元注解 元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解: 1.@Target,原创 2017-08-31 13:20:27 · 529 阅读 · 0 评论 -
微服务演化策略
微服务:演化架构的性质架构通常是按照据预定义的原则来创建的,这些原则有助于反映企业的业务策略目标。业务模式可能很少改变,但在当今环境中,企业希望建立高度可扩展的业务来应对更多的交易并为更多的客户服务。他们需要有灵活的运营流程来快速进军新市场,并提高现有市场中的创新能力。一些不变的共同目标催生了一组架构原则,促使企业以进化方式搭建、设计、实现和运行 IT 系统。演化架构的最重要原则之一是,能够支持技术转载 2017-04-13 11:37:06 · 1788 阅读 · 0 评论 -
微服务处理数据
在微服务系统中,具有混合持久性的环境时,有必要让数据处理保持可管理。为了解释如何实现此目标,本章会简要介绍微服务在数据处理方面的特征,然后介绍如何使用基于 Java 的微服务实现此目的。 微服务特定于数据的特征识别数据的一种方式是自上而下的方法,数据必须存储在您的微服务的数据存储中。从业务级别开始建模您的数据。以下各节将介绍如何识别此数据,如何处理它,以及如何与其他微服务的其他数据存储共享它。有关转载 2017-04-13 11:03:46 · 7593 阅读 · 0 评论 -
在 Java 中创建微服务
创建由微服务组成的应用程序的前景给所有语言都带来了一些疑问:微服务应该有多大?对于传统的集中化治理,做一件事的专注服务的概念有何意义?微服务会如何处理传统的数据建模方式?本章将重点介绍如何识别和创建组成应用程序的微服务,特别是如何将识别的候选服务转换为 RESTful API,然后在 Java 中实现它。 示例应用程序我们使用两个示例应用程序来帮助解释相关概念和提出观点: 在线零售店在线零转载 2017-04-13 10:54:44 · 6003 阅读 · 1 评论 -
JAVA和微服务
微服务是一种架构,其中的大型、复杂的软件应用程序由一个或多个更小的服务组成。每个微服务仅负责完成一项代表一种小业务能力的任务。这些微服务可使用任何编程语言开发。微服务是一种架构,其中的大型、复杂的软件应用程序由一个或多个更小的服务组成。每个微服务仅负责完成一项代表一种小业务能力的任务。这些微服务可使用任何编程语言开发。本系列内容针对 Java 的微服务最佳实践展开讲解。文中会涉及最新版的 IBM W转载 2017-04-13 09:32:41 · 5997 阅读 · 1 评论 -
JAVA ClassLoader 初探
JVM规范定义了两种类型的类装载器:启动内装载器(bootstrap)和用户自定义装载器(user-defined class loader)。户自定义装载器(user-defined class loader) Extension ClassLoader和AppClassLoaderJVM在运行时会产生三个ClassLoader,Bootstrap ClassLoader、ExtensionCl原创 2017-03-17 09:45:03 · 280 阅读 · 0 评论 -
Memcached 使用举例及原理解释
代码示例:import Java.util.Date;import com.danga.MemCached.MemCachedClient;import com.danga.MemCached.SockIOPool;/*** 使用memcached的缓存实用类.** @author Aires**/public class MemcacheDemo{ // 创建全局的唯一原创 2017-03-17 09:30:02 · 1156 阅读 · 0 评论 -
深入理解HTTP协议
1. 基础概念篇1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名转载 2017-04-10 11:29:52 · 553 阅读 · 0 评论 -
java.util.concurrent 包源码分析之线程池
concurrent包中Executor接口的主要类的关系图如下:ExecutorExecutor接口非常单一,就是执行一个Runnable的命令。public interface Executor { void execute(Runnable command);}ExecutorServiceExecutorService接口扩展了Executor接口,增加状态控制,执行多个任务返回F原创 2017-03-13 16:18:21 · 473 阅读 · 0 评论 -
java.util.concurrent 包源码分析之线程同步辅助
CyclicBarrierCyclicBarrier是一个用于线程同步的辅助类,它允许一组线程等待彼此,直到所有线程都到达集合点,然后执行某个设定的任务。现实中有个很好的例子来形容:几个人约定了某个地方集中,然后一起出发去旅行。每个参与的人就是一个线程,CyclicBarrier就是那个集合点,所有人到了之后,就一起出发。CyclicBarrier的构造函数有两个:// parties是参与等待的线原创 2017-03-14 15:10:36 · 345 阅读 · 0 评论