
后端技术
文章平均质量分 90
cq1982
这个作者很懒,什么都没留下…
展开
-
深入理解Java Class文件格式(七)
本专栏列前面的一系列博客, 对Class文件中的一部分数据项进行了介绍。 本文将会继续介绍class文件中未讲解的信息。 先回顾一下上面一篇文章。 在上一篇博客中, 我们介绍了:this_class 对当前类的描述super_class 对当前类的超类的描述interfaces_count 当前类直接实现的接口的数量或当前接口直接继承的接口的数量interface转载 2015-06-02 11:47:48 · 405 阅读 · 0 评论 -
Java NIO 系列教程
Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。本系列教程将有助于你学习和理解Java NIO。感谢并发编程网的翻译和投递。 (关注ITeye官微,随时随地查看最新开发资讯、技术文章。) Java NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲转载 2015-06-03 23:38:07 · 399 阅读 · 0 评论 -
eclipse经常未响应优化
如果经常提示内存耗尽将eclipse.ini内容替换为以下代码-startupplugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar--launcher.libraryplugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503-produc转载 2015-06-03 10:30:39 · 41798 阅读 · 1 评论 -
CopyOnWriteArrayList 解读
一、 核心思想:CopyOnWriteArrayList的核心思想是利用高并发往往是读多写少的特性,对读操作不加锁,对写操作,先复制一份新的集合,在新的集合上面修改,然后将新集合赋值给旧的引用,并通过volatile 保证其可见性,当然写操作的锁是必不可少的了。二、类图预览: 方法基本分为CopyOnWriteArrayList、indexOf、contains转载 2015-06-03 16:13:14 · 444 阅读 · 0 评论 -
Ehcache详细解读
Ehcache 是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大,最初知道它,是从Hibernate的缓存开始的。网上中文的EhCache材料以简单介绍和配置方法居多,如果你有这方面的问题,请自行google;对于API,官网上介绍已经非常清楚,请参见官网;但是很少见到特性说明和对实现原理的分析,因此在这篇文章里面,我会详细介绍和分析EhCache的特性,加上一些自己的理解和思考转载 2015-06-03 16:01:45 · 387 阅读 · 0 评论 -
CopyOnWriteArrayList 解读
一、 核心思想:CopyOnWriteArrayList的核心思想是利用高并发往往是读多写少的特性,对读操作不加锁,对写操作,先复制一份新的集合,在新的集合上面修改,然后将新集合赋值给旧的引用,并通过volatile 保证其可见性,当然写操作的锁是必不可少的了。二、类图预览: 方法基本分为CopyOnWriteArrayList、indexOf、contains转载 2015-06-03 16:12:19 · 313 阅读 · 0 评论 -
Java并发教程(Oracle官方资料)
本文是Oracle官方的Java并发相关的教程,感谢并发编程网的翻译和投递。 (关注ITeye官微,随时随地查看最新开发资讯、技术文章。) 计算机的使用者一直以为他们的计算机可以同时做很多事情。他们认为当其他的应用程序在下载文件,管理打印队列或者缓冲音频的时候他们可以继续在文字处理程序上工作。甚至对于单个应用程序,他们任然期待它能在在同一时间做很多事情。举个例子,一个流媒体播放程序转载 2015-06-03 23:37:05 · 828 阅读 · 0 评论 -
Spring Cache抽象详解
缓存简介缓存,我的理解是:让数据更接近于使用者;工作机制是:先从缓存中读取数据,如果没有再从慢速设备上读取实际数据(数据也会存入缓存);缓存什么:那些经常读取且不经常修改的数据/那些昂贵(CPU/IO)的且对于相同的请求有相同的计算结果的数据。如CPU--L1/L2--内存--磁盘就是一个典型的例子,CPU需要数据时先从L1/L2中读取,如果没有到内存中找,如果还没有会到磁盘上找。还有如用转载 2015-06-04 16:52:27 · 670 阅读 · 0 评论 -
加速Java应用开发速度3——单元/集成测试+CI
《加速Java应用开发速度》系列目录:加速Java应用开发速度1——加速spring/hibernate应用调试时启动速度加速Java应用开发速度2——加速项目调试启动速度加速Java应用开发速度3——单元/集成测试+CI加速Java应用开发速度4——使用模板技术加速项目开发速度加速Java应用开发速度5——使用脚本自动化日常操作转载 2015-06-04 17:16:10 · 526 阅读 · 0 评论 -
JAVA自定义注释(Target,Retention,Documented,Inherit)
定义自己的注释类型通过添加了一个小小的语法(Tiger 添加了大量的语法结构),Java 语言支持一种新的类型 —— 注释类型(annotation type) 。注释类型看起来很像普通的类,但是有一些特有的性质。最明显的一点是,可以在类中以符号( @ )的形式注释其他 Java 代码。我将一步一步地介绍这个过程。@interface 声明定义新的注释类型与创建接口转载 2015-06-05 15:18:18 · 561 阅读 · 0 评论 -
Ehcache 整合Spring 使用页面、对象缓存
Ehcache在很多项目中都出现过,用法也比较简单。一般的加些配置就可以了,而且Ehcache可以对页面、对象、数据进行缓存,同时支持集群/分布式缓存。如果整合Spring、Hibernate也非常的简单,Spring对Ehcache的支持也非常好。EHCache支持内存和磁盘的缓存,支持LRU、LFU和FIFO多种淘汰算法,支持分布式的Cache,可以作为Hibernate的缓存插件。同时它也能转载 2015-06-03 15:37:40 · 407 阅读 · 0 评论 -
Class文件格式总结
到此, 所有关于class文件格式的重要内容都已经讲解完了, 不敢说面面俱到, 但是敢说大部分重要的内容都包含在内了。前前后后用了9篇博客来专门讲解class文件结构, 为什么花那么多的时间和精力来介绍class文件呢? 简而言之,因为它很重要。在前面的文章中, 也讲到过为什么对于理解Java体系结构来说, 理解class文件的格式至关重要。 其实这篇短文也不是对class文件格式细节上的总结,转载 2015-06-02 11:53:04 · 454 阅读 · 0 评论 -
深入理解Java Class文件格式(六)
经过前几篇文章, 终于将常量池介绍完了, 之所以花这么大的功夫介绍常量池, 是因为对于理解class文件格式,常量池是必须要了解的, 因为class文件中其他地方,大量引用了常量池中的数据项。 对于还不了解常量池的读者, 如果想要深入了解class文件格式, 或者想继续读这篇博客和本专栏以后的博客, 那么我建议先把我前面的几篇博客读一下,把常量池的结构熟悉一下, 对于理解后面的内容很有帮助。转载 2015-06-02 11:45:40 · 396 阅读 · 0 评论 -
深入理解Java Class文件格式(八)
在本专栏的第一篇文章 深入理解Java虚拟机到底是什么 中, 我们主要讲解了什么是虚拟机, 这篇博客是对JVM的一个概述。 在随后的几篇文章中,一直在讲解class文件格式。 在今天这篇博客中, 将会继续讲解class文件中的其他信息。 在本文中, 将会讲解class文件中的最后一部分, 属性(attributes) 。 这里的属性和源文件中的属性不是一个概念。 在源文件中, 我们把在类中定义转载 2015-06-02 11:49:07 · 578 阅读 · 0 评论 -
深入理解Java Class文件格式(二)
在上一篇文章 深入理解Java Class文件格式(一) 中, 介绍了class文件在整个java体系结构中的位置和作用, 并对class文件的整体格式做了说明, 介绍了其中的魔数和版本号的相关内容, 并对常量池做了概述。 在本文章, 继续介绍class文件中的其他内容。class文件中的特殊字符串首先说明一下, 所谓的特殊字符串出现在class文件中的常量池中,转载 2015-06-02 11:36:24 · 386 阅读 · 0 评论 -
深入理解Java Class文件格式(四)
前情回顾在上一篇博客深入理解Java Class文件格式(三) 中, 介绍了常量池中的两种类型的数据项, 分别是CONSTANT_Utf8_infoCONSTANT_NameAndType_info 。CONSTANT_Utf8_info中存储了几乎所有类型的字符串, 包括方法名, 字段名, 描述符等等。 而CONSTANT_NameAndType_info是方转载 2015-06-02 11:41:14 · 460 阅读 · 0 评论 -
Java并发概念汇总
看了《Java编程思想 第4版》并发这一章,觉得有必要整理一下其中的概念。并发为什么要并发? 比如因为IO操作遇到了阻塞,CPU可以转去执行其他线程,这时并发的优点就显示出来了:更高效的利用CPU,提高程序的响应速度。Java的线程机制是抢占式的,会为每个线程分配时间片。线程中断与上下文切换并发编程 - 多线程的代价及上下文切换 上下文切换与多处理器转载 2015-06-02 11:31:08 · 579 阅读 · 0 评论 -
深入理解Java Class文件格式(一)
Class文件在Java体系结构中的位置和作用在上一篇博客中, 大致讲解了Java虚拟机的体系结构和执行原理。 本篇博客主要讲解能够被JVM识别, 加载并执行的class文件的格式。对于理解JVM和深入理解Java语言, 学习并了解class文件的格式都是必须要掌握的功课。 原因很简单, JVM不会理解我们写的Java源文件, 我们必须把Java源文件编译成转载 2015-06-02 11:35:50 · 444 阅读 · 0 评论 -
Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Class对象: class字节码文件是根据JVM虚拟机规范中规定的字节码组织规则生转载 2015-06-02 11:59:42 · 1778 阅读 · 0 评论 -
深入理解Java虚拟机到底是什么
什么是Java虚拟机作为一个Java程序员,我们每天都在写Java代码,我们写的代码都是在一个叫做Java虚拟机的东西上执行的。但是如果要问什么是虚拟机,恐怕很多人就会模棱两可了。在本文中,我会写下我对虚拟机的理解。因为能力所限,可能有些地方描述的不够欠当。如果你有不同的理解,欢迎交流。我们都知道java程序必须在虚拟机上运行。那么虚拟机到底是什么呢?先看网上搜索到的比较靠谱的转载 2015-06-02 11:31:15 · 467 阅读 · 0 评论 -
深入理解Java Class文件格式(九)
经过前八篇关于class文件的博客, 关于class文件格式的内容也基本上讲完了。 本文是关于class文件格式的最后一篇。 在这篇博客中, 将会讲解关于方法的几个属性。 理解这篇博客的内容, 对于理解JVM执行引擎起着重要作用。 关于虚拟机执行引擎有关的内容, 会在本专栏后面的博客中涉及。 在前面几篇博客中, 我们知道在class文件中描述一个方法, 会使用一个method_转载 2015-06-02 11:52:14 · 502 阅读 · 0 评论 -
log4j详解与实战
log4j是一个非常强大的log记录软件,下面我们就来看看在项目中如何使log4j。 首先当然是得到log4j的jar档,推荐使用1.2.X版,下载地址:http://logging.apache.org/log4j/1.2/download.html 我们先看一个最简单的示例:【示例1】项目结构:【注:由于这里的多个项目公用转载 2015-06-06 19:02:25 · 589 阅读 · 0 评论 -
分布式服务框架 Zookeeper -- 管理分布式环境中的数据
Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。本文将从使用者角度详细介绍 Zookeeper 的安装和配置文件中各个配置项的意义,以及分析 Zookeeper 的典型的应用场景(配置文件的管理、集群管理、同步锁、Leader 选举、队列管转载 2015-06-08 17:15:12 · 504 阅读 · 0 评论 -
Java @override报错的解决方法
有时候Java的Eclipse工程换一台电脑后编译总是@override报错,把@override去掉就好了,但不能从根本上解决问题,因为有时候有@override的地方超级多。这是jdk的问题,@Override是JDK5就已经有了,但是不支持对接口的实现,认为这不是Override而报错。JDK6修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上@Override。转载 2015-06-09 14:48:05 · 484 阅读 · 0 评论 -
memcached全面剖析–3. memcached的删除机制和发展方向
下面是《memcached全面剖析》的第三部分。发表日:2008/7/16 作者:前坂徹(Toru Maesaka) 原文链接:http://gihyo.jp/dev/feature/01/memcached/0003memcached是缓存,所以数据不会永久保存在服务器上,这是向系统中引入memcached的前提。 本次介绍memcached的数据删除机制,以及memca转载 2015-05-24 23:59:13 · 326 阅读 · 0 评论 -
高吞吐低延迟Java应用的垃圾回收优化
高性能应用构成了现代网络的支柱。LinkedIn有许多内部高吞吐量服务来满足每秒数千次的用户请求。要优化用户体验,低延迟地响应这些请求非常重要。比如说,用户经常用到的一个功能是了解动态信息——不断更新的专业活动和内容的列表。动态信息在LinkedIn随处可见,包括公司页面,学校页面以及最重要的主页。基础动态信息数据平台为我们的经济图谱(会员,公司,群组等等)中各种实体的更新建立索引,它必须转载 2015-05-24 23:24:49 · 435 阅读 · 0 评论 -
memcached完全剖析–1. memcached的基础
翻译一篇技术评论社的文章,是讲memcached的连载。fcicq同学说这个东西很有用,希望大家喜欢。发表日:2008/7/2 作者:长野雅广(Masahiro Nagano) 原文链接:http://gihyo.jp/dev/feature/01/memcached/0001我是mixi株式会社开发部系统运营组的长野。 日常负责程序的运营。从今天开始,将分几次针对最近在W转载 2015-05-24 23:47:42 · 553 阅读 · 0 评论 -
memcached全面剖析–4. memcached的分布式算法
发表日:2008/7/23 作者:长野雅广(Masahiro Nagano) 原文链接:http://gihyo.jp/dev/feature/01/memcached/0004我是Mixi的长野。 第2次、 第3次 由前坂介绍了memcached的内部情况。本次不再介绍memcached的内部结构, 开始介绍memcached的分布式。memcached的分布式转载 2015-05-25 00:01:07 · 311 阅读 · 0 评论 -
memcached全面剖析–5. memcached的应用和兼容程序
发表日:2008/7/30 作者:长野雅广(Masahiro Nagano) 原文链接:http://gihyo.jp/dev/feature/01/memcached/0005我是Mixi的长野。memcached的连载终于要结束了。 到上次为止, 我们介绍了与memcached直接相关的话题,本次介绍一些mixi的案例和 实际应用上的话题,并介绍一些与memcached兼容的程转载 2015-05-25 00:03:07 · 443 阅读 · 0 评论 -
一个牛x的mock框架--Powermock
首先,官网:http://code.google.com/p/powermock/先做好心理准备,这个开源工具的官网基本上没啥文字说明。但是可以下载源代码,里面有一些示例测试用例。 当你的领导对你说,UT的代码覆盖率要达到100%!!你会觉得这人疯了。但是现在有了powermock,100%就成为the goal you can reach!!!powermock将以往转载 2015-07-08 17:20:56 · 978 阅读 · 0 评论 -
5分钟了解Mockito
一、什么是mock测试,什么是mock对象? 先来看看下面这个示例:从上图可以看出如果我们要对A进行测试,那么就要先把整个依赖树构建出来,也就是BCDE的实例。 一种替代方案就是使用mocks从图中可以清晰的看出mock对象就是在调试期间用来作为真实对象的替代品。mock测试就是在测试过程中,对那些不容易构建的对象用一个虚拟对象来代替测试的方法就叫mock测转载 2015-07-08 17:21:28 · 1049 阅读 · 0 评论 -
hessian学习
hessian是一个采用二进制格式传输的服务框架,相对传统soap web service,更轻量,更快速。官网地址:http://hessian.caucho.com/目前已经支持N多语言,包括:java/c#/flex/php/ruby...maven的依赖项如下:1 dependency>2 groupId>com.cauchogroupId>3 arti转载 2015-05-25 11:13:46 · 523 阅读 · 0 评论 -
自己动手整合 Hessian 到 Hasor 中发布服务
Hessian 是一种通信协议,使用 Hessian 可以实现跨平台的方法调用,有点类似 SOAP。您可以使用下面任意一种语言通过 Hessian 协议进行互相调用,Hessian 本身使用的是二进制传输格式。 好了废话不多说,这篇文章是源于和 OSC 上的朋友进行讨论最后得出的,现在拿出来和大家分享一下。 首先我们假想这样一段代码用来发布 Hessian 服务:转载 2015-05-25 11:34:53 · 570 阅读 · 0 评论 -
memcached全面剖析–2. 理解memcached的内存存储
下面是《memcached全面剖析》的第二部分。发表日:2008/7/9 作者:前坂徹(Toru Maesaka) 原文链接:http://gihyo.jp/dev/feature/01/memcached/0002我是mixi株式会社研究开发组的前坂徹。 上次的文章介绍了memcached是分布式的高速缓存服务器。 本次将介绍memcached的内部构造的实现方式,以转载 2015-05-24 23:49:15 · 332 阅读 · 0 评论 -
Java 6,7,8 中的 String.intern – 字符串池
这篇文章将要讨论 Java 6 中是如何实现 String.intern 方法的,以及这个方法在 Java 7 以及 Java 8 中做了哪些调整。字符串池字符串池(有名字符串标准化)是通过使用唯一的共享 String 对象来使用相同的值不同的地址表示字符串的过程。你可以使用自己定义的 Map<String, String> (根据需要使用 weak 引用或者 soft 引用)转载 2015-05-24 23:23:26 · 1480 阅读 · 0 评论 -
深入理解Java:注解(Annotation)自定义注解入门
要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法。元注解: 元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解: 1.@Target,转载 2015-06-09 09:23:45 · 412 阅读 · 0 评论 -
深入理解Java:注解(Annotation)基本概念
什么是注解(Annotation): Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法。Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对象来获取注解里面的元数据。 Annotation(注解)是JDK5.0及以后版本引入的。它可以用于转载 2015-06-09 09:28:23 · 544 阅读 · 0 评论 -
深入理解Java:注解(Annotation)--注解处理器
如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了。使用注解的过程中,很重要的一部分就是创建于使用注解处理器。Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器。注解处理器类库(java.lang.reflect.AnnotatedElement): Java使用Annotation接口来代表程序元素前面的注解,该接口是所有Anno转载 2015-06-09 09:36:52 · 416 阅读 · 0 评论 -
Spring HTTP invoker简介
Spring HTTP invoker简介Spring HTTP invoker是spring框架中的一个远程调用模型,执行基于HTTP的远程调用(意味着可以通过防火墙),并使用java的序列化机制在网络间传递对象。客户端可以很轻松的像调用本地对象一样调用远程服务器上的对象,这有点类似于webservice,但又不同于webservice,区别如下:webservice转载 2015-06-09 17:13:35 · 572 阅读 · 0 评论 -
Spring中使用Hessian暴露服务
Spring Framework中有对RMI,Hessian,Burlap,JAX-RPC,JAX-WS.JMS的服务支持,更方便的用于开发异构的服务系统,自身也有HTTPinvoker技术提供远端服务.以下示例来自SpringFramework-doc文档, 我们先建立用于测试的实体、服务接口类:public class Account implements Serializ转载 2015-06-09 17:17:46 · 1650 阅读 · 0 评论