随笔分类 - Java
摘要:Class文件结构 魔数 4bits 确定该文件是否是可接受的Class文件(0xCAFEBABE) 版本号 4bits 包括次版本号和主版本号 常量池 包括字面量(文本字符串,声明为final的常量值)和符号引用(类和接口的全限定名,字段的名称和描述符,方法的名称和描述符) 访问标志 2bits
阅读全文
摘要:引言 可能这个用法是个邪教了。。。但是简单说这都是历史缘故,貌似是项目最初用JPA后面还是换Mybatis了,我接手时候看着那个写好的Controller层觉得换了怪可惜的,就沿用了。网上找找,提供的方法都比较繁琐了,其实就几个依赖两行代码的事情,简单给出一下: 依赖 1. 数据库的命名规范需要标准
阅读全文
摘要:由于fastJson的高效性,最近采用fastJson来做序列化并存储数据,但出现了一个麻烦的问题,如果将Map这样的类型序列化,反序列化就会不尽人意,有以下尝试: 使用JSON.parseObject(json):得到的结果是无类型Map,其value为JSONObject。 使用JSON.par
阅读全文
摘要:在 "Java多线程:线程间通信之Lock" 中我们提到了ReentrantLock是API级别的实现,但是没有说明其具体实现原理。实际上,ReentrantLock的底层实现使用了AQS(AbstractQueueSynchronizer)。AQS本身仅仅是一个框架,定义了一套多线程访问共享资源的
阅读全文
摘要:JVM的多路复用器实现原理 Linux 2.5以前:select/poll Linux 2.6以后: epoll Windows: Winsock的select模型(感谢评论指正,仅Java NIO.2使用了Windows IOCP,由于Netty没有采用NIO.2此处不展开) Free BSD,
阅读全文
摘要:首先需要明确的是,不管使用那种Map,都不能保证公共混合调用的线程安全,只能保证单条操作的线程安全,在这一点上各Map不存在优劣。 前文中简单说过HashTable和synchronizedMap,其实这两个类不需要说太多,把代码贴一下相信看过Java多线程的就能很容易理解了。 HashTable
阅读全文
摘要:锁的几种概念 悲观锁 总是假设最坏的情况,每次获取数据都认为别人会修改,所以拿数据时会上锁,一直到释放锁不允许其他线程修改数据。Java中如synchronized和reentrantLock就是这种实现。 乐观锁 总是假设最好的情况,每次去拿数据时都认为别人不会修改,所以不上锁,等更新数据时判断一
阅读全文
摘要:秉承着某种执念我今天决定不用Logback而是和Java的logging肛到底,现在总结一下研究成果: 日志等级 日志等级有七种,severe,warning,info,fine,finer,finest,config,这七种均可以作为方法名,且是枚举类Level中的枚举量。使用方法很简单,类似lo
阅读全文
摘要:<! TOC "Stack" "Queue" "PriorityQueue" "BlockingQueue" "ArrayBlockingQueue" "LinkedBlockingQueue" "PriorityBlockingQueue" "DelayQueue" "SynchronousQue
阅读全文
摘要:"new Thread的弊端" "线程池" "线程池的优势" "Executors" "ExecutorService" "ThreadPoolExecutor" "CachedThreadPool" "FixedThreadPool" "ScheduledThreadPool" "SingleTh
阅读全文
摘要:Set和数学中的集合十分类似,在Java中,Set是一种绝不会包含两个相等元素的存储结构。在阅读此文前请阅读 "Java容器:Map" 。 Set方法 增添方法: boolean add(E e); boolean addAll(Collection c);将参数容器与该Set对象做并集。 查询方法
阅读全文
摘要:"1. Map概述" "1.1. Map类的继承关系" "1.2. 几个Map接口类概念" "1.3. Map类的通用方法" "2. HashMap" "2.1. 构造函数" "2.2. 数据结构" "2.3. 存储实现" "3. HashTable" "4. WeakHashMap" "5. Tr
阅读全文
摘要:<! TOC "集合类的层次关系" "List接口简介" "List的常用方法" "List实例" "Vector" "ArrayList" "Vector和ArrayList的扩容" "LinkedList" "参考文章" <! /TOC 今天开始更新Java集合类相关博客,暂时打算分为List,
阅读全文
摘要:<! TOC "1. wait(),notify(),notifyAll()" "2. wait()" "2.1. wait()" "2.2. wait(long timeout)" "2.3. wait(long timeout, int nanos)" "3. notify()" "4. not
阅读全文
摘要:从 "Java多线程:线程间通信之volatile与sychronized" 这篇文章中我们了解了synchronized的基本特性,知道了一旦有一个线程访问某个对象的synchronized修饰的方法或代码区域时,该线程则获取这个对象的锁,其他线程不能再调用该对象被synchronized影响的任
阅读全文
摘要:众所周知,Java的垃圾回收是不需要程序员去手动操控的,而是由JVM去完成。本文介绍JVM进行垃圾回收的各种算法。 <! TOC "1. 如何确定某个对象是垃圾" "1.1. 引用计数法" "1.2. 可达性分析" "2. 典型的垃圾回收算法" "2.1. 标记 清除算法(Mark Sweep)"
阅读全文
摘要:在 "Java基础:java虚拟机(JVM)" 中,我们提到了Java的四种引用。包括:强引用,软引用,弱引用,虚引用。这篇博客将详细的讲解一下这四种引用。 <! TOC "1. 强引用" "2. 软引用" "3. 弱引用" "4. 虚引用" "5. 参考文章" <! /TOC 1. 强引用 默认的
阅读全文
摘要:Java 5 之后,Java在内置关键字sychronized的基础上又增加了一个新的处理锁的方式,Lock类。 由于在 "Java线程间通信:volatile与sychronized" 中,我们已经详细的了解了synchronized,所以我们现在主要介绍一下Lock,以及将Lock与synchr
阅读全文
摘要:<! TOC "Java线程生命周期" "Java线程实现方法" "继承Thread类,重写run()方法" "实现Runnable接口,便于继承其他类" "Callable类替换Runnable类,实现返回值" "Future接口对任务进行监测" "FutureTask类:Future类的唯一实现
阅读全文
摘要:由于最近在系统的重新学习Java,为了便于日后复习,给个人博客中Java内容做一个目录。 "Java基础:Java虚拟机(JVM)" "Java基础:内存模型" "Java基础:JVM垃圾回收算法" "Java基础:Java的四种引用" "Java基础:类文件结构及类加载" "Java容器:List
阅读全文