自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(36)
  • 收藏
  • 关注

原创 memcache环境搭建

1、下载memcache,安装好memcache.exe -d install、并启动该服务2、下载php_memcache.dll3、将php_memcache.dll复制到php安装目录下的exts文件夹下4、在php.ini配置文件的扩展的结尾处(即一大堆.dll文件结尾处)加上这句extension=php_memcache.dll5、保存配置文件,重启Apache6、

2014-07-23 20:16:21 285

原创 php中搭建memcache环境

1、下载memcache2、下载php

2014-07-23 20:07:04 72

原创 Redis安装方法(小白专用)

之前就听说了Redis这个东东,一直都感觉不明觉厉,

2014-07-02 16:28:37 334

原创 用于同步并发程序的高级工具类

1、资源并发访问的控制:new samephore(1)_samephore.acquire()_samephore.release()2、等待多个并发事件的完成:new countdownLatch(1)_countdown.await()_countdwon.countDown()3、并发多阶段任务的运行:new phare(1)_phare.arriveAndAwaitAdvance

2014-07-01 18:15:48 306

原创 part-1.线程管理

part-1内容包括:·线程的创建和运行·线程信息的获取和设置·

2014-06-30 19:50:08 249

原创 MySQL(阶段二)

第二阶段入门掌握下面这几点

2014-06-28 18:29:26 282

原创 图文并茂,快速复习NIO

·Channel和Buffer的关系·

2014-06-20 16:48:22 306

原创 练手AIO

异步accept:·server.accept(null,new AcceptCompletionHandler());·public void completed(AsynchronousSocketChannel result, Object attachment) { try { //使用系统回调的AsynchronousSocketChannel ,这里用它读

2014-06-18 20:45:16 321

原创 Java NIO系列实用教程目录索引

为了对NIO可以温故而知新,

2014-06-18 20:00:50 313

转载 【Java TCP/IP Socket】UDP Socket(含代码)

UDP的Java支持    UDP协议提供的服务不同于TCP协议的端到端服务,它是面向非连接的,属不可靠协议,UDP套接字在使用前不需要进行连接。实际上,UDP协议只实现了两个功能:    1)在IP协议的基础上添加了端口;    2)对传输过程中可能产生的数据错误进行了检测,并抛弃已经损坏的数据。    Java通过DatagramPacket类和Da

2014-06-16 22:26:27 313

转载 【Java TCP/IP Socket】Java NIO Socket VS 标准IO Socket

简介    Java  NIO从JDK1.4引入,它提供了与标准IO完全不同的工作方式。NIO包(java.nio.*)引入了四个关键的抽象数据类型,它们共同解决传统的I/O类中的一些问题。    1、 Buffer:它是包含数据且用于读写的线形表结构。其中还提供了一个特殊类用于内存映射文件的I/O操作。    2、 Charset:它提供Unicode字符串影射到字节序列

2014-06-16 22:25:25 249

转载 【Java TCP/IP Socket】基于NIO的TCP通信(含代码)

NIO主要原理及使用    NIO采取通道(Channel)和缓冲区(Buffer)来传输和保存数据,它是非阻塞式的I/O,即在等待连接、读写数据(这些都是在一线程以客户端的程序中会阻塞线程的操作)的时候,程序也可以做其他事情,以实现线程的异步操作。   考虑一个即时消息服务器,可能有上千个客户端同时连接到服务器,但是在任何时刻只有非常少量的消息需要读取和分发(如果采用线程池或者一

2014-06-16 22:24:06 410

原创 (十一) Pipe

Java NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。这里是Pipe原理的图示:创建管道通过Pipe.open()方法打开管道。例如:1Pipe pipe = Pipe.open();向管道

2014-06-16 21:43:57 268

原创 (十) Java NIO DatagramChannel

Java NIO中的DatagramChannel是一个能收发UDP包的通道。因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入。它发送和接收的是数据包。打开 DatagramChannel下面是 DatagramChannel 的打开方式:1DatagramChannel channel = DatagramChan

2014-06-16 21:42:44 268

原创 (九) ServerSocketChannel

Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的ServerSocket一样。ServerSocketChannel类在 java.nio.channels包中。这里有个例子:01ServerSocketChannel serverSocketChannel = Serv

2014-06-16 21:41:46 265

原创 (七) FileChannel

Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。打开FileChannel在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或RandomAcc

2014-06-16 21:40:19 295

原创 (五) 通道之间的数据传输

在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(译者注:channel中文常译作通道)传输到另外一个channel。transferFrom()FileChannel的transferFrom()方法可以将数据从源通道传输到FileChannel中(译者注:这个方法在JDK文档中的解释为将字节从给定的可读取字节通道传输到此

2014-06-16 21:38:33 301

原创 (二)Java NIO Channel

Java NIO的通道类似流,但又有些不同:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。通道可以异步地读写。通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道。如下图所示:Channel的实现这些是Java NIO中最重要的通道的实现:

2014-06-16 20:46:28 266

原创 (一)Java NIO概述

Java NIO 由以下几个核心部分组成:ChannelsBuffersSelectors虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和FileLock,只不过是与三个核心组件共同使用的工具类。因此,在概述中我将集中在这三个组件上。其它组件会在单独的章节中讲到。

2014-06-16 20:25:02 261

转载 【Java TCP/IP Socket】TCP Socket(含代码)

TCP的Java支持     协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构、交换方式、包含的意义以及怎样对报文所包含的信息进行解析,TCP/IP协议族有IP协议、TCP协议和UDP协议。现在TCP/IP协议族中的主要socket类型为流套接字(使用TCP协议)和数据报套接字(使用UDP协议)。    TCP协议提供面向连接的服务,通过它建立的是可靠地连接。Jav

2014-06-16 20:01:07 251

原创 在NIO中如何循环将Channel的数据写到Buffer中??

下面这个例子用FileChannel作为IO操作者(当然你也可以用SocketChannel)

2014-06-16 19:53:36 287

原创 JAVA泛型通配符的小小难点

通配符捕获清单 3 展示了一些似乎应该 可以工作的代码,但实际上不能。它包含一个泛型 Box、提取它的值并试图将值放回同一个Box。清单 3. 一旦将值从 box 中取出,则不能将其放回public void rebox(Box box) { box.put(box.get());}Rebox.java:8: put(capture#337 of ?) i

2014-04-09 17:07:07 328

原创 二项堆

二项堆[编辑]在计算机科学中,二项堆(binomial heap)是一种类似于二叉堆的堆结构。与二叉堆相比,其优势是可以快速合并两个堆,因此它属于可合并堆(mergeable heap)抽象数据类型的一种。目录  [隐藏] 1 二项树2 二项堆3 二项堆的操作3.1 合并3.2 插入3.3 查找最小关键字所在结点3.4 删除最小关键字所在

2013-12-17 12:48:05 453

转载 BM

这篇长文历时近两天终于完成了,前些天帮伯乐在线翻译一篇文章《为什么GNU grep如此之快?》,里面提及到grep速度快的一个重要原因是使用了Boyer-Moore算法作为字符串搜索算法,兴趣之下就想了解这个算法,发现这个算法一开始还挺难理解的,也许是我理解能力不是很好吧,花了小半天才看懂,看懂了过后就想分享下,因为觉得这个算法真的挺不错的,以前一直以为字符串搜索算法中KMP算很不错的了,没想到还

2013-12-13 19:54:23 388

原创 由A*解决八数码问题像想到的一点关于搜索算法的感悟

关于A*算法的内容请看这个包你看懂的教程(只要你有耐心): 点击打开链接关于八数码问题请看:点击打开链接其实,看完这个A*算法的教程,你肯定知道怎么用A*算法去解决路径是否存在,若存在最短路径是多少这类的问题。但是,遇到八数码问题时,估计还是觉得它跟A*算法没什么关系啊。(至少我这个死菜鸟是这样觉得的......)有这样的疑问,很可能是心中有以下几个问题:1、第一个链接的A*算法跟第二

2013-12-08 17:48:38 611

原创 关于如何写分治法程序和递归程序

分治法:递归划分子问题,再处理。递归:将重复操作部分写成调用自身,精髓在于调用自身时形参的变化!

2013-12-07 14:57:46 435

转载 杨氏矩阵

杨氏矩阵 Young Tableau前几天算法课上老师提到了一个数据结构--Young Tableau,只是简单的提了一下,没有仔细的讲解,于是自己在网上搜集了一些资料,并且加以研究,感觉杨氏矩阵(Young Tableau)是一个很奇妙的数据结构,他类似于堆的结构,又类似于BST的结构,对于查找某些元素,它优于堆;对于插入、删除它比BST更方便。首先介绍一下这个数据结构的定义,Young

2013-12-05 16:58:35 335

转载 Treap

Treap编辑目 录1介绍2操作2.1 插入2.2 删除1介绍我们可以看到,如果一个二叉排序树节点插入的顺序是随机的,这样我们得到的二叉排序树大多数情况下是平衡的,即使存在一些极端情况,但是这种情况发生的概率很小,所以我们可以这样建立一颗二叉排序树,而不必要像AVL那样旋转,可以

2013-11-24 19:43:41 377

原创 BTS

站在巨人的肩板上,自己不像样的乱涂乱画:

2013-11-24 17:36:42 381

原创 全域hash && 完美hash

关于全域hash:其中,p为足够大的质数(如101)、m可以是关键字的个数、a是随机数,范围是[0~p-1],即有p-1个a可选、b也是随机数,范围是[0~p],即有p个b可选。===================================================================================================

2013-11-23 21:27:17 662

原创 利用主方法来快速判断递归式的复杂度

T(n) = aT(n/b)+h(n)a >=1 ; b >1 ; h(n) : 不参与递归的复杂度函数判断n^log b (a)与h(n)的大小关系= Θ(h(n)) :该方法的复杂度为   Θ(h(n)*lg(n))> Θ(h(n)) :该方法的复杂度为   Θ(n^(logb a))这样可以帮助你快速的分析出你得算法的复杂度是否符合要求。

2013-11-22 15:56:59 477

原创 二叉排序树转双向链表

利用中序遍历来完成二叉排序树转双向链表:站在巨人的肩膀上,自己做的一点总结

2013-11-21 21:48:27 524

原创 由前序序列和中序序列来重构二叉树

#include#includestruct BinaryTreeNode{ int m_nValue ; BinaryTreeNode* m_pLeft ; BinaryTreeNode* m_pRight ;} ;BinaryTreeNode* Construct(int* preorder,int* inorder,int length) ;BinaryTree

2013-11-21 20:38:04 452

原创 Trie-tree

字典树的一个小应用:题目是这样的,有一个文件,里面有很多的单词(非常多!)每个单词之间由空格隔开。现在问你,如何在这个文件中确定是否有{"hello","good","world"}这三个单词的最小序列(注意,这三个单词的顺序无关重要)。(PS:每个节点代表一个状态,红色节点代表查找某个单词成功啦!)

2013-11-20 22:12:03 592

转载 堆排序

堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总

2013-11-17 11:30:00 568

原创 基数排序

基数排序有2中方式,最高位优先(MSD)和最低位优先(LSD)。下面以LSD为例。个人总结的基数排序的算法思想如下:基数排序维护一个队列,因为该队列是以最低位为基数来保存各个元素的,所以,我姑且叫它为基数队列(~~)。基数列的大小与待排的数组的大小相同。首先从最低位开始,扫描待排数组,每遍历完一次就完成一次基数队列的建立。再用基数队列来更新原数组。循环此过程,循环的次数取决于原数组中最

2013-11-17 11:25:43 584

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除