Java学习
文章平均质量分 83
记录Java学习过程中的所有知识点,以便回顾巩固
WhataNerd
欢迎访问:danght.github.io
展开
-
Java并发编程:volatile关键字解析
原文出处:http://www.cnblogs.com/dolphin0520/p/3920373.html 作者:海子volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用转载 2017-12-22 23:07:48 · 324 阅读 · 0 评论 -
遍历字符串
首先必须要知道,Java字符串不是char数组而是Unicode序列,这是很多C/C++程序员转Java时会遇到的坑为什么Java要用Unicode编码机制来定义String中的字符单元呢?这就与Java强大的字符兼容性有关了,Java这正是因为采用了Unicode才可以兼容多国语言,或是各种奇怪的符号所有常用的字符在Unicode中用一个代码单元表示,而一些特殊的字符则需要两个代码单原创 2017-04-20 16:18:15 · 729 阅读 · 0 评论 -
DAO设计模式
本文完全根据我对DAO设计模式的理解程度完成,在未来不断地学习中,我也会不断更新这篇文章,如果你对文章内容有建议欢迎评论!DAO(Data Access Object,数据访问接口)设计模式是J2EE(Java2平台企业版)的核心模式这种设计模式很好的将底层数据访问与业务逻辑实现高度分离,这样便于开发人员专注于开发所需的功能实现代码,而不需要过多地考虑上下层交互的问题,很好地降低了出bug的几率,提原创 2017-06-06 21:06:14 · 370 阅读 · 0 评论 -
Java泛型详解(上)
一. 什么是泛型泛型是一种程序设计手段(机制),使用泛型可以让你的代码被很多不同类型的对象所重用,提高代码的重用性,还可以提高代码的可读性和安全性比如,我们经常使用的ArrayList类,就是一个泛型类,也正因如此,它可以接受很多不同类型的对象/*可以根据需要存储不同类型的对象*/ArrayList<Integer> arraylist = new ArrayList<Integer>();原创 2017-07-19 23:38:26 · 409 阅读 · 0 评论 -
Object类
Object类是Java中所有类的始祖,在Java中每个类都是由它扩展而来的。但不需要明写:public class String extends ObjectObject类具有以下特性:对于任何一个类,如果没有明显的指出它的父类,那么就默认它的父类是Object类可以使用Object类型的变量引用任何类型的对象Object obj = new Integer(666);Object obj原创 2017-07-20 00:48:43 · 524 阅读 · 0 评论 -
Java泛型详解(下)
九. 泛型类型的继承规则假设现在有一个类Employee和它的子类Manager现在问题来了:Pair<Manager>是Pair<Employee>的子类吗?答案是:不是例如,下面的代码将不会编译成功:Manager[] topHonchos = ...;Pair<Employee> result = ArrayAlg.minmax(topHonchos); //Error//minmax方法原创 2017-07-21 16:28:41 · 333 阅读 · 0 评论 -
Iterator迭代器
Iterator接口共包含4个方法:public interface Iterator<E> { E next(); boolean hasNext(); void remove(); default void forEachRemaining(Consumer<? super E> action){};}1. 反复调用next()方法就可以逐个的遍历集合中的元素,原创 2017-07-28 17:33:53 · 532 阅读 · 0 评论 -
ArrayList与LinkedList
在Java中有两种用来存储列表的集合类:ArrayList与LinkedList,我们来讨论一下它们两者之间的区别ArrayList维护着对象引用的一个内部数组,它是可以动态增长的动态增长方式:ArrayList 默认大小是10,当调用add方法且内部数组已经满了,数组列表就将自动创建一个更大的数组,并将所有的对象从原来的数组中拷贝到新的更大的数组中ArrayList增长方式源码:// 若Array原创 2017-07-30 12:55:07 · 346 阅读 · 0 评论 -
Set集合
Set集合类的特点是不能有存在重复元素Java库中的Set类有 HashSet, TreeSet, EnumSet, LinkedHashSet四种实现方式,其中前两种是比较常用的一. HashSet(散列集)根据前面的介绍,如果你存储的数据需要经常执行查询操作,那么你最好不要使用链表存储,因为链表不支持快速随机访问,如果要查找其中的元素只能逐个查找,这会十分痛苦。我们可以使用数组存储数据,应为数组原创 2017-07-31 22:32:42 · 343 阅读 · 0 评论 -
中断线程
检查线程中断状态每一个线程都有一个记录该线程中断状态的标记位,这是一个 boolean 标记。每个线程都应该不时地检查这个标记位以确定线程是否已经被中断。调用 interrupt 方法可以请求终止线程,也就是将成功调用 interrupt 方法的线程的中断标记位置为 true。如果我们想知道线程是否被置位,应该操作:① 调用静态的 Thread.currentThread 方法获得当前线程② 调用原创 2017-08-15 23:02:52 · 304 阅读 · 0 评论 -
线程状态及属性
线程一共有六种状态New (新创建)Runnable (可运行) Blocked (被阻塞) Waiting (等待) Timed waiting (计时等待) Terminated (被终止)可以通过调用 getState 方法,获取一个线程的当前状态 New基础且常用的创建线程的方式有两种:继承 Thread 类 和 实现 Runnable 接口 这两种方法各原创 2017-08-16 17:56:40 · 990 阅读 · 0 评论 -
Java线程并发干扰问题及解决方式(锁对象)
并发干扰使用多线程开发可以很好地提高代码效率,但是在多线程对同一数据资源的共享中,许多线程需要的同一个数据做读写修改操作,因此必然会存在竞争问题,而且这些问题通常会带来灾难性的后果,我们来看一个例子:现在有一个多线程的银行账户管理系统,我的账户内有余额 1000 元,现在有两个线程对我的账户进行操作: 线程 A :存入500元 线程 B :取出200元我们应该知道,在大多服务器操作系统中都采用抢原创 2017-08-18 15:15:50 · 3779 阅读 · 0 评论 -
Java条件对象(Condition)
通过之前讨论的锁对象,我们知道了,由于线程按照时间片调度,所以使用锁对象来在多线程共享资源时保护未执行完成的线程安全。那么,我们再来考虑这样一种情况: 如果我的线程执行过程中因为没有满足一些必要的条件而导致线程暂停执行怎么办? 比如,我们还用银行账户系统做例子,如果有一条线程是从我的账户转出 1000 元到其他账户,可是我的账户余额不足 1000 元,那么怎么办?也许你会直接简单地想到,加上一个原创 2017-08-19 16:03:45 · 1020 阅读 · 0 评论 -
synchronized关键字
首先,我们简单总结一下锁对象(Lock)和条件对象(Condition)的要点:锁用来保护代码片段,任何时刻只能有一个线程执行被保护的代码锁可以管理试图进入被保护代码段的线程锁可以拥有一个或多个相关的条件对象每个条件对象管理那些已经进入被保护的代码段但还不能运行的线程其实大多数情况下,我们并不需要像 Lock 和 Condition 那样高度的锁定控制,synchronized 关键字就是原创 2017-08-20 22:02:54 · 575 阅读 · 0 评论 -
Java字节码
原文出处:https://www.ibm.com/developerworks/library/it-haggar_bytecode/index.html#opcode 作者:Peter Haggar 发表时间:2001 / 07 / 01理解字节码可以使你变成一个更好的程序员关于字节码的信息,以及这里提供的字节码,都是基于Java 2 SDK标准版v1.2.1 javac编译器的。其翻译 2017-08-21 23:49:48 · 489 阅读 · 0 评论 -
String,StringBuffer,StringBuilder
String,StringBuffer,StringBuilder 这三者的区别是 Java 学习中的一个基础知识,也是在面试中经常会问到的一个知识点StringString 也许是 Java 中最常被用到的类了,关于它,有很多值得一提的地方首先,Java 中的 String 是一个 char 类型序列:char[] data = {'a', 'b', 'c'};// 等价于String str =原创 2017-10-14 23:20:00 · 530 阅读 · 0 评论 -
AOP面向切编程及在Spring中的使用方法
AOP 简介AOP(Aspect-Oriented Programming, 面向切面编程): 是一种新的方法论, 是对传统的 OOP(Object-Oriented Programming, 面向对象编程)的补充AOP 的主要编程对象是切面(aspect)在应用 AOP 编程时, 仍然需要定义公共功能, 但可以明确的定义这个功能在哪里, 以什么方式应用, 并且不必修改受影响的类AOP 的好处:每原创 2017-11-17 17:17:35 · 640 阅读 · 0 评论