可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程。这样的组织结构有些类似于树的形式,如图所示。
线程组的作用是,可以批量的管理线程或线程组对象,有效地对线程或线程组对象进行组织。
1、线程对象关联线程组:1级关联
所谓的1级关联就是父对象中有子对象,但并不创建子孙对象。这种情况经常出现在开发中,比如创建一些线程时,为了有效地...
分类:
编程语言 时间:
2016-05-12 22:00:18
阅读次数:
239
模板与泛型编程
--一个泛型句柄类
引言:
【小心地雷】
这个例子体现了C++相当复杂的语言应用,理解它需要很好地理解继承和模板。在熟悉了这些特性之后再研究这个例子也许会帮助。另一方面,这个例子还能很好地测试你对这些特性的理解程度。
前面示例的Sales_item和Query两个类的使用计数的实现是相同的。这类问题非常适合于泛型编程:可...
分类:
编程语言 时间:
2016-05-12 22:01:13
阅读次数:
256
模板与泛型编程
--模板编译模型
引言:
当编译器看到模板定义的时候,它不立即产生代码。只有在用到模板时,如果调用了函数模板或定义了模板的对象的时候,编译器才产生特定类型的模板实例。
一般而言,当调用函数时[不是模板],编译器只需看到函数的声明。类似的,定义类类型的对象时,类定义必须可用,但成员函数的定义不是必须存在的。因此,应该将类定义和函数声明放在头文件中,而普通函数和...
分类:
编程语言 时间:
2016-05-12 22:00:51
阅读次数:
185
模板与泛型编程
--模板定义[续]
四、模板类型形参
类型形参由关键字class或 typename后接说明符构成。在模板形参表中,这两个关键字具有相同的含义,都指出后面所接的名字表示一个类型。
模板类型形参可作为类型说明符在模板中的任何地方,与内置类型说明符或类类型说明符的使用方式完全相同。具体而言,它可以用于指定返回类型或函数形参类型,以及在函数体中用于变量声明或强制类...
分类:
编程语言 时间:
2016-05-12 21:58:10
阅读次数:
229
数组中出现次数超过数组长度一半的 数字题目描述:
给定 一个数组,找到数组中出现次数超过数组长度一半的数字,如数组 a[]= {0,1,2,1,1},输出为1
分析:
1,可以使用伴随数组b,遍历数组a,将值作为数组b的下标,将次数作为值,然后遍历数组b,找到次数超过一半的值,然后输出。时间复杂度为O(N),不过要增加空间复杂度。
2,我们可以先对数组进行排序,因为某个数字出现次数超过一半,...
分类:
编程语言 时间:
2016-05-12 21:58:20
阅读次数:
203
模板与泛型编程
--类模板成员
引言:
这一节我们介绍怎样实现前面提到的Queue模板类。
标准库将queue实现为其他容器之上的适配器。为了强调在使用低级数据结构中设计的编程要点,我们将Queue实现为链表。实际上,在我们的实现中使用标准库可能是个更好的决定!!-_-。
1、Queue的实现策略
如图所示,我们实现两个类:
1)Queue...
分类:
编程语言 时间:
2016-05-12 21:58:03
阅读次数:
285
模板与泛型编程
--实例化
引言:
模板是一个蓝图,它本身不是类或函数。编译器使用模板产生指定的类或函数的特定版本。产生模板的特定类型实例的过程称为实例化。
模板在使用时将进行实例化,类模板在引用实际模板类型时实例化,函数模板在调用它或用它对函数指针进行初始化或赋值时实例化。
1、类的实例化
当编写Queueqi时,编译器自动创建...
分类:
编程语言 时间:
2016-05-12 21:57:37
阅读次数:
302
public boolean equals(Object o) {
if (o == this)
return true;
if (!(o instanceof List))
return false;
ListIterator e1 = listIterator();
...
分类:
编程语言 时间:
2016-05-12 21:58:34
阅读次数:
187
springMVC实现多文件上传的方式有两种,一种是我们经常使用的以字节流的方式进行文件上传,另外一种是使用springMVC包装好的解析器进行上传。这两种方式对于实现多文件上传效率上却有着很大的差距,下面我们通过实例来看一下这两种方式的实现方式,同时比较一下在效率上到底存在着多大的差距。
1.下载相关jar包。需要引入的jar出了springMVC的jar包外,还需要引入com.sprin...
分类:
编程语言 时间:
2016-05-12 21:57:16
阅读次数:
346
模板与泛型编程
--模板特化
引言:
我们并不总是能够写出对所有可能被实例化的类型都最合适的模板。某些情况下,通用模板定义对于某个类型可能是完全错误的,通用模板定义也许不能编译或者做错误的事情;另外一些情况下,可以利用关于类型的一些特殊知识,编写比从模板实例化来的函数更有效率的函数。
compare函数和 Queue类都是这一问题的好例子:与C风格字符串一起...
分类:
编程语言 时间:
2016-05-12 21:57:56
阅读次数:
246
封装排序二叉树&随机数生成(c++11)本文,我尝试着把排序二叉树封装为一个模板类,并且用C++11给出的随机数生成函数来对这个类进行测试。排序二叉树封装
这个二叉树的特征是,左子数的值肯定比父节点小,右子树的值肯定比父节点的大。要求大家按照这个结构特征去构建二叉树,最后中序遍历输出就是我们要求的升序输出。
我们可以根据具体的要求来完成对排序二叉树的构建,可以用一个bool函数来区别不同排序顺序...
分类:
编程语言 时间:
2016-05-12 21:56:30
阅读次数:
493
package io;
//: io/BufferToText.java
//Converting text to and from ByteBuffers
import java.nio.*;
import java.nio.channels.*;
import java.nio.charset.*;
import java.io.*;
/*
* 转换数据:
* 缓冲器容纳的是普通的字节,为...
分类:
编程语言 时间:
2016-05-12 21:53:37
阅读次数:
280
java中有8中基本的数据类型,这八种基本的数据类型都有对应的封装类型,下面是对应关系:int——Integerfloat——Floatdouble——Doublebyte——Bytelong——Longchar——Characterboolean——Booleanshort——Short基本数据类型和它对应的封装类型之间可以相互转换,从基本数据类型到封装类型叫做装箱,从封装类型到基本数据类型叫拆箱...
分类:
编程语言 时间:
2016-05-12 21:55:23
阅读次数:
327
1.可变参数方法与数组参数方法重载
public class MethodParams{
//带可变参数的方法
public void hello(String ...params) {
System.out.println("执行带可变参数的方法,参数个数为:" + params.length);
}
//带数组参数的方法
public void hello(String[] params) ...
分类:
编程语言 时间:
2016-05-12 21:54:54
阅读次数:
288
题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减序列的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
输入描述
一个非递减序列的一个旋转数组
输出描述
输出旋转数组的最小元素
题目分析
原数组最小的值必然是第一个,旋转后数组是...
分类:
编程语言 时间:
2016-05-12 21:52:12
阅读次数:
117
JVM内存由几个部分组成:堆、方法区、栈、程序计数器、本地方法栈
JVM垃圾回收仅针对公共内存区域,即:堆和方法区进行,因为只有这两个区域在运行时才能知道需要创建些对象,其内存分配和回收都是动态的。
一、垃圾回收策略
1.1分代管理
将堆和方法区按照对象不同年龄进行分代:
(Young Generation and Old Gene...
分类:
编程语言 时间:
2016-05-12 21:51:40
阅读次数:
256
题目:合并两个递增排序链表,使新链表仍然按照递增排序。
方法一:
基于递归的方法,链表first和链表second各有m和n个结点,新链表的头结点为两个链表中头结点较小
的一个,当找到该头结点时(假设为first的头结点),仍需对first的m-1个结点和second的n个结点合并。
可以看出,子问题和原问题相同,因此可以利用递归解决。
代码如下:
/**
* Definit...
分类:
编程语言 时间:
2016-05-12 21:51:18
阅读次数:
173