- 浏览: 148084 次
- 性别:
- 来自: 北京
最新评论
-
august_000:
很有道理,我已经亲自测试过了:
public class ...
单例模式之线程安全解析 -
Chris_bing:
一个单例有这么多名堂,最后那个内部类的解决方案很有创意啊,受教 ...
单例模式之线程安全解析
文章列表
Java 提供了语言级别的线程支持,所以在 Java 中使用多线程相对于 C,C++ 来说更简单便捷,但本文并不是介绍如何在 Java 中使用多线程来来解决诸如 Web services, Number crunching 或者 I/O processing 之类的问题。
在本文中,我 ...
1.从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.
2.从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.
3.从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页 ...
同步的概念:同步分为同步方法和同步块两种方式。
锁定的内容分为锁定类的某个特定实例和锁定类对象(类的所有实例)
变量分为实例变量(不带static的变量)和类变量(带static的变量)
使用同步的原因
1、在系统中对访类要使用多线程进行访问;
2、在该类中有 类变量,或者是 在类的方法中有访问公共资源(如一个外部文件的读写)。
同步锁锁定的内容是什么?
无论你将Synchronized加在方法前还是加在一个变量前,其锁定的都是一个 类对象。每一个对象都只有一个锁与之相关联。
下例中分情况的列举各种情况下的同步效果
1、Synchronized 加在方法上,(同步方法,锁定类实例)
Java代码 ...
所谓守护线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因此,当所有的非守护线程结束时,程序也就终止了,同时会 ...
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Random;
import javax.imageio.ImageIO;
public final class CodeImageGenerator {
private final static int DEF_WIDTH = 60;
private final ...
java.util.Timer定时器,实际上是个线程,定时调度所拥有的TimerTasks。
一个TimerTask实际上就是一个拥有run方法的类,需要定时执行的代码放到run方法体内,TimerTask一般是以匿名类的方式创建。
java.util.Timer timer = new java.u ...
MySQL数据库存储引擎取决于MySQL在安装的时候是如何被编译的。
要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。如果技术高超,还可以使用MySQL++ API自己做一个引擎。下面介绍几种数据库引擎:
ISAM:ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到 数据库被查询的次数要远大于更新的次数。因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源。ISAM的两个主要不足之处在于,它不 支持事务处理, ...
简介
数据库范式在数据库设计中的地位一直很暧昧,教科书中对于数据库范式倒是都给出了学术性的定义,但实际应用中范式的应用却不甚乐观,这篇文章会用简单的语言和一个简单的数据库DEMO将一个不符合范式的数据库一步步从第一范式实现到第四范式。
范式的目标
应用数据库范式可以带来许多好处,但是最重要的好处归结为三点:
1.减少数据冗余(这是最主要的好处,其他好处都是由此而附带的)
2.消除异常(插入异常,更新异常,删除异常)
3.让数据组织的更加和谐…
但剑是双刃的,应用数据库范式同样也会带来弊端,这会在文章后面说到。
...
java.lang.String不可变的字符串,对String内容的改变都要重新申请内存。
java.lang.StringBuffer是线程安全的可变字符序列。可将StringBuffer安全地用于多个线程。
java.lang.StringBuilder是非线程安全的可变字符序列。多应用于单线程,将 String ...
笔记本ubuntu系统Java开发串口程序
一、 开发环境配置
由于笔记本没有串口,并且在ubuntu下没有虚拟串口软件(我没有找到~~~),所以需要用虚拟机安装ubuntu系统,我用的是VM ware 7.0,系统是ubuntu 11.04,当然宿主系统是XP SP3。
以 ...
设计模式主要分三个类型:创建型、结构型和行为型。
其中创建型有:
一、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点
二、Abstract Factory,抽象工厂:提供一个创建一系列相关或相 ...
问题:
求一个数字数组里的最大连续数字的个数。 比如 3, 4, 4, 4, 2, 2, 3, 4 => return 3。此题为google的面试题。
分析:
设置两个变量:全局最大连续数字个数:maxSucc; 以及局部连续数字个数: temp。从第二个数字开始,如果当前数字比前一个数字大1,则 temp++,遇到不满足条件的,则比较maxSucc 和 temp, 如果temp 比maxSucc 大,则更新maxSucc。
代码:
[java] view plaincopy
public static int maxSuccessive(int[] array) {
...
给一个方法,比如 rand5(), 它能够等概率生成 1-5 之间的整数。 所谓等概率就是1,2,3,4,5 生产的概率均为 0.2 。现在利用rand5(), 构造一个能够等概率生成 1- 7 的方法。
这里有两个特别重要的点,一是 如果 rand5() + rand5(), 我们能够产生一个均匀分布的 1 - 10 吗? 答案是否定的。比如对于 6来讲(4+2, 2+4, 3+3),它被生成的生成的概率比1 (1+0,0+1)要大.
第二个点就是我们不可能用rand5()直接产生 1- 7 的数,不管你用加减乘除都不行。
所以,我们要构造一个更大的范围,使得范围里每一个值被生成的概率是一样的 ...
讲解几个设计模式中的面向接口思想和基于.NET平台的分层架构中的面向接口思想,加深理解。
通过前面两篇,我想各位朋友对“面向接口编程”的思想有了一定认识,并通过第二篇的例子,获得了一定的直观印象。但 ...
来源:http://www.cnblogs.com/leoo2sk/archive/2008/04/11/1148236.html
这一篇将结合一个实例“移动存储设备模拟”来让大家对面向接口编程有个直观印象。
通过上一篇文章的讨论,我想各位朋友对“面接接口编程”有了一个大致的了 ...