- 浏览: 467249 次
- 性别:
- 来自: 杭州
最新评论
-
ty1972873004:
sunwang810812 写道我运行了这个例子,怎么结果是这 ...
Java并发编程: 使用Semaphore限制资源并发访问的线程数 -
lgh1992314:
simpleDean 写道请问,Logger.setLevel ...
Java内置Logger详解 -
sunwang810812:
我运行了这个例子,怎么结果是这样的:2号车泊车6号车泊车5号车 ...
Java并发编程: 使用Semaphore限制资源并发访问的线程数 -
jp260715007:
nanjiwubing123 写道参考你的用法,用如下方式实现 ...
面试题--三个线程循环打印ABC10次的几种解决方法 -
cb_0312:
SurnameDictionary文章我没看完,现在懂了
中文排序
文章列表
看到一个问题,"一个jar包有很多的class,但是,唯一知道的只是一个方法名,怎么样知道哪一个或哪些class拥有这个方法呢?"
我想我们可以通过如下的步骤来实现:
1. 获取jar包中所有的JarEntry
2. 检查每一个JarEntry的name,如果name是以'.class'结尾,那么,获取class名字
3. 使用第2步中得到的class名字,通过反射获取Method数组。
4. 循环Method数组,如果发现方法名与已知的方法名一致,则在控制台输出该类的class name。
基于上述思想,我写了一个小程序,并去跑了一个实例--> 在jar包 'c ...
本文将对String.substring方法可能产生内存泄漏的问题进行分析,并给出相应的优化方法。
String.substring内存泄漏分析
首先看一下JDK6 String.substring的源代码:
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence
{
/** The value is used for character storage. */
private final char value[];
...
java.lang包下的Exception如下:
Exception
-ClassNotFoundException
-CloneNotSupportedException
-IllegalAccessException
-InstantiationException
-InterruptedException
-NoSuchFieldException
-NoSuchMethodException
RuntimeException extends Exception
-ArithmeticException
...
我们可以通过如下两种方式获取System Properties信息:
1. System.getProperties()
2. ManagementFactory.getRuntimeMXBean().getSystemProperties()
ManagementFactory.getRuntimeMXBean().getSystemProperties方法采用System.getProperties()来完成的,如果在本地运行程序去获取某些系统属性的值,结果是一样的。
它们的一个区别,RuntimeMXBean能够去获取远程 VM上的System Properties。
Manage ...
java.lang.management.RuntimeMXBean是Java 虚拟机的运行时系统的管理接口。使用它可以获取正在运行的 Java 虚拟机等信息,包括获取PID。
以下就是一个获取PID的例子:
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.logging.Logger;
public class RuntimeMXBeanUtil {
private static final Logger ...
平时使用Log4j记录日志信息,对JDK内置的Logger还真没有去关注和使用过,只知道这个是在JDK 1.4引入的。这次,抽空去看了一下JDK内置Logger(java.util.logging)。在这篇博文中将记录如下几个方面的信息:
1. JDK内置Logger的类结构
2. JDK内置Logger支持的Level
3. JDK内置Logger支持的Formatter
4. JDK内置Logger支持的Handler
5. JDK内置Logger 默认配置文件
6. 如何使用JDK内置logger
(一) JDK内置Logger的类结构
展开java.util.logging包,我们 ...
离开课堂后,排序算法写的比较少了,当有排序的要求时,一般用的比较多的是直接采用Arrays.sort以及Collections.sort结合比较器来实现。
Arrays工具类包含了对各种类型数组的排序,以下是Arrays中包括的sort方法:
以下是Collections中的sort方法,该sort方法中结合了Arrays.sort来实现的。
/**
* Sorts the specified list into ascending order, according to the
* <i>natural ordering</i> of it ...
在Hotspot JVM上,我们能够直接对内存进行读写操作。该类的allocateMemory方法用于申请分配内存,putAddress和getAddress方法用于对直接内存进行读写。
本文将通过sun.misc.Unsafe给出一个直接读写内存的例子。
注意:这只是一个例子,只是用来验证通过sun.misc.Unsafe来实现直接读写内存的可能性。但是,这样做并没有安全保证,而且稍微有点疏忽将可能导致JVM崩溃。
Unsafe类的三个方法:allocateMemory,putAddress和getAddress如下:
/**
* Fetches a native ...
记得小时候问爸爸妈妈“我是从哪里来的?”。他们告诉我我是捡来的。相信这是最常听见的回答吧(路边捡来的,海边捡来的等等)。
今天从一朋友那边听到一个有趣的版本:
孩子: "妈妈,我是从哪里来的呀?"
妈妈:“移动公司搞活动,充移动话费送的..”
哈哈,大家还有其它有趣的版本吗?
上一篇博文介绍了俄罗斯方块游戏的图形选择与变换:
Swing俄罗斯方块游戏(一): 图形选择与变换 --> [url]http://mouselearnjava.iteye.com/blog/1914513 [/url]
.
本文将介绍实现俄罗斯方块需要处理的关键点,这些关键点有如下几点:
1. 键盘事件的处理
2. 满行及其消行操作
3. 游戏结束判断
4. 游戏进度存储和加载
5. 游戏玩家得分排行榜
... ...
下面就结合代码一个一个地介绍这些点的实现:
1. 键盘事件的处理
键盘事件的处理包括5个部分:
a)向左
public void moveLeft(int fl ...
俄罗斯方块游戏是一个上手简单,老少皆宜的游戏,它的基本规则是移动、旋转和摆放游戏自动产生的各种方块,使之排列成完整的一行或多行并且消除得分。博文“Swing俄罗斯方块游戏”系列,最终将给出一个简单的俄罗斯方块小游戏,游戏可以保存进度,拥有得分排名等功能。
游戏界面:
本篇博文将介绍一下将俄罗斯方块游戏中需要用到图形选择和变换。
一般来讲,一个图形有四个点,可以表示出常用的“一字型”,“T字型”,“Z字型”以及“L字型”方块。如果用更多的点来表示图形,图形将更加丰富,本文采用的也是四个点去表示图形。
本文实现的俄罗斯方块中,四个点的图形有如下几类:
1. 常用图形-->&g ...
在上几篇博文中,介绍了
Swing贪吃蛇游戏(一):基本功能实现 >>>
http://mouselearnjava.iteye.com/blog/1913290
Swing贪吃蛇游戏(二):增加随机产生障碍物功能 >>>
http://mouselearnjava.iteye.com/blog/1913886
Swing贪吃蛇游戏(三):增加游戏进度存储和加载功能 >>>
http://mouselearnjava.iteye.com/blog/1914225
本文在这些既有功能之上 ...
在上两篇博文中,介绍了
Swing贪吃蛇游戏(一):基本功能实现 >>>> http://mouselearnjava.iteye.com/blog/1913290
Swing贪吃蛇游戏(二):增加随机产生障碍物功能 >>> http://mouselearnjava.iteye.com/blog/1913886
本文在这些既有功能之上,添加游戏进度的保存和加载功能。
游戏进度的保存和加载功能是通过序列化和反序列化来完成的。
保存--> 通过序列化的方式将当前游戏运行状态中用到的一些重要对象序列化到文件中加以保存,从 ...
在上一篇博文中,介绍了Swing贪吃蛇游戏基本功能的实现:
Swing贪吃蛇游戏(一):基本功能实现 >>>> http://mouselearnjava.iteye.com/blog/1913290
本文在原有基本功能上增加随机产生障碍物的功能,增加些游戏的难度
随机产生障碍物的功能可以有多种实现,我们可以将分数的改变作为产生随机数的条件,比如
1. 分数每增加50分,在原有的基础上随机产生一个障碍物(不改变原来已经有的障碍物位置)
2. 分数每增加50分,以50的倍数作为产生随机障碍物的个数(比如N),重新生成N个随机障碍物。
两种实现都不难,但是第二种方 ...