1 import java.util.*; 2 import java.io.*; 3 import java.nio.file.*; 4 import java.lang.StringBuilder; 5 6 class FilePrep { 7 public static void ...
分类:
编程语言 时间:
2015-07-05 13:44:23
阅读次数:
128
dawn的协程库,使用的是kilim,不过已经远非kilim的原有代码,主要保留了协程的两个基本原语,再往上层,已经全部被替换了。
协程库,我学习过boost asio中的协程,也在我的机器上测试过单纯上下文切换的速度。这个速度在不同的机器之间没有可比性,因为彼此的cpu可能不同。但是在同一台机器上的不同库的对比,具有一定的参照性。
我记得,当时asio协程单线程情况下,协程切...
分类:
其他好文 时间:
2015-07-03 22:05:51
阅读次数:
240
为了学习unicode的utf-8和utf-16编码,写了如下程序进行学习。 import?java.nio.charset.Charset;
public?class?MyStudy?{
????
????public?static?String?field?=?"%-20s";
????
????...
分类:
其他好文 时间:
2015-07-02 15:56:42
阅读次数:
123
HTTP协议的下层使用的是tcp,所以我们建立一个tcp连接就能发送接收http请求。dawn底层使用了nio,但是经过dawn的封装之后,我们在编写代码的时候,就和使用普通的阻塞式socket一样
,不需要关注nio的api。可以把我们的精力放在业务逻辑的处理上。举例如下,下例的功能就是取回baidu首页:
package zhmt.dawn.nio;
import java.nio....
分类:
Web程序 时间:
2015-07-01 07:31:12
阅读次数:
145
原文地址:http://tutorials.jenkov.com/java-nio/nio-vs-io.html作者:Jakob Jenkov 译者:郭蕾 校对:方腾飞当学习了Java NIO和IO的API后,一个问题马上涌入脑海:我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析....
分类:
编程语言 时间:
2015-07-01 00:49:30
阅读次数:
243
在网络编程中,buffer是用来把应用程序的数据发送到网络上的中转站,它的重要行不言而喻。提到buffer就不能不说零拷贝什么的,buffer的内存管理什么的,在dawn中,基于directbuffer重新实现了一个可以自动扩展的零拷贝buffer。它的原理就是一个内存块的链表,数据都是在尾端添加,从头部移出,或者在中间获取、设置。所有的位置信息都是直接通过计算获取,所以,保证了各种情况的存取效率...
分类:
其他好文 时间:
2015-06-30 07:51:24
阅读次数:
120
在上篇文章中,我们设置好了开发环境,接下来,我们将在了解了Task以及Buffer之后,再开始了解网络编程。我们首先来看看Task
package zhmt.dawn;
import kilim.Pausable;
import kilim.Scheduler;
import kilim.Task;
//继承kilim.Task
public class HelloWorld ext...
分类:
其他好文 时间:
2015-06-28 11:19:24
阅读次数:
129
为什么dawn需要特殊的开发配置?
dawn使用的是kilim协程,在编码结束后需要进行代码织入。试想,如果每次写完程序,运行代码之前都手工运行一次织入程序,是多么蛋疼的一件事情。更糟糕的是,如果你没掌握织入的技巧,可能就失去了在eclipse调试java代码的机会,开发效率会大大降低。所以,我们可以编写一段ant脚本,让eclipse帮我们自动完成织入。
步骤
我们就拿dawn这个项目做为...
分类:
其他好文 时间:
2015-06-27 07:32:10
阅读次数:
206
1.dawn是单线程的:
为什么单线程?现实中很多程序都是单线程的,比如redis,memcache,nodejs,mmorpg服务器。。。。。。采用单线程有两大好处,首先,不需要使用锁,逻辑更容易理解,不易出错,其次,减少了切换线程时的调度成本。
2.什么是Task
dawn中使用了Task,这其实是kilim中的协程,协程最基本的功能是挂起和恢复,这点和线程是一致的。所有的Tas...
分类:
其他好文 时间:
2015-06-26 09:16:37
阅读次数:
119
JAVA类库中的NIO包相对于IO 包来说有一个新功能是内存映射文件,日常编程中并不是经常用到,但是在处理大文件时是比较理想的提高效率的手段。本文我主要想结合操作系统中(OS)相关方面的知识介绍一下原理。 在传统的文件IO操作中,我们都是调用操作系统提供的底层标准IO系统调用函数 read()、wr...
分类:
编程语言 时间:
2015-06-24 17:58:01
阅读次数:
161