自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Zerohuan的专栏

我的新博客:http://blog.zerohuan.com/,PS:难道只有我一个人觉得CSDN卡的不行。。。

  • 博客(44)
  • 资源 (2)
  • 收藏
  • 关注

原创 Servlet深入学习,规范,理解和实现(中)——深入理解Tomcat(一)

心得:在写这篇博客之前,我大致阅读一些关于Tomcat的书籍和博客等资料,有些资料由于时间的关系,讲解的Tomcat版本太老,有些资料可以很好的说明Tomcat整理结构和设计思想但是很多重要的问题因为篇幅的原因不能很好的说明,还有写资料很可以说明一些类和API但不能结合实际问题说明实际运行中的流程和设计思路等等。当然我并不是说它们不好,只是不同的人的看到同一个事物和问题的角度和思路可能不同,出发点不

2016-02-26 21:45:31 8127 3

原创 Servlet深入学习,规范,理解和实现(上)

虽然现在是实际工作中很少直接使用Servlet,但了解Servlet规范中对不同组件(Servlet,Filter,Listener等等)以及Servlet容器的实现对于基于Servlet的Java EE应用的理解也是大有益处的。因此基于上面3个资料的学习所得以及我自己阅读Tomcat 8相关部分源码的一些收获在这里总结记录一下。

2016-01-17 22:51:48 8011 5

原创 Java基础知识总结(三)——类和接口

1. 访问控制权限:1.1 访问控制权限的种类:私有:private,default-private(包访问权限);保护:protected;公有:public;1.2 为什么要访问控制权限:信息隐藏:私有权限可以增强内聚性,便于之后的版本更新;公有权限说明对外界的承诺,必须兼容。1.3 重要概念:编译单元:一个Java源代码文件,最多顶层可以有一个public类,

2015-11-15 21:41:10 2881 2

原创 TCP/IP学习笔记(三)——IP,ARP,RARP

参考文献: * 《TCP/IP详解 卷一:协议》;1. IP网际协议1.1 特点:不可靠:不能保证IP数据报能成功到达目的地; 无连接:不维护任何关于后续数据报状态信息,即没有握手的环节,比如UDP也是无连接的;1.2 IP首部普通IPv4首部长度20字节(除非含有选项字段);网络字节序:Big-endian;服务类性(TOS):共8位,实际有效位4bit,最小时延,最大吞吐量,最高可靠性

2016-04-18 20:26:48 4686

原创 图论复习笔记

补充小细节: a. 什么样的图可以称为“稀疏”:|E|=O(|V|),也就是说平均每个顶点的邻接顶点数量是常数;1. 基本定义图(Graph)的定义:G=(V,E)由顶点(vertex)集V和边(edge)集E组成。 边(弧arc)是一个点对(v, w),其中v,w∈V; 有向:点对是有序的,那么图有就有向的; 邻接:v和w邻接当且仅当(v,w)∈E,而(w,v)是指w和v邻接; 简

2016-04-12 16:36:44 2284

转载 对象拷贝类PropertyUtils,BeanUtils,BeanCopier的技术沉淀

转自:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp37对象拷贝类PropertyUtils,BeanUtils,BeanCopier的技术沉淀性能对比: BeanCopier > PropertyUtils > BeanUtils. 其中BeanCopier的性能高出另外两个100数量级。Be

2016-04-04 15:09:08 4934

原创 2016暑期实习面试小记

楔子隔了好长时间没写博客了,这一段时间基本忙于实习以及实验室的事情。从2月底到3月18日收到阿里的offer短短十几天,经历了不少面试,这里把主要的经历简单的记录总结一下,也为接下来的学习和工作做一个铺垫。阿里,蚂蚁金服,Java研发一面 3月1日在找到小百合有校友内推投递简历,第二天一面就到了。整体来说不是很难。 开始同样是自我介绍,结尾我提到了之前做的项目,面试官(一个很nice的JJ)就让

2016-03-30 11:50:31 1884 1

原创 Servlet & Spring对Multipart数据请求的支持

参考资料: (1)RFC 1867 (2)Java Servlet Specification 3.1; (3)《Java Web高级编程》;1. Multipart FormDataMultipart是HTML中表单文件上传的基本格式,一般通过如下方法可以通过HTTP上传文件: <form action="_URL_" method="POST" enctype="multipart/

2016-01-13 16:50:27 5815

原创 JVM(一)——GC,内存分配和垃圾回收

心得:Java中垃圾回收和内存可以实现高度的自动化,栈帧可以由JVM自动分配和回收,局部变量表和操作数栈也可以在编译时就确定好,堆中的内存分配和回收才是JVM关注的重点,JVM实现大多采用可达性分析来标记存活对象,什么时候标记?让用户线程主动跑到那些安全的地方(引用关系不变的时候,SafePoint和Safe Region),再由GC收集器来标记进行处理。不同的垃圾收集器甚至可以决定堆的内存布局,比

2016-01-03 15:54:05 3584 1

原创 数据结构的理解和应用——红黑树

心得:看了《数据结构和算法分析》,《算法导论》以及《算法》上关于红黑树的章节,总算把红黑树的实现和操作给理解了一边。虽然插入和删除的情况有些复杂,因为1,2年前看过一次,后来就忘了,感觉还是当时没有真正理解。因此记住插入和删除的形式是不行的,关键是结合红黑树的5个特点,理解插入和删除中循环不变式的以及终止条件。这样才能知道为什么要弄一个“一重额外的黑色”才能知道为什么红黑树一次更新可以在O(1)中完

2015-12-31 00:18:30 3139

原创 Java基础知识总结(八)——反射

心得:每个对象都对应自己类的Class对象,这个Class对象是这个类的类新信息的对外入口,通过这个Class对象我们可以从方法区知道这个类有哪些域,构造器,方法,结合具体的对象可以获得域在运行时的值,还可以基于Method调用(查找方法表调用?)。反射的意义在于运行时的扩展能力。PS: (1)在HotSpot(JDK 1.7)中Class对象是放在方法区中的。 (2)自己动手写一个工具输入类名

2015-12-31 00:17:15 1583

原创 Java基础知识总结(七)——泛型

心得: 我觉得Java泛型的意义在于在我们使用父类引用操作子类时(擦除),让编译器和JVM来代替我们进行必要的类型检查和转换(checkcast指令,桥方法,signature这些都是编译器和JVM提供的额外帮助)。问题的关键在于签名实在调用者的方法表属性中的;而描述符是在自己类型信息中的。对象本身不知道自己的泛型参数具体是什么。

2015-12-31 00:15:41 1518

原创 Java基础知识总结(五)——安全

小结:系统的整理了下有关的Java的安全的三个方面:语言特性,安全管理器(保护域),签名和加密算法的应用。在整理时,我觉得基于第三方的数字签名认证的方式充分体现了解耦的思想,这和集群中中心式拓扑结构的方式很像,将复杂耦合几种在中介上(中介者模式和迪米特法则),设计模式这个东西只要仔细理解,灵活运用才可以举一反三。1. 概括Java语言的安全由三个方面共同进行保证:(1)语言特性:类,域,方法的访问控

2015-12-31 00:12:51 1743

原创 Java基础知识总结(四)——异常与异常处理表

要想弄清楚异常的一些知识点,比如try/finally的return,异常的丢失等等,光记住“形式”是不够的,不从字节码异常表的层面分析是很难真正的将一些问题弄明白。

2015-12-31 00:11:02 2759 2

原创 Java 8集合框架源码学习——HashMap

心得:相较于JDK 1.7,Java 8中的HashMap有了较大的性能提升。修改了hash和resize方式,增加了红黑树的支持。学习参考资料: (1)疫苗:Java HashMap的死循环;1. HashMap要点(1)结构特点:Java中的HashMap是基于“数组+链表”的方式(链表法解决冲突),到了Java 8,应该是“数组+链表/红黑树”的方式。 (2)线程安全:HashMap是不安

2015-12-18 13:56:00 2770

原创 Java中的final参数/变量+匿名内部类的字节码分析,以及Java 8中的使用

在Java 8之前一个常识就是如果要在方法中定义一个匿名内部类并使用该方法内的局部变量(包括参数),需要使用final关键字修饰。网上也有很多对这种机制的解释和说明,但是大部分都是一种抽象的认识。如果能够分析一下字节码,这个问题其实很清楚。显然的一个事实是局部变量(称为变量a)是保存在栈帧的局部变量表中的(引用或基本类型),这里把定义匿名内部类的方法称为方法A,匿名内部类的中使用这个局

2015-11-27 20:53:30 2747 1

原创 Java中的享元模式——不可变类的valueOf

1. 享元模式是什么:定义:运用共享技术有效地支持大量的细粒度的对象。这个定义似乎有些抽象。我的理解就是在大量的对象中将那些重复出现,值相对稳定的属性集合抽象出来封装到共享对象从而减少重复对象的创建。既然是可共享的状态,我觉得的很重要的一个特点就是不可变性,因为它被很多对象所引用,不可变性才能保证安全的使用(包括线程安全),Java中String,Integer,Double等

2015-11-27 14:12:20 1964 1

原创 Java中的命令模式——Thread,ThreadPoolExecutor和Runnable

1. 命令模式是什么:定义理解:命令模式最大的特性就在于将请求封装成抽象,也就是“命令”,并可以提供命令队列(可选的),支持排队、撤销等功能。优点:(1)将请求抽象,可以动态的扩展请求的类型;(2)将调用代码和接收执行的代码分离开来,用“命令”这个第三方进行解耦;(3)可以方便对对命令进行管理:提供队列,日志,撤销,重做等等额外的功能;缺点:将命令抽象出

2015-11-25 17:37:47 4315

原创 关于Java类初始化和实例化中的2个“雷区”

在考虑类初始化时,我们都知道进行子类初始化时,如果父类没有初始化要先初始化子类。然而事情并没有一句话这么简单。首先看看Java中初始化触发的条件:(1)在使用new实例化对象,访问静态数据和方法时,也就是遇到指令:new,getstatic/putstatic和invokestatic时;(2)使用反射对类进行调用时;(3)当初始化一个类时,父类如果没有进行初始化,先触发父类的初始

2015-11-24 19:36:46 4081 1

转载 Java中的设计模式应用(23种)

你可以通过Wikipedia对设计模式有个整体上的理解。Wikipedia上也提高了GoF所涉及到的模式。我这里总结一下,并且尽可能指出在JavaSE与JavaEE的API中是如何运用这些模式的。1.创建型设计模式抽象工厂模式特点:创建方法返回一个可以用来创建抽象类或接口的工厂类。javax.xml.parsers.DocumentBuilderFact

2015-11-15 18:52:52 971

原创 基于wait和nofity的生产者和消费者模式版本

如果不用阻塞队列,生产者和消费者模式如何实现,我自己写了一版本,小记一下:除了Producer和Consumer之外,我还创建了一个ValueHolder用来解耦,并且包含了两个fianl对象作为锁;我觉得这样做可以基于final引用同步,更为安全一些;import java.util.concurrent.ExecutorService;import java.util.concurr

2015-11-08 17:03:03 1156

原创 [细节]Tomcat对静态资源的缓存支持

使用tomcat时我们可以通过配置DefaultServlet来支持对静态资源的访问,而DefaultServlet是具有缓存功能的,下面通过对关键的源码对其进行分析并介绍如何通过配置来控制tomcat静态资源的缓存行为。1. 配置DefaultServlet:我们有两种方式来配置资源,一种是通过部署描述符,另一种就是通过代码进行配置:通过代码配置DefaultServ

2015-10-30 23:13:56 15867

原创 Java基础知识总结(二)——NIO

关于NIO这部分,除了《Java编程思想》中的介绍还有两份资料我觉得很好:一是《深入Java Web技术内幕》第2章的部分,二是并发编程网上Jakob JenkovNIO系列教程翻译,读完之后受益匪浅。1. NIO是什么:java.nio是JDK1.4之后加入的,它新颖的特点在于:(1)面向缓存;(2)非阻塞;(3)直接内存;首先来看看它的整体结构:一个完整的NIO程序体系应该包括

2015-10-22 15:25:10 1549

转载 Java的多线程机制:缓存一致性和CAS

一、总线锁定和缓存一致性这是两个操作系统层面的概念。随着多核时代的到来,并发操作已经成了很正常的现象,操作系统必须要有一些机制和原语,以保证某些基本操作的原子性,比如处理器需要保证读一个字节或写一个字节是原子的,那么它是如何实现的呢?有两种机制:总线锁定和缓存一致性。我们知道,CPU和物理内存之间的通信速度远慢于CPU的处理速度,所以CPU有自己的内部缓存,根据一些规则将内存中的数

2015-10-18 21:21:57 2831

原创 Java基础知识总结(一)创建和销毁对象

契子:明年就要离开学校找工作了,时间过的真快,想一想这几年,做了一些事,也有一些事并没有做好,有很多收获,也有不少遗憾。感性的话在此不宜多说,既然选择了程序员这条道路,也要有把它到做事业的态度。在正式找工作前还有几个月的时间,做东西,尝试新的技术固然很爽,但是基础也很重要,在这短短的几个月的时间里,我将把以前学过的一些知识,Java,数据结构,算法,网络,OS&Linux,J2EE等等知识查缺补漏

2015-10-18 19:59:26 6468

原创 [实践]基于WebSocket,Spring开发消息系统后台

1. 为什么需要WebSocket:回答这个首先需要知道一些历史,我们知道HTTP是客户端向服务器请求获取数据的普遍方式,但是它是一种被动性的通信机制。request=response,服务器只有在接受到客户端请求的时候才可能向客户端发送数据。但有时候服务器需要告诉客户端有新的数据应该接受,比如消息,即时聊天等功能,也就是说我们应该需要一种全双工的通信方式,而HTTP的被动性使得这一问题很难解

2015-10-17 01:58:29 8304 1

原创 [实践]Spring MVC——消息转换器的编码(防止中文乱码)

今天配置了一下消息转换器,测试的时候发现中文是乱码的,tomcat和mysql的编码设置没有问题,logger出来也是正常的,因此发现应该是消息转换器没有设置好MediaType,修正了一下:@Override public void configureMessageConverters( List> converters ) { con

2015-10-08 23:59:52 2706

原创 Java类加载机制源码分析

Java代码首先要编译成class文件字节码,在运行时通过JIT(即时编译器)编译成本地机器码,最后由ClassLoader将其加载解析成Class对象到内存中。通过ClassLoader的loadClass方法的源码加深对Java类加载机制的理解。

2015-09-27 00:12:38 4461 1

原创 Spring实战——面向切面的Spring

面向切面是Spring又一大核心,本章我们就来详细了解下:面向切面编程的基本原理以及创建使用切面的常用方法,如何为POJO创建切面,使用@AspectJ注释,为AspectJ切面注入依赖。为什么要AOP:日志、安全和事物管理是软件中很重要的组成部分,但是如果每个应用对象都需要自己处理这些问题,不仅开发者会十分厌烦,而且也不利于维护、复用以及扩展。这些分布于应用多处的功能

2015-09-27 00:11:44 3518

原创 Java内部类小结

内部类:通俗的说就是定义在另一个类中的类,通过内部类,可以做到代码隐藏,内部类也可以和与外围类通信,有时,它可以让代码更优雅而清晰,本质作用:多重继承,信息隐藏,闭包回调,更加灵活适合应用控制框架;心得:1. 如果一个类实现了多个接口,不同的功能,那么通过内部类闭包的方式,可以返回给client不同接口的闭包,这样不同的client可以只获取对应功能的部分,这是一种安全

2015-09-27 00:07:46 1335

原创 Java web高级编程——Spring Framework

1. Spring Framework的主要功能:(1)反转控制和依赖注入;(2)面向切面的编程;(3)数据访问和事务管理;(4)应用程序消息(订阅-发布模式/观察者模式);(5)web应用程序MVC模式;2. 使用Spring的原因:(1)逻辑代码分组:避免了servlet中doGet/doPost中大量的分支和转发逻辑,或者定

2015-09-27 00:04:45 2786

原创 Java web高级编程——Spring MVC

1. @ RequestMapping:使用RequestMapping特性缩小请求匹配范围:方法的特性会继承类@RequestMapping特性;1.1 特性:(1)「URL限制」:可以在中间使用多个通配符;通过在类上添加URL,来减少冗余;匹配多个URL映射是,最具体的映射胜出;可以将多个URL映射到指定的

2015-09-26 00:57:20 2229

原创 Java并发知识点总结(上)

系统的总结Java并发的基础知识。希望对大家有所帮助~

2015-09-23 22:24:09 1346

原创 Android--带位置提示的轮播控件

实际效果图:该自定义控件继承FrameLayout, 包含一个ViewPager和横向排列的LinearLayout。后者用于包含显示表示轮播位置的点集,使用ViewPager的好处在于可以灵活的定义item的内容,而不仅仅是图片。为了便于使用,通过自定义属性的方式定义了所须的运行参数:

2015-05-16 00:17:36 2768

原创 每日随笔131117

1. 字符串判null与判空的顺序:细节问题,在判断条件上判null应该放在前面(短路求值~);2. Mysql是不能再update(包括insert等中直接连接或嵌套查询自身的):一个简单的例子,在一个根据order_value值降序管理界面记录列表中上移和下移功能的实现:使用Mybatis框架,具体语句: update lectures as q1 join lectur

2013-11-17 19:52:06 776

原创 倒排索引及布尔查询的处理算法

1 词项-文档关联矩阵:在构建倒排索引之前,一个在大规模文档集中进行查找的方法是建立词项-文档关联矩阵,行为每个词项对应的文档向量,而列为每个文档对应的此项向量。根据布尔检索式,进行向量间的位运算(与、或、取反)等得到检索结果。但是这种矩阵在大规模文档条件下,是十分稀疏的,这样造成了极大的空间浪费,在词典空间很大的情况下,每篇文档如果平均包含1000个词,有50万的词项,即使这个文档对应的词项

2013-11-15 01:14:17 4133 2

原创 关于String替换操作的一点笔记

最近项目需要抓取学校百合的一些热点信息,免不了频繁使用正则和String的一些替换操作,遇到了一些问题,值得小记一下。下面是一个操作的片段Pattern textareaContent = Pattern.compile("(?s)((.*?)");Matcher contentMatcher = textareaContent.matcher(resultHTML); S

2013-11-09 18:19:20 5138

原创 Java网络编程简记

Java中提供了socket套接字机制以及UDP、TCP两种通信协议的编程类。利用它们可以实现基于UDP和TCP的端到端的网络通信。为应用程序提供网络通信功能。学计算机网络时,大致学过Berkeley套接字的机制,拥有一系列的操作原语,从建立连接(SOCKET)到释放(CLOSE),socket的最大好处就在于它能够让网络通信变得如打电话一样简单,只需要知道标示就可以建立通信,而不用去关心具体

2013-04-27 22:42:47 862

原创 主要Swing组件小结(一)

窗口类JFrame:setTitle();设置窗口标题;setBounds();位置及大小;setDefaultCloseOperation();设置窗体关闭按钮事件:JFrame.[EXIT_ON_CLOSE | DO_NOTHING_ON_CLOSE | DISPOSE_ON_CLOSE | HIDE_ON_CLOSE];getContentPane();获得子组件JRootP

2013-03-29 14:36:41 933

转载 SQL查询语句大全

SQL查询语句大全 语句             功能 1、数据操作 Select      --从数据库表中检索数据行和列 Insert      --向数据库表添加新数据行 Delete      --从数据库表中删除数据行 Update      --更新数据库表中的数据 2、数据定义 Create TABLE   --创建一个

2013-03-20 20:07:35 895

支持向量机导论(中文).pdf

支持向量机导论(中文).pdf 高清质保

2014-01-09

动态代理/获取代理IP工具

智能导入文本IP:可以从任意文本文件中解析出IP 智能导网页IP:可以从任意网址网页中解析出IP 智能搜捕IP:自动从搜索引擎搜捕海量IP 智能绿色IP代理软件 简单点击立即生效

2014-01-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除