- 博客(24)
- 资源 (4)
- 收藏
- 关注
转载 HTTPS
要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识。1. 大致了解几个基本术语(HTTPS、SSL、TLS)的含义2. 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接”)3. 大致了解加密算法的概念(尤其是“对称加密与非对称加密”的区别)4. 大致了解 CA 证书的用途考虑到很多技术菜鸟可能不了解上述背景,俺先用最简短的文字描述一下。如
2014-11-24 14:40:50 797
原创 ThreadLocal初识
初识ThreadLocal 一个例子引发的思考ThreadLocal 模式是解决并发数据共享的一个典型的方案,spring,struts等经典框架都有用到ThreadLocal 的场景。 在学习实验中写了下面一个例子: package a;public class TestLocal {public static ThreadLocal threadLocal
2014-11-04 16:05:53 437
转载 java中volatile关键字的使用与jvm内存
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。 synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上sy
2014-09-25 17:18:00 594
转载 JVM 内存管理
堆内存Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以
2014-08-01 14:47:17 435
转载 tomcat+apache集群
环境说明: 系统:windows xp 服务器:apache_2.2、mod_jk_2.2(插件和apache版本一致) 集群服务器:apache-tomcat6(分配在三台pc上) A、安装apache_2.2、apache-tomcat6 跳过:(注意:apache_2.2默认端口是80,如有其它程序占用
2014-07-26 11:00:24 369
转载 java单例双检法中双重检查锁定失败可能性
java单例双检法中双重检查锁定失败可能性 双重检查锁定在延迟初始化的单例模式中见得比较多(单例模式实现方式很多,这里为说明双重检查锁定问题,只选取这一种方式),先来看一个版本:public class Singleton { private static Singleton instance = null; pri
2014-07-21 10:39:19 692
转载 面向接口编程 java
我们在一般实现一个系统的时候,通常是将定义与实现合为一体,不加分离的,我认为最为理想的系统设计规范应是所有的定义与实现分离,尽管这可能对系统中的某些情况有点麻烦。在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通
2014-06-21 21:09:32 606
转载 java泛型
1. 什么是泛型?泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。可以在集合框架(Collection framework)中看到泛型的动机。例如,Map 类允许您向一个 Map 添加任意类
2014-06-18 12:32:25 601
转载 Java应用crash的可能原因-java_errorpid.log
Java的应用有时候会因为各种原因Crash,这时候会产生一个类似java_errorpid.log的错误日志。可以拿到了这个日志,怎样分析Crash的原因呢?下面我们来详细讨论如何分析java_errorpid.log的错误日志。一. 如何得到这个日志文件如果有一个严重的错误引起Java进程非正常退出,我们叫Crash,这时候会产生一个日志文件。缺省情况下,这个文件会
2014-06-11 10:42:19 921
转载 Apache Maven 入门篇(下)
第一篇文章大概的介绍了一下Apache Maven以及它的下载和安装,并且运行了一个简单的示例。那么在对maven有了一点接触后,接下去的一步是要了解maven的核心概念,这样才能在使用maven的时候游刃有余。接下来我们介绍下面这几个核心概念:POM (Project Object Model)Maven 插件Maven 生命周期Maven 依赖管理Maven 库POM (P
2014-06-08 09:35:17 483
转载 Apache Maven 入门篇 ( 上 )
写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这个想法。这个入门篇分上下两篇。本文着重动手,用 maven 来构建运行 hellow world 程序,体会一下不用任何 IDE ,只用 maven 是咋回事。然后下篇就讲解一下 maven 的核心概念。写这两篇文章特意回避了复杂的示例,也不使用 IDE ,目的是排除干扰,着重
2014-06-08 09:09:06 446
转载 JVM内存溢出
一、内存溢出类型1、java.lang.OutOfMemoryError: PermGen space JVM管理两种类型的内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它和堆不同,运行期内GC不会释放空间。如果web app用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小
2014-05-30 10:19:41 596
转载 JBPM安装
一、 工具下载jbpm下载地址 http://sourceforge.net/projects/jbpm/files/,下载后的文件为:jbpm-5.4.0.Final-installer-full.zip,解压后,..\jbpm-5.4.0.Final-installer-full\jbpm-installer\lib下的org.drools.updatesite-5.5.0.F
2014-04-13 00:43:59 596
原创 java代理模式浅识
代理模式是一种非常常用的设计模式,典型的比如,springAOP实现,hibernate的延迟加载.它的基本思想是:创建代理对象完成用户请求,屏蔽用户对真实对象的访问.这样一个很明显的意图是安全性的考虑.还有些场景比如:提高性能,将真实对象进行封装,从而达到延迟加载的目的. 下面我们通过一个事例来看看它是怎么来达到延迟加载,从而提高系统性能. 延迟加载的核心思想是;如果当前没有使用
2014-01-17 11:29:15 640
转载 兼容IE和firefox,获得上传文件绝对路径
firefox为了浏览器安全性,不能获得上传文件绝对路径。。document.getElementById('file').value获得的是文件名 在ie里获得的却是绝对路径 Java代码 function readFile(fileBrowser) { if (navigator.userAgent.indexOf("MSIE")
2014-01-09 17:22:01 4061
转载 java单例模式
为什么需要单例模式有时候我们需要使用一个实用类A,这个类A专门提供一些公共功能供别人调用,而本身并不会处理业务逻辑。由于类A会被许多类乃至线程调用,假设我们的程序非常庞大,在运行的过程中,会访问这个类A100次,为了调用类A的方法,需要先创建A的对象,A a = new A()。这种方法在对A的访问量较少的情况下没问题,但是像我们这种情况,就会创建100个类A的实例,这100个实例是要占用内存
2014-01-09 14:15:08 477
转载 java 自定义注解
Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在 java.lang.annotation 包中。1、元注解元注解是指注解的注解。包括 @Retention @Target @Document @Inherited四种。1.1、@Retention: 定义注解
2013-12-30 15:04:16 437
原创 java设计模式之观察者模式
观察者模式是一种很常用的设计模式之一,它是一种多对一的监督机制,即一个多个观察者可以注册到一个观察者.被观察者的状态改变将引发观察者相应的业务. 而现实中我们会碰到很多这样的情形,一个对象的业务引发依赖于另一个对象的状态改变,比如在一个订票系统中由需求决定,当我们对票价或名称进行调整时,对客户进行相应提示,而这时如果我们不用观察者模式,可能就需要创建线程来进行监控,这样就会增加系
2013-12-25 15:40:49 593
转载 抽象类与接口区别
abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很
2013-12-25 09:21:57 473
原创 java设计模式之装饰者模式
程序设计时,有一条重要的准则,就是合成/聚合复用,根据该原则的思想,代码复用应该尽可能使用委托,而少用继承.继承是一种紧密耦合的的类关系.任何父类的改动都会影响其子类,因而不利于系统维护.而委托是一种松散耦合,只要接口不变,委托类的改动,并不会改动其上层对象. 装饰着模式就充分利用了这一点,通过委托机制,复用系统的各个组件,可以将这些组建任意组合成所需的对象,而各个子功能模块被维护在相关的
2013-12-24 16:43:16 569
原创 设计模式-享元设计
享元模式,是常用的设计模式之一,它通过对面向对象程序设计中的粒度单位的管理,达到提高系统性能的目的.所以对享元模式的学习是很有必要的, 下面通过一个例子对享元模式谈谈本人对享元模式的理解. 假设有这样一个场景: 有一个共享的人事管理系统服务,被A,B,C,三个公司员工所共享.这三个公司享有自己独立的数据库.我们给每个员工的工资查询提供了接口,这时候为了提高系统性能就可
2013-12-20 13:40:10 435
原创 java多线程售票程序中synchronized用法反思
通过对以下两个例子,谈谈对synchronized的理解: 代码1:public class Ticket implements Runnable { private static int num=100; public static void main(String[] args) { Thread t1=new Thread(new Ticket(),
2013-12-05 13:10:18 706
原创 java排序算法
一·插入排序(将数组排序为非降序排列)。 基本思想:假如数组L[n]是一个组待排序数。在进行插入排序时把它分成两部分,L[0]开始为一部分,L[1]-L[n]为一部分。接下来,将L[1]与L[0]进行比对,如果L[1]>L[0],则将L[1]插入第一部分,并且排在L[0]后面,否则将L[1]与L[0]前面元素比较,直到有元素比L[1]小,则插入该比L[1]小的元素后面。以此类推,直到排序完这n
2013-07-28 20:48:28 440
转载 java异常处理
1 引言在JAVA语言出现以前,传统的异常处理方式多采用返回值来标识程序出现的异常情况,这种方式虽然为程序员所熟悉,但却有多个坏处。首先,一个API可以返回任意的返回值,而这些返回值本身并不能解释该返回值是否代表一个异常情况发生了和该异常的具体情况,需要调用API的程序自己判断并解释返回值的含义。其次,并没有一种机制来保证异常情况一定会得到处理,调用程序可以简单的忽略该返回值,需
2013-07-25 23:25:13 638
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人