java基础
文章平均质量分 69
Yuanzi_Hansbrough
这个作者很懒,什么都没留下…
展开
-
java文档注释主要使用方法
一、java包含哪些注释 1.//用于单行注释。 2./*...*/用于多行注释,从/*开始,到*/结束,不能嵌套。 3./**...*/则是为支持jdk工具javadoc.exe而特有的注释语句。这个也就是我们所知的文档注释 在命名控制台:使用命令行在目标文件所在目录输入javadoc +文件名.java。 二、文档注释的关键名词 /**标转载 2017-10-31 10:13:58 · 412 阅读 · 0 评论 -
Java中继承与组合
本文主要说明Java中继承与组合的概念,以及它们之间的联系与区别。首先文章会给出一小段代码示例,用于展示到底什么是继承。然后演示如何通过“组合”来改进这种继承的设计机制。最后总结这两者的应用场景,即到底应该选择继承还是组合。 1、继承 假设我们有一个名为Insect(昆虫)的类,这个类包含两个方法:1)移动move(); 2)攻击attack()。 代码如下:转载 2017-11-11 16:23:58 · 212 阅读 · 0 评论 -
BlockingQueue
一、什么是BlockingQueue BlockingQueue即阻塞队列,从阻塞这个词可以看出,在某些情况下对阻塞队列的访问可能会造成阻塞。被阻塞的情况主要有如下两种: 1. 当队列满了的时候进行入队列操作 2. 当队列空了的时候进行出队列操作 123 因此,当一个线程试图对一个已经满了的队列进行入队列操作时,它将会被阻塞,除非有另一个线程做了出队列操作;同样,当一个线程试图对一个转载 2017-11-02 17:32:05 · 154 阅读 · 0 评论 -
深入理解Java之线程池
在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以通过线程池来达到这样的转载 2017-11-02 23:30:26 · 132 阅读 · 0 评论 -
jdbc驱动的类加载过程
第一步,加载数据库的驱动 Class.forName("oracle.jdbc.driver.OracleDriver") Class.forName("com.mysql.jdbc.Driver") Class.forName 方法会根据类的全路径名称去加载对应的class文件,生成类型,并初始化类型。也就是说static语句块会执行。 下面来看看 com.mysql.j转载 2017-11-03 14:21:09 · 1014 阅读 · 0 评论 -
谈谈数据库连接池的原理
一.早期我们怎么进行数据库操作 1.原理:一般来说,java应用程序访问数据库的过程是: ①装载数据库驱动程序; ②通过jdbc建立数据库连接; ③访问数据库,执行sql语句; ④断开数据库连接。 2.代码 // 查询所有用户 [java] view pl转载 2017-11-03 15:13:56 · 331 阅读 · 0 评论 -
数据库性能优化详解
1.数据库访问优化法则 要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找到我们SQL主要的开销在哪里?而大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件时硬盘可能会是瓶颈点,为什么这些一般的工作我们能快速确认瓶颈点呢,因为我们对这些慢速设备的性能数据有一些基本的认识,如网络带宽是2Mbps,硬盘是每分钟7200转等等。因此,为了快速转载 2017-11-06 15:34:58 · 271 阅读 · 0 评论 -
Collections.unmodifiableMap()分析
public static Map unmodifiableMap(Map m)返回指定映射的不可修改视图。此方法允许模块为用户提供对内部映射的“只读”访问。在返回的映射上执行的查询操作将“读完”指定的映射。试图修改返回的映射(不管是直接修改还是通过其 collection 视图进行修改)将导致抛出 UnsupportedOperationException。 如果指定映射是可序列化的,转载 2017-12-13 12:10:38 · 307 阅读 · 0 评论 -
使用Dom4j解析XML
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它. 对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。如今你可以看到越来越多的转载 2017-12-14 11:15:09 · 140 阅读 · 0 评论 -
Java中代码的执行顺序
今天要说的问题是,Java中代码的执行顺序,不知道叫这个题目合适不。这里先定义几个类别: 构造方法(如:public className(){……})静态代码块(如:static {……})类的属性变量(如:ClassA a = new ClassA()) 这些它们在类被初始化时执行的顺序时怎么样的呢? 代码 package test; public class ClassO转载 2017-11-11 16:00:33 · 189 阅读 · 0 评论 -
Lock与synchronized 的区别
1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候 线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定, 如果使用 synchronized ,如果A不释放,B将一直等下去,不能被中断 如果 使用ReentrantLock,如果A不释放,可以使B在等待了足够长的时间以后,中断等待,而干别的转载 2017-11-02 16:22:51 · 187 阅读 · 0 评论 -
Java中守护线程的总结
在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆: 只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。 Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应转载 2017-11-02 15:42:53 · 127 阅读 · 0 评论 -
正则表达式(括号)、[中括号]、{大括号}的区别小结
正则表达式的() [] {}有不同的意思。 () 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。 (\s*)表示连续空格的字符串。 []是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。 {}一般用来表示匹配的长度,比如 \s{3} 表示匹配三个空格,\s[1,3]表示匹配一到三个空转载 2017-11-01 09:29:33 · 309 阅读 · 0 评论 -
java程序的执行顺序和赋值顺序
本文主要介绍以下两块内容的执行顺序,熟悉的大虾可以直接飘过。 一。JAVA中执行顺序 静态块块构造器父类构造器 二。JAVA中赋值顺序 静态块直接赋值 块直接赋值 父类继承的属性已赋值 静态变量声明时赋值 成员变量声明时赋值 构造器赋值 第一部分很好测试,我转载 2017-11-01 09:49:52 · 615 阅读 · 0 评论 -
SimpleDateFormat使用详解
public class SimpleDateFormat extends DateFormat SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类。 它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。 SimpleDateFormat 允许以为日期-时间格式化选择任何用户指定的方式启动。 但是,希望用 Dat转载 2017-11-01 10:31:55 · 229 阅读 · 0 评论 -
将ListA和ListB合并为一个List
应用环境:从数据库中查询出满足一系列条件的记录,然后以对象的形式封装到List中去。此时假设有两个条件A和B,满足A的记录集和为ListA,满足B的记录集合为ListB,现在要将ListA和ListB合并为一个List,注意ListA和ListB中可能有重复的记录(因为可能某条记录即满足条件A又满足条件B),要过滤掉重复的记录。 方法过程:我们假设List中存放的对象都是Order对象,属性or转载 2017-11-01 11:05:57 · 2387 阅读 · 0 评论 -
JAVA中ListIterator和Iterator详解与辨析
在使用java集合的时候,都需要使用Iterator。但是java集合中还有一个迭代器ListIterator,在使用List、ArrayList、LinkedList和Vector的时候可以使用。这两种迭代器有什么区别呢?下面我们详细分析。这里有一点需要明确的时候,迭代器指向的位置是元素之前的位置,如下图所示: 这里假设集合List由四个元素List转载 2017-11-01 11:47:21 · 134 阅读 · 0 评论 -
java集合-Iterator迭代
我们常常使用 JDK 提供的迭代接口进行 Java 集合的迭代。 Iterator iterator = list.iterator(); while(iterator.hasNext()){ String string = iterator.next(); //do something转载 2017-11-01 12:04:56 · 141 阅读 · 0 评论 -
ArrayList中的实现原理以及实现线程安全
一,ArrayList概述: ArrayList的是基于数组实现的,是一个动态数组,其容量能自动增长,类似于Ç语言中的动态申请内存,动态增长内存。 ArrayList不是线程安全的,只能在单线程环境下,多线程环境下可以考虑使用Collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用并发并发包下的转载 2017-11-01 15:35:47 · 697 阅读 · 0 评论 -
线程常用操作方法
在多线程中所有的操作方法都是从Thread类开始的,所有的操作基本上都在Thread类中。 1,线程名称 1,在Thread类中可以通过getName()方法取得线程名称,通过setName()设置线程名称。 2,线程的名称一般在启动线程前设置,但也允许为运行的线程设置名称,允许两个Thread对象有相同名称,但是应该避免。 3,如果程序没有为线程指定转载 2017-11-02 15:24:29 · 165 阅读 · 0 评论 -
使用System.arraycopy()实现数组之间的复制
System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。其函数原型是: public static void (Object src, int srcPos, Object dest, in转载 2017-12-15 13:47:42 · 240 阅读 · 0 评论