
Java
1024小豆子
这个作者很懒,什么都没留下…
展开
-
正则表达式Java实现
正则表达式定义了字符串的模式,可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。 先举几个正则表达式的例子:正则表达式匹配的字符串不匹配的字符串(A|B)(C|D)AC AD BC BD其他所有A(B|C)*DAD ABD A原创 2017-08-17 14:47:02 · 1692 阅读 · 0 评论 -
Java整理(五)异常
异常类型检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。...原创 2017-11-16 19:24:16 · 1177 阅读 · 0 评论 -
NIO入门和使用
NIO入门和使用阻塞和非阻塞,同步和异步阻塞和非阻塞:程序在访问数据的时候,阻塞往往需要等待缓冲区中数据准备好才能继续处理,否则等待;非阻塞则是不论数据是否准备好都会返回。同步和异步:同步应用程序直接参与IO读写操作,同步IO方式必须阻塞在某个方法上(阻塞IO或非阻塞轮询IO的方式);而异步的IO操作交给了操作系统去处理,当IO完成后给应用程序一个通知即可。Java IO模型B...原创 2018-03-13 14:52:48 · 339 阅读 · 0 评论 -
Java中的锁
Java中的锁锁是用来控制多个线程访问共享资源的方式,一个锁能够防止多个线程同时访问共享资源(有些锁也可以并发访问共享资源,读写锁)。java.util.concurrent.locks包中包含以下内容:Lock接口在Java SE5之前都是靠synchronized关键字实现锁功能,而之后并发包新增了Lock接口以及实现类,使用时需要显示地获取和释放锁。Lock 实现提供了比使用 synchro...原创 2018-03-15 22:19:37 · 292 阅读 · 3 评论 -
Java中的线程池
Java中的线程池使用线程池的优点:降低资源消耗、提高响应速度、提高线程的可管理性。线程池原理线程池处理流程:if (核心线程池没满){ //创建线程执行,执行完后会去工作队列中获取新的任务task.run()}else if(工作队列没满){ //将提交的任务存储在工作队列里}else if (线程池没满){ //创建线程执行任务}else { //其他策略处理无法执行的...原创 2018-03-14 10:51:24 · 260 阅读 · 0 评论 -
ConcurrentHashMap学习笔记
ConcurrentHashMap学习笔记简介ConcurrentHashMap是线程安全且高效的HashMap。我们都知道HashMap不是线程安全的,在并发编程中使用HashMap可能导致死循环。那么除了ConcurrentHashMap,还有Hashtable和Collections.synchronizedMap()方法都是线程安全的Map。Hashtable和Collections.sy...原创 2018-03-13 20:28:57 · 279 阅读 · 0 评论 -
ThreadLocal详解
概述相信读者在网上也看了很多关于ThreadLocal的资料,很多博客都这样说:ThreadLocal为解决多线程程序的并发问题提供了一种新的思路;ThreadLocal的目的是为了解决多线程访问资源时的共享问题。如果你也这样认为的,那现在给你10秒钟,清空之前对ThreadLocal的错误...转载 2018-03-05 10:33:11 · 213 阅读 · 0 评论 -
Java整理(四)并发
线程简介线程生命周期l 新建状态:使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态直到程序 start() 这个线程。l 就绪状态:当线程对象调用了start()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列中,要等待JVM里线程调度器的调度。l 运行状态:如果就绪状态的线程获取CPU 资源,...原创 2017-11-14 21:59:56 · 1340 阅读 · 2 评论 -
Java源码阅读——TreeMap和红黑树
Java源码阅读——TreeMap和红黑树红黑树什么是红黑树红黑树是基于二叉搜索树的,为了能以较快的时间O(logN)来搜索一棵树,需要保证树总是平衡的(或者至少大部分是平衡的),这就是说对树中的每个节点在它左边的后代数目和在它右边的后代数目应该大致相等。红黑树就是这样的一棵平衡树,对一个要插入的数据项,插入例程要检查会不会破坏树的特征,如果破坏了,程序就会进行纠正,根据需要改变树的结构,从而保持...原创 2018-03-12 21:40:44 · 367 阅读 · 1 评论 -
Java源码阅读——HashMap
Java源码阅读——HashMap定义public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable 继承了AbstractMap抽象类,实现Map,Cloneable,Serializable接口。HashMap 是一个散列表,...原创 2018-03-06 15:20:41 · 824 阅读 · 0 评论 -
Java源码阅读——LinkedList
Java源码阅读——LinkedList上次介绍了ArrayList源码,自然少不了LinkedList。定义public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Seria...原创 2018-03-05 20:31:46 · 268 阅读 · 0 评论 -
Java源码阅读——ArrayList
ArrayList源码阅读起源这里说的起源不是ArrayList,而是插个题外话,为什么要开始源码阅读?本人研二,上周接到阿里的内推电话测评面试,20分钟左右,最后问了Java基础的ArrayList。心想,这个有啥好问的,但由于当时内心还是比较紧张的,所以说的不清不楚,说到底层说了初始为10容量,每次扩容50%,但问到每次怎么实现扩容的,当时就想着是基于数组实现的,具体怎么实现的还真一时没说上来...原创 2018-03-05 14:32:56 · 322 阅读 · 0 评论 -
数据库连接池实践——c3p0
之前转载了一个关于连接池的博客:http://blog.youkuaiyun.com/qq407388356/article/details/78869653介绍了连接池的原理。后来在Spring整合的项目中使用到了连接池的一些操作。下面以c3p0连接池与不使用连接池进行一个比较操作,使用maven比较简单获得c3p0的jar包。<dependency> <groupId>c3...原创 2018-02-25 15:25:52 · 401 阅读 · 0 评论 -
JVM学习笔记
Java虚拟机学习笔记GC(Garbage Collection)Java和JVM的历史1996年 SUN JDK 1.0 Classic VM,纯解释运行,使用外挂进行JIT 1997年 JDK1.1 发布,AWT、内部类、JDBC、RMI、反射 1998年 JDK1.2 Solaris Exact VMJIT 解释器混合 ,Accurate Memory Management...原创 2018-03-07 09:44:35 · 659 阅读 · 0 评论 -
Java整理(七)网络编程Socket
java.net 包中提供了两种常见的网络协议的支持:TCP:是传输控制协议的缩写,它保障了两个应用程序之间的可靠通信。通常用于互联网协议,被称 TCP / IP。UDP:是用户数据报协议的缩写,一个无连接的协议。提供了应用程序之间要发送的数据的数据包。端口:用于区分不同应用程序,0~65535,其中0~1023为系统保留http:80 ftp:21 telnet:23 Socket编程服务器实例...原创 2017-11-20 21:30:39 · 1481 阅读 · 0 评论 -
Java内部类的使用小结
内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。*内部类可以是静态static的,也可用public,default,protected和private修饰。(而外部顶级类即类名和文件名相同的只能使用public和default)。 注意:内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。对于一个名为outer的外部类和其内部定义的名为inn转载 2017-08-11 09:08:49 · 1237 阅读 · 1 评论 -
Java中的深拷贝与浅拷贝
Cloneable接口本身没有任何方法,它仅仅是告诉你实现这个接口的对象允许克隆(clone),要实现clone需要覆盖Object类中的clone()方法。这里需要捕获CloneNotSupportedException异常。拷贝对象往往会导致创建创建它的类的一个新的实例,同时拷贝内部的数据结构,这个过程没有调用构造器。浅拷贝对于要克隆的对象,对于其基本数据类型的属性,复制一份给新产原创 2017-08-04 11:56:50 · 1147 阅读 · 0 评论 -
Java编码规范简版
1.Java编程命名规范一般约定:命名时应始终采用完整的英文描述符。此外,一般应采用小写字母,但类名、接口名以及任何非初始单词的第一个字母要大写。使用可以准确说明变量/字段/类的完整的英文描述符。例如, firstName,grandTotal 或CorporateCustomer 而非x1,y1 或 fn ,使代码以理解、维护和改进。 采用该领域的术语。如果用户称他们的“转载 2017-11-09 20:31:31 · 454 阅读 · 0 评论 -
Java泛型总结
一. 泛型概念的提出(为什么需要泛型)?首先,我们看下下面这段简短的代码: 1 public class GenericTest { 2 3 public static void main(String[] args) { 4 List list = new ArrayList(); 5 list.add("qqyumidi");转载 2017-08-11 09:59:02 · 1225 阅读 · 0 评论 -
Java整理(三)集合框架和数据结构
Java整理(三)集合框架和数据结构Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类:集合框架(Collection)枚举(Enumeration)位集合(BitSet)向量(Vector)队列(Queue)栈(Stack)字典(Dictionary)哈希表(Hashtable)属性(Properties)集合框架(Collection)集合包最常用的有Colle...原创 2017-10-23 15:49:07 · 1527 阅读 · 0 评论 -
Java反射机制(Reflect)
Class类类也是对象,类是java.lang.Class类的实例对象。There is a class named Class.获取Class对象的三种方式类名.class //类的静态成员变量对象名.getClass()Class.forName(“类的全称”) //包名.类名如:class原创 2017-11-28 19:56:09 · 1160 阅读 · 0 评论 -
Java整理(八)注解
Annotation是一种应用于类、方法、参数、变量、构造器及包声明中的特殊修饰符。它是一种由JSR-175标准选择用来描述元数据的一种工具。XML vs Annotation假如你想为应用设置很多的常量或参数,这种情况下,XML是一个很好的选择,因为它不会同特定的代码相连。如果你想把某个方法声明为服务,那么使用Annotation会更好一些,因为这种情况下需要注解和方法紧密耦合起来。原创 2017-11-27 15:35:37 · 1118 阅读 · 0 评论 -
Java单元测试(JUnit)
简介JUnit是一个Java语言的单元测试框架。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。一些注意点1.测试方法上必须使用@Test进行修饰2.测试方法必须使用public void 进行修饰,不能带任何的参数3.新建一个源代码目录来存放我们的测试代码4.测试类的包应该和被测试类保持一致5原创 2017-11-27 19:01:13 · 1276 阅读 · 0 评论 -
深入分析Java ClassLoader原理
转自http://blog.youkuaiyun.com/xyang81/article/details/7292380 大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文转载 2018-01-22 14:21:00 · 549 阅读 · 0 评论 -
Java整理(六)IO
编码问题String s ="东南大学";//字符串转换成字节数组byte[] bytes = s.getBytes();//使用项目默认编码utf-8byte[] bytes1 = s.getBytes("gbk");//指定编码for (byteb:bytes){//把字节以16进制方式显示 System.out.println(Integer.toHexString(b&0xf...原创 2017-11-20 19:38:16 · 1053 阅读 · 0 评论 -
Java整理(二)面向对象
Java面向对象静态块:用static申明,JVM加载类时执行,仅执行一次构造块:类中直接用{}定义,每一次创建对象时执行 执行顺序优先级:静态块>main()>构造块>构造方法 所有的Java程序都以类class为组织单元面向对象三大特征:封装、继承、多态封装防止该类的代码和数据被外部类定义的代码随机访问成员变量一般设为private,使用setter和getter访问成员变量...原创 2017-10-18 21:21:37 · 1577 阅读 · 2 评论 -
Java整理(一)基础和常用类
Java编程基础Java关键字abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally float for goto if implements import instanc...原创 2017-10-16 16:24:04 · 1423 阅读 · 0 评论 -
Java字符编码问题
常见编码ASCII码,128个,一个字节的低7位表示ISO-8859-1,256个,单字节GB2312,中文编码字符集,双字节编码,A1~F7,682个符号,6763个汉字GBK,汉字内码扩展规范,兼容GB2312,21003个汉字,双字节UTF-16,定长,用两个字节表示Unicode的转化格式,、UTF-8,变长,不同类型字符可以由1~6个字节组成,汉字3个字节。j原创 2017-12-27 15:38:20 · 761 阅读 · 0 评论 -
设计模式——Proxy代理模式
设计模式——Proxy代理模式Proxy代理模式 为其他对象提供一种代理,以控制这个对象的访问。代理对象起到中介作用,可以去掉功能服务或增加额外的服务。几种常见的代理模式:远程代理:为不同地理的对象提供局域网代表对象。虚拟代理:根据需要将资源消耗很大的对象进行延迟,真正需要的时候进行创建。保护代理:控制用户的访问权限。智能引用代理:提供对目标对象额外服务。 静态代理代理和被代理对象在代理之前是确定...原创 2018-02-11 23:34:06 · 1357 阅读 · 0 评论 -
Lambda表达式
Lambda表达式Java是面向对象语言,没有函数类型,作为一种替代,函数被表达为对象,也就是实现了特定接口的类的实例。Lambda 表达式,也可称为闭包,它是推动Java 8发布的最重要新特性。Java8之前,如果想将行为传入函数,仅有的选择就是匿名类。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。语法lambda ...原创 2018-05-11 15:55:19 · 483 阅读 · 0 评论