
Java进阶
文章平均质量分 88
java作为世界上最热门的编程语言之一,已经使用在多个领域里,本专栏主要记录java语言的高级特性及应用,包括集合框架的源码分析,servlet和jsp基础,JVM等(会持续更新)。
武哥聊编程
同济大学硕士,第一批华为5G研发人员,拼多多广告投放部门,全网20w+粉丝。微信公众号:武哥聊编程
展开
-
【Redis】Redis的介绍与安装部署
最近在学习一下redis,同时也在博客中记录一下学习总结。这篇博文主要是分享一下如何在Linux中安装redis服务。1. Redis的介绍 Redis是一种非关系型数据库(NoSQL),NoSQL是以key-value的形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求,比如说SQL标准,ACID属性,表结构等等,这类数据库主要有以下特点:非关系型的、分布式的、开原创 2016-08-02 18:17:45 · 11136 阅读 · 6 评论 -
【java虚拟机】java虚拟机的类加载机制
这篇博文主要来总结一下java虚拟机加载一个类的过程,为了避免枯燥的解说,为了让读者在读完本文后能彻底理解类加载的过程,首先来看一段java代码,我们从一个例子入手://ClassLoaderProcess.java文件class Singleton { private static Singleton singleton = new Singleton(); public原创 2016-07-01 08:24:50 · 8057 阅读 · 25 评论 -
【java虚拟机】java内存区域与内存溢出异常
本文参考自《深入理解Java虚拟机》一书。主要总结一下java虚拟机内存的各个区域,以及这些区域的作用、服务对象以及其中可能产生的问题。1. 运行时数据区域 java虚拟机在执行java程序的过程中会把它说管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。具体如下图所示:原创 2016-06-30 07:22:29 · 6654 阅读 · 14 评论 -
JDBC技术总结(三)
JDBC部分的前两个总结主要总结了一下JDBC的基本操作,而且个共同点,就是应用程序都是直接获取数据库连接的。这会有个弊端:用户每次请求都需要向数据库获得连接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。假设一个网站每天有10万次访问量,那么数据库服务器就需要创建10万次连接,这极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、脱机。 为了解决上述问题,数据库连接池的原创 2016-05-19 20:24:31 · 12501 阅读 · 9 评论 -
JDBC技术总结(二)
上一节主要讲了JDBC的基本操作,这一节主要总结一下JDBC如何处理大文本、如何处理图片以及进行批处理。1.JDBC处理大文本 在MySQL中,大文本是text类型,使用java操作数据库中的大文本需要两个方法setCharacterStream和getCharacterStream,一个是写入数据库的字符流,一个是从数据库中读取的字符流。setCharacterStream原创 2016-05-04 19:01:02 · 3555 阅读 · 2 评论 -
JDBC技术总结(一)
1. JDBC简介 SUN公司为了简化、统一对数据库的操作,定义了一套java操作数据库的规范,称之为JDBC,JDBC不能直接操作数据库,JDBC通过接口加载数据库的驱动,然后操作数据库。JDBC:Java Data Base Connectivity,它主要由接口组成。组成JDBC的2个包为java.sql和javax.sql。开发JDBC应用需要这2个包的支持外,还需要导入原创 2016-05-03 23:33:00 · 5703 阅读 · 15 评论 -
EL表达式
这节我们总结一下EL表达式相关内容。1. EL表达式主要作用 EL表达式说白了,就是让JSP写起来更加方便,它属于JSP技术。那么它主要都有哪些方面的作用呢?1.1 获取数据 EL表达式可以用于替换JSP页面中的脚本表达式,以从各种类型的web域中检索java对象、获取数据(某个web域中的对象,访问javabean的属性、访问list,map集合、原创 2016-05-02 23:28:32 · 10233 阅读 · 2 评论 -
JSTL自定义标签
这节我们总结一下JSTL自定义标签相关内容。1. 自定义标签简介 自定义标签主要用于移除JSP页面中的java代码。Jsp页面主要是用来显示给前台的,如果里面有过多的java代码的话,会显得很乱,但是没有java代码也无法获取相关数据或完成相关操作。那么这时候我们就可以自己定义一个标签,来完成需要用java代码完成的事情,这样Jsp页面就会清洁很多,可读性也更强。JSP中使用原创 2016-05-02 16:37:49 · 8986 阅读 · 4 评论 -
JavaBean与Jsp
这一节我们总结一下JavaBean和Jsp的关系。1. JavaBean2. 在Jsp中使用JavaBean的代码3. Jsp开发模式原创 2016-05-01 16:17:41 · 8482 阅读 · 2 评论 -
Jsp技术总结
这节我们总结一下Jsp的相关技术。1. 什么是JSP JSP即Java Server Pages,它和servlet技术一样,都是sun公司定义的一种用于开发动态web资源的技术。该技术的最大特点在于:写JSP就像写html,但它相比html而言,html只能为用户提供静态数据,而JSP技术允许在页面中嵌套java代码,为用户提供动态数据。2. JSP原理1) w原创 2016-04-29 10:45:40 · 36637 阅读 · 3 评论 -
session的两个小案例
学完了session,写两个小案例加深一下对session的巩固。1. 用户登陆案例 登陆html页面提交后,将参数带给处理登陆的servlet,该servlet将获得登陆的用户名和密码,并将这些信息存入session中,另一个servlet在处理的时候,会先从session中拿到用户的信息,判断是否登陆,再执行相应的动作。主要模拟一下我们常见的场景:登陆后,网页上会显示:欢原创 2016-04-27 20:16:49 · 7391 阅读 · 4 评论 -
会话管理之session技术
上一节我们总结了cookie技术,这节主要总结一下session技术。1. session对象 在web开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的原创 2016-04-27 15:55:49 · 9141 阅读 · 10 评论 -
会话管理之Cookie技术
会话管理是web开发中比较重要的环节,这一节主要总结下会话管理中的cookie技术。1. 何为会话 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称为一个会话。1.1 会话过程中要解决的问题 1)每个用户在使用浏览器与服务器进行会话的过程中,不可避免会各自产生一些数据,程序要想办法为每个用户保存这些原创 2016-04-27 13:54:09 · 3176 阅读 · 1 评论 -
HTTP请求头和响应头
这篇文章简单总结一下HTTP请求头和响应头,并举一些web开发中响应头的用例。1. HTTP请求头accept:浏览器通过这个头告诉服务器,它所支持的数据类型。如:text/html, image/jpegaccept-Charset:浏览器通过这个头告诉服务器,它支持哪种字符集。accept-encoding:浏览器通过这个头告诉服务器,它支持哪种压缩格式。accept-la原创 2016-04-27 10:57:49 · 4457 阅读 · 1 评论 -
Servlet的API(二)
web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象和代表响应的response对象。request和response对象既然代表请求和响应,那我们获取客户机提交过来的数据,只需要找request对象即可,要向客户机输出数据,只需要找response对象即可。这一节我们来看看Servlet的这两个对象:HttpServletResponse对象和Ht原创 2016-04-26 13:48:04 · 6736 阅读 · 3 评论 -
Servlet的API(一)
Servlet的API有很多,这里只谈谈两个Servlet对象:ServletConfig对象和ServletContext对象。1. ServletConfig对象 在Servlet的配置文件中,可以使用一个或多个标签为servlet配置一些初始化参数,当Servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些参数封装到ServletConf原创 2016-04-26 10:54:38 · 4224 阅读 · 1 评论 -
初窥Servlet
1. Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术。sun公司在其API中提供了一个servlet接口,用户若想要发一个动态web资源,只需要完成以下两步即可: 1)编写一个servlet,即实现servlet接口的java类; 2) 把开发好的servlet部署到web服务器中。原创 2016-04-25 22:33:30 · 2913 阅读 · 3 评论 -
java集合框架12——HashMap和HashTable的区别
前面已经学习了Map的部分内容,主要是HashMap和HashTable,这一节我们来看看它们两有啥异同点。1. HashMap和HashTable的相同点 HashMap和HashTable都是存储“键值对”的散列表,而且都是采用拉链法来实现的。存储的思想都是:通过table数组存储,数组的每个元素都是一个Entry,而一个Entry就是一个单项链表,Entry链表中的每个原创 2016-04-26 15:50:35 · 5255 阅读 · 5 评论 -
java集合框架11——TreeMap和源码分析(二)
我们继续分析TreeMap的源码1.TreeMap源码分析(续)1. 存取方法 TreeMap中的存取方法本质上就是对红黑树的插入和删除操作,从源码里体现的更为明显,其实就是对红黑树的插入和删除(可以参考:红黑树),下面简单看下源码:/*************************** put和remove ****************************原创 2016-04-25 13:12:26 · 6077 阅读 · 1 评论 -
java集合框架10——TreeMap和源码分析(一)
前面讨论完了HashMap和HashTable的源码,这一节我们来讨论一下TreeMap。先从整体上把握TreeMap,然后分析其源码,深入剖析TreeMap的实现。1. TreeMap简介 TreeMap是一个有序的key-value集合,它内部是通过红-黑树实现的,如果对红-黑树不太了解,请先参考下这篇博文:红-黑树。下面我们先来看看TreeMap的继承关系:java原创 2016-04-25 09:14:52 · 4847 阅读 · 2 评论 -
java集合框架09——HashTable和源码分析
上一章我们学习了HashMap的源码,这一节我们来讨论一下HashTable,HashTable和HashMap在某种程度上是类似的。我们依然遵循以下步骤:先对HashTable有个整体的认识,然后学习它的源码,深入剖析HashTable。1.HashTable简介 首先看一下HashTable的继承关系java.lang.Object ↳ java.uti原创 2016-04-21 20:04:27 · 4365 阅读 · 7 评论 -
java集合框架08——HashMap和源码分析
上一章总体分析了Map架构,并简单分析了一下AbstractMap源码,这一章开始我们将对Map的具体实现类进行详细的学习。本章先研究HashMap。依然遵循以下步骤:先对HashMap有个整体的认识,然后学习它的源码,深入剖析HashMap。原创 2016-04-15 23:40:56 · 10411 阅读 · 6 评论 -
java集合框架07——Map架构与源码分析
前几节我们对Collection以及Collection中的List部分进行了分析,Collection中还有个Set,由于Set是基于Map实现的,所以这里我们先分析Map,后面章节再继续学习Set。首先我们看下Map架构图: 从图中可以看出: 1. Map是一个接口,Map中存储的内容是键值对(key-value)。 2. 为了方便原创 2016-04-14 17:16:08 · 7572 阅读 · 1 评论 -
java集合框架06——fail-fast机制
在JDK的Collection中我们时常会看到类似于这样的话: 例如,ArrayList:注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器会尽最大努力抛出 ConcurrentModificationException。因此,为提高这类迭代器的正确性而编写一个依赖于此异常的程序是错误的做法:迭代器的快速失转载 2016-04-14 10:06:58 · 3169 阅读 · 1 评论 -
java集合框架05——ArrayList和LinkedList的区别
前面已经学习完了List部分的源码,主要是ArrayList和LinkedList两部分内容,这一节主要总结下List部分的内容。List概括先来回顾一下List在Collection中的的框架图:从图中我们可以看出:1. List是一个接口,它继承与Collection接口,代表有序的队列。2. AbstractList是一个抽象类,它继承与AbstractColle原创 2016-04-13 20:39:09 · 110174 阅读 · 41 评论 -
java集合框架04——LinkedList和源码分析
上一章学习了ArrayList,并分析了其源码,这一章我们将对LinkedList的具体实现进行详细的学习。依然遵循上一章的步骤,先对LinkedList有个整体的认识,然后学习它的源码,深入剖析LinkedList。LinkedList简介 首先看看LinkedList与Collection的关系:原创 2016-04-12 18:53:35 · 5863 阅读 · 2 评论 -
java集合框架03——ArrayList和源码分析
上一章学习了Collection的架构,并阅读了部分源码,这一章开始,我们将对Collection的具体实现进行详细学习。首先学习List。而ArrayList又是List中最为常用的,因此本章先学习ArrayList。先对ArrayList有个整体的认识,然后学习它的源码,深入剖析ArrayList。1. ArrayList简介 首先看看ArrayList与Collecti...原创 2016-04-11 15:05:57 · 6878 阅读 · 5 评论 -
java集合框架02——Collection架构与源码分析
Collection是一个接口,它主要的两个分支是List和Set。如下图所示: List和Set都是接口,它们继承与Collection。List是有序的队列,可以用重复的元素;而Set是数学概念中的集合,不能有重复的元素。List和Set都有它们各自的实现类。为了方便,我们抽象出AbstractCollection类来让其他类继承,该类实现类Collection中的绝...原创 2016-04-13 08:21:49 · 13523 阅读 · 10 评论