- 博客(44)
- 资源 (2)
- 收藏
- 关注
转载 线程池java.util.concurrent.ThreadPoolExecutor总结
线程池java.util.concurrent.ThreadPoolExecutor总结博客分类: 多线程 线程池还具有提高系统性能的优点,因为创建线程和清除线程的开销比较大。 有两种不同类型的线程池:一是固定线程数量的线程池;二是可变数量的线程池。 对于固定数量的线程池,可以使用Executors的静态方法 new
2014-05-08 21:30:38
1369
转载 红黑树(红黑树研究记录-代码实现)
代码可以根据《红黑树研究记录-实例》那篇文章的图来验证main.cpp#include #include "RBTree.h"using namespace std;int main(int argc, char *argv[]){ int arr[20] = {12, 1, 9, 2, 0, 11, 7, 19, 4, 15, 18, 5, 14, 13, 1
2014-04-23 11:59:11
781
转载 红黑树(红黑树研究记录-实例)
插入过程插入顺序为:12 1 9 2 0 11 7 19 4 15 18 5 14 13 10 16 6 3 8 17插入节点12:为根节点 插入节点1:父节点为黑色,结束插入节点9:父节点为红色,叔父节点为黑色,LR,case2+case3插入节点2:父节点为红色,叔节点为红色,case1插入节点0:父节点为黑色,结束插入节点11:父节点为黑色,
2014-04-23 11:57:33
2090
转载 红黑树(红黑树研究记录-理论)
一、 什么是红黑树?红黑树,是二叉查找树的一种,相对于AVL树,通过放弃绝对的平衡而提高了插入的速度,它可以不要求节点的左右子树高度差小于2,但保证一颗子树的高度绝对小于另一颗子树高度的2倍。一棵拥有n个内部结点的红黑树的树高h红黑树性质:1. 每个结点或红或黑。2. 根结点为黑色。3. 每个叶结点(实际上就是NULL指针)都是黑色的。4. 如果一个结点是红色的
2014-04-23 11:55:55
814
转载 理解一般指针和指向指针的指针
理解一般指针和指向指针的指针在说指向指针的指针之前,不得不说指向变量的指针。先看如下示例:1. 指向整型指针先看如下示例: 1 #include iostream> 2 using namespace std; 3 4 int main() 5 { 6 int a = 5; 7 int * p =
2014-04-22 16:22:05
712
原创 linux 常用(一点点积累)
ubuntu 图形界面与终端界面切换图形界面->终端界面Ctrl+Alt+F1终端界面->图形界面Ctrl+Alt+F7ubuntu下c/c++开发环境配置1.安装build-essential,你可以在新立得搜索然后安装或者在终端里输入:sudo apt-get install build-essential2.在终端中输入 sudo apt-ge
2014-04-21 14:41:44
894
转载 c++ 基础 指针
这是一篇我所见过的关于指针的最好的入门级文章,它可使初学者在很短的时间内掌握复杂的指针操作。虽然,现在的Java、C#等语言已经取消了指针,但作为一个C++程序员,指针的直接操作内存,在数据操作方面有着速度快,节约内存等优点,仍是很多C++程序员的最爱。指针就像是一把良剑,就看你怎么去应用它! 什么是指针? 其实指针就像是其它变量一样,所不同的是一般的变量包含的是实际的真实的数据,而
2014-04-18 14:43:37
689
转载 银行家算法
银行家算法目的:避免死锁的产生。算法思想: 1、假分配检测:Request Request 2、安全序列检测算法 实例列举: 某系统有R1,R2,R3共3中资源,在T0时刻P0,P1,P2,P3和P4这5个进程对资源的占用和需求情况如下表1,此时系统的可用资源向量为(3,3,2)。试
2014-04-17 20:17:02
1569
原创 Java日期工具类
import java.text.DecimalFormat;import java.text.NumberFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.u
2014-04-16 16:45:53
794
转载 ECLIPSE java.lang.OutOfMemoryError: PermGen space 错误
ECLIPSE 最近一段时间经常报错,看了日志,有如下错误信息: Java代码 ENTRY org.eclipse.ui 4 0 2010-08-10 09:56:43.763 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed t
2014-04-16 13:13:13
937
原创 java 用户线程与守护线程
package util;import java.util.Scanner;import java.util.Timer;import java.util.TimerTask;public class TimerTest { public static void main(String []args){ Timer timer = new Timer(t
2014-04-14 11:09:01
945
转载 分布式缓存系统Memcached简介与实践
缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵活。此时Memcached或许是你想要的。Memcached是什么?Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少
2014-04-11 13:51:53
658
转载 TCP为何需要3次握手与4次挥手
为什么需要“三次握手” 在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。在另一部经典的《计算机网络》一书中讲“三次握手”的目的是为了解决“网络中存在延迟的重复分组”的问题。这两种不用的表述其实阐明的是同一个问题。 谢希仁版《计算机网络》中的例子是这样的,“已失效的连接请求
2014-04-11 11:40:02
810
转载 TCP协议三次握手过程分析
TCP协议三次握手过程分析TCP(Transmission Control Protocol) 传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(rese
2014-04-01 20:20:11
1228
转载 TCP的三次握手/四次挥手
大家对netstat -a命令很熟悉吧,但是,你有没有注意到STATE一栏呢,基本上显示着established,time_wait,close_wait等,这些到底是什么意思呢,在这篇文章,我将会详细的阐述。大家很明白TCP初始化连接三次握手吧:发SYN包,然后返回SYN/ACK包,再发ACK包,连接正式建立。但是这里有点出入,当请求者收到SYS /ACK包后,就开始建立连接了,而被
2014-04-01 20:19:01
996
原创 生产者-消费者问题
1.一个生产者,一个消费者,一个缓冲池emptySemaphore(空信号量),fullSemaphore(满信号量) buffer[](缓冲区);produce(){ wait(emptySemaphore); buffer 数量增加 signal(fullSemaphore);}customer(){ wait(ful
2014-04-01 19:11:11
1126
原创 读者-写者问题(多进程共享一个资源)
1.多个进程共享一个资源①读者优先读者:a.新读者进,无读、写者,新读者读b.新读者进,无写者,新读者读c.新读者进,有写者,新读者等待写者:a.新写者进,无写者,新写者写b.新写者进,有写者,新写者等待readCount:读进程数 readCountMutex:读进程数信号量(读进程互斥访问readCount)rwMutex:读写互斥信号量
2014-04-01 18:28:13
2338
转载 avl 树旋转
AVL樹旋轉圖解AVL樹是一顆平衡樹,其左右子樹的高度差不會超過一層。爲了保持這一性質,採用旋轉節點的方式來降低高度。如下圖,紅色表示新插入的節點,一共4种情況:左左:節點1插入到左子樹的左節點,導致節點5不平衡。實際上我們只需要關心節點1、3、5,根據二叉搜索樹的性質(左 右右:和左左類似,可以通過一次右旋來實現平衡,如下圖: 左右:這种
2014-04-01 09:39:27
903
转载 HashSet中equals()与hashCode()方法的重写
hashCode是散列码,用来快速查询用的 你看到的那一串的格式如下,比如一个String@4e57de "@ "前面的是你的类名,后面的就是散列码的16进制表示。hashCode的查询原理:先有很多个数组,然后你要往容器里面放东西,比如hashSet,如放一个String=“Hello”,那么计算机会先计算散列码,然后放入相应的数组中,数组的索引就是从散列吗计算来的,然后再装入数组里的容器里,比
2014-03-27 10:08:01
1137
转载 迭代(iteration)和递归
ImportNew注: 本文是ImportNew编译整理的Java面试题系列文章之一。你可以从这里查看全部的Java面试系列。Q.请写一段代码来计算给定文本内字符“A”的个数。分别用迭代和递归两种方式。A.假设给定文本为”AAA rating”。迭代方式就很直观,如下:123456789
2014-03-07 18:42:41
968
原创 java去哪儿笔试解决方案四
请使用自己实现的stack,实现一个整型表达式求值的函数,表示式支持的运算符有()*/+-具体说明如下1.*/优先级高于+-2.表达式中相同优先级的操作符自左向右计算3.函数输入字符串"1+(4-3)*5/5",函数返回结果为2使用api中stack将前缀转为后缀/** * 中缀表达式 转 后缀表达式 */import java.util.Arr
2014-03-07 14:57:58
1556
转载 java 中缀转后缀表达式(查阅别人资料后整理)
package calculator;/** * 中缀表达式 转 后缀表达式 */import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Stack;public class ExpressConvert {
2014-03-07 14:26:23
1013
原创 java final
final是最终的意思1.final修饰类被final修饰的类不能被继承,所以abstract 类不能被定义成final,因为abstract类的存在就是为了子类去实例化,抽象类不能被实例化2.final修饰的方法被final修饰的方法不能被重载,所以在抽象类中,是不能把抽象方法定义为final型但是在抽象类中非抽象方法可以被定义为final型例如:public
2014-03-07 14:18:59
1017
转载 高类聚与低耦合(初步认识)
低耦合和高内聚是我们所追求的,低耦合是指一个程序中各个模块之间的联系少和相互依赖程度低,一个模块实现具体实现一个功能,各个类之间联系越少,相互依赖程度越低、共用或者传输的参数越少,则它们之间的耦合度越低,这样如果改动了一个类中一部分内容,就不需用改动其它类的内容或者只需要改动很少的一部分。便于程序的修改和升级。高类聚是指一个模块内部各个元素之间关系紧密,争取用最少的元素和方法实现相应的功能
2014-03-07 14:07:00
4818
原创 HashMap 与 HashTable的区别
1.线程安全HashMap是线程不安全的,HashTable是线程安全的在多线程下使用HashTable不用考虑线程同步,而HashMap要进行线程同步处理,使用synchronized关键字当然Collections类(不能实例化,因为Collections类的构造方法是private的,对外部是不可见的)的静态方法Collections.synchronizedMap(new
2014-03-07 13:50:52
921
转载 进程的三种状态及转换
1.进程的三种基本状态 进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态。 就绪(Ready)状态 当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。 执行(Running)状态当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。 阻塞(Bloc
2014-03-06 21:46:39
1452
原创 去哪儿2014笔试三(java)
* 一个文件里有10万个随机正整数,按照以下规则能组合出一份新的数据 * A.如果当前数字能被3整除,那么它和文件中所有数字(包括自己)两两相加后生成一组数字替代自己的位置 * B.如果不能被3整除,则它只需要乘以二,生成一个数字替代自己的位置.例如:[3,7,6]会组合出[6,10,9,14,9,13,12] * 再如:[5,12,9,6,2]会组合出[10,17,24,21,18,
2014-03-05 15:23:38
1409
转载 Java实现基数排序
在众多的排序方法中基数排序比较特殊,它是一种不需要进行关键字之间比较的排序方法,利用多关键字的划分,逐渐将待排序列排好序。举个例子:现在有数组:278,109,63,930,589,184,505,269,8,83第一次根据各位数将数组划分为10个队列(当然其中的某些队列可能不含有元素)0:9301:2:3:63,834:184
2014-03-05 15:10:00
1058
原创 去哪儿笔试解决方案二(java)
已知字母序列【d, g, e, c, f, b, o, a】,请实现一个函数针对输入的一组字符串 input[] = {"bed", "dog", "dear", "eye"},按照字母顺序排序并打印。本例的输出顺序为:dear, dog, eye, bed。代码:class Test2{public char []chr={'d','g','e', 'c'
2014-03-05 13:55:21
1513
原创 去哪儿笔试解决方案
有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来。 这两个文件内容如下: context.txt “并不是每个人都需要$(qunar)自己的粮食,$(flight.1)每个人都需要做自己穿的$(flight.2),我们说着别人发明的$(hotel),使用别人发明的数学......我们一直在$(tuan)别人的成果。使用人类的已有经验和知识$(tr
2014-03-04 22:41:00
1283
转载 计算机网络 Tcp
TCP连接中的TIME_WAIT状态 一、TIME_WAIT状态的必要性上述四次握手描述的是客户段主动关闭,服务器被动关闭的流程,其一般过程如下:1、 客户端发送FIN报文段,进入FIN_WAIT_1状态。2、 服务器端收到FIN报文段,发送ACK表示确认,进入CLOSE_WAIT状态。3、 客户端收到FIN的确认报文段,进入FIN_WAIT_2状态。4、 服务
2014-03-04 13:14:29
1196
原创 java 传值与传引用
public class Test { String str = "goods";public void change(String str2){str2="goods";}public static void main(String args[]){ Test t = new Test();String str2 = "aaaa";t.change(str
2014-02-26 13:46:33
984
转载 Java的内存泄漏
Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或JVM的问题。其实,这种想法是不正确的,因为Java也存在内存泄露,但它的表现与C++不同。问题的提出Jav
2014-02-21 14:23:44
966
原创 jvm 内存管理(初见)
java内存泄露即是:对象可达,但是对象没有使用,gc不会回收该对象,但是对象又会占用内存,所以会造成内存不够,如果对象没有被引用,即对象没用,则会被gc在不定时间进行垃圾回收java jvm内存管理大概分为两种情况,1.有向图的方式进行内存管理(即对象是否可达)。大多数情况下通过main函数能够访问到对象即为有效对象,gc不会回收,如果不能访问到的对象,即会被gc回收。特点:效率
2014-02-21 14:21:27
881
转载 栈的java实现和栈的应用举例
[例子和习题出自数据结构(严蔚敏版), 本人使用java进行实现. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ]栈的实现栈是一种先进后出的数据结构, 首先定义了栈需要实现的接口:Java代码 public interface MyStack { /** * 判断栈是否为空 */
2014-02-20 16:49:48
860
原创 java 执行顺序
public class Test { 行1public static Test t = new Test("a"); 行2public int i = print(2);
2014-02-20 11:37:20
1018
原创 对集合进行排序
public class Test {public static void main(String []args){List list = new ArrayList();People p1 = new People("zs","32");People p2 = new People("ls","20");People p3 = new People("ww","22"
2014-02-18 19:18:28
907
原创 java return finally 问题
代码public class Test { static int printt(){int i = 1;try{return i;}finally{System.out.print(++i);}}public static void main(String []args){System.out.print(Test .printt());
2014-02-18 18:27:47
979
原创 get与post的区别
1.post比get安全性高post方式是把参数放到http 的header中,对用户不可见,get方式是将参数放到url中,对用户可见。2.post传递的数据量比get多post方式原则上不受数据量大小的限制,get方式最多只能传递2kb数据3.post方式效率没有get高选择:1.对安全性要求高,数据量大则选择post2.对效率要求高,比如查询选择get,数
2014-02-18 11:53:10
779
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅