自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

痕泽的专栏

雾重烟清,不见来时伴

  • 博客(37)
  • 收藏
  • 关注

原创 Effective Java——序列化

目录七十四、谨慎地实现Serializable接口七十五、考虑使用自定义的序列化形式七十六、保护性的编写readObject方法七十四、谨慎地实现Serializable接口        将一个对象编码成一个字节流称作对象序列化,相反的处理即从字节流编码中重新构建对象称作反序列化。实现Serializable接口而付出的最大代价是,一旦一个类被发布,就大大降低

2015-06-25 20:13:30 477

原创 tomcat源码学习

本文仅为自己学习tomcat7源码过程中理解的一些笔记,并不是详细分析,仅供参考读源码时首先要大致理解各个核心模块之间的关系,核心架构如下图,一图胜千言下面是tomcat的运行流程的概括,需要编译tomcat源码后debug一步步配合源码来看。org.apache.catalina.startup.Bootstrap是tomcat的启动类,里面的main方法是整

2015-06-25 11:07:29 637

转载 Digester解析xml文件

最近在看tomcat的源码,其使用Digester解析xml文件,看到一篇好文章,转载记录下来一般用来读取xml文件的工具包有DOM、SAX和JDOM等,但用过的人都知道,它们属于比较底层的API,写起来代码量很大,而且如果修改了xml文件的格式,代码也要做大幅度的改动。而使用Apache Jakarta的Digester,解析XML文件非常方便且不需要过多的关心底层的具体解析过程。Dig

2015-06-24 10:20:38 910

原创 Effective Java——并发

目录六十六、同步访问共享的可变数据六十七、避免过度同步六十八、executor和task优先于线程六十九、并发工具优先于wait和notify七十、线程安全性的文档化七十一、慎用延迟初始化七十二、不要依赖于线程调度器七十三、避免使用线程组六十六、同步访问共享的可变数据        在Java中很多时候都是通过synchronized关键字来实现

2015-06-04 16:10:31 539

原创 Effective Java——异常

目录五十七、只针对异常情况才使用异常五十八、对可恢复的情况使用受检异常,对编程错误使用运行时异常五十九、避免不必要的使用受检异常六十、优先使用标准异常六十一、抛出与抽象相对应的异常六十二、每个方法抛出的异常都要有文档六十三、在细节中包含能捕获失败的信息六十四、努力使失败保持原子性六十五、不要忽略异常五十七、只针对异常情况才使用异常     

2015-05-27 22:11:01 440

原创 Effective Java——通用程序设计(下)

目录五十一、当心字符串连接的性能五十二、通过接口引用对象五十三、接口优先于反射机制五十四、谨慎地使用本地方法五十五、谨慎地进行优化五十六、遵守普遍接受的命名惯例五十一、当心字符串连接的性能        字符串连接操作(+)是把多个字符串合并为一个字符串的最为便利的途径。因此如果仅仅是对两个较小字符串进行一次连接并输出连接结果,这样是比较合适的。然而如果

2015-05-26 21:21:51 557

原创 Effective Java——通用程序设计(上)

目录四十五、将局部变量的作用域最小化四十六、for-each循环优先于传统的for循环四十七、了解和使用类库四十八、如果需要精确的答案,请避免使用float和double四十九、基本类型优先于装箱基本类型五十、如果其他类型更适合,则尽量避免使用字符串四十五、将局部变量的作用域最小化        要使局部变量的作用域最小化,最有力的实践就是在第一次使用它

2015-05-25 21:30:55 456

原创 Effective Java——方法

目录三十八、检查参数的有效性三十九、必要时进行保护性拷贝四十、谨慎设计方法签名四十一:慎用重载四十二、慎用可变参数四十三、返回零长度的数组或者集合,而不是null四十四、为所有导出的API元素编写文档注释三十、用enum代替int常量        绝大多数方法和构造器对于传递给它们的参数值都会有些限制。比如,索引值必须大于等于0,且不能超过其最大值

2015-05-20 20:42:22 759

原创 struts2文件下载的中文名解决方案

找了很多资料,最后从论坛上找到的解决方案,这里贴一下几处关键代码 application/octet-stream;charset=ISO8859-1 //注意这里的charset要写 attachment;filename="${fileName}" downloadFile 如果要通过url传递要下载的文件名,则要将要下载

2015-04-01 21:55:45 1958

原创 struts2的token拦截器的原理及作用

众所周知struts2有着自己的token拦截器,主要是用于防止用户进行表单的重复提交的。但是一直没搞明白两个问题:token拦截器实现的原理是如何的?哪些action需要使用token拦截器去防止其重复提交?下面根据自己最近的学习给出一个自己的经验。        首先,实现token拦截器基本需要两步:        1、在jsp的form表单任何地方中加一句,这个标签的作用是

2015-04-01 20:54:54 7664 3

原创 记人生中愉快的第一次面试——阿里支付宝电话面

首先不得不感叹一下支付宝内推的效率,昨天才提交的简历,今天就进行了电话一面。        谁能想到下午由于有事已经拒绝了两次26888888的来电了0.0,正想着晚上该不会又来电话吧——事实证明支付宝研发小哥还是很有心的!        在小哥的来电又被两次天时地利人和所挂断之后,终于听到的小哥温柔而不失程序员本分的声音:你好,我是支付宝的张XX,网名XX(看起来好正规!),请问您是闻同

2015-03-11 20:59:27 9249 1

原创 Effective Java——枚举和注解

目录三十、用enum代替int常量三十一、用实例域代替序数三十二、用EnumSet代替位域三十三、用EnumMap代替序数索引三十四、用接口模拟可伸缩的枚举三十五、注解优先于命名模式三十六、坚持使用override注解三十七、用标记接口定义类型三十、用enum代替int常量        枚举类型是指由一组固定的常量组成合法值的类型,该特征是在J

2015-03-10 15:30:14 717

原创 Effective Java——泛型

目录二十三、请不要在新代码中使用原生态类型二十四、消除非受检警告二十五、列表优先于数组二十六、优先考虑泛型二十七、优先考虑泛型方法二十八、利用有限制通配符来提升API的灵活性二十九、优先考虑类型安全的异构容器二十三、请不要在新代码中使用原生态类型        声明中具有一个或者多个类型参数的类或者接口,就是泛型类或接口,如List,这其中E表示Li

2015-03-06 15:52:33 567

原创 Effective Java——类和接口(下)

目录十八、接口优先于抽象类十九、接口只用于定义类型二十、类层次优于标签类二十一、用函数对象表示策略二十二、优先考虑静态成员类十八、接口优先于抽象类        Java是不支持多重继承但是可以实现多个接口的,而这也恰恰成为了接口优于抽象类的一个重要因素。他们的主要差异如下:        1.现有的类可以很容易被更新,以实现新的接口。如果现存的类并不具备某

2015-02-25 13:49:09 485

原创 Effective Java——类和接口(上)

目录十三、使类和成员的可访问性最小化十四、在公有类中使用访问方法而非公有域十五、使可变性最小化toString十六、复合优先于继承十七、要么为继承而设计,并提供文档说明,要么就禁止继承十三、使类和成员的可访问性最小化        信息隐藏是软件程序设计的基本原则之一,面向对象又为这一设计原则提供了有力的支持和保障。这里我们简要列出几项受益于该原则的优势:

2015-02-13 20:25:54 502

原创 Effective Java——对象通用方法

目录八、覆盖equals时请遵守通用约定九、覆盖equals时总要覆盖hashCode十、始终要覆盖toString十一、谨慎地覆盖clone十二、考虑实现Comparable接口八、覆盖equals时请遵守通用约定    对于Object类中提供的equals方法在必要的时候是需要重载的,然而如果违背了一些通用的重载准则,将会给程序带来一些潜在的运行时

2015-02-05 13:59:29 508

原创 Effective Java——创建和销毁对象

一、考虑用静态工厂方法代替构造器  为了让客户端获取类的一个实例,除了使用公有的构造器,类还可以提供一个公有的静态工厂方法,下面这个方法将boolean基本类型值转换成Boolean对象引用:public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE;}  静态构造方法与

2015-02-01 13:05:24 538

原创 Java核心技术——多线程

一、启动线程1.Runnable接口是线程处理逻辑构件的接口,一个线程按照此接口调用其处理逻辑2.当Thread对象调用start方法后,首先创建一个新线程,然后在新线程中调用Runnable实现类的run方法执行线程处理逻辑3.直接调用run方法只会执行同一个线程的任务,不会启动新线程二、中断线程1.Thread对象的interrupt方法用来请求终止线程,首先向线程

2015-01-29 12:52:06 492

原创 Java核心技术——集合

一、集合接口1.集合类型都是泛型类,集合类的基本接口是Collection和Map2.Collection接口扩展了Iterable接口,对于标准类库中的任何集合都可以使用“for each”循环3.使用Iterator遍历集合时,调用remove之前必须先调用next4.AbstractCollection类实现在Collection接口,它将基础方法size和iterator抽

2015-01-26 10:20:00 710

原创 Java核心技术——泛型编程

一、泛型编程1.泛型类是具有一个或多个类型变量的类,通过定义类型变量的方式来指明是泛型类,类型变量使用大写形式,且比较短,一般用T、U、S表示2.可以定义带有类型参数的方法,泛型方法可以定义在普通类中,也可以定义在泛型类中3.调用泛型方法时,在方法名前的尖括号中放入具体类型,也可以不写,由编译器自行推断4.类型变量T最多只能继承一个类,可以继承多个接口5.如果T类型要调用com

2015-01-23 13:14:22 543

原创 Java核心技术——异常和调试

一、处理异常1.异常处理的两个目标:要么让应用回到安全的状态,并能让用户进行其他操作;要么让用户手动保存或者自动保存用户的所有工作,并顺利终止程序2.如果一个方法抛出异常,那么调用这个方法的代码也会从这一点终止正常执行而去寻找相应的处理器,如果有,则进入相应的处理器,如果没有,则向更高一层方法抛出这个异常,以此类推3.所有的异常都是由Throwable继承而来,下一层分解为Error和

2015-01-23 13:11:23 569

原创 Java核心技术——接口和内部类

一、接口1.接口不是类,是对类的一组需求描述2.接口可以定义常量(自动设置为public static final),不能含有实例域,也不能在接口中实现方法,因此可以将其看成没有实例域的抽象类3.使用sort方法对数组中的元素进行排序时要求数组中的元素是实现了Comparable接口的类,且元素间是可比较的4.接口不能用new实例化,但可以声明接口的变量,接口变量必须引用实现了接口

2015-01-23 10:04:53 453

原创 Java核心技术——继承和反射

一、超类和子类1.通过扩展超类定义子类时,仅需要指出子类与超类的不同之处。超类中放的是通用方法,子类中放的是特殊方法2.在子类中可以提供一个新的方法来覆盖超类中的方法3.子类中需要用到超类的私有域时,可以使用特定的关键字super.getXXX来获取4.在子类中可以增加域、增加方法或者覆盖超类的方法,绝不能删除继承的任何域和方法5.子类的构造器不能访问超类的私有域,必须利用su

2015-01-17 19:17:56 833

原创 Java核心技术——对象与类

一、类和对象的概述1.类之间的常见关系:依赖(“uses-a”):一个类的方法操纵另一个类的对象聚合(“has-a”):一个类的对象包含另一个类的对象继承(“is-a”):一个类继承了另一个类2.应该尽可能地将相互依赖的类减至最少,就是让类之间的耦合度最小3.一个对象变量并没有实际包含一个对象,而仅仅引用了一个对象。因此,Java对象之间的复制不能直接使用“=”,要使用cl

2015-01-17 11:47:28 484

原创 Java核心技术——基本结构

一、注释//:注释内容从//开始到本行结尾/*和*/:可以跨行注释,从/*开始,以*/结束(不能嵌套,即如果代码本身包含*/就不能用/*和*/将注释括起来)/**和*/:用来自动生成文档,可以跨行注释,从/**开始,以*/结束二、数据类型1.Java是一种强类型语言,有8种基本类型:  4种整型:int 4字节、short 2字节、long 8字节、byte 1字节

2015-01-15 11:12:37 497

原创 Java核心技术——编程环境

1.Java采用了这样的机制:Java源代码编译后生成的Bytecode形势的类文件不能直接在造作系统上执行,必须由Java虚拟机(JVM)来解释执行。  缺点:编译后的文件不能直接在CPU上执行,程序运行效率低。要运行Java则必须安装Java的运行环境(JRE),以便由JVM来解释执行Java程序。  优点:Java有良好的跨平台移植性,“一次编译,到处运行”。2.JDK安

2015-01-14 21:14:32 619

原创 Java笔记——IO流

一、文件的读写我

2014-10-20 16:04:46 378

转载 Java笔记——内部类

实例1:内部类的基本结构d

2014-10-19 21:09:55 383

转载 Java笔记——异常处理

异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通 过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错误条件。当条件生成时,错误将引发异常。Java异常类层次结构图:

2014-10-19 20:09:02 458

原创 Java笔记——接口

Java的接口的特点:1、

2014-10-19 19:11:19 449

转载 重叠I/O模型分析

一. 重叠模型的优点 1. 可以运行在支持Winsock2的所有Windows平台 ,而不像完成端口只是支持NT系统。 2. 比起阻塞、select、WSAAsyncSelect以及WSAEventSelect等模型,重叠I/O(Overlapped I/O)模型使应用程序能达到更佳的系统性能。 因为它和这4种模型不同的是,使用重叠模型的应用程序通知缓冲区收发系统直接使用数

2014-08-21 15:43:14 862

原创 C++实现FTP断点上传和下载思路

1、客户端上传文件给服务器

2014-08-19 15:04:24 3751

原创 ubuntu14.04下的java jdk和eclipse和C/C++ Development Tools的简单安装以及使用

环境:ubuntu14.04

2014-08-04 14:45:28 3210

转载 Vimium快捷键

j,:Scroll downk,:Scroll uph:Scroll leftl:Scroll rightgg:Scroll to the to

2014-07-12 16:51:43 628

转载 Qt下QString转char*

Qt下面,字符串都用QString,确实给开发者提供了方便,想想VC里面定义的各种变量类型,而且函数参数类型五花八门,经常需要今年新那个类型转换Qt再使用第三方开源库时,由于库的类型基本上都是标准的类型,字符串遇的多的就是Char*类型在Qt下怎样将QString转char*呢,需要用到QByteArray类,QByteArray类的说明详见Qt帮助文档。因为char*最后

2014-05-27 09:01:54 474

原创 C++关于文件输入输出的简单操作

#include #include #include using namespace std;//在文件中写入信息ofstream fout("file"); //或 ofstream fout; fout.open("file");string str = "写入信息";fout << str << endl;//从文件中读取信息ifstream fin("file");

2014-05-21 00:07:48 624

原创 QT初学笔记——多窗口之间的切换

仅用此博客记录本人在学习ge

2014-05-17 15:19:08 776

空空如也

空空如也

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

TA关注的人

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