Java
文章平均质量分 76
颜洛滨
Java新人
展开
-
java中的大数类
java中的大数还是挺好用,而且很方便,所以将其罗列如下,以备使用 import java.math.*; import java.util.*; 基本使用如下: x = in.nextBigInteger(); y = in.nextB原创 2015-10-08 18:04:43 · 960 阅读 · 0 评论 -
深入学习Java之Vector
深入学习Java之Vector前言在前面我们学习了关于List接口中的几个实现ArrayList、LinkedList以及Queue接口的实现ProrityQueue、接下来我们来学习另外一个比较常用的List接口的实现Vector,Vector属于元老级别的容器了,从JDK1.0就已经存在了,实现基本上跟ArrayList是类似的,只不过由于Vector加多了一些同步机制,保证Vector是线程安原创 2017-08-12 09:52:52 · 370 阅读 · 0 评论 -
深入学习Java之HashMap - 未完成
深入学习Java之HashMap - 未完成前言在前面的几个小节中,我们学习了List接口以及List接口下的几个常用的实现,ArrayList、LinkedList、Vector,接下来的几个小节里,我们将继续学习容器中比较常用的一些实现,包含Map接口、Set接口以及它们对应的实现,本小节主要来学习Map接口及其实现HashMapHashMap的继承结构从上图中可以看到,HashMap实现了Ma原创 2017-08-12 16:53:58 · 353 阅读 · 0 评论 -
深入学习Java之LinkedList
深入学习Java之LinkedList前言LinkedList,作为最常用的List接口的实现类之一,与ArrayList基本齐名,两者都是在日常开发中非常常用的List类型,不过,两者的底层实现大不相同,这也导致了这两者的应用场景的不同,接下来,我们来详细学习LinkedList的具体实现LinkedList的继承结构这里跟前面学习ArrayList一样,首先先从宏观上来看下LinkedList的原创 2017-07-29 09:35:27 · 459 阅读 · 0 评论 -
【Java并发学习】之线程的同步
【Java并发学习】之线程的同步前言在前面一个小节中,我们学习了线程的概念以及在Java中创建任务的方式,并且将任务委托给对应的线程进行执行,本小节我们主要来学习线程之间的关系之一的同步,包含临界区、临界资源、线程同步的两种主要方法线程的关系从广义上来讲,线程之间有三种关系没有关系:多个线程之间相互独立,既不竞争资源,也没有任何的合作关系,只是各自完成自己的任务竞争关系:两个及以上的线程之间存在原创 2017-10-27 16:29:07 · 213 阅读 · 0 评论 -
【Java并发学习】之线程合作
【Java并发学习】之线程合作前言在前面的小节中,我们谈到了线程之间有两种主要的关系,一种是竞争关系,另外一种是合作关系,竞争关系的基本概念以及基本操作我们已经在前面一个小节中有所学习,本小节呢,主要学习的是线程之间的合作,通过协调过多个线程之间的关系,使得多线程能更好地为我们服务,提高性能线程合作正如在人类世界中,合作是一种非常常见的事情一样,在程序的时间中,合作也是一件非常常见的事情,多个线程共原创 2017-11-07 18:50:45 · 183 阅读 · 0 评论 -
【Java并发学习】之线程的创建
【Java并发学习】之线程的创建前言Java并发一直是学习中的一个难点,之前虽然也有接触一部分的内容,不过由于当时对于并发的认识不足,所以学习的效果不是很好,乘着最近有时间,重新拾起这一部分内容,重新学习一下,并且将学习过程的笔记整理出来,本小节主要学习的内容是线程的创建线程的相关概念谈到并发,不可避免的会涉及到进程、线程相关的概念问题,关于这部分,有比较详细的定义,这里只是做个简单的总结与梳理进程原创 2017-10-23 12:42:12 · 182 阅读 · 0 评论 -
【Java并发学习】之详解线程的点滴(1)
【Java并发学习】之详解线程的点滴(1)前言在前面的几个小节中,我们粗略地学习了线程的基本概念,定义任务的方式,并且通过Java中的多线程API来驱动对应的任务,然后学习了线程的互斥与同步关系,线程之间进行资源共享后的同步操作等等一些简单的内容,可以说,线程中的主要内容我们已经掌握了,然而,也仅仅只是简单内容,很多比较细节、复杂的东西在之前我们刻意避开了,接下来的几个小节中,我们就来具体地学习线程原创 2017-11-12 23:02:52 · 200 阅读 · 0 评论 -
【Java并发学习】之详解线程的点滴2
【Java并发学习】之详解线程的点滴2前言在前面一个小节中,我们学习了线程的属性如,ID、名字、优先级、状态的获取以及设置(如果可以操作)以及守护线程的概念和将线程设置为守护线程的方法,接下来这个小节,我们来学习多线程中的异常处理以及停止一个线程常用方法异常处理异常处理是一个非常重要的内容,当系统出现可能出现某些问题的时候,我们可以借助异常机制这个强有力的工具来辅助,从而可以在可能出现问题的时候,决原创 2017-11-13 23:11:24 · 176 阅读 · 0 评论 -
【Java并发学习】之原子类
【Java并发学习】之原子类前言在前面的学习中,在处理一些数据的增加,减少,比如Integer类型的数据的增加或者减少的时候,为了使数据保持一致,使用了synchronized 或者Lock对方法或者代码块进行锁操作,进入临界区的时候,进行加锁,离开临界区的时候,进行解锁。除了这种方式外,在JDK1.5中,提供了另外一种机制,原子类操作对象,接下来我们来具体学习这几个有用的工具Atomic*家族介绍原创 2017-11-28 22:57:51 · 197 阅读 · 0 评论 -
【Java8】Java8实战之行为参数化与Lambda
Java8实战之行为参数化与Lambda前言现在Java的迭代速度比以前快了很多,然而,本渣渣最近才开始学习Java8,相比于之前的版本,Java8中引入了许多新的特性,其中最主要的是Lambda、Stream、Optional<T>、新的时间日期API,接下来将分成几个小节,分别学习这些内容,并且将学习笔记整理出来,参考书籍为《Java8实战》。本小节主要学习行为参数...原创 2018-08-03 17:32:38 · 897 阅读 · 1 评论 -
【Java8】Java8实战之Stream
Java8实战之Stream前言在前面一个小节中,我们已经学习了行为参数化以及Lambda表达式,通过Lambda表达式,可以使得代码更加简洁,尤其是当一个方法只需要使用一次的时候,然而,如果Java8中只有Lambda表达式的话,那还是不足以让人感到兴奋的,个人感觉,Java8中最有意思,也是最方便的功能,莫过于Stream了Stream初窥Stream可以翻译为流,实际...原创 2018-08-09 09:06:14 · 312 阅读 · 1 评论 -
AOP实战小案例
AOP实战小案例前言AOP技术是指面向切面编程技术,主要用于在具有横切逻辑的场景中,将横切逻辑提取出来,形成独立的模块,然后通过特殊的技术,如Java中的动态代理技术,动态地将横切逻辑织入到具体的应用场景中大概在去年的这个时候,学习过AOP技术,对AOP中的一些概念也有一些了解,不过基本都是理论上的内容,缺乏实战经验,所以,对AOP的理解并不是很充分,加上最近刚好有个项目需要用到,...原创 2018-07-31 10:52:14 · 1991 阅读 · 0 评论 -
【Java8】Java8实战之默认方法
Java8实战之默认方法前言在前面,我们学习了Lambda以及Stream,也体会到了这两者结合后所带来的方便性,尤其是Stream,有了Stream之后,对于容器的大部分操作都变得非常简单,只需要通过组合一系列的中间操作以及结束操作,就能筛选,转换,收集需要的对象,然而,这中间有一个问题,那就是似乎大部分的容器都支持stream()这个方法,难道是所有的实现都进行了修改了吗?这肯定是...原创 2018-08-10 09:13:47 · 146 阅读 · 0 评论 -
【Java8】Java8实战之时间日期操作
Java8实战之时间日期操作前言前面我们已经基本学习完Java8中应用场景比较广泛的新功能或者说新特性,在本小节中,我们再来学习多一个新特性,时间日期操作。时间日期操作在Java8之前,由于JDK本身设计的问题,导致了存在的时间日期API使用起来不是很好用,其语义也不是很好,比如Date表示的是时间以及日期,为了使得时间日期相关的API操作起来比较方便,语义更好,Java8...原创 2018-08-14 16:50:41 · 274 阅读 · 1 评论 -
【Java8】Java8实战之Optional
Java8实战之Optional前言在前面的几个小节中,我们已经学习了Lambda表达式、Stream以及默认方法,在体会到Java8所带来的极大的便利之后,这小节我们来学习Java8中一个新的功能–Optional。OptionalOptional的出现是为了解决null的问题,在Java中,如果一个对象指针没有被初始化,默认就指向null,而这种情况是比较危险的,在使用...原创 2018-08-13 19:43:11 · 559 阅读 · 1 评论 -
浅谈SPI机制
浅谈SPI机制前言这段时间在研究一个开源框架,发现其中有一些以SPI命名的包,经过搜索、整理以及思考之后,将学习的笔记、心得整理出来,供日后复习使用。SPISPI全称是Service Provider Interface,翻译过来是服务提供者接口,这个翻译其实不那么形象,理解起来也不是很好理解,至少不那么见名知意。其实SPI是一种机制,一种类似于服务发现的机制,什么叫做服务发现呢,就是能...原创 2018-11-09 18:20:13 · 831 阅读 · 0 评论 -
深入学习Java之ArrayList
深入学习Java之ArrayList前言对于Java的容器类,虽然之前一直有在使用,不过使用归使用,很多的原理本质上还是不懂,比如说什么时候进行扩容等,乘着最近有空,每天抽出点时间来重新学习下容器类,主要包括了(Collection、Map),其中Collection主要包括List、Set、Queue等,本小节主要来学习List中的ArrayListArrayList的继承结构首先从宏观上来了解A原创 2017-07-26 21:27:13 · 354 阅读 · 0 评论 -
彻底弄懂二叉排序树
彻底弄懂二叉排序树前言在之前学习数据结构的时候,就学过二叉排序树,不过,由于但是只是纸上谈兵,虽然知道二叉排序树的插入,删除等的操作过程,不过由于没有具体实现过,所以当想要实现的时候,就出现了“道理都懂,却无法做到”的尴尬局面,趁着最近有空,抽了个时间认真学习二叉排序树,并且手动编写了实现的代码,真正理解了二叉排序树的操作过程二叉排序树简介二叉排序树,二叉树的一个变种,主要的特点在于,该树的值在分布原创 2017-08-02 21:47:03 · 3093 阅读 · 0 评论 -
详解Java注解( Annotation )
这篇文章主要讲解了JDK中自带的注解以及自定义注解及其使用,是本人学习过程中的一个笔记,供大家学习之用原创 2017-02-19 11:33:47 · 456 阅读 · 0 评论 -
详解Java反射机制(Reflection)
详解Java反射机制(Reflection)反射机制的作用JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,实现了基本的动态性。原创 2017-02-19 20:40:42 · 475 阅读 · 0 评论 -
JDBC学习笔记
这篇文章是本人学习JDBC过程的笔记记录,这里将其整理出来,供大家学习使用,本着简单易用的原则,本文章不进行过多的理论介绍,相关的知识还请大家查阅官方文档。同时由于是对JDBC的使用介绍,所以关于数据库方面的内容也不进行过多介绍。原创 2017-03-25 20:54:17 · 265 阅读 · 0 评论 -
浅谈Java中的Enum类型
浅谈Java中的Enum类型前言由于之前在学习、开发过程中,基本没怎么使用Enum类型,前几天在学习单例设计模式的时候,碰到用Enum实现单例的一种方式,但是学得比较纠结,毕竟对Enum不太理解,今晚乘着放假有空,顺便把Enum的原理粗略理解了一下,笔记整理如下Enum的作用及实现方式Enum类型是Java5中引进的新的一种类型,字面意思的理解是枚举类型,主要用于声明一些状态或者固定不变的内容等的操原创 2017-04-02 22:37:01 · 571 阅读 · 0 评论 -
数据库连接池之DBCP
数据库连接池之DBCP前言在之前的文章中,我们学习了如何使用原生的JDBC连接操作数据库,如果对使用原生JDBC操作数据库比较熟的读者,可能会注意到这样一个问题,就是每次需要使用的时候,都需要获取一个Connection,然后通过Connection来获得相应的PreparedStatement,进而操作数据库。当每次创建一个Connection的时候,所需要消耗的资源是比较大的,但是如果使用单例的原创 2017-04-30 00:05:54 · 5591 阅读 · 2 评论 -
数据库连接池之C3P0
数据库连接池之C3P0前言在上一小节中,我们接触了数据库连接池的,了解了数据库连接池的作用,并且通过小案例使用DBCP来操作数据库,这一小节,我们接着了解数据库连接池的另外一种实现C3P0C3P0的简单介绍 C3P0是一个开源的数据库连接池,实现了数据源和JNDI的绑定,支持JDBC3规定和JDBC2规定,目前Hibernate以及Spring都在使用该技术 —- 百科C3P0的使用这里笔者使原创 2017-04-30 20:27:28 · 702 阅读 · 0 评论 -
详解Java中的XML解析
XML解析前言XML,全称Extensibible Markup Language, 主要用于数据的保存或者文件传输,其主要特性如下所示: - 以标签为主的标记语言 - 支持自定义标签,支持自我解释 - 与具体技术无关 - 支持验证 - 方便人类的读写XML示例为了更好的了解XML,下面我们提供一个简单的XML文件,内容如下所示:<?xml version="1.0" encoding="原创 2017-05-24 19:41:20 · 320 阅读 · 0 评论 -
JSON的使用
JSON的使用前言JOSN,全称为JavaScript Object Notation,是一种轻量级的,读写方便的文本格式,主要用于数据的传输,比如服务器与客户端之前的信息交流等。JSON的语法JOSN的语法相对简单,仅由[]、{}以及对应的键值对组成,不得不说,设计出这个格式的作者确实厉害,通过这些简单的符号就能表示出海量的内容了。在JSON中,主要有两种数据类型,分别是由[]表示的数组类型以及由原创 2017-05-24 22:41:19 · 301 阅读 · 0 评论 -
HttpClient的基本使用
HttpClient的基本使用前言HttpClient是Apache提供的一个用于在Java中处理HTTP请求、响应操作的工具,由于JDK自带的API对HTTP协议的支持不是很友好,使用起来也不是很方便,加上这几天刚好有个小项目需要使用到,所以学习了HttpClient的基本使用,并且将学习过程的笔记整理出来Http请求正如我们所知道的,一个Http请求包含了一下几个部分的内容,首先是请求行(包括了原创 2017-06-08 15:48:20 · 2633 阅读 · 0 评论 -
SLF4j整合Log4J
SLF4j整合Log4J前言最近翻看了阿里巴巴Java开发者手册,发现其中有一点提到了不要在应用中直接使用具体的日志框架,而推荐使用SLF4j框架,然后提供所需要的对应的日志框架的实现即可,一开始没怎么理解这一点。后来查看了一下才明白,SLF4j框架提供的仅仅是抽象的API接口,并没有绑定具体的实现,使用这种组合方式的优点在于,避开了应用绑定具体的日志框架,在某些时候,可能需要切换不同的日志框架,如原创 2017-06-24 10:24:43 · 978 阅读 · 0 评论 -
定时任务调度之Timer
定时任务调度之Timer前言定时任务调度,有两个比较重要的概念,一个是定时,一个是调度,所谓的定时调度,指的是在一定时间或者一定时间间隔内执行某个或者某些任务,而选择这些任务进行执行的过程就叫做任务调度,在JDK中,为我们提供了一个对应的工具类,今天学习了这个工具类,顺便将学习过程的笔记整理出来,当做知识整理,也方便以后回顾Timer的具体使用在JDK的util包中,有一个类Timer,主要用于进行原创 2017-07-17 23:08:44 · 285 阅读 · 0 评论 -
JDBC操作全攻略
JDBC操作全攻略JDBC简介JDBC(Java Database Connectivity),也称为Java数据库连接,是Java用于连接数据库的接口规范,需要注意的是,JDBC并没有提供的实现,具体的实现是由数据库提供商,比如MySQL,Oracle等负责提供,JDBC提供了一整套完整的连接规范,包括了Driver,DriverManager,Connection,Statement,Prepa原创 2017-07-09 15:28:37 · 439 阅读 · 0 评论 -
JDBC封装
JDBC封装前言正如在前面的小节中看到的,原生的JDBC的操作其实是比较繁琐的,而且其中有很多的重复性代码,这个时候,我们可以考虑自己对JDBC进行一个简单的封装,封装成自己想要的,比较方便的小工具封装JDBC为了使得编辑参数更加方便,首先将数据库连接参数抽取出来放在配置文件jdcb.properties中jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdb原创 2017-07-09 20:33:06 · 480 阅读 · 0 评论 -
深入学习Java之PriorityQueue
深入学习Java之PriorityQueue前言在前面一个小节中我们深入学习了LinkedList,并且从LinkedList的结构图中得知,LinkedList实现了Queue接口,今天这一小节,主要来学习Queue接口的另外一个实现,PriorityQueue,也就是优先队列,所谓的优先队列,就是在队列中根据某一个特征值自动进行排序,优先队列分为两种,最大优先队列和最小优先队列,优先队列的一个最原创 2017-07-30 22:33:23 · 1432 阅读 · 1 评论 -
【深入理解Java虚拟机读书笔记】垃圾收集器与内存分配策略
垃圾收集器与内存分配策略垃圾收集器主要回收的内存区域是堆和方法区判断对象是否已死引用计数算法 通过计算一个对象是否被其他对象所引用来判断该对象是否可以被回收,Java中不采用该方法,存在循环引用问题(a->b, b->a,此时a,b均不会被回收)可达性分析算法 从一系列的GC Root出发,如果一个对象没有任何从引用链与GC Root相连接,则该对象可以被回收Java中的GC Root对象原创 2017-08-10 18:45:53 · 257 阅读 · 0 评论 -
【深入理解Java虚拟机学习笔记】虚拟机类加载机制
虚拟机类加载机制类加载时机类从被加载到虚拟机内存中开始,到卸载出内存位置,整个生命周期如下 - 加载 - 验证 - 准备 - 解析 - 初始化 - 使用 - 卸载必须初始化的情况 - 遇到new、getstatic、putstatic、invokestatic字节码指令的时候 - 使用java.lang.reflect包的方法对类进行反射调用的时候 - 当一个类初始化的时候,发现原创 2017-08-10 23:09:05 · 362 阅读 · 0 评论 -
Redis分布式锁使用总结
Redis分布式锁使用总结前言最近因为项目需要进行多实例的协调,使用到了分布式锁,所以对分布式锁的原理、使用等做了一番调查、学习,顺便将其记录下来,供需要的同学学习交流。项目中使用的是基于Redis的分布式锁,所以这篇文件的内容都是是基于Redis分布式锁。分布式锁简介谈起编程语言中的锁,开发者应该是相当熟悉的,当系统中存在多线程并且多线程之间存在竞态条件或者需要协作的时候,我们就会使用...原创 2019-07-02 14:59:34 · 1329 阅读 · 0 评论