﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Java,永远不敢言精通-随笔分类-reThink</title><link>http://www.blogjava.net/crazycoding/category/44165.html</link><description>God helps those who help themselves. </description><language>zh-cn</language><lastBuildDate>Sat, 06 Nov 2010 16:05:41 GMT</lastBuildDate><pubDate>Sat, 06 Nov 2010 16:05:41 GMT</pubDate><ttl>60</ttl><item><title>dom4j编码问题</title><link>http://www.blogjava.net/crazycoding/archive/2010/11/05/337305.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Fri, 05 Nov 2010 03:24:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2010/11/05/337305.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/337305.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2010/11/05/337305.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/337305.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/337305.html</trackback:ping><description><![CDATA[<span style="color: black;">在使用</span><span style="color: black;">dom4j</span><span style="color: black;">的时候发现有时会出现这样一个问题：无法以</span><span style="color: black;">UTF-8</span><span style="color: black;">编码格式成功保存</span><span style="color: black;">xml</span><span style="color: black;">文件<br />
错误信息：<br />
Invalid byte 1 of 1-byte UTF-8 sequence. Nested exception: Invalid byte 1 of 1-byte UTF-8 sequence.<br />
。。。<br />
代码：<br />
</span>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;saveDocumentToFile()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputFormat&nbsp;format&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;OutputFormat.createPrettyPrint();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;format.setEncoding(</span><span style="color: #000000;">"</span><span style="color: #000000;">UTF-8</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLWriter&nbsp;writer&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;XMLWriter(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileWriter(xmlFile),&nbsp;format);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.write(document);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(Exception&nbsp;ex)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br />
错误原因：<br />
<span style="color: black;">在上面的代码中输出使用的是</span><strong><span style="color: black;">FileWriter</span></strong><strong><span style="color: black;">对象</span></strong><span style="color: black;">进行文件的写入。这就是不能正确进行文件编码的原因所在，</span><span style="color: black;">Java</span><span style="color: black;">中由</span><span style="color: black;">Writer</span><span style="color: black;">类继承下来的子类没有提供编码格式处理，所以</span><span style="color: black;">dom4j</span><span style="color: black;">也就无法对输出的文件进行正确的格式处理。这时候所保存的文件会以系统的默认编码对文件进行保存，在中文版的</span><span style="color: black;">window</span><span style="color: black;">下</span><span style="color: black;">Java</span><span style="color: black;">的默认的编码为</span><span style="color: black;">GBK</span><span style="color: black;">，也就是说虽然我们标识了要将</span><span style="color: black;">xml</span><span style="color: black;">保存为</span><span style="color: black;">utf-8</span><span style="color: black;">格式，但实际上文件是以</span><span style="color: black;">GBK</span><span style="color: black;">格式来保存的，所以这也就是为什么我们使用</span><span style="color: black;">GBK</span><span style="color: black;">、</span><span style="color: black;">GB2312</span><span style="color: black;">编码来生成</span><span style="color: black;">xml</span><span style="color: black;">文件能正确的被解析，而以</span><span style="color: black;">UTF-8</span><span style="color: black;">格式生成的文件不能被</span><span style="color: black;">xml</span><span style="color: black;">解析器所解析的原因。</span><br />
<span style="color: black;"><br />
</span><span style="color: black;">dom4j的编码处理：<br />
</span>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;XMLWriter(OutputStream&nbsp;out)&nbsp;</span><span style="color: #0000ff;">throws</span><span style="color: #000000;">&nbsp;UnsupportedEncodingException&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">System.out.println("In&nbsp;OutputStream");</span><span style="color: #008000;"><br />
</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.format&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;DEFAULT_FORMAT;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.writer&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;createWriter(out,&nbsp;format.getEncoding());<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.autoFlush&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br />
<br />
&nbsp;&nbsp;&nbsp;namespaceStack.push(Namespace.NO_NAMESPACE);<br />
<br />
}<br />
<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;XMLWriter(OutputStream&nbsp;out,&nbsp;OutputFormat&nbsp;format)&nbsp;</span><span style="color: #0000ff;">throws</span><span style="color: #000000;">&nbsp;UnsupportedEncodingException&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">System.out.println("In&nbsp;OutputStream,OutputFormat");</span><span style="color: #008000;"><br />
</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.format&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;format;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.writer&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;createWriter(out,&nbsp;format.getEncoding());<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.autoFlush&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br />
<br />
&nbsp;&nbsp;&nbsp;namespaceStack.push(Namespace.NO_NAMESPACE);<br />
<br />
}<br />
<br />
</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
<br />
*&nbsp;Get&nbsp;an&nbsp;OutputStreamWriter,&nbsp;use&nbsp;preferred&nbsp;encoding.<br />
<br />
</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;Writer&nbsp;createWriter(OutputStream&nbsp;outStream,&nbsp;String<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;encoding)&nbsp;</span><span style="color: #0000ff;">throws</span><span style="color: #000000;">&nbsp;UnsupportedEncodingException&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;BufferedWriter(<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;OutputStreamWriter(&nbsp;outStream,&nbsp;encoding&nbsp;)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;);<br />
<br />
}</span></div>
<br />
<span style="color: black;">so ：<br />
</span><span style="font-size: 12pt;"><span style="color: black;">dom4j</span><span style="color: black;">对编码并没有进行什么很复杂的处理，完全通过</span><span style="color: black;"> Java</span><span style="color: black;">本身的功能来完成。所以我们在使用</span><span style="color: black;">dom4j</span><span style="color: black;">生成</span><span style="color: black;">xml</span><span style="color: black;">文件时不应该直接在构建</span><span style="color: black;">XMLWriter</span><span style="color: black;">时，为其赋一个</span><span style="color: black;">Writer</span><span style="color: black;">对象，而应该通过一个</span><span style="color: black;">OutputStream</span><span style="color: black;">的子类对象来构建。也就是说在我们上面的代码中，不应该用</span><span style="color: black;">FileWriter</span><span style="color: black;">对象来构建</span><span style="color: black;">xml</span><span style="color: black;">文档，而应该使用</span><span style="color: black;"> <strong><span>FileOutputStream</span></strong></span><strong><span style="color: black;">对象</span></strong><span style="color: black;">来构建<br />
<br />
修改代码：<br />
</span></span>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;saveDocumentToFile()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputFormat&nbsp;format&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;OutputFormat.createPrettyPrint();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;format.setEncoding(</span><span style="color: #000000;">"</span><span style="color: #000000;">UTF-8</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLWriter&nbsp;writer&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;XMLWriter(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileOutputStream(xmlFile),&nbsp;format);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.write(document);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(Exception&nbsp;ex)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br />
<span style="color: black;"><br />
<br />
<br />
</span><span style="color: black;"><br />
<br />
<br />
<br />
<br />
<br />
<br />
</span>
<img src ="http://www.blogjava.net/crazycoding/aggbug/337305.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2010-11-05 11:24 <a href="http://www.blogjava.net/crazycoding/archive/2010/11/05/337305.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【收藏】一流黑客入侵大型网站的完整思路剖析</title><link>http://www.blogjava.net/crazycoding/archive/2010/05/30/321570.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Sun, 30 May 2010 03:30:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2010/05/30/321570.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/321570.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2010/05/30/321570.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/321570.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/321570.html</trackback:ping><description><![CDATA[<p>入侵方法及思路:<br />
<br />
1.X-SCAN扫描目标服务器(一般是没有漏洞,收集信息用吧),看看IIS写权限有漏洞吗,用53溢出或者其他0day和溢出工具试试==&gt;手工查看主站漏洞,先用google+阿d批量扫注入,再手工测试漏洞(例如注入,上传,爆库等等),同时用AC4扫(它在注入方面很细致)==获得
WEBSHELL==提权获得3389 (也许有时候把第3条放在第一条前,更合理一些,直接嗅探方便些)。<br />
<br />
2.用<a href="http://www.seologs.comip-domains.html/" target="_blank" eventslistuid="e3">http://www.seologs.comip-domains.html</a>将主站列同服务器反解析域名,旁注,==&gt;获得WEBSHELL==&gt;提权获得3389<br />
<br />
=======渗透过程(选择比较近的网段,同一个网关才好嗅探啊)==========<br />
<br />
3.用IIS写权限测试80,8080端口整个网段,用Portready扫描53主机溢出(或者其他漏洞溢出)==&gt;如果有写权限主机,那么提权,获得系统权限,如果可以溢出,获得系统权限==&gt;tracert目标主机,是否同一个网关==&gt;得到3389,用CAIN嗅探目标主机
80,21,3389等==&gt;获得目标WEBSHELL==&gt;提权获得目标主机3389<br />
<br />
4.用Portready扫描同网段3389,80,8080,8000满足3389+80,8000,8080条件的服务器,反解析域名,手工测试漏洞,同时用AC4扫描网站列表==&gt;获得webshell,提权得到系统权限==&gt;tracert目标主机,是否同一个网关==&gt;得到
3389,用CAIN嗅探目标主机80,21,3389等==&gt;获得WEBSHELL==&gt;提权获得3389。<br />
<br />
5.用Portready扫描同网段80,8000,8080(主机,(除去上一条扫到的3389主机列表),反解析IP,生成列表,手工测试每个网站,
同时用AC4扫描网站列表(如果网站有漏洞,获得WEBSHELL==&gt;提权获得3389==&gt;tracert目标主机,是否同一个网关==
&gt;cain嗅探目标主机==&gt;获得目标主机WEBSHELL==&gt;提权获得目标主机3389),同时用x-scan扫描同网段所有主机
(如果有漏洞,提权得到3389==&gt;tracert目标主机,是否同一个网关==&gt;cain嗅探目标主机==&gt;获得目标主机
WEBSHELL==&gt;提权获得目标主机3389)<br />
<br />
6.如果以上均没有漏洞,那就选择网段远一点,或者整个网段,返回第3条。<br />
<br />
<span style="color: rgb(254, 36, 25);">*</span><span style="color: rgb(254, 36, 25);">注：</span><br />
<br />
1.acunetix web vulnerability
Scanner 4
简称AC4<br />
<br />
2.另外以下一种方式走的通,就不用往下走了<br />
<br />
3.个人爱好用Portready,是因为他快速准确,当然你也可以用别的.<br />
<br />
4.AC4扫描很耗时间,扫一个网站大约需要3-5个小时,扫整个网段大约需要8个小时左右</p>
<img src ="http://www.blogjava.net/crazycoding/aggbug/321570.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2010-05-30 11:30 <a href="http://www.blogjava.net/crazycoding/archive/2010/05/30/321570.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>迅雷面试题</title><link>http://www.blogjava.net/crazycoding/archive/2010/03/05/314578.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Fri, 05 Mar 2010 06:23:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2010/03/05/314578.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/314578.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2010/03/05/314578.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/314578.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/314578.html</trackback:ping><description><![CDATA[<span style="font-size: 14pt;">
本科在读，没有任何工作经验，写下对某几道题的理解，望高人指正。<br />
希望自己在工作几年后再回过头看时&#8230;&#8230;<br />
<br />
1 说说JVM原理？内存泄露与溢出区别，何时产生内存泄露<br />
JVM是用软件虚拟的计算机，是一种规范。使得字节码文件在不同的平台上都能正常运行<br />
原理：<br />
先由Java编译器真对Java虚拟机产生独立于平台的class文件；<br />
再由Java解释器将虚拟机的代码在特定的平台上运行。<br />
内存泄露是指内存资源耗尽<br />
内存溢出是指系统不能满足程序想要的分配<br />
不再使用的内存得不到适当的释放会产生内存泄露<br />
<br />
2 用Java怎么实现有每天1亿条记录的DB存储？MySql上亿记录数据量的数据库如何设置？<br />
<br />
3 MySql支持事务吗？DB存储引擎有哪些？<br />
默认是不支持的，但是可以通过创建bdb类型的表来使其支持<br />
<br />
4 MVC的原理，优缺点，如果让你设计你会怎么改造？<br />
model view controller<br />
view 事件---》controller 调用相应方法改变状态——》model封装相应状态——》view<br />
优点：各层分工明确，模型层有良好的可移植性，也是一种框架结构<br />
缺点：对于小型应用很费时间，视图与控制器连接过于紧密<br />
<br />
5 Hibernate支持群集吗？如何实现群集？<br />
<br />
6 tomcat最多支持并发多少用户？<br />
&nbsp;200多人左右是比较安全完美的，但是多于200后会逐渐的相应时间长，容易丢失数据。<br />
<br />
7 Map原理，他是如何快速查找Key的？map与set区别？<br />
是从键到值的映射，键不能重复，每个键最多映射一个值。<br />
使用哈希算法快速查找key<br />
map是映射，set是集合&#8230;&#8230;<br />
<br />
8 描述算法，如何有效合并两个文件：一个是一亿条的用户基本信息，<span style="font-size: large;">另一个是用户每天看电影连续剧等的记录，5000万条。内存只有1G？？？
</span><br />
<br />
9 <span style="font-size: large;">在1亿条用户记录里，如何快速查询统计出看了5个电影以上的用户？<br />
<br />
</span>
10 Spring是如何实现IOC和AOP的，说出实现原理。<br />
IOC：通过DI来实现动态的向某个对象提供其所需要的对象，不用new<br />
AOP：使用代理，减少代码<br />
<br />
<br />
<br />
</span>
<img src ="http://www.blogjava.net/crazycoding/aggbug/314578.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2010-03-05 14:23 <a href="http://www.blogjava.net/crazycoding/archive/2010/03/05/314578.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【鄙视反思】一道进程的题</title><link>http://www.blogjava.net/crazycoding/archive/2010/03/02/314319.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Tue, 02 Mar 2010 13:02:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2010/03/02/314319.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/314319.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2010/03/02/314319.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/314319.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/314319.html</trackback:ping><description><![CDATA[有3个并发进程R、M、P，它们共享同一个缓冲区，假定缓冲区只能存放一条记录。进程R负责从输入设备读信息，每读入一个记录后，就把它放进缓冲区；进程
M在缓冲区中加工读入的记录；进程P把加工后的记录打印输出。读入的记录经加工输出后，缓冲区又可以存放下一个记录。试写出他们能够正确执行的并发程序。<br />
<br />
PV原语：<br />
三个进程共用一个缓冲区，他们必须同步工作，可定义三个信号量：<br />
<br />
S1：表示是否可把读人的记录放到缓冲区，初始值为1.<br />
<br />
S2：表示是否可对缓冲区中的记录加工，初始值为0.<br />
<br />
S3：表示记录是否加工好，可以输出，初始值也为0.<br />
<br />
三个进程可如下设计：<br />
<br />
begin<br />
<br />
S1，S2，S3：semaphore；<br />
<br />
S1：＝l；S2：＝S3：＝0；<br />
<br />
cobegin<br />
<br />
process R<br />
<br />
begin<br />
<br />
L1：读记录；<br />
<br />
P（S1）；<br />
<br />
记录存入缓冲区；<br />
<br />
V（S2）；<br />
<br />
goto L1；<br />
<br />
end；<br />
<br />
process M<br />
<br />
begin<br />
<br />
L2：P（S2）；<br />
<br />
加工记录；<br />
<br />
V（S3）；<br />
<br />
goto L2；<br />
<br />
end；<br />
<br />
process P<br />
<br />
begin<br />
<br />
L3：P（S3）；<br />
<br />
输出加工后的记录；<br />
<br />
V（S1）；<br />
<br />
goto L3；<br />
<br />
end；<br />
<br />
coend；<br />
<br />
end.<br />
<img src ="http://www.blogjava.net/crazycoding/aggbug/314319.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2010-03-02 21:02 <a href="http://www.blogjava.net/crazycoding/archive/2010/03/02/314319.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【鄙视反思】网络基本知识</title><link>http://www.blogjava.net/crazycoding/archive/2010/03/02/314316.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Tue, 02 Mar 2010 12:09:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2010/03/02/314316.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/314316.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2010/03/02/314316.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/314316.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/314316.html</trackback:ping><description><![CDATA[<span style="font-size: 24pt;"><strong>ISO／OSI体系结构七层模型</strong></span><br />
由下至上为1至7层，分别为:<br />
<strong><em><span style="color: #1826ff;"><span style="color: #1826ff;"><strong><em>应用层(Application layer)</em></strong></span></span></em></strong> <span style="color: #ff0000;">（网关）</span><span style="color: #ff0000;"></span><br />
* 定义了用于在网络中进行通信和数据传输的接口 - 用户程序；<br />
* 提供标准服务，比如虚拟终端、文件以及任务的传输和处理；<br />
<br />
<strong><em><span style="color: #1826ff;">表示层(Presentation layer)</span></em></strong><br />
* 掩盖不同系统间的数据格式的不同性；<br />
* 指定独立结构的数据传输格式；<br />
* 数据的编码和解码；加密和解密；压缩和解压缩<br />
<br />
<span style="color: #1826ff;"><em><strong>会话层(Session layer)</strong></em></span><br />
* 管理用户会话和对话；<br />
* 控制用户间逻辑连接的建立和挂断；<br />
* 报告上一层发生的错误<br />
<em><span style="color: #1826ff;"><br />
<strong>传输层(Transport layer)</strong></span></em>（TCP、UDP）<br />
* 管理网络中端到端的信息传送；<br />
* 通过错误纠正和流控制机制提供可靠且有序的数据包传送；<br />
* 提供面向无连接的数据包的传送；<br />
<br />
<em><strong><span style="color: #1826ff;">网络层(Network layer)</span></strong></em>（IP）<span style="color: #ff0000;">（路由器）</span><br />
* 定义网络设备间如何传输数据；<br />
* 根据唯一的网络设备地址路由数据包；<br />
* 提供流和拥塞控制以防止网络资源的损耗<br />
<em><strong><span style="color: #1826ff;"><br />
数据链路层(Data link layer)</span></strong></em><span style="color: #ff0000;">（网桥）（交换机）</span><br />
* 定义操作通信连接的程序；<br />
* 封装数据包为数据帧；<br />
* 监测和纠正数据包传输错误<br />
<br />
<em><strong><span style="color: #1826ff;">物理层(Physical layer)</span></strong></em> <span style="color: #ff0000;">（网卡）（集线器）（中继器）</span><br />
* 定义通过网络设备发送数据的物理方式；<br />
* 作为网络媒介和设备间的接口；<br />
* 定义光学、电气以及机械特性。<br />
<br />
<br />
<br />
应用层的协议有：<br />
用于Web的HTTP<br />
用于电子邮件的SMTP、POP和IMAP<br />
用于文件传输的FTP、FSP、TFTP<br />
用于文件访问的NFS<br />
用于新闻传输的NNTP<br />
用于文件共享的GnutellaFastTrack和FreeNet。<br />
<br />
<br />
<img src ="http://www.blogjava.net/crazycoding/aggbug/314316.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2010-03-02 20:09 <a href="http://www.blogjava.net/crazycoding/archive/2010/03/02/314316.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>