J2SE日志
Mirage520
这个作者很懒,什么都没留下…
展开
-
Java使用Protocol Buffers入门四步骤
Protocol Buffers(简称protobuf)是谷歌的一项技术,用于将结构化的数据序列化、反序列化,经常用于网络传输。这货实际上类似于XML生成和解析,但protobuf的效率高于XML,不过protobuf生成的是字节码,可读性比XML差。类似的还有json、Java的Serializable等。protobuf支持各种语言。本文以Java为例,简单介绍protob转载 2015-10-19 22:39:42 · 477 阅读 · 0 评论 -
Java 理论与实践: 正确使用 Volatile 变量
volatile 变量使用指南 Brian Goetz (brian.goetz@sun.com), 高级工程师, Sun Microsystems简介: Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错转载 2012-04-30 11:17:48 · 556 阅读 · 0 评论 -
Lucene:基于Java的全文检索引擎简介
Lucene是一个基于Java的全文索引工具包。基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史全文检索的实现:Luene全文索引和数据库索引的比较中文切分词机制简介:基于词库和自动切分词算法的比较具体的安装和使用简介:系统结构介绍和演示Hacking Lucene:简化的查询分析器,删除的实现,定制的排序,应用接口的扩展从Lucene我们还可以学到什么另外,如转载 2012-03-13 21:49:47 · 793 阅读 · 0 评论 -
HttpClient 4 - 文件上传
httpclient上传文件实际上就是模拟一个http的表单提交请求。package test.httpclient4;import java.io.File;import java.io.IOException;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apa转载 2011-12-08 17:39:31 · 1088 阅读 · 0 评论 -
生产者与消费者-《Java编程语言》
我们把系统中使用某类资源的线程称为消费者,产生或释放同类资源的线程称为生产者。 在下面的Java的应用程序中,生产者线程向文件中写数据,消费者从文件中读数据,这样,在这个程序中同时运行的两个线程共享同一个文件资源。通过这个例子我们来了解怎样使它们同步。 class Syn转载 2011-10-13 01:07:44 · 877 阅读 · 0 评论 -
Java面试经典试题及答案
第一,谈谈final, finally, finalize的区别。 final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final转载 2011-10-12 21:41:42 · 842 阅读 · 0 评论 -
java实现远程桌面监控
java里面的Robot类可以完成截图的功能,借助于这点,我尝试着做了一个简陋的桌面监控程序,运行了下,感觉速度还可以,还有很大的优化空间的,比如用udp协议取代tcp等。代码也写的不是很优雅,只在娱乐了。 实现原理其实很简单,在被监视者的机器上,运行一个线程,每隔一段转载 2011-09-03 01:28:10 · 4260 阅读 · 0 评论 -
NIO修改文件局部数据
<br />如下情况下可以用到内存文件映射技术解决问题: <br />1.不要复制文件中所有的数据,只需要修改文件中局部的数据。 <br />2.并行/分段处理大文件。 <br /><br /> 如下代码示使用javaNIO局部修改文件中指定位置的部分数据:Java代码 /** * 修改文件中的某一部分的数据测试:将字定位置的字母改为大写 * @param fName :要修改的文件名字 * @param start:起始字节 * @param len:要转载 2011-04-28 10:38:00 · 1172 阅读 · 0 评论 -
设计模式:简单工厂、工厂方法、抽象工厂之小结与区别
简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性。本文是本人对这三种模式学习后的一个小结以及对他们之间的区别的理解。简单工厂 简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。不修改代码的话,是无法扩展的。工厂方法 工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。在同一等级结构中,支持增加任意产品。抽象工厂 抽象工厂是应对产品族概念的。比如说,转载 2011-04-25 00:34:00 · 1397 阅读 · 0 评论 -
[收集]大量常用的Hash算法
/*** Hash算法大全* 推荐使用FNV1算法* @algorithm None* @author Goodzzp 2006-11-20* @lastEdit Goodzzp 2006-11-20* @editDetail Create*/public class HashAlgorithms{ /**//** * 加法hash转载 2011-06-06 20:49:00 · 857 阅读 · 0 评论 -
深入理解HashMap(及hash函数的真正巧妙之处)
Hashmap是一种非常常用的、应用广泛的数据类型,最近研究到相关的内容,就正好复习一下。网上关于hashmap的文章很多,但到底是自己学习的总结,就发出来跟大家一起分享,一起讨论。 1、hashmap的数据结构 要知道hashmap是什么,首先要搞清楚它的数据结构,在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的转载 2011-06-04 22:11:00 · 757 阅读 · 0 评论 -
Java 位运算
关键字: 位运算 Java 位运 算 符 位运算符用来对二进制位进行操作 ,Java中提 供 了 如 下所 示 的 位 运 算符 : 位 运 算 符 (>>,<<,>>>,&,|,^,~ ) ,位运 算 符 中 ,除 ~ 以 外 ,其余 均 为 二 元 运 算 符 。 操 作 数 只 能 为 整 型 和字 符 型 数 据 。 基础知识 补码 所有的整数类型(除了char 类型之外)都是有符号的转载 2011-06-04 18:18:00 · 718 阅读 · 0 评论 -
HashMap源代码
/* * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it an转载 2011-06-03 17:44:00 · 814 阅读 · 0 评论 -
推荐一款基于Java的音视频处理开源项目--JAVE
JAVE(Java Audio Video Encoder),是一款将音频和视频在不同格式间进行转化的工具,是基于ffmpeg项目的Java封装。JAVE,需要J2SE 1.4+、Windows 或 Linux 操作系统均可运行。JAVE支持的编码和解码格式见下表:DecodingFormatoDescrizione4xm4X Technologie转载 2012-04-30 11:47:31 · 1857 阅读 · 0 评论 -
利用ffmpeg实现视频格式转换成flv,保证能成功运行
/** * 视频转换(转换为flv格式) * * 创建时间:2010-11-21 */public class TestConvert { /** 输入文件路径属性 */ private String IN_PATH; /** 输出文件路径属性 */ private String OUT_PATH; /** ffmpeg.exe存放路径属性 */ private St转载 2012-07-30 22:02:36 · 2006 阅读 · 0 评论 -
5 things you didn't know about ... Java performance monitoring, Part 2
Java process monitoring with the JDK's built-in profilersIf it's news to you that the JDK ships with the full-featured profiler JConsole, you'll be even more surprised to learn about the f转载 2015-01-07 18:11:34 · 999 阅读 · 0 评论 -
okio分析
Okio是一个对原有的java.io和java.nio进行改进的IO库,使IO操作更加高效和方便。Okio的高效主要体现在三个方面:一它对数据进行了分块处理,这样在大数据IO的时候可以以块为单位进行IO,这可以提高IO的吞吐率。二它对这些数据块使用链表进行管理,这可以仅通过移动“指针”就进行数据的管理,而不用真正去处理数据,而且对扩容来说也十分方便。三对闲置的块进行管理,通过一个块池(Se转载 2015-09-07 21:09:01 · 2299 阅读 · 0 评论 -
Hadoop2.6.0 mac 安装
1. 单机模式(1) ssh设置远程登录:xiaolan:~ xiaolan$@ssh-keygen -t rsa -P ""xiaolan:~ xiaolan$cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys登录测试 xiaolan:~ xiaolan$ssh localhostxiaolan:~ xi转载 2015-07-08 12:05:53 · 662 阅读 · 0 评论 -
【深入Java虚拟机】之一:Java内存区域与内存溢出
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17565503内存区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。Java虚拟机规范将JVM所管理的内存分为以下几个运行时数据区:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。下面详细阐述各数据区所转载 2015-06-25 15:33:54 · 509 阅读 · 0 评论 -
【深入Java虚拟机】之二:Class类文件结构
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17675609 平台无关性 Java是与平台无关的语言,这得益于Java源代码编译后生成的存储字节码的文件,即Class文件,以及Java虚拟机的实现。不仅使用Java编译器可以把Java代码编译成存储字节码的Class文件,使用JRuby等其他语言的编译器也可转载 2015-06-25 15:35:47 · 512 阅读 · 0 评论 -
java nio 之MappedByteBuffer,高效文件/内存映射
MappedByteBuffer是java nio引入的文件内存映射方案,读写性能极高。NIO最主要的就是实现了对异步操作的支持。其中一种通过把一个套接字通道(SocketChannel)注册到一个选择器(Selector)中,不时调用后者的选择(select)方法就能返回满足的选择键(SelectionKey),键中包含了SOCKET事件信息。这就是select模型。 Socket转载 2014-12-12 15:40:25 · 681 阅读 · 0 评论 -
Again about determining size of Java object
Sometimes it is necessary to estimate the size a Java object takes in memory. The paper describes one of the approaches that uses Java Instrumentation API.When it can be necessaryJava object s转载 2014-12-12 17:40:18 · 1003 阅读 · 0 评论 -
Java 中使用内存映射文件需要考虑的 10 个问题
java中的内存映射IO和内存映射文件是什么?内存映射文件非常特别,它允许Java程序直接从内存中读取文件内容,通过将整个或部分文件映射到内存,由操作系统来处理加载请求和写入文件,应用只需要和内存打交道,这使得IO操作非常快。加载内存映射文件所使用的内存在Java堆区之外。Java编程语言支持内存映射文件,通过java.nio包和MappedByteBuffer 可以从内存直接读写文件转载 2014-12-12 15:41:41 · 661 阅读 · 0 评论 -
从 Java 代码到 Java 堆
本文将为您提供 Java™ 代码内存使用情况的深入见解,包括将 int 值置入一个 Integer 对象的内存开销、对象委托的成本和不同集合类型的内存效率。您将了解到如何确定应用程序中的哪些位置效率低下,以及如何选择正确的集合来改进您的代码。优化应用程序代码的内存使用并不是一个新主题,但是人们通常并没有很好地理解这个主题。本文将简要介绍 Java 进程的内存使用,随后深入探讨您编写的 Ja转载 2014-12-10 14:17:12 · 774 阅读 · 0 评论 -
内存屏障与JVM并发
内存屏障,又称内存栅栏,是一组处理器指令,用于实现对内存操作的顺序限制。本文介绍了内存屏障对多线程程序的影响。我们将研究内存屏障与JVM并发机制 的关系,如易变量(volatile)、同步(synchronized)和原子条件式(atomic conditional)。本文假定读者已经充分掌握了相关概念和Java内存模型,不讨论并发互斥、并行机制和原子性。内存屏障用来实现并发编程中称为 可见性(v转载 2014-12-23 20:44:52 · 603 阅读 · 0 评论 -
sun.misc.Unsafe
Java是一门安全的编程语言,防止程序员犯很多愚蠢的错误,它们大部分是基于内存管理的。但是,有一种方式可以有意的执行一些不安全、容易犯错的操作,那就是使用Unsafe类。本文是sun.misc.Unsafe公共API的简要概述,及其一些有趣的用法。Unsafe 实例在使用Unsafe之前,我们需要创建Unsafe对象的实例。这并不像Unsafe unsafe = new转载 2014-12-05 17:37:06 · 688 阅读 · 0 评论 -
Java SE 6 新特性: Instrumentation 新功能
2006 年底,Sun 公司发布了 Java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马)。跟 Tiger(Java SE 5)相比,Mustang 在性能方面有了不错的提升。与 Tiger 在 API 库方面的大幅度加强相比,虽然 Mustang 在 API 库方面的新特性显得不太多,但是也提供了许多实用和方便的功能:在脚本,WebServ转载 2015-01-08 17:34:05 · 795 阅读 · 0 评论 -
JVM伪共享
伪共享False sharing说明JVM底层技术也不让人那么放心。内存缓存系统中基本单元是高速缓存行(Cache lines). cpu会把数据从内存加载到高速缓存中 ,这样可以获得更好的性能,高速缓存默认大小是64 Byte为一个区域,一个区域在一个时间点只允许一个核心操作,也就是说不能有多个核心同时操作一个缓存区域。因为高速缓存是64字节,而Hotspot JVM的对转载 2014-12-02 16:43:32 · 638 阅读 · 0 评论 -
jdk加载类顺序
<br />1、Dog dog = new Dog();<br />这个动作会导致常量池的解析,Dog类被隐式装载。<br />如果当前ClassLoader无法找到Dog,则抛出NoClassDefFoundError。<br /><br />2、Class clazz = Class.forName(“Dog”);<br /> Object dog =clazz.newInstance();<br />通过反射加载类型,并创建对象实例<br />如果无法找到Dog,则抛出ClassNotFoundE转载 2011-04-10 00:36:00 · 1092 阅读 · 0 评论 -
Java HashMap实现详解
<br />转帖:http://beyond99.blog.51cto.com/1469451/429789<br /> 1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,Hash转载 2011-05-29 02:59:00 · 893 阅读 · 0 评论 -
java快速排序
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/myelse/archive/2009/04/14/4073654.aspx 快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数转载 2010-03-15 14:18:00 · 706 阅读 · 0 评论 -
J2me实现半透明效果
在J2ME MIDP1.0规范中并未实现半透明 功能,只有少数手机厂商提供这方面的API,例如诺基亚.到了MIDP2.0,虽然已经提供了像getRGB(),drawRGB()这样的API,但仍然有很部分MIDP2.0的手机不能实现半透明(目前所知的摩托E398就无法实现半透明),鉴于这种情况,使得在游戏开发中,不可能用同一种方法实现各种不同品牌不同机型上的半透明效果),因而,必须对具体机型做针对性转载 2010-03-12 13:58:00 · 701 阅读 · 0 评论 -
JAVA基础--JAVA中的反射机制详解
转贴:http://java.ccidnet.com/art/3539/20070924/1222147_1.html JAVA反射机制 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。Java反射机制主要提供了以下功能: 在运行时转载 2010-03-12 09:42:00 · 515 阅读 · 0 评论 -
JAVA 异常 throwable exception error throws throw
转贴:http://lvp.javaeye.com/blog/3566501.如何理解Exception,Error和Throwable Throwable是Exception和Error的父类. Error表示错误,一般是系统级的错误! Exception一般是程序运行期间的错误! 通常在使用 try{}catch(Exception e){} 这转载 2010-03-11 23:30:00 · 2184 阅读 · 0 评论 -
浅析Java的“克隆”方法-转贴
ZT:http://javahy.javaeye.com/blog/384871 Java语言的一个优点就是取消了指针的概念,但也导致了许多程序员在编程中常常忽略了对象与引用的区别,本文会试图澄清这一概念。并且由于Java不能通过简单的赋值来解决对象复制的问题,在开发过程中,也常常要要应用clone()方法来复制对象。本文会让你了解什么是影子clone与深度clone,认识它们的区别、优点及转载 2010-03-03 10:41:00 · 716 阅读 · 0 评论 -
软引用、弱引用、虚引用 总结
在看‘深入JAVA虚拟机’垃圾收集这一章的时候了解有关对象的引用级别,在网上找了些资料总结备忘。(该文章大多内容为多个网站的内容合并)1、概述在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说来,如果转载 2010-03-01 14:39:00 · 668 阅读 · 0 评论 -
Java 理论和实践: 用软引用阻止内存泄漏-2
在 Java 理论和实践 的 前一期文章 中,Java™ 清洁工程师 Brian Goetz 探究了弱引用(weak references),它让您警告垃圾收集器,您想要维护一个对象的引用,而不会阻止该对象被垃圾收集。在本期文章中,他将解释 Reference 对象的另外一种形式,即软引用(soft references),用于帮助垃圾收集器管理内存使用和消除潜在的内存泄漏。垃圾收集可以使转载 2010-03-01 13:42:00 · 592 阅读 · 0 评论 -
MINA框架使用总结-转贴
简单介绍:MINA框架是对java的NIO包的一个封装,简化了NIO程序开发的难度,封装了很多底层的细节,然开发者把精力集中到业务逻辑上来,最近做了一个相关的项目,为了备忘对MINA做一个总结。下面这个start方法用来初始化MINA:Java代码 private void start(int port, WebContext ctx) throw转载 2010-03-04 02:31:00 · 1540 阅读 · 0 评论 -
理解ThreadLocal
[ZT]:http://blog.csdn.net/qjyong/archive/2008/03/08/2158097.aspx ThreadLocal是什么早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。ThreadLocal很容转载 2009-08-18 14:33:00 · 617 阅读 · 0 评论 -
什么叫组播地址(Multicast Address )?
关于组播地址异常:Exception in thread "main" java.net.SocketException: Not a multicast addressat java.net.MulticastSocket.joinGroup(Unknown Source)at src.MulticastClient.main(MulticastClient.java:16)原创 2009-08-04 11:41:00 · 3673 阅读 · 0 评论