- 浏览: 2616958 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (880)
- 每日总结 (26)
- java (37)
- lucene 2.4源码学习 (11)
- 庖丁分词的源码分析 (5)
- cindy源码阅读 (10)
- jetty (3)
- java基础 (49)
- hadoop (37)
- python (7)
- 那些蛋疼的事 (15)
- 测试 (5)
- spring (3)
- redis (4)
- git (4)
- 我的开源项目 (2)
- linux (15)
- mysql (8)
- bootsharp (1)
- idea (1)
- Disruptor源码分析 (11)
- 高并发 (22)
- jdk (4)
- 领域驱动 (1)
- 坑 (6)
- 表达式框架 (7)
- 游戏 (3)
- Guava (1)
- 缓存 (1)
- 数据库 (1)
- 游戏项目 (3)
- java8 (1)
最新评论
-
hsluoyz:
PyCasbin是一个用Python语言打造的轻量级开源访问控 ...
权限管理的一个简单后台 -
liuyachao111:
谢谢 问题解决了
对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾 -
jnjeC:
多谢博主分享,在配置文件里的&也要改成& ...
对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾 -
大维啊:
同志,你这不行啊!
java 的 AccessController.doPrivileged使用 -
lisha2009:
解决了我的问题,多谢博主分享!
对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾
println方法:
public void println(String x) { synchronized (this) { print(x); newLine(); } }
其实主要是调用了print方法:
public void print(String s) { if (s == null) { s = "null"; } write(s); }
private void write(String s) { try { synchronized (this) { ensureOpen(); textOut.write(s); textOut.flushBuffer(); charOut.flushBuffer(); if (autoFlush && (s.indexOf('\n') >= 0)) out.flush(); } } catch (InterruptedIOException x) { Thread.currentThread().interrupt(); } catch (IOException x) { trouble = true; } }
private OutputStreamWriter charOut;
public void write(String str) throws IOException { write(str, 0, str.length()); }
public void write(String str, int off, int len) throws IOException { synchronized (lock) { char cbuf[]; if (len <= writeBufferSize) { if (writeBuffer == null) { writeBuffer = new char[writeBufferSize]; } cbuf = writeBuffer; } else { // Don't permanently allocate very large buffers. cbuf = new char[len]; } str.getChars(off, (off + len), cbuf, 0); write(cbuf, 0, len); } }
public void write(char cbuf[], int off, int len) throws IOException { synchronized (lock) { ensureOpen(); if ((off < 0) || (off > cbuf.length) || (len < 0) || ((off + len) > cbuf.length) || ((off + len) < 0)) { throw new IndexOutOfBoundsException(); } else if (len == 0) { return; } if (len >= nChars) { /* If the request length exceeds the size of the output buffer, flush the buffer and then write the data directly. In this way buffered streams will cascade harmlessly. */ flushBuffer(); out.write(cbuf, off, len); return; } int b = off, t = off + len; while (b < t) { int d = min(nChars - nextChar, t - b); System.arraycopy(cbuf, b, cb, nextChar, d); b += d; nextChar += d; if (nextChar >= nChars) flushBuffer(); } } }
看到write里是用到flushBuffer的。
void flushBuffer() throws IOException { synchronized (lock) { ensureOpen(); if (nextChar == 0) return; out.write(cb, 0, nextChar); nextChar = 0; } }
可以看到BufferedWriter做的事情其实就是把一个string转为char数组,然后事情是由
private OutputStreamWriter charOut;来做的
在这里两者产生关联
private void init(OutputStreamWriter osw) { this.charOut = osw; this.textOut = new BufferedWriter(osw); }
charOut.flushBuffer();
void flushBuffer() throws IOException { se.flushBuffer(); }
public void flushBuffer() throws IOException { 102 synchronized (lock) { 103 if (isOpen()) 104 implFlushBuffer(); 105 else 106 throw new IOException("Stream closed"); 107 } 108 }
再往下就发现调用的是
out.write(bb.array(), bb.arrayOffset() + pos, rem);out是OutputStream
再然后就比较纠结了 唉 看代码这么累 后面的部分还是以后再去看了。
发表评论
-
超级简单的获取url内容的代码
2016-09-09 16:33 1588只是需要一行代码: String result = new S ... -
java的int和byte数组的相互转换
2015-01-15 16:31 2923byte数组转为int 有两种原理, 一种是先左移动24位,在 ... -
@RequestBody注解时 HttpClient 发送post的例子
2015-01-12 10:33 6773主要是这句: post.setRequestEntity(ne ... -
mvel表达式遇到的坑2 这个更坑
2015-01-09 17:53 6754之前写的一篇文章说的mvel遇到的坑 解决办法是*1.0,这次 ... -
利用javassist获取java的方法参数名
2014-03-22 20:53 6382import java.lang.reflect.Meth ... -
java利用linq4j实现linq
2014-01-13 20:58 10514public class Person implement ... -
访问类本身的私有变量,很不理解的地方
2013-09-30 17:50 1660网上看到这个文章,表示没理解.http://my.oschin ... -
java的DirectBuffer源码分析(主要是DirectBuffer的资源分配和回收)
2013-04-16 17:22 7440可以看到淘宝的一个说明:http://www.tbdata.o ... -
设置log4j的配置文件(里面有不少坑)
2013-04-12 15:59 2018log4j的默认配置文件是log4j.properties,加 ... -
庖丁分词的源码分析
2013-04-08 17:50 3119在网上也看到了不少庖 ... -
eclipse代码行数统计插件
2013-04-08 16:14 6049觉得不错的一个插件,把附件里的压缩文件,解压,放在eclips ... -
关于eclipse 找不到pom文件中的jar包的问题
2013-04-08 15:59 2276我从网上下载呢一个maven的项目,install也成功了,却 ... -
java的volatile与多线程
2013-02-21 16:37 2200Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员 ... -
分享视频网站的内容时 缩略图的生成
2013-02-03 09:32 1942分享视频网站的内容时 ,一般都有缩略图的生成,之前没怎么关心, ... -
Runtime.getRuntime().exec 杀人放火利器啊
2013-01-05 16:49 2286public static void main(String[ ... -
split的正则表达式
2012-12-24 14:44 1535我们很经常做得一个事情,一句话,按空格来切分 String s ... -
解决eclipse控制台中文乱码的问题
2012-12-20 14:48 3154二、配置java应用程序的控制台输出。 1.Run ... -
eclipse 重新关联源代码
2012-12-17 09:16 1697eclipse 重新关联源代码 可以右键工程属性 -- pr ... -
maven私服的400和401错误
2012-12-03 17:33 2858400错误是因为没有打开访问,改为下图这样 401错误是没 ... -
SQL_NO_CACHE不起作用,郁闷
2012-12-03 14:53 1799mysql设置了查询缓存,但是第二次的时候就是0秒了,用SQL ...
相关推荐
总结来说,Log4j提供了一套强大的日志管理框架,通过自定义Appender和PrintStream,我们可以轻松地将`System.out.println()`的输出整合到Log4j中,从而实现日志的集中管理和分析。这对于大型项目或者需要严格监控的...
我们从System的源码中可以了解到System是java中的一个自定义的类,位于java.lang包下面。 Out是System里面的一个静态成员,他是java.io.PrintStream类的引用。他是个不可更改的类方法。并且是通过Static修饰的。...
几个很小的socket程序(源码)给其中一个小例: package cn.com.socket; import java.io.*; import java.net.*; public class ServerSocketThread extends Thread{ private Socket socket; private ...
去年秋招面试我被问及,你如何理解System.out.println() ? 学了这么久的面向对象编程,那如何用一行代码体现呢? 如果你能自己读懂System.out.println(),就真正了解了Java面向对象编程的含义 面向对象编程即创建...
System.err.println("私钥签名——公钥验证签名"); // 产生签名 String sign = CertificateUtils.signToBase64(data.getBytes("utf-8"), keyStorePath, alias, password); System.out.println("私钥签名:" + ...
Java开发新猜数字小游戏,使用Git进行源码管理,使用单元测试工具JUnit对各个方法进行单元测试 public static void main(String[] args) { System.out.println("|----新猜数字游戏-----|"); while(true) { ...
在Java编程语言中,I/O(输入/...通过`BufferedReader`或`Scanner`,我们可以方便地从`System.in`读取数据,实现用户交互或在特定场景下从文件读取输入。理解并熟练掌握这一特性,对编写各种Java应用程序都至关重要。
System.out.println("******************欢 迎 使 用凯撒加密器******************"); Scanner input = new Scanner(System.in); System.out.print("\n请选择操作(1.加密,2.解密): "); int operator = ...
使用netbeans 开发 在Java中提供MD5加密 ... System.out.println(mad.toMd5("0.0")); System.out.println(mad.toMd5(0.0D)); System.out.println(mad.toMd5(0.0F)); System.out.println(mad.toMd5(1)); } }
System.out.println((f * b) + " + " + (i / c) + " - " + (d * s)); System.out.println("result = " + result); } } 《Java就业培训教程》P35源码 程序清单:TestScope.java public class TestScope { ...
System.out.println("对整数数组进行组合:C(n,n)"); int[] intArray=new int[4]; for(int i=0;i<intArray.length;i++){ intArray[i]=i+1; } System.out.println("对整数数组进行组合:C(4,4)"); ...
System.out.println("**********"); System.out.println("查书请按\t1"); System.out.println("删除请按\t2"); System.out.println("退出请按\t3"); System.out.println("**********"); int m = ...
System.out.println(dbmd.getDatabaseProductName()); //获取数据库名称 System.out.println(dbmd.getDatabaseProductVersion()); //获取数据库版本号 System.out.println(dbmd.getDriverName()); //获取...
System.out.println(dbmd.getDatabaseProductName()); //获取数据库名称 System.out.println(dbmd.getDatabaseProductVersion()); //获取数据库版本号 System.out.println(dbmd.getDriverName()); //获取JDBC...
System.out.println("Welcome to the Address Book System!"); System.out.println("1. Add a contact"); System.out.println("2. Delete a contact"); System.out.println("3. Find a contact"); System.out....
使用java语言实现MD5的加密算法 测试通过 public static void main(String args[]) { MD5 md5 = new MD5(); if (Array.getLength(args) == 0) { System.out.println("MD5 Test suite:"); System.out....
带源码的音乐搜索APIjar包,一导入。 将这些jar包导入工程即可,使用方法如下 package music_basic; import java.util.List; import org.apache.commons.lang.StringUtils; import music.MusicBasic; import ...
System.out.println("Hello, World!"); } } * `public class HelloWorld`:这是一个类的声明,类名必须与文件名相同。 * `public static void main(String[] args)`:这是程序的入口点,它是一个特殊的方法,在...
System.out.println("请猜一下电脑随机生成的数字为(0-9)"); person = in.nextInt(); if (person ) { System.out.println("猜小了!在" + person + "至8之间"); } else if (person > computer) { ...
System.out.println("proxy server OK"); while (true) { Socket s=ss.accept(); process p=new process(s); Thread t=new Thread(p); t.start(); } } catch (Exception e) { System.out.println(e); } ...