Java高级/网络基础和缓存分析
坦GA
积沙成塔
展开
-
Java的动态代理机制和Spring的实现方式
JAVA 代理实现代理的实现分动态代理和静态代理,静态代理的实现是对已经生成了的JAVA类进行封装。动态代理则是在运行时生成了相关代理累,在JAVA中生成动态代理一般有两种方式。JDK自带实现方法JDK实现代理生成,是用类 java.lang.reflect.Proxy, 实现方式如下EX:public class JDKProxy {转载 2016-08-09 10:07:23 · 1455 阅读 · 0 评论 -
分布式事务介绍
事务就是一个会话过程中,对上下文的影响是一致的,要么所有的更改都做了,要么所有的更变都撤销掉。就要么生,要么死。没有半死不死的中间不可预期状态。事务是为了保障业务数据的完整性和准确性的。分布式事务,常见的两个处理办法:1)两段式提交:典型的就是XA,有个事务协调器,告诉大家,来都准备好提交,大家回复,都准备好了,然后协调器告诉大家,一起提交,大家都提交了。2)补偿:转载 2016-08-31 19:35:12 · 667 阅读 · 0 评论 -
关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究
本文原文连接: http://blog.csdn.net/bluishglc/article/details/7612811 ,转载请注明出处!1.XAXA是由X/Open组织提出的分布式事务的规范。XA规范主要定义了(全局)事务管理器(Transaction Manager)和(局部)资源管理器(Resource Manager)之间的接口。XA接口是双向的系统接口,转载 2016-08-31 20:02:04 · 631 阅读 · 0 评论 -
12款Java工具:源代码优化与分析
本文介绍一些Java源代码优化和分析工具,以帮助我们优化代码以及检查源代码中的潜在问题。 本文英文原文来源:http://java.dzone.com/articles/java-tools-source-code 1. PMD 网址:http://pmd.sourceforge.net/ PMD能够扫描Java 源代码,查找类似以转载 2016-09-01 15:03:49 · 555 阅读 · 0 评论 -
Java ClassLoader原理详细分析
一、什么是ClassLoader?大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个class文件中要调用另外一个class文件中的方法,如果另外一个文件不存在的,则会引发系统异转载 2016-08-08 18:26:00 · 586 阅读 · 0 评论 -
常用Java profiling工具的分析与比较
在 Java 程序的开发过程中,不可避免地会遇到内存使用、性能瓶颈等问题。Java Profiler 工具能帮助开发人员快速、有效地定位这些问题,因此成为了 Java 开发过程中的一个重要工具。目前市场上的 Java Profiler 工具种类繁多,本文将对目前比较常见的几种工具进行简要介绍,并从功能、性能等角度作比较,从而帮助 Java 程序员选择合适的 Java Profiler 工具。转载 2016-09-01 21:41:04 · 9416 阅读 · 0 评论 -
十大网站压力测试软件-- WEB压力测试工具介绍
Grinder Grinder是一个开源的JVM负载测试框架,它通过很多负载注射器来为分布式测试提供了便利。 支持用于执行测试脚本的Jython脚本引擎HTTP测试可通过HTTP代理进行管理。根据项目网站的说法,Grinder的 主要目标用户是“理解他们所测代码的人——Grinder不仅仅是带有一组相关响应时间的‘黑盒’测试。由于测试过程可以进行编码——而不是简单地脚本 化,所以程序员转载 2016-09-02 13:28:48 · 3168 阅读 · 0 评论 -
Java中典型的内存泄露问题和解决方法
Q:在Java中怎么可以产生内存泄露?A:Java中,造成内存泄露的原因有很多种。典型的例子是一个没有实现hasCode和equals方法的Key类在HashMap中保存的情况。最后会生成很多重复的对象。所有的内存泄露最后都会抛出OutOfMemoryError异常,下面通过一段简短的通过无限循环模拟内存泄露的例子说明一下。复制代码代码如下:import转载 2016-09-02 16:56:06 · 997 阅读 · 0 评论 -
Java内存泄露原因详解
一、Java内存回收机制 不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址。Java中对象是采用new或者反射的方法创建的,这些对象的创建都是在堆(Heap)中分配的,所有对象的回收都是由Java虚拟机通过垃圾回收机制完成的。GC为了能够正确释放对象,会监控每个对象的运行状况,对他们的申请、引用、被引用、赋值等状况进行监控,Java会使用有向图的方转载 2016-09-02 16:53:03 · 396 阅读 · 0 评论 -
Java Jedis连接池的使用
所需jar:jedis-2.1.0.jar和commons-pool-1.5.4.jarJedis操作步骤如下:1->获取Jedis实例需要从JedisPool中获取;2->用完Jedis实例需要返还给JedisPool;3->如果Jedis在使用过程中出错,则也需要还给JedisPool;[java] view plain copy print转载 2016-09-02 17:37:48 · 482 阅读 · 0 评论 -
Manifest.mf文件内容详解
打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录, 这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息,下面将详细介绍MANIFEST.MF文件的内 容,先来看struts.jar中包含的MANIFEST.MF文件内容:Manifest-Version: 1.0Created-By: Apache Ant 1.5.1转载 2016-09-03 20:50:08 · 769 阅读 · 0 评论 -
Java中Jar文件及签名工具详解
附:大多数 Java 程序员都熟悉对 JAR 文件的基本操作。但是只有少数程序员了解 JAR 文件格式的 强大功能。在本文中,作者探讨了JAR 格式的许多功能和优势,包括打包、可执行的 JAR 文件、安全性和索引。JAR 文件是什么?JAR 文件格式以流行的 ZIP 文件格式为基础,用于将许多个文件聚集为一个文件。与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还转载 2016-09-03 20:51:53 · 3535 阅读 · 0 评论 -
XSD(Xml Schema Definition)详解
Xml Schema的用途1. 定义一个Xml文档中都有什么元素2. 定义一个Xml文档中都会有什么属性3. 定义某个节点的都有什么样的子节点,可以有多少个子节点,子节点出现的顺序4. 定义元素或者属性的数据类型5. 定义元素或者属性的默认值或者固定值Xml Schema的根元素表示数据类型等定义来自w3targetNamespace="htt转载 2016-09-04 12:28:13 · 1817 阅读 · 0 评论 -
Java并发编程中状态依赖性的管理
类库中包含了很多状态依赖性的类,例如FutureTask、Semaphore和BlockingQueue等。在这些类的一些操作中有着基于状态的前提条件,例如,不能从一个空的队列中删除元素,或者获取一个尚未结束的任务的计算结果,在这些操作可以执行之前,必须等到队列进入“非空”状态,或者任务进入“已完成”状态。在单线程程序中调用一个方法时,如果某个基于状态的前提条件未得到满足(例如“连接池必须非空原创 2016-08-11 10:02:51 · 1243 阅读 · 0 评论 -
Java锁优化
锁优化技术:适应性自旋(Adaptive Spinning)、锁消除(Lock Elimination)、锁粗化(Lock Coarsening)、轻量级锁(Lightweight Locking)和偏向锁(Biased Locking)等。这些技术都是为了在线程之间更高效地共享数据,以解决竞争问题,从而提高程序的执行效率。1.自旋锁和自适应自旋如果物理机器有一个以上的处理器,能让两个原创 2016-08-14 09:04:29 · 2254 阅读 · 0 评论 -
Java内存模型
概述 衡量一个服务性能的高低好坏,每秒事务处理数(Transactions Per Second,TPS) 是最重要的指标之一,它代表着一秒内服务器平均能响应的请求总数,而TPS值与程序的并发能力又有非常密切的关系。 Java内存模型(Java Memory Model,JMM)用来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。J原创 2016-09-02 09:08:52 · 2684 阅读 · 1 评论 -
JVM垃圾收集算法
1.标记-清除算法(Mark-Sweep) 算法分为:“标记”和“清除”两个阶段。 主要不足: 1)效率问题:标记和清除两个过程的效率都不高 2)空间问题:标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。2.复制算法(Copying) 它将可用内存按原创 2016-08-23 09:42:29 · 369 阅读 · 0 评论 -
HashMap和ConcurrentHashMap的区别
从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心。在JDK1.5中,伟大的Doug Lea给我们带来了concurrent包,从此Map也有安全的了。ConcurrentHashMap具体是怎么实现线程安全的呢,肯定不可能是每个方法加synchronized,那样就变成了HashTable转载 2016-08-09 09:46:51 · 634 阅读 · 0 评论 -
HashMap和HashTable的区别
http://blog.csdn.net/java2000_net/archive/2008/06/05/2512510.aspx 我们先看2个类的定义[java] view plain copypublic class Hashtable extends Dictionary implements Map,转载 2016-09-06 17:37:01 · 570 阅读 · 0 评论 -
Eclipse中的.project 、.classpath和.settings文件的具体作用
.project是项目文件,项目的结构都在其中定义,比如lib的位置,src的位置,classes的位置.classpath的位置定义了你这个项目在编译时所使用的$CLASSPATH这些文件你用文本编辑器就能察看了在一个项目中点刷新的目的是为了更新.project文件中的文件清单,让你把不通过eclipse提交到项目的文件显示出来 .classpath转载 2016-09-06 21:09:14 · 1028 阅读 · 0 评论 -
Java NIO系列教程(一)Java NIO概述
原文地址:http://ifeve.com/overview/Java NIO 由以下几个核心部分组成:ChannelsBuffersSelectors虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和FileLock,只不过是与三个核心组件共同使用的工具类。因此,转载 2016-10-08 20:06:43 · 339 阅读 · 0 评论 -
Java NIO系列教程(二)Channel
原文地址:http://ifeve.com/channels/Java NIO的通道类似流,但又有些不同:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。通道可以异步地读写。通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道。如下图所示:转载 2016-10-08 20:25:44 · 347 阅读 · 0 评论 -
Java NIO系列教程(三)Buffer
原文地址:http://ifeve.com/buffers/Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。Buffer的基本用法使用Buffe转载 2016-10-08 21:04:42 · 382 阅读 · 0 评论 -
JavaCC使用小结
原文地址:http://blog.csdn.net/bhq2010/article/details/8763920JavaCC是一个很不错的词法、语法解析器的生成器,只需要编写规则就可以生成Java语言的词法、语法解析器(新版本的JavaCC还支持C/C++作为目标语言)。JavaCC相当与Yacc/Bison+Lex/Flex很类似。[引用请注明出处:http://b转载 2016-09-20 09:28:42 · 1631 阅读 · 0 评论 -
分布式Session问题
原文地址:http://www.cnblogs.com/zhengyun_ustc/archive/2012/11/17/topic4.html与分布式缓存在高并发和高可用下所要解决问题差不多。一.图示: 二.高并发下分布式Session需解决的问题:透明处理存储介质的故障转移动态增删节点,减小“缓存颠簸”问题保证数据在各转载 2016-10-09 10:56:12 · 2537 阅读 · 0 评论 -
Java中Atomic包的原理和分析
原文地址:http://blog.csdn.net/zhangerqing/article/details/43057799Atomic简介Atomic包是Java.util.concurrent下的另一个专门为线程安全设计的Java包,包含多个原子操作类。这个包里面提供了一组原子变量类。其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,转载 2016-10-09 13:30:03 · 10835 阅读 · 1 评论 -
Java缓存技术
原文地址:http://cogipard.info/articles/cache-static-files-with-jnotify-and-ehcache介绍 JNotify:http://jnotify.sourceforge.net/,通过JNI技术,让Java代码可以实时的监控制定文件夹内文件的变动信息,支持Linux/Windows/MacOS;EHCache:http:转载 2016-09-20 10:52:49 · 2558 阅读 · 0 评论 -
Native方法及JNI实例
原文地址:http://blog.csdn.net/xw13106209/article/details/69894152.概述今天在看Java多线程编程的时候,发现Thread这个类中有多个native方法,以前从来没有见过这种方法,因此对于比较好奇,查阅了一些资料,现在整理一下,以作备忘。2.1.native关键字用法native是与C++联合开转载 2016-10-09 14:03:12 · 1490 阅读 · 0 评论 -
Java NIO原理图文分析及代码实现
原文地址:http://weixiaolu.iteye.com/blog/1479656前言: 最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。可以参考:http://baike.baidu.com/view/32726.htm )机制时转载 2016-09-23 15:09:13 · 635 阅读 · 0 评论 -
Java内存泄露(Memory Overflow)和内存泄露(Memory Leak)的区别
内存泄漏指你用malloc或new申请了一块内存,但是没有通过free或delete将内存释放,导致这块内存一直处于占用状态内存溢出指你申请了10个字节的空间,但是你在这个空间写入11或以上字节的数据,就是溢出要点内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分内存不可用的情况,重启计算机可以解决,但也有可能再次发生内存泄露,内存泄露和硬件没有转载 2016-09-21 09:56:21 · 4808 阅读 · 1 评论 -
CGLib动态代理介绍
原文地址:http://blog.csdn.net/xiaohai0504/article/details/6832990一、原理 代理为控制要访问的目标对象提供了一种途径。当访问对象时,它引入了一个间接的层。JDK自从1.3版本开始,就引入了动态代理,并且经常被用来动态地创建代理。JDK的动态代理用起来非常简单,但它有一个限制,就是使用动态代理的对象必须实现转载 2016-09-21 10:27:44 · 546 阅读 · 0 评论 -
GNU工具链(GNU toolchain)
原文地址:http://www.cnblogs.com/MuyouSome/archive/2013/05/05/3061636.html最近在捣鼓LFS,开始要制作工具链,没听过这个东东,还有一些附属概念,于是GOOGLE了下总结一点。。 维基百科在软件工程中,工具链(英语:toolchain)是一系列用于制作软件的工具。 这些工具一般一个接一个地运用,一件工具的输出转载 2016-09-25 20:09:21 · 1498 阅读 · 0 评论 -
工具链解析
原文地址:http://blog.163.com/warking_xp/blog/static/103910320092310035741/LFS/CLFS工具链是一套用于从C/C++源代码生成可执行文件的软件组件适当地组合在一起形成的系统。它包括4大部分,缺一不可:1、一套头文件,包含了这些源代码所需要访问的系统接口。2、binutils,包含一些处理二进制可执行转载 2016-10-21 16:16:52 · 907 阅读 · 0 评论 -
Java中Collections.sort排序用法
Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能;如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f,g这样,当然数字也是这样的。compare(a,b)方法:根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。equals(obj)方法:仅当指定的对象也是一个 Compara转载 2016-10-21 16:55:05 · 650 阅读 · 0 评论 -
Java Web网站应用中的单点登录
采用SSH架构加以说明:1. 建立一个登录管理类LoginManager2. 在LoginManager中定义一个集合,管理登录的用户。3. 在Spring中将LoginManager配置成单例4. 如果使用自定义的用户管理类,则为了说明方便,将此类命名为UserContext(表示用户授权的上下文)5. 如果未使用自定义的用户管理类,则直接使用Session。6转载 2016-10-21 17:09:49 · 1189 阅读 · 0 评论 -
重构模式
原文地址:http://www.jb51.net/article/42115.htmJava代码的重构模式主要有三种:重命名方法重构模式、引入解释性变量重构模式、以查询取代临时变量重构模式重命名方法重构模式建议执行如下的步骤来完成:1.建立一个具有新名称的方法2.将旧方法的方法体复制进新方法3.讲旧方法的方法体修改为调用新方法4.将所有引用旧转载 2016-10-12 18:14:57 · 526 阅读 · 0 评论 -
HTTP/1.1与HTTP/1.0的区别
原文地址:http://blog.csdn.net/forgotaboutgirl/article/details/6936982/下面主要从几个不同的方面介绍HTTP/1.0与HTTP/1.1之间的差别,当然,更多的内容是放在解释这种差异背后的机制上。1 可扩展性可扩展性的一个重要原则:如果HTTP的某个实现接收到了自身未定义的头域,将自动忽略它。Ø 在消息中增转载 2016-10-12 18:24:58 · 538 阅读 · 0 评论 -
生产环境CPU过高问题
原文地址:http://blog.chinaunix.net/uid-10449864-id-3463151.html问题描述:生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高。问题分析:1,程序属于CPU密集型,和开发沟通过,排除此类情况。2,程序代码有问题,出现死循环,可能性极大转载 2016-09-27 09:23:35 · 3474 阅读 · 0 评论 -
频繁GC问题
原文地址:http://caogen81.iteye.com/blog/1513345 我们的Java应用因频繁FULL GC导致性能降低很多,经过多人的定位也没有结论,于是我自主请命,经过一天的研究终于搞定了,现把经验与大家共享,相关的gc日志如下:4.758: [Full GC [PSYoungGen: 464K->0K(71936K)] [PSOldGen: 379转载 2016-09-27 09:49:49 · 5660 阅读 · 0 评论 -
API:定义客户端/服务器接口协议
原文地址:http://blog.csdn.net/hel12he/article/details/43736031在进行API开发的时候,需要事先定义好app与server交互的数据格式,这样前端人员与服务端人员才能够事先决定好如何获取数据、如何解析数据、如何传输协议。 在我看来目前接口协议无外乎这三种情况: 1. json数据进行交互 2. xml数据进行交互转载 2016-09-27 12:44:12 · 3659 阅读 · 0 评论