
Java
文章平均质量分 83
Erica_1230
这个作者很懒,什么都没留下…
展开
-
动态代理
代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象,同时也为实施不同控制策略预留了空间,从转载 2014-06-28 21:31:02 · 606 阅读 · 0 评论 -
java 压缩文件zip
1.引言之前在 压缩与解压1---字符串的压缩与解压(http://www.cnblogs.com/java-pan/archive/2012/05/12/gzip1.html)中介绍过对字符串的压缩和解压,这个解压和解决用在系统之间大数据传输的时候还是可以大大的减少网络流量的。本节主要本别介绍对单个文件、多个文件的压缩。解压这里就不讲了,解压的话没什么实际意义,因为文件压缩后为zip格式转载 2015-05-19 23:14:31 · 636 阅读 · 0 评论 -
window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法
window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法 本机已经安装了jdk1.7,而比较早期的项目需要依赖jdk1.6,于是同时在本机安装了jdk1.6和jdk1.7. 安装jdk1.6前,执行java -version得到C:\Users\liuxiang2>java -versionjava version "1.7.0_21转载 2015-07-01 15:49:49 · 539 阅读 · 0 评论 -
protobuf
今天来介绍一下“Protocol Buffers ”(以下简称protobuf)这个玩意儿。本来俺在构思“生产者/消费者模式 ”系列的下一个帖子:关于生产者和消费者之间的数据传输格式。由于里面扯到了protobuf,想想干脆单独开一个帖子算了。 ★protobuf是啥玩意儿? 为了照顾从没听说过的同学,照例先来扫盲一把。 首先,protobuf是一个开源 项 目(官方站点转载 2016-02-24 23:55:39 · 459 阅读 · 0 评论 -
Eclipse调试JDK看不到变量的值是什么
原文地址:http://stackoverflow.com/questions/18255474/debug-jdk-source-cant-watch-variable-what-it-is问题效果图:解决后的效果:具体步骤:1.制作可调试的rt.jar包1.1 .在D盘新建jdk7_src及jdk7_rt-de转载 2016-10-14 23:39:44 · 1577 阅读 · 1 评论 -
软引用-弱引用
Java从JDK1.2版本开始,就把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。这里重点介绍一下软引用和弱引用。 如果一个对象只具有软引用,那么如果内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的转载 2017-03-31 18:13:52 · 354 阅读 · 0 评论 -
Java中创建对象的5种不同方法
作为Java开发者,我们每天都会创建大量的对象,但是,我们总是使用管理依赖系统(如Spring框架)来创建这些对象。其实还有其他方法可以创建对象,在接下来的文章中我会进行详细介绍。1.使用new关键字这是最常见的创建对象的方法,并且也非常简单。通过使用这种方法我们可以调用任何我们需要调用的构造函数。1Employee转载 2017-04-11 09:03:02 · 462 阅读 · 0 评论 -
HashMap详解
HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实现类。虽然 HashMap 和 HashSet 实现的接口规范不同,但它们底层的 Hash 存储机制完全一样,甚至 HashSet 本身就采用 HashMap 来实现的。 通过 HashMap、H转载 2017-04-02 11:00:55 · 324 阅读 · 0 评论 -
HashMap的工作原理
HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入转载 2017-04-02 18:53:08 · 340 阅读 · 0 评论 -
深度剖析ConcurrentHashMap
今天我们将深入剖析一个比HashTable性能更优的线程安全的Map类,它就是ConcurrentHashMap,本文基于Java 7的源码做剖析。ConcurrentHashMap的目的多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。虽然已经有一个线程安全的HashTable,但是HashTable转载 2017-04-04 17:59:14 · 298 阅读 · 0 评论 -
CentOS 7系统中JDK的安装与配置
操作系统版本:CentOS Linux release 7.2.1511 (Core)JDK版本:jdk-8u111-nb-8_2-linux-x64.sh安装方式:Shell脚本安装下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html安装准备:(1)查看系转载 2017-06-24 11:03:31 · 422 阅读 · 0 评论 -
执行java.io.ByteArrayOutputStream.write 方法内存突然加大的原因与解决办法
问题描述:在项目中用有个上传功能,会把文件转换成inputstream然后转换成byte[] 数组转换代码如下:[java] view plain copypublic static byte[] convertstream(InputStream inStream) throws IOException { ByteArr转载 2017-07-14 10:36:01 · 5152 阅读 · 1 评论 -
JAVA 继承 父类子类 内存分配
继承的基本概念:(1)Java不支持多继承,也就是说子类至多只能有一个父类。(2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法。(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承。(4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方转载 2017-08-02 10:23:26 · 2415 阅读 · 1 评论 -
Serializable接口基本理解--序列化代理的使用
Effective Java一书一直在强调,你的类实现Serializable接口前,一定要进行价值评估,是否值得这么做,尤其你的类是一个需要进行大量继承扩展的类。因为实现了Serializable接口,就会大大的增加出错和出现安全漏洞的可能性。蓄意攻击者可以通过伪造修改字节码的方式使你的代码出现安全漏洞!从一个角度看, readObject方法是一个参数为“字节流”的构造函数,因此篡改了字节转载 2017-08-03 08:46:47 · 359 阅读 · 0 评论 -
Java堆栈解析
1、RAM和ROM区别RAM-RamdomAccessMemory随机存取存储器(断电后数据会丢失),高速存取,读写时间相等,且与地址无关,如计算机内存等。ROM-Read Only Memory只读存储器。断电后信息不丢失,如计算机启动用的BIOS芯片。存取速度很低,(较RAM而言)且不能改写。由于不能改写信息,不能升级,现已很少使用。2、栈(stack)与堆(heap)都是转载 2015-02-28 15:33:42 · 513 阅读 · 0 评论 -
用弱引用堵住内存泄漏
要让垃圾收集(GC)回收程序不再使用的对象,对象的逻辑 生命周期(应用程序使用它的时间)和对该对象拥有的引用的实际 生命周期必须是相同的。在大多数时候,好的软件工程技术保证这是自动实现的,不用我们对对象生命周期问题花费过多心思。但是偶尔我们会创建一个引用,它在内存中包含对象的时间比我们预期的要长得多,这种情况称为无意识的对象保留(unintentional object retention)。转载 2015-02-26 13:41:42 · 607 阅读 · 0 评论 -
java 字节流和字符流的区别
字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作转载 2015-02-19 21:33:32 · 439 阅读 · 0 评论 -
对象序列化
1. 什么是Java对象序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java对象序列化就能够帮助我们实现该功能。 使用Java对象序列化,在保存对象转载 2014-06-30 14:46:03 · 528 阅读 · 0 评论 -
PoolableObjectFactory和ObjectPool
commons-pool包里主要包括三个重要的接口:ObjectPool用于管理要被池化的对象的借出和归还;ObjectPoolFactory用于大量生成相同类型和设置的ObjectPool转载 2014-07-06 17:27:10 · 1061 阅读 · 0 评论 -
ObjectOutputStream 可能引起的内存泄漏
使用 ObjectOutputStream 来进行对象序列化相信大多数程序员在使用 Java 进行日常开发工作中,都曾经遇到需要把数据进行序列化的情况,比如写入文件或者写入 socket 流。Java 的类库也提供了丰富工具类供我们使用,这其中就包括 ObjectOutputStream。此类允许我们将 Java 对象的基本数据类型和图形写入 OutputStream,在需要将 Java 对象转载 2014-07-06 19:18:56 · 1792 阅读 · 0 评论 -
深克隆和浅克隆
1.浅复制与深复制概念⑴浅复制(浅克隆)被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。⑵深复制(深克隆)被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。转载 2014-07-04 16:53:59 · 565 阅读 · 0 评论 -
jdk动态代理机制1
Java 动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类。代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执行的过程中,开发人员还可以按需调整委托类对象及其功能,这是一套非常灵活有弹性的代理框架。转载 2014-08-09 12:22:16 · 498 阅读 · 0 评论 -
eclipse设置jvm
1 怎么给JVM加启动参数转载 2014-08-09 19:48:46 · 512 阅读 · 0 评论 -
JDK和JRE的区别
对于java初学者来说,往往不懂区分jdk和jre的区别,实际上这两个东西差别很大的,有必要了解一下:简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。 JDK就是Java Development KitJRE是Java Runtime Envi转载 2014-08-19 14:03:43 · 555 阅读 · 0 评论 -
java内省
JDK提供了对JavaBean来进行操作的一些api,这套api就称为内省。通过内省方式得到ReflectPoint类中的x的属性值,并且把该属性值设置为10ReflectPoint类:public class ReflectPoint {private int x=3;public int getX() { return x; } public void s原创 2015-01-31 22:26:24 · 440 阅读 · 0 评论 -
java中的注解
jdk1.5开始就增加了对元数据的支持,也就是注解(Annotation),这种标记可以在编译,类加载,运行的时候被读取。1 有几种基本的注解 1) @Override(重写父类方法):只能用于方法,不能用于其他程序元素。用来指定方法覆盖。常常可以用来检查是否覆盖父类的方法 public class Erica { @Override public boolean equals原创 2015-01-31 12:38:56 · 532 阅读 · 0 评论 -
java web移植 遇到Project facet Java version 1.7 is not supported
在移植eclipse项目时,如果遇到“Project facet Java version 1.7 is not supported.”项目中的jdk1.7不支持。说明项目是其他版本jdk编译的,在eclipse里运行时会报版本不支持。解决办法:法1,选中项目 Properties , 选择 Project Facets,右击选择 Java , Chan转载 2015-01-15 14:43:20 · 610 阅读 · 0 评论 -
java内存溢出和内存泄露
虽然jvm可以通过GC自动回收无用的内存,但是代码不好的话仍然存在内存溢出的风险。一、为什么要了解内存泄露和内存溢出? 1、内存泄露一般是代码设计存在缺陷导致的,通过了解内存泄露的场景,可以避免不必要的内存溢出和提高自己的代码编写水平; 2、通过了解内存溢出的几种常见情况,可以在出现内存溢出的时候快速的定位问题的位置,缩短解决故障的时间。 二、基本概念转载 2015-01-20 18:19:23 · 509 阅读 · 0 评论 -
对象的垃圾回收和四种引用
对象在内存中分为三种状态:可达状态一个对象创建以后,有一个或者多个引用变量引用该对象,那么这个对象属于可达状态 可恢复状态如果程序中某个对象不再有任何引用变量引用它,他将进入可恢复状态,此时从有向图的起始顶点不能导航到该对象。在这种状态下,系统的垃圾回收机制转变回收该对象所占用的内存。在回收该对象之前,系统会调用可恢复状态的对象的finalize方法进行资源清理,如果系统调用f原创 2015-02-19 17:49:31 · 3616 阅读 · 0 评论 -
java内部类
内部类分为非静态内部类和静态内部类非静态内部类public class DiscernVariable {private String prop="外部类实例变量"; private class Inclass{ private String prop="内部类实例变量"; public void info(){ String prop="局部变量"原创 2015-02-19 15:34:30 · 507 阅读 · 0 评论 -
谈谈Runtime类中的freeMemory,totalMemory,maxMemory几个方法
最近在网上看到一些人讨论到java.lang.Runtime类中的freeMemory(),totalMemory(),maxMemory ()这几个方法的一些问题,很多人感到很疑惑,为什么,在java程序刚刚启动起来的时候freeMemory()这个方法返回的只有一两兆字节,而随着 java程序往前运行,创建了不少的对象,freeMemory()这个方法的返回有时候不但没有减少,反而会增加。这些转载 2017-09-14 16:00:00 · 326 阅读 · 0 评论