随笔分类 - JavaSe
摘要:一.初次见面 曾几何时我们已经忘记了Java赠送给开发者的这块"糖"--内部类。谈起内部类大家都会先停顿一下,然后才恍然大悟。"噢...对对对,某某某时我用过内部类"。好东西我们总是顺其自然的拿起来就用。今天带大家来回顾一下InnerClass的相关知识。曾几何时我也用过Java内部类:View Code package innerclass;import java.util.ArrayList;import java.util.List;//测试内部类的初始化和外围类之间的通信public class Box { private String name
阅读全文
摘要:一.运行时栈帧结构1.栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的元素。栈帧存储了方法的局部变量,操作数栈,动态链接,方法返回地址等信息。2.对于执行引擎来讲,活动的线程,只有栈顶的栈帧是有效的,称为当前栈帧,这个栈帧所关联的方法称为当前方法。局部变量表1.局部变量表是一组变量值存储空间,用于存放方法参数和方法内部定义的局部变量。在java程序被编译为Class文件时,在方法的Code属性的max_locals数据项中确定该方法所需要分配的最大局部变量表的容量。2.局部变量表的容量以变量槽:Slot为最小单位,这些Slot是可重用的。3.旁门索道P
阅读全文
摘要:前面发了几篇学习笔记,但是看这些东西总是感觉很"玄乎",来一篇实战的东西来揭一下"JVM"的面纱,让"SSH"时代的童鞋们来熟悉一下Java的"老祖爷"JVM。由于自己的水平有限,所以大家在看过程中发了什么问题,或者您有什么疑问请及时提出来,我及时解决。如果您有什么建议,那么更好大家一块讨论。 1. 源码文件public class LearningClassFile { //普通变量 private int id1; //静态变量 private static int id2; //常量 private fina
阅读全文
摘要:一.Class文件结构1.Class文件是一组以8位字节为基础的二进制流,采用一种类似C语言结构体的伪代码类存储。它只有两种数据类型:无符号数和表。2.无符号数属于基本的数据类型,以u1,u2,u4,u8分表代表1个,2个,4个,8个字节。他可以用来描述数字,索引引用,数量值,UTF-8编码的字符串。3.表有多个无符号数或其他表作为数据项构成的符合数据类型,所有的表都已_info结尾。4.Class文件格式类型名称数量U4Magic(魔数)1U2Minor_version(次版本号)1U2Major_version(主版本号)1U2Constant_pool_length1Cp_infoCon
阅读全文
摘要:一.概述1.定义:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。类加载和连接的过程都是在运行期间完成的。二.类加载的时机1.类加载的生命周期:加载(Loading)-->验证(Verification)-->准备(Preparation)-->解析(Resolution)-->初始化(Initialization)-->使用(Using)-->卸载(Unloading)2.加载:这有虚拟机自行决定。3.初始化阶段:a)遇到new、getstatic、putstatic、invo
阅读全文
摘要:一.Java的运行时数据区域 (1)程序计数器(线程私有):是一块较小的内存空间,它的作用是当前线程所执行字节码的行号指示器。字节码解释器就是通过计数器的值来获得下一条需要执行的指令。如果线程执行的是java方法,这个计数器记录的是正在执行的虚拟机字节码指令地址,如果执行的是native方法,这个区域为空。Java中的多线程为了能够获得正确的执行位置,每一个线程都需要一个独立的程序计数器,这块内存称为"线程私有内存"。这也是唯一一个java虚拟机规范没有规定任何OutOfmemroyError的区域。 (2)虚拟机栈(线程私有):它与线程的生命周期相同。虚拟机栈描述的是ja
阅读全文
摘要:public class ClhSpinLock { private final ThreadLocal<Node> pred; private final ThreadLocal<Node> node; private final AtomicReference<Node> tail = new AtomicReference<Node>(new Node()); public ClhSpinLock() { this.node = new ThreadLocal<Node>() { protected Node initialVa
阅读全文
摘要:如何使用Unsafe类呢?方式一:通过Unsafe提供的工厂方法。Unsafe unsafe = Unsafe.getUnsafe(); 通过这样的方式获得Unsafe的实力会抛出异常信息,因为在unsafe的源码中会有对安全性的检查public static Unsafe getUnsafe() { Class cc = sun.reflect.Reflection.getCallerClass(2); if (cc.getClassLoader() != null) throw new SecurityException("Unsafe")...
阅读全文
摘要:目前,很多关于并发算法的研究都聚集在非阻塞算法(nonblocking algorithms)上,这种算法使用低层原子化的机器指令取代锁,比如compare-and-swap,从而保证数据在兵法访问下的一致性。非阻塞 算法广泛应用于操作系统和JVM的线程和进程调度、垃圾回收以及实现所和其他的并发数据结构。 与基于锁的方案相比,非阻塞算法的设计和实现都要复杂一些,但是它们在可伸缩性和活跃度上占有很大的优势。因为非阻塞算法可以让多个线程在竞争 相同资源时不会发生阻塞,所以它能在更精化的层面上调整粒度,并能大大减少开销。进一步而言,它们对死锁和其他活跃度问题具有免疫性。基于锁的算法中,如 果一个线.
阅读全文
摘要:锁无关的(Lock-Free)数据结构在避免死锁的同时确保线程继续Andrei Alexandrescu刘未鹏 译Andrei Alexandrescu是华盛顿大学计算机科学系的在读研究生,也是《Modern C++ Design》一书的作者。他的邮箱是 andrei@metalanguage.com。在Generic<Programming>沉默了一期之后(研究生的学业总是使人不得不投入百分之百的精力),这一期文章的可写内容突然多得令人似乎有点无所适从.例如,其中之一就是关于构造函数的讨论,特别是转发构造函数(forwarding constructor),(构造函数中的)异常处
阅读全文
摘要:原文地址:http://www.odi.ch/prog/design/newbies.php 每天在写Java程序, 其实里面有一些细节大家可能没怎么注意, 这不, 有人总结了一个我们编程中常见的问题. 虽然一般没有什么大问题, 但是最好别这样做. 另外这里提到的很多问题其实可以通过Findbugs( http://findbugs.sourceforge.net/ )来帮我们进行检查出来. 字符串连接误用 错误的写法: Java代码 Strings="";for(Personp:persons){s+=","+p.getName();}s=s.subs
阅读全文
摘要:1.线程的状态:新生(New),可运行(Runable),被阻塞(Blocked),死亡(Dead)。2.线程的优先级Java中线程一共有十个优先级1-10。Java线程的优先级依赖于宿主计算机的线程实现机制。//设置优先级的方法thread.setPriority();//三个默认的优先级MIN_PRIORITY//1NORM_PRIORITY//5MAX_PRIORITY//103.守护线程守护线程的作用就是为其他线程提供服务,如果程序中只剩下守护线程则程序即将退出。//publicclassCounterimplementsRunnable{@Overridepublicvoidrun(
阅读全文
摘要:参数说明例子%c列出logger名字空间的全称,如果加上{<层数>}表示列出从最内层算起的指定层数的名字空间log4j配置文件参数举例输出显示媒介假设当前logger名字空间是"a.b.c"%ca.b.c%c{2}b.c%20c(若名字空间长度小于20,则左边用空格填充)%-20c(若名字空间长度小于20,则右边用空格填充)%.30c(若名字空间长度超过30,截去多余字符)%20.30c(若名字空间长度小于20,则左边用空格填充;若名字空间长度超过30,截去多余字符)%-20.30c(若名字空间长度小于20,则右边用空格填充;若名字空间长度超过30,截去多余字符
阅读全文
摘要:package nekohtml;import java.io.IOException;import javax.xml.transform.TransformerException;import org.apache.xpath.XPathAPI;import org.cyberneko.html.parsers.DOMParser;import org.w3c.dom.Document;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class NekoHtmlAndXPath { // 通过url,将相
阅读全文
摘要:package concurrent;import java.util.ArrayList;import java.util.List;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.FutureTask;//用十个线程计算一个数组的和class TaskWi
阅读全文
摘要:package lock1;import java.util.ArrayList;import java.util.List;class Producer implements Runnable { private Products stack; public Producer(Products stack) { this.stack = stack; } @Override public void run() { while (true) { stack.produce(); } }}class Consumer implements Runnable { private Prod...
阅读全文
摘要:package org.ifocus.crawler.main;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.Enumeration;import java.util.Iterator;import java.util.List;import java.util.Properties;import org.jdom.Document;import org.jdom.El
阅读全文
摘要:一.异常的定义在《java编程思想》中这样定义异常:阻止当前方法或作用域继续执行的问题。虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来看待异常。绝对一点说异常就是某种意义上的错误,就是问题,它可能会导致程序失败。之所以java要提出异常处理机制,就是要告诉开发人员,你的程序出现了不正常的情况,请注意。记得当初学习java的时候,异常总是搞不太清楚,不知道这个异常是什么意思,为什么会有这个机制?但是随着知识的积累逐渐也对异常有一点感觉了。举一个例子来说明一下异常的用途。public class Calculator { public int devi
阅读全文
摘要:JavaNIO的出现旨在提高文件的读写速度,当然IO用NIO重新实过,所以我们不用显示的调用NIO也能享受这种高效的文件读写。 JavaNIO的高效得益于其两大"助手":Channel(管道)和Buffer(缓冲器)。当然这两个"得力助手"的"年龄"远远比java大!力求简单易懂的把知识讲解给大家,我举一个例子来说明一下这"两元大将"是如何在javaNIO中配合工作的。 中国古代有一种传统的吸烟器具---水烟袋。我想用这个东西来模拟一下Channel和Buffer的工作原理。不求说的好,力求准确无误。分析一下水烟袋
阅读全文
摘要:Java的I/O是一个庞大的文件操作系统,初学者往往对I/O的使用比较迷茫,优点丈二和尚摸不着头脑的感觉。即便是使用javaI/O处理了自己的实际需求仍然不知其所以然。当然我也是这样,所以几天以前我决定好好地看看java的I/O系统,到现在感觉还行,当然用好不敢自夸,但是对于I/O的那个套路差不多已经走通了,并不像以前那样云里雾里不知所云了。我学习的资料是《java编程思想》,这个总结并没有多少我自己的东西,因为我的水平有限,倒是想自己造一个轮子但是毕竟能力有限吗。好了废话不多说了,我下面说一下我的学习思路,只是一个思路,当然我已经按照这个路子能比较清楚的使用java的I/O了,所以当大家发现
阅读全文

浙公网安备 33010602011771号