随笔分类 - java
摘要:今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题。为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用。呵呵注意:要先导入javamail的mail.jar包。以下三段代码是我的全部代码,朋友们如果想用,直接复制即可。第一个类:MailSenderInfo.java 1 package com.util.mail; 2 3 import java.util.Properties; 4 5 /** 6 * 发送邮件需要使用的基本信息 7 */ 8 public class MailSenderInfo { 9 10 ...
阅读全文
摘要:要在文本框中显示控制台输出,我们必须用某种方法“截取”控制台流。换句话说,我们要有一种高效地读取写入到System.out和 System.err 所有内容的方法。如果你熟悉Java的管道流PipedInputStream和PipedOutputStream,就会相信我们已经拥有最有效的工 具。写入到PipedOutputStream输出流的数据可以从对应的PipedInputStream输入流读取。Java的管道流极大地方便了我们截取控制台输出。Listing 1显示了一种非常简单的截取控制台输出方案。【Listing 1:用管道流截取控制台输出】PipedInputStream piped
阅读全文
摘要:1. 缓冲流java IO通过缓冲流来提高读写效率,普通的字节、字符流都是一个字节一个字符这样读取的,而缓冲流则是将数据先缓冲起来,然后一起写入或者读取出来。经常使用的是readLine()方法,表示一次读取一行数据。Java代码: 1 package com.io; 2 3 4 import java.io.BufferedInputStream; 5 import java.io.BufferedOutputStream; 6 import java.io.File; 7 import java.io.Fi...
阅读全文
摘要:一、通过BufferedReader和BufferedWriter来读写文件 使用缓冲流的好处是,能够更高效的读写信息,原理是将数据先缓冲起来,然后一起写入或者读取出来。经常使用的是readLine()方法,表示一次读取一行数据。 1 package org.example.io; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.File; 6 import java.io.FileNotFoundException; 7 import java.io.FileRead..
阅读全文
摘要:向文件尾加入内容有多种方法,常见的方法有两种:RandomAccessFile类可以实现随机访问文件的功能,可以以读写方式打开文件夹的输出流public void seek(long pos)可以将读写指针移到文件尾,参数Pos表示从文件开头以字节为单位测量的偏移位置,在该位置文件指针。public void write(int pos)将数据写到读写指针后面,完成文件的追加。参数pos表示要写入的Byte通过FileWrite打开文件输出流,构造FileWrite时指定写入模式,是一个布尔量,为真时表示写入的内容添加到已有文件的内容的后面,为假时表示重新写文件,以前的记录被清空,默认的值为假
阅读全文
摘要:Java流操作有关的类或接口:Java流类图结构:流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。IO流的分类根据处理数据类型的不同分为:字符流和字节流根据数据流向不同分为:输入流和输出流字符流和字节流字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别:读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。处理对象
阅读全文
摘要:Reference: 《创建Java线程池》[1],《Java线程:新特征-线程池》[2], 《Java线程池学习》[3],《线程池ThreadPoolExecutor使用简介》[4],《Java5中的线程池实例讲解》[5],《ThreadPoolExecutor使用和思考》[6][1]中博主自己通过ThreadGroup实现一个线程池(挺方便理解的),使用的是jdk1.4版本,Jdk1.5版本以上提供了现成的线程池。[2]中介绍了java.util.concurrent.Executors类的API。[3]中介绍了Java中线程池的类体系结构。[4]中有ThreadPoolExecutor的
阅读全文
摘要:这几天主要是狂看源程序,在弥补了一些以前知识空白的同时,也学会了不少新的知识(比如 NIO),或者称为新技术吧。线程池就是其中之一,一提到线程,我们会想到以前《操作系统》的生产者与消费者,信号量,同步控制等等。一提到池,我们会想到数据库连接池,但是线程池又如何呢?建议:在阅读本文前,先理一理同步的知识,特别是syncronized同步关键字的用法。关于我对同步的认识,要缘于大三年的一本书,书名好像是 Java 实战,这本书写得实在太妙了,真正的从理论到实践,从截图分析到.class字节码分析。哇,我想市场上很难买到这么精致的书了。作为一个Java爱好者,我觉得绝对值得一读。我对此书印象最深之一
阅读全文
摘要:线程 Thread 类,和 Runable 接口 比较两者的特点和应用领域.可以,直接继承线程Thread类。该方法编写简单,可以直接操作线程,适用于单重继承情况,因而不能在继承其他类实现Runnable接口。当一个线程已继承了另一个类时,就只能用实现Runnable接口的方法来创建线程,且便于保持程序风格的一致性。我们知道,一个具有生命的线程,具有下面五种状态:创建状态使用new运算符创建一个线程后,该线程仅仅是一个空对象,系统没有分配资源,称该线程处于创建状态(new thread)可运行状态使用start()方法启动一个线程后,系统为该线程分配了除CPU外的所需资源,使该线程处于可运行状
阅读全文
摘要:因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”。它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法总而言之,它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法回答补充:写这个方法的用途就是为了方便操作,所以在文件操作里面可用可不用例子1:public class Orc{ public static class A { public String toS...
阅读全文
摘要:1 /*@author shijin 2 * 生产者与消费者模型中,要保证以下几点: 3 * 1 同一时间内只能有一个生产者生产 生产方法加锁sychronized 4 * 2 同一时间内只能有一个消费者消费 消费方法加锁sychronized 5 * 3 生产者生产的同时消费者不能消费 生产方法加锁sychronized 6 * 4 消费者消费的同时生产者不能生产 消费方法加锁sychronized 7 * 5 共享空间空时消费者不能继续消费 消费前循环判断是否为空,空的话将该线程wait,释放锁允许其他同...
阅读全文
摘要:Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.util.List, java.util.Comparator) 第一个方法要求所排序的元素类必须实现java.lang.Comparable接口。第二个方法要求实现一个java.util.Comparator接口。 java.lang.Comparable接口和java.util.Comparator接口是Java对排序最提供最基本支持。这两个接口不但可以用于集合元素排序,还可以用于数组排序。 如果
阅读全文
摘要:对于多线程有了一点了解之后,那么来看看java.lang.concurrent包下面的一些东西。在此之前,我们运行一个线程都是显式调用了 Thread的start()方法。我们用concurrent下面的类来实现一下线程的运行,而且这将成为以后常用的方法或者实现思路。 看一个简单的例子:Java代码publicclassCacheThreadPool{publicstaticvoidmain(String[]args){ExecutorServiceexec=Executors.newCachedThreadPool();for(inti=0;ishutdownNow();booleanisS
阅读全文
摘要:ExecutorService 建立多线程的步骤:1。定义线程类class Handler implements Runnable{}2。建立ExecutorService线程池ExecutorService executorService = Executors.newCachedThreadPool();或者int cpuNums = Runtime.getRuntime().availableProcessors(); //获取当前系统的CPU 数目ExecutorService executorService =Executors.newFixedThreadPool(cpuNums
阅读全文
摘要:java.util.concurrent并发库是JDK1.5新增的,其作者是Doug Lea,此人是个BOSS级别的天才人物了.有了他提供的类库,使得我们对多线程并发、锁有了很大的帮助,减少了并发难度、并且相对应java本身的synchronized同步有了很大的性能提升.readLock、writeLock使得控制的力度更小、更精确。TimeUnit是一个枚举类型,可以将时间方便快捷的转换为(天、时、分、秒、纳秒)day,hour,minute,second,millli...有了这个类我们可以方便将时间进行转换for example:1、我们将1个小时转换为多少分钟、多少秒1小时转换分钟数
阅读全文
摘要:Java数据库连接接口(JDBC)是Java里定义的一套用于数据库连接和操作的API的集合。有不同的数据库厂商提供这套接口的实现类,对于 Java程序员来说,程序员不需要关心数据库的底层的实现,统一的调用JDBC里面的抽象出来的API来完成数据库的访问功能,在Data access的功能和接口定义中,Java是在别的语言对数据库的URL的描述,其他的一切也就是通过统一的调用来实现了,本文章手机了主要的数据库厂商 提供的Driver和URL,以便大家方便的对各种数据库进行连接的操作。JDBC里统一的使用方法:Class.for(jdbcDriverName); Connectionconn=Dr
阅读全文
摘要:多态(Polymorphism)大家应该都不陌生,它是我们开发面向对象系统的“老朋友”了。但是老朋友也会有“烦心”的时候啊,呵呵。有时候 不注意,还真会被它难到。譬如下面这个例子(thankHayden)。大家可以先不看下面的答案,在自己脑海中运行一道,看看自己想的跟实际结果是否 相符。publicclassPolymorphism{publicstaticvoidmain(String[]args){Ab=newB();b.fb();}}classA{publicA(){}publicvoidfa(){System.out.println("CLASSA:FunctionfaRun
阅读全文
摘要:服务器端:ServerSocketDemo.javapackage com.tcp;import java.io.DataInputStream;import java.io.DataOutputStream;import java.net.ServerSocket;import java.net.Socket;public class ServerSocketDemo { /** * @param args */ public static void main(String[] args) { try { ServerSocket serverSocket = null; //创建...
阅读全文
摘要:该类可以通过new关键字创建其实例对象,其父类是抽象类Writer。简单实例:package com.FileInfo;import java.io.File;import java.io.FileReader;import java.io.FileWriter;public class FileWriteExample { /** * @param args */ public static void main(String[] args) { File file = new File("F://test2.txt"); //创建指定文件的File类型对象 try { i
阅读全文
摘要:该类可以通过new关键字创建其实例对象,该类的父类是抽象类Reader。简单实例:package com.FileInfo;import java.io.File;import java.io.FileReader;public class FileInAndOutChar { /** * @param args */ public static void main(String[] args) { //定义指定磁盘文件的File对象 File file = new File("F:/", "test.txt"); try { if (!file.exi
阅读全文

浙公网安备 33010602011771号