Java
文章平均质量分 67
智公博客
互联网.金融.电商
展开
-
Servlet实现跳转的几点区别(sendRedirect(),getRequestDispatcher().forwar())
response.sendRedirect(r)和request.getRequestDispatcher()原创 2014-04-12 11:03:18 · 1394 阅读 · 0 评论 -
JVM学习-java垃圾回收(三)-内存分配
在上一篇中主要说到了垃圾回收算法、垃圾收集器等,这篇我们来学习下对象在内存分配的策略;一、概述对象在内存分配,一般都是在堆内存上分配,主要是会分配到新生代的Eden区,如果有开启本地线程分配缓冲区,会按线程优先在TLAB上分配,还有少数情况会直接在老年代分配;对象内存的分配的策略细节由垃圾收集器组合决定,还有许多虚拟机参数可以由我们控制设置;这里我们主要看下几天普遍的分配规则,并在 Serial原创 2016-08-31 17:43:01 · 1067 阅读 · 0 评论 -
JVM学习-java垃圾回收(二)-GC日志
GC 日志是一个分析Java内存回收有用的工具,它能准确的记录每一次GC的执行时间和结果GC or Full GC关于Full GC,容易有误解,以为是堆全部年代内存GC;其实”Full” 并不是用来区分新生代GC和老年代GC,只是表示这次GC发生了”Stop The World(STW)”-XX:+PrintGC这个参数开启简单的GC日志模式,为每次的GC或Full GC打印一条信息,如:[GC原创 2016-08-24 14:19:39 · 2078 阅读 · 0 评论 -
JVM学习-java垃圾回收(一)
在上一篇中主要描述了Java 内存的分布,对象存储和访问已经各个内存区域可能的异常等,本篇主要描述Java 垃圾回收中有关内存回收策略和垃圾回收器的部分内容;原创 2016-08-01 18:09:35 · 721 阅读 · 1 评论 -
JVM学习-java内存区域与异常
java是一门跨硬件平台的面向对象高级编程语言,java程序运行在java虚拟机上(JVM),由JVM管理内存,这点是和C++最大区别;虽然内存有JVM管理,但是我们也必须要理解JVM是如何管理内存的;JVM不是只有一种,当前存在的虚拟机可能达几十款,但是一个符合规范的虚拟机设计是必须遵循《java 虚拟机规范》的,本文是基于HotSpot虚拟机描述原创 2016-07-21 13:14:42 · 2441 阅读 · 0 评论 -
Java NIO 学习(六)--Selector
在之前讲解的网络相关的channel,都有讲到非阻塞模式,只简单说明了那些方法在非阻塞模式下的返回情况,并没有实际的应用;本节要讲到的selector就是NIO中非阻塞模式使用的一大优点;一、概述selector,选择器,同过一个选择器,程序可以通过一个线程处理多个channel,而不需要像之前ServerSocketChannel那样每接收一个请求都单开一个线程处理通信;selector基于事件原创 2016-07-16 20:03:15 · 1156 阅读 · 0 评论 -
Java NIO 学习(五)--DataGramChannel
本节讲解的是DataGramChannel,类是与java 网络编程的DatagramSocket类;使用UDP进行网络传输,UDP是无连接,面向数据包的协议,对传输的数据不保证安全与完整;原创 2016-07-15 12:38:42 · 3396 阅读 · 1 评论 -
Java NIO 学习(三)--FileChannel
一、概述NIO 中FileChannel可以理解为一个连接到文件的通道,可以通过FileChannel对文件进行读写; FileChannel没有非阻塞模式,读写都只有阻塞的方式;原创 2016-07-06 19:56:12 · 824 阅读 · 0 评论 -
Java NIO 学习(二)--Buffer
在第一节中,简单的描述了NIO三个核心的类:channel、buffer、selector;由于缓冲区作为操作的基本,而且底层channel接口没有过多细节(只有两个方法:isOpen、close)这里先讲解缓冲区的详细内容,后面再讲解具体类型的channel和selector;原创 2016-07-05 12:58:36 · 826 阅读 · 0 评论 -
Java NIO 学习(一)--简介
Java NIO (New IO)是JDK1.4后引入的新输入/输出API,提供基于缓冲区(buffer)的块写入/读取,而以前的I/O是基于流(Stream)的方式,NIO基于块的IO操作,将最耗时的缓存区读取和填充交由底层操作系统实现,因此速度上要快得多;主要由以下三个核心部分组成: 1. channel 2. buffer 3. selector二、channel - 通道通道可原创 2016-07-04 12:21:56 · 589 阅读 · 0 评论 -
转:Java并发编程:volatile关键字解析
在对关键字volatile学习了解后,原本打算写个博客总结下的,但是看到这篇文章写的太好;我决定直接转载:《Java并发编程:volatile关键字解析》:http://www.cnblogs.com/dolphin0520/p/3920373.html转载 2016-02-23 10:46:52 · 713 阅读 · 0 评论 -
JVM学习-垃圾收集器
虚拟机有许多的垃圾收集器可以选择,这里简单的记录分享下每个收集器的特点一、Serial历史最久,曾经是新生代唯一选择单线程,进行时暂停所有用户线程-Stop The WorldClient模式下默认新生代收集器单个线程更加高效简单,没有线程交互开销,一般client应用内存使用不大,停顿时间很短二、ParNewSerial的多线程版本,控制参数、收集算法、Stop The World、原创 2017-02-03 17:07:13 · 366 阅读 · 0 评论 -
ThreadPoolExecutor解析-主要源码研究
注:本文的分析和源码基于jdk1.7;一、ThreadPoolExecutor创建ThreadPoolExecutor作为java.util.concurrent包中核心的类,先看下类型的结构:最顶级的接口都是Executor,而ThreadPoolExecutor继承于抽象类AbstractExecutorService,提供以下4个构造函数用于创建:public T...原创 2016-05-26 14:26:24 · 10274 阅读 · 7 评论 -
java 集合框架-概述
Java 集合框架在java.util 包下,包括常用的容器类数据结构、工具类等,本章主要为对下图的简单概括,后续章节通过源码说明每个容器类的详细实现细节:集合框架中两个顶级的集合接口:Collection、Map,定义了最基本的一些操作方法;其中Collection接口是继承可迭代接口 Iterable 的,所有的子类都是可以使用 Iterator 迭代器方式原创 2016-11-17 20:32:56 · 460 阅读 · 0 评论 -
java 集合框架-AbstractList
AbstractList 作为具体List型具体类,实现AbstractCollection抽象类、继承List接口,实现了部分方法 - indexOf - lastIndexOf - subList - addAll - iterator - listIterator - equals - hashCode下面源码分析一些较复杂的方法实现原创 2016-11-17 20:35:29 · 520 阅读 · 0 评论 -
java 集合框架-AbstractCollection
AbstractCollection 作为顶级接口Collection的抽象实现子类,实现了一下集合基本方法: - isEmpty - contains - toArray - add - remove - containsAll - addAll - clear - toString下面我们一一看下实现的源码原创 2016-11-17 20:34:09 · 472 阅读 · 0 评论 -
java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I 异常解决
今天在学习hibernate的工程中,使用上投入他刷原创 2014-04-26 23:57:47 · 2055 阅读 · 0 评论 -
实现多个具有相同方法的接口和父类与实现接口有相同方法
一、实现多个具有相同方法的接口这种情况还是比较少会遇到的,但事实是存在这样的问题,所以写下解决的方法:使用内部类:interface InterA {void f();}interface InterB {void f();}public class C implements InterA {public void f() {// 实现接原创 2014-04-13 15:34:49 · 8386 阅读 · 0 评论 -
JavaEE的核心技术简介
一. JavaEE的架构二. JavaEE的核心技术简介三. JavaEE平台中的角色四. 当前流行的JavaEE平台五. JavaEE的应用 一.JavaEE架构:JavaEE的运行环境定义了4种类型的应用组件:l Applet客户端l Application客户端l Web组件l EJB组件转载 2014-06-12 23:28:07 · 2126 阅读 · 0 评论 -
Java JDK1.8新特性
一、lambda含义 lambda表示数学符号“λ”,计算机领域中λ代表“λ演算”,表达了计算机中最基本的概念:“调用”和“置换”。在很多动态语言和C#中都有相应的lambda语法,这类语法都为了简化代码,提高运行效率。二、lambda 项目的背景,参考这里。 无论是面向对象语言还是函数式语言,基本数值都可以被动态的封装入程序动作:面向对象语言通过“转载 2014-06-12 17:26:08 · 1535 阅读 · 0 评论 -
Java中的匿名内部类总结
匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象方法abstract class Person { public abstract void eat(); }转载 2014-06-13 17:25:28 · 530 阅读 · 0 评论 -
String类、StringBuffer类、StringBuilder类的区别
本文主要介绍String类、StringBuffer类、StringBuilder类的区别 : 一、概述(一)String字符串常量,但是它具有不可变性,就是一旦创建,对它进行的任何修改操作都会创建一个新的字符串对象。(二)StringBuffer字符串可变量,是线程安全的,和StringBuilder类提供的方法完全相同。区别在于转载 2014-06-13 17:28:07 · 808 阅读 · 0 评论 -
一个简单网络爬虫示例
在学生时期,可能听到网络爬虫这个词会觉得很高大上,但是它的简单实现可能学生都不难懂。网络爬虫应用,就是把整个互联网真的就当做一张网,像蜘蛛网那样,应用就像一个虫子,在网上面按照一定的规则爬动。现在互联网应用最广的就是http(s)协议了,本文例子就是基于使用http(s)协议的,只作为示例,不涉及复杂的算法(实际上是最重要的)。设计思路: 程序入口从一个或多个url开始,通过http原创 2016-02-04 11:17:28 · 18856 阅读 · 2 评论 -
Java动态代理
在java常用的设计模式中有一种模式叫:代理模式----通过一个代理类负责处理被代理类(委托类)的调用,如果你了解或使用过Spring的切面(AOP),可以更好的理解何为代理,通俗的讲就是在一个类的方法执行的前后加入操作(如进入和完成方法打印日志),实际上Spring正是使用java的动态代理来实现切面的;一般代理类和委托类实现同样的接口,代理类通过调用委托类对象的方法真正的实现服务,原创 2016-06-17 17:43:19 · 796 阅读 · 0 评论 -
使用CGLib实现动态代理
java的动态代理是必须基于接口的,而在编程中,使用到的外部类并不是基于接口编程的比比皆是,这有如何实现动态代理?使用可以基于类实现动态代理的CGLib!原创 2016-06-20 19:36:36 · 5580 阅读 · 0 评论 -
ReentrantLock锁与内置锁synchronized
Syschronized 关键字 同步代码块(同步方法)对象内置锁使用对象自身的内置锁(监视器锁-monitor lock)实例方法-使用实例对象锁,static 方法 使用Class对象锁对象内置锁为互斥锁,一个同步块,只有一个线程进入同步代码块中的代码具有原子性计入代码块内获取到锁,无论正常退出or移除都会释放锁可重入可重入,表示内置锁获取锁的粒度是线程,而不是调用同一个线程可以原创 2017-02-08 18:12:46 · 1707 阅读 · 0 评论 -
java 集合框架-CopyOnWriteArrayList
CopyOnWriteArrayList是java.util.concurrent并发包下的集合类,与集合功能与ArrayList相似,主要区别为这是线程安全类 如类名一样,在对底层数组写(修改)时,会复制一份数组进行实际操作,操作完成后修改引用为新数组;而在读的时候是直接读取数组接下来我们来看具体的源码: /** The lock protecting all mutators原创 2017-01-18 18:20:43 · 364 阅读 · 0 评论 -
java 集合框架-ArrayList
在上一篇中我们描述了AbstractList的一些特性,包括迭代器的快速失败机制,这篇我们继续分享List下最常用的ArrayList以及非常类似的Vector,ArrayList具体实现类主要有以下特性: - 支持动态大小,集合的大小可以自动扩展 - 不是线程同步安全,所有方法都不同步 - 实现支持迭代器快速失败原创 2017-01-12 16:53:29 · 436 阅读 · 0 评论 -
java 集合框架-TreeMap
一、背景1、SortMap接口扩展Map接口,定义按照key有序的映射集合以key的自然顺序(实现Comparable的对象)排序或者指定的Comparator排序有序指的是迭代的有序,如entrySet、keySet、values 等方法返回的元素集合有序SortMap新增定义了一些基于有序的方法://返回一个左闭右开区间的子视图,修改子视图等同修改该mapSortedMap&...原创 2018-09-19 19:06:41 · 213 阅读 · 0 评论