java
文章平均质量分 83
BIAOBIAO齐
专注,执行力,把简单的事情做到极致
展开
-
JAVA路径问题及命令行编译运行基础(linux下)
(初学者的一些总结~高手们勿喷哈~)原因:以前一直用Eclispe编程环境运行java。非常舒服,就像用傻瓜相机照相一般。有看见许多高手都是直接用vim编辑文件,命令行编译运行,觉得那样不是反而更繁琐?转折点是在前几天本科毕设题目选定之后。毕设题是原创 2011-10-06 07:14:39 · 17007 阅读 · 2 评论 -
Java:方法的虚分派(virtual dispatch)和方法表(method table)
背景知识:java 字节码基本框架,jvm基本框架多态的机制。Virtual Dispatch首先从字节码中对方法的调用说起。java的bytecode中对方法的调用实现分为四种情况:1.invokevirtual 为最常见的情况,包含virtual dispatch机制; 2.invokespecial是作为private和构造原创 2011-10-31 04:40:12 · 11500 阅读 · 24 评论 -
AOP实践:java.lang.instrument的使用
背景想调用ASM API (用于字节码处理的开源API)对字节码进行处理,目标是实现对java程序运行时各种对象的动态跟踪,并进一步分析各个对象之间的关系(研究前提是目前的UML锁阐释的whole-part relation 是比较混乱的)。由于ASM相关内容又可以延伸很远,在此文中略过。在完成了能对字节码进行处理的ASM调用以后,需要考虑如何将这些功能与正常的java程序整合到一起。原创 2011-11-22 11:17:53 · 12378 阅读 · 2 评论 -
ClassLoader编程实践
java 的类加载机制背景知识:《Java 类加载器( ClassLoader)浅析》《Three principles of Classloader operation(Classloader操作三原则)》以上博文中所提及的java类加载机制,都是java1.2及以后的版本,而在最早的java1.1中,是没有parent-child模式的。这里,将分别原创 2011-10-30 17:43:19 · 4005 阅读 · 5 评论 -
Java 类加载器( ClassLoader)浅析
背景知识:java平台无关的特性是由JVM支撑的。不同平台有不同的JVM支持。这其实就是在运行的java源代码和实际的硬件之间抽象出了一个新的层次结构。(据说“计算机中的大多数问题,都可以通过曾加层次结构来解决”)所有.java文件中的java源代码,首先通过编译器产生出后缀为.class的字节码(bytecode)文件。然后由JVM运行那些.class文件原创 2011-10-14 10:48:11 · 4661 阅读 · 7 评论 -
String Interning研究
继续了自己研究String相关问题的思路和过程。不敢保证绝对正确,仅仅是一个分析过程。有出错的地方希望大家指出~多交流分享。问题的出发点在网上看到一道题:String str = new String("abc");问其中生成了多少个String对象?答案写的是两个。"abc"本身是一个,而new又生成了一个。探究原创 2011-10-21 21:10:32 · 4621 阅读 · 2 评论 -
java类的装载(Loading)、链接(Linking)和初始化(Initialization)
Loading 加载按如下三步执行1.通过类的全名产生对应类的二进制数据流。(注意,根据early load的原理,如果没找到对应类文件,只有在类实际使用时才抛出错误.)2.分析并将这些二进制数据流转换为 方法区(JVM的架构:方法区、堆,栈,本地方法栈,pc寄存器)特定的数据结构(这些数据结构是实现有关的,不同JVM有不同实现)。这里处理了部分verificati原创 2011-10-27 22:03:21 · 8077 阅读 · 5 评论 -
java类的实例化探究
java类的实例化(instantiation)具有显性的和隐性的区别。一般编程时,我们锁使用new的方法实例化,这是最简单直接的显性实例化。另外还有三种实例化,分别为反射机制中的newInstance()方法,类的clone()方法 和 解串行化使用的ObjecInputStream中的getObject()方法。而隐性的实例化则出现在java程序的整个生命周期中,包括String 、原创 2011-10-27 22:03:36 · 4821 阅读 · 0 评论 -
Java动态性: 类加载时的延迟初始化
背景知识:java类的加载过程。相关博文:《Java 类加载器( ClassLoader)浅析》《java类的装载(Loading)、链接(Linking)和初始化(Initialization)》误区:值得注意的是,需要搞清楚 对符号引用的解析 和类的初始化的区别。《java类的装载(Loading)、链接(Linking)和初始化(Initializatio原创 2011-10-27 21:44:36 · 5234 阅读 · 1 评论 -
一道简单有趣的java题:输出顺序的问题
在 stack overflow上看见的一道问题.有如下代码,请问它的输出内容。public class Test{ public int a = 10; Test(){System.out.println("1");} {System.out.println("2");} static{System.out.println("3");原创 2011-11-19 02:38:02 · 2894 阅读 · 9 评论 -
《Hadoop技术内幕》学习笔记——RPC和动态代理
本文是《hadoop技术内幕——深入解析Hadoop Common和HDFS架构设计与实现原理》第4章的1-3节的学习笔记。内容为Hadoop IPC部分的基础知识介绍。知识框架由于Hadoop分布式环境需要一个更高效和正对性优化的IPC机制,传统的诸如RMI的解决方案无法满足这一要求,Hadoop自己实现了一套IPC方法。第4章第1节讲解了RPC的原理,包括Stub-Skel原创 2013-06-08 00:37:45 · 3226 阅读 · 0 评论 -
KMP算法实现
本文描述了单模式的字符串匹配的经典算法KMP算法的实现。首先对字符串匹配算法做简单的介绍,然后是KMP算法的实现描述,最后推荐两道简单的ACM模板题做练手用。字符串匹配算法字符串匹配(String Matchiing)也称字符串搜索(String Searching)是字符串算法中重要的一种,是指从一个大字符串或文本中找到模式串出现的位置。一个基本的字符串匹配算法分类如下:单模原创 2013-05-26 01:40:01 · 4470 阅读 · 0 评论 -
全分布式的Hadoop初体验
背景之前的时间里对Hadoop的使用都是基于学长所搭建起的实验环境的,没有完整的自己部署和维护过,最近抽时间初体验了在集群环境下装机、配置、运行的全过程,梳理总结到本文中。配置内存:8GCPU:i5-2400 3.1GHz;硬盘:960G系统:windows 7旗舰 64bits虚拟机:VMware7.1.1虚拟集群:T (master节点)Ubuntu11原创 2013-05-12 00:46:41 · 1775 阅读 · 0 评论 -
JAR文件操作基础(Using JAR Files: The Basics)
(原文来自于Oracle官网的dob资料。翻译时去掉了一些显而易见的举例,如果需要一些更详细的内容,请点链接查看原文)The Java Archive (JAR) File FormatJAR文件是用ZIP文件格式打包的,所以你可以在一些类似ZIP的任务中使用它,进行压缩、解压、打包或者解开包。这些都是JAR文件最普遍的使用方式,你能发现许多JAR文件的优势都是源自这些翻译 2011-10-19 05:55:24 · 2784 阅读 · 1 评论 -
java 文件读取写入的编码问题
关于编码解码的知识背景:内 编码 --->> 目容 标编码解码跟翻译语言一样。内容是本质的东西,无论怎么编码,它所表达的内容不能变。而无论怎么编码解码,表现形式都是字节数组,它的值会随着编码解码方式的不同而不同。编码解码要做的,就是对这些byte数组进行操作,将它还原成我们需要的内容。对原创 2011-10-25 23:47:08 · 3003 阅读 · 0 评论 -
Three principles of Classloader operation(Classloader操作三原则)
原文是从J2EE的书中摘取的一段关于ClassLoader的介绍。-----------------------------------------------------------------------正文如下----------------------------------------------------------------------------------类加翻译 2011-10-18 01:50:04 · 2940 阅读 · 2 评论 -
JAVA:对常量池的编译时解析
from Inside the JAVA2 Virtual Machine P 294- 296在java文件中,指向编译时常量的类的static final 变量, 会被在运行时解析为一个局部的常量值(也就是说编译成字节码时,会把那些在编译时就能确定的static final 变量直接用常量代替)。这对所有的primitive types(就像int ,float等)和jav翻译 2011-10-28 02:39:07 · 2920 阅读 · 0 评论 -
分治、时间空间的权衡:最大合的连续字串问题 (PAT 1007)
欢迎关注我的新博客点击打开链接PAT1007:给定一个整数串,找出连续子串中合最大的子串。《编程珠玑》中用专门的一章对这个问题进行了讲解。(《编程珠玑(第2版)》P73 第8章 算法设计技术)第一次在PAT上遇到这个题目时,我的思路如下:最简单的淡然是一个三层循环咯,O(n3),肯定会超时。节省时间的话,用动态规划吧。但简单的动态规划,显然是会超出内存限制的。有没有更巧原创 2013-04-05 21:43:52 · 2146 阅读 · 0 评论 -
二叉树的遍历(递归、非递归)
背景二叉树是一种很基本的数据结构。很多地方能看到它的身影,比如大名鼎鼎的霍夫曼编码(好了,别问我再比如了,见识浅薄,真不知道更多了。。。)它的结构很简洁、巧妙。本文讨论二叉树的常见遍历方式的代码实现(这里贴出的是Java),包括前序(preorder)、中序(inorder)、后序(postorder)、层序(level order),进一步,考虑递归和非递归的实现方式。递归方法的实现相对原创 2013-05-04 23:31:24 · 1510 阅读 · 0 评论 -
根据前中后序和层序重建二叉树(PAT1020、PAT1043)
欢迎访问新博客,这里有更好的排版哦 ; ) 点击打开链接背景《二叉树的遍历(递归、非递归)分析》总结了二叉树不同遍历方式的递归和非递归实现,本文则讨论如何针对不同遍历方式的组合重建二叉树。为了简化问题的考虑,假定二叉树中不会出现重复值。列入考虑范围的有前序、中序、后序、层序遍历这四种的组合。前中后序比较常见,而层序则相对特殊一点了。PAT的1043和1020题是遍历相关的原创 2013-05-06 00:23:43 · 2089 阅读 · 0 评论 -
Java类、实例的初始化顺序
阿里巴巴2013校园招聘笔试题倒数第二题:java类、对象初始化顺序的分析原创 2013-09-22 23:15:32 · 10068 阅读 · 2 评论