模式定义:
模板方法模式在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
模板就是一个方法。更具体的说,这个方法将算法定义成一组步骤,其中的任何步骤都可以是抽象的,由子类实现。这可以确保算法的结果保持不变,同时由子类提供部分实现。
模式结构:
举例:
泡...
分类:
编程语言 时间:
2014-06-19 12:15:22
阅读次数:
287
public class City
{
String name;
int id;
static int idCounter = 0;
public City(String name)
{
this.name=name;
id = idCounter++;
}
}
import java.util.ArrayList;
public class Gr...
分类:
编程语言 时间:
2014-06-19 10:36:26
阅读次数:
196
Sublime 2 如何配置Java运行环境
第一步:配置JDK
之前玩过Java的都应该知道,在这里我就不赘述了。
第二步:创建runJava.bat 批处理文件
用记事本创建一个文件命名为runJava.bat
将下面的内容粘贴进记事本即可:
@ECHO OFF
cd %~dp1
ECHO Compiling %~nx1.......
IF EX...
分类:
编程语言 时间:
2014-06-16 12:20:32
阅读次数:
449
相对于使用进程实现并发,用线程的实现更加轻量。每个线程都是独立的逻辑流。线程是CPU上独立调度运行的最小单位,而进程是资源分配的单位。当然这是在微内核的操作系统上说的,简言之这种操作系统的内核是只提供最基本的OS服务,更多参看点击打开链接
每个线程有它自己的线程上下文,包括一个唯一的线程ID(linux上实现为unsigned long),栈,栈指针,程序计数器、通用目的寄存器和条件码,...
分类:
编程语言 时间:
2014-06-16 12:28:38
阅读次数:
296
Infinite Iterators:
Iterator
Arguments
Results
Example
count()
start, [step]
start, start+step, start+2*step, ...
count(10) --> 10 11 12 13 14 ...
cycle()
p
p0, p1, ......
分类:
编程语言 时间:
2014-06-19 11:14:58
阅读次数:
359
线性表、链表、哈希表是常用的数据结构,在进行Java开发时,SDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。
一、Collection接口
Collection是最基本的集合接口,一个Coll...
分类:
编程语言 时间:
2014-06-19 10:27:16
阅读次数:
307
总述:
每个正在操作系统上运行的应用程序都是一个进程,一个进程可以包括...
分类:
编程语言 时间:
2014-06-19 12:41:09
阅读次数:
327
进程线程分配方式
简述下常见的进程和线程分配方式:(好吧,我只是举几个例子作为笔记。。。并发的水太深了,不敢妄谈。。。)
1、进程线程预分配
简言之,当I/O开销大于计算开销且并发量较大时,为了节省每次都要创建和销毁进程和线程的开销。可以在请求到达前预先进行分配。
2、进程线程延迟分配
预分配节省了处理时的负担,但操作系统管理这些进程线程也会带来一定的开销。由此,有个折中的方法是,当某个...
分类:
编程语言 时间:
2014-06-16 11:45:38
阅读次数:
480
(一)
看下面这个例子:
class Date {
public:
Date(int month, int day, int year);
};
很有可能引起下面这两个错误:
(1)他们也许会以错误的次序传递参数,如:Date d(30, 3, 1995);
(2)他们可能传递一个无效的月份或天数,如:Date d(2, 30, 1995); 许多像这类客户端错误。...
分类:
编程语言 时间:
2014-06-19 09:50:17
阅读次数:
249
相信大家在.NET中处理大量数据的时候,不可避免的会用到线程。
那么线程的几个方法,大家应该都知道:
定义四个线程
ReceiveThread = new Thread(new ThreadStart(ReceiveFunc));
SaveThread = new Thread(new ThreadStart(SaveFunc));...
分类:
编程语言 时间:
2014-06-19 10:20:03
阅读次数:
251
??
第三节
动态内存分配new和delete
经过调试设置断点,发现new
函数其实还是调用的malloc函数。
第四节
引用
一个变量是可以有多个引用的,引用也是可以传递的。
常量是不能有引用的。
当引用作为函数的返回值时。如下的例子//
int
&add(int
&a,int
...
分类:
编程语言 时间:
2014-06-16 12:09:14
阅读次数:
296
有时我们需要将浮点数转化为字符,然后打印输出。 double num = 32.0100; 常见输出: 32.0100
但是,有时我们会有这样的需求:舍弃字符串最后多余的零,得到32.01。 我最近就遇到了这种需求,各处求解,最后通过网上案例的启发,想到了两种解决方案...
分类:
编程语言 时间:
2014-06-19 11:06:40
阅读次数:
361
一、WEB开发的简单理解
Web开发是一个指代网页或网站编写过程的广义术语。网页使用 HTML、CSS 和 JavaScript编写。这些页面可能是类似于文档的简单文本和图形。页面也可以是交互式的,或显示变化的信息。编写交互式服务器页面略微复杂一些,但 却可以实现更丰富的网站。如今的大多数页面都是交互式的,并提供了购物车、动态可视化甚至复杂的社交网络等现代在线服务。
...
分类:
编程语言 时间:
2014-06-16 11:41:28
阅读次数:
326
本文介绍两种主线程等待子线程的实现方式,以5个子线程来说明:
1、使用Thread的join()方法,join()方法会阻塞主线程继续向下执行。
2、使用java.util.concurrent中的CountDownLatch,是一个倒数计数器。初始化时先设置一个倒数计数初始值,每调用一次countDown()方法,倒数值减一,他的await()方法会阻塞当前进程,直到倒数至0。
join方...
分类:
编程语言 时间:
2014-06-19 11:29:16
阅读次数:
262
C++中, 一个参数的构造函数,承担了两个角色。 一个是个构造器 ,一个是个默认且隐含的类型转换操作符。例如 A = a这样的代码, 且恰好a的类型正好是A单参数构造器的参数类型, 这时候编译器就自动调用这个构造器, 创建一个A的对象。这样看起来很酷, 很方便。 但在某些情况下, 却违背了我们的本意。 这时候就要在这个构造器前面加上explicit修饰, 指定这个构造器只能被明确的调用...
分类:
编程语言 时间:
2014-06-16 12:43:04
阅读次数:
217
IT人习惯把具体的事物加工成的形状一致的类,正是这样的一致,加上合适的规范,才能彰显对象筋道的牙感和bean清香的味道。Spring比谁都清楚OO的奥妙,让组件之间的依赖关系由容器在运行时期决定,称作依赖注入(Dependency Injection)。...
分类:
编程语言 时间:
2014-06-19 11:03:35
阅读次数:
402
1、字符串不变性下面这张图展示了这段代码做了什么12String s = "abcd";s =
s.concat("ef");2、equals()方法、hashCode()方法的区别HashCode被设计用来提高性能。equals()方法与hashCode()方法的区别在于:如果两个对象相等(equ...
分类:
编程语言 时间:
2014-06-13 14:45:01
阅读次数:
233