﻿<?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-MEYE-文章分类-Study</title><link>http://www.blogjava.net/MEYE/category/8968.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 31 Dec 2013 18:43:39 GMT</lastBuildDate><pubDate>Tue, 31 Dec 2013 18:43:39 GMT</pubDate><ttl>60</ttl><item><title>移动芯片厂商盘点</title><link>http://www.blogjava.net/MEYE/articles/408301.html</link><dc:creator>MEYE</dc:creator><author>MEYE</author><pubDate>Tue, 31 Dec 2013 08:17:00 GMT</pubDate><guid>http://www.blogjava.net/MEYE/articles/408301.html</guid><wfw:comment>http://www.blogjava.net/MEYE/comments/408301.html</wfw:comment><comments>http://www.blogjava.net/MEYE/articles/408301.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/MEYE/comments/commentRss/408301.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/MEYE/services/trackbacks/408301.html</trackback:ping><description><![CDATA[<div style="list-style: none; border: 0px; margin: 0px; padding-top: 20px; padding-left: 8px; font-size: 12px; word-wrap: break-word; word-break: break-all; height: 30px; line-height: 30px; color: #313063; font-family: 'Times New Roman'; background-color: #ffffff;"><h2>移动芯片厂商盘点&nbsp;<div style="display: inline-block;"><a href="http://www.52rd.com/Blog/Detail_RD.Blog_zuojiaxiansheng_71362.html">http://www.52rd.com/Blog/Detail_RD.Blog_zuojiaxiansheng_71362.html</a></div></h2><span style="list-style: none; border: 0px; margin: 0px 0px 0px 5px; padding: 0px; color: #999999;">(2013-12-30&nbsp;17:55)</span></div><div style="list-style: none; border: 0px; margin: 5px 20px; word-wrap: break-word; word-break: break-all; color: #333333; line-height: 1.8; overflow: hidden; zoom: 1; font-family: 'Times New Roman'; background-color: #ffffff;"><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">这是综合大家意见修改后的：</span><br /><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">手机芯片大致分成六部分：CPU（AP），基带芯片，射频芯片，电源管理，近距离通信集成芯片，其他小部件</span><br /><br /><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">1.CPU：</span><br /><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">世界著名厂商：</span><strong>高通</strong><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">（拥有无线通信的大部分专利），</span><strong>TI德州仪器</strong><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">（擅长数字信号处理，2G时代以后退出移动芯片市场），</span><strong>苹果</strong><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">（主要是提供给iphone），</span><strong>三星的猎户座&nbsp;</strong><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">，</span><strong>英伟达</strong><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">（以前主攻图形愿军处理芯片，近几年也推出移动芯片），<strong>Intel</strong>（PC时代的巨头，近几年也有发力移动端）</span><br /><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">国内的：</span><strong>海思</strong><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">，华为的芯片&nbsp;</span><br /><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">台湾的：</span><strong>联发科（MTK）</strong><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">，以前专注于低端的解决方案，最近几年向高端发力，推出了业界第一个八核芯片</span><br /><br /><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">2.基带：</span><br /><strong>高通</strong><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">有垄断地位，<strong>博通</strong>（两通之一，在基带也颇有建树，号称业界老二），<strong>Marvell</strong>（业界老大之一，号称业界第二个做出五模十频基带）</span><br /><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">国内的有</span><strong>展讯，</strong><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">擅长TD-SCDMA，</span><strong>华为的霸龙</strong><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">基带（用的比较少），<strong>联芯</strong>（大唐的芯片，主要做TD-SCDMA低端市场），<strong>重邮信科，中兴微电子</strong>（不知道商用没有）</span><br /><br /><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">3.射频：</span><br /><strong>skyworks</strong><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">（最专业的射频厂商,也为苹果提供RF芯片）</span><strong>,英飞凌，Avago,RFMD</strong><br /><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">国内的有</span><strong>RDA，展讯</strong><br /><br /><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">4.电源管理芯片：不太了解，望补充</span><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;"><br /></span><br /><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">5.近距离通信集成芯片，包含了WIFI，GPS，蓝牙，生产的厂商主要有<strong>博通</strong>和<strong>marvell</strong><br /></span><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;"><br /></span><br /><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">6.还有一些比较小的部件芯片，例如陀螺仪芯片有</span><strong>意法半导体</strong><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">，存储芯片有</span><strong>sandisk,三星.</strong>另外<strong>君正</strong>也值得注意，最近在发力可穿戴设备的芯片<br /><br /><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">当然上面的四部分也不是绝对分开的，例如：</span><br /><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">1.高通的优势在基带，但通常会在基带芯片外还集成了CPU卖整个解决方案，当然也有电源管理和射频芯片</span><br /><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">2.MTK会兜售整套解决方案，手机厂商只要加上外设和软件就可以生产出手机，大大加快了手机的开发进程</span><br /><br /><span style="list-style: none; border: 0px; margin: 0px; padding: 0px;">综上所述，以上黑体字就是主要的手机芯片厂商</span></div><img src ="http://www.blogjava.net/MEYE/aggbug/408301.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/MEYE/" target="_blank">MEYE</a> 2013-12-31 16:17 <a href="http://www.blogjava.net/MEYE/articles/408301.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何学好VC，就在这与你面对面</title><link>http://www.blogjava.net/MEYE/articles/44532.html</link><dc:creator>MEYE</dc:creator><author>MEYE</author><pubDate>Thu, 04 May 2006 07:28:00 GMT</pubDate><guid>http://www.blogjava.net/MEYE/articles/44532.html</guid><wfw:comment>http://www.blogjava.net/MEYE/comments/44532.html</wfw:comment><comments>http://www.blogjava.net/MEYE/articles/44532.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/MEYE/comments/commentRss/44532.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/MEYE/services/trackbacks/44532.html</trackback:ping><description><![CDATA[
		<b>如何学好VC，就在这与你面对面</b>
		<div style="PADDING-RIGHT: 0px; MARGIN-TOP: 10px; FONT-SIZE: 9pt; OVERFLOW-X: hidden; WIDTH: 97%; WORD-BREAK: break-all; TEXT-INDENT: 24px; LINE-HEIGHT: normal; HEIGHT: 200px; WORD-WRAP: break-word" onload="this.style.overflowX='auto';">
				<p>现在大家对VC、是不是还有些迷惘！</p>
				<p>1.1 如何学好VC</p>
				<p>这个问题很多朋友都问过我，当然流汗是必须的，但同时如果按照某种思路进行有计划的学习就会起到更好的效果。万事开头难，为了帮助朋友们更快的掌握VC开发，下面我将自己的一点体会讲一下：<br />1、需要有好的C/C++基础。正所谓“磨刀不误砍柴工”，最开始接触VC时不要急于开始Windows程序开发，而是应该进行一些字符界面程序的编写。这样做的目的主要是增加对语言的熟悉程度，同时也训练自己的思维和熟悉一些在编程中常犯的错误。更重要的是理解并能运用C++的各种特性，这些在以后的开发中都会有很大的帮助，特别是利用MFC进行开发的朋友对C++一定要能熟练运用。 <br />2、理解Windows的消息机制，窗口句柄和其他GUI句柄的含义和用途。了解和MFC各个类功能相近的API函数。<br />3、一定要理解MFC中消息映射的作用。<br />4、训练自己在编写代码时不使用参考书而是使用Help Online。<br />5、记住一些常用的消息名称和参数的意义。<br />6、学会看别人的代码。<br />7、多看书，少买书，买书前一定要慎重。<br />8、闲下来的时候就看参考书。<br />9、多来我的主页。^O^<br />后面几条是我个人的一点意见，你可以根据需要和自身的情况选用适用于自己的方法。<br />此外我将一些我在选择参考书时的原则：<br />对于初学者：应该选择一些内容比较全面的书籍，并且书籍中的内容应该以合理的方式安排，在使用该书时可以达到循序渐进的效果，书中的代码要有详细的讲解。尽量买翻译的书，因为这些书一般都比较易懂，而且语言比较轻松。买书前一定要慎重如果买到不好用的书可能会对自己的学习积极性产生打击。<br />对于已经掌握了VC的朋友：这种程度的开发者应该加深自己对系统原理，技术要点的认识。需要选择一些对原理讲解的比较透彻的书籍，这样一来才会对新技术有更多的了解，最好书中对技术的应用有一定的阐述。尽量选择示范代码必较精简的书，可以节约银子。<br />此外最好涉猎一些辅助性的书籍。</p>
				<p>　　《Visual C++开发指南》 闻怡洋/文 </p>
		</div>
<img src ="http://www.blogjava.net/MEYE/aggbug/44532.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/MEYE/" target="_blank">MEYE</a> 2006-05-04 15:28 <a href="http://www.blogjava.net/MEYE/articles/44532.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[分享]你用得上的电脑小窍门：用快捷键代替鼠标</title><link>http://www.blogjava.net/MEYE/articles/44531.html</link><dc:creator>MEYE</dc:creator><author>MEYE</author><pubDate>Thu, 04 May 2006 07:27:00 GMT</pubDate><guid>http://www.blogjava.net/MEYE/articles/44531.html</guid><wfw:comment>http://www.blogjava.net/MEYE/comments/44531.html</wfw:comment><comments>http://www.blogjava.net/MEYE/articles/44531.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/MEYE/comments/commentRss/44531.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/MEYE/services/trackbacks/44531.html</trackback:ping><description><![CDATA[
		<div style="LINE-HEIGHT: 22px; HEIGHT: 22px">
				<div style="FLOAT: left">
						<img alt="发贴心情" src="http://bbs.kaifulee.com/skins/Default/topicface/face1.gif" />
				</div>
				<b>[分享]你用得上的电脑小窍门：用快捷键代替鼠标</b>
		</div>
		<div style="PADDING-RIGHT: 0px; MARGIN-TOP: 10px; FONT-SIZE: 9pt; OVERFLOW-X: hidden; WIDTH: 97%; WORD-BREAK: break-all; TEXT-INDENT: 24px; LINE-HEIGHT: normal; HEIGHT: 200px; WORD-WRAP: break-word" onload="this.style.overflowX='auto';">
				<div class="content" twffan="done" imgzoom="">
						<font size="4">
						</font> </div>
				<div class="content" twffan="done" imgzoom="">
						<font size="4">       在 Win XP 中工作和Windows中工作时一样，利用快捷键代替鼠标。可以利用键盘快捷键打开、关闭和导航“开始”菜单、桌面、菜单、对话框以及网页。键盘还可以让您更简单地与计算机交互。<br /><br />　　单击一个标题或按 TAB 键可以突出显示这个标题，然后按 ENTER 键。<br /><br />　　<font color="#ff00ff">一、常规键盘快捷键</font><br /><br />按键 目的<br />Ctrl + C 复制。<br />Ctrl + X 剪切。<br />Ctrl + V 粘贴。<br />Ctrl + Z 撤消。<br />DELETE 删除。<br />Shift + Delete 永久删除所选项，而不将它放到“回收站”中。<br />拖动某一项时按 CTRL 复制所选项。<br />拖动某一项时按 CTRL + SHIFT 创建所选项目的快捷键。<br />F2 重新命名所选项目。<br />CTRL + 向右键 将插入点移动到下一个单词的起始处。<br />CTRL + 向左键 将插入点移动到前一个单词的起始处。<br />CTRL + 向下键 将插入点移动到下一段落的起始处。<br />CTRL + 向上键 将插入点移动到前一段落的起始处。<br />CTRL + SHIFT + 任何箭头键 突出显示一块文本。<br />SHIFT + 任何箭头键 在窗口或桌面上选择多项，或者选中文档中的文本。<br />Ctrl + A 选中全部内容。<br />F3 搜索文件或文件夹。<br />Alt + Enter 查看所选项目的属性。<br />Alt + F4 关闭当前项目或者退出当前程序。<br />ALT + Enter 显示所选对象的属性。<br />Alt + 空格键 为当前窗口打开快捷菜单。<br />Ctrl + F4 在允许同时打开多个文档的程序中关闭当前文档。<br />Alt + Tab 在打开的项目之间切换。<br />Alt + Esc 以项目打开的顺序循环切换。<br />F6 在窗口或桌面上循环切换屏幕元素。<br />F4 显示“我的电脑”和“Windows 资源管理器”中的“地址”栏列表。<br />Shift + F10 显示所选项的快捷菜单。<br />Alt + 空格键 显示当前窗口的“系统”菜单。<br />Ctrl + Esc 显示“开始”菜单。<br />ALT + 菜单名中带下划线的字母 显示相应的菜单。<br />在打开的菜单上显示的命令名称中带有下划线的字母 执行相应的命令。<br />F10 激活当前程序中的菜单条。<br />右箭头键 打开右边的下一菜单或者打开子菜单。<br />左箭头键 打开左边的下一菜单或者关闭子菜单。<br />F5 刷新当前窗口。<br />BackSpace 在“我的电脑”或“Windows 资源管理器”中查看上一层文件夹。<br />Esc 取消当前任务。<br />将光盘插入到 CD-ROM 驱动器时按 SHIFT 键 阻止光盘自动播放。<br /><br />　<font color="#ff00ff">　二、对话框快捷键</font><br /><br />按键 目的<br />Ctrl + Tab 在选项卡之间向前移动。<br />Ctrl + Shift +Tab 在选项卡之间向后移动。<br />Tab 在选项之间向前移动。<br />Shift + Tab 在选项之间向后移动。<br />ALT + 带下划线的字母 执行相应的命令或选中相应的选项。<br />Enter 执行活选项动或按钮所对应的命令。<br />空格键 如果活选项动是复选框，则选中或清除该复选框。<br />箭头键 活选项动是一组选项按钮时，请选中某个按钮。<br />F1 显示帮助。<br />F4 显示当前列表中的项目。<br />BackSpace 如果在“另存为”或“打开”对话框中选中了某个文件夹，则打开上一级文件夹。<br /><br />　<font color="#ff00ff">　三、自然键盘快捷键</font><br /><br />　　在“Microsoft 自然键盘”或包含 Windows 徽标键(简称WIN) 和“应用程序”键(简称KEY) 的其他兼容键盘中，您可以使用以下快捷键。<br /><br />按键 目的<br />WIN 显示或隐藏开始菜单。<br />WIN+ BREAK 显示系统属性对话框。<br />WIN+ D 显示桌面。<br />WIN+ M 最小化所有窗口。<br />WIN+ Shift + M 还原最小化的窗口。<br />WIN+ E 打开我的电脑。<br />WIN+ F 搜索文件或文件夹。<br />CTRL+WIN+ F 搜索计算机。<br />WIN+ F1 显示 Windows 帮助。<br />WIN+ L 如果连接到网络域，则锁定您的计算机，或者如果没有连接到网络域，则切换用户。<br />WIN+ R 打开运行对话框。<br />KEY 显示所选项的快捷菜单。<br />WIN+ U 打开工具管理器。<br /><br />　　<font color="#ff00ff">四、辅助键盘快捷键</font><br /><br />按键 目的<br />右侧 SHIFT 键八秒钟 切换“筛选键”的开和关。<br />左边的 ALT + 左边的 SHIFT + PRINT SCREEN 切换“高对比度”的开和关。<br />左边的 ALT + 左边的 SHIFT + NUM LOCK 切换“鼠标键”的开和关。<br />Shift 键五次 切换“粘滞键”的开和关。<br />Num Lock 键五秒钟 切换“切换键”的开和关。<br />WIN+ U 打开“工具管理器”。<br /><br />　　<font color="#ff00ff">“Windows 资源管理器”键盘快捷键</font><br /><br />按键 目的<br />END 显示当前窗口的底端。<br />主页 显示当前窗口的顶端。<br />NUM LOCK + 数字键盘的星号 (*) 显示所选文件夹的所有子文件夹。<br />NUM LOCK + 数字键盘的加号 (+) 显示所选文件夹的内容。<br />NUM LOCK + 数字键盘的减号 (-) 折叠所选的文件夹。<br />左箭头键 当前所选项处于展开状态时折叠该项，或选定其父文件夹。<br />右箭头键 当前所选项处于折叠状态时展开该项，或选定第一</font>
				</div>
		</div>
<img src ="http://www.blogjava.net/MEYE/aggbug/44531.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/MEYE/" target="_blank">MEYE</a> 2006-05-04 15:27 <a href="http://www.blogjava.net/MEYE/articles/44531.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>.Net技术站点（一） </title><link>http://www.blogjava.net/MEYE/articles/41380.html</link><dc:creator>MEYE</dc:creator><author>MEYE</author><pubDate>Sun, 16 Apr 2006 12:18:00 GMT</pubDate><guid>http://www.blogjava.net/MEYE/articles/41380.html</guid><wfw:comment>http://www.blogjava.net/MEYE/comments/41380.html</wfw:comment><comments>http://www.blogjava.net/MEYE/articles/41380.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/MEYE/comments/commentRss/41380.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/MEYE/services/trackbacks/41380.html</trackback:ping><description><![CDATA[
		<div class="postTitle">
				<a id="viewpost1_TitleUrl" href="http://yanrongpi.cnblogs.com/archive/2006/04/15/375777.html">
						<font color="#000080">.Net技术站点（一）</font>
				</a>
		</div>
		<div class="postText">
				<p>
						<a href="http://www.c-sharpcorner.com/">
								<font color="#000080">http://www.c-sharpcorner.com/</font>
						</a> ：学习c#的好地方<br /></p>
				<p>
						<a href="http://windowsforms.net/">
								<font color="#000080">http://windowsforms.net</font>
						</a>：学习winform编程的好地方<br /><br /><a href="http://www.codeguru.com/"><font color="#000080">http://www.codeguru.com</font></a>:学习C++的好地方<br /></p>
				<p>
						<a href="http://www.codeproject.com/">
								<font color="#000080">http://www.codeproject.com</font>
						</a>：有很多示例代码<br /></p>
				<p>
						<a href="http://www.gotdotnet.com/">
								<font color="#000080">http://www.gotdotnet.com</font>
						</a>：都知道的地方<br /></p>
				<p>
						<a href="http://www.aspnet.com/">
								<font color="#000080">http://www.aspnet.com</font>
						</a>：aspnet的专业网站<br /></p>
				<p>
						<a href="http://www.sourceforge.net/">
								<font color="#000080">http://www.sourceforge.net</font>
						</a> ：最好的开源站点</p>
		</div>
<img src ="http://www.blogjava.net/MEYE/aggbug/41380.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/MEYE/" target="_blank">MEYE</a> 2006-04-16 20:18 <a href="http://www.blogjava.net/MEYE/articles/41380.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>致应届毕业生 少走弯路的十条忠告 转贴  </title><link>http://www.blogjava.net/MEYE/articles/41037.html</link><dc:creator>MEYE</dc:creator><author>MEYE</author><pubDate>Fri, 14 Apr 2006 03:03:00 GMT</pubDate><guid>http://www.blogjava.net/MEYE/articles/41037.html</guid><wfw:comment>http://www.blogjava.net/MEYE/comments/41037.html</wfw:comment><comments>http://www.blogjava.net/MEYE/articles/41037.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/MEYE/comments/commentRss/41037.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/MEYE/services/trackbacks/41037.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td>
										<table cellspacing="0" cellpadding="0" width="100%" bgcolor="#ffffff" border="0">
												<tbody>
														<tr>
																<td class="title1" align="middle" width="100%" bgcolor="#eeeeee" colspan="3" height="40">
																		<b>致应届毕业生 少走弯路的十条忠告</b>
																</td>
														</tr>
														<tr>
																<td align="middle" width="100%" bgcolor="#eeeeee"> 转贴  </td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
						<!-- end of article title -->
						<tr>
								<td valign="top" align="middle" width="100%">
										<!--start of article content -->
										<table width="98%" border="0">
												<tbody>
														<tr>
																<td class="text" align="left" width="100%">
																		<br /> <br />　 刚刚走上社会的年轻人，充满了蓄势待发的豪情、青春的朝气、前卫的思想，梦想着丰富的待遇和轰轰烈烈的事业。可是，社会毕竟是一所包罗万象、喧嚣复杂的大学校，这里没有寒暑假，拒绝虚假和肤浅，更拒绝空想和庸碌，难以预告何时开课何时放学。<br /><br />　 如何在涉世之初少走弯路，有一个好的开端，开始一番成功的事业？以下是一些先行者积累的10条有益的涉世忠告。好好地遵循、把握这些忠告和建议吧，比起所学的课堂课程来，它毫不逊色！<br /><br /><br />　 1. 买个闹钟，以便按时叫醒你。贪睡和不守时，都将成为你工作和事业上的绊脚石，任何时候都一样。不仅要学会准时，更要学会提前。就如你坐车去某地，沿途的风景很美，你忍不住下车看一看，后来虽然你还是赶到了某地，却不是准时到达。“闹钟”只是一种简单的标志和提示，真正灵活、实用的时间，掌握在每个人的心中。<br /><br />　 2. 如果你不喜欢现在的工作，要么辞职不干，要么就闭嘴不言。初出茅庐，往往眼高手低，心高气傲，大事做不了，小事不愿做。不要养成挑三拣四的习惯。不要雨天烦打伞，不带伞又怕淋雨，处处表现出不满的情绪。记住，不做则已，要做就要做好。<br /><br />　 3. 每个人都有孤独的时候。要学会忍受孤独，这样才会成熟起来。年轻人嘻嘻哈哈、打打闹闹惯了，到了一个陌生的环境，面对形形色色的人和事，一下子不知所措起来，有时连一个可以倾心说话的地方也没有。这时，千万别浮躁，学会静心，学会忍受孤独。在孤独中思考，在思考中成熟，在成熟中升华。不要因为寂寞而乱了方寸，而去做无聊无益的事情，白白浪费了宝贵的时间。<br /><br />　 4.走运时要做好倒霉的准备。有一天，一只狐狸走到一个葡萄园外，看见里面水灵灵的葡萄垂涎欲滴。可是外面有栅栏挡着，无法进去。于是它一狠心绝食三日，减肥之后，终于钻进葡萄园内饱餐一顿。当它心满意足地想离开葡萄园时，发觉自己吃得太饱，怎么也钻不出栅栏了。相信任何人都不愿做这样的狐狸。退路同样重要。饱带干粮，晴带雨伞，点滴积累，水到渠成。有的东西今天似乎一文不值，但有朝一日也许就会身价百倍。<br /><br />　 5. 不要像玻璃那样脆弱。有的人眼睛总盯着自己，所以长不高看不远；总是喜欢怨天尤人，也使别人无比厌烦。没有苦中苦，哪来甜中甜？不要像玻璃那样脆弱，而应像水晶一样透明，太阳一样辉煌，腊梅一样坚强。既然睁开眼睛享受风的清凉，就不要埋怨风中细小的沙粒。<br /><br />　 6.管住自己的嘴巴。不要谈论自己，更不要议论别人。谈论自己往往会自大虚伪，在名不副实中失去自己。议论别人往往陷入鸡毛蒜皮的是非口舌中纠缠不清。每天下班后和你的那些同事朋友喝酒聊天可不是件好事，因为，这中间往往会把议论同事、朋友当做话题。背后议论人总是不好的，尤其是议论别人的短处，这些会降低你的人格。<br /><br />　 7. 机会从不会“失掉”，你失掉了，自有别人会得到。不要凡事在天，守株待兔，更不要寄希望于“机会”。机会只不过是相对于充分准备而又善于创造机会的人而言的。也许，你正为失去一个机会而懊悔、埋怨的时候，机会正被你对面那个同样的“倒霉鬼”给抓住了。没有机会，就要创造机会，有了机会，就要巧妙地抓住。<br /><br />　 8.若电话老是不响，你该打出去。很多时候，电话会给你带来意想不到的收获，它不是花瓶，仅仅成为一种摆设。交了新朋友，别忘了老朋友，朋友多了路好走。交际的一大诀窍就是主动。好的人缘好的口碑，往往助你的事业更上一个台阶。<br /><br />　 9.千万不要因为自己已经到了结婚年龄而草率结婚。想结婚，就要找一个能和你<a href="http://www.sogou.com/sogoupedia?query=心心相印" target="_blank">心心相印</a>、相辅相携的伴侣。不要因为放纵和游戏而恋爱，不要因为恋爱而影响工作和事业，更不要因一桩草率而失败的婚姻而使人生受阻。感情用事往往会因小失大。<br /><br />　 10. 写出你一生要做的事情，把单子放在皮夹里，经常拿出来看。人生要有目标，要有计划，要有提醒，要有紧迫感。一个又一个小目标串起来，就成了你一生的大目标。生活富足了，环境改善了，不要忘了皮夹里那张看似薄薄的单子。<br /> </td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/MEYE/aggbug/41037.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/MEYE/" target="_blank">MEYE</a> 2006-04-14 11:03 <a href="http://www.blogjava.net/MEYE/articles/41037.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>fg</title><link>http://www.blogjava.net/MEYE/articles/40081.html</link><dc:creator>MEYE</dc:creator><author>MEYE</author><pubDate>Sun, 09 Apr 2006 05:08:00 GMT</pubDate><guid>http://www.blogjava.net/MEYE/articles/40081.html</guid><wfw:comment>http://www.blogjava.net/MEYE/comments/40081.html</wfw:comment><comments>http://www.blogjava.net/MEYE/articles/40081.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/MEYE/comments/commentRss/40081.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/MEYE/services/trackbacks/40081.html</trackback:ping><description><![CDATA[
		<a href="http://www.54bk.com/user1/58/archives/2006/32719.html">http://www.54bk.com/user1/58/archives/2006/32719.html</a>
		<br />
		<br />
		<a href="http://www.54bk.com/user2/dlha/archives/2006/32721.html">http://www.54bk.com/user2/dlha/archives/2006/32721.html</a>
		<br />
		<br />
		<a href="http://www.54bk.com/user1/7297/archives/2006/32684.html">http://www.54bk.com/user1/7297/archives/2006/32684.html</a>
<img src ="http://www.blogjava.net/MEYE/aggbug/40081.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/MEYE/" target="_blank">MEYE</a> 2006-04-09 13:08 <a href="http://www.blogjava.net/MEYE/articles/40081.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>前触发器和后触发器简介(downmoon)</title><link>http://www.blogjava.net/MEYE/articles/39919.html</link><dc:creator>MEYE</dc:creator><author>MEYE</author><pubDate>Fri, 07 Apr 2006 13:38:00 GMT</pubDate><guid>http://www.blogjava.net/MEYE/articles/39919.html</guid><wfw:comment>http://www.blogjava.net/MEYE/comments/39919.html</wfw:comment><comments>http://www.blogjava.net/MEYE/articles/39919.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/MEYE/comments/commentRss/39919.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/MEYE/services/trackbacks/39919.html</trackback:ping><description><![CDATA[
		<span id="ArticleContent1_ArticleContent1_lblContent">前触发器和后触发器简介(downmoon)<br /><br />    触发器是一种特殊的存储过程。当Insert Update 或者Delete 语句修改表中一个或者多个行时执行触发器。因为SQL Server 对特定表上的每一个指定操作调用一个触发器，所以可以使用触发器扩展SQL Sever 的内置完整性和数据操纵功能.<br />    注意:<span style="COLOR: rgb(255,0,0)">不像Delete 语句，Trancate Table 语句不激活触发器，Write Text 语句也不激活触发器。</span><br />    在SQL Sever 2000 中支持两种类型的触发器，前触发器(Instead Of Trigger)和后触发器(After Trigger)。前触发器就是在语句执行之前激活触发器，而后触发器就是在语句执行之后激活触发器。可以通过FOR 子句来选择使用何种触发器。<br />    当为每一种操作创建一个触发器时，可以为所有三种操作创建一个触发器，并且使用相应的编程技术处理每一种操作。下面的示例在For 子句中列出了三种语句类型并，且使用条件语句将相应的跟踪值插入到CustUpdLog 表中。<br />Create Trigger TrackCustomerUpdates<br />On AppDta.dbo.Customer<br />For Insert,Update,Delete<br />As<br />Declare @InsertedCount Int<br />Declare @DeletedCount Int<br />Set @InsertedCount=(Select Count(*)From inserted)<br />Set @DeletedCount=(Select Count(*)From deleted)<br />If ( @InsertedCount&gt;0)Begin<br />Insert Into AppDta.dbo.CustUpdLog<br />( CustID,<br />Action,<br />UpdUser,<br />UpdDateTime)<br />Select CustId,<br />Case<br />When( @DeletedCount&gt;0)Then<br />'Update'<br />Else 'Insert'<br />End,<br />Current_User,<br />Current_TimeStamp<br />From inserted<br />End<br />Else If(@DeletedCount&gt;0)Begin<br />Insert Into AppDta.dbo.CustUpdLog<br />( CustId,<br />Action,<br />UpdUser,<br />UpdDateTime)<br />select CustId,<br />'Delete',<br />Current_User,<br />Current_TimeStamp<br />From deleted<br />End<br />    正如本例所示，无论何时Insert 或者Update 语句影响一个或者多行时，inserted 临时表都有记录行。无论何时Delete 或者Update 语句影响一个或者多行时，deleted 临时表都有记录行。对于一个Update 语句，deleted 临时表有旧行，inserted 临时表有新行。这个示例还反映了触发器的另一个重要方面：<span style="COLOR: rgb(255,0,0)">对于某个表的Update 或者Delete 操作，即使该语句没有影响到行，也激活触发器 (也就是说没有满足Where 子句的行)。 触发器的存储过程应该预测这种可能性。</span><br /><br /><br />    不仅可以为一个表创建多个触发器，而且还可以为一个表的同一个SQL 语句(例如Update 语句)创建多个后触发器，不能为同一个SQL 语句创建多个前触发器。每一个新的Create Trigger 语句增加触发器到那些指定表和语句已有的触发器中。对于所创建的多个触发器，可以用系统存储过程sp_settriggerorder 来指定第一个被激活的触发器和最后一个被激活的触发器，而对于其他的触发器，则不能指定其激活顺序，只能由系统决定。这种触发器的特征不会引起任何特殊的问题。因为总是可以实现各种动作作为正常的存储过程，并且按照要求的顺序从一个触发器中调用它们。<br /><br />    <span style="COLOR: rgb(51,51,153)">尽管触发器是一种存储过程，但是不能使用Execute 语句调用它</span>，如果有希望共享触发器和正常的存储过程的编码，那么只需把共享代码放在存储过程中，从触发器中调用它。如果一个触发器修改一个表，那么这些修改可能会激活另一个触发器，或者本身。在默认情况下，SQL Sever 允许这种嵌套的触发器调用深度为32层。虽然我们建议允许嵌套的和叠代的触发器，但是可以使用系统存储过程禁止这么做。下面的语句<span style="COLOR: rgb(51,51,153)">在指定的数据库上防止叠代触发器：</span><br />sp_dboption AppDta,`recursive triggers',`false'<br />    为了<span style="COLOR: rgb(51,51,153)">在所有数据库中防止嵌套触发器调用(包括叠代调用)</span>，可以使用下面的语句：<br />sp_configure `nested triggers',0<br /><br />    前面以后触发器为例介绍了触发器的基本内容，下面再介绍一下前触发器的不同之处。<span style="COLOR: rgb(255,0,0)">要创建一个前触发器必须用Instead Of 显式声明</span>，如下面的例子：<br />create Trigger TrackCustomerUpdates<br />On AppDta.dbo.Customer<br />Instead Of Update<br />As<br />Insert Into AppDta.dbo.CustUpdLog<br />(CustId,<br />Action,<br />UpdUser,<br />UpdDateTime)<br />Select CustId,<br />‘Update’,<br />Current_User,<br />Current_TimeStamp<br />From inserted<br />    与后触发器不同的是：前触发器既可以在表又可以在视图上创建，但一条语句只能创建一个前触发器，因此，前触发器不存在激活顺序问题<br /><br /><br />触发器应用举例：从当前数据库服务器的Shop表Insert操作同步到另一台服务器的Shop。<br /><br />CREATE TRIGGER Trigger_SynShopForInsert1<br />ON dbo.Shop<br />FOR INSERT<br />AS<br />  insert into OtherServer.dbo.shop<br />(<br />lngShopID,strShopCode,strName,strShopName,strDescription,lngIndex<br />)<br />select  lngShopID,strShopCode,strName,strShopName,strDescription,lngIndex<br />from shop where lngShopID in (select lngshopid from inserted)<br /><br />或者：<br /><br />CREATE TRIGGER Trigger_SynShopForInsert2<br />ON dbo.Shop<br />FOR INSERT<br />AS<br />  insert into OtherServer.dbo.shop<br />(<br />lngShopID,strShopCode,strName,strShopName,strDescription,lngIndex<br />)<br />select  lngShopID,strShopCode,strName,strShopName,strDescription,lngIndex<br />from  inserted<br /></span>
		<br />
		<div style="FONT-SIZE: 14px; LINE-HEIGHT: 25px">
				<strong>作者Blog：</strong>
				<a id="ArticleContent1_ArticleContent1_AuthorBlogLink" href="http://blog.csdn.net/downmoon/" target="_blank">http://blog.csdn.net/downmoon/</a>
		</div>
<img src ="http://www.blogjava.net/MEYE/aggbug/39919.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/MEYE/" target="_blank">MEYE</a> 2006-04-07 21:38 <a href="http://www.blogjava.net/MEYE/articles/39919.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>算法问题 用SQL写出当M*N时的螺旋矩阵算法 </title><link>http://www.blogjava.net/MEYE/articles/39916.html</link><dc:creator>MEYE</dc:creator><author>MEYE</author><pubDate>Fri, 07 Apr 2006 13:31:00 GMT</pubDate><guid>http://www.blogjava.net/MEYE/articles/39916.html</guid><wfw:comment>http://www.blogjava.net/MEYE/comments/39916.html</wfw:comment><comments>http://www.blogjava.net/MEYE/articles/39916.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/MEYE/comments/commentRss/39916.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/MEYE/services/trackbacks/39916.html</trackback:ping><description><![CDATA[
		<div class="postTitle">
				<a href="http://blog.csdn.net/l1t/archive/2006/04/05/651046.aspx">
						<img height="13" src="http://blog.csdn.net/images/zhuan.gif" width="15" border="0" /> 算法问题 用SQL写出当M*N时的螺旋矩阵算法</a>
				<script language="javascript"><![CDATA[ocument.title="算法问题 用SQL写出当M*N时的螺旋矩阵算法 - "+document.title]]&gt;</script>
		</div>
		<div class="postText">
				<p>
						<font face="Courier New" size="2">算法问题 用SQL写出当M*N时的螺旋矩阵算法<br />如下是一个4*4的矩阵:</font>
				</p>
				<p>
						<font face="Courier New" size="2">1 12 11 10<br />2 13 16  9<br />3 14 15  8<br />4  5  6  7</font>
				</p>
				<p>
						<font face="Courier New" size="2">按照上面矩阵的规律, 请用SQL写出当M*N时的矩阵算法</font>
				</p>
				<p>
						<font face="Courier New" size="2">实现的sql和效果:</font>
				</p>
				<p>
						<br />
						<font face="Courier New" size="2">代码:--------------------------------------------------------------------------------<br />SQL&gt; -- 逆时针的<br />SQL&gt; select --i,<br />  2         sum(decode(j, 1, rn)) as co11,<br />  3         sum(decode(j, 2, rn)) as co12,<br />  4         sum(decode(j, 3, rn)) as co13,<br />  5         sum(decode(j, 4, rn)) as co14<br />  6    from (select i, j, rank() over(order by tag) as rn<br />  7            from (select i,<br />  8                         j,<br />  9                         -- 逆时针螺旋特征码 counter-clockwise<br /> 10                         case least(j - 1, 4 - i, 4 - j, i - 1)<br /> 11                           when j - 1 then<br /> 12                            (j - 1) || '1' || i<br /> 13                           when 4-i then<br /> 14                            (4 - i) || '2' || j<br /> 15                           when 4 - j then<br /> 16                            (4 - j) || '3' || (4 - i)<br /> 17                           when i - 1 then<br /> 18                            (i - 1) || '4' || (4 - j)<br /> 19                         end as tag<br /> 20                    from (select level as i from dual connect by level &lt;= 4) a,<br /> 21                         (select level as j from dual connect by level &lt;= 4) b))<br /> 22   group by i<br /> 23  /</font>
				</p>
				<p>
						<font face="Courier New" size="2">      CO11       CO12       CO13       CO14<br />---------- ---------- ---------- ----------<br />         1         12         11         10<br />         2         13         16          9<br />         3         14         15          8<br />         4          5          6          7</font>
				</p>
				<p>
						<font face="Courier New" size="2">SQL&gt; -- 顺时针的<br />SQL&gt; select --i,<br />  2         sum(decode(j, 1, rn)) as co11,<br />  3         sum(decode(j, 2, rn)) as co12,<br />  4         sum(decode(j, 3, rn)) as co13,<br />  5         sum(decode(j, 4, rn)) as co14<br />  6    from (select i, j, rank() over(order by tag) as rn<br />  7            from (select i,<br />  8                         j,<br />  9                         -- 顺时针螺旋特征码 clockwise<br /> 10                         case least(i - 1, 4 - j, 4 - i, j - 1)<br /> 11                           when i - 1 then<br /> 12                            (i - 1) || '1' || j<br /> 13                           when 4 - j then<br /> 14                            (4 - j) || '2' || i<br /> 15                           when 4 - i then<br /> 16                            (4 - i) || '3' || (4 - j)<br /> 17                           when j - 1 then<br /> 18                            (j - 1) || '4' || (4 - i)<br /> 19                         end as tag<br /> 20                    from (select level as i from dual connect by level &lt;= 4) a,<br /> 21                         (select level as j from dual connect by level &lt;= 4) b))<br /> 22   group by i<br /> 23  /</font>
				</p>
				<p>
						<font face="Courier New" size="2">      CO11       CO12       CO13       CO14<br />---------- ---------- ---------- ----------<br />         1          2          3          4<br />        12         13         14          5<br />        11         16         15          6<br />        10          9          8          7</font>
				</p>
				<p>
						<font face="Courier New" size="2">----------------------------------------------------------------------------------------</font>
				</p>
				<p>
						<br />
						<font face="Courier New" size="2">以上两种旋转都是由外向内的, 如果有兴趣也可以做成由内想外的<br />不过如果大家还要把结果90度旋转, 在顺序固定的情况下, 应该就是行列转换的问题了<br />不过如果要做成圆形的, 我觉得不太可能了, 正n边形倒是可以考虑, 不过要看n的值是多大, 如果趋于正无穷, 那就是圆了, ^_^</font>
				</p>
				<p>
						<font face="Courier New" size="2">对了，jacky，能大概说一下这个螺旋特征码的算法原理么？ <br />--------------------------------------------------------------------------------</font>
				</p>
				<p>
						<br />
						<font face="Courier New" size="2">螺旋总要有个起点, 就用上面的那个结果来说明吧<br />起点是(1,1), 如果是顺时针的话, 旋转时依次走过的途径是 上-&gt;右-&gt;下-&gt;左-&gt;上-&gt;右-&gt;下-&gt;左..., 知道最后在螺旋中心结束, 但是可以注意到旋转是会越来越远离外边界<br />根据这个我们就可以获取螺旋特征码了<br />4*4的矩阵, 那么可以认为 i=1, j=1, i=4, j=4, 这就是这个螺旋的4个边界, 顺时针旋转时, 离边界越近, 那么顺序就越靠前, 当距离边界相同时, 边界的优先级就要根据 上右下左(起点为1,1, 顺时针旋转的边界优先级) 而定了, 如果这个也相同, 那么就要根据这个点离前一个边界的距离而定, 离的越近, 优先级越高, 根据以上规则, 可以得出特征码共有三位, 第一位代表距离边界的距离, 第二位代表距离哪个边界最近(我的sql中用1,2,3,4分别表示四个边界), 第三位代表距离前一个边界的距离(因为目的是为了排序, 计算时没有严格按照这个距离值进行表示^_^)<br />对应上面螺旋特征码的规则, 使用case least(...)判断离边界的距离和距离最近的边界是那个边界, when ... then后的取值再确定距离前一个边界的距离, 这样就完成了特征码, 剩下的就是对特征码排序和行列转换了, 这个就不用说了吧, 大家应该都会了, ^_^</font>
				</p>
				<p>
						<font face="Courier New" size="2">
						</font>
				</p>
				<p>
						<font face="Courier New" size="2">也来学一下JACKYWOOD兄, 写一个SQL:</font>
				</p>
				<p>
						<font face="Courier New" size="2">JACK的实现, 采用了行列转换把生成的序列做成二维表, 所以要求列数是固定的, 若要实现N的矩阵的算法, 行列转换正如其所言, 可以通过二个SQL实现. <br />现换一下思路, 用SYS_CONNECT_BY_PATH函数, 借用JACK的思路, 实现N的矩阵生成, 如下请各位指点:</font>
				</p>
				<p>
						<font face="Courier New" size="2">
						</font>
				</p>
				<p>
						<font face="Courier New" size="2">代码:--------------------------------------------------------------------------------<br />SQL&gt; var n number;<br />SQL&gt; exec :n := 3;</font>
				</p>
				<p>
						<font face="Courier New" size="2">PL/SQL 过程已成功完成。</font>
				</p>
				<p>
						<font face="Courier New" size="2">SQL&gt; select replace(max(sys_connect_by_path(rank, ',')), ',') str<br />  2     from (select i, j,<br />  3                 to_char(rank() over(order by tag), '9999') as rank<br />  4            from (select i,<br />  5                         j,<br />  6                   -- 逆时针螺旋特征码 counter-clockwise<br />  7                         case least(j - 1, :n - i, :n - j, i - 1)<br />  8                         when j - 1 then<br />  9                            (j - 1) || '1' || i<br /> 10                         when :n - i then<br /> 11                            (:n - i) || '2' || j<br /> 12                         when :n - j then<br /> 13                            (:n - j) || '3' || (:n - i)<br /> 14                         when i - 1 then<br /> 15                            (i - 1) || '4' || (:n - j)<br /> 16                         end as tag<br /> 17                    from (select level as i from dual connect by level &lt;= :n) a,<br /> 18                         (select level as j from dual connect by level &lt;= :n) b<br /> 19                 )<br /> 20          )<br /> 21     start with j = 1<br /> 22     connect by j - 1 = prior j and i = prior i<br /> 23     group by i<br /> 24     order by i;</font>
				</p>
				<p>
						<font face="Courier New" size="2">STR<br />-------------------------------------------------------------------------------------------------<br />    1    8    7<br />    2    9    6<br />    3    4    5</font>
				</p>
				<p>
						<font face="Courier New" size="2">SQL&gt; exec :n := 4;</font>
				</p>
				<p>
						<font face="Courier New" size="2">PL/SQL 过程已成功完成。</font>
				</p>
				<p>
						<font face="Courier New" size="2">SQL&gt; /</font>
				</p>
				<p>
						<font face="Courier New" size="2">STR<br />-------------------------------------------------------------------------------------------------<br />    1   12   11   10<br />    2   13   16    9<br />    3   14   15    8<br />    4    5    6    7</font>
				</p>
				<p>
						<font face="Courier New" size="2">SQL&gt; exec :n := 5;</font>
				</p>
				<p>
						<font face="Courier New" size="2">PL/SQL 过程已成功完成。</font>
				</p>
				<p>
						<font face="Courier New" size="2">SQL&gt; /</font>
				</p>
				<p>
						<font face="Courier New" size="2">STR<br />-------------------------------------------------------------------------------------------------<br />    1   16   15   14   13<br />    2   17   24   23   12<br />    3   18   25   22   11<br />    4   19   20   21   10<br />    5    6    7    8    9</font>
				</p>
				<p>
						<font face="Courier New" size="2">SQL&gt;<br />不妨也填足一下:</font>
				</p>
				<p>
						<font face="Courier New" size="2">
						</font>
				</p>
				<p>
						<font face="Courier New" size="2">代码:--------------------------------------------------------------------------------<br />SQL&gt; exec :n := 5</font>
				</p>
				<p>
						<font face="Courier New" size="2">PL/SQL 过程已成功完成。</font>
				</p>
				<p>
						<font face="Courier New" size="2">SQL&gt;  select replace(max(sys_connect_by_path(rank, ',')), ',') str<br />  2      from (select i, j,<br />  3                  case when rank() over(order by tag) - floor(:n * :n / 2) &lt;= 0 then '     '<br />  4                       else to_char(rank() over(order by tag) - floor(:n * :n / 2), '9999') end as rank,<br />  5                  min(j) over(partition by i) minj<br />  6             from (select i,<br />  7                          j,<br />  8                    -- 顺时针螺旋特征码 counter-clockwise<br />  9                          case greatest(i - j, i + j - :n - 1, j - i, :n - i - j + 1)<br /> 10                          when i - j then<br /> 11                             :n - (i - j) || '1' || i<br /> 12                          when i + j - :n - 1 then<br /> 13                             :n - (i + j - :n - 1) || '2' || j<br /> 14                          when j - i then<br /> 15                             :n - (j - i) || '3' || (:n - i)<br /> 16                          when :n - i - j + 1 then<br /> 17                             :n - (:n - i - j + 1) || '4' || i<br /> 18                          end as tag<br /> 19                     from (select level as i from dual connect by level &lt;= :n) a,<br /> 20                          (select level as j from dual connect by level &lt;= :n) b<br /> 21   --                  where abs(i - j) &lt; floor(:n / 2 + .6)<br /> 22   --                    and i + j between floor(:n / 2 + .6) + 1 and floor(:n / 2 + .6) + :n<br /> 23                 )<br /> 24           )<br /> 25      start with j = minj<br /> 26      connect by j - 1 = prior j and i = prior i<br /> 27      group by i<br /> 28      order by i;</font>
				</p>
				<p>
						<font face="Courier New" size="2">STR<br />----------------------------------------------------------------------------------------------------------------------<br />              7<br />         8   12    6<br />    1    9   13   11    5<br />         2   10    4<br />              3</font>
				</p>
				<p>
						<font face="Courier New" size="2">SQL&gt; exec :n := 7;</font>
				</p>
				<p>
						<font face="Courier New" size="2">PL/SQL 过程已成功完成。</font>
				</p>
				<p>
						<font face="Courier New" size="2">SQL&gt; /</font>
				</p>
				<p>
						<font face="Courier New" size="2">STR<br />----------------------------------------------------------------------------------------------------------------------<br />                  10<br />             11   19    9<br />        12   20   24   18    8<br />    1   13   21   25   23   17    7<br />         2   14   22   16    6<br />              3   15    5<br />                   4</font>
				</p>
				<p>
						<font face="Courier New" size="2">已选择7行。</font>
				</p>
				<p>
						<font face="Courier New" size="2">SQL&gt; exec :n := 9;</font>
				</p>
				<p>
						<font face="Courier New" size="2">PL/SQL 过程已成功完成。</font>
				</p>
				<p>
						<font face="Courier New" size="2">SQL&gt; /</font>
				</p>
				<p>
						<font face="Courier New" size="2">STR<br />----------------------------------------------------------------------------------------------------------------------<br />                       13<br />                  14   26   12<br />             15   27   35   25   11<br />        16   28   36   40   34   24   10<br />    1   17   29   37   41   39   33   23    9<br />         2   18   30   38   32   22    8<br />              3   19   31   21    7<br />                   4   20    6<br />                        5</font>
				</p>
				<p>
						<font face="Courier New" size="2">已选择9行。</font>
				</p>
				<p>
						<font face="Courier New" size="2">SQL&gt; exec :n := 8</font>
				</p>
				<p>
						<font face="Courier New" size="2">PL/SQL 过程已成功完成。</font>
				</p>
				<p>
						<font face="Courier New" size="2">SQL&gt; /</font>
				</p>
				<p>
						<font face="Courier New" size="2">STR<br />----------------------------------------------------------------------------------------------------------------------<br />                   5    4<br />              6   18   17    3<br />         7   19   27   26   16    2<br />    8   20   28   32   31   25   15    1<br />         9   21   29   30   24   14<br />             10   22   23   13<br />                  11   12</font>
				</p>
				<p>
						<font face="Courier New" size="2">
						</font>
				</p>
				<p>
						<font face="Courier New" size="2">对于比较大的N值, 需对"顺时针螺旋特征码"的组成进行适当修改:</font>
				</p>
				<p>
						<font face="Courier New" size="2">
						</font>
				</p>
				<p>
						<font face="Courier New" size="2">代码:--------------------------------------------------------------------------------<br />1   select replace(max(sys_connect_by_path(rank, ',')), ',') str<br />  2      from (select i, j,<br />  3                  case when rank() over(order by tag) - floor(:n * :n / 2) &lt;= 0 then '     '<br />  4                       else to_char(rank() over(order by tag) - floor(:n * :n / 2), '9999') end as rank,<br />  5                  min(j) over(partition by i) minj<br />  6             from (select i,<br />  7                          j,<br />  8                    -- 逆时针螺旋特征码 counter-clockwise<br />  9                          case greatest(i - j, i + j - :n - 1, j - i, :n - i - j + 1)<br /> 10                          when i - j then<br /> 11                             chr(:n - (i - j)) || '1' || chr(i)<br /> 12                          when i + j - :n - 1 then<br /> 13                             chr(:n - (i + j - :n - 1)) || '2' || chr(j)<br /> 14                          when j - i then<br /> 15                             chr(:n - (j - i)) || '3' || chr((:n - i))<br /> 16                          when :n - i - j + 1 then<br /> 17                             chr(:n - (:n - i - j + 1)) || '4' || chr(i)<br /> 18                          end as tag<br /> 19                     from (select level as i from dual connect by level &lt;= :n) a,<br /> 20                          (select level as j from dual connect by level &lt;= :n) b<br /> 21   --                  where abs(i - j) &lt; floor(:n / 2 + .6)<br /> 22   --                    and i + j between floor(:n / 2 + .6) + 1 and floor(:n / 2 + .6) + :n<br /> 23                 )<br /> 24           )<br /> 25      start with j = minj<br /> 26      connect by j - 1 = prior j and i = prior i<br /> 27      group by i<br /> 28*     order by i<br />SQL&gt; /</font>
				</p>
				<p>
						<font face="Courier New" size="2">STR<br />-------------------------------------------------------------------------------------------------------------------<br />                                 19<br />                            20   40   18<br />                       21   41   57   39   17<br />                  22   42   58   70   56   38   16<br />             23   43   59   71   79   69   55   37   15<br />        24   44   60   72   80   84   78   68   54   36   14<br />    1   25   45   61   73   81   85   83   77   67   53   35   13<br />         2   26   46   62   74   82   76   66   52   34   12<br />              3   27   47   63   75   65   51   33   11<br />                   4   28   48   64   50   32   10<br />                        5   29   49   31    9<br />                             6   30    8<br />                                  7</font>
				</p>
				<p>
						<font face="Courier New" size="2">--------------------------------------------------------------------------------<br />想来是的, 这样你看如何?</font>
				</p>
				<p>
						<font face="Courier New" size="2">
						</font>
				</p>
				<p>
						<font face="Courier New" size="2">代码:--------------------------------------------------------------------------------<br />1  select replace(max(sys_connect_by_path(rank, ',')), ',') str<br />  2     from (select i, j,<br />  3                 to_char(rank() over(order by tag), '9999') as rank<br />  4            from (select i,<br />  5                         j,<br />  6                   -- 逆时针螺旋特征码 counter-clockwise<br />  7                         case least(j - 1, &amp;&amp;1 - i, &amp;1 - j, i - 1)<br />  8                         when j - 1 then<br />  9                            (j - 1) || '1' || i<br /> 10                         when &amp;1 - i then<br /> 11                            (&amp;1 - i) || '2' || j<br /> 12                         when &amp;1 - j then<br /> 13                            (&amp;1 - j) || '3' || (&amp;1 - i)<br /> 14                         when i - 1 then<br /> 15                            (i - 1) || '4' || (&amp;1 - j)<br /> 16                         end as tag<br /> 17                    from (select level as i from dual connect by level &lt;= &amp;1) a,<br /> 18                         (select level as j from dual connect by level &lt;= &amp;1) b<br /> 19                 )<br /> 20          )<br /> 21     start with j = 1<br /> 22     connect by j - 1 = prior j and i = prior i<br /> 23     group by i<br /> 24*    order by i<br />SQL&gt; /<br />输入 1 的值:  5<br />原值    7:                        case least(j - 1, &amp;&amp;1 - i, &amp;1 - j, i - 1)<br />新值    7:                        case least(j - 1, 5 - i, 5 - j, i - 1)<br />原值   10:                        when &amp;1 - i then<br />新值   10:                        when 5 - i then<br />原值   11:                           (&amp;1 - i) || '2' || j<br />新值   11:                           (5 - i) || '2' || j<br />原值   12:                        when &amp;1 - j then<br />新值   12:                        when 5 - j then<br />原值   13:                           (&amp;1 - j) || '3' || (&amp;1 - i)<br />新值   13:                           (5 - j) || '3' || (5 - i)<br />原值   15:                           (i - 1) || '4' || (&amp;1 - j)<br />新值   15:                           (i - 1) || '4' || (5 - j)<br />原值   17:                   from (select level as i from dual connect by level &lt;= &amp;1) a,<br />新值   17:                   from (select level as i from dual connect by level &lt;= 5) a,<br />原值   18:                        (select level as j from dual connect by level &lt;= &amp;1) b<br />新值   18:                        (select level as j from dual connect by level &lt;= 5) b</font>
				</p>
				<p>
						<font face="Courier New" size="2">STR<br />--------------------------------------------------------------------------------------------</font>
				</p>
				<p>
						<font face="Courier New" size="2">    1   16   15   14   13<br />    2   17   24   23   12<br />    3   18   25   22   11<br />    4   19   20   21   10<br />    5    6    7    8    9</font>
				</p>
				<p>
						<font face="Courier New" size="2">SQL&gt;--------------------------------------------------------------------------------<br />使用前, 给声明m和n并赋值</font>
				</p>
				<p>
						<br />
						<font face="Courier New" size="2">代码:--------------------------------------------------------------------------------<br />var n number;<br />var m number;</font>
				</p>
				<p>
						<font face="Courier New" size="2">exec :n := &amp;n; :m=&amp;m;</font>
				</p>
				<p>
						<font face="Courier New" size="2">with t as (<br />  select :n as n, :m as m from dual<br />)<br />select replace(max(sys_connect_by_path(rank, ',')), ',') str<br />  from (select i, j, to_char(rank() over(order by tag), '999999') as rank<br />          from (select i,<br />                       j,<br />                       -- 顺时针螺旋特征码 clockwise<br />                       case least(i - 1, m - j, n - i, j - 1)<br />                         when i - 1 then<br />                          to_char(i - 1, 'fm0000') || '1' ||<br />                          to_char(j - 1, 'fm0000')<br />                         when m - j then<br />                          to_char(m - j, 'fm0000') || '2' ||<br />                          to_char(i - 1, 'fm0000')<br />                         when n - i then<br />                          to_char(n - i, 'fm0000') || '3' ||<br />                          to_char(m - j, 'fm0000')<br />                         when j - 1 then<br />                          to_char(j - 1, 'fm0000') || '4' ||<br />                          to_char(n - i, 'fm0000')<br />                       end as tag<br />                  from (select n, level as i from t connect by level &lt;= n) a,<br />                       (select m, level as j from t connect by level &lt;= m) b))<br /> start with j = 1<br />connect by j - 1 = prior j and i = prior i<br /> group by i<br />-----------------------------------------------------------------------------------------------</font>
				</p>
		</div>
<img src ="http://www.blogjava.net/MEYE/aggbug/39916.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/MEYE/" target="_blank">MEYE</a> 2006-04-07 21:31 <a href="http://www.blogjava.net/MEYE/articles/39916.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>算法问题 用PL/SQL写出当M*N时的螺旋矩阵算法   </title><link>http://www.blogjava.net/MEYE/articles/39915.html</link><dc:creator>MEYE</dc:creator><author>MEYE</author><pubDate>Fri, 07 Apr 2006 13:30:00 GMT</pubDate><guid>http://www.blogjava.net/MEYE/articles/39915.html</guid><wfw:comment>http://www.blogjava.net/MEYE/comments/39915.html</wfw:comment><comments>http://www.blogjava.net/MEYE/articles/39915.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/MEYE/comments/commentRss/39915.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/MEYE/services/trackbacks/39915.html</trackback:ping><description><![CDATA[
		<table cellpadding="4" width="100%" border="0">
				<tbody>
						<tr>
								<td height="19">
										<table cellspacing="3" cellpadding="3" width="100%" bgcolor="#eeeeee" border="0">
												<tbody>
														<tr>
																<td>
																		<b>
																				<span id="ArticleTitle1_ArticleTitle1_lblTitle">
																				</span>
																		</b>
																</td>
														</tr>
												</tbody>
										</table>
										<table cellspacing="3" cellpadding="3" width="100%" bgcolor="#eeeeee" border="0">
												<tbody>
														<tr>
																<td>
																		<b>
																				<span id="ArticleTitle1_ArticleTitle1_lblTitle">题 用PL/SQL写出当M*N时的螺旋矩阵算法</span>
																		</b>  </td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
						<tr>
								<td width="10">
								</td>
								<td>
										<span id="ArticleContent1_ArticleContent1_lblContent">
												<p>
														<font face="Courier New" size="2">算法问题 用PL/SQL写出当M*N时的螺旋矩阵算法<br />如下是一个4*4的矩阵:</font>
												</p>
												<p>
														<font face="Courier New" size="2">1 12 11 10<br />2 13 16  9<br />3 14 15  8<br />4  5  6  7</font>
												</p>
												<p>
														<font face="Courier New" size="2">按照上面矩阵的规律, 请用PL/SQL写出当M*N时的矩阵算法</font>
												</p>
												<p>
														<font face="Courier New" size="2">1996年我考程序员时候见过类似问题 </font>
												</p>
												<p>
														<font face="Courier New" size="2">代码:--------------------------------------------------------------------------------<br />试题三 <br />　　阅读以下程序说明和C程序，将应填入程序中 （n） 处的字句，写在答卷的对应栏内。 </font>
												</p>
												<p>
														<font face="Courier New" size="2">[程序说明] <br />　　本程序将自然数 1，2，……，N2 按蛇形方式逐个顺序存入 N 阶矩阵。 例如，当 N = 3 和 4 时分别如图 3.1 和图 3.2。 <br />　　　　　　　　　　　　　　　　　　　　　　　7 　13 　14 　16<br />　　　　　　　　　　　　　　6　 7　 9 　　　　6 　8　　12 　15<br />　　　　　　　　　　　　　　2 　5 　8 　　　　2 　5　　9　　11<br />　　　　　　　　　　　　　　1 　3　 4 　　　　1 　3　　4　　10<br />　　　　　　　　　　　　　　　图3.1 　　　　　　图3.2<br />从 an0 开始到 a0n 为止（n = N-1）顺序填入自然数，交替地对每一斜列从左上元素向右下元素或从右下元素向左上元素存数。</font>
												</p>
												<p>
														<font face="Courier New" size="2">[程序] <br />#include <br />#define SIZE 10 <br />int a[SIZE] [SIZE], k; <br />main() <br />{ int i, j, n, N; <br />for (N = 3;N&lt;=SIZE; N++) <br />{ k = 1; <br />makeArray (n = N-1); <br />printf (＂nN = %d;n＂,n+1); <br />for (i = 0;i&lt;=n; i++) <br />{ for (j = 0; j&lt;=n; j++)printf(＂%4d＂,a[i][j]); <br />printf (＂n＂); <br />} <br />} <br />} <br />makeline (int row_start, int col_start, int row_end) <br />{ /*完成矩阵一条斜线的整数填写*/ <br />int i, j, sign = ____(1)____; <br />for (i = row_start, j = col_start;____(2)____ &gt;=0; i += sign,j += sign) <br />a[i][j] = k++; <br />} <br />makeArray (int n) <br />{ /* 完成矩阵每条斜线的整数填写*/ <br />int d; <br />for (d = 1; d &lt;= ___(3)___; d++) <br />if (d &lt;= n); <br />if (d%2) makeline (____(4)____); else makeline(____(5)____); <br />else <br />if (d%2) makeline (____(6)____); else makeline(____(7)____); <br />}</font>
												</p>
												<p>
														<font face="Courier New" size="2">
														</font>
												</p>
												<p>
														<font face="Courier New" size="2">PL?SQL<br />代码:--------------------------------------------------------------------------------<br />declare<br />  type t_matrix is table of number index by binary_integer;<br />  v_helix   t_matrix;<br />  i         number;<br />  j         number;<br />  direction pls_integer; -- right:0, up:1, left:2, down:3<br />  M         number;<br />  N         number;<br />  <br />  -- 模拟2维数组 begin<br />  function new_matrix (rows integer, cols integer) return t_matrix is<br />    v_result t_matrix;<br />  begin<br />    v_result(0):=cols;<br />    for i in 1 .. rows*cols loop<br />        v_result(i) := null;<br />    end loop;<br />    return v_result;<br />  end;</font>
												</p>
												<p>
														<font face="Courier New" size="2">  procedure set_val(p_matrix in out t_matrix, i integer, j integer, val number) is<br />  begin<br />    p_matrix( (i-1)* p_matrix(0) +j ) := val;<br />  end;<br />  <br />  function get_val(p_matrix t_matrix, i integer, j integer) return number is<br />  begin<br />    return p_matrix( (i-1)* p_matrix(0) +j );<br />  end;</font>
												</p>
												<p>
														<font face="Courier New" size="2">  procedure print_matrix(m t_matrix) is<br />    i integer;<br />    j integer;<br />  begin<br />    for i in 1 .. m.count/m(0) loop<br />      for j in 1 .. m(0) loop<br />        dbms_output.put(to_char(m((i-1)*m(0)+j),'9999990'));<br />      end loop;<br />      dbms_output.new_line;<br />    end loop;<br />  end;<br />  -- 模拟2维数组 end</font>
												</p>
												<p>
														<font face="Courier New" size="2">  --寻找"下一个位置"<br />  function go_next<br />  (<br />    p_helix  in out t_matrix,<br />    p_i      in out number,<br />    p_j      in out number,<br />    p_dir    in out pls_integer,<br />    p_altdir char<br />  ) return boolean is<br />    dir_offset constant varchar2(16) := '+0+1-1+0+0-1+1+0'; -- i,j offset in each direction<br />    ii    number;<br />    jj    number;<br />    times pls_integer := 0;<br />  begin<br />    loop<br />      ii    := p_i + substr(dir_offset, p_dir * 4 + 1, 2);<br />      jj    := p_j + substr(dir_offset, p_dir * 4 + 2 + 1, 2);<br />      times := times + 1;<br />    <br />      exit when(ii between 1 and p_helix.count/p_helix(0) <br />               and jj between 1 and p_helix(0) <br />               and get_val(p_helix,ii,jj) is null);<br />    <br />      if times &gt;= 4 then<br />        return false;<br />      end if;<br />      if p_altdir = 'L' then      -- turn left<br />        p_dir := mod(p_dir + 1, 4);<br />      elsif p_altdir = 'R' then   -- turn right<br />        p_dir := mod(p_dir + 3, 4);<br />      end if;<br />    end loop;<br />    p_i := ii;<br />    p_j := jj;<br />    return true;<br />  end;</font>
												</p>
												<p>
														<font face="Courier New" size="2">--主程序<br />begin<br />  M := 4;<br />  N := 5;</font>
												</p>
												<p>
														<font face="Courier New" size="2">  v_helix   := new_matrix(M, N);<br />  i         := 1;<br />  j         := 1;<br />  direction := 3;<br />  for x in 1 .. M * N loop<br />    set_val(v_helix, i, j,  x);<br />    exit when not go_next(v_helix, i, j, direction, 'L');<br />  end loop;<br />  print_matrix(v_helix);</font>
												</p>
												<p>
														<font face="Courier New" size="2">  --已经完成任务，以下可以叫做画蛇添足：）</font>
												</p>
												<p>
														<font face="Courier New" size="2">  dbms_output.new_line;</font>
												</p>
												<p>
														<font face="Courier New" size="2">  v_helix   := new_matrix(M, N);<br />  i         := 1;<br />  j         := 1;<br />  direction := 0;<br />  for x in 1 .. M * N loop<br />    set_val(v_helix, i, j,  x);<br />    exit when not go_next(v_helix, i, j, direction, 'R');<br />  end loop;<br />  print_matrix(v_helix);</font>
												</p>
												<p>
														<font face="Courier New" size="2">  dbms_output.new_line;</font>
												</p>
												<p>
														<font face="Courier New" size="2">  v_helix   := new_matrix(M, N);<br />  i         := 1;<br />  j         := 1;<br />  direction := 3;<br />  for x in 1 .. M * N loop<br />    set_val(v_helix, i, j, M*N-x+1);<br />    exit when not go_next(v_helix, i, j, direction, 'L');<br />  end loop;<br />  print_matrix(v_helix);</font>
												</p>
												<p>
														<font face="Courier New" size="2">  dbms_output.new_line;</font>
												</p>
												<p>
														<font face="Courier New" size="2">  v_helix   := new_matrix(M, N);<br />  i         := 1;<br />  j         := 1;<br />  direction := 0;<br />  for x in 1 .. M * N loop<br />    set_val(v_helix, i, j, M*N-x+1);<br />    exit when not go_next(v_helix, i, j, direction, 'R');<br />  end loop;<br />  print_matrix(v_helix);<br />end;</font>
												</p>
												<p>
														<font face="Courier New" size="2">       1      14      13      12      11<br />       2      15      20      19      10<br />       3      16      17      18       9<br />       4       5       6       7       8</font>
												</p>
												<p>
														<font face="Courier New" size="2">       1       2       3       4       5<br />      14      15      16      17       6<br />      13      20      19      18       7<br />      12      11      10       9       8</font>
												</p>
												<p>
														<font face="Courier New" size="2">      20       7       8       9      10<br />      19       6       1       2      11<br />      18       5       4       3      12<br />      17      16      15      14      13</font>
												</p>
												<p>
														<font face="Courier New" size="2">      20      19      18      17      16<br />       7       6       5       4      15<br />       8       1       2       3      14<br />       9      10      11      12      13</font>
												</p>
												<p>
														<font face="Courier New" size="2">---------------<br />再包一层，多玩点花样：</font>
												</p>
												<p>
														<br />
														<font face="Courier New" size="2">代码:--------------------------------------------------------------------------------<br />declare<br />  procedure draw_helix ( M number, N number, init_i integer, init_j integer, init_dir integer, screw_dir char, asc_order boolean := true) is<br />    type t_matrix is table of number index by binary_integer;<br />    v_helix   t_matrix;<br />    element   number;<br />    i         integer := init_i;<br />    j         integer := init_j;<br />    direction integer := init_dir; -- right:0, up:1, left:2, down:3<br />  <br />    -- 模拟2维数组 begin<br />    function new_matrix( rows integer, cols integer ) return t_matrix is<br />      v_result t_matrix;<br />    begin<br />      v_result(0) := cols;<br />      for i in 1 .. rows * cols loop<br />        v_result(i) := null;<br />      end loop;<br />      return v_result;<br />    end;<br />  <br />    procedure set_val (p_matrix in out t_matrix, i integer, j integer, val number ) is<br />    begin<br />      p_matrix((i - 1) * p_matrix(0) + j) := val;<br />    end;<br />  <br />    function get_val ( p_matrix t_matrix, i integer, j integer ) return number is<br />     begin<br />      return p_matrix((i - 1) * p_matrix(0) + j);<br />    end;<br />  <br />    procedure print_matrix(m t_matrix) is<br />      i integer;<br />      j integer;<br />    begin<br />      for i in 1 .. m.count / m(0) loop<br />        for j in 1 .. m(0) loop<br />          dbms_output.put( lpad(nvl(to_char(m((i - 1) * m(0) + j)), ' '), 8, ' ') );<br />        end loop;<br />        dbms_output.new_line;<br />      end loop;<br />    end;<br />    -- 模拟2维数组 end<br />  <br />    --寻找"下一个位置"<br />    function go_next (p_helix  in t_matrix, p_i in out number, p_j in out number, p_dir in out pls_integer, p_altdir char) return boolean is<br />      dir_offset constant varchar2(16) := '+0+1-1+0+0-1+1+0'; -- i,j offset in each direction<br />      ii    number;<br />      jj    number;<br />      times pls_integer := 0;<br />    begin<br />      loop<br />        ii    := p_i + substr(dir_offset, p_dir * 4 + 1, 2);<br />        jj    := p_j + substr(dir_offset, p_dir * 4 + 2 + 1, 2);<br />        times := times + 1;<br />      <br />        exit when(ii between 1 and p_helix.count / p_helix(0) and jj between 1 and p_helix(0) and<br />                  get_val(p_helix, ii, jj) is null);<br />      <br />        if times &gt;= 4 then<br />          return false;<br />        end if;<br />        if p_altdir = 'L' then<br />          -- turn left<br />          p_dir := mod(p_dir + 1, 4);<br />        elsif p_altdir = 'R' then<br />          -- turn right<br />          p_dir := mod(p_dir + 3, 4);<br />        end if;<br />      end loop;<br />      p_i := ii;<br />      p_j := jj;<br />      return true;<br />    end;<br />    --begin of draw_helix<br />  begin<br />    v_helix := new_matrix(M, N);<br />    for x in 1 .. M*N loop <br />      if asc_order then<br />        element := x;<br />      else<br />        element := M*N - x + 1;<br />      end if;<br />      set_val(v_helix, i, j, element);<br />      exit when not go_next(v_helix, i, j, direction, screw_dir);<br />    end loop;<br />    print_matrix(v_helix);<br />    dbms_output.new_line;<br />  end;</font>
												</p>
												<p>
														<font face="Courier New" size="2">--begin of main<br />begin<br />  draw_helix(4, 5, 1, 1, 3, 'L', true);<br />  draw_helix(4, 5, 1, 1, 0, 'R', true);<br />  draw_helix(4, 5, 1, 1, 3, 'L', false);<br />  draw_helix(4, 5, 4, 5, 2, 'R', true);<br />  draw_helix(4, 5, 1, 5, 2, 'L', true);<br />  draw_helix(4, 5, 1, 5, 3, 'R', false);</font>
												</p>
												<p>
														<font face="Courier New" size="2">  draw_helix(4, 5, 3, 3, 3, 'R', true);<br />  draw_helix(4, 5, 2, 3, 3, 'R', true);<br />end;</font>
												</p>
												<p>
														<font face="Courier New" size="2">       1      14      13      12      11<br />       2      15      20      19      10<br />       3      16      17      18       9<br />       4       5       6       7       8</font>
												</p>
												<p>
														<font face="Courier New" size="2">       1       2       3       4       5<br />      14      15      16      17       6<br />      13      20      19      18       7<br />      12      11      10       9       8</font>
												</p>
												<p>
														<font face="Courier New" size="2">      20       7       8       9      10<br />      19       6       1       2      11<br />      18       5       4       3      12<br />      17      16      15      14      13</font>
												</p>
												<p>
														<font face="Courier New" size="2">       8       9      10      11      12<br />       7      18      19      20      13<br />       6      17      16      15      14<br />       5       4       3       2       1</font>
												</p>
												<p>
														<font face="Courier New" size="2">       5       4       3       2       1<br />       6      17      16      15      14<br />       7      18      19      20      13<br />       8       9      10      11      12</font>
												</p>
												<p>
														<font face="Courier New" size="2">      10       9       8       7      20<br />      11       2       1       6      19<br />      12       3       4       5      18<br />      13      14      15      16      17</font>
												</p>
												<p>
														<font face="Courier New" size="2">       7       8       9      10      11<br />       6      19      18      17      12<br />       5      20       1      16      13<br />       4       3       2      15      14</font>
												</p>
												<p>
														<font face="Courier New" size="2">       8       9      10      11      12<br />       7               1      18      13<br />       6               2      17      14<br />       5       4       3      16      15</font>
												</p>
												<p>
														<br />
														<font face="Courier New" size="2">---<br />把 dir_offset改一下，就走斜线了 </font>
												</p>
												<p>
														<br />
														<font face="Courier New" size="2">代码:--------------------------------------------------------------------------------<br />declare<br />  procedure draw_helix ( M number, N number, init_i integer, init_j integer, init_dir integer, screw_dir char, asc_order boolean := true) is<br />    type t_matrix is table of number index by binary_integer;<br />    v_helix   t_matrix;<br />    element   number;<br />    i         integer := init_i;<br />    j         integer := init_j;<br />    direction integer := init_dir; -- right:0, up:1, left:2, down:3<br />  <br />    -- 模拟2维数组 begin<br />    function new_matrix( rows integer, cols integer ) return t_matrix is<br />      v_result t_matrix;<br />    begin<br />      v_result(0) := cols;<br />      for i in 1 .. rows * cols loop<br />        v_result(i) := null;<br />      end loop;<br />      return v_result;<br />    end;<br />  <br />    procedure set_val (p_matrix in out t_matrix, i integer, j integer, val number ) is<br />    begin<br />      p_matrix((i - 1) * p_matrix(0) + j) := val;<br />    end;<br />  <br />    function get_val ( p_matrix t_matrix, i integer, j integer ) return number is<br />     begin<br />      return p_matrix((i - 1) * p_matrix(0) + j);<br />    end;<br />  <br />    procedure print_matrix(m t_matrix) is<br />      i integer;<br />      j integer;<br />    begin<br />      for i in 1 .. m.count / m(0) loop<br />        for j in 1 .. m(0) loop<br />          dbms_output.put( lpad(nvl(to_char(m((i - 1) * m(0) + j)), ' '), 8, ' ') );<br />        end loop;<br />        dbms_output.new_line;<br />      end loop;<br />    end;<br />    -- 模拟2维数组 end<br />  <br />    --寻找"下一个位置"<br />    function go_next (p_helix  in t_matrix, p_i in out number, p_j in out number, p_dir in out pls_integer, p_altdir char) return boolean is<br />      --dir_offset constant varchar2(16) := '+0+1-1+0+0-1+1+0'; -- i,j offset in each direction<br />      dir_offset constant varchar2(16) := '-1+1-1-1+1-1+1+1'; -- i,j offset in each direction<br />      ii    number;<br />      jj    number;<br />      times pls_integer := 0;<br />    begin<br />      loop<br />        ii    := p_i + substr(dir_offset, p_dir * 4 + 1, 2);<br />        jj    := p_j + substr(dir_offset, p_dir * 4 + 2 + 1, 2);<br />        times := times + 1;<br />      <br />        exit when(ii between 1 and p_helix.count / p_helix(0) and jj between 1 and p_helix(0) and<br />                  get_val(p_helix, ii, jj) is null);<br />      <br />        if times &gt;= 4 then<br />          return false;<br />        end if;<br />        if p_altdir = 'L' then<br />          -- turn left<br />          p_dir := mod(p_dir + 1, 4);<br />        elsif p_altdir = 'R' then<br />          -- turn right<br />          p_dir := mod(p_dir + 3, 4);<br />        end if;<br />      end loop;<br />      p_i := ii;<br />      p_j := jj;<br />      return true;<br />    end;<br />    --begin of draw_helix<br />  begin<br />    v_helix := new_matrix(M, N);<br />    for x in 1 .. M*N loop <br />      if asc_order then<br />        element := x;<br />      else<br />        element := M*N - x + 1;<br />      end if;<br />      set_val(v_helix, i, j, element);<br />      exit when not go_next(v_helix, i, j, direction, screw_dir);<br />    end loop;<br />    print_matrix(v_helix);<br />    dbms_output.new_line;<br />  end;</font>
												</p>
												<p>
														<font face="Courier New" size="2">--begin of main<br />begin<br />  draw_helix(9, 9, 1, 5, 3, 'R', true);<br />end;</font>
												</p>
												<p>
														<font face="Courier New" size="2">                                       1                                <br />                              16               2                        <br />                      15              17               3                <br />              14              24              18               4        <br />      13              23              25              19               5<br />              12              22              20               6        <br />                      11              21               7                <br />                              10               8                        <br />                                       9                                </font>
												</p>
												<p>
														<br />
														<font face="Courier New" size="2">---<br /></font>
												</p>
										</span>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/MEYE/aggbug/39915.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/MEYE/" target="_blank">MEYE</a> 2006-04-07 21:30 <a href="http://www.blogjava.net/MEYE/articles/39915.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学编程的人不能不看的好文章 </title><link>http://www.blogjava.net/MEYE/articles/39333.html</link><dc:creator>MEYE</dc:creator><author>MEYE</author><pubDate>Wed, 05 Apr 2006 04:07:00 GMT</pubDate><guid>http://www.blogjava.net/MEYE/articles/39333.html</guid><wfw:comment>http://www.blogjava.net/MEYE/comments/39333.html</wfw:comment><comments>http://www.blogjava.net/MEYE/articles/39333.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/MEYE/comments/commentRss/39333.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/MEYE/services/trackbacks/39333.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="98%" align="center" border="0">
				<tbody>
						<tr>
								<td colspan="2" height="17">
										<span class="style2">
												<strong>学编程的人不能不看的好文章 </strong>
										</span>
										<strong>
												<br />
										</strong>
										<hr align="left" width="95%" color="#597282" noshade="" size="1" />
										<span class="style3">By Fulty 发表于 2005-12-3 11:37:00</span>
								</td>
						</tr>
						<tr>
								<td colspan="2">
										<br />
										<span class="style6">看了下面的这篇文章，深有感触，枣子碰到的问题也是我们大多数程序员的通病，也许我们大多数人都只是在做一些比较小型的软件，对软件运行的效率不在乎，就算对速度和效率在乎的也可能是一些在数据库操作方面的。大家看完了，也许会有很多感想，但这只是我同意枣子的个人观点。<br />(枣子原创--www.vcroad.net wutao8@263.net) <br />做为一名大四的学生,我面试过不少的单位，有成功的也有失败的，但是对我来说所有的失败在某种意义上都是一种成功，特别是我下面写的这些，写这篇文章的时候，我已经签了南京的一家软件公司，但是想起今年2月21日我面试苏州台湾的IT公司的经历联想到我们现在 <br />学习编程的一些情况我真的深有感触，这次面试使我深深的体会到了失败但也收获了很多。我要说的将分成三部分，1.是 <br />我面试的具体经过2.是由面试想到的3.现今我应该做的。当然这些话很大程度上是我个人的意见，不可能完全得到大家的赞同，所以 <br />在某些观点上如果哪位朋友觉得跟我的有很大出入，请不要介意，也不要对我攻击，就当我没有说过，欢迎和我联系共同探讨这些问题！我的EMAIL:wutao8@263.net <br />1.面试经过 <br />大约在年前我接到了台湾瑞晟(Realtek)苏州公司的面试通知，通知我2月21日到苏州工业园区面试，接到面试后的几天我把一些专业 <br />课温习了一遍，特别是C++和数据结构，由于大学几年里，我一直专研这些方面，加上通过了高级程序员的考试，对于一些常用的算法 <br />我差不多也达到了烂熟于胸的地步，当时的感觉是如果问了我这些方面的问题我应该是没有问题的！ <br />21日那天我被安排在4：30面试，由一位技术人员单独给我面试，在问了一些简单的问题之后他给我出了一道编程题目，题目是这样的： <br />(由于具体面试的题目比较烦琐，我将其核心思想提取出来分解成了两个独立的简单的问题，有可能问题分解的不当，请大家见谅，实际面试了一个的问题但比其复杂很多，而且涉及一些高等数学变换) <br />1) 写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n <br />哼，我的心里冷笑一声！没想到这么简单，我有点紧张的心情顿时放松起来！ <br />于是很快我给出我的解法： <br />long fn(long n) <br />{ <br />long temp=0; <br />int i,flag=1; <br />if(n&lt;=0) <br />{ <br />printf("error: n must &gt; 0); <br />exit(1); <br />} <br />for(i=1;i&lt;=n;i++) <br />{ <br />temp=temp+flag*i; <br />flag=(-1)*flag; <br />} <br />return temp; <br />} <br />搞定！当我用期待的目光看着面试官的时候，他微笑着跟我说，执行结果肯定是没有问题！但当n很大的时候我这个程序执行效率很低， <br />在嵌入式系统的开发中，程序的运行效率很重要，能让CPU少执行一条指令都是好的，他让我看看这个程序还有什么可以修改的地方， <br />把程序优化一下！听了这些话，我的心情当时变的有点沉重，没想到他的要求很严格，之后我对程序进行了严格的分析，给出了改进了的方案！ <br />long fn(long n) <br />{ <br />long temp=0; <br />int j=1,i=1,flag=1; <br />if(n&lt;=0) <br />{ <br />printf("error: n must &gt; 0); <br />exit(1); <br />} <br />while(j&lt;=n) <br />{ <br />temp=temp+i; <br />i=-i; <br />i&gt;0?i++:i--; <br />j++; <br />} <br />return temp; <br />} <br />虽然我不敢保证我这个算法是最优的，但是比起上一个程序，我将所有涉及到乘法指令的语句改为执行加法指令，既达到要题目的要求而且 <br />运算时间上缩短了很多！而代价仅仅是增加了一个整型变量！但是我现在的信心已经受了一点打击，我将信将疑的看者面试官，他还是微笑着 <br />跟我说：“不错，这个程序确实在效率上有的很大的提高！”我心里一阵暗喜！但他接着说这个程序仍然不能达到他的要求，要我给出更优的 <br />方案！天啊！还有优化！我当时真的有点崩溃了，想了一会后，我请求他给出他的方案！然后他很爽快的给出了他的程序！ <br />long fn(long n) <br />{ <br />if(n&lt;=0) <br />{ <br />printf("error: n must &gt; 0); <br />exit(1); <br />} <br />if(0==n%2) <br />return (n/2)*(-1); <br />else <br />return (n/2)*(-1)+n; <br />} <br /><br />搞笑，当时我目瞪口呆，没想到他是这个意思，这么简单的代码我真的不会写吗，但是我为什么没有往那方面上想呢！他说的没有错，在n很大很大的时候这三个程序运行时间的差别简直是天壤之别！当我刚想开口说点什么的时候，他却先开口了：“不要认为CPU运算速度快就把所有的问题都推给它去做，程序员应该将代码优化再优化，我们自己能做的决不要让CPU做，因为CPU是为用户服务的，不是为我们 <br />程序员服务的！”多么精辟的语言，我已经不想再说什么了！接着是第二个问题： <br />2),他要求我用一种技巧性的编程方法来用一个函数实现两个函数的功能n为如：fn1(n)=n/2!+n/3!+n/4!+n/5!+n/6! <br />fn2(n)=n/5!+n/6!+n/7!+n/8!+n/9! 现在用一个函数fn(int n,int flag)实现，当flag为0时，实现fn1功能，如果flag为1时 <br />实现fn2功能！他的要求还是效率，效率，效率！说实在话，如果我心情好的话我应该能给出一种比较好的算法，但我那时真的没有什么心思 <br />再想了，我在纸上胡乱画了一些诸如6!=6*5!的公式后直截了当的跟他说要他给出他的答案！面试官也没有说什么，给出了他的思路： <br />定义一个二维数组 float t[2][5]存入[2!,3!,4!,5!,6!},{5!,6!,7!,8!,9!]然后给出一个循环： <br /><br />for(i=0;i&lt;6;i++) <br />{ <br />temp=temp+n/t[flag]; <br />} <br />最后得到计算值！呵呵，典型的空间换时间的算法！ <br />这些总共花了50分钟的时间，还有十分钟我就跟他很随意的聊聊天，聊了一些编程以及生活的问题，那时的我已经很放松了， <br />因为我知道这次面试结果只有一个：失败。5:30的时候面试官要我等通知，于是我离开了他们公司。这就是面试的整个经过！ <br /><br />2.由面试想到的 <br /><br />真的是很失败啊！我记得那天下好大的雨，气温也很低，我边走边想，从5:30一直走到7:30，全身都湿透了，又冷又饿，但是我只是一直走，脑子里面充满了疑惑，我也想让雨把自己淋醒！看到这里有些朋友可能觉得那些面试题目不算什么如果让自己做的话肯定能全部答对，我肯定相信你，因为我从未怀疑过中国程序员的能力，我认为中国有世界上最好的程序员，我也从未认为自己是高手，所以我做不出来不代表中国程序员比台湾或者别的地方的程序员差，所以我就从我的角度，我的所见所想来谈一些感想： <br /><br />不错全世界都有优秀的程序员，中国也不例外，但是我疑惑的是：到底中国和台湾或者国外的优秀的程序员的比例到底是多少？台湾我不知道，中国100个程序员里有几个是优秀的呢?我根本算不上，从上面的表现就足以说明一切了！是1个？5个？10个？50个？这个数字我不敢乱猜，恐遭网友一顿痛骂，那么我们国内有多少人学习计算机呢？拿我们学校来说，计算机97级4个班，98级5个班，99级10个班，2000级17个班，人多了，老师怎么办？我们学校的做法是让研究生上课，然后呢？补考一抓一大把，大把大把的补考费落入了学校的口袋，还说现在的学生素质低！真是好笑，我都不知道学校这么做是为了什么，为国内培养大量的程序员吗？学生们能真正学到计算机知识吗？好了，我敢讲，在我们学校学习编程学生和优秀程序员(注意我指的是优秀，只会编几个糟烂程序的人算不上)的比例应该是100:0.1 <br />在这种比例下虽然我们中国学习编程的人铺天盖地，但是想想有多少个人能真正为中国软件业发展作出贡献，有多少人能真正写出优秀的程序名扬海外！ <br /><br />我从学习编程以来，不管是自学还是老师指导，从来都是解决问题就好，编出程序来就行，我的疑惑是：我们有真正的强调过程序的效率，程序的质量吗？我们有仔细分析过我们写的东西，看看有没有可以改进的地方，看看有没有简单的方法来达到同样的目的呢？我问心自问，我发现，我从来没有对我写出来的程序进行过优化，最多就是进行详细的测试，然后Debug，但是这就足够了吗？这些天我偶尔发现我曾经写过的一个游戏，那是一年前我刚加入www.vcroad.net做为其中一员时候，感觉应该拿点东西出来，然后花了一个星期的时间写出来的！程序不算复杂，但是用到了不少数据结构的东西，也用到了一些精彩的算法，加上windows的界面和游戏的可玩性，写完后受到了不少好评，我当时真的很佩服自己！但是现在看呢：没有一句注释，好多丑陋的函数名比如：void chushihua()，好多没有必要的变量，可以用简单语句完成工作的我使用华丽的算法，大量使用全局变量.....,说不好听的话，六百多行的程序除了能运行之外就是一陀屎！如果一年前我能听到一些反面意见的话，大概我能早一点觉悟，但是自从原代码在网站发布以来听到的都是赞美之词，没有一个人向我提出程序改进的意见，这又说明了一个什么问题呢？很值得思考啊！ <br /><br />还有一个疑惑是：我们说的和做的真的一样吗？我在学校的时候曾经受学院指派承办过一个计算机大赛，请了一个老师出决赛的题目，主要是一些算法题目，这个老师可能是我上大学以来唯一敬佩的老师了，从程序调试到打分，对于每个程序都仔细分析其时间效率和空间效率，然后综合打分，四十个人的卷子，老师从下午三点一直调试到晚上十点，在有些写的精彩的语句后还加上批注。我真是高兴很遇到这样的老师并且和他做深入的交流，但在事后，却发生了一件不愉快的事，在比赛中获得第二名的学生找到我，说他程序全部调试成功应该给他满分，并且应该得第一，我说不过他，最后调出了他的原程序和第一名的原程序对比，不错，两个程序都运行的很好，这时，那个同学开口了：“我的程序写的十分简捷明了，仅仅数行就完成了题目要求，而他的却写了一大堆，为什么给他的分多过给我的分。”我当时很是气愤，如果不是老师负责的话，那么现在第一名和第二名的位置真的要互调了，拜托，不是程序的行数越少程序的质量就越高，我记得我跟他大谈这方面的道理，最后说服他了！哈哈，但是我，只能说说而已，我不知道还有多少人一样，说起来头头是道，但心里却压根就从未重视过它！ <br /><br />3.我打算做的！ <br />其实那天我想到的远不止上面那么多，但是我不想再说了，因为我猜想看这篇文章的网友大概都有一肚子的感想，一肚子的抱怨，借用这篇文章发泄可不是我想达到的目的，在上面我把自己骂的一文不值也不是妄自菲薄，但是在某些方面我真的做错了，或者说是偏离了正确方向，现在是矫正方向和重整旗鼓的时候了，就象我前面说过的，我相信中国有世界上最好的程序员，我也相信我的水平不会一直保持现状，我现在就收拾起牢骚真正的实干起来！ <br />真的很巧，就写到这里的时候我在网上偶尔发现了这篇手册，我不知道这预示着什么，但是我想如果我照下面这个基本原则一直踏实做下去，我一定会实现我的理想---一名优秀的软件设计师! <br /><br />（下面这些文字不是我的原创，是我偶尔在网上发现的，我真的很幸运能看到这些，这篇文章也随着下面的文字而结束，我真心的希望您能从这篇文章中得到启发,这篇文章欢迎大家随意转载，您可以不写作者是谁，但是请您写上www.vcroad.net原创，谢谢您的支持） <br /><br />作者：金蝶中间件公司CTO袁红岗 <br /><br />不知不觉做软件已经做了十年，有成功的喜悦，也有失败的痛苦，但总不敢称自己是高手，因为和我心目中真正的高手们比起来，还差的太远。世界上并没有成为高手的捷径，但一些基本原则是可以遵循的。 <br /><br />　　1. 扎实的基础。数据结构、离散数学、编译原理，这些是所有计算机科学的基础，如果不掌握他们，很难写出高水平的程序。据我的观察，学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写，但当你发现写到一定程度很难再提高的时候，就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP，即使你再精通OOP，遇到一些基本算法的时候可能也会束手无策。 <br /><br />　　2. 丰富的想象力。不要拘泥于固定的思维方式，遇到问题的时候要多想几种解决问题的方案，试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上，除计算机以外，多涉猎其他的学科，比如天文、物理、数学等等。另外，多看科幻电影也是一个很好的途径。 <br /><br />　　3. 最简单的是最好的。这也许是所有科学都遵循的一条准则，如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式：E=mc2。简单的方法更容易被人理解，更容易实现，也更容易维护。遇到问题时要优先考虑最简单的方案，只有简单方案不能满足要求时再考虑复杂的方案。 <br /><br />　　4. 不钻牛角尖。当你遇到障碍的时候，不妨暂时远离电脑，看看窗外的风景，听听轻音乐，和朋友聊聊天。当我遇到难题的时候会去玩游戏，而且是那种极暴力的打斗类游戏，当负责游戏的那部分大脑细胞极度亢奋的时候，负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候，我会发现那些难题现在竟然可以迎刃而解。 <br /><br />　　5. 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程，即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念，一定要找到问题的答案，你才会付出精力去探索，即使最后没有得到答案，在过程中你也会学到很多东西。 <br /><br />　　6. 多与别人交流。三人行必有我师，也许在一次和别人不经意的谈话中，就可以迸出灵感的火花。多上上网，看看别人对同一问题的看法，会给你很大的启发。 <br /><br />　　7. 良好的编程风格。注意养成良好的习惯，代码的缩进编排，变量的命名规则要始终保持一致。大家都知道如何排除代码中错误，却往往忽视了对注释的排错。注释是程序的一个重要组成部分，它可以使你的代码更容易理解，而如果代码已经清楚地表达了你的思想，就不必再加注释了，如果注释和代码不一致，那就更加糟糕。 <br /><br />　　8. 韧性和毅力。这也许是"高手"和一般程序员最大的区别。A good programming is 99 weat and 1?ffee。高手们并不是天才，他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦，但过程却是无比的枯燥乏味。你不妨做个测试，找个10000以内的素数表，把它们全都抄下来，然后再检查三遍，如果能够不间断地完成这一工作，你就可以满足这一条。 </span>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/MEYE/aggbug/39333.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/MEYE/" target="_blank">MEYE</a> 2006-04-05 12:07 <a href="http://www.blogjava.net/MEYE/articles/39333.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java解析XML文件实例</title><link>http://www.blogjava.net/MEYE/articles/38458.html</link><dc:creator>MEYE</dc:creator><author>MEYE</author><pubDate>Fri, 31 Mar 2006 05:15:00 GMT</pubDate><guid>http://www.blogjava.net/MEYE/articles/38458.html</guid><wfw:comment>http://www.blogjava.net/MEYE/comments/38458.html</wfw:comment><comments>http://www.blogjava.net/MEYE/articles/38458.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/MEYE/comments/commentRss/38458.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/MEYE/services/trackbacks/38458.html</trackback:ping><description><![CDATA[
		<table style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellspacing="1" cellpadding="3" width="98%" bgcolor="#cccccc" border="0">
				<tbody>
						<tr bgcolor="#f8f8f8">
								<td>
										<font size="4">
												<strong>java解析XML文件实例</strong>
										</font>
										<br />ssuupv 发表于 2006-2-16 13:14:00 </td>
						</tr>
						<tr bgcolor="#ffffff">
								<td height="0">
										<table cellspacing="0" cellpadding="0" width="100%" border="0">
												<tbody>
														<tr>
																<td>
																		<p>
																				<font color="#000000">XML文件</font>
																		</p>
																		<p>
																				<font color="#3300ff">&lt;?xml version="1.0" encoding="gb2312"?&gt; <br />&lt;person&gt; <br />&lt;name&gt;ssuupv&lt;/name&gt; <br />&lt;college&gt;材料学院&lt;/college&gt; <br />&lt;telephone&gt;6258113&lt;/telephone&gt; <br />&lt;notes&gt;男,1979年生,本科，99年调入中国陶瓷大学&lt;/notes&gt; <br />&lt;/person&gt;</font>
																		</p>
																		<p>
																				<font color="#000000">java代码</font>
																		</p>
																		<p>
																				<font color="#1111ee">import java.io.*;<br />import java.util.Hashtable;<br />import org.xml.sax.*;</font>
																		</p>
																		<p>
																				<font color="#1111ee">public class SAXHandler extends HandlerBase {<br />    private Hashtable table = new Hashtable();</font>
																		</p>
																		<p>
																				<font color="#1111ee">    private String currentElement = null;</font>
																		</p>
																		<p>
																				<font color="#1111ee">    private String currentValue = null;</font>
																		</p>
																		<p>
																				<font color="#1111ee">    public void setTable(Hashtable table) {<br />        this.table = table;<br />    }</font>
																		</p>
																		<p>
																				<font color="#1111ee">    public Hashtable getTable() {<br />        return table;<br />    }</font>
																		</p>
																		<p>
																				<font color="#1111ee">    public void startElement(String tag, AttributeList attrs) throws SAXException {<br />        currentElement = tag;<br />    }</font>
																		</p>
																		<p>
																				<font color="#1111ee">    public void characters(char[] ch, int start, int length) throws SAXException {<br />        currentValue = new String(ch, start, length);<br />    }</font>
																		</p>
																		<p>
																				<font color="#1111ee">    public void endElement(String name) throws SAXException {<br />        if (currentElement.equals(name))<br />            table.put(currentElement, currentValue);<br />    }<br />}</font>
																		</p>
																		<p>
																				<font color="#1111ee">
																				</font> </p>
																		<p>
																				<font color="#000000">jsp文件</font>
																		</p>
																		<p>
																				<font color="#3300ff">&lt;HTML&gt; </font>
																		</p>
																		<p>
																				<font color="#3300ff">&lt;HEAD&gt;</font>
																		</p>
																		<p>
																				<font color="#0909f7">&lt;TITLE&gt;剖析XML文件people.xml&lt;/TITLE&gt; </font>
																		</p>
																		<p>
																				<font color="#0909f7">&lt;/HEAD&gt; </font>
																		</p>
																		<p>
																				<font color="#0909f7">&lt;BODY&gt; </font>
																		</p>
																		<p>
																				<font color="#0909f7">&lt;%@ page errorPage="ErrPage.jsp" </font>
																		</p>
																		<p>
																				<font color="#0909f7">         contentType="text/html;charset=GB2312" %&gt; </font>
																		</p>
																		<p>
																				<font color="#0909f7">&lt;%@ page import="java.io.*" %&gt; </font>
																		</p>
																		<p>
																				<font color="#0909f7">&lt;%@ page import="java.util.Hashtable" %&gt; </font>
																		</p>
																		<p>
																				<font color="#0909f7">&lt;%@ page import="org.w3c.dom.*" %&gt; </font>
																		</p>
																		<p>
																				<font color="#0909f7">&lt;%@ page import="org.xml.sax.*" %&gt; </font>
																		</p>
																		<p>
																				<font color="#0909f7">&lt;%@ page import="javax.xml.parsers.SAXParserFactory" %&gt; </font>
																		</p>
																		<p>
																				<font color="#0909f7">&lt;%@ page import="javax.xml.parsers.SAXParser" %&gt; </font>
																		</p>
																		<p>
																				<font color="#0909f7">&lt;% <br />System.out.println("&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;");<br />File file = new File("D:\\projects\\test\\webapp\\people.xml"); <br />FileReader reader=new FileReader(file);<br />//String reader ="&lt;person&gt;&lt;name&gt;ssuupv&lt;/name&gt;&lt;college&gt;材料学院&lt;/college&gt;&lt;telephone&gt;6258113&lt;/telephone&gt;&lt;notes&gt;男 1979年生 本科 79年调入中国陶瓷大学&lt;/notes&gt;&lt;/person&gt;";</font>
																		</p>
																		<p>
																				<font color="#0909f7">Parser parser; </font>
																		</p>
																		<p>
																				<font color="#0909f7">SAXParserFactory spf = SAXParserFactory.newInstance(); </font>
																		</p>
																		<p>
																				<font color="#0909f7">SAXParser sp = spf.newSAXParser(); </font>
																		</p>
																		<p>
																				<font color="#0909f7"> com.test.SAXHandler handler = new  com.test.SAXHandler .SAXHandler(); </font>
																		</p>
																		<p>
																				<font color="#0909f7">  </font>
																		</p>
																		<p>
																				<font color="#0909f7">  </font>
																		</p>
																		<p>
																				<font color="#0909f7">sp.parse(new InputSource(reader), handler); </font>
																		</p>
																		<p>
																				<font color="#0909f7">Hashtable hashTable = handler.getTable(); </font>
																		</p>
																		<p>
																				<font color="#0909f7">out.println("&lt;TABLE BORDER=2&gt;&lt;CAPTION&gt;教师信息表&lt;/CAPTION&gt;"); </font>
																		</p>
																		<p>
																				<font color="#0909f7">out.println("&lt;TR&gt;&lt;TD&gt;姓名&lt;/TD&gt;" + "&lt;TD&gt;" + </font>
																		</p>
																		<p>
																				<font color="#0909f7">  (String)hashTable.get(new String("name")) + "&lt;/TD&gt;&lt;/TR&gt;"); </font>
																		</p>
																		<p>
																				<font color="#0909f7">out.println("&lt;TR&gt;&lt;TD&gt;学院&lt;/TD&gt;" + "&lt;TD&gt;" + </font>
																		</p>
																		<p>
																				<font color="#0909f7">  (String)hashTable.get(new String("college"))+"&lt;/TD&gt;&lt;/TR&gt;"); </font>
																		</p>
																		<p>
																				<font color="#0909f7">out.println("&lt;TR&gt;&lt;TD&gt;电话&lt;/TD&gt;" + "&lt;TD&gt;" + </font>
																		</p>
																		<p>
																				<font color="#0909f7">  (String)hashTable.get(new String("telephone")) + "&lt;/TD&gt;&lt;/TR&gt;"); </font>
																		</p>
																		<p>
																				<font color="#0909f7">out.println("&lt;TR&gt;&lt;TD&gt;备注&lt;/TD&gt;" + "&lt;TD&gt;" + </font>
																		</p>
																		<p>
																				<font color="#0909f7">  (String)hashTable.get(new String("notes")) + "&lt;/TD&gt;&lt;/TR&gt;"); </font>
																		</p>
																		<p>
																				<font color="#0909f7">out.println("&lt;/TABLE&gt;"); </font>
																		</p>
																		<p>
																				<font color="#0909f7">%&gt; </font>
																		</p>
																		<p>
																				<font color="#0909f7">&lt;/BODY&gt; </font>
																		</p>
																		<p>
																				<font color="#0909f7">&lt;/HTML&gt; </font>
																		</p>
																		<p>
																				<font color="#0909f7">
																				</font> </p>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/MEYE/aggbug/38458.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/MEYE/" target="_blank">MEYE</a> 2006-03-31 13:15 <a href="http://www.blogjava.net/MEYE/articles/38458.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据迁移（从mysql3.1迁移到oralce10G） </title><link>http://www.blogjava.net/MEYE/articles/38455.html</link><dc:creator>MEYE</dc:creator><author>MEYE</author><pubDate>Fri, 31 Mar 2006 05:10:00 GMT</pubDate><guid>http://www.blogjava.net/MEYE/articles/38455.html</guid><wfw:comment>http://www.blogjava.net/MEYE/comments/38455.html</wfw:comment><comments>http://www.blogjava.net/MEYE/articles/38455.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/MEYE/comments/commentRss/38455.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/MEYE/services/trackbacks/38455.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="6" width="540" border="0">
				<tbody>
						<tr>
								<td class="bigtitle" bgcolor="#509228" height="20" style1="">
								</td>
						</tr>
						<tr>
								<td id="anostyle" valign="center" bgcolor="#dcf5dc">
										<img height="1" src="http://blog.java-cn.com/skin/netbei/blank.gif" width="1" />
										<table style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellspacing="1" cellpadding="3" width="98%" bgcolor="#cccccc" border="0">
												<tbody>
														<tr bgcolor="#f8f8f8">
																<td>
																		<font size="4">
																				<strong>数据迁移（从mysql3.1迁移到oralce10G）</strong>
																		</font>
																		<br />ssuupv 发表于 2006-3-2 15:29:00 </td>
														</tr>
														<tr bgcolor="#ffffff">
																<td height="0">
																		<table cellspacing="0" cellpadding="0" width="100%" border="0">
																				<tbody>
																						<tr>
																								<td>
																										<p>最近做了一项目数据移植工作：根据客户的需求。把原先，mysql3.1平台的数据迁移到oracle10g：</p>
																										<p>　刚开始我想通过oralce提供的oracle migration workbench，可是使用中碰到一些问题，一直没搞出来，在网上也查找不到解决的方案，具体的问题我也不多说了。</p>
																										<p>　在用户催了N次的时候，我忽然来了个灵感通过程序的方式，原理，1，从mysql一张表取出所有数据，2，存放到oracle10g　目标数据表里，3.重复执行1，2步骤，直到所有表导入。</p>
																										<p>接下来我讲一下，我的解决过程。</p>
																										<p>我们开发的平台是用webwork+spring+hibernate。</p>
																										<p>
																												<font color="#000000">
																														<strong>1。配置二个hibernate.配置文件1.hibernate_for_mysql.cfg.xml hibernate_for_oracle.cfg.xml</strong>
																												</font>
																										</p>
																										<p>.hibernate_for_oracle.cfg.xm部分配置：</p>
																										<p>
																												<font color="#0033ff">  &lt;property name="hibernate.connection.url"&gt;&lt;![CDATA[<br />            jdbc:oracle:thin:@localhost:1521:orcl<br />        ]]&gt;&lt;/property&gt;<br />        &lt;!-- Database JDBC driver--&gt;<br />        &lt;property name="hibernate.connection.driver_class"&gt;<br />            oracle.jdbc.driver.OracleDriver<br />        &lt;/property&gt;</font>
																										</p>
																										<p>hibernate_for_oracle.cfg.xm部分配置：</p>
																										<p>
																												<font color="#0909f7">        &lt;property name="hibernate.connection.url"&gt;&lt;![CDATA[<br />            jdbc:mysql://localhost/flydonkey?useUnicode=true&amp;characterEncoding=gbk<br />        &gt;&lt;/property&gt;<br />        &lt;!-- Database JDBC driver--&gt;<br />        &lt;property name="hibernate.connection.driver_class"&gt;<br />            org.gjt.mm.mysql.Driver<br />        &lt;/property&gt;</font>
																										</p>
																										<p>
																												<strong>
																														<font color="#000000">2.在spring.xml配置bean主要负责数据迁移的</font>
																												</strong>
																										</p>
																										<p>
																												<font color="#0909f7"> &lt;bean id="sessionFactory_for_mysql" class="org.springframework.orm.hibernate.LocalSessionFactoryBean" singleton="true"&gt;<br />  &lt;property name="configLocation"&gt;<br />   &lt;value&gt;classpath:hibernate_for_mysql.cfg.xml&lt;/value&gt;<br />  &lt;/property&gt;<br /> &lt;/bean&gt;<br /> <br /> &lt;bean id="sessionFactory_for_oracle" class="org.springframework.orm.hibernate.LocalSessionFactoryBean" singleton="true"&gt;<br />  &lt;property name="configLocation"&gt;<br />   &lt;value&gt;classpath:hibernate_for_oracle.cfg.xml&lt;/value&gt;<br />  &lt;/property&gt;<br /> &lt;/bean&gt;</font>
																										</p>
																										<p> <font color="#0909f7">&lt;bean id="getDataFromMysql" class="com.migration.GetDataFromMysqlImpl" singleton="true"&gt;<br /> &lt;property name="sessionFactory"&gt;<br />  &lt;ref bean="sessionFactory_for_mysql"/&gt;<br /> &lt;/property&gt;<br /> &lt;/bean&gt;<br /> <br />   &lt;bean id="insertDataToOracle" class="com.migration.InsertDataToOracleImpl" singleton="true"&gt;<br /> &lt;property name="sessionFactory"&gt;<br />  &lt;ref bean="sessionFactory_for_oracle"/&gt;<br /> &lt;/property&gt;</font></p>
																										<p>编写bean文件，</p>
																										<p>
																												<strong>
																														<font color="#000000">GetDataFromMysqlImpl代码</font>
																												</strong>
																										</p>
																										<p>
																												<font color="#0000ff">public class GetDataFromMysqlImpl extends EntityDaoImpl implements GetDataFromMysql {</font>
																										</p>
																										<p>
																												<font color="#0000ff">public List getData(String tableName) {<br />        // TODO Auto-generated method stub<br />      Session session = null;<br />      List result = null;<br />      try{<br />          session = getSession(true);<br />         String strSql = "from "+tableName;<br />         result = session.createQuery(strSql).list();  <br />      }catch(Exception e){<br />          e.printStackTrace();<br />      }finally{<br />          try{<br />              if(session!=null){<br />                session.close();<br />              }<br />            }catch(Exception e){<br />                e.printStackTrace();<br />            }<br />          }<br />      return result;<br />    }<br />}</font>
																										</p>
																										<p>
																												<strong>
																														<font color="#000000">InsertDataToOracleImpl代码</font>
																												</strong>
																										</p>
																										<p>
																												<font color="#0000ff">public class GetDataFromMysqlImpl extends EntityDaoImpl implements GetDataFromMysql {</font>   </p>
																										<p>
																												<font color="#0909f7">public void insertData(){</font>
																										</p>
																										<p>
																												<font color="#0909f7">   this.insertTabelName()</font>
																										</p>
																										<p>
																												<font color="#0909f7">}</font>
																										</p>
																										<p> <font color="#0033ff">private void insertTableName() {<br />        Session session = null;<br />        Transaction tx = null;<br />        try {<br />            session = getSession(true);<br />            GetDataFromMysql gdfm = (GetDataFromMysql) ServiceLocator.getInstance().getService("getDataFromMysql");<br />            List temp = gdfm.getData("tableName");<br />            tx = session.beginTransaction();<br />            if (temp != null) {<br />                Iterator it = temp.iterator();<br />                while (it.hasNext()) {<br />                    TableName tableName = (TableName) it.next();<br />                    session.save(tabeName)<br />                }<br />            }<br />            tx.commit();<br />        } catch (Exception e) {<br />            e.printStackTrace();<br />        } finally {<br />            try {<br />                if (session != null) {<br />                    session.close();<br />                }<br />            } catch (Exception e) {<br />                e.printStackTrace();<br />            }<br />        }<br />    }</font></p>
																										<p>
																												<font color="#0033ff">    }</font>
																										</p>
																										<p>
																												<strong>
																														<font color="#000000">3.随便写个客户端调用些方法。</font>
																												</strong>
																										</p>
																										<p>
																												<strong>4编译打包</strong>
																										</p>
																										<p>
																												<strong>5.关闭oracle10g所有constraint</strong>
																										</p>
																										<p>
																												<strong>6.运行程序</strong>
																										</p>
																										<p>
																												<strong>100万纪录估计30min能跑完，根据各个机器配置高低，会有些差别。</strong>
																										</p>
																								</td>
																						</tr>
																				</tbody>
																		</table>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/MEYE/aggbug/38455.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/MEYE/" target="_blank">MEYE</a> 2006-03-31 13:10 <a href="http://www.blogjava.net/MEYE/articles/38455.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转贴]Spring XML配置十二个最佳实践</title><link>http://www.blogjava.net/MEYE/articles/38442.html</link><dc:creator>MEYE</dc:creator><author>MEYE</author><pubDate>Fri, 31 Mar 2006 04:40:00 GMT</pubDate><guid>http://www.blogjava.net/MEYE/articles/38442.html</guid><wfw:comment>http://www.blogjava.net/MEYE/comments/38442.html</wfw:comment><comments>http://www.blogjava.net/MEYE/articles/38442.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/MEYE/comments/commentRss/38442.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/MEYE/services/trackbacks/38442.html</trackback:ping><description><![CDATA[转贴]Spring XML配置十二个最佳实践
<table style="TABLE-LAYOUT: fixed; BACKGROUND: none transparent scroll repeat 0% 0%" cellspacing="0" cellpadding="0" width="100%" border="0"><tbody><tr><td><p>转自:http://www.javaresearch.org   JAVA Research</p><p>摘要:<br />在这篇文章里，对于Spring XML的配置，我将向你展示12种比较好的实践。其中的一些实践不仅是好的实践，更是必要的实践。除此以外，还有其他因素，例如领域模型的设计，都能影响XML的配置，但是这篇文章重点研究XML配置的易读性和易管理性。<br /><br />Spring是一个强大的JAVA应用框架，广泛地应用于JAVA的应用程序。为Plain Old Java Objects（POJOs）提供企业级服务。Spring利用依赖注入机制来简化工作，同时提高易测性。Spring beans及依赖，以及beans类所需的服务都在配置文件中进行了详细的说明，这个配置文件是典型的XML格式。但是它既冗长又不实用。对于需要定义大量Spring beans的大工程来说，我们难以阅读和管理它。<br /><br />版权声明：任何获得Matrix授权的网站，转载时请务必保留以下作者信息和链接<br />作者:Jason;Li;evenbetter(作者的blog:<a href="http://blog.matrix.org.cn/page/evenbetter"><font color="#002c99">http://blog.matrix.org.cn/page/evenbetter</font></a>)<br />原文:<a href="http://www.onjava.com/pub/a/onjava/2006/01/25/spring-xml-configuration-best-practices.html"><font color="#002c99">http://www.onjava.com/pub/a/onjava/2006/01/25/spring-xml-configuration-best-practices.html</font></a><br />译文:<a href="http://www.matrix.org.cn/resource/article/44/44236_Spring+XML+Configurations.html"><font color="#002c99">http://www.matrix.org.cn/resource/article/44/44236_Spring+XML+Configurations.html</font></a><br />关键字:Spring;XML;Configurations<br /><br />在这篇文章里，对于Spring XML的配置，我将向你展示12种比较好的实践。其中的一些实践不仅是好的实践，更是必要的实践。除此以外，还有其他因素，例如领域模型的设计，都能影响XML的配置，但是这篇文章重点研究XML配置的易读性和易管理性。<br /><br />1。不要使用autowiring<br /><br />Spring 可以通过类的自省来自动绑定其依赖部分，使得你不必明确指明bean的属性和构造器。Bean的属性可以通过属性名称或类型匹配来实现自动绑定。构造器通过类型匹配来实现自动绑定。你甚至可以指定自动检测自动绑定模式，它可以引导Spring选择一种适当的运行机制。先来看看下面的一个例子：<br /><br />    &lt;bean id="orderService"<br />        class="com.lizjason.spring.OrderService"<br />        autowire="byName"/&gt;<br /><br /><br /><br />OrderService 类的属性名在容器中用于匹配bean实例。自动绑定可以潜在地节省一些打字和减少一些混乱。但是在现实世界的工程里你不应该使用这种方式，这是因为它牺牲了配置的清晰性和可维护性。许多指南和介绍中大量吹捧自动绑定是Spring的一种极好的特征而没有提到这一特性所带来的牺牲。依我的观点，这就像 Spring中的object－pooling，它更像是一种为了占据更多市场的商业特征。它对于XML配置文件的小巧化是一个好办法，但实际上也增加了复杂程度，尤其当你运行有大量类声明的工程时。虽然Spring允许你混合自动绑定和手动绑定，但是这个矛盾会使XML配置更加晦涩难懂。<br /><br />2.使用通俗的命名<br /><br />这个方式对于Java编码也一样适用。在工程中使用清晰的、描述性的、协调的通俗名称对于开发者理解XML配置是十分有益的。例如对于bean ID，你可以根据通俗的Java类名来命名它。对于例子中OrderServiceDAO的bean ID命名为orderServiceDAO。对于大的工程，你可以在bean ID前面加上包名作为前缀。<br /><br />3. 使用简洁的形式<br /><br />简洁形式避免了冗长，是因为它从子元素中将属性值和参考写到属性中。例如下面的例子：<br /><br />    &lt;bean id="orderService"<br />        class="com.lizjason.spring.OrderService"&gt;<br />        &lt;property name="companyName"&gt;<br />            &lt;value&gt;lizjason&lt;/value&gt;<br />        &lt;/property&gt;<br />        &lt;constructor-arg&gt;<br />            &lt;ref bean="orderDAO"&gt;<br />        &lt;/constructor-arg&gt;<br />    &lt;/bean&gt;<br /><br /><br /><br />可以使用简洁形式将上述代码重写为：<br /><br />    &lt;bean id="orderService"<br />        class="com.lizjason.spring.OrderService"&gt;<br />        &lt;property name="companyName"<br />            value="/lizjason"/&gt;<br />        &lt;constructor-arg ref="orderDAO"/&gt;<br />    &lt;/bean&gt;<br /><br /><br /><br />简洁形式功能在1.2版本中可以使用。对于&lt;ref local="..."&gt;没有简洁形式。<br />简洁形式不但可以节约你的打字，而且可以使XML配置文件清晰。它最引人注目的是当在一个配置文件中有大量定义的类时可以提高易读性。<br /><br />4. 对于构造器参数匹配，类型名比序号好。<br /><br />当一个构造器含有一个以上的同种类型的参数，或者属性值的标签已经被占用时，Spring允许你使用从0计数的序号来解决这些会带来混淆的问题。例如：<br /><br />    &lt;bean id="billingService"<br />        class="com.lizjason.spring.BillingService"&gt;<br />        &lt;constructor-arg index="0" value="lizjason"/&gt;<br />        &lt;constructor-arg index="1" value="100"/&gt;<br />    &lt;/bean&gt;<br /><br /><br /><br />像下面这样，利用类型属性来编写会更好一些：<br /><br />    &lt;bean id="billingService"<br />        class="com.lizjason.spring.BillingService"&gt;<br />        &lt;constructor-arg type="java.lang.String"<br />            value="lizjason"/&gt;<br />        &lt;constructor-arg type="int" value="100"/&gt;<br />    &lt;/bean&gt;<br /><br /><br /><br />使用索引可以稍稍减少一些冗长，但是和使用类型属性相比，它还是有容易发生错误的倾向和难于阅读的缺点。你应该只在构造器参数不明确的时候，才使用索引这一方法。<br /><br />5. 尽可能重用已定义过的bean<br /><br />Spring 提供一种类似继承一样的机制来减少配置信息的复制并简化XML配置。定义一个子类可以从它父类那里继承配置信息，而父类实质上作为子类的一个模板。这就是大工程中所谓的重用。你所需要做的就是在父类bean中设置abstract=true，然后在子bean注明它自己的父类bean。例如：<br /><br />    &lt;bean id="abstractService" abstract="true"<br />        class="com.lizjason.spring.AbstractService"&gt;<br />        &lt;property name="companyName"<br />            value="lizjason"/&gt;<br />    &lt;/bean&gt;<br /><br />    &lt;bean id="shippingService"<br />        parent="abstractService"<br />        class="com.lizjason.spring.ShippingService"&gt;<br />        &lt;property name="shippedBy" value="lizjason"/&gt;<br />    &lt;/bean&gt;<br /><br /><br /><br /><br />ShippingService类从abstractService类那里继承companyName属性的值??lizjason。如果你没有为一个bean指明类或factory方法，那么这个bean便是抽象的。<br /><br />6. 尽量使用ApplicationContext来装配定义的bean<br /><br />像在Ant脚本中的引用一样，Spring的引用对于装配模块化的bean来说是很有用的。例如：<br /><br />    &lt;beans&gt;<br />        &lt;import resource="billingServices.xml"/&gt;<br />        &lt;import resource="shippingServices.xml"/&gt;<br />        &lt;bean id="orderService"<br />            class="com.lizjason.spring.OrderService"/&gt;<br />    &lt;beans&gt;<br /><br /><br /><br />相对于使用import在XML配置中来预装配，通过ApplicationContext来配置这些beans，显得更加灵活。利用 ApplicationContext也使得XML配置易于管理。你可以像下面的例子那样在ApplictionContext构造器里布置bean：<br /><br />    String[] serviceResources =<br />        {"orderServices.xml",<br />        "billingServices.xml",<br />        "shippingServices.xml"};<br />    ApplicationContext orderServiceContext = new<br />        ClassPathXmlApplicationContext(serviceResources);<br /><br /><br />        <br />7. 利用id作为bean的标识符<br /><br />你可以指定一个id或名称来作为bean的标识符。虽然使用id不会提高易读性，但是它可以让XML parser对bean的引用有效方面进行更好的验证。如果由于XML IDREF的限制而不能使用某个id，你可以利用names来作为bean的标识符。XML IDREF的限制是id必须以字母开头（或者在XML规范中定义的标点符号），后面接着字母，数字，连字号，下划线，冒号等。实际上，遇到XML IDREF限制的问题是很少见的。<br /><br />8. 在开发阶段使用依赖检验<br /><br />你可以在bean中给依赖检验的属性设置值，而不采用原先默认的空值，属性设置例如simple，object或all，以便容器进行依赖检验。当bean的全部的属性（或某类属性）需要被明确设置或自动绑定时，依赖检验便显得很有用。<br /><br />    &lt;bean id="orderService"<br />        class="com.lizjason.spring.OrderService"<br />        dependency-check="objects"&gt;<br />        &lt;property name="companyName"<br />            value="lizjason"/&gt;<br />        &lt;constructor-arg ref="orderDAO"/&gt;<br />    &lt;/bean&gt;<br /><br /><br /><br />在这个例子里，容器确保为orderService bean设置的属性不是primitives 或者 collections。为所有的bean设置默认依赖检测也是可以的，但是我们很少这样做，是因为有些bean的属性根本就不必设置。<br /><br />9. 为每个配置文件加上一个header comment<br /><br />最好使用descriptive id和名称来代替在XML配置文件中的注释。此外，加上一个配置文件header也很有用处，它可以概述文件中所定义的bean。你可以选择将描述内容加入description标签中。例如：<br /><br />    &lt;beans&gt;<br />        &lt;description&gt;<br />            This file defines billing service<br />            related beans and it depends on<br />            baseServices.xml,which provides<br />            service bean templates...<br />        &lt;/description&gt;<br />        ...<br />    &lt;/beans&gt;<br /><br /><br />使用description标签的一个好处是可以容易地利用工具从标签中选取出description（的内容）。<br /><br />10. 对于任何变化，要与队友积极交流<br />当你重构Java代码时，你需要随时更新配置文件并且通知队友。XML配置文件也是代码，它们是应用程序的至关重要的部分，但是它们难于阅读和维护。大部分时间你既要阅读XML配置文件又要阅读运行中的Java代码。<br /><br />11. Setter injection优于constructor injection<br /><br />Spring提供3种类型的依赖注入： constructor injection,setter injection, 和method injection。我们一般只用前两种类型。<br /><br />    &lt;bean id="orderService"<br />        class="com.lizjason.spring.OrderService"&gt;<br />        &lt;constructor-arg ref="orderDAO"/&gt;<br />    &lt;/bean&gt;<br /><br />    &lt;bean id="billingService"<br />        class="com.lizjason.spring.BillingService"&gt;<br />        &lt;property name="billingDAO"<br />            ref="billingDAO"&gt;<br />    &lt;/bean&gt;<br /><br /><br /><br />这个例子中，orderService类使用的是constructor injection，而BillingService类使用的是setter injection。constructor injection可以确保bean不会在一个非法状态下被创建，但是setter injection更加灵活并且更易管理，尤其当类存在很多属性并且其中一些是可选的情况下。<br /><br />12. 不要滥用依赖注入<br /><br />作为最后一点，Spring ApplicationContext可以替你创建Java对象，但是并不是所有的Java对象都通过依赖注入来创建的。例如，全局的对象不应该通过 ApplicationContext来创建。Spring是一个很棒的框架，但是，就易读性和易管理性而言，当定义大量bean的时候，基于XML的配置问题就会突出。过度的依赖注入会使XML配置变得复杂而且臃肿。记住！使用强大的IDE时，例如Eclipse和IntelliJ，与XML文件相比， Java代码更加易读，易维护，易管理。<br /><br />总结<br />对于Spring的配置，XML是很优秀的方式。但当定义大量 bean时，基于XML配置会变得冗长，笨拙。Spring提供了丰富的配置选项。适当地利用其中的选项可以使XML配置清晰，但是，有些选项，例如 autowiring（自动绑定），往往会降低易读性和易维护性。文章中所列举的实例，可以帮助你创建出清晰易读的XML配置文件。 <br /></p><p> </p></td></tr></tbody></table><img src ="http://www.blogjava.net/MEYE/aggbug/38442.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/MEYE/" target="_blank">MEYE</a> 2006-03-31 12:40 <a href="http://www.blogjava.net/MEYE/articles/38442.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>雅虎公司C#笔试题，看看你能解答多少? (轉)    </title><link>http://www.blogjava.net/MEYE/articles/38440.html</link><dc:creator>MEYE</dc:creator><author>MEYE</author><pubDate>Fri, 31 Mar 2006 04:38:00 GMT</pubDate><guid>http://www.blogjava.net/MEYE/articles/38440.html</guid><wfw:comment>http://www.blogjava.net/MEYE/comments/38440.html</wfw:comment><comments>http://www.blogjava.net/MEYE/articles/38440.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/MEYE/comments/commentRss/38440.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/MEYE/services/trackbacks/38440.html</trackback:ping><description><![CDATA[
		<table height="100%" cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
				<tbody>
						<tr>
								<td background="/skin/snake/blue/01view_bg.gif">
								</td>
								<td valign="top">
								</td>
						</tr>
				</tbody>
				<style type="text/css"><![CDATA[
.style1 {
 FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ff6699
}
.yjx {
 BORDER-RIGHT: #f0f0f0 0px solid; BORDER-TOP: #f0f0f0 0px solid; BORDER-LEFT: #f0f0f0 0px solid; BORDER-BOTTOM: #f0f0f0 0px solid
}
]]&gt;</style>
				<table style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellspacing="0" cellpadding="0" width="99%" border="0">
						<tbody>
								<tr>
										<td bgcolor="#f0f0f0">
												<font color="#ff6699">·</font>
												<strong>雅虎公司C#笔试题，看看你能解答多少? (轉)     </strong>
										</td>
								</tr>
								<tr>
										<td>
												<table cellspacing="0" cellpadding="0" width="100%" border="0">
														<tbody>
																<tr>
																		<td>
																				<div align="right">
																				</div>
																		</td>
																</tr>
														</tbody>
												</table>
												<span class="oblog_text">
														<div align="left">
																<span class="main">雅虎公司C#笔试题，包括问答题和选择题两部分。试试看，你能回答出多少题，可以通过雅虎的考试吗？<br /><br />Question 1. (单选)<br /><br />　　在计算机网络中,表征数据传输可靠性的指标是<br /><br />　　　1. 传输率<br /><br />　　　2. 误码率<br /><br />　　　3. 信息容量<br /><br />　　　4. 频带利用率<br /><br />Question 2. (单选)<br /><br />　　以下关于链式存储结构的叙述中哪一条是不正确的?<br /><br />　　　1. 结点除自身信息外还包括指针域,因此存储密度小于顺序存储结构<br /><br />　　　2. 逻辑上相邻的结点物理上不必邻接<br /><br />　　　3. 可以通过计算直接确定第i个结点的存储地址<br /><br />　　　4. 插入、删除运算操作方便,不必移动结点<br /><br />Question 3. (单选)<br /><br />　　以下哪一个不是栈的基本运算<br /><br />　　　1. 删除栈顶元素<br /><br />　　　2. 删除栈底元素<br /><br />　　　3. 判断栈是否为空<br /><br />　　　4. 将栈置为空栈<br /><br />Question 4. (单选)<br /><br />　　以下关于广义表的叙述中,正确的是<br /><br />　　　1. 广义表是0个或多个单元素或子表组成的有限序列<br /><br />　　　2. 广义表至少有一个元素是子表<br /><br />　　　3. 广义表不可以是自身的子表<br /><br />　　　4. 广义表不能为空表<br /><br />Question 5. (单选)<br /><br />　　如果一棵二*树结点的前序序列是A、B、C,后序序列是C、B、A,则该二*树结点的对称序序列<br /><br />　　　1. 必为A、B、C<br /><br />　　　2. 必为A、C、B<br /><br />　　　3. 必为B、C、A<br /><br />　　　4. 不能确定<br /><br />Question 6. (单选)<br /><br />　　在虚拟页式存储管理方案中,下面哪一部分完成将页面调入内存的工作?<br /><br />　　　1. 缺页中断处理<br /><br />　　　2. 页面淘汰过程<br /><br />　　　3. 工作集模型应用<br /><br />　　　4. 紧缩技术利用<br /><br />Question 7. (单选)<br /><br />　　在DOS系统中,用于记录和管理磁盘数据区使用情况的数据结构<br /><br />　　　1. 位图表<br /><br />　　　2. 空闲块表<br /><br />　　　3. 文件分配表<br /><br />　　　4. 文件控制块<br /><br />Question 8. (单选)<br /><br />　　设有关系R(S,D,M),其函数依赖集F={S→D,D→M}。则关系R至多满足<br /><br />　　　1. 1NF<br /><br />　　　2. 2NF<br /><br />　　　3. 3NF<br /><br />　　　4. BCNF<br /><br />Question 9. (单选)<br /><br />　　在数据库逻辑设计中,当将E-R图转换为关系模式时,下面的做法哪一个是不正确的?<br /><br />　　　1. 一个实体类型转换为一个关系模式<br /><br />　　　2. 一个联系类型转换为一个关系模式<br /><br />　　　3. 由实体类型转换成的关系模式的主键是该实体类型的主键<br /><br />　　　4. 由联系类型转换成的关系模式的属性是与该联系类型相关的诸实体类型的属性的全体<br /><br />Question 10. (单选)<br /><br />　　计算机网络按照所覆盖的地理范围分类,可以分广域网、局域网与<br /><br />　　　1. TCP/IP网<br /><br />　　　2. ATM网<br /><br />　　　3. ISDN<br /><br />　　　4. 城域网<br /><br />Question 11. (单选) <br /><br /><br /><br />　　计算机网络拓扑结构主要取决于它的<br /><br />　　　1. 资源子网<br /><br />　　　2. FDDI网<br /><br />　　　3. 通信子网<br /><br />　　　4. 路由器<br /><br />Question 12. (单选)<br /><br />　　网络协议的三个要素是语法、语义与<br /><br />　　　1. 工作原理<br /><br />　　　2. 时序<br /><br />　　　3. 进程<br /><br />　　　4. 服务原语<br /><br />Question 13. (单选)<br /><br />　　TCP/IP参考模型中,电子邮件协议SMTP依赖于传输层的<br /><br />　　　1. UDP协议<br /><br />　　　2. IP协议<br /><br />　　　3. TCP协议<br /><br />　　　4. 802.2协议<br /><br />Question 14. (单选)<br /><br />　　IEEE802.2协议中10BASE-T标准规定在使用5类双绞线时,从网卡到集线器的最大距离为<br /><br />　　　1. 100m<br /><br />　　　2. 185m<br /><br />　　　3. 300m<br /><br />　　　4. 500m<br /><br />Question 15. (单选)<br /><br />　　100Mbps Fast Ethernet与10Mbps Ethernet 工作原理的相同之处主要在<br /><br />　　　1. 介质访问控制方法<br /><br />　　　2. 物理层协议<br /><br />　　　3. 网络层<br /><br />　　　4. 发送时钟周期<br /><br />Question 16. (单选)<br /><br />　　在Client/Server计算模式中,中间件middleware的作用是隔离应用与<br /><br />　　　1. 结构化查询语言SQL<br /><br />　　　2. 应用进程<br /><br />　　　3. 网络<br /><br />　　　4. IP地址<br /><br />Question 17. (单选)<br /><br />　　当用户向ISP申请Internet帐户时,用户的E-mail帐户应包括<br /><br />　　　1. IP地址<br /><br />　　　2. WWW地址<br /><br />　　　3. 用户密码(Password)<br /><br />　　　4. 用户名(User Name)与用户密码(Password)<br /><br />Question 18. (单选)<br /><br />　　WWW的超链接中定位信息所在的位置使用的是<br /><br />　　　1. 超文本(hypertext)技术<br /><br />　　　2. 统一资源定位器(URL, Uniform Resource Locators)<br /><br />　　　3. 超媒体(hypermedia技术)<br /><br />　　　4. 超文本标注语言HTML<br /><br />Question 19. (单选)<br /><br />　　计算机网络系统与分布式系统之间的区别主要是<br /><br />　　　1. 系统物理结构<br /><br />　　　2. 系统高层软件<br /><br />　　　3. 传输介质类型<br /><br />　　　4. 服务器类型<br /><br />Question 20. (单选)<br /><br />　　帧中继系统设计的主要目标是用于互连多个<br /><br />　　　1. 广域网<br /><br />　　　2. 电话网<br /><br />　　　3. 局域网<br /><br />　　　4. 0)ATIM网<br /><br /><br /><br />Question 21. (单选)<br /><br />　　ATM网络采用固定长厦的信元传送数据，信元长度为<br /><br />　　　1. 1024B<br /><br />　　　2. 53B<br /><br />　　　3. 128B<br /><br />　　　4. 64B<br /><br />Question 22. (单选)<br /><br />　　TCP/IP参考模型中的主机-网络层对应于OSI RM中的<br /><br />　　　1. 网络层<br /><br />　　　2. 物理层<br /><br />　　　3. 数据链路层<br /><br />　　　4. 物理层与数据链路层<br /><br />Question 23. (单选)<br /><br />　　计算机网络最突出的优点是：<br /><br />　　　1. 计算精度高<br /><br />　　　2. 内存容量大<br /><br />　　　3. 运算速度快<br /><br />　　　4. 连网的计算机能够相互共享资源<br /><br />Question 24. (单选)<br /><br />　　计算机网络分为局域网、城域网与广域网，其划分的依据是：<br /><br />　　　1. 数据传输所使用的介质<br /><br />　　　2. 网络的作用范围<br /><br />　　　3. 网络的控制方式<br /><br />　　　4. 网络的拓扑结构<br /><br />Question 25. (单选)<br /><br />　　用二分法查找一个长度为10的、排好序的线性表，查找不成功时，最多需要比较多少次？<br /><br />　　　1. 5<br /><br />　　　2. 2<br /><br />　　　3. 4<br /><br />　　　4. 1<br /><br /><br /><br />Question 31. (单选) <br /><br /><br /><br />　　根据线程安全的相关知识，分析以下代码，当调用test方法时i&gt;10时是否会引起死锁?<br /><br />public void test(int i) <br /><br />{ <br /><br />lock(this) <br /><br />{ <br /><br />if (i&gt;10) <br /><br />{ <br /><br />i--; <br /><br />test(i); <br /><br />} <br /><br />} <br /><br />} <br /><br />　　　1. 会锁死<br /><br />　　　2. 不会锁死<br /><br />Question 32. (单选)<br /><br />　　以下描述错误的是（）<br /><br />　　1. 在C++中支持抽象类而在C#中不支持抽象类。<br /><br />　　2. C++中可在头文件中声明类的成员而在CPP文件中定义类的成员，在C#中没有头文件并且在同一处声明和定义类的成员。<br /><br />　　3. 在C#中可使用 new 修饰符显式隐藏从基类继承的成员。<br /><br />　　4. 在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。<br /><br />Question 33. (单选)<br /><br />　　int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是（）。<br /><br />　　1. 9<br /><br />　　2. 2<br /><br />　　3. 6<br /><br />　　4. 越界<br /><br />Question 34. (单选)<br /><br />　　在C#中利用Socket进行网络通信编程的一般步骤是：建立Socket侦听、（ ）、利用Socket接收和发送数据。<br /><br />　　1. 建立Socket连接<br /><br />　　2. 获得端口号；<br /><br />　　3. 获得IP地址；<br /><br />　　4. 获得主机名；<br /><br />Question 35. (单选)<br /><br />　　如果设treeView1=new TreeView(),TreeNode node=new TreeNode("根结点" )，则treeView1.Nodes.Add(node)返回的是一个 ()类型的值。<br /><br />　　1. TreeNode；<br /><br />　　2. int；<br /><br />　　3. string；<br /><br />　　4. TreeView；<br /><br />Question 36. (单选)<br /><br />　　声明一个委托public delegate int myCallBack(int x); 则用该委托产生的回调方法的原型应该是<br /><br />　　1. void myCallBack(int x)<br /><br />　　2. int receive(int num)<br /><br />　　3. string receive(int x)<br /><br />　　4. 不确定的<br /><br />Question 37. (单选)<br /><br />　　关于ASP.NET中的代码隐藏文件的描述正确的是<br /><br />　　1. Web窗体页的程序的逻辑由代码组成，这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件，如果用C＃创建，该文件<br /><br />　　2. 项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件<br /><br />　　3. 项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库（.dll）文件<br /><br />　　4. 以上都不正确<br /><br />Question 38. (单选)<br /><br />　　What compiler switch creates an xml file from the xml comments in the files in an assembly?<br /><br />　　1. /text<br /><br />　　2. /doc<br /><br />　　3. /xml<br /><br />　　4. /help<br /><br />Question 39. (单选)<br /><br />　　下面的代码实现了设计模式中的什么模式<br /><br />　　public class A {<br /><br />　　private A instance;<br /><br />　　private A() {<br /><br />　　}<br /><br />　　public static A Instance {<br /><br />　　get<br /><br />　　{<br /><br />　　if ( A == null )<br /><br />　　A = new A();<br /><br />　　return instance;<br /><br />　　}<br /><br />　　}<br /><br />　　}<br /><br />　　　1. Factory<br /><br />　　　2. Abstract Factory<br /><br />　　　3. Singleton<br /><br />　　　4. Builder<br /><br />Question 40. (单选)<br /><br />class Class1<br /><br />{<br /><br />public static int Count = 0;<br /><br />static Class1()<br /><br />{<br /><br />Count++;<br /><br />}<br /><br />public Class1()<br /><br />{<br /><br />Count++;<br /><br />}<br /><br />}<br /><br />Class1 o1 = new Class1();<br /><br />Class1 o2 = new Class1();<br /><br />　　请问，Class1.Count的值是多少？( )<br /><br />　　　1. 1<br /><br />　　　2. 2<br /><br />　　　3. 3<br /><br />　　　4. 4<br /><br /><br /><br />Question 26. (单选)<br /><br />　　模块内聚度越高，说明模块内各成分彼此结合的程度越<br /><br />　　　1. 松散<br /><br />　　　2. 紧密<br /><br />　　　3. 无法判断<br /><br />　　　4. 相同<br /><br />Question 27. (单选)<br /><br />　　软件需求分析阶段的输出主要是<br /><br />　　　1. 需求说明书<br /><br />　　　2. 开发计划<br /><br />　　　3. 可行性报告<br /><br />　　　4. 设计说明书<br /><br />Question 28. (单选)<br /><br />　　以下选项中不是项目经理的职责的是？<br /><br />　　　1. 需求分析<br /><br />　　　2. 计划<br /><br />　　　3. 计划跟踪<br /><br />　　　4. 质量管理<br /><br />Question 29. (单选)<br /><br />　　单元测试一般在什么时候进行？<br /><br />　　　1. 编码完成后<br /><br />　　　2. 系统测试前<br /><br />　　　3. 测试用例编写完成后<br /><br />　　　4. 集成测试后<br /><br />Question 30. (多选)<br /><br />　　配置管理能起到以下哪些作用？<br /><br />　　　1. 版本管理<br /><br />　　　2. 变更管理<br /><br />　　　3. 需求管理<br /><br />　　　4. 测试管理<br /><br /><br /><br /><br /><br /><br /><br />Question 41. (单选) <br /><br /><br /><br />abstract class BaseClass<br /><br />{<br /><br />public virtual void MethodA()<br /><br />{<br /><br />Console.WriteLine("BaseClass");<br /><br />}<br /><br />public virtual void MethodB()<br /><br />{<br /><br />}<br /><br />}<br /><br />class Class1: BaseClass<br /><br />{<br /><br />public void MethodA()<br /><br />{<br /><br />Console.WriteLine("Class1");<br /><br />}<br /><br />public override void MethodB()<br /><br />{<br /><br />}<br /><br />}<br /><br />class Class2: Class1<br /><br />{<br /><br />new public void MethodB()<br /><br />{<br /><br />}<br /><br />}<br /><br />class MainClass<br /><br />{<br /><br />public static void Main(string[] args)<br /><br />{<br /><br />Class2 o = new Class2();<br /><br />o.MethodA(); <br /><br />}<br /><br />}<br /><br />　　请问，此程序输出结果是:<br /><br />　　　1. BaseClass<br /><br />　　　2. BassClass Class1<br /><br />　　　3. Class1<br /><br />　　　4. Class1 BassClass <br /><br />Question 42. (单选)<br /><br />public static void Main(string[] args)<br /><br />{<br /><br />int i = 2000;<br /><br />object o = i;<br /><br />i = 2001;<br /><br />int j =(int) o;<br /><br />Console.WriteLine("i={0},o={1}, j={2}",i,o,j);<br /><br />}<br /><br />　　　1. i=2001,o=2000,j=2000<br /><br />　　　2. i=2001,o=2001,,j=2001<br /><br />　　　3. i=2000,o=2001,,j=2000<br /><br />　　　4. i=2001,o=2000,j=2001<br /><br />Question 43. (多选)<br /><br />　　您要创建ASP.NET应用程序用于运行AllWin公司内部的Web站点，这个应用程序包含了50个页面。您想要配置这个应用程序以便当发生一个HTTP代码错误时它可以显示一个自定义的错误页面给用户。您想要花最小的代价完成这些目标，您应该怎么做？(多选)<br /><br />　　　1. 在这个应用程序的Global.asax文件中创建一个Application_Error过程去处理ASP.NET代码错误。<br /><br />　　　2. 在这个应用程序的Web.config文件中创建一个applicationError节去处理ASP.NET代码错误。<br /><br />　　　3. 在这个应用程序的Global.asax文件中创建一个CustomErrors事件去处理HTTP错误。<br /><br />　　　4. 在这个应用程序的Web.config文件中创建一个CustomErrors节去处理HTTP错误。<br /><br />Question 44. (单选)<br /><br />　　如下程序的运行结果是：<br /><br />public abstract class A <br /><br />{ <br /><br />public A() <br /><br />{ <br /><br />Console.WriteLine('A'); <br /><br />} <br /><br />public virtual void Fun() <br /><br />{ <br /><br />Console.WriteLine("A.Fun()"); <br /><br />} <br /><br />} <br /><br />public class B: A <br /><br />{ <br /><br />public B() <br /><br />{ <br /><br />Console.WriteLine('B'); <br /><br />} <br /><br />public new void Fun() <br /><br />{ <br /><br />Console.WriteLine("B.Fun()"); <br /><br />} <br /><br />public static void Main() <br /><br />{ <br /><br />A a = new B(); <br /><br />a.Fun(); <br /><br />} <br /><br />} <br /><br />　　　1. A B A.Fun() <br /><br />　　　2. A B B.Fun()<br /><br />　　　3. B A A.Fun()<br /><br />　　　4. B A B.Fun()<br /><br />Question 45. (单选)<br /><br />　　Which of these string definitions will prevent escaping on backslashes in C#?*<br /><br />　　　1. string s = #”n Test string”;<br /><br />　　　2. string s = “’n Test string”;<br /><br />　　　3. string s = @”n Test string”;<br /><br />　　　4. string s = “n Test string”;<br /><br />Question 46. (单选)<br /><br />　　Which of the following operations can you NOT perform on an ADO.NET DataSet?<br /><br />　　　1. A DataSet can be synchronised with a RecordSet.<br /><br />　　　2. A DataSet can be synchronised with the database.<br /><br />　　　3. A DataSet can be converted to XML.<br /><br />　　　4. You can infer the schema from a DataSet<br /><br />Question 47. (单选)<br /><br />　　In Object Oriented Programming, how would you describe encapsulation?<br /><br />　　　1. The conversion of one type of object to another.<br /><br />　　　2. The runtime resolution of method calls.<br /><br />　　　3. The exposition of data.<br /><br />　　　4. The separation of interface and implementation.<br /><br />Question 48. (单选)<br /><br />　　How does assembly versioning in .NET prevent DLL Hell?<br /><br />　　　1. The runtime checks to see that only one version of an assembly is on the machine at any one time.<br /><br />　　　2. .NET allows assemblies to specify the name AND the version of any assemblies they need to run.<br /><br />　　　3. The compiler offers compile time checking for backward compatibility.<br /><br />　　　4. It doesn’t.<br /><br />Question 49. (单选)<br /><br />　　三种常用的字符串判空串方法：<br /><br />　　　1: bool isEmpty = (str.Length == 0); <br /><br />　　　2: bool isEmpty = (str == String.Empty); <br /><br />　　　3: bool isEmpty = (str == "");<br /><br />　　哪种方法最快？<br /><br />　　　1. 1<br /><br />　　　2. 2<br /><br />　　　3. 3<br /><br />Question 50. (单选)<br /><br />public sealed class SampleSingleton1<br /><br />{<br /><br />private int m_Counter = 0;<br /><br />　　private SampleSingleton1()<br /><br />{<br /><br />Console.WriteLine(""初始化SampleSingleton1。"");<br /><br />}<br /><br />public static readonly SampleSingleton1 Singleton = new SampleSingleton1();<br /><br />public void Counter()<br /><br />{<br /><br />m_Counter ++;<br /><br />}<br /><br />} <br /><br />　　以上代码实现了设计模式中的哪种模式？<br /><br />　　　1. 原型<br /><br />　　　2. 抽象工厂<br /><br />　　　3. 单键<br /><br />　　　4. 生成器 </span>
														</div>
												</span>
										</td>
								</tr>
						</tbody>
				</table>
		</table>
<img src ="http://www.blogjava.net/MEYE/aggbug/38440.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/MEYE/" target="_blank">MEYE</a> 2006-03-31 12:38 <a href="http://www.blogjava.net/MEYE/articles/38440.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常常激励我们的36句话</title><link>http://www.blogjava.net/MEYE/articles/38439.html</link><dc:creator>MEYE</dc:creator><author>MEYE</author><pubDate>Fri, 31 Mar 2006 04:36:00 GMT</pubDate><guid>http://www.blogjava.net/MEYE/articles/38439.html</guid><wfw:comment>http://www.blogjava.net/MEYE/comments/38439.html</wfw:comment><comments>http://www.blogjava.net/MEYE/articles/38439.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/MEYE/comments/commentRss/38439.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/MEYE/services/trackbacks/38439.html</trackback:ping><description><![CDATA[
		<table style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellspacing="0" cellpadding="0" width="90%" border="0">
				<tbody>
						<tr>
								<td class="oblog_t_4">
										<span class="style1">
												<font size="3">
														<img src="http://www.54bk.com/images/face/1.gif" />常常激励我们的36句话</font>
										</span>
								</td>
						</tr>
						<tr>
								<td>
										<table cellspacing="0" cellpadding="0" width="100%" border="0">
												<tbody>
														<tr>
																<td>
																		<div align="right">
																				<span class="oblog_text">
																				</span> </div>
																</td>
														</tr>
												</tbody>
										</table>
										<span class="oblog_text">
												<br />
												<p>1。有识有胆，有胆有识，知识与胆量是互相促进的。 <br /><br />2。体育锻炼可以(有时可以迅速)使人乐观(科学实验证明)。 <br /><br />3。勤奋，机会，乐观是成功的三要素。(注意：传统观念认为勤奋和机会是成功的要素，但是经过统计学和成功人士的分析得出，乐观是成功的第三要素) <br /><br />4。自信是人格的核心。 <br /><br />5。获得的成功越大，就越令人高兴。(野心是使人勤奋的原因，节制使人枯萎) <br /><br />6。热爱你所拥有的。——列夫·托尔斯泰 <br /><br />7。(一般情况下)不想三年以后的事，只想现在的事。(现在有成就，以后才能更辉煌) <br /><br />8。把问题看宽广些，没有解决不了的事。(真理路广，人欲路窄；当然不要超越时代去想现在任何人都解决不了的事) <br /><br />9。不问收获，只问耕耘。(如同种树，先有根茎，再有枝叶，尔后花实，好好劳动，不要想太多，那样只会使人胆小、懒惰，因为不实践，甚至不接触社会，难道你是野人？！(暴笑)) <br /><br />10。忍耐和信仰(邓小平认为自己能三起三落的原因，比较难达到，不过现代社会简单的事都由机器做了，白领越来越多，需要注意哦) <br /><br />11。有恒则断无不成之事。 <br /><br />12。智慧之泉必须畅饮才能使人清醒。(引自新英语教材，那些头痛英语的哥么大概没看吧，提醒一下大家) <br /><br />13。生活的乐趣的大小取决于我们对生活的关心程度。 <br /><br />14。不要怕，不要悔(虽然只有六个字，但是常看常新) <br /><br />15。机遇对于有准备的头脑有特别的亲和力。 <br /><br />16。守业最好的办法就是不断的发展 <br /><br />17。心急吃不了热汤圆 <br /><br />18。必死则生，幸生则死——《吴子兵法》(武经典籍中仅次于《孙子兵法》) <br /></p>
												<p> 19。要改变命运，首先改变自己 <br /><br />20。走自己的路，让别人说去吧！ <br /><br />21。学习的关键——重复 <br /><br />22。只为成功找方法，不为失败找借口(蹩脚的工人总是说工具不好) <br /><br />23。困难就是机遇——温斯顿·丘吉尔 <br /><br />24。我奋斗，所以我快乐——格林斯潘(挽救东南亚金融危机的人，我的偶像) <br /><br />25。好奇者，知识之门 <br /><br />26。生气是用别人的错误惩罚自己。——康德(这个哲学家让人眉开眼笑) <br /><br />27。失去金钱的人损失甚少，失去健康的人损失极多，失去勇气的人损失一切。 <br /><br />28。只要下定决心克服恐惧，便几乎能克服任何恐惧。因为，请记住，除了在脑海中，恐惧无处藏身。——戴尔·卡耐基 <br /><br />29。害怕时，把心思放在必须做的事情上，如果曾经彻底准备，便不会害怕。——戴尔·卡耐基 <br /><br />30。“不可能”这个字(法语是一个字)，只在愚人的字典中找得到。——拿破仑 <br /><br />31。去做你害怕的事，害怕自然就会消失。——罗夫·华多·爱默生 <br /><br />32。这世上的一切都借希望而完成。农夫不会播下一粒玉米，如果他不曾希望它长成种籽；单身汉不会娶妻，如果他不曾希望有小孩；商人或手艺人不会工作，如果他不曾希望因此而有收益。——马丁·路德 <br /><br />33。目标的坚定是性格中最必要的力量泉源之一，也是成功的利器之一。没有它，天才也会在矛盾无定的迷径中，徒劳无功。——查士德斐尔爵士 <br /><br />34。要冒一次险！整个生命就是一场冒险。走得最远的人，常是愿意去做，并愿意去冒险的人。“稳妥”之船，从未能从岸边走远。——戴尔·卡耐基 <br /><br />35。当一个青年人站起来面对这个大莽汉——这个世界——并勇敢地抓住他的胡须时，常会吃惊地发现，胡须脱落在他手上，原来它只是系上去吓唬胆怯的冒险者的。——罗夫·华多·爱默生 <br /><br />36。勇气很有理由被当作人类德性之首，因为这种德性保证了所有其余的德性。——温斯顿·丘吉尔 <br /></p>
										</span>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/MEYE/aggbug/38439.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/MEYE/" target="_blank">MEYE</a> 2006-03-31 12:36 <a href="http://www.blogjava.net/MEYE/articles/38439.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> SQA到底是什么？ </title><link>http://www.blogjava.net/MEYE/articles/38109.html</link><dc:creator>MEYE</dc:creator><author>MEYE</author><pubDate>Wed, 29 Mar 2006 10:15:00 GMT</pubDate><guid>http://www.blogjava.net/MEYE/articles/38109.html</guid><wfw:comment>http://www.blogjava.net/MEYE/comments/38109.html</wfw:comment><comments>http://www.blogjava.net/MEYE/articles/38109.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/MEYE/comments/commentRss/38109.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/MEYE/services/trackbacks/38109.html</trackback:ping><description><![CDATA[
		<u>
				<font color="#0000ff"> SQA到底是什么？
<script language="javascript"><![CDATA[ocument.title="SQA到底是什么？ - "+document.title]]&gt;</script><br /></font>
		</u>
		<div class="postText">
				<strong>
						<br />
						<a href="http://blog.csdn.net/shimizu/archive/2005/04/05/337069.aspx">http://blog.csdn.net/shimizu/archive/2005/04/05/337069.aspx</a>
						<br />
						<br />一、 前言<br /></strong>本人在企业从事SQA工作，同时兼任SEPG的工作进行基于CMM3的过程改进，在实践过程中，对SQA的工作有了较多的想法和认识。本文是个人看法，请大家指教，如果要和本人联系，请发Email到：heqingemail@163.net。<br /><strong>二、SQA的理论探索</strong><br /><strong>2.1、过程的 认识</strong><br />我们都知道一个项目的主要内容是：成本、进度、质量；良好的项目管理就是综合三方面的因素，平衡三方面的目标，最终依照目标完成任务。项目的这三个方面是相互制约和影响的，有时对这三方面的平衡策略甚至成为一个企业级的要求，决定了企业的行为，我们知道IBM的软件是以质量为最重要目标的，而微软的“足够好的软件”策略更是耳熟能详，这些质量目标其实立足于企业的战略目标。所以用于进行质量保证的SQA工作也应当立足于企业的战略目标，从这个角度思考SQA，形成对SQA的理论认识。<br />软件界已经达成共识的：影响软件项目进度、成本、质量的因素主要是“人、过程、技术”。<br />首先要明确的是这三个因素中，人是第一位的。<br />现在许多实施CMM的人员沉溺于CMM的理论过于强调“过程”，这是很危险的倾向。这个思想倾向在国外受到了猛烈抨击，从某种意义上各种敏捷过程方法的提出就是对强调过程的一种反思。<br />“XP”中的一个思想“人比过程更重要” 是值得我们思考的。我个人的意见在进行过程改进中坚持“以人为本”，强调过程和人的和谐。<br />根据现代软件工程对众多失败项目的调查，发现管理是项目失败的主要原因。这个事实的重要性在于说明了“要保证项目不失败，我们应当更加关注管理”，注意这个事实没有说明另外一个问题“良好的管理可以保证项目的成功”。现在很多人基于一种粗糙的逻辑，从一个事实反推到的这个结论，在逻辑上是错误的，这种错误形成了更加错误的做法，这点在SQA的理解上是体现较深。<br />如果我们考证一下历史的沿革，应当更加容易理解CMM的本质。CMM首先是作为一个“评估标准”出现的，主要评估的是美国国防部供应商保证质量的能力。CMM关注的软件生产有如下特点：<br />质量重要<br />规模较大<br />这是CMM产生的原因。它引入了“全面质量管理”的思想，尤其侧重了“全面质量管理”中的“过程方法”，并且引入了“统计过程控制”的方法。可以说这两个思想是CMM背后的基础。<br />上面这些内容形成了我对软件过程地位、价值的基本理解；在这个基础上我们可以引申讨论SQA。<br /><strong>2.2、生产线的隐喻</strong><br />如果将一个软件生产类比于一个工厂的生产。那么生产线就是过程，产品按照生产线的规定过程进行生产。SQA的职责就是保证过程的执行，也就是保证生产线的正常执行。<br />抽象出管理体系模型的如下，这个模型说明了一个过程体系至少应当包含“决策、执行、反馈”三个重要方面。<br />QA的职责就是确保过程的有效执行，监督项目按照过程进行项目活动；它不负责监管产品的质量，不负责向管理层提供项目的情况，不负责代表管理层进行管理，只是代表管理层来保证过程的执行。<br /><br /><br /><br /><br /><strong>2.3、SQA和其他工作的组合</strong><br />在很多企业中，将SQA的工作和QC、SEPG、组织级的项目管理者的工作混合在一起了，有时甚至更加注重其他方面的工作而没有做好SQA的本职工作。<br />根据hjhza 的意见“中国现在基本有三种QA（按照工作重点不同来分）：一是过程改进型，一是配置管理型，一是测试型”。我个人认为是因为SQA工作和其他不同工作组合在一起形成的。<br />下面根据本人经验对它们之间的关系进行一个说明。<br /><strong>2.4、QA和QC</strong><br />两者基本职责<br />QC：检验产品的质量，保证产品符合客户的需求；是产品质量检查者；<br />QA：审计过程的质量，保证过程被正确执行；是过程质量审计者；<br />注意区别检查和审计的不同<br />检查：就是我们常说的找茬，是挑毛病的；<br />审计：来确认项目按照要求进行的证据；仔细看看CMM中各个KPA中SQA的检查采用的术语大量用到了“证实”，审计的内容主要是过程的；对照CMM看一下项目经理和高级管理者的审查内容，他们更加关注具体内容。<br />对照上面的管理体系模型，QC进行质量控制，向管理层反馈质量信息；QA则确保QC按照过程进行质量控制活动，按照过程将检查结果向管理层汇报。这就是QA和QC工作的关系。<br />在这样的分工原则下，QA只要检查项目按照过程进行了某项活动没有，产出了某个产品没有；而QC来检查产品是否符合质量要求。<br />如果企业原来具有QC人员并且QA人员配备不足，可以先确定由QC兼任QA工作。但是只能是暂时的，独立的QA人员应当具备，因为QC工作也是要遵循过程要求的，也是要被审计过程的，这种混合情况，难以保证QC工作的过程质量。<br /><strong>2.5、QA和SEPG</strong><br />两者基本职责<br />SEPG：制定过程，实施过程改进；<br />QA： 确保过程被正确执行<br />SEPG应当提供过程上的指导，帮助项目组制定项目过程，帮助项目组进行策划；从而帮助项目组有效的工作，有效的执行过程。如果项目和QA对过程的理解发生争持，SEPG作为最终仲裁者。为了进行有效过程改进，SEPG必须分析项目的数据。<br />QA本也要进行过程规范，那么所有QA中最有经验、最有能力的QA可以参加SEPG，但是要注意这两者的区别。<br />如果企业的SEPG人员具有较为深厚的开发背景，可以兼任SQA工作，这样利于过程的不断改进；但是由于立法、执法集于一身也容易造成SQA过于强势，影响项目的独立性。<br />管理过程比较成熟的企业，因为企业的文化和管理机制已经健全，SQA职责范围的工作较少，往往只是针对具体项目制定明确重点的SQA计划，这样SQA的审计工作会大大减少，从而可以同时审计较多项目。<br />另一方面，由于分工的细致化，管理体系的复杂化，往往需要专职的SEPG人员，这些人员要求了解企业的所有管理过程和运作情况，在这个基础上才能统筹全局的进行过程改进，这时了解全局的SQA人员就是专职SEPG的主要人选；这些SQA人员将逐渐的转化为SEPG人员，并且更加了解管理知识，而SQA工作渐渐成为他们的兼职工作。<br />这种情况在许多CMM5企业比较多见，往往有时看不见SQA人员在项目组出现或者很少出现，这种SEPG和SQA的融合特别有利于组织的过程改进工作。SEPG确定过程改进内容，SQA计划重点反映这些改进内容，从保证有效的改进，特别有利于达到CMM5的要求。从这个角度，国外的SQA人员为什么高薪就不难理解了，也决定了当前中国SQA人员比较被轻视的原因；因为管理过程还不完善，我们的SQA人员还没有产生这么大的价值嘛！<br /><strong>2.6、QA和组织级的监督管理</strong><br />有的企业为了更好的监督管理项目，建立了一个角色，我取名为“组织级的监督管理者”，他们的职责是对所有项目进行统一的跟踪、监督、适当的管理，来保证管理层对所有项目的可视性、可管理性。<br />为了有效管理项目，“组织级的监督管理者”必须分析项目的数据。<br />他们的职责对照上图的模型，就是执行“反馈”职能。<br />QA本身不进行反馈工作，最多对过程执行情况的信息进行反馈。<br />SQA职责最好不要和“组织级的项目管理者”的职责混合在一起，否则容易出现SAQ困境：一方面SQA不能准确定位自己的工作，另一方面过程执行者对SQA人员抱有较大戒心。<br />如果建立了较好的管理过程，那么就会增强项目的可视性，从而保证企业对所有项目的较好管理；而QA来确保这个管理过程的运行。<br /><strong>三、SQA的工作内容和工作方法</strong><br /><strong>3.1、 计划</strong><br />针对具体项目制定SQA计划，确保项目组正确执行过程。制定SQA计划应当注意如下几点：<br />有重点：依据企业目标以及项目情况确定审计的重点<br />明确审计内容：明确审计哪些活动，那些产品<br />明确审计方式：确定怎样进行审计<br />明确审计结果报告的规则：审计的结果报告给谁<br /><strong>3.2、审计/证实</strong><br />依据SQA计划进行SQA审计工作，按照规则发布审计结果报告。<br />注意审计一定要有项目组人员陪同，不能搞突然袭击。双方要开诚布公，坦诚相对。<br />审计的内容：是否按照过程要求执行了相应活动，是否按照过程要求产生了相应产品。<br /><strong>3.3、问题跟踪</strong><br />对审计中发现的问题，要求项目组改进，并跟进直到解决。<br /><strong>四、SQA的素质</strong><br />过程为中心：应当站在过程的角度来考虑问题，只要保证了过程，QA就尽到了责任。<br />服务精神：为项目组服务，帮助项目组确保正确执行过程<br />了解过程：深刻了解企业的工程，并具有一定的过程管理理论知识<br />了解开发：对开发工作的基本情况了解，能够理解项目的活动<br />沟通技巧：善于沟通，能够营造良好的气氛，避免审计活动成为一种找茬活动。<br /><br /><p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=337069</p></div>
<img src ="http://www.blogjava.net/MEYE/aggbug/38109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/MEYE/" target="_blank">MEYE</a> 2006-03-29 18:15 <a href="http://www.blogjava.net/MEYE/articles/38109.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>主题：给大家提供一些JAVA网站，希望对大家有用。</title><link>http://www.blogjava.net/MEYE/articles/37563.html</link><dc:creator>MEYE</dc:creator><author>MEYE</author><pubDate>Mon, 27 Mar 2006 02:46:00 GMT</pubDate><guid>http://www.blogjava.net/MEYE/articles/37563.html</guid><wfw:comment>http://www.blogjava.net/MEYE/comments/37563.html</wfw:comment><comments>http://www.blogjava.net/MEYE/articles/37563.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/MEYE/comments/commentRss/37563.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/MEYE/services/trackbacks/37563.html</trackback:ping><description><![CDATA[
		<span class="main">http://www.javaalmanac.com Java开发者年鉴一书的在线版本. 要想快速查到某种Java技巧的用法及示例代码, 这是一个不错的去处. <br /><br />http://www.onjava.com O'Reilly的Java网站. 每周都有新文章. <br /><br />http://java.sun.com 官方的Java开发者网站 - 每周都有新文章发表. <br /><br />http://www.developer.com/java 由Gamelan.com 维护的Java技术文章网站. <br /><br />http://www.java.net Sun公司维护的一个Java社区网站. <br /><br />http://www.builder.com Cnet的Builder.com网站 - 所有的技术文章, 以Java为主. <br /><br />http://www.ibm.com/developerworks/java IBM的Developerworks技术网站; 这是其中的Java技术主页. <br /><br />http://www.javaworld.com 最早的一个Java站点. 每周更新Java技术文章. <br /><br />http://www.devx.com/java DevX维护的一个Java技术文章网站. <br /><br />http://www.fawcette.com/javapro JavaPro在线杂志网站. <br /><br />http://www.sys-con.com/java Java Developers Journal的在线杂志网站. <br /><br />http://www.javadesktop.org 位于Java.net的一个Java桌面技术社区网站. <br /><br />http://www.theserverside.com 这是一个讨论所有Java服务器端技术的网站. <br /><br />http://www.jars.com 提供Java评论服务. 包括各种framework和应用程序. <br /><br />http://www.jguru.com 一个非常棒的采用Q&amp;A形式的Java技术资源社区. <br /><br />http://www.javaranch.com 一个论坛，得到Java问题答案的地方，初学者的好去处。 <br /><br />http://www.ibiblio.org/javafaq/javafaq.html comp.lang.java的FAQ站点 - 收集了来自comp.lang.java新闻组的问题和答案的分类目录. <br /><br />http://java.sun.com/docs/books/tutorial/ 来自SUN公司的官方Java指南 - 对于了解几乎所有的java技术特性非常有帮助. <br /><br />http://www.javablogs.com 互联网上最活跃的一个Java Blog网站. <br /><br />http://java.about.com/ 来自About.com的Java新闻和技术文章网站. <br /><br />http://www.javaeye.com </span>
<img src ="http://www.blogjava.net/MEYE/aggbug/37563.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/MEYE/" target="_blank">MEYE</a> 2006-03-27 10:46 <a href="http://www.blogjava.net/MEYE/articles/37563.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>主题：许多C/C++/VC++的好网站！</title><link>http://www.blogjava.net/MEYE/articles/37562.html</link><dc:creator>MEYE</dc:creator><author>MEYE</author><pubDate>Mon, 27 Mar 2006 02:45:00 GMT</pubDate><guid>http://www.blogjava.net/MEYE/articles/37562.html</guid><wfw:comment>http://www.blogjava.net/MEYE/comments/37562.html</wfw:comment><comments>http://www.blogjava.net/MEYE/articles/37562.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/MEYE/comments/commentRss/37562.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/MEYE/services/trackbacks/37562.html</trackback:ping><description><![CDATA[
		<div align="left">
				<span class="main">http://www.cuj.com/ C-C++ Users Journal <br /><br />http://www.sgi.com/tech/stl/ SGI STL Source <br /><br />http://www.stlport.org/ STLport <br /><br />http://www.c-view.org/ C维视点 <br /><br />http://www.vckbase.com/ VC知识库 <br /><br />http://www.vchelp.net/ VC Help <br /><br />http://www.codeproject.com/ <br /><br />http://www.codeguru.com/ <br /><br />http://www.digitalmars.com/ <br /><br />http://www.cpp-home.com/ <br /><br />http://www.cprogramming.com/ <br /><br />http://www.cppreference.com/ <br /><br />http://www.cplusplus.com/ <br /><br />http://www.boost.org/ <br /><br /></span>
		</div>
<img src ="http://www.blogjava.net/MEYE/aggbug/37562.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/MEYE/" target="_blank">MEYE</a> 2006-03-27 10:45 <a href="http://www.blogjava.net/MEYE/articles/37562.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[分享]常用论坛大全,(绝对经典中的经典)[</title><link>http://www.blogjava.net/MEYE/articles/37486.html</link><dc:creator>MEYE</dc:creator><author>MEYE</author><pubDate>Sun, 26 Mar 2006 08:45:00 GMT</pubDate><guid>http://www.blogjava.net/MEYE/articles/37486.html</guid><wfw:comment>http://www.blogjava.net/MEYE/comments/37486.html</wfw:comment><comments>http://www.blogjava.net/MEYE/articles/37486.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/MEYE/comments/commentRss/37486.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/MEYE/services/trackbacks/37486.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: [分享]常用论坛大全,(绝对经典中的经典)[																																																														极品论坛：APPs：红雨论坛 http://www2.appz.cn/BillWang：Billwang Billwang http://www.billwang.net/blueidea：经典论坛 ...&nbsp;&nbsp;<a href='http://www.blogjava.net/MEYE/articles/37486.html'>阅读全文</a><img src ="http://www.blogjava.net/MEYE/aggbug/37486.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/MEYE/" target="_blank">MEYE</a> 2006-03-26 16:45 <a href="http://www.blogjava.net/MEYE/articles/37486.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>