![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
清觞煮雪
这个作者很懒,什么都没留下…
展开
-
子类、父类各种方法的执行顺序
先贴出代码 : 父类Animal ,package parentAndChild;public class Animal {/*** 动物类*/static{System.out.println("父类的静态代码块");}{System.out.println("执行父类的构造代码块");}public Animal(){Syst转载 2017-01-12 10:56:48 · 7128 阅读 · 0 评论 -
GET和POST的区别
原理性上的区别HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET、POST、PUT、DELETE。URL全称是资源描述符,我们可以这么认为:一个URL地址,它用于描述网络上的一个资源,而HTTP的GET、POST、PUT、DELETE就对应着对这个资源的查、改、增、删4个操作。所以GET和POST的第一个区别:GET一般用于获取/查询资源信息,POST一般用于更新资源信息。转载 2016-04-13 11:43:54 · 261 阅读 · 0 评论 -
深入理解java的抽象类和接口
对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。下面是本文的目录大纲:一.抽象类二.接口三.抽象类和接口的区别若有不正之处,请多多谅解转载 2016-04-19 15:08:15 · 190 阅读 · 0 评论 -
深入理解Java之泛型
1. Why ——引入泛型机制的原因假如我们想要实现一个String数组,并且要求它可以动态改变大小,这时我们都会想到用ArrayList来聚合String对象。然而,过了一阵,我们想要实现一个大小可以改变的Date对象数组,这时我们当然希望能够重用之前写过的那个针对String对象的ArrayList实现。在Java 5之前,ArrayList的实现大致如下:1 publ转载 2016-05-24 16:48:08 · 270 阅读 · 0 评论 -
Java工程师成神之路
一、基础篇1.1 JVM1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收http://www.jcp.org/en/jsr/detail?id=133http://ifeve.com/jmm-faq/1.1.2. 了解JVM各种参数及调优1.1.3. 学习使用Java工具jps,jstack, jmap, jconsol转载 2016-04-28 11:01:31 · 478 阅读 · 0 评论 -
java代码优化(长期更新)
前言2016年3月修改,结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化。在修改之前,我的说法是这样的:就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼来说作用不大,但是吃的虾米多了,鲸鱼自然饱了。代码优化一样,也许一个两个的优化,对于提升代码的运行效率意义不大,但是只要处处都能注意代码优化,总体来说对于提升代码的运行效率就很有用了。这个观点,在现在看来,是要进行代转载 2016-04-26 17:55:48 · 501 阅读 · 0 评论 -
ReentrantLock实现原理深入探究
前言这篇文章被归到Java基础分类中,其实真的一点都不基础。网上写ReentrantLock的使用、ReentrantLock和synchronized的区别的文章很多,研究ReentrantLock并且能讲清楚ReentrantLock的原理的文章很少,本文就来研究一下ReentrantLock的实现原理。研究ReentrantLock的实现原理需要比较好的Java基础以及阅读代码的能力,有转载 2016-04-26 16:49:13 · 3248 阅读 · 0 评论 -
Unsafe与CAS
Unsafe简单讲一下这个类。Java无法直接访问底层操作系统,而是通过本地(native)方法来访问。不过尽管如此,JVM还是开了一个后门,JDK中有一个类Unsafe,它提供了硬件级别的原子操作。这个类尽管里面的方法都是public的,但是开发者是无法使用它的,JDK API文档也没有提供关于这个类的方法解析。对于Unsafe类的使用都是受限制的,只有授信的代码才能获得该类的实例,当然转载 2016-04-26 16:39:06 · 626 阅读 · 0 评论 -
查缺补漏
前言Java的部分有基础、设计模式、IO、NIO、多线程,之后有时间还会把集合这部分补上去,这么多内容里面,难免有一些知识点遗漏,本文主要是讲解这些遗漏的知识点。这些知识点,不是特别大的难点,所以没有必要专门写一篇文章讲解;但是这些知识点,也不是一两句话就说得清楚的,所以放在这里。查漏补缺系列文章,每篇5个知识点,只要有值得研究的问题就会写上来。Thread.sleep(XXX)方法消转载 2016-04-26 16:33:00 · 649 阅读 · 0 评论 -
自己写一个java.lang.reflect.Proxy代理的实现
前言Java设计模式9:代理模式一文中,讲到了动态代理,动态代理里面用到了一个类就是java.lang.reflect.Proxy,这个类是根据代理内容为传入的接口生成代理用的。本文就自己写一个Proxy类出来,功能和java.lang.reflect.Proxy一样,传入接口、代理内容,生成代理。抛砖引玉吧,个人觉得自己写一些JDK里面的那些类挺好的,写一遍和看一遍真的是两个不同的概念,转载 2016-04-26 16:22:26 · 440 阅读 · 0 评论 -
Java类中继承、接口实现的一些细节
前言在Java中,子类继承父类,类实现接口是属于常识性的内容了,作为一个Java程序员应该也比较熟悉。不过子类继承父类,类实现接口中还是有一些小细节值得注意一下,本文就从个人工作、学习中入手,总结一些细节性的内容,以更进一步地掌握继承、实现的关系。现在只是写一些目前碰到的内容,以后只要想到了、碰到了任何继承、实现相关问题,都会保持更新此文。接口A有void C()方法,接口B有int转载 2016-04-26 10:02:54 · 514 阅读 · 0 评论 -
接口好抽象类
接口interface的作用接口是对于行为的抽象,在小项目、小设计中接口带来的好处可能不会特别明显,但是项目一旦庞大起来,接口的优势就很明显会体现出来了:1、对于一个庞大的项目,从设计的角度来说,接口的存在可以帮助理清楚业务,利用接口不仅可以告诉开发人员需要实现哪些业务,而且也将命名规范限制住了,从而防止开发人员随便命名导致项目组别的开发者无法看明白:public inte转载 2016-04-26 09:56:15 · 196 阅读 · 0 评论 -
枚举
枚举枚举是一个小功能,但是却带来了大方便。一个星期有七天,我们平时定义这七天为常量的时候,会这么写:public final static String SUNDAY = "0";public final static String MONDAY = "1";public final static String TUESDAY = "2";public final stati转载 2016-04-26 09:54:48 · 243 阅读 · 0 评论 -
struts2详细工作流程
Struts 2详细工作流程读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验,那么千万不要想当然地以为这一章可以跳过。实际上Struts1.x与Struts2并无我们想象的血缘关系。虽然Struts2的开发小组极力保留Struts1.x的习惯,但因为Struts2的核心设计完全改变,从思想到设计到工作流程,都有了很大的不同。Strut转载 2016-05-19 17:51:17 · 483 阅读 · 0 评论 -
Spring MVC 流程图
Spring MVC工作流程图图一图二 Spring工作流程描述 1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获; 2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据转载 2016-05-19 17:51:57 · 266 阅读 · 0 评论 -
谈谈多态
概述我们都知道面向对象有四个基本特性:抽象、封装、继承、多态。这四个特性,概括起来可以这么理解,抽象、封装、继承是多态的基础,多态是抽象、封装、继承的表现。多态,是Java中非常重要的一个部分,所以今天来谈一下多态(Polymorphism)。什么是多态不同类的对象对同一消息作出不同的响应就叫做多态。就像上课铃响了,上体育课的学生跑到操场上站好,上语文课的学生在教室里坐好一样。转载 2016-04-25 08:49:08 · 292 阅读 · 0 评论 -
能够提高开发效率的Eclipse实用操作
工欲善其事,必先利其器。对于程序员来说,Eclipse便是其中的一个“器”。本文会从Eclipse快捷键和实用技巧这两个篇章展开介绍。Eclipse快捷键用熟后,不用鼠标,便可进行编程开发,避免鼠标分了你的神。而掌握了Eclipse的一些实用技巧,则可以大大提高开发效率。1、丢掉鼠标吧之Eclipse快捷键篇1.1文件切换的三种方式 1.1.1 Ctrl + E,在右转载 2016-07-29 19:52:43 · 493 阅读 · 0 评论 -
Git常用命令总结(超实用)
Git常用命令总结(超实用)导读Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。一般来说,日常使用Git只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。下面是我整理的常用 Git 命令清单。几个专用名词的译名如下: Workspace:工作区 Index / Stage转载 2016-07-29 14:50:58 · 301 阅读 · 0 评论 -
Tomcat容器管理安全的几种验证方式
当访问服务器中受保护的资源时,容器管理的验证方法可以控制确认用户身份的方式。Tomcat支持四种容器管理的安全防护,它们是:BASIC(基本验证):通过HTTP验证,需要提供base64编码文本的用户口令DIGEST(摘要验证):通过HTTP验证,需要提供摘要编码字符串的用户口令FORM(表单验证):在网页的表单上要求提供密码CLIENT-CERT(客户端证书验证):以客户端证书来确认用户转载 2016-06-22 10:36:35 · 379 阅读 · 0 评论 -
多态实现机制:静态分派和动态分派
方法解析Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址。这个特性给Java带来了更强大的动态扩展能力,使得可以在类运行期间才能确定某些目标方法的直接引用,称为动态连接,也有一部分方法的符号引用在类加载阶段或第一次使用时转化为直接引用,这种转化称为静态解析。这在前面的“Java内存区域与内存溢转载 2016-07-15 10:44:05 · 825 阅读 · 1 评论 -
Java 8指南
欢迎阅读我对 Java 8 的介绍。本指南将一步步地通过所有的新的语言特性来引导你认识Java 8。在简短的示例代码的帮助下,你将会学习到如何使用默认的接口方法、lambda表达式、方法引用以及可重复的注解。在文章的最后,你将会熟悉最新的API变化,例如:streams、函数式接口、map 扩展以及新的 Date API。没有过多的文本 — 仅仅是一些具有注释的代码片段。一起享受吧!接转载 2016-07-14 16:00:05 · 333 阅读 · 0 评论 -
身份证号码验证算法
做项目的时候需要对拿到的数据进行“清洗”,比如剔除一些不可能存在的身份证号码。查阅了网上的身份证号码验证算法,自己也总结一下。(一)18身份证号码的结构公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。1、地址码表示编码对象常住户口所在县(市、旗、区)的行政区域划分代码,按G转载 2016-06-24 10:00:10 · 786 阅读 · 0 评论 -
自己实现的一个Native方法的调用
JNI开始本篇的内容之前,首先要讲一下JNI。Java很好,使用的人很多、应用极广,但是Java不是完美的。Java的不足体现在运行速度要比传统的C++慢上许多之外,还有Java无法直接访问到操作系统底层如硬件系统,为此Java提供了JNI来实现对于底层的访问。JNI,Java Native Interface,它是Java的SDK一部分,JNI允许Java代码使用以其他语言编写的代码和代码库转载 2016-04-25 09:49:53 · 3377 阅读 · 0 评论 -
Java对象表示方法2:XStream实现对象的XML话
上一篇文章讲到了使用Java原生的序列化的方式来表示一个对象。总结一下这种对象表示方式的优缺点:1、纯粹的Java环境下这种方式可以很好地工作,因为它是Java自带的,也不需要第三方的Jar包的支持2、多语言环境下,使用Java序列化方式进行存储后,很难用其他语言还原出结果3、占用的字节数比较大,而且序列化、反序列化效率也不高前面也提到过,对象表示有各种各样的方式,序列化只是其中的转载 2016-04-25 09:33:08 · 271 阅读 · 0 评论 -
Java对象表示方法1:序列化、反序列化和transient关键字的作用
平时我们在Java内存中的对象,是无法进行IO操作或者网络通信的,因为在进行IO操作或者网络通信的时候,人家根本不知道内存中的对象是个什么东西,因此必须将对象以某种方式表示出来,即存储对象中的状态。一个Java对象的表示有各种各样的方式,Java本身也提供给了用户一种表示对象的方式,那就是序列化。换句话说,序列化只是表示对象的一种方式而已。OK,有了序列化,那么必然有反序列化,我们先看一下序列化、转载 2016-04-25 09:27:23 · 726 阅读 · 0 评论 -
枚举
枚举枚举是一个小功能,但是却带来了大方便。一个星期有七天,我们平时定义这七天为常量的时候,会这么写:public final static String SUNDAY = "0";public final static String MONDAY = "1";public final static String TUESDAY = "2";public final stati转载 2016-04-25 09:15:51 · 174 阅读 · 0 评论 -
static关键字的作用
之前讲到final关键字的作用是每次面试的时候我必问求职者的两个问题之一,另外一个问题就是文本会写到的static。final和static一样,都是一个小问题可以看到一个人的基础是否扎实以及平时是否有钻研精神。静态变量和静态方法static关键字最基本的用法是:1、被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来2、被static修饰的方转载 2016-04-25 09:05:20 · 303 阅读 · 0 评论 -
谈谈final的作用
前言一直想写写这个话题。代表公司也面试过一些求职者,每次面试我必问的两个问题之一就是“请你谈一谈对于final关键字的理解”。这是一个简单的小问题,但是不要小看它,通过对这个问题的回答以及一些简单的扩展就能看出一个求职者的基础是否扎实以及是否有钻研精神。OK,开始进入主题。final关键字的作用相信对于final的用法,大多数人都可以随口说出三句话:1、被final修饰的类不可转载 2016-04-25 08:57:55 · 2511 阅读 · 1 评论 -
Java异常
异常概述异常也称为例外,是在程序运行过程中发生的并且会打断程序正常执行的事件,比如算术异常、空指针异常、文件找不到异常。所以在程序设计时,必须考虑到可能发生的异常事件,并做出相应的处理。这样才能保证程序可以正常运行。Java的异常处理机制也秉承着面向对象的基本思想,在Java中,所有的异常都是以类的形式存在,除了内置的异常类之外,Java也可以自定义异常类。此外,Java的异常处理机制也允转载 2016-04-26 09:54:13 · 285 阅读 · 0 评论 -
Java语法糖4:内部类
内部类最后一个语法糖,讲讲内部类,内部类指的就是在一个类的内部再定义一个类。内部类之所以也是语法糖,是因为它仅仅是一个编译时的概念,outer.java里面定义了一个内部类inner,一旦编译成功,就会生成两个完全不同的.class文件了,分别是outer.class和outer$inner.class。所以内部类的名字完全可以和它的外部类名字相同。内部类分为四种:成员内部类、局部内部转载 2016-04-26 09:53:10 · 324 阅读 · 0 评论 -
探秘Java中String、StringBuilder以及StringBuffer
相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String、StringBuilder和StringBuffer这几个类,分析它们的异同点以及了解各个类适用的场景。下面是本文的目录大纲:一.你了解String类吗?二.深入理解String、StringBuffer、StringBuilder三.不同场景下三个类的性转载 2016-03-18 18:37:02 · 197 阅读 · 0 评论 -
浅谈WebLogic和Tomcat
J2ee开发主要是浏览器和服务器进行交互的一种结构.逻辑都是在后台进行处理,然后再把结果传输回给浏览器。可以看出服务器在这种架构是非常重要的。 这几天接触到两种Java的web服务器,做项目用的Tomcat,看视频看的是WebLogic Server(WLS),都是web服务器,有什么区别和联系呢? (一)先简单介绍一下这两种服务器。 WebL转载 2016-03-17 14:14:56 · 265 阅读 · 0 评论 -
Jetty和tomcat的比较
Jetty和tomcat的比较相同点:1. Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的servlet规范和JavaEE的规范。不同点:1. 架构比较Jetty的架构比Tomcat的更为简单Jetty的架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单。Tomcat的架构是基于容转载 2016-03-17 10:41:17 · 468 阅读 · 0 评论 -
Servlet生命周期与工作原理
Servlet生命周期分为三个阶段: 1,初始化阶段 调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法Servlet初始化阶段: 在下列时刻Servlet容器装载Servlet: 1,Servlet容器启动时自动装载某些Servlet,实现它只需要在web.XML文件中的之间添加如下代码转载 2016-03-17 10:35:33 · 207 阅读 · 0 评论 -
J2EE的13个规范总结
什么是J2EE?在企业级应用中,都有一些通用企业需求模块,如数据库连接,邮件服务,事务处理等.既然很多企业级应用都需要这些模块,一些大公司便开发了自己的通用模块服务,即中间件.这样一来,就避免了重复开发,开发周期长和代码可靠性差等问题.但是,各公司的中间件不兼容的问题就出现了,用户无法将它们组装在一起为自己服务.于是,"标准"就应运而生了.J2EE就是基于JAVA技术的一系列标准.J2转载 2016-03-17 10:26:07 · 275 阅读 · 0 评论 -
浅谈Java中父类与子类的加载顺序
class Parent { // 静态变量 public static String p_StaticField = "父类--静态变量"; // 变量(其实这用对象更好能体同这一点,如专门写一个类的实例) //如果这个变量放在初始化块的后面,是会报错的,因为你根本没有被初始化 public String p_Field = "父类--变转载 2016-03-16 17:11:05 · 450 阅读 · 0 评论 -
一个java文件只能有一个public类,而且此类的名字须与文件名一致
一个java文件只能有一个public类,而且此类的名字须与文件名一致。补充:这不是说一个程序必须要有一个public类,其实也可以没有,如下面一个程序也是可以执行的:class HelloWorld{public static void main(String[] args){System.out.println("HelloWorld!");}}另外还需要注转载 2016-03-16 16:59:32 · 1573 阅读 · 0 评论 -
Struts2 Convention Plugin ( struts2 零配置 )
http://www.blogjava.net/fancydeepin/archive/2012/10/26/struts2_convention_plugin.html转载 2016-03-16 11:48:46 · 345 阅读 · 0 评论 -
Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式)介绍
jedis是一个著名的key-value存储系统,而作为其官方推荐的java版客户端jedis也非常强大和稳定,支持事务、管道及有jedis自身实现的分布式。在这里对jedis关于事务、管道和分布式的调用方式做一个简单的介绍和对比:一、普通同步方式最简单和基础的调用方式,?1234567891011转载 2016-03-16 14:11:44 · 303 阅读 · 0 评论 -
JNDI数据源的配置
一、数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动程序(Class.forName("数据库驱动类");) ②连接数据库(Connection con = DriverManager.getConnection();) ③操作数据库(PreparedStatement stat = con.prepareS转载 2016-03-16 11:43:51 · 258 阅读 · 0 评论