java学习
文章平均质量分 58
进击的小飞鱼
任何事情变得简单之前,唯一答案就是努力去做
展开
-
设计模式之结构型模式
适配器模式适配器模式可以将一个类的接口和另一个类的接口匹配起来,无须修改原来的适配者接口和抽象目标类结构。根据适配器类与适配者类的关系不同,适配器模式可以分为对象适配器和类适配器两种,在对象适配器模式中,适配器与适配者之间是关联关系;在类适配器模式中,适配器和适配者之间是机场关系。在实际开发中,对象适配器使用频率更高,如下图所示 总结优点将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适原创 2017-04-20 19:12:18 · 526 阅读 · 0 评论 -
Java8新特性学习
Java8刚正式发布没几天,今天特地体验了一下,看了一下官方文档和牛人的点评,最让我印象深刻有两个:Lambda表达式和MetaSpace!Lambda表达式Lambda表达式可以说是千呼万唤始出来,不记得从什么时候开始,Java一直要加这个特性,直到今天终于实现了!Lambda表达式对大家来说想必不陌生,C#语言很早就支持Lambda表达式。Lambda表达式的优点就是十分简洁,原来原创 2014-03-30 15:48:03 · 8779 阅读 · 2 评论 -
Java异常体系
最近参加了几个面试和笔试,其中都问到了java的异常体系,感觉自己回答的不太好,对这块内容还不十分清楚,所以这里总结一下,加深一下理解!Java异常体系结构异常是程序运行过程中出现的错误,Java语言的异常处理框架是Java语言健壮性的一个重要体现。Java把异常当做对象来处理,并定义了一个基类java.lang.Throwable作为所有异常的超类。在Java API中已经定义了许多原创 2013-12-07 13:51:25 · 1361 阅读 · 2 评论 -
java concurrency in practice读书笔记---ThreadLocal原理
ThreadLocal这个类很强大,用处十分广泛,可以解决多线程之间共享变量问题,那么ThreadLocal的原理是什么样呢?源代码最能说明问题!public class ThreadLocal { /** * ThreadLocals rely on per-thread linear-probe hash maps attached * to each thre原创 2013-11-14 16:26:49 · 1629 阅读 · 0 评论 -
SAX与DOM解析XML的区别
原文章地址:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/17/3082949.html首先给当初四种方法的jar包下载地址:DOM:在J2SE标准包中自带DOMSAX:http://sourceforge.net/projects/sax/JDOM:http://jdom.org/downloads/index.html转载 2013-11-22 14:32:53 · 1181 阅读 · 0 评论 -
Java concurrency in practice 读书笔记---synchronizer同步工具类
在容器类中,阻塞队列是一种独特的类:它们不仅能作为保存对象的容器,还能协调生产者和消费者等线程之间的控制流,因为take和put方法将阻塞,直到队列达到期望的状态(队列既非空,也非满)。同步工具类可以是任何一个对象,只要它根据其自身的状态来协调线程的控制流。阻塞队列可以作为同步工具类,其他类型的同步工具类还包括信号量(Semaphore)、栅栏(Barrier)以及闭锁(Latch)。如果这些转载 2013-11-01 19:47:35 · 880 阅读 · 0 评论 -
java concurrency in practice 读书笔记--java内存模型
什么是内存模型?为什么需要它?假设一个线程为变量aVariable赋值:avariable=3;内存模型需要解决这个问题:在什么条件下,读取aVariable的线程将看到这个值为3?这个问题似乎听起来很荒谬,当时在多线程情况下,将会有许多因素使得线程无法立即、甚至永远看到另一个线程的操作结果。例如:在编译器中生成的指令顺序,可以与源代码中的顺序不同----重排序;编译器原创 2013-10-29 19:19:26 · 1451 阅读 · 0 评论 -
java concurrency in practice读书笔记----第三章
可见性多线程环境下为什么会有可见性问题呢?现代CPU一般都使用读写速度很快的高速缓存来作为内存和CPU之间的缓冲, 高速缓存的引入可以有效的解决CPU和内存的速度矛盾, 但是也带来了新的问题: 缓存一致性. 在多CPU的系统中, 每个处理器都有自己的高速缓存, 而高速缓存又共享同一内存, 为了解决缓存一致性问题, 需要各个处理器访问缓存时都遵循一定的协议.另外, 为转载 2013-10-24 21:25:57 · 931 阅读 · 0 评论 -
struts2中,校验文件不起作用
最近在公司负责一个模块的开发,web的项目,使用SSH框架,当然公司封装了一下形成了自己的框架,基本不用写action,但是一些表单提交还是要自己来写action,那自然也少不了validation,发现自己写validation总是不起作用,貌似根本没有验证。。。。大家都知道struts2的校验规则,先进行validation的校验,如果不符合,直接跳转到input页面,不再进入action原创 2013-09-26 21:52:14 · 5219 阅读 · 2 评论 -
Java内存区域
Java虚拟机在执行Java程序的过程中会把它原创 2014-07-16 22:34:33 · 1748 阅读 · 0 评论 -
【IzPack】使用----install.xml
这里为什么原创 2014-08-25 15:03:01 · 3760 阅读 · 1 评论 -
【IzPack】简介
最近项目完结,但是部署很麻烦,因为要给三十多个地方部署,而且每个地方的网站都有一些不同,比如基本信息和标题,所以部署起来很麻烦,于是决定做个安装包,作用就是:能够初始化数据库;能够将网站基本信息写入配置文件;能够简单启动,不需要用户做进一步配置,最好能生成快捷方式;带着这几个需求,我做了一些前期的调研,找了许多能够生成Java安装包的工具,最后发现IzPack这个工具很不错,这里推原创 2014-08-21 15:02:07 · 3302 阅读 · 1 评论 -
设计模式之六个创建型模式
设计模式之六个创建型模式工厂模式简单工厂模式简单工厂模式 简单工厂模式的主要优点如下:工厂类包含必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的职责,而仅仅“消费”产品,简单工厂模式实现了对象创建和使用的分离。客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可,对于一些复杂的类名,通过简单工厂模式可以在一定程度减少使用中的原创 2017-03-31 19:21:17 · 610 阅读 · 1 评论 -
oracle jdbc驱动包通过maven引入
首先直接在pom里引用是无法下载jdbc驱动包的,需要自己到oracle网站上下载,http://www.oracle.com/technetwork/database/features/jdbc/default-2280470.html 下载完成后,使用maven命令安装到你的本地仓库里,命令如下:mvn install:install-file -Dfile={Path/to/your/ojd原创 2016-06-07 10:44:54 · 5074 阅读 · 0 评论 -
解决各大浏览器下载文件乱码以及Firefox下载文件名不全问题
最近做项目,采用Spring MVC做控制层,下载文件的文件名总是在主流浏览器上显示乱码,Firfox不是乱码了,IE下又成了乱码。也是烦,IE总是独树一帜,没办法,只能让程序去适应,在网上也搜索了很多,但是解决的不理想,主要是IE11作为主流浏览器后,很多人之前提出的方案都失效了。 简单来说,之前使用request获取header中的user-agent,通过MSIE关键字来判断是否是IE浏览器原创 2015-07-26 20:43:46 · 18432 阅读 · 6 评论 -
【spring源码分析】--Bean的解析与注册
Bean的具体解析以及如何将Bean注册到IOC容器中原创 2015-07-07 22:32:02 · 1996 阅读 · 0 评论 -
【spring源码分析】-容器基础
最近在看spring源码,配合了两本书,《spring源码深度解析》和《spring技术内幕》,主要想对spring有更深入地了解。 首先对spring基础容器进行分析: XmlBeanFactory beanFactory=new XmlBeanFactory(new ClasspathResource("spring.xml")); 上面的代码是我们在使用spring时最先写的一句代码,这原创 2015-04-16 22:33:11 · 959 阅读 · 0 评论 -
getContextPath和getRealPath的区别
这个问题很简单,实验一下就出来了,其实主要区别就:get原创 2014-11-17 21:39:33 · 22885 阅读 · 2 评论 -
设置eclipse自动下载源码
有时候,我们会好奇有些包的源码是怎么写的,毕竟源码是学习这个框架的最直接最原始的方法,可是Eclipse无法帮我们自动下载源码,这里推荐一个插件,可以帮我下载想要的源码。Java Source Attacher插件主页:http://marketplace.eclipse.org/content/java-source-attacher#.U5RmTePp0QI可以通过eclips原创 2014-06-08 21:37:35 · 13513 阅读 · 1 评论 -
【IzPack】使用--panels
前面介绍了install.xml这个文件以及其内部的标签结构,原创 2014-08-26 14:59:02 · 2542 阅读 · 1 评论 -
自己动手编写web server(一)
前几天,本科生学弟问了一个他们的计算机网络课程设计题-----自己设计一个简单的web server,我看到这个问题时,觉得这个题对于刚大三的学生来说很有难度。要遍一个web server ,首先,必须熟悉http协议;然后要熟悉网络编程,比如socket编程、IO流、多线程编程等。而这个题目也让我想起了自己最近面试经常遇到的问题----谈谈你对http协议的理解? 所以,笔者对这个题原创 2013-10-09 22:32:07 · 2354 阅读 · 0 评论 -
自己动手编写web server(二)
最近笔者有点忙啊,每天上班,晚上回来写毕业论文,没有太多空闲时间来学东西了。上一篇文章写完,自己读了几遍,感觉笔者的表达能力和文字功底确实垃圾,高考语文也就值103分,没有遗憾!!!笔者有个习惯,就是遇到不会的东西总爱网上搜一搜,然后看各种博客,最近也浏览了一些技术大牛的博客,他们的浏览量和回复超越笔者的博客几条街。。。。笔者决心要写出他们那样的博客!!闲话扯多了,进入正题!!!原创 2013-10-11 15:29:16 · 1970 阅读 · 1 评论 -
笔试常见题----新建了几个对象??
这几个月,面试笔试了很多地方,根据公司类型和业务不同,笔试和面试的侧重点也不同,但有一些题在笔试或者面试中经常出现。如下面的代码:String str=new String("xyz"+"123");问:这句话新建了几个对象?对于这个题,我查过一些帖子,有的说新建了3个对象,有的居然把 str 算做对象,str只是引用变量,是存放在栈内存中的,对象是存放在堆内存的!正确的答案应该是原创 2013-09-01 17:10:53 · 944 阅读 · 0 评论 -
Java中的内存泄露
现在学Java的人很多,使用Java作为主要开发语言的公司也很多,Java除了平台无关的优势外,还有一个就是有强大的垃圾回收机制,也就是说程序员不用管理内存的回收。这是Java为大多数人喜欢的原因,C/C++里面,程序员需要管理一个对象的销毁,以防止内存泄露(内存泄露就是不再使用的内存没有被回收),因此在C/C++程序中,经常会发现内存泄露的错误! 那么Java中真的不会发生内存泄原创 2013-06-24 16:00:27 · 940 阅读 · 0 评论 -
Java中Hashset、HashMap、ArrayList、LinkedList、Vector之间的联系与区别
前些时候买了一本《Java程序员的基本修养》这本书,李刚编著的,感觉还不错,对已经学会Java想进一步提高的同学来说,这本书可以当做进阶之书。(这不是广告植入。。。如果刚哥看到这个愿意给点广告费的话,我很乐意!) 进入正题,HashSet、HashMap、ArrayList、LinkedList、Vector这几个在Java编程中经常用到,他们之间有很多联系,有很多相通的地方、但也有原创 2013-06-24 10:15:18 · 8848 阅读 · 0 评论 -
Java web中编码问题解析
相信写过java web程序的人都对乱码恨之入骨,多少好心情就是因为乱码弄得一团糟,就像千里之体溃于蚁穴、一个老鼠害一锅汤一样的感觉!!! 这里,分享一下我对java web编码的认识,以及乱码的解决方法。当一个用户从浏览器端发送一个HTTP请求时,这是需要一系列的编码:URL、Cookie、Paramiter。URL就是浏览器地址栏里的网页地址,Cookie先不说,Paramiter原创 2013-06-06 14:53:50 · 1309 阅读 · 1 评论 -
hibernate4.1.7+ehcache2.4.3配置二级缓存
下载了最新的hibernate是4.1.7,借的李刚写的书用的hibernate3.X;在配置二级缓存是出现了问题正确的配置方式如下: hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect hibernate.show_sql=true hibernate.format_sql=true h原创 2013-05-28 13:59:45 · 2829 阅读 · 3 评论 -
soot学习(一)
本人研究生课题需要分析java源程序,师兄推荐了soot工具,正在学习中,看了作者写的教程,第一个例子就卡主了,提示:classdefnotfound:java_cup/scanner。。。找了半天,我把soot jsm py这三个包都已经加入到classpath了,还是有错误。最后,我就找java_cup这个类在哪,在网上搜没结果,貌似很少人做soot这方面的东西。。。最后我在s原创 2013-05-07 15:31:33 · 1748 阅读 · 0 评论 -
我对java中enum的理解
我是学c语言出身的,大学学的第一门语言是C语言,而且自认为学的不错,当然没有到大师级别。。。。。c语言里枚举很简单,enum关键字+变量名后面加大括号,里面写上枚举值。。。。到java这,面向对象就复杂一些了,因为整个编程思想转变了,所以现在提到枚举的时候,脑子里还是以前c语言里的枚举使用。。。最近接触了一下java里的枚举,看了一些教材里对枚举的描述,在我看来,枚举相当于类,只不过这原创 2013-03-12 21:34:48 · 1080 阅读 · 0 评论 -
java反射中asSubclass方法
Class asSubClass(Class)这个方法是什么意思呢?从名字上看貌似是将调用的Class转成括号内的Class的子类,但是正好是反的。。。。这个方法的作用是:父类作为参数,将父类转化为子类。Class clazz=List.class; Class subclazz=ArrayList.class.asSubclass(clazz); System.out.pri原创 2013-02-28 21:33:31 · 5556 阅读 · 0 评论 -
接口与抽象类
在大学毕业时候,出去面试里问的最多的一道题就是接口与抽象类的区别,我还清楚记得当时接到一个电话面试,问的这道问题,当时我的答案让面试者哭笑不得。。。这个问题让我记忆很深刻,最近在深入学习java中,再次想起了这道题,这里来总结一下,给自己找点自信。首先,共同点:接口和抽象类都不能被实例化,也就是不能被new出来,它们生来就处在顶层,只能被继承和模仿。。。接口和抽象类都包含了没有实现原创 2013-03-11 14:11:32 · 1052 阅读 · 2 评论 -
Spring MVC PK Struts2
虽然说没有系统的学习过Spring MVC框架, 但是工作这么长时间, 基本上在WEB层使用的都是Spring MVC, 自己觉得Struts2也是一个不错的WEB层框架, 这两种框架至今自己还未有比较, 今天闲着没事干, 从网上找了一些资料, 再加上平时使用Spring MVC的感触来总结一下。Spring MVC PK Struts2我们用struts2时采用的传统的配转载 2013-07-17 09:01:11 · 1017 阅读 · 0 评论 -
quartz 2.1学习(一)
quartz是一种开源任务调度框架,提供了强大的任务调度机制,Quartz允许开发人员灵活地定义触发器的调度时间表,并可对触发器和任务进行关联映射。废话不多说了,介绍一下编程的基本步骤:实现Job接口,编码实现需要执行的任务。定义jobdetail对象,这个对象需要job实现类作为参数定义trigger,trigger就是一个时间表,定义什么时候来执行任务,主要分为simpletrig原创 2013-07-17 14:38:58 · 3986 阅读 · 0 评论 -
内部排序之选择排序
选择排序方法有两种:直接选择排序和堆排序。直接选择排序简单直观,但是性能略差;堆排序是一种较为高效的选择排序方法,但实现起来略微复杂。直接选择排序 直接选择排序思路很简单,需要经过n-1趟比较。第一趟:程序定位在第一个数据,拿第一个数据依次和后面的数据进行比较,如果第一个数据大于后面的某个数据,交换...这样,经过比较和交换,最小的数据被选出,并放在第一位第二趟:程序定位在第二原创 2013-07-03 13:49:26 · 688 阅读 · 0 评论 -
java内存回收---垃圾回收机制
垃圾回收机制主要完成下面两件事情:跟踪并监控每个Java对象,当某个对象处于不可达状态时,回收该对象所占用的内存。清理内存分配、回收过程中产生的内存碎片。垃圾回收的基本算法上一节讲到,垃圾回收机制判断某个对象是否可以回收的标准是:是否还有引用指向该对象。实际上,垃圾回收机制不可能实时检测到每个Java对象的状态,因此当一个对象失去引用后,它也不会被立即回收,只有等垃圾回收机制运原创 2013-08-29 11:25:46 · 932 阅读 · 0 评论 -
java内存回收----引用
前面介绍过java内存泄漏问题,这里详细解释一下java内存回收机制。对于java垃圾回收机制来说,判断一个对象是否可回收的标准在于该对象是否被引用,因此引用也是JVM进行内存管理的一个重要概念。为了更好地管理对象的引用,从JDK1.2开始,java在java.lang.ref包下提供了三个类:SoftReference、PhantomReference和WeakReference,它们分别代原创 2013-08-28 22:02:10 · 845 阅读 · 0 评论 -
java动态代理
代理模式是一种应用非常广泛的设计模式,当客户端代码需要调用某个对象时,客户端实际上不关心是否准确得到该对象,它只要一个能提供该功能的对象即可,此时,我们就可以返回该对象的代理。通常情况下,适用代理模式的情况有两种:1.创建对象开销很大,可以创建一个代理对象,推迟真正的对象创建。大家所熟悉的Hibernate延迟加载策略就是使用动态代理,当A实体关联B实体时,在获取A实体时不需要立即获得与A原创 2013-08-27 16:30:16 · 989 阅读 · 0 评论 -
comparable与comparator的区别
Comparable 和 Comparator 都是用来实现集合中元素的比较、排序的。只是 Comparable 是在集合内部定义的方法实现的排序,而Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法。Comparator位于包java.util下,而Comp转载 2013-08-27 14:24:10 · 729 阅读 · 0 评论 -
java多线程之ConcurrentHashMap实现原理
最近在学习java多线程的一些知识,其中看了ConcurrentHashMap的实现源码,找了相关资料辅助理解,这里发现有一个文章写的不错,链接如下:http://www.54xue.com/w/91/n-34291.htmlMap体系Hashtable是JDK 5之前Map唯一线程安全的内置实现(Collections.synchronizedMap不算)。Hasht转载 2013-08-13 15:42:08 · 1351 阅读 · 0 评论 -
Concurrent中DelayedQueue原理与用法
常常会遇到一些延迟任务(100ms后执行该任务)、周期任务(每10ms执行一次)、超时任务(比如缓存,超时就要移除)等。如果我们要创建一个处理这样任务的调度服务,那么DelayedQueue将是首选!首先,看一下jdk中DlayedQueue的源码:public class DelayQueue extends AbstractQueue implements BlockingQu原创 2013-08-19 11:14:08 · 4562 阅读 · 0 评论