![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
我所了解的Java
文章平均质量分 87
jack86312031
这个作者很懒,什么都没留下…
展开
-
maven自定义archetype
在开发过程中我们经常会创建一系列结构类似的新项目,这些项目结构和基础配置基本或完全一致,maven就提供了archetype类型来规定新建项目的结构及基础配置,利用archetype就可以快速简单的搭建新项目。 一、创建Maven项目的一般步骤 一般情况下创建一个maven项目会遵循以下步骤: 1.选择项目类型,类型为...原创 2018-06-25 15:30:09 · 454 阅读 · 0 评论 -
List实现之LinkedList
LinkedList是List 接口的链接列表实现。实现List接口所有可选的列表操作,并且允许添加任何元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法(如:getFirst、removeLast等)。这些操作允许将链接列表用作堆栈、队列或双端队列。 ...2015-01-29 15:43:29 · 175 阅读 · 0 评论 -
简约大方CSS对话框/提示框/弹出框
项目中往往会遇到弹出框,对话框,提示框等,下面就是一款原创的简单大方的提示框形式样式素材,基本效果如图: 此种提示框采用纯CSS样式编写,修改及美化简单,无需任何图片,首先是html代码部分: <div class="dialogDiv"> <div class="dialogBox"> <div class=...2014-03-06 13:06:30 · 954 阅读 · 0 评论 -
List实现之ArrayList
List的主要实现类为:AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector. 大多数情况我们实现List这个接口时使用的是Arra...2015-01-22 14:47:45 · 170 阅读 · 0 评论 -
GC 收集器算法总结
GC 的几种收集器应用于不同场合,他们有着不同的实现及流程,本节就将几种收集器用到的算法总结一下,更利于大家理解。默认的本节依然以HotSpot JVM 实现为基础。 1.Mark-Sweep(标记-清理算法) 标记-清扫/清理算法是最基础的收集算法,此算法有两个阶段:"标记"和"清理"。 标记阶段:首先标记出所有需要回收的对象;...2013-09-09 11:24:18 · 159 阅读 · 0 评论 -
Java Garbage Collection(GC)优化及配置
通过对GC 理论部分的学习已经对JVM GC 有了比较全面的了解,已经了解了GC 的几种类型已经工作流程。本节主要从实践角度分门别类的了解GC 的各方面信息。 在HotSpot JVM 中有三种概念,分别代表了不同代中发生的GC 动作。 Minor GC:指发生在新生代的垃圾收集动作,由于新生代中对象生命周期较短,更新速度迅速,所以Minor G...2013-09-05 17:55:56 · 113 阅读 · 0 评论 -
Java Garbage Collection(GC)介绍
Garbage Collection 译为垃圾收集器(以下简称GC),主要负责内存分配、确保所有被引用的对象保留在内存中、将那些无法达到的对象引用所占用的内存回收。被引用的对象通常被称为活动的(live)。不再被引用的对象,认为是已经消亡,被称之为垃圾。寻找与释放对象占用空间的过程被称为垃圾收集/回收。 在Java 中是使用根搜索算法(GC Roots Tra...2013-09-03 14:29:25 · 156 阅读 · 0 评论 -
Java 栈内存(Stack)
在计算机科学中,Stack(栈)是一种特殊的串行形式的数据结构,由于栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In First Out)的原理操作数据。允许进行插入和删除操作的一端称为栈顶(Top),另一端为栈底(Bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈、入栈(PUSH),删除则称为退栈、出栈(POP)。...2013-08-29 17:22:54 · 135 阅读 · 0 评论 -
JVM 图形化监控工具
前篇文章已经介绍了一些JDK 中自带的监控工具,但是这些工具都是基于文本界面的,无法很直观的看出程序运行的波动情况,这节就介绍一些图形化的监控工具供大家更简单容易的监控使用。 首先说几个官方开发的图形监控工具: 1.jvmstat jvmstat是图形版的jstat,由Java 官方提供,目前最新版本为3.0。 ...2013-08-27 14:36:42 · 1610 阅读 · 0 评论 -
Java 堆内存(Heap)
堆(Heap)又被称为:优先队列(Priority Queue),是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。在队列中,调度程序反复提取队列中第一个作业并运行,因而实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具有重要性的作业,同样应当具有优先权。堆即为解决此类问题设计的一种数据结构。 堆的数据结构如图所...2013-08-26 17:54:07 · 316 阅读 · 0 评论 -
JVM Runtime Data Areas(运行时数据区)
JVM 定义了各种运行期的数据区域,可以在执行程序时使用。有些数据区域在虚拟机启动时创建,当虚拟机中止时才被销毁。另外一些数据区域是根据线程创建的,数据区域在线程被创建时创建,线程中止时销毁。且每个线程间数据是单独存储的。 Runtime Data Areas运行时数据区可以划分为6个区域: PC 寄存器(Program Counter R...2013-08-21 12:54:46 · 215 阅读 · 0 评论 -
Bootstrap、Extension、Application Class Loader
Bootstrap Class Loader ,Extension Class Loader ,Application Class Loader三种Class Loader是JVM 系统已经事先实现。 Bootstrap Class Loader 采用的是C或其他相应语言编写(根据JRE 操作系统版本不同而不同),其他两种Class Loader 均采用Java 语...2013-08-20 14:44:57 · 526 阅读 · 0 评论 -
类加载器(ClassLoader)介绍
Class Loader 名为“类加载器”,用以加载class 文件到Java 虚拟机中。与普通程序不同,class 文件(Java 程序)并不是本地的可执行程序。当运行class 文件时,首先会运行Java 虚拟机(以下简称JVM),然后再将class 文件加载至JVM,最后JVM 通过内部机制将其执行。负责加载class 文件的这部分程序即被称为"Class Loader"...2013-08-19 14:55:33 · 110 阅读 · 0 评论 -
JVM 不稳定参数
-XX 参数被称为不稳定参数,之所以这么叫是因为此类参数的设置很容易引起JVM 性能上的差异,使JVM 存在极大的不稳定性。当然这是在非合理设置的前提下,如果此类参数设置合理讲大大提高JVM 的性能及稳定性。 可以说“不稳定参数”是一柄双刃剑,用的好攻无不克,用的差讲带来麻烦。如何合理利用不稳定参数一直是一个不断实践不断改善的过程,无法用统一的标准去衡量。一切都需...2013-08-15 14:02:33 · 255 阅读 · 0 评论 -
Java配置参数介绍
在工作学习中我们是否已经用到过Java 的一些配置参数,是否已经了解他们的作用? 在运行Java程序时往往会输入以下类似命令参数:javac -Djava.library.path=/usr/local/jdk/bin HelloWorld.javajava -jar hello.jarjava -server HelloWorldjava -...2013-08-14 13:45:29 · 212 阅读 · 0 评论 -
JVM介绍
JVM 是Java Virtual Machine(JVM )的缩写,JVM 是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 Java 虚拟机源于由James Gosling 在1992年设计,用于支持Oak 程序语言的虚拟机。在Java虚拟机的发展历程中,Sun 的Green 项目、FirstPer...2013-08-13 12:00:01 · 78 阅读 · 0 评论 -
JDK自带监控工具
系统在生产运行过程中最重要的工作莫过于监控与问题的处理,监控是预防问题产生很重要的手段。在监控过程中可以发现那些模块或进程出现了问题,出现问题后会及时通知问题负责人。 实现监控的手段非常多,有系统级别监控系统,也有监控小工具等等。Java 就已经自带了一些监控工具,可以不借助外部软件的情况下简单、快速查看相应监控信息。 这些监控工具存放在j...2013-08-09 15:59:41 · 92 阅读 · 0 评论 -
Map实现之HashMap(结构及原理)
java.util包中的集合类包含 Java 中某些最常用的类。最常用的集合类是 List 和 Map。List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象元素列表。List 适用于按数值索引访问元素的情形。 Map 则提供了一个更通用的元素存储方法。Map 集合类用于存储元素对(称作“键”...2015-03-02 10:10:09 · 266 阅读 · 0 评论 -
Map实现之HashMap(性能及算法)
上一篇重点介绍的是HashMap的实现原理、设计思想与相关具体操作,本篇就深入HashMap实现中进一步了解其内部的一些算法及相关性能指标。 HashMap实例中table的length是在初始化时就被指定的,无论采用默认值还是其他指定值,table数组的大小就已经确定,随着添加元素的增多在一定时机下下会对table数组进行扩容呢。 HashMa...2015-03-06 09:54:54 · 217 阅读 · 0 评论 -
Java I/O入门
I/O 或称为输入/输出,指的是计算机与外部世界或者一个程序与计算机的其余部分的之间的接口。它对于任何计算机系统都非常关键,因而所有I/O 的主体实际上是内置在操作系统中的。单独的程序一般是让系统为它们完成大部分的工作。 在 Java 中,使用"流"的方式完成 I/O操作。所有 I/O 都被视为单个的字节的移动,通过一个称为 Stream 的对象一次移动一个字节,...2015-05-13 17:34:42 · 78 阅读 · 0 评论 -
Linux下安装Haproxy、Nginx、Tomcat、Keepalived
首先介绍一下环境: 1)两台服务器(条件有限),IP分别为:192.168.40.128(server1真实IP),192.168.40.129(server2真实IP),192.168.40.200(虚拟IP)。 2)两台服务器上分别安装Tomcat,HAProxy、Keepalived 3)两台服务器上的HAProxy ...原创 2018-04-27 19:44:50 · 247 阅读 · 0 评论 -
Java中的枚举
Enum(“枚举”)全称为 enumeration, 是 JDK 1.5 中引入的新特性,在Java开发者眼中枚举已经是再普通不过的一种类型了,可以说任何Java程序员都编写过自己的枚举类,一般这些枚举类用来表示同一类属性,如: /** * @Description 操作系统类型 * @author ming.li * @Date 2018年4月16日 下午2...2018-04-24 09:43:28 · 321 阅读 · 0 评论 -
数据库事务
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列数据操作,要么完全地执行,要么完全地不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性...2016-04-10 21:03:18 · 159 阅读 · 0 评论 -
Java中的List
List是一个有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。 与 set 不同,列表通常允许重复的元素。更确切地讲,列表通常允许满足 e1.equals(e2) 的元素对 e1 和 e2,并且如果列表本身允许 null 元素的话,通...2014-11-06 11:20:22 · 132 阅读 · 0 评论 -
Java中的数组
所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。 ...2014-10-28 07:32:09 · 124 阅读 · 0 评论 -
Java并发之Executor
在很多系统中都会出现以下这种情况:某些对象或资源不得不频繁的去创建和使用,而这些对象和资源一般都是一次性的,也就是使用完就只能等待垃圾收集器的清理。等到下一次使用时又会往复这样的过程,一旦这种创建销毁的过程累积到一定程度,就会给系统带来性能乃至稳定性方面的问题。在设计模式中有一种叫做“享元模式”的设计模式, 享元模式(Flyweight Pattern)使用共...2016-05-21 17:12:14 · 145 阅读 · 0 评论 -
Java并发之LinkedBlockingQueue
上一篇我们已经学习过了 ArrayBlockingQueue的知识及相关方法的使用,这一篇我们就来再学习一下ArrayBlockingQueue的亲戚 LinkedBlockingQueue。在集合类中 ArrayList与 LinkedList会常常拿来比较,ArrayList内部实现是基于数组的,而 LinkedList内部实现是基于链表,所以他们之间会有很多不同,但是本文...原创 2016-05-12 17:50:04 · 448 阅读 · 0 评论 -
Java序列化进阶篇
1.transient 类一旦实现了Serializable 接口即被声明为可序列化,然而某些情况下并不是所有的属性都需要序列化,想要人为的去阻止这些属性被序列化,就需要用到transient 关键字。 transient 关键字用于声明属性,被声明的属性在序列化时其状态不被序列化执行:public class Cat implement...2015-07-16 17:40:57 · 188 阅读 · 0 评论 -
Java序列化基础篇
Java类通过实现java.io.Serializable 接口便可启用其序列化功能。实现了序列化的类的实例可以在不同的系统或JVM间传递,并且不会丢失原实例的相关状态及值。 为一个类开启序列化功能只需实现Serializable 接口即可,仅仅作为使用者可以不必了解其内部的更深层次的实现及流程,但是如果想要更好的使用序列化功能就需要与我一起详细的学习和了解它。...2015-07-16 17:17:55 · 128 阅读 · 0 评论 -
Java并发之ArrayBlockingQueue
ArrayBlockingQueue是一个由数组支持的有界阻塞队列。此队列按 FIFO(先进先出)原则对元素进行排序。队列的头部是在队列中存在时间最长的元素。队列的尾部是在队列中存在时间最短的元素。新元素插入到队列的尾部,队列获取操作则是从队列头部开始获得元素。 ArrayBlockingQueue继承自 AbstractQueue并实现 BlockingQ...2016-05-10 11:44:00 · 260 阅读 · 0 评论 -
Java并发之BlockingQueue
一、Queue Queue是队列接口是 Collection的子接口。除了基本的 Collection操作外,队列还提供其他的插入、提取和检查操作。每个方法都存在两种形式:一种抛出异常(操作失败时),另一种返回一个特殊值(null 或 false,具体取决于操作)。插入操作的后一种形式是用于专门为有容量限制的 Queue 实现设计的;在大多数实现中,插入操作不...2016-05-09 21:32:13 · 102 阅读 · 0 评论 -
Java并发之ReentrantLock
java.util.concurrent.locks包为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。该框架允许更灵活地使用锁和条件,但以更难用的语法为代价。 Lock 接口支持那些语义不同(重入、公平等)的锁规则,可以在非阻塞式结构的上下文(包括 hand-over-hand 和锁重排算法)中使用这些规则。主要的实现是 ReentrantL...2016-05-05 19:48:16 · 196 阅读 · 0 评论 -
原子操作(CAS)
众所周知锁有两种:乐观锁与悲观锁。独占锁是一种悲观锁,而 synchronized 就是一种独占锁,synchronized 会导致其它所有未持有锁的线程阻塞,而等待持有锁的线程释放锁。所谓乐观锁就是,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。而乐观锁用到的机制就是CAS。 1.CAS(Compare And Set)...原创 2016-05-02 16:41:03 · 1480 阅读 · 0 评论 -
Java NIO 缓冲区简介
NIO 是New IO 的简称,从JDK1.4开始添加支持,用来解决传统IO的问题,比如并发,高效传输等。NIO作为传统IO的一个补充及优化,在解决一些传统IO无法应对的场景非常有效,而且对于NIO的掌握也对于开发人员是一种技能水平的提升,所以就同我一起来学习一下NIO的相关知识吧。 通过前文我们对于Java I/O的结构已经有了一个比较清晰的认知,Java引...2015-05-18 15:37:33 · 160 阅读 · 0 评论 -
Tomcat入门
Tomcat作为一名开发人员来说已经是再熟悉不过了,我们几乎每天都会与其打交道,无论是测试还是开发,甚至是生产环境。然而我相信大部分开发和测试人员仅仅是使用Tomcat,对其更深层次的研究寥寥无几,其实我也一样。 没关系!我们从基础开始系统的学习一下Tomcat的使用及高级应用。 1.Tomcat是什么? Tomcat...2015-05-13 17:45:48 · 125 阅读 · 0 评论 -
Wrapper配置详解及高级应用
将一个简单的程度如HelloWorld 的应用包装秤Wrapper 服务并不复杂,甚至可以认为非常简单。但是实际项目应用过程中我们的程序一般较庞大,运行环境也较复杂。 通过Wrapper 配置文件的分析与配置进一步了解构建Wrapper 服务需要注意的关键点及重要部分。首先,打开conf 文件夹下的wrapper.conf配置文件,此配置文件时Wrappe...2013-08-07 15:20:10 · 1908 阅读 · 0 评论 -
Tomcat JDBC Connection Pool
Tomcat7 抛弃了以往的DBCP 采用了新的Tomcat Jdbc Pool 作为数据库连接组件,事实上DBCP已经被Hibernate 所抛弃,因为他存在很多问题,诸如:更新缓慢,bug较多,编译问题,代码复杂等等。 Tomcat Jdbc Pool 类似于我们常用的数据库连接池c3p0 ,Proxool 等,Tomcat Jdbc Pool有如下优点: ...2013-08-06 14:50:04 · 245 阅读 · 0 评论 -
连接池c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool对比测试
这次所要做的测试是比较几种我们常用的数据库连接池的性能,他们分别是:c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool这四种,测试将采用统一的参数配置力求比较“公平”的体现统一水平下几种连接池的不同,有网友回复说测试不公平会互相干扰,那我就把代码分开,代码是死的人是活的,做事情不动脑只能吃别人剩下的,世界上没有绝对公平的事情,我在此只提供了一个思路,更...2013-08-05 15:58:07 · 137 阅读 · 0 评论 -
MySQL衍生版本
MySQL公司虽说被Oracle收购了,但是在Oracle的战略计划中毕竟还是一个独立的子公司,MySQL的开发人员和Oracle的开发人员在一定程度上属于不同体系,即使Oracle高手们想为MySQL的优化贡献一份力都是不可能的,这就导致他们各自为政无法将两者的优点很好的融合起来,这也是这些年MySQL更新速度一直都很慢的一个重要原因。我们可以利用自己的工作经验试想一下:一个...2013-07-15 11:21:52 · 348 阅读 · 0 评论 -
MySql主从复制
前面说的分区、分表都是基于同一数据库本事的一些结构优化,而当访问量巨大的情况单一的数据库服务器是无法满足压力要求的,MySQL为我们提供了复制功能,使得多台MySQL服务器共享数据,从而实现负载均衡。 首先我们来看一张图,了解一下主从复制的物理结构: 从图上我们可以直观的看出MySQL主从复制的机制就是: 1.主服务器(Mas...2013-07-11 17:02:33 · 74 阅读 · 0 评论