<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>邪恶的小星星 &#187; java</title>
	<atom:link href="http://www.xmxsuperstar.com/archives/tag/java/feed" rel="self" type="application/rss+xml" />
	<link>http://www.xmxsuperstar.com</link>
	<description>Just Another Thinking</description>
	<lastBuildDate>Sun, 04 Jul 2010 07:59:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Goodbye Sun</title>
		<link>http://www.xmxsuperstar.com/archives/508/goodbye-sun.html</link>
		<comments>http://www.xmxsuperstar.com/archives/508/goodbye-sun.html#comments</comments>
		<pubDate>Fri, 22 Jan 2010 10:11:27 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[ZZ]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[sun]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=508</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div id="attachment_509" class="wp-caption aligncenter" style="width: 490px"><a href="http://www.xmxsuperstar.com/wp-content/uploads/2010/01/SunRIP.jpg"><img class="size-full wp-image-509 " title="SunRIP" src="http://www.xmxsuperstar.com/wp-content/uploads/2010/01/SunRIP.jpg" alt="Goodbye Sun" width="480" height="376" /></a><p class="wp-caption-text">Goodbye Sun</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/508/goodbye-sun.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Log4j输出格式控制&#8211;log4j的PatternLayout参数含义</title>
		<link>http://www.xmxsuperstar.com/archives/468/log4j%e8%be%93%e5%87%ba%e6%a0%bc%e5%bc%8f%e6%8e%a7%e5%88%b6-log4j%e7%9a%84patternlayout%e5%8f%82%e6%95%b0%e5%90%ab%e4%b9%89.html</link>
		<comments>http://www.xmxsuperstar.com/archives/468/log4j%e8%be%93%e5%87%ba%e6%a0%bc%e5%bc%8f%e6%8e%a7%e5%88%b6-log4j%e7%9a%84patternlayout%e5%8f%82%e6%95%b0%e5%90%ab%e4%b9%89.html#comments</comments>
		<pubDate>Fri, 31 Jul 2009 02:40:01 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=468</guid>
		<description><![CDATA[转自：http://www.blogjava.net/Unmi/articles/124106.html 做项目被log4j的输出格式化参数搞烦了，索性把API的相关部分大致翻译一下，原文参见http://logging.apache.org/log4j/docs/api/org/apache/log4j/PatternLayout.html 参数 说明 例子 %c 列出logger名字空间的全称，如果加上{&#60;层数&#62;}表示列出从最内层算起的指定层数的名字空间 log4j配置文件参数举例 输出显示媒介 假设当前logger名字空间是&#8221;a.b.c&#8221; %c a.b.c %c{2} b.c %20c （若名字空间长度小于20，则左边用空格填充） %-20c （若名字空间长度小于20，则右边用空格填充） %.30c （若名字空间长度超过30，截去多余字符） %20.30c （若名字空间长度小于20，则左边用空格填充；若名字空间长度超过30，截去多余字符） %-20.30c （若名字空间长度小于20，则右边用空格填充；若名字空间长度超过30，截去多余字符） %C 列出调用logger的类的全名（包含包路径） 假设当前类是&#8221;org.apache.xyz.SomeClass&#8221; %C org.apache.xyz.SomeClass %C{1} SomeClass %d 显示日志记录时间，{&#60;日期格式&#62;}使用ISO8601定义的日期格式 %d{yyyy/MM/dd HH:mm:ss,SSS} 2005/10/12 22:23:30,117 %d{ABSOLUTE} 22:23:30,117 %d{DATE} 12 Oct 2005 22:23:30,117 %d{ISO8601} 2005-10-12 22:23:30,117 %F 显示调用logger的源文件名 %F MyClass.java %l 输出日志事件的发生位置，包括类目名、发生的线程，以及在代码中的行数 %l MyClass.main(MyClass.java:129) [...]]]></description>
			<content:encoded><![CDATA[<p><em>转自：<a href="http://www.blogjava.net/Unmi/articles/124106.html">http://www.blogjava.net/Unmi/articles/124106.html</a></em><br />
做项目被log4j的输出格式化参数搞烦了，索性把API的相关部分大致翻译一下，原文参见<a href="http://logging.apache.org/log4j/docs/api/org/apache/log4j/PatternLayout.html">http://logging.apache.org/log4j/docs/api/org/apache/log4j/PatternLayout.html</a></p>
<table class="data" border="0">
<tbody>
<tr>
<th>参数</th>
<th>说明</th>
<th colspan="2">例子</th>
</tr>
<tr>
<td rowspan="9">
<div>%c</div>
</td>
<td rowspan="9">列出logger名字空间的全称，如果加上{&lt;层数&gt;}表示列出从最内层算起的指定层数的名字空间</td>
<td>
<div>log4j配置文件参数举例</div>
</td>
<td>
<div>输出显示媒介</div>
</td>
</tr>
<tr>
<td colspan="2">假设当前logger名字空间是&#8221;a.b.c&#8221;</td>
</tr>
<tr>
<td>%c</td>
<td>a.b.c</td>
</tr>
<tr>
<td>%c{2}</td>
<td>b.c</td>
</tr>
<tr>
<td>%20c</td>
<td>（若名字空间长度小于20，则左边用空格填充）</td>
</tr>
<tr>
<td>%-20c</td>
<td>（若名字空间长度小于20，则右边用空格填充）</td>
</tr>
<tr>
<td>%.30c</td>
<td>（若名字空间长度超过30，截去多余字符）</td>
</tr>
<tr>
<td>%20.30c</td>
<td>（若名字空间长度小于20，则左边用空格填充；若名字空间长度超过30，截去多余字符）</td>
</tr>
<tr>
<td>%-20.30c</td>
<td>（若名字空间长度小于20，则右边用空格填充；若名字空间长度超过30，截去多余字符）</td>
</tr>
<tr>
<td rowspan="3">
<div>%C</div>
</td>
<td>列出调用logger的类的全名（包含包路径）</td>
<td>假设当前类是&#8221;org.apache.xyz.SomeClass&#8221;</td>
</tr>
<tr>
<td>%C</td>
<td>org.apache.xyz.SomeClass</td>
</tr>
<tr>
<td>%C{1}</td>
<td>SomeClass</td>
</tr>
<tr>
<td rowspan="4">
<div>%d</div>
</td>
<td rowspan="4">显示日志记录时间，{&lt;日期格式&gt;}使用ISO8601定义的日期格式</td>
<td>%d{yyyy/MM/dd HH:mm:ss,SSS}</td>
<td>2005/10/12 22:23:30,117</td>
</tr>
<tr>
<td>%d{ABSOLUTE}</td>
<td>22:23:30,117</td>
</tr>
<tr>
<td>%d{DATE}</td>
<td>12 Oct 2005 22:23:30,117</td>
</tr>
<tr>
<td>%d{ISO8601}</td>
<td>2005-10-12 22:23:30,117</td>
</tr>
<tr>
<td>
<div>%F</div>
</td>
<td>显示调用logger的源文件名</td>
<td>%F</td>
<td>MyClass.java</td>
</tr>
<tr>
<td>
<div>%l</div>
</td>
<td>输出日志事件的发生位置，包括类目名、发生的线程，以及在代码中的行数</td>
<td>%l</td>
<td>MyClass.main(MyClass.java:129)</td>
</tr>
<tr>
<td>
<div>%L</div>
</td>
<td>显示调用logger的代码行</td>
<td>%L</td>
<td>129</td>
</tr>
<tr>
<td>
<div>%m</div>
</td>
<td>显示输出消息</td>
<td>%m</td>
<td>This is a message for debug.</td>
</tr>
<tr>
<td>
<div>%M</div>
</td>
<td>显示调用logger的方法名</td>
<td>%M</td>
<td>main</td>
</tr>
<tr>
<td>
<div>%n</div>
</td>
<td>当前平台下的换行符</td>
<td>%n</td>
<td>Windows平台下表示rn<br />
UNIX平台下表示n</td>
</tr>
<tr>
<td>
<div>%p</div>
</td>
<td>显示该条日志的优先级</td>
<td>%p</td>
<td>INFO</td>
</tr>
<tr>
<td>
<div>%r</div>
</td>
<td>显示从程序启动时到记录该条日志时已经经过的毫秒数</td>
<td>%r</td>
<td>1215</td>
</tr>
<tr>
<td>
<div>%t</div>
</td>
<td>输出产生该日志事件的线程名</td>
<td>%t</td>
<td>MyClass</td>
</tr>
<tr>
<td rowspan="2">
<div>%x</div>
</td>
<td rowspan="2">按NDC（Nested Diagnostic Context，线程堆栈）顺序输出日志</td>
<td colspan="2">假设某程序调用顺序是MyApp调用com.foo.Bar</td>
</tr>
<tr>
<td>%c %x &#8211; %m%n</td>
<td>MyApp &#8211; Call com.foo.Bar.<br />
com.foo.Bar &#8211; Log in Bar<br />
MyApp &#8211; Return to MyApp.</td>
</tr>
<tr>
<td>
<div>%X</div>
</td>
<td>按MDC（Mapped Diagnostic Context，线程映射表）输出日志。通常用于多个客户端连接同一台服务器，方便服务器区分是那个客户端访问留下来的日志。</td>
<td>%X{5}</td>
<td>（记录代号为5的客户端的日志）</td>
</tr>
<tr>
<td>
<div>%%</div>
</td>
<td>显示一个百分号</td>
<td>%%</td>
<td>%</td>
</tr>
</tbody>
</table>
<p>列了这么多，举几个实际的例子吧，比如log4j.properties的内容为：</p>
<table border="0">
<tbody>
<tr>
<td>#log4j config<br />
log4j.rootLogger=DEBUG,OUTPUT</p>
<p>log4j.appender.OUTPUT.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.OUTPUT.layout.ConversionPattern=%d{DATE} %-4r [%t] %-5p %c %x &#8211; %m%n<br />
……</td>
</tr>
</tbody>
</table>
<p>那么一个可能的输出是：</p>
<table border="0">
<tbody>
<tr>
<td>
12 Oct 2005 22:23:30,117 0 [main] INFO MyApp &#8211; Entering application.<br />
……<br />
12 Oct 2005 22:23:30,162 45 [main] INFO MyApp &#8211; Exiting application.
</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/468/log4j%e8%be%93%e5%87%ba%e6%a0%bc%e5%bc%8f%e6%8e%a7%e5%88%b6-log4j%e7%9a%84patternlayout%e5%8f%82%e6%95%b0%e5%90%ab%e4%b9%89.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>如何发垃圾邮件</title>
		<link>http://www.xmxsuperstar.com/archives/459/%e5%a6%82%e4%bd%95%e5%8f%91%e5%9e%83%e5%9c%be%e9%82%ae%e4%bb%b6.html</link>
		<comments>http://www.xmxsuperstar.com/archives/459/%e5%a6%82%e4%bd%95%e5%8f%91%e5%9e%83%e5%9c%be%e9%82%ae%e4%bb%b6.html#comments</comments>
		<pubDate>Fri, 29 May 2009 07:22:29 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mail]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=459</guid>
		<description><![CDATA[比如某天我想干一件十分无聊的事情，我想给一个叫testname@gmail.com的邮件账户发送100封垃圾邮件，当然不能用真实的邮件帐号发，得用一个假的比如：noname@nodomain.com 首先，我们得知道gamil的投递服务器地址，在命令行中输入nslookup命令，然后输入set type=mx，接着输入gmail.com，出来几条记录，最后有一行：gmail-smtp-in.l.google.com internet address = 209.85.222.41，好投递服务器就是它了。 经过以上准备我们就可以写个程序发垃圾邮件了，当然数量可以随便定了，可以设一个很无聊的大数字，直接把对方的邮箱挤爆掉，当然某些投递服务器比较智能，一次投递给同一个帐号的邮件多了会拒绝的 java实现代码如下： import java.io.IOException; import java.io.PrintStream; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; public class Mail { private static final String CRLF = &#34;\r\n&#34;; public static void main(String[] args) { // 循环发送邮件 for (int i = 0; i &#60; 100; ++i) { System.out.println(&#34;++++++++++++++&#34; + (i + 1) + &#34;++++++++++++++++++++&#34;); [...]]]></description>
			<content:encoded><![CDATA[<p>比如某天我想干一件十分无聊的事情，我想给一个叫testname@gmail.com的邮件账户发送100封垃圾邮件，当然不能用真实的邮件帐号发，得用一个假的比如：noname@nodomain.com<br />
首先，我们得知道gamil的投递服务器地址，在命令行中输入nslookup命令，然后输入set type=mx，接着输入gmail.com，出来几条记录，最后有一行：gmail-smtp-in.l.google.com      internet address = 209.85.222.41，好投递服务器就是它了。<br />
经过以上准备我们就可以写个程序发垃圾邮件了，当然数量可以随便定了，可以设一个很无聊的大数字，直接把对方的邮箱挤爆掉，当然某些投递服务器比较智能，一次投递给同一个帐号的邮件多了会拒绝的<br />
java实现代码如下：</p>
<pre class="brush: java;">
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class Mail {
	private static final String CRLF = &quot;\r\n&quot;;

	public static void main(String[] args) {
		// 循环发送邮件
		for (int i = 0; i &lt; 100; ++i) {
			System.out.println(&quot;++++++++++++++&quot; + (i + 1)
					+ &quot;++++++++++++++++++++&quot;);
			send();
		}

	}

	private static void send() {
		PrintStream out = null;
		Scanner in = null;
		Socket smtpSocket = null;
		try {
			smtpSocket = new Socket(&quot;gmail-smtp-in.l.google.com&quot;, 25);
			out = new PrintStream(smtpSocket.getOutputStream());
			in = new Scanner(smtpSocket.getInputStream());
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		if (out == null || in == null) {
			return;
		}

		System.out.println(&quot;s:&quot; + in.nextLine());

		out.print(&quot;helo nodomain.com&quot; + CRLF);

		System.out.println(&quot;s:&quot; + in.nextLine());

		out.print(&quot;mail from: &lt;noname@nodomain.com&gt;&quot; + CRLF);

		System.out.println(&quot;s:&quot; + in.nextLine());

		out.print(&quot;rcpt to: &lt;testname@gmail.com&gt;&quot; + CRLF);

		System.out.println(&quot;s:&quot; + in.nextLine());

		out.print(&quot;data&quot; + CRLF);

		System.out.println(&quot;s:&quot; + in.nextLine());

		out.print(&quot;from: &lt;noname@nodomain.com&gt;&quot; + CRLF);
		out.print(&quot;to: &lt;testname@gmail.com&gt;&quot; + CRLF);
		out.print(&quot;subject: test mail&quot; + CRLF);
		out.print(&quot;&quot; + CRLF);
		out.print(&quot;balabalabalabalabala&quot; + CRLF);
		out.print(&quot;&quot; + CRLF);
		out.print(&quot;.&quot; + CRLF);

		System.out.println(&quot;s:&quot; + in.nextLine());

		out.print(&quot;quit&quot; + CRLF);
		System.out.println(&quot;s:&quot; + in.nextLine());

		in.close();
		out.close();
		try {
			smtpSocket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/459/%e5%a6%82%e4%bd%95%e5%8f%91%e5%9e%83%e5%9c%be%e9%82%ae%e4%bb%b6.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->