关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。 于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可...
FileChannel类中有一方法transferFrom()可以方便完成文件的复制。详细介绍请查JDK文档。 据JDk文档上介绍说:“与从源通道读取并将内容写入此通道的简单循环语句相比,此方法可能高效得多。”程序中如有用到文件复制的时候,用此方法试吧。try { // 获得源文件的通道 FileChannel srcChannel = new FileInputStream("srcFilename").getChannel(); // 获得目的文件通道 FileChannel dstChannel = new FileOutputStream("dstFil...
我们可以在字节缓冲区(ByteBuffer)上创建 视图 以支持其它基本数据类型的缓冲区(Buffer)。比如,可以在ByteBuffer对象上创建一个字符型视图,在对待ByteBuffer时就好像在对待存放了字符的缓冲区一样。字符缓冲区直接支持字符串。同样地,视图的hasRemaining()方法返回的是字符数。 在处理一个已指定类型的字节缓冲区的视图时,要特别注意视图是创建在字节缓冲区的position到limit间的字节之上的。也就是说,视图的capacity大小是(limit – position),且视图的limit会根据指定类型的类型长度(如int为4字节大小)而减小,以...
写字节: ByteBuffer 的capacity属性决定了它能容纳多少字节,这个属性不能改变。使用绝对put(int index, byte b)方法,可以改变ByteBuffer中任意位置的字节,下标index取值范围为【0,capacity-1】 ByteBuffer 中的字节数据也能通过相对put()方法来设置,该方法会用到缓冲区 position 和 limit 属性,即,该方法会改变缓冲区position处的字节,并把position值增加1。相对put(byte b)方法不能设置下标超过limit的字节数据(不管limit有没有小于capacity)。所以下面...
下面的例子演示了如何用 ByteBuffer(字节缓冲区)来存储字符。有时候程序可能会希望在将字符串存至文件时不用来回进行字符到字节间的(显式)转换。下面的例子首先在 ByteBuffer 上创建一个字符视图(即 CharBuffer ,字节缓冲区),CharBuffer中有用来提供读、写字符串的方法。 这个例子并没有将字符和字节进行转换。对于如何在字符和字节之间进行转换,后文将给出例子。// 获得一个ByteBuffer对象ByteBuffer buf = ByteBuffer.allocate(100);// 创建一个character ByteBufferCharBu...
文件锁定概述文件锁定初看起来可能让人迷惑。它 似乎 指的是防止程序或者用户访问特定文件。事实上,文件锁就像常规的 Java 对象锁 ― 它们是 劝告式的(advisory) 锁。它们不阻止任何形式的数据访问,相反,它们通过锁的共享和获取赖允许系统的不同部分相互协调。您可以锁定整个文件或者文件的一部分。如果您获取一个排它锁,那么其他人就不能获得同一个文件或者文件的一部分上的锁。如果您获得一个共享锁,那么其他人可以获得同一个文件或者文件一部分上的共享锁,但是不能获得排它锁。文件锁定并不总是出于保护数据的目的。例如,您可能临时锁定一个文件以保证特定的写操作成为原子的,而不会有其他程序的干扰。大...
关于内存映射文件 I/O 内存映射文件I/O 是一种读和写文件数据的方法,它可以比常规的基于流或者基于通道的 I/O 快得多。内存映射文件 I/O 是通过使文件中的数据神奇般地出现为内存数组的内容来完成的。这初听起来似乎不过就是将整个文件读到内存中,但是事实上并不是这样。一般来说,只有文件中实际读取或者写入的部分才会送入(或者 映射 )到内存中。内存映射并不真的神奇或者多么不寻常。现代操作系统一般根据需要将文件的部分映射为内存的部分,从而实现文件系统。Java 内存映射机制不过是在底层操作系统中可以采用这种机制时,提供了对该机制的访问。尽管创建内存映射文件相当简单,但是向它写入可能...
NIO , New IO,没有学过,好奇,就从外网上翻译了一些代码过来,希望以会用上吧。 一个 ByteBuffer 是一个有固定容量的存储了字节数值的缓冲区。下面的代码展示了创建ByteBuffer的一些方法。//使用字节数组创建 ByteBuffer byte[] bytes = new byte[10];ByteBuffer buf = ByteBuffer.wrap(bytes);// 创建一个容量为10个字节的非直接缓冲区// ByteBuffer的底层含有一个字节数组buf = ByteBuffer.allocate(10);//创建一个容量为10个字节的直接(内存映...
一个文件路径可能包含不必要的前缀,如 "." (表示当前目录)或者 ".." (表示当前目录的父目录),类File中的 getCanonicalFile()可以把文件路径规范为一个统一的形式以作比较。 假设当前工作目录在'c:\arron\',比较两个File实例是否指向同一个文件的代码如下 :File file1 = new File("./filename");File file2 = new File("filename");// 两个文件路径名不相等boolean b = file1.equals(file2); // false// 获得文件路径的...
对于让JFame窗口居中,我们可以自己写方法来处理,为了方便,我把代码封装在了一个方法里: public void moveToCenter(JFrame frame) { //先获得屏幕大小 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); double width = screenSize.getWidth();//屏幕宽 double height = screenSize.getHeight();//屏幕高 //设置f...
本文转载自:“http://blogs.oracle.com/Swing/entry/一般gui系统的三要素”,文章作者对Swing有着独到的开发经验和见解,如对JAVA GUI感兴趣,欢迎大家访问TA的新浪博客(http://blog.sina.com.cn/s/articlelist_1264601020_0_1.html) 使用和研究Swing已经很长时间了,随着对swing理解的加深,觉得自己对一般计算机GUI(图形用户界面, Graphical User Interface)系统的领悟也越来越多,甚至开始觉得自己理解了一些GUI系统的本质。曾在新浪的博客上写过一系列文章,...
要得到特定目录下特定格式的文件,我们可以通过实现java.io包中的FilenameFilter接口 来完成,API文档中对其介绍如下:
public interface FilenameFilter
Instances of classes that implement this interface are used to filter filenames. These instances are used to filter directory listings in the list method of class File, and by...
本文由尤慕翻译自http://onjava.com/pub/a/onjava/2003/02/05/decorator.html,原作者为Budi Kurniawan,转载请保留此条说明。《二》
下面的文段展示了装饰模式的两个实例。第1个例子中我们创建了BorderDecorator类,用来装饰一个JComponent组件,使其含有一个边框。当我们把一个用BorderDecorator类装饰过的JLabel添加进JFrame中时,它看起来和JBorderLabel例子中的实例一样;但是,我们不再需要创建子类。更好的是,你可以把所有Swing组件传递给BorderDecorato...
本文由尤慕翻译自http://onjava.com/pub/a/onjava/2003/02/05/decorator.html,原作者为Budi Kurniawan,转载请保留此条说明。《一》
Java程序员知道通过继承一个类可以改变或扩展这个类的表现或功能。我们把这叫“inheritance”(继承),它是面向对象编程的一个重要特性。例如,如果你需要一个绘有边框的Swing标签(Jlabel),你可以写一个javax.swing.JLabel的子类。可是通过写子类来满足需求并不总是合适。使用继承在有些时候是不现实的,这时你不得不寻求其它的方式,比如使用“Decorator pa...
对于配置jdk,只要把jdk的bin目录放在系统变量的path下就行了,当然你如果设置了JAVA_HOME,以后学tomcat时就不用再费事了。可是如何获得系统环境变量?比如获得path下的所有可执行程序的路径?下面的一段小代码想必能帮你解决:package arron.util;import java.io.BufferedInputStream;import java.io.IOException;public class GetSystemVar { public static void main(String[] args) throws IOException...
--大家光棍节快乐啊,这是我改的一首歌,呵呵你的脸有几分苦涩你的眼比小脸还涩你的唇把爱情面包挥霍我用去整夜的时间想分辨男光女光之间到底谁会好过多一点我宁愿受著你醒时决裂般脾气胜过你沉默无言无语其实我 想“脱光”偏偏天冷不能光夜深了 灯灭了一段感情要尽了女已走 男失落用心良苦谁懂得这颗心 在磨折劝自己别在固执了~>_<~+不要再固执了
所谓降序数,就是诸如9652、321、8531的数,它们的特点是各个位上的数按从左到右递减排列。
下面的小程序即用于判断一个整数(题中假设是正数)是否为降序数:
#include<stdio.h>#include<stdlib.h>int main() { int m[100], n, i, j; puts("请输入一个正整数:"); scanf("%d",&n);//为便于分析,假设n=321 for (i=0; n!=0 ; i++) ...
首先,作为一名黑客必须搞清楚黑客行为的目的,因为世界上充满着急待解决的迷人问题,黑客应该从解决问题的过程中获得快乐。而这是一种因为努力而得到成果所带来的快乐。除道义外,黑客也应该遵循一定的行为准则,下面是在世界范围内得到比较广泛认可的黑客行为准则:1、Never damage any system.This will only get you into trouble.不恶意破坏任何系统,这样只会带来麻烦。2、Never alter any of the system's files,except for those needed to insure that you are not ...
今天在百度知道上看到一网友问的一道C语言题,如下: 编写一个程序,输出从num开始的素数,其中num应由用户从键盘输入;
每次显示一行,每行显示8个素数;
每行后按任意键继续显示下一行,按ESC键则结束;程序界面友好;
求某数是否为素数请用一个独立的函数,
即该程序必须至少定义main()和求素数函数(函数名自定),主函数中调用求素数函数。 如果回答后被采纳,奖励分为10分,我心动了,开始写ING…… 最终代码如下:#include<stdio.h>#include<stdlib.h>#include<math.h>#include<conio.h>#define ESC 27...
想必学过C语言的侠们都自己动手写过一些字符串操作相关的函数,如strcpy,strcat,strcmp and so on! 现在试着按如下要求写strlen的个人版本,要求: 1)、函数以字符串为参数, 2)、返回该字符串的长度, 3)、不能在函数内部定义任何变量。(想出来了就对照一下吧,底下就是:) 参考函数:int strLen(char* str){ if(*str=='\0') return 0; return strLen(str+1)+1;}