- 博客(19)
- 收藏
- 关注
转载 java NIO系列教程(十二)
转载自并发编程网 – ifeve.com本文链接地址: Java NIO系列教程(十二) Java NIO与IO当学习了Java NIO和IO的API后,一个问题马上涌入脑海:我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们如何影响您的代码设计。Java NIO和IO的主要区别下表总结了
2017-06-16 16:13:14
285
转载 java NIO系列教程(十一)
转载自并发编程网 – ifeve.com本文链接地址: Java NIO系列教程(十一) PipeJava NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。这里是Pipe原理的图示:创建管道通过Pipe.open()方法打开管道。例如:
2017-06-16 16:11:56
231
转载 java NIO系列教程(十)
转载自并发编程网 – ifeve.com本文链接地址: Java NIO系列教程(十) Java NIO DatagramChannelJava NIO中的DatagramChannel是一个能收发UDP包的通道。因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入。它发送和接收的是数据包。打开 DatagramChannel下面是 Datagra
2017-06-16 16:11:13
427
转载 java NIO系列教程(九)
转载自并发编程网 – ifeve.com本文链接地址: Java NIO系列教程(九) ServerSocketChannelJava NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的ServerSocket一样。ServerSocketChannel类在 java.nio.channels包中。这里有个例子
2017-06-16 16:10:39
290
转载 java NIO系列教程(八)
转载自并发编程网 – ifeve.com本文链接地址: Java NIO系列教程(八) SocketChannelJava NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel:打开一个SocketChannel并连接到互联网上的某台服务器。一个新连接到达ServerSocketChannel时,会创建一
2017-06-16 16:09:27
223
转载 java NIO系列教程(七)
转载自并发编程网 – ifeve.com本文链接地址: Java NIO系列教程(七) FileChannelJava NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。打开FileChannel在使用FileChannel之前,必须先打开它。但是,我
2017-06-16 16:08:35
280
转载 java NIO系列教程(六)
转载自并发编程网 – ifeve.com本文链接地址: Java NIO系列教程(六) SelectorSelector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。下面是本文所涉及到的主题列表:为什么使用Selector?Selecto
2017-06-16 16:06:15
247
转载 java NIO系列教程(五)
转载自并发编程网 – ifeve.com本文链接地址: Java NIO系列教程(五) 通道之间的数据传输在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(译者注:channel中文常译作通道)传输到另外一个channel。transferFrom()FileChannel的transferFrom()方法可
2017-06-16 16:05:17
173
转载 java NIO系列教程(四)
转载自并发编程网 – ifeve.com本文链接地址: Java NIO系列教程(四) Scatter/GatherJava NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道)中读取或者写入到Channel的操作。分散(scatter)从Channel中读取是指在读操作时将读取的数据写入
2017-06-16 16:03:48
203
转载 java NIO系列教程(三)
转载自并发编程网 – ifeve.com本文链接地址: Java NIO系列教程(三) BufferJava NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。下面是N
2017-06-16 15:57:50
225
转载 java NIO系列教程(二)
转载自并发编程网 – ifeve.com本文链接地址: Java NIO系列教程(二) ChannelJava NIO的通道类似流,但又有些不同:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。通道可以异步地读写。通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到
2017-06-16 15:56:40
194
转载 java NIO系列教程(一)
转载自并发编程网 – ifeve.com本文链接地址: Java NIO系列教程(一) Java NIO 概述Java NIO 由以下几个核心部分组成:ChannelsBuffersSelectors虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和FileLo
2017-06-16 15:54:46
201
原创 kmp算法 java实现
通常我们想在一个字符串中匹配一个子字符串,会遍历字符串,对于每一个字符,都遍历子字符串进行匹配,这样时间复杂度为O(nm);使用KMP算法只需先进行一个O(m)的预处理(生成next数组),就能将搜索的时间复杂度降低至O(n+m)。下面讲一讲KMP算法的实现原理。对于ABCDEABD...和ABCDEABC,当匹配至最后一位是发现不匹配,之前的ABCDEAB都是匹配的,这段字符串包
2017-06-16 10:30:08
214
转载 思考像微信QQ视频通话最小化后悬浮展现实现思路
原文地址:http://www.jianshu.com/p/988021487b5b公司做的IM软件基于webrtc实现了音视频通话功能基础功能,新需求是要求通话的同时也可以处理别的东西,即在通话页面点击最小化按钮后视频通话页面变成了一个不大的窗口悬浮在窗口上且是全局的,即使回到home页面依然存在;这种需求非常合理,符合大家一贯的使用习惯,体验性也很棒;刚拿到需求在技
2017-06-14 13:55:46
3554
原创 删除排序链表中重复的节点 递归方式
思路比较简单,直接看代码/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode deleteDuplicati
2017-06-13 22:39:27
526
原创 找到链表中环的入口节点 java
如果一个链表中有环,如何找到这个环的入口节点?可以自己在纸上画一画,定义一个快节点,一个慢节点;快节点每次走两步,慢节点每次走一步;如果有环,两个节点必将相遇,记录下相遇节点的位置;重新从头节点开始走,同时之前记录下的节点也开始走,直到两个节点相遇就是换的入口节点。/* public class ListNode { int val; ListNode next =
2017-06-13 21:42:57
318
原创 约瑟夫问题(约瑟夫环) java
n个人围成一圈,编号为0~n-1,从第0号开始,数到m-1,则去掉编号为m-1的人,然后按下一个人为0开始重新计数,直到最后只剩下一个人。初始状态为0,1,2,......,m-2,m-1,m,m+1,......,n-2,n-1当去掉m-1后状态为0,1,2,......,m-2,m,m+1,......,n-2,n-1将剩下的n-2个人重新编号m -------->
2017-06-13 16:12:39
1616
原创 找到数组中重复的数字
一个长度为n的数组中有重复的数字,有多少个重复的或者重复多少次都不清楚,每个数字的值在0~n-1之间,找出任意重复的数字。这个问题还是比较简单的,由于所有数字的值都在数组下标的范围内,所以遍历一遍数组,对于每个值,把相应下标的值加n,使其大于n-1,第二次访问到这个下标就能知道该值重复了。时间复杂度为O(n)。public class Solution { // Parameter
2017-06-12 19:43:00
185
原创 不使用+、-、*、/完成两个整数的相加
第一步:两个整数相异或,得到的是相加的位,如5-101与7-111,异或得到010,十进制是2,相当于个位的数值;第二部:两个整数相与,再左移一位,得到的是进位,101&111 = 101,左移一位是1010,相当于十进制的10;第三部:进位不为0,则重复上述操作。public class Solution { public int Add(int num1,int num2)
2017-06-12 19:07:12
376
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人