<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel>
<title>编程技术 - 翔宇亭IT乐园</title>
<link>http://www.biye5u.com</link>
<language>zh-cn</language>
<description>翔宇亭IT乐园</description>
<copyright>http://www.biye5u.com</copyright>
<generator>Rss Generator By NewAsp.Net</generator>
<docs>http://www.biye5u.com/article/rssfeed.asp</docs>
<image>
<title><![CDATA[翔宇亭IT乐园]]></title>
<url>http://www.biye5u.com/images/logo.gif</url>
<link>http://www.biye5u.com</link>
</image>
<item>
<title><![CDATA[UML系列内容之十四：部署图]]></title>
<link>/article/prog/se/2022/6562.html</link>
<author>本站</author>
<category><![CDATA[软件工程]]></category>
<pubDate>2022-02-16 12:46:53</pubDate>
<description><![CDATA[本文最早发布在本站的公众号：优雅的代码，共计14篇文章，将陆续转载到本站中。
微信搜索本站订阅号：优雅的代码。欢迎关注。

今天，本站带领大家来学习一下UML中的部署图。
部署图很简单，简单到没必要大张旗鼓的进行介绍，但是本文还是详细的介绍一下相关知识。
部署图（Deployment Diagram）用于描述系统硬件的物理拓扑结构以及在相关节点上运行的软件工件（artifacts）。
工件是系统开发过程产生的具体的元素，如可执行文件、库、档案文件、数据库模式、配置文件等。
部署图与上篇文章介绍的组件图都是对系统物理方面进行建模。
构成的部署图的元素主要包括节点（node）和节点...]]></description>
</item>
<item>
<title><![CDATA[UML系列内容之十三：组件图]]></title>
<link>/article/prog/se/2022/6560.html</link>
<author>本站</author>
<category><![CDATA[软件工程]]></category>
<pubDate>2022-02-09 10:17:04</pubDate>
<description><![CDATA[本文最早发布在本站的公众号：优雅的代码，共计14篇文章，将陆续转载到本站中。
微信搜索本站订阅号：优雅的代码。欢迎关注。

今天，本站带领大家来熟悉一下UML中的组件图。
1 什么是组件图
组件图（Component Diagram）又称构件图，是UML中描述一个系统中的物理方面的图形，它是用来描述构成系统的各个组件、组件提供的接口与需求的接口、端口以及它们之间关系的图。
这种图在基于组件开发的系统建模中很重要。
组件图可以帮助用户理解系统的结构。
2 组件图的构成
组件图中主要包括组件、接口及其它们之间的关系三种元素。
2.1 组件
组件（Component）是定义了良...]]></description>
</item>
<item>
<title><![CDATA[UML系列内容之十二：包图]]></title>
<link>/article/prog/se/2022/6559.html</link>
<author>本站</author>
<category><![CDATA[软件工程]]></category>
<pubDate>2022-02-07 13:52:24</pubDate>
<description><![CDATA[本文最早发布在本站的公众号：优雅的代码，共计14篇文章，将陆续转载到本站中。
微信搜索本站订阅号：优雅的代码。欢迎关注。

今天，本号将给各位伙伴们介绍一下UML中的包图。
什么是包和包图
包是对UML中各模型元素进行组织管理的一种机制，它把概念上相似、有关联的模型元素（包括静态的和动态的）组织到一个包中，形成具有各种功能或用途的模块，并可以控制包中元素的可见性，以方便人们更好的理解复杂的系统。
包图由包之间的关系组成，通过包之间关系的描述来展现系统各个模块之间的依赖关系。
包的表示图形
它类似于操作系统中的文件夹，因此，它在UML中也使用类似的文件夹符号来表示。

包的名...]]></description>
</item>
<item>
<title><![CDATA[UML系列内容之十一：活动图]]></title>
<link>/article/prog/se/2022/6558.html</link>
<author>本站</author>
<category><![CDATA[软件工程]]></category>
<pubDate>2022-01-22 08:47:25</pubDate>
<description><![CDATA[本文最早发布在本站的公众号：优雅的代码，共计14篇文章，将陆续转载到本站中。
微信搜索本站订阅号：优雅的代码。欢迎关注。

本站在上一篇文章中给大家介绍了状态机图的相关知识，在这一季中我将带领大家来了解一下UML中的活动图。
什么是活动图
活动图是一种用于描述系统行为的模型视图，它可以用来描述系统的工作流程和并发行为，用于展现参与系统某一行为的类进行的各种活动的顺序关系。
活动图类似于流程图，可以描述过程逻辑、业务流程和工作流，但活动图支持并发行为。
下图是一个活动图的例子，它对教师的授课过程进行了描述。

从这个活动图中，我们可以知道一个教师授课的过程包括的主要活动有：起立...]]></description>
</item>
<item>
<title><![CDATA[UML系列内容之十：状态图]]></title>
<link>/article/prog/se/2022/6557.html</link>
<author>本站</author>
<category><![CDATA[软件工程]]></category>
<pubDate>2022-01-19 09:09:52</pubDate>
<description><![CDATA[本文最早发布在本站的公众号：优雅的代码，共计14篇文章，将陆续转载到本站中。
微信搜索本站订阅号：优雅的代码。欢迎关注。

今天，继续我们的UML之旅。
今天，我们将浏览一下UML中的状态机图。
1.什么是状态机图
状态机图（State Machine Diagram）是系统分析中常用的一种工具，它用于描述一个对象在其生命周期内所经历的各种状态，以及状态之间的转移、引发转移的事件或状态转移的活动。
状态机图主要用于对类或对象的动态行为进行建模。也可以对一个用例，或整个系统进行建模。
2.状态机的构成
状态机由状态、转移、事件和动作等组成。
2.1 状态
状态（state）...]]></description>
</item>
<item>
<title><![CDATA[UML系列内容之九：协作图]]></title>
<link>/article/prog/se/2022/6556.html</link>
<author>本站</author>
<category><![CDATA[软件工程]]></category>
<pubDate>2022-01-16 10:59:33</pubDate>
<description><![CDATA[本文最早发布在本站的公众号：优雅的代码，共计14篇文章，将陆续转载到本站中。
微信搜索本站订阅号：优雅的代码。欢迎关注。

Hello,everybody. 这一期我们来探讨一下UML中的协作图。
1 协作图的含义
协作图（Collaboration Diagram，又称协同图）也是交互图的一种，它主要描述用例在实现过程中参与的对象以及对象之间的交互消息。
可以认为协作图是序列图的另外一种表示交互的方法，但它不强调时间和序列。
协作图的主要用途是描述类的一个操作的实现，用于描述对象之间的简单交互。
2 协作图的构成
协作图主要由对象（Object）、消息（Message）和链...]]></description>
</item>
<item>
<title><![CDATA[UML系列内容之八：序列图]]></title>
<link>/article/prog/se/2022/6555.html</link>
<author>本站</author>
<category><![CDATA[软件工程]]></category>
<pubDate>2022-01-15 10:39:24</pubDate>
<description><![CDATA[本文最早发布在本站的公众号：优雅的代码，共计14篇文章，将陆续转载到本站中。
微信搜索本站订阅号：优雅的代码。欢迎关注。

序列图（Sequence Diagram），又称顺序图或时序图，它是描述对象行为的一种交互视图。
1 什么是序列图
序列图描述某个业务场景的行为，它关注对象之间消息传送的时间顺序。
如在图书馆借阅系统中，图书馆工作人员帮助读者完成图书借阅的业务场景、帮助读者完成还书的业务场景、读者在线预借图书的场景等。
序列图的主要用途是为用例进行逻辑建模，对用例所表达的需求进行更加精细的表达。
2 序列图的构成
序列图主要包括对象、生命线、消息和激活4种元素。
在U...]]></description>
</item>
<item>
<title><![CDATA[UML系列内容之七：类图]]></title>
<link>/article/prog/se/2022/6554.html</link>
<author>本站</author>
<category><![CDATA[软件工程]]></category>
<pubDate>2022-01-14 08:17:12</pubDate>
<description><![CDATA[本文最早发布在本站的公众号：优雅的代码，共计14篇文章，将陆续转载到本站中。
微信搜索本站订阅号：优雅的代码。欢迎关注。

类图是UML模型中静态视图。它用来描述系统中的有意义的概念，包括具体的概念、抽象的概念、实现方面的概念等。如在图书馆借阅系统中，图书、借书、还书、读者、超期罚款等，这些都是这个系统中的一些有意义的概念。
在前面的文章中曾经说过，静态视图包括类图和对象图。
这篇文章重点介绍类图。
1 什么是类图
类图（Class Diagram）是描述类、接口、协同以及他们之间关系的图，用来显示系统中这些概念的静态结构。
类图是其它图的基础。我们可以在类图的基础上，使用状态...]]></description>
</item>
<item>
<title><![CDATA[UML系列内容之六：在线绘图工具draw.io的详细教程]]></title>
<link>/article/prog/se/2022/6553.html</link>
<author>本站</author>
<category><![CDATA[软件工程]]></category>
<pubDate>2022-01-13 14:11:34</pubDate>
<description><![CDATA[本文最早发布在本站的公众号：优雅的代码，共计14篇文章，将陆续转载到本站中。
微信搜索本站订阅号：优雅的代码。欢迎关注。

这篇文章重点介绍在线绘图工具draw.io的使用方法。
1 draw.io简介
draw.io在线绘图工具是英格兰一家公司开发的，该公司信条：为每个人提供免费、高质量的绘图软件。
这款工具无须注册登录，安全、开源、使用广泛、且基于浏览器，免安装。
可绘制：流程图、思维导图、组织结构图、文氏图、信息图、楼宇平面图、网络图、架构图、电气工程图、UML图等。
2 创建绘图
在浏览器地址栏里输入：draw.io，回车后，其自动导航到：app.diagrams.n...]]></description>
</item>
<item>
<title><![CDATA[UML系列内容之五：一个用例图的案例]]></title>
<link>/article/prog/se/2022/6552.html</link>
<author>本站</author>
<category><![CDATA[软件工程]]></category>
<pubDate>2022-01-12 10:49:35</pubDate>
<description><![CDATA[本文最早发布在本站的公众号：优雅的代码，共计14篇文章，将陆续转载到本站中。
微信搜索本站订阅号：优雅的代码。欢迎关注。

这篇文章将介绍用例图的一个案例&mdash;&mdash;图书馆借阅系统。
案例结合某校实际情况，但数据和背景纯属虚构，仅为了说明问题。

1 背景介绍
1.1 基本情况
S校共有在职教职员工1500余人，退休职工300余人，在校学生20000余人。S校图书馆拥有各类图书150万余册。
在职教师每人可借阅40册，可借阅60天；本科生可借阅25册，可借阅60天；研究生，包括硕士生和博士生，可借阅30册，可借阅60天；退休职工，可借阅10册，可借阅30天；所...]]></description>
</item>
<item>
<title><![CDATA[UML系列内容之四：用例图]]></title>
<link>/article/prog/se/2022/6550.html</link>
<author>本站</author>
<category><![CDATA[软件工程]]></category>
<pubDate>2022-01-11 08:36:36</pubDate>
<description><![CDATA[本文最早发布在本站的公众号：优雅的代码，共计14篇文章，将陆续转载到本站中。
微信搜索本站订阅号：优雅的代码。欢迎关注。

这一季我们来了解一下UML中的用例图。
1 什么是用例图
在开发系统之前，最重要的工作是获取用户的需求，而在用户需求中最重要的是关于用户提出的系统功能性需求，我们可以借助用例图来可视化的表达用户的需求。
用例图（Use Case Diagram）是由参与者（Actor）、用例（Use Case）以及它们之间的关系构成的用于描述系统功能的视图，是被称为参与者的外部用户所能观察到的系统功能的模型图。
用例图常在需求分析阶段使用。
2 用例图的构成
用例图中主...]]></description>
</item>
<item>
<title><![CDATA[UML系列内容之三：UML中的视图和图]]></title>
<link>/article/prog/se/2022/6549.html</link>
<author>本站</author>
<category><![CDATA[软件工程]]></category>
<pubDate>2022-01-09 10:10:40</pubDate>
<description><![CDATA[本文最早发布在本站的公众号：优雅的代码，共计14篇文章，将陆续转载到本站中。
微信搜索本站订阅号：优雅的代码。欢迎关注。

在《UML系列内容之二：UML通用知识》中重点介绍了UML中的事物、关系和UML中公共机制。
这篇文章将继续来介绍UML中的视图和图。
1 UML中的视图
我们可以从多个角度来审视一个系统，一个视图就是表达系统某一方面特征的建模元素的集合。视图的划分并没有严格的标准，因此有很多种分法。这篇文章沿袭了J.Rumbaugh在《UML参考手册》中的分法。
在每一类视图中使用1~2种特定的图可视化的表示视图中的相关概念及关系。
UML中的视图及使用的各种图可以如下...]]></description>
</item>
<item>
<title><![CDATA[UML系列内容之二：UML通用知识]]></title>
<link>/article/prog/se/2022/6546.html</link>
<author>本站</author>
<category><![CDATA[软件工程]]></category>
<pubDate>2022-01-08 10:06:20</pubDate>
<description><![CDATA[本文最早发布在本站的公众号：优雅的代码，共计14篇文章，将陆续转载到本站中。
微信搜索本站订阅号：优雅的代码。欢迎关注。

今天我们继续来学习UML的相关知识。
在真正接触UML核心之前，我们首先了解一下UML的一些通用知识。这如同在进入公园之前，先在公园周围溜达溜达。
那么，我们今天在进入UML这个公园之前，要看看UML公园周围的什么风景呢？下面这个图给出这次带领大家参观的内容。

UML中的事物
首先，我带领大家参观一下UML中的事物。
UML中的事物是UML中基本的面向对象的构造块，也是UML中的重要词汇，使用这些构造块可以构造出良好模型。
在UML中定义了4种事物，...]]></description>
</item>
<item>
<title><![CDATA[UML系列内容之一：UML简介]]></title>
<link>/article/prog/se/2022/6545.html</link>
<author>biye5u.com</author>
<category><![CDATA[软件工程]]></category>
<pubDate>2022-01-05 09:25:46</pubDate>
<description><![CDATA[本文最早发布在本站的公众号：优雅的代码，共计14篇文章，将陆续转载到本站中。
微信搜索本站订阅号：优雅的代码。欢迎关注。

 什么是UML
UML（Unified Modeling Language,UML）是一个通用的可视化建模语言标准，用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。
提到语言，很多小伙伴开始产生恐惧了，你脑子中可能会飘过English、Java、C#、PHP等这些神兽，它们可能把不少人折腾的够呛。
但UML不是一门程序设计语言，而是一种可视化的建模语言。之所以称它为语言，因为UML提供了用于交流的词汇及规则，用户在这些词汇与规则框架下可以对同一软...]]></description>
</item>
<item>
<title><![CDATA[Java中将数字字符串转换成千分位显示的方法]]></title>
<link>/article/prog/java/2016/6305.html</link>
<author>biye5u.com</author>
<category><![CDATA[Java]]></category>
<pubDate>2016-02-04 22:13:33</pubDate>
<description><![CDATA[本文给出了在Java中将数字字符串转换成千分位显示的方法。
/**
* 将字符串数字转成千分位显示。
*/
public static String comdify(String value) &#123;
DecimalFormat df = null;
if (value.indexOf(&quot;.&quot;) &gt; 0) &#123;
int i = value.length() - value.indexOf(&quot;.&quot;) - 1;
switch (i) &#123;
case 0:
df = new DecimalFormat(&quot;###,##0&quot;);
break;
case 1:
df = new Deci...]]></description>
</item>
<item>
<title><![CDATA[java中实现escape编码的算法]]></title>
<link>/article/prog/java/2016/6301.html</link>
<author>biye5u.com</author>
<category><![CDATA[Java]]></category>
<pubDate>2016-01-28 12:11:37</pubDate>
<description><![CDATA[在编程时，有时需要对字符串进行escape编码，在java中可以使用下面的方法对字符串进行escape编码
/**
 * 对字符串 escape 编码
 * 
 * @param src
 * @return
 */
public static String escape(String src) &#123;
 int i;
 char j;
 StringBuffer tmp = new StringBuffer();
 tmp.ensureCapacity(src.length() * 6);
 for (i = 0; i &lt; src.length(); i++) &#123;
j ...]]></description>
</item>
<item>
<title><![CDATA[VF中调用Form表单的方法]]></title>
<link>/article/prog/VF/2014/6279.html</link>
<author>biye5u.com</author>
<category><![CDATA[VF]]></category>
<pubDate>2014-07-29 12:59:37</pubDate>
<description><![CDATA[在VF中调用表单主要目的是以可视化的界面呈现对VF的操作。在VF中表单由表单设计器设计的文件。该文件是经编译过的。
调用VF表单的语法格式为：
DO FORM 表单文件名 [NAME 变量名 [LINKED]]
以上各参数的含义：
（1）表单文件名即是要运行的由表单设计器设计的表单文件名称。
（2）变量名为调用该表单所用的变量名称，做为表单，不能直接用这的名称去调用它，必须将其赋给一个变量，然后用这个变量来调用它。如果您不会在这个表单之外调用它，也可以不要这个变量。
（3）linked：在程序中产生的所有变量在程序运行结束后将被释放，即这些变量不再存在，因此也就无法继续调用这些变更...]]></description>
</item>
<item>
<title><![CDATA[VF中do case...endcase分支语句的使用]]></title>
<link>/article/prog/VF/2014/6276.html</link>
<author>biye5u.com</author>
<category><![CDATA[VF]]></category>
<pubDate>2014-07-22 07:25:01</pubDate>
<description><![CDATA[在VF中可以使用do case ... endcase分支语句根据不同的条件执行不同的程序组，其语法格式如下：
DO CASE
 CASE 逻辑表达式1
 程序组1
 [CASE 逻辑表达式2
 程序组2
 ... 
 CASE 逻辑表达式n
 程序组n]
 [OTHERWISE
 程序组0]
ENDCASE
该分支结构的执行过程如下：
当程序执行到 do case语句时，便检验第一个 case 的逻辑表达式（逻辑表达式1）是否为真，如不为真，接着检验第二个 case 的逻辑表达式，以此类推直到逻辑表达式n。当检测到第一个为真的逻辑表达式时，便执行跟随在其后面的程序组...]]></description>
</item>
<item>
<title><![CDATA[为什么要学习C语言]]></title>
<link>/article/prog/C/2014/6267.html</link>
<author>孙志岗</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2014-05-22 19:47:56</pubDate>
<description><![CDATA[为什么要学C语言 
&mdash;&mdash;孙志岗
谁叫你不幸生在中国了？
&mdash;&mdash;何祚庥（中国科学院院士）
这是一本给非计算机专业的大学生的C语言的书。“我不是学计算机的，为啥要学C语言？”这个问题每年在中华大地都会被问上几百万次。被问的对象可能是老师，也可能是师哥师姐。师哥师姐往往也就是故作明了的表情，复述一遍隐约记得的老师的话。而这些话多半都是比较高瞻远瞩的，例如“将来可能会用到”，“锻炼编程思维有好处”，“C语言是学编程的基础”等等。这些话没有错，所谓“技不压身”，多学点儿东西肯定比不学要有好处。但问题是，如果把学C语言的精力用来学学其它与专业相关度更高...]]></description>
</item>
<item>
<title><![CDATA[使用Java实现插入排序]]></title>
<link>/article/prog/java/2014/6266.html</link>
<author>佚名</author>
<category><![CDATA[Java]]></category>
<pubDate>2014-05-10 09:05:33</pubDate>
<description><![CDATA[ 转载一个使用Java实现插入排序算法的源代码：
//一 插入排序法: 
//说明: 每次将一个待排序的记录，按其关键字大小插入到前面已经排好序的子文件中的适当位置，直到全部记录插入完成为止。
public class InsertSorter&lt;E extends Comparable&lt;E&gt;&gt; extends Sorter&lt;E&gt; &#123; 

/** 
* from 起始位置 
* len 从起始位置开始 需要比较的次数 
*/ 
public void sort(E[] array, int from, int len) &#123; 
 E tmp=null; 
 for(int i...]]></description>
</item>
<item>
<title><![CDATA[VF中do while...enddo循环语句]]></title>
<link>/article/prog/VF/2014/6256.html</link>
<author>本站</author>
<category><![CDATA[VF]]></category>
<pubDate>2014-03-30 10:45:33</pubDate>
<description><![CDATA[在VF中可以使用循环语句(do while...enddo)来反复执行一段代码，直到满足某个条件退出而执行循环后面的语句。
其语法格式为：
DO WHILE lExpression
 Commands
 [LOOP]
 [EXIT]
ENDDO
上述语法中lExpression 为一逻辑表达式，其值如果是“真”，即执行commands程序语句序列，如果表达的值为“假”，则跳过该段程序组，执行enddo后面的语句。
Commands 当表达式 lExpression 值为真时所要执行的程序语句序列，即可以是由多个VF语句构成的序列。
LOOP 此为 do while...end...]]></description>
</item>
<item>
<title><![CDATA[VF中SET talk on|off的使用]]></title>
<link>/article/prog/VF/2014/6255.html</link>
<author>佚名</author>
<category><![CDATA[VF]]></category>
<pubDate>2014-03-30 10:41:44</pubDate>
<description><![CDATA[在VF中，用开关命令执行状态语句：set talk on/off来确定是否显示VFP命令执行的状态。
其语法格式为：
SET TALK ON | OFF
注意：语法中的竖线“|”的意思是两者选择其中的一个，即此命令要么是SET TALK ON要么是SET TALK OFF。
其中，
ON 显示VFP命令执行的状态。
OFF 不显示VFP命令执行的状态。
很多VFP命令执行后，会显示执行后的结果状态，如 locate for 命令执行，如找到记录的会显示被找到的记录号，否则会显示“已到文件尾”，但一般我们在程序中是不需要这些显示的，比如找到了记录就直接显示出来，没找到一般用一个对话...]]></description>
</item>
<item>
<title><![CDATA[VF中return语句的使用]]></title>
<link>/article/prog/VF/2014/6254.html</link>
<author>本站</author>
<category><![CDATA[VF]]></category>
<pubDate>2014-03-30 10:35:39</pubDate>
<description><![CDATA[return语句在VF中用于返回调用程序。了解编程的人知道，基本在所有的编程语言中都有这个语句。
在VF中，return语句用于返回调用本程序（该语句所在程序）的程序。
在VF中，当一个程序A调用另一个程序B时，系统便开始执行B程序中的语句，到一定时候往往要从程序B返回程序A，便可使用该语句。
程序A调用程序B，当从B返回A后，系统接着执行调用语句(do b)下面的一条语句。
举例说明：
程序a.prg如下：
do while .not. eof()
 if 工资&lt;100
 do b
 endif
 skip
enddo
程序b.prg如下：
replace 工资 w...]]></description>
</item>
<item>
<title><![CDATA[VF中的赋值语句]]></title>
<link>/article/prog/VF/2014/6253.html</link>
<author>本站</author>
<category><![CDATA[VF]]></category>
<pubDate>2014-03-29 14:44:38</pubDate>
<description><![CDATA[在VF中可以使用赋值语句(store...to)给一个变量赋值。其语法格式如下：
STORE 表达式 TO 变量名表
说明：
语法中表达式的值即为要赋给变量的数据；
变量名表即为要被赋值的各个变量。在这里可以是一个变量，也可以是多个变量，如果有多个变量，每个变量间用“,”（逗号）隔开。
如果是给一个变量赋值，该语句可写成如下形式：
变量名=表达式
表达式可以是一个数值，也可以是一个算术式。
下面给出几个例子：
例子1：将3 赋给ab、xyz、jfz三个变量，可编写程序如下：
store 3 to ab,xyz,jfz
例子2：将变量gz的值加100后赋给yfgz。程序如下...]]></description>
</item>
<item>
<title><![CDATA[Visual Foxpro中的if...endif语句]]></title>
<link>/article/prog/VF/2014/6252.html</link>
<author>本站</author>
<category><![CDATA[VF]]></category>
<pubDate>2014-03-29 14:35:24</pubDate>
<description><![CDATA[在VF中，IF...ENDIF语句是一个逻辑判断语句，其根据一逻辑表达式的值，有条件的执行一组命令。其语法格式如下：
IF 逻辑表达式 [THEN]
 程序组1
[ELSE
 程序组2]
ENDIF
语法中的逻辑表达式代表一逻辑值，如果这逻辑值为真，系统执行程序组1，否则不执行程序组1，如果有else及程序组2的话，则执行程序组2，如没有则什么也不执行，直接执行endif后面的语句。
在if...endif之间还可以有if...endif，即该语句是可以嵌套的。then可以有也可以没有，对程序没有影响。
else及程序组2可以有也可以没有，但如果有的话，在逻辑表达式的值为假时，...]]></description>
</item>
<item>
<title><![CDATA[atol函数的使用]]></title>
<link>/article/prog/C/2014/6240.html</link>
<author>biye5u.com</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2014-02-18 22:31:57</pubDate>
<description><![CDATA[atol函数的作用是将一个字符串转化为长整型数据，其原型如下：
long int atol ( const char * str );
该函数首先丢弃无用的空白，直到第一个非空白字符串出现。然后从该字符开始，将其解释为10进制的数字。
在可以形成数值的字符串后可以包括多余的字符，这些字符对该函数的作用没有影响。
如果字符串中的第一个非空白字符不是有效的整型数字，或该字符串是空字符串，或字符串仅包括空白字符，则该函数将不进行转换而返回0.
该函数如执行成功，则返回一个相应的长整型数，否则返回0.
如果转换的数值超出了长整型可以表达的数值范围，其将导致未定义的行为。
下面给出该函数的...]]></description>
</item>
<item>
<title><![CDATA[JAVA运行环境变量的设置]]></title>
<link>/article/prog/java/2013/6187.html</link>
<author>不详</author>
<category><![CDATA[Java]]></category>
<pubDate>2013-10-10 22:32:44</pubDate>
<description><![CDATA[在安装jdk后，通常，我们需要对计算机进行相关设置后，其才能正常使用。本文简单介绍Java环境的配置方法及其作用。
1、java环境的配置方法
首先，右键单击我的电脑。打开属性，然后选择“高级”里面的“环境变量”，在新的打开界面中的系统变量需要设置三个属性“JAVA_HOME”、“path”、“classpath”,其中在没安装过jdk的环境下，path属性是本来存在的；而JAVA_HOME和classpath是不存在的。
（1）点“新建”，然后在变量名写上JAVA_HOME，顾名其意该变量的含义就是java的安装路径，然后在变量值写入刚才安装的路径“C:\jdk1.6”。（注：如果安装...]]></description>
</item>
<item>
<title><![CDATA[敏捷开发方法简介]]></title>
<link>/article/prog/se/2013/6030.html</link>
<author>cnblogs</author>
<category><![CDATA[软件工程]]></category>
<pubDate>2013-01-18 08:07:51</pubDate>
<description><![CDATA[从广义上来给敏捷开发下定义，敏捷开发（agile development）是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中，软件项目的构建被切分成多个子项目，各个子项目的成果都经过测试，具备集成和可运行的特征。简言之，就是把一个大项目分为多个相互联系，但也可独立运行的小项目，并分别完成，在此过程中软件一直处于可使用状态。
以下内容转自cnblogs博客，原文地址：http://www.cnblogs.com/blusehuang/archive/2007/10/17/926802.html
下图这两个圆圈表示不同的视角上的敏捷实践，包括开发者视角和项目管理的视角。接下来从里向外进行...]]></description>
</item>
<item>
<title><![CDATA[Java中获取一个Byte 的各个Bit的值]]></title>
<link>/article/prog/java/2012/6007.html</link>
<author>java小强</author>
<category><![CDATA[Java]]></category>
<pubDate>2012-12-20 19:38:38</pubDate>
<description><![CDATA[在介绍具体方法之前，首先介绍两个概念：位（bit）和字节（byte)。计算机中以二进制来存储数据，二进制共有两个数：0和1。一个0或一个1即为1位。8位即为一个字节，字节为计算机存储空间的基本计量单位。
一般，一个英文字符或数字占一个字节，一个汉字占2个字节。
在各种语言中，数据类型都占用一定的存储空间，在Java中，各数据类型占用的空间情况如下：


 
 
  数据类型
  字节
  数据范围
 
 
  byte
  1个字节(8位)
  -128~127 （-27~27-1）
 
 
  short
  2个字节(16位)
  -32768~327...]]></description>
</item>
<item>
<title><![CDATA[使用Java编写浏览图片和播放音乐的程序]]></title>
<link>/article/prog/java/2012/5824.html</link>
<author>佚名</author>
<category><![CDATA[Java]]></category>
<pubDate>2012-09-02 21:20:10</pubDate>
<description><![CDATA[本文介绍了Java中浏览图片和播放音乐的实现方法。
/**
 *程序要求:编写一个Applet的小程序，准备5幅图片和三个音乐文件，绘制到Applet中，
 *并增加几个按钮，控制图片的切换、放大、缩小和音乐文件的播放。
 *作者：wwj
 *日期：2012/4/29
 *参考：neicole
 *功能：能进行图片和歌曲的选择变换的applet小程序
 **/
 import javax.swing.*;
 import java.awt.*;
 import java.awt.event.*;
 import java.applet.Applet;
 import ...]]></description>
</item>
<item>
<title><![CDATA[Java图形处理程序：绘制5个不同种颜色的同心圆]]></title>
<link>/article/prog/java/2012/5823.html</link>
<author>不详</author>
<category><![CDATA[Java]]></category>
<pubDate>2012-09-02 21:09:29</pubDate>
<description><![CDATA[ 与你所熟悉的编程语言一样，Java中也提供了较为丰富的图形处理程序，本文给出了一个简单的图形绘制的源代码：五个不同颜色的同心圆。
/**
 *程序要求：新建一个600*600像素的应用程序窗口，并在窗口中绘制5个不同颜色的同心圆，
 *所有圆心都是屏幕的中心点，相邻两个圆直接的半径相差50像素
 *效果图如下图所示（颜色随机设置），源程序保存为Ex7_1.java。
 *作者：wwj
 *日期：2012/4/25
 *功能：显示一个有5个不同颜色的同心圆
 **/
 import javax.swing.*;
 import java.awt.*;
 import ja...]]></description>
</item>
<item>
<title><![CDATA[如何掌握程序语言（转载）]]></title>
<link>/article/prog/zonghe/2012/5792.html</link>
<author>王垠</author>
<category><![CDATA[编程综合]]></category>
<pubDate>2012-08-11 13:05:16</pubDate>
<description><![CDATA[学习程序语言是每个程序员的必经之路。可是这个世界上有太多的程序语言，每一种都号称具有最新的“特性”。所以程序员的苦恼就在于总是需要学习各种稀奇古怪的语言，而且必须紧跟“潮流”，否则就怕被时代所淘汰。
作为一个程序语言的研究者，我深深的知道这种心理产生的根源。程序语言里面其实有着非常简单，永恒不变的原理。看到了它们，就可以在很短的时间之内就能学会并且开始使用任何新的语言，而不是花费很多功夫去学习一个又一个的语言。
对程序语言的各种误解
学习程序语言的人，经常会出现以下几种心理，以至于他们会觉得有学不完的东西，或者走上错误的道路。以下我把这些心理简要分析一下。
1. 程序语言无用论。这是国...]]></description>
</item>
<item>
<title><![CDATA[Windows Phone8中实现文本发音（Text to speech）]]></title>
<link>/article/prog/otp/2012/5791.html</link>
<author>佚名</author>
<category><![CDATA[其它编程]]></category>
<pubDate>2012-08-11 12:57:49</pubDate>
<description><![CDATA[编辑和运行Windows Phone应用是件很容易的事情，你只需在微软网站获取一个免费的工具包，在AppHub注册后，并跟着入门教程学习就可以了。
XAML是我的惯用格式。. WP7开发者也许能注意到应用程序标题和页名不再是默认的硬编码，而是通过通过应用的共享资源来实现。通过这种方式，你不必再每次再所有页中设置应用名称。

&lt;phone:PhoneApplicationPage
 x:Class=&quot;TextToSpeechDemo.MainPage&quot;
 xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
...]]></description>
</item>
<item>
<title><![CDATA[一个程序员一周编程需要多少个小时才能做得更好]]></title>
<link>/article/prog/zonghe/2012/5790.html</link>
<author>佚名</author>
<category><![CDATA[编程综合]]></category>
<pubDate>2012-08-11 12:28:04</pubDate>
<description><![CDATA[提到程序员，大家的第一印象就是累：超长的工作时间。本文围绕作为一个程序员，一周需要工作多长时间这个问题进行了细致的讨论，分析问题比较周到全面，希望能为在做编程以及即将做本行工作的人提供一个参考。
Michael Arrington曾发表一篇博文说，开始创业的人意味着加倍努力的工作，甚至不惜趴在办公桌上睡觉，这样才能成功。对此，我并不赞同其观点，我看了很多评论都是 关于这样工作会适得其反，不但没有获得成功，相反的，这也给程序员的身体造成一定的危害（长期或是短期都会有影响）。 我们每天平均工作8个小时，这样算下来，平均每周有40个小时。假设，在最佳状态下，当你启动一个程序24*7(不休不眠）这相...]]></description>
</item>
<item>
<title><![CDATA[VB编程控制电脑桌面图标]]></title>
<link>/article/prog/VisualBasic/2012/5777.html</link>
<author>不详</author>
<category><![CDATA[VB/VB.NET]]></category>
<pubDate>2012-07-30 12:57:42</pubDate>
<description><![CDATA[利用VB完全控制你的桌面图标 Windows中的桌面图标的排列方式是否让你感到厌倦而想按照自己的想法排列图标。是否想改变桌面图标文字的背景而不使在图标文字下出现一个个难看的色块。这里我要介绍如何通过VB来对桌面的图标进行彻底的改变。
 其实在Windows下的桌面以及任务栏等都是窗口对象，我们可以利用Windows API函数FindWindow和FindWindowEx来获得它们的句柄，然后再调用其它相应的API函数来控制它们。而放置桌面图标的窗口是一个ListView对象，利用SendMessage函数向该窗口发送相应的消息，就可以对图标进行修改了。下面是具体的程序实现。
首先在VB中...]]></description>
</item>
<item>
<title><![CDATA[C++多线程的例子]]></title>
<link>/article/prog/C/2012/5764.html</link>
<author>cppblog</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2012-07-21 19:57:07</pubDate>
<description><![CDATA[在多线程的程序里，不同的线程可以做不同的事情，下面演示一个多线程的例子。
 
 
 
 
 
 
// MultiThread.cpp : 定义控制台应用程序的入口点。
//

#include &quot;stbdafx.h&quot;
#include &lt;windows.h&gt;
#include &lt;iostream&gt;

using namespace std;
int tickets = 100;
HANDLE hMutex;

DWORD WINAPI Fun1Proc(LPVOID lp);
DWORD WINAPI Fun2Proc(LPVOID lp);

in...]]></description>
</item>
<item>
<title><![CDATA[PB中关于当前行的两个操作函数]]></title>
<link>/article/prog/otp/2012/5716.html</link>
<author>佚名</author>
<category><![CDATA[其它编程]]></category>
<pubDate>2012-06-30 09:31:57</pubDate>
<description><![CDATA[在对数据窗口（DataWindow）进行操作时，很多时候需要获取或设置数据窗口的当前行，这可以通过数据窗口（DataWindow）的两个函数来实现：SetRow和GetRow，下面就对这两个函数进行详细地介绍。
1、设置当前行
如果要设置DataWindow中的某行为当前行，可以使用SetRow()函数。
语法格式：dw_control.SetRow(rownumber)
其中rownumber是要设置为当前行的行号。如果函数返回1表示成功，返回-1代表失败。
2、获取当前行
如果想要设置DataWindow中的某行为当前行，可以使用GetRow()函数。
语法格式：dw_con...]]></description>
</item>
<item>
<title><![CDATA[PB中在数据窗口DataWindow中插入与删除一行的函数]]></title>
<link>/article/prog/otp/2012/5715.html</link>
<author>佚名</author>
<category><![CDATA[其它编程]]></category>
<pubDate>2012-06-30 09:18:21</pubDate>
<description><![CDATA[我们经常需要在数据窗口（DataWindow）中插入或删除一行，这可以通过两个函数来实现：InsertRow和DeleteRow来实现。
1、在数据窗口中插入行
在DataWindow中插入一行，可以使用InsertRow()函数。
其语法格式为：
dw_control.InsertRow(rownumber)
dw_control是数据窗口控件名，rownumber是要插入行的的行号。如果这个参数为0，代表在当前DataWindow的最后一行插入一空行。
InsertRow()函数的返回值为一个长整型值，以此来代表插入的行号。如果插入失败，则返回-1。
2、在数据窗口中删除行
...]]></description>
</item>
<item>
<title><![CDATA[VC中导出C++类的方法]]></title>
<link>/article/prog/C/2012/5704.html</link>
<author>佚名</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2012-06-24 17:39:29</pubDate>
<description><![CDATA[有时我们需要将在VC中定义的类导出来，以在其它地方使用，本文将使用一个例子来讲解具体的方法。
首先，使用Wizard创建一个Win32 Dynamic-Link Library工程，然后定义一个简单的C++类CInDLL.由于该类会被工程之外的文件所引用，所以需要对这个类进行引出。因为只有引出后所生成的DLL中才带有供足够的信息以在连接和运行时被正确引入到进程空间中。
有两种方法可以引出类，使用__declspec（dllexport）定义和使用定义文件。
下面先讲使用__declspec（dllexport）的方法：
将类定义改为：class __declspec（dllexport...]]></description>
</item>
<item>
<title><![CDATA[C++中的指针使用方法释疑]]></title>
<link>/article/prog/C/2012/5703.html</link>
<author>佚名</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2012-06-24 17:07:18</pubDate>
<description><![CDATA[指针是C++和C语言中一个非常有用的东西，但难于掌握，本文转载介绍C++中指针使用的一些常见问题及使用方法。
在下列函数声明中，为什么要同时使用*和&amp;符号？以及什么场合使用这种声明方式?
void func1( MYCLASS *&amp;pBuildingElement );
很多人经常问到这样的问题。本文试图通过一些实际的指针使用经验来解释这个问题。
在某种意义上，&quot;*&quot;和&quot;&amp;&quot;是意思相对的两个东西，把它们放在一起有什么意义呢？。为了理解指针的这种做法，我们先复习一下C/C++编程中无所不在的指针概念。我们都知道MYCLASS*的意思：指向某个对象的指针，此对象的类...]]></description>
</item>
<item>
<title><![CDATA[基于MFC的仿Windows计算器]]></title>
<link>/article/prog/C/2012/5702.html</link>
<author>佚名</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2012-06-24 16:50:54</pubDate>
<description><![CDATA[首先，让我们来仔细了解一下mircosoft的计算器吧，我们发现它是一个基于对话框的含有两的主对话框、一个关于对话框、一个菜单的应用程序。也就是说，我们应该创建一个基于对话框的应用程序，并且为其添加一个菜单和一个主对话框（因为，应用程序已经创建好了一个主对话框和关于对话框）
接下来，我们应该设计对话框的界面了，这个是很简单的事情，你只要将其和mircosoft的计算器比较就行了。当然，你也可以添加其他控件。
第一个主对话框也就是默认的主程序界面，是用于执行简单计算（+、-、*、/、开根、倒数、平方等）
第二个就是执行科学计算的程序了。用户可以用vc/MFC中的控件排版工具和TAB设计出一...]]></description>
</item>
<item>
<title><![CDATA[VBA中IsDate函数的使用]]></title>
<link>/article/prog/otp/2012/5639.html</link>
<author>佚名</author>
<category><![CDATA[其它编程]]></category>
<pubDate>2012-06-06 06:43:53</pubDate>
<description><![CDATA[VBA中IsDate函数用来判断一个值是否为日期型值，其语法格式如下：
IsDate(expression)
这个函数返回Boolean 值，指出一个表达式是否为日期型值，同时，参数expression是必需的，其类型为Variant，包含日期表达式或字符串表达式，这里的字符串表达式是可以作为日期或时间来认定的。
使用说明：
如果表达式是一个日期，或可以作为有效日期识别，则 IsDate 返回 True；否则返回 False。在 Microsoft Windows 中，有效日期的范围介于公元 100 年 1 月 1 日与公元 9999 年 12 月 31 日之间；其有效范围随操作系统不...]]></description>
</item>
<item>
<title><![CDATA[VBA中的IsError函数]]></title>
<link>/article/prog/otp/2012/5638.html</link>
<author>佚名</author>
<category><![CDATA[其它编程]]></category>
<pubDate>2012-06-06 06:40:03</pubDate>
<description><![CDATA[VBA中的IsError函数用来判断一个表达式是否为一个错误的值，其语法格式如下：
IsError(expression)
参数expression是必需的，可以是任何有效的表达式。
这个函数返回布尔类型值，即true或false。
该函数常用语以下情况中：
利用 CVErr 函数将实数转换成错误值就会建立错误值。IsError 函数被用来确定一个数值表达式是否表示一个错误。如果 expression 参数表示一个错误，则 IsError 返回 True；否则返回 False。]]></description>
</item>
<item>
<title><![CDATA[VBA中实现选择排序算法]]></title>
<link>/article/prog/otp/2012/5637.html</link>
<author>佚名</author>
<category><![CDATA[其它编程]]></category>
<pubDate>2012-06-06 06:34:23</pubDate>
<description><![CDATA[Public Sub SelectionSort(ByRef lngArray() As Long)
 Dim iOuter As Long
 Dim iInner As Long
 Dim iLBound As Long
 Dim iUBound As Long
 Dim iTemp As Long
 Dim iMax As Long

 iLBound = LBound(lngArray)
 iUBound = UBound(lngArray)

 &#39;选择排序
 For iOuter = iUBound To iLBound + 1 Step -1

 iMax...]]></description>
</item>
<item>
<title><![CDATA[使用VBA实现冒泡法排序]]></title>
<link>/article/prog/otp/2012/5636.html</link>
<author>佚名</author>
<category><![CDATA[其它编程]]></category>
<pubDate>2012-06-06 06:28:07</pubDate>
<description><![CDATA[Public Sub BubbleSort(ByRef lngArray() As Long)
 Dim iOuter As Long
 Dim iInner As Long
 Dim iLBound As Long
 Dim iUBound As Long
 Dim iTemp As Long

 iLBound = LBound(lngArray)
 iUBound = UBound(lngArray)
 
 &#39;冒泡排序
 For iOuter = iLBound To iUBound - 1
  For iInner = iLBound To iUBound - ...]]></description>
</item>
<item>
<title><![CDATA[程序员高薪背后的秘密：程序员的技能杀伤力]]></title>
<link>/article/prog/zonghe/2012/5635.html</link>
<author>不详</author>
<category><![CDATA[编程综合]]></category>
<pubDate>2012-06-03 23:11:30</pubDate>
<description><![CDATA[程序员第一定律可以表述为：程序员的收入是技能复杂度和技能实现可能程度的函数。
如果程序员的工资是S，社会平均水平的工资为A，程序员掌握的技能复杂度为C，实现程度为P。那么S = A x C x P。
这里面的实现程度P不太好理解，额外做点说明。
好比说有人在东北种了很多白菜，并获得了大丰收。与此同时广州也确实需要大白菜，按批发价他的这批白菜可以买10万。
但关键是这个人找不到车皮，大白菜就只能在当地零售，这个时候这批大白菜就只能买1万块钱。这就是实现程度。
大白菜内蕴了既定的价值，这种价值并不因为卖多少钱而改变，但这种价值能实现到什么程度则依赖于现实的可能性。
这似乎很简单，但其实...]]></description>
</item>
<item>
<title><![CDATA[PB中游标的定义与使用方法]]></title>
<link>/article/prog/otp/2012/5630.html</link>
<author>tisnly</author>
<category><![CDATA[其它编程]]></category>
<pubDate>2012-06-02 11:07:58</pubDate>
<description><![CDATA[游标是一个非常有效的记录集处理方式，在PB中游标用的地方比较广泛，下面是在PB中游标使用的整个过程，基本包括定义游标、打开游标、操作游标和关闭游标这几个步骤，具体如下代码所示：
//定义游标
DECLARE C1 CURSOR FOR
//游标的具体取值内容
select aln_cd,sum(cargo_aln_fare) from fare_daily_view 
where aln_cd &lt;&gt; &#39;000&#39; and cargo_aln_fare &lt;&gt; 0 and act_fare_dt between :emstart and :emend 
group by aln_cd; ...]]></description>
</item>
<item>
<title><![CDATA[VB中inputbox函数的使用]]></title>
<link>/article/prog/VisualBasic/2012/5602.html</link>
<author>不详</author>
<category><![CDATA[VB/VB.NET]]></category>
<pubDate>2012-05-20 06:33:59</pubDate>
<description><![CDATA[InputBox()函数在VB中用来显示一个对话框，让用户在该对话框中输入一个值以传回到程序中进行处理。InputBox()的函数语法格式如下：
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])
InputBox 函数的语法中的参数含义如下：
（1）Prompt参数：这个参数是 必需的。主要是对话框中出现的字符串表达式。prompt 的最大长度大约是 1024 个字符，由所用字符的宽度决定。如果 prompt 包含多个行，则可在各行之间用回车符 (Chr(13))、换行符 (Chr(...]]></description>
</item>
<item>
<title><![CDATA[C++中static用法总结]]></title>
<link>/article/prog/C/2012/5581.html</link>
<author>佚名</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2012-05-16 05:14:54</pubDate>
<description><![CDATA[想必有很多人对C++中的static不是很理解，本文在介绍static含义的基础上，总结了C++中static的各种用法。
要理解static，就必须要先理解另一个与之相对的关键字，很多人可能都还不知道有这个关键字，那就是auto，其实我们通常声明的不用static修饰的变量，都是auto的，因为它是默认的，就象short和long总是默认为int一样；我们通常声明一个变量：

　int a;
　string s;

　其实就是：

　auto int a;
　auto string s;

　而static变量的声明是：

　static int a;
　stat...]]></description>
</item>
<item>
<title><![CDATA[C++中static用法总结]]></title>
<link>/article/prog/C/2012/5580.html</link>
<author>佚名</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2012-05-16 05:14:54</pubDate>
<description><![CDATA[想必有很多人对C++中的static不是很理解，本文在介绍static含义的基础上，总结了C++中static的各种用法。
要理解static，就必须要先理解另一个与之相对的关键字，很多人可能都还不知道有这个关键字，那就是auto，其实我们通常声明的不用static修饰的变量，都是auto的，因为它是默认的，就象short和long总是默认为int一样；我们通常声明一个变量：

　int a;
　string s;

　其实就是：

　auto int a;
　auto string s;

　而static变量的声明是：

　static int a;
　stat...]]></description>
</item>
<item>
<title><![CDATA[每个人都可以创业：来自5年软件开发经验总结]]></title>
<link>/article/prog/zonghe/2012/5506.html</link>
<author>不详</author>
<category><![CDATA[编程综合]]></category>
<pubDate>2012-04-27 20:02:30</pubDate>
<description><![CDATA[在享受了 6 年的全职软件工程师生涯之后，我决定换个活法。接下来的 5 年里我进修了 MBA 课程，并尝试了各种管理和投资类型的角色。我依旧关注技术，但在此期间并没有积极参与软件开发，也许配置一个 wordpress 主题或插件可以除外&mdash;&mdash;当然这不能和软件开发相提并论。
我并没有像以前一样持续关注最新的技术潮流，因此对于编程技巧已非常生疏。
一旦决定了要做自己的事业，我想到从过去离开的地方重操旧业会相对容易。结果我发现，软件开发和其他技术一样需要持续的关注和时间投入，否则技能会丧失殆尽。
（在众多的理由中）对于与软件开发隔离这段时间，我已经解释了自己是如何看待自身...]]></description>
</item>
<item>
<title><![CDATA[架构设计贵在务实]]></title>
<link>/article/prog/zonghe/2012/5444.html</link>
<author>myan</author>
<category><![CDATA[编程综合]]></category>
<pubDate>2012-04-12 19:47:54</pubDate>
<description><![CDATA[我最早听说“软件架构”这个概念以及UML的名字，是在1999年的水木清华BBS上。当时有一篇文章介绍了软件架构作为一个相对独立的领域的发展情况，顺便提到在此前一年被接纳为OMG标准的UML。该文作者断言，UML的出现将能“彻底”改变软件开发的工作方式，甚至“若干年之后，不通UML者无法染指软件开发”。三年之后，《程序员》杂志专访Ivar Jacobson时，UML已经是尽人皆知。记得Jacobson在那次采访中劝告中国的开发者，赶快去学习RUP。从那时候起，越来越多的人顶上了“软件架构师”的头衔，张口模式闭口架构，一时间好不风光。然而最初的热乎劲过去之后，人们发现，“不通UML者无法染指软件开...]]></description>
</item>
<item>
<title><![CDATA[Java不适合于作为主要编程教学语言]]></title>
<link>/article/prog/zonghe/2012/5443.html</link>
<author>佚名</author>
<category><![CDATA[编程综合]]></category>
<pubDate>2012-04-12 19:34:14</pubDate>
<description><![CDATA[前两年，我所在的学校在全校开始将VB作为大学生的基础教学语言，将VB作为大学生的基础教学语言，可能由于课程基础教研室对VB比较热衷，而认为C语言或C++的一些语法较难。效果如何呢？没有人去做过调查和分析，但从我接触的班级来说，效果都非常的差，很多基本概念都不知道，就别提编写程序了，更不用提用VB编写什么算法了。今天在网上看到这篇文章，感觉与我的想法较为一致，转到这里，与所有能看到这篇文章的人共同反思。
CSDN首页推荐了一篇文章，说两位退休的美国大学教授上书反对将Java作为编程教学语言，对此我表示高度认同。对于Java，我并不反感，而且相信它在工业应用中的地位不可取代，但是，我一直反对将J...]]></description>
</item>
<item>
<title><![CDATA[如何快速掌握一门编程语言]]></title>
<link>/article/prog/zonghe/2012/5442.html</link>
<author>myan</author>
<category><![CDATA[编程综合]]></category>
<pubDate>2012-04-12 19:27:07</pubDate>
<description><![CDATA[很多初学编程语言的人，对如何快速掌握一门语言显得束手无策，在网上找到一篇关于这方面的文章，共享给大家。
现在的开发工作要求我们能够快速掌握一门语言。一般来说应对这种挑战有两种态度：其一，粗粗看看语法，就撸起袖子开干，边查Google边学习；其二是花很多时间完整地把整个语言学习一遍，做到胸有成竹，然后再开始做实际工作。然而这两种方法都有弊病。第二种方法的问题当然很明显，不仅浪费了时间，偏离了目标，而且学习效率不高。因为没有实际问题驱动的语言学习通常是不牢固不深入的。有的人学着学着成了语言专家，反而忘了自己原本是要解决问题来的。第一种路子也有问题，在对于这种语言的脾气秉性还没有了解的情况下大刀阔...]]></description>
</item>
<item>
<title><![CDATA[设计模式要素及常见设计模式]]></title>
<link>/article/prog/se/2012/5431.html</link>
<author>不详</author>
<category><![CDATA[软件工程]]></category>
<pubDate>2012-04-08 21:44:30</pubDate>
<description><![CDATA[设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。
作为设计模式应具有四个基本要素：
（1） 模式名称（pattern name）
一个助记名，它用一两个词来描述模式的问题、解决方案和效果。命名一个新的模式增加了我们的设计词汇。设计模式允许我们在较高的抽象层次上进行设计。基于一个模式词汇表，我们自己以及同事之间就可以讨论模式并在编写文档时使用它们。模式名可以帮助我们思考，便于我们与其他人交流设计思想及设计结果。找到恰当的模式名也是我们设计模式编目工作的难点之一。
（2）问题(problem)
描述了应该在何...]]></description>
</item>
<item>
<title><![CDATA[作为程序编写者应该掌握的编程的21条规律]]></title>
<link>/article/prog/zonghe/2012/5430.html</link>
<author>不详</author>
<category><![CDATA[编程综合]]></category>
<pubDate>2012-04-08 21:35:01</pubDate>
<description><![CDATA[1 任何一个程序一旦发布就意味着它已经过时了。
2 让需求根据程序调整往往要比让程序根据需求调整来得容易。
3 如果一个程序是有用的，那它必将被改变。
4 如果一个程序是无用的，那它必须被注释。
5 在任何一个程序里只有10%的代码会被执行。
6 软件会无限扩张以占用所有的系统资源。
7 任何有价值的程序都会包含至少一个错误。
8 一个演示版的程序完美无瑕的几率和关注它的人数成反比，最终要花费的金钱的数量是原数量的平方。
9 一个程序的致命错误要到其发布至少半年后才会被发现。
10 不可检测的错误是无穷无尽的，并以各种形式存在；相反，可检测的错误从理论上讲是有限的。
11 ...]]></description>
</item>
<item>
<title><![CDATA[一个软件项目开发的基本流程]]></title>
<link>/article/prog/se/2012/5429.html</link>
<author>佚名</author>
<category><![CDATA[软件工程]]></category>
<pubDate>2012-04-08 21:28:36</pubDate>
<description><![CDATA[一个软件项目通常要经过一下几个阶段：
（1）需求分析：
通过对客户业务的了解和与客户对流程的讨论对需求进行基本建 模，最 终形成需求规格说明书。
（2）总体设计：
通过分析需求信息，对系统的外部条件及内部业务需求进行抽象建模，最终形成概要设计说明文档。
（3）详细设计：
此部分在对需求和概要设计的基础上进行系统的详细设计（也包含部分代码说明）。
（4）开发编程：
对系统进行代码编写。
（5）测试分析与系统整合：
对所有功能模块进行模拟数据测试及其它相关性测试并整合所有模块功能。
（6）现场支持：
系统上线试运行进行现场问题记录、解答。
（7）系统运行支持：
系统正式...]]></description>
</item>
<item>
<title><![CDATA[Java中使用Flush输出内容到浏览器或控制台]]></title>
<link>/article/prog/java/2012/5399.html</link>
<author>Jack Li</author>
<category><![CDATA[Java]]></category>
<pubDate>2012-04-04 18:24:38</pubDate>
<description><![CDATA[用Writer打印内容到console或者浏览器时，必须要考虑到flush。如果你用writer打印出很多内容，而程序结束时，writer如果没有被flush则用户完全看不到或者不会看到完整的信息。例如：
public static void main(String[] args) &#123; 
PrintWriter log = new PrintWriter(System.out); 
log.println(&quot;Hello, Jack&quot;) 
&#125;
运行后，没有任何显示。这是因为&quot;Hello, Jack&quot;被buffer了，至少两种方法可以解决这个问题
（1）PrintWriter log ...]]></description>
</item>
<item>
<title><![CDATA[我的C++学习之路]]></title>
<link>/article/prog/zonghe/2012/5390.html</link>
<author>不详</author>
<category><![CDATA[编程综合]]></category>
<pubDate>2012-04-02 21:27:45</pubDate>
<description><![CDATA[在IT168看到这个对C++学习的探讨，感觉这个网友说的很实在，特转载放到这里与大家分享。
1. 为毛现在的C++教科书都那么枯燥无味?
2. C++中的类这个概念很抽象，请各位说说自己是如何理解运用这个概念的?
3. 听工作过的哥们说STL是C++中很重要的一部分，可是那本《STL源码分析》我看也看不懂，我该怎么办啊?
我也来说说：
1. 为毛现在的C++教科书都那么枯燥无味？
要说C++书枯燥应该也是相对的，如果喜欢C++的，看起来还是不错的，不过学习就是一个枯燥的过程，要耐得下心来才行。
相对于其它技术来说，C++主要是看不到成果，会让人泄气，看看html，过一段时间能写个...]]></description>
</item>
<item>
<title><![CDATA[C语言编程：求下式中每个字母所代表的数字]]></title>
<link>/article/prog/C/2012/5296.html</link>
<author>Duote</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2012-02-22 19:47:40</pubDate>
<description><![CDATA[编写程序求解下式中各字母所代表的数字，不同的字母代表不同的数字。
PEAR- ARA =PEA
*问题分析与算法设计
类似的问题从计算机算法的角度来说是比较简单的，可以采用最常见的穷举方法解决。程序中采用循环穷举每个字母所可能代表的数字，然后将字母代表的数字转换为相应的整数，代入算式后验证算式是否成立即可解决问题。
*程序说明与注释

　#include

　int main()

　&#123;

　int p,e,a,r;

　for(p=1;p&lt;=9;p++) /*从1到9穷举字母p的全部可能取值*/

　for(e=0;e&lt;=9;e++) /*从0到穷举字母e的全...]]></description>
</item>
<item>
<title><![CDATA[C语言的空语句]]></title>
<link>/article/prog/C/2012/5214.html</link>
<author>佚名</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2012-01-28 10:34:58</pubDate>
<description><![CDATA[在C语言或C++中，有一种特殊的语句，称为空语句。
在C语言中或C++中，如果一个语句只有一个分号“；”，则称该语句为空语句。
空语句是什么都不执行的语句。在程序中，空语句主要用来做空循环体，如：
while(getchar()!=&#39;\n&#39;);
这个语句的功能是，只要从键盘输入的字符不是回车，则要求用户重新输入。即要求用户回车后才会继续后面的程序。在该部分代码中，接收用户按键，判断按键的内容都集中在while判断中，因此，循环体中不再需要执行任何功能。就在循环体中，输入一个空语句作为循环体。]]></description>
</item>
<item>
<title><![CDATA[浅析C++的内存分配方式]]></title>
<link>/article/prog/C/2012/5179.html</link>
<author>不详</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2012-01-21 09:09:48</pubDate>
<description><![CDATA[本文详细地介绍了C++语言内存的种类及分配方式，很适合初学者学习和资深编程者来研究阅读。
在C++中，内存分成5个区，他们分别是堆、栈、自由存储区、全局/ 静态存储区和常量存储区。
栈，就是那些由编译器在需要的时候分配，在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。
堆，就是那些由new分配的内存块，他们的释放编译器不去管，由我们的应用程序去控制，一般一个new就要对应一个 delete。如果程序员没有释放掉，那么在程序结束后，操作系统会自动回收。
自由存储区，就是那些由malloc等分配的内存块，他和堆是十分相似的，不过它是用free来结束自己的生命的。...]]></description>
</item>
<item>
<title><![CDATA[软件企业开发人员和测试人员的比例应该如何设置]]></title>
<link>/article/prog/se/2011/5133.html</link>
<author>佚名</author>
<category><![CDATA[软件工程]]></category>
<pubDate>2011-12-18 10:22:55</pubDate>
<description><![CDATA[软件测试是软件企业非常重要的一项工作，它直接影响着软件质量。但是在软件企业中，软件测试人员和软件开发人员应该如何设置呢？他们之间的比例如何调节呢？本文在调查的基础上进行了分析。
人们经常还是喜欢纠缠在一些具体的数字上，特别是西方人更是喜欢用数据说明问题，因为那样客观、具体，但同时也往往将人引入歧途，容易形而上学，因为每个公司、公司的每个产品、产品的各个项目或各个阶段都不同，没法用一刀切的办法。
在软件企业，面对测试经理，常常被问的问题是“你们公司的开发人员和测试人员的比例多少？”，如果你回答是“2：1”，得到的反应也许不同，对方可能会说：你们公司挺重视质量的，测试搞得不错啊！也可能会说：你...]]></description>
</item>
<item>
<title><![CDATA[C++虚函数与纯虚函数用法与区别]]></title>
<link>/article/prog/C/2011/5132.html</link>
<author>佚名</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-12-18 10:12:32</pubDate>
<description><![CDATA[以单一指令唤起不同函数，这种性质称为Polymorphism，意思是&quot;the ability toassume many forms&quot;，也就是多态。虚拟函数是C++ 语言的Polymorphism 性质以及动态绑定的关键。如果你期望衍生类别重新定义一个成员函数，那么你应该在基础类别中把此函数设为virtual。
既然抽象类别中的虚拟函数不打算被调用，我们就不应该定义它，应该把它设为纯虚拟函数（在函数声明之后加上&quot;=0&quot; 即可）。我们可以说，拥有纯虚拟函数者为抽象类别（abstract Class），以别于所谓的具象类别（concrete class)。抽象类别不能产生出对象实体，但是我们可以...]]></description>
</item>
<item>
<title><![CDATA[Apache自带压力测试工具ab使用方法]]></title>
<link>/article/prog/java/2011/5131.html</link>
<author>佚名</author>
<category><![CDATA[Java]]></category>
<pubDate>2011-12-18 09:57:32</pubDate>
<description><![CDATA[软件压力测试是一种基本的质量保证行为，它是每个重要软件测试工作的一部分。软件压力测试的基本思路很简单：不是在常规条件下运行手动或自动测试，而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行软件压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽。
因此，软件压力测试一个非常重要的环节，Apache自带了一个称为ab的压力测试小工具，全称为ApacheBench，是专门用于HTTP Server的benchmark testing，可以同时模拟多个并发请求。
在这个例子的一开始，我执行了这样一个命令ab -n 10 -c 10 http://www.google.com...]]></description>
</item>
<item>
<title><![CDATA[用while循环和for循环输出10~0递减的自然数]]></title>
<link>/article/prog/C/2011/5122.html</link>
<author>biye5u.com</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-12-15 09:24:25</pubDate>
<description><![CDATA[对于一个编程高手来说，while循环和for循环是一个非常简单的事情了，但是对一个刚刚接触程序设计的人来说，将其掌握好并熟练运用还是一件非常困难的事情。教了很多年的程序设计，我发现很多学生都无法理解它的具体使用方法。只好通过无数的例子来让他们被动的理解和接受。
下面这个例子是C++Prime（第四版）中的一个习题，在让学生做这个题目时，竟然有很多学生没有正确的做出来，现在将其分享到这里：
题目要求：用while循环编程，输出10~0递减的自然数。然后用for循环重写该程序。
具体解决方法：
（1）使用while循环
#include &lt; iostream &gt;

int main(...]]></description>
</item>
<item>
<title><![CDATA[C语言中的转移字符]]></title>
<link>/article/prog/C/2011/5036.html</link>
<author>本站</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-11-10 19:34:06</pubDate>
<description><![CDATA[有时我们需要输出一切特殊的字符或执行特殊的功能，这些功能无法使用正常的字符来表达，因此在C语言中使用转移字符来表示.
转义字符是一种特殊的字符常量。转义字符以反斜线&quot;\&quot;开头，后跟一个或几个字符。转义字符具有特定的含义，不同于字符原有的意义，故称“转义”字符。例如，在printf函数的格式串中用“\n”实现“回车换行”。转义字符主要用来表示那些用一般字符不便于表示的控制代码。
 
C语言中的主要转义字符如下表所示：


 
 
  
  转义符 
  
  
  字符名
  
 
 
  
  \&#39; 
  
  
  单引号
  
 
 
  
...]]></description>
</item>
<item>
<title><![CDATA[在C++中static有什么用途]]></title>
<link>/article/prog/C/2011/5019.html</link>
<author>佚名</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-11-05 09:20:09</pubDate>
<description><![CDATA[static用来定义静态变量或类的静态成员，其作用主要有以下三点：
（1）在函数体，一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
（2）在模块内（但在函数体外），一个被声明为静态的变量可以被模块内所用函数访问，但不能被模块外其它函数访问。它是一个本地的全局变量。
（3）在模块内，一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是，这个函数被限制在声明它的模块的本地范围内使用。]]></description>
</item>
<item>
<title><![CDATA[什么是虚成员]]></title>
<link>/article/prog/C/2011/5007.html</link>
<author>biye5u.com</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-11-01 20:03:19</pubDate>
<description><![CDATA[在C++中有一个概念是虚成员，那么什么是虚成员呢？
在C++中“虚成员”就是其声明中在返回类型前带有关键字“virtual”的类成员函数。
C++中基类通过将成员函数指定为虚成员来指出希望派生类重定义的那些函数。
除了构造函数外，任意非static(静态）的成员函数都可以为虚成员。]]></description>
</item>
<item>
<title><![CDATA[C语言习题：输入一个数判断其为偶数还是奇数]]></title>
<link>/article/prog/C/2011/4989.html</link>
<author>佚名</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-10-27 21:13:19</pubDate>
<description><![CDATA[输入一个整数，打印出其是偶数还是奇数，这道题实际上不难，它主要是考核scanf输入函数、printf输出函数、if语句和判断一个数为偶数还是奇数的技巧。
判断一个数是否为偶数还是奇数，可以求该数与2相除的余数，如果余数为0，则为偶数，如果余数为1，则该数为奇数。可以使用C语言的if语句来判断其余数为0还是为1，C语言中使用%求两个整数的余数。
全部源代码如下：
#include &lt;stdio.h&gt;

main()
&#123;
 int n; /*要判断的整数*/
 printf(&quot;请输入一个整数:&quot;);
 scanf(&quot;%d&quot;,&amp;n);
 if(n%2==0) /*余数为0...]]></description>
</item>
<item>
<title><![CDATA[在VC++中实现混合静态分裂视窗]]></title>
<link>/article/prog/C/2011/4987.html</link>
<author>不详</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-10-27 10:05:19</pubDate>
<description><![CDATA[视窗的分裂类型主要有两种：动态分裂和静态分裂。动态分裂可以让使用者通过拖曳分裂方块的使用，将视窗分裂。动态分裂最多只可以将视窗分裂为2×2个子视窗，不能进行混合分裂视窗，所有子视窗的属性和父视窗都是一样的，而且子视窗的数据通常来源于同一处。
静态分裂是指使用者除了可以调整子视窗的大小和进行混合分裂视窗外，最多可将视窗分裂为16×16个子视窗，每个子视窗可以有不同的视图类(CView)，各个子视窗显示的数据可以来自于不同的数据源。不论是要创建动态分裂视窗还是静态分裂视窗，都必须要利用MFC的CSplitterWnd类别来完成视窗的分裂。
混合静态分裂视窗的实现
混合分裂视窗是指在子视窗...]]></description>
</item>
<item>
<title><![CDATA[VF中变量的赋值方法与作用域]]></title>
<link>/article/prog/VF/2011/4979.html</link>
<author>biye5u.com</author>
<category><![CDATA[VF]]></category>
<pubDate>2011-10-25 12:39:59</pubDate>
<description><![CDATA[变量是内存中的一个存储单元的位置，其中的内容可以变化。一般可使用的字符集包括英文大小字母、数字和下划线，开头字符不能是数字。
在VF中变量的赋值方式有两种：
第一种方法是使用STORE 命令，例如：
STORE &quot;翔宇亭&quot; TO sSiteName
 第二种方法是使用赋值操作符=，例如：
sSiteName = &quot;翔宇亭&quot;
变量拥有自己的作用域，即变量起作用的有效范围。在VF中，变量有三种类型作用域：
（1） 局部变量（Local Variable），使用LOCAL进行定义，其只能在一个函数或过程中被访问，其他过程或函数不能访问此变量的数据。当其所属函数或过程执行完毕后，局部变量...]]></description>
</item>
<item>
<title><![CDATA[使用VF编写一个输出3~100之间所有素数的程序]]></title>
<link>/article/prog/VF/2011/4977.html</link>
<author>biye5u.com</author>
<category><![CDATA[VF]]></category>
<pubDate>2011-10-24 12:42:54</pubDate>
<description><![CDATA[在本站中已经介绍过在C#中求素数的方法，在这里给大家介绍一个在VF中求素数的方法，方便学习VF的同学参考。
什么是素数？
除了1和它本身之外，没有其它任何公约数的自然数为质数，这包括2，如果除了2之外，其它质数都是奇数，则这样的数位素数。
算法原理
我们可以使用循环判断3-100之间的数是否为素数，假设要判断的数为m，则我们可以使用2~m-1之间的所有的自然数去除m，如果某个数将m除尽了，则m就不是素数，如果循环计数变量等于或超过m，则m就是素数。
另外为了提高算法的效率，可以将m进行开平方，则计数循环从2~sqrt(m),如果循环计数超过sqrt(m)则m为素数，否则不是。
源代...]]></description>
</item>
<item>
<title><![CDATA[VF中的数值型常量]]></title>
<link>/article/prog/VF/2011/4976.html</link>
<author>biye5u.com</author>
<category><![CDATA[VF]]></category>
<pubDate>2011-10-24 12:33:07</pubDate>
<description><![CDATA[VF中的数值型常量也就是我们所说的常数，其用来表示一个数量的大小，由数字0~9、小数点和正负号组成。例如：
12、3.1415、-23.45、0.145
为了表示比较大或者是很小的数值型常量，也可以使用科学计数法的形式来书写数值型常量，如：
3.1324E8表示3.1324×108，2.56E-8表示2.56×10-8
数值型数据在内存中占用8个字节，其可表示的数值范围为：-0.9999999999E+19~0.9999999999E+20。
尊重他人劳动成果，创建和谐互联网。本文为本站原创，转载请注明出处：翔宇亭IT乐园（http://www.biye5u.com/）]]></description>
</item>
<item>
<title><![CDATA[关于静态变量的使用]]></title>
<link>/article/prog/C/2011/4938.html</link>
<author>biye5u.com</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-10-12 22:04:46</pubDate>
<description><![CDATA[闲来无事在网上闲逛，看到百度知道有人问到一个关于静态变量的使用问题，感觉很经典放到这里与各位共享。原问题如下：
函数f定义如下，执行语句“sum=f（4）+f（2）;”后，sum的值应为（ ）。为什么不是A，而是C
int f（int m）   
 &#123; static int i=0; int s=0;  
  for（;i&lt;=m;i++） s+=i; return s;
 &#125;
　A、13
　B、16
　C、10
　D、8
我的回答：
因为i为静态变量，静态变量的值从第一次使用而创建，到程序结束时才释放内存，因为在调用f(4)后，i已经为5，当在调用f(2)时，i开始仍为5...]]></description>
</item>
<item>
<title><![CDATA[加强UML中顺序图的使用]]></title>
<link>/article/prog/se/2011/4901.html</link>
<author>David111</author>
<category><![CDATA[软件工程]]></category>
<pubDate>2011-10-03 14:54:28</pubDate>
<description><![CDATA[顺序图描述的是用例实例，一个用例是多个用例实例的抽象，所以一个用例描述多种事件流：正常的事件流，可选的事件流，异常的事件流。
那么对于一个用例，要用顺序图描述每一种用例实现（具体的事件流），所以就比较繁琐，一个用例要画多个顺序图（至少三个）。
这一点流程图有强的描述能力，可以在一个图中描述所有分支（通过条件判断分支）。但流程图的缺点是指描述控制流，无法描述对象和信息流。来源于流程图的带泳道和对象流和同步条的活动图补充了不足，可以用来描述用例，也可以通过泳道描述对象，所以可以代替顺序图描述用例实现中对象间的交互。但缺点是对象间的消息不明了。
可以增强顺序图的描述能力，改变顺序图的描述角度：...]]></description>
</item>
<item>
<title><![CDATA[面向对象设计的经验原则61条]]></title>
<link>/article/prog/zonghe/2011/4900.html</link>
<author>Arthur J.Riel</author>
<category><![CDATA[编程综合]]></category>
<pubDate>2011-10-03 14:44:41</pubDate>
<description><![CDATA[一直教面向对象的程序设计，但最近两年很少讲理论了，直接就讲具体实现，但今天看到这61条，感觉很震撼，将其转载到这里与大家共享。
你不必严格遵守这些原则，违背它们也不会被处以宗教刑罚。但你应当把这些原则看成警铃，若违背了其中的一条，那么警铃就会响起。”
                  --Arthur J.Riel
(1)所有数据都应该隐藏在所在的类的内部。
(2)类的使用者必须依赖类的共有接口，但类不能依赖它的使用者。
(3)尽量减少类的协议中的消息。
(4)实现所有类都理解的最基本公有接口[例如，拷贝操作(深拷贝和浅拷贝)、相等性判断、正确输出内容、从ASCII描述解析等等]...]]></description>
</item>
<item>
<title><![CDATA[IT人士能不能一辈子都靠技术生存]]></title>
<link>/article/prog/zonghe/2011/4885.html</link>
<author>不详</author>
<category><![CDATA[编程综合]]></category>
<pubDate>2011-10-01 15:13:59</pubDate>
<description><![CDATA[我现在是自己做，但我此前有多年在从事软件开发工作，当回过头来想一想自己，觉得特别想对那些初学JAVA/DOT.NET技术的朋友说点心里话，希望你们能从我们的体会中，多少受点启发（也许我说的不好，你不赞同但看在我真心的份上别扔砖头啊）。
一、 在中国你千万不要因为学习技术就可以换来稳定的生活和高的薪水待遇，你千万更不要认为哪些从事 市场开发，跑腿的人，没有前途。
不知道你是不是知道，咱们中国有相当大的一部分软件公司，他们的软件开发团队都小的可怜，甚至只有1-3个人，连一个项目小组都算不上，而这样的团队却要承担一个软件公司所有的软件开发任务，在软件上线和开发的关键阶段需要团队的成员没日没夜的加...]]></description>
</item>
<item>
<title><![CDATA[在VB中使用API函数修改treeview的背景色]]></title>
<link>/article/prog/VisualBasic/2011/4802.html</link>
<author>不详</author>
<category><![CDATA[VB/VB.NET]]></category>
<pubDate>2011-09-06 22:26:55</pubDate>
<description><![CDATA[本文给出在VB中改变TreeView 的背景颜色的方法，主要使用了API函数。
Private Declare Function SendMessage Lib &quot;User32&quot; Alias &quot;SendMessageA&quot; (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long

Private Declare Function GetWindowLong Lib &quot;User32&quot; Alias &quot;GetWindowLongA&quot; (ByVal hWnd As Long, By...]]></description>
</item>
<item>
<title><![CDATA[vb中利用xmlhttp来下载远程文件]]></title>
<link>/article/prog/VisualBasic/2011/4799.html</link>
<author>不详</author>
<category><![CDATA[VB/VB.NET]]></category>
<pubDate>2011-09-05 21:49:16</pubDate>
<description><![CDATA[建立一个vb工程，Project1
添加引用：Microsoft scripting runtime,Microsoft Active Data Object,Microsoft MsXml
Form1代码：
Public a As MSXML2.XMLHTTP
Private Sub Command1_Click()
Dim d As Class1
Set a = New MSXML2.XMLHTTP
a.open &quot;get&quot;, &quot;http://www.ljc.com/sll.exe&quot;, True
Set d = New Class1
a.onreadystatechang...]]></description>
</item>
<item>
<title><![CDATA[C语言的算术运算符]]></title>
<link>/article/prog/C/2011/4760.html</link>
<author>biye5u.com</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-08-27 14:16:39</pubDate>
<description><![CDATA[C语言中的运算符是告诉编译程序执行特定算术或逻辑操作的符号。按着用途，C语言的运算符主要分为四大类：算术运算符、 关系运算符、逻辑运算符、按位运算符。除此之外，还有一些用于完成特殊任务的运算符。
按着参与运算的操作数的个数分可分为一目运算符、二目运算符和三目运算符。一目运算符即该运算符只需要一个相关数据参与运算，二目运算符需要两个数据，三目运算符需要三个数据，实际上，在C语言中，三目运算符只有一个：条件运算符（?:）。
这里主要介绍C语言的基本蒜素运算符，其主要用来进行各类数值的运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算%)。
1、加法运算符“+”
加法运算符为...]]></description>
</item>
<item>
<title><![CDATA[C语言的实型变量]]></title>
<link>/article/prog/C/2011/4759.html</link>
<author>biye5u.com</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-08-27 14:04:41</pubDate>
<description><![CDATA[C语言中的实型变量分为单精度（float）和双精度（double）两种。对每一个实型变量在使用前都必须进行定义。如：
下面是单精度实型变量的定义方法：
float x,y; /*指定x,y为单精度实数*/
float f1,f2; /*定义了两个单精度的实型变量f1和f2*/
下面是双精度实型变量的定义方法：
double d1,d2；/*定义d1和d2为双精度实数*/
在一般系统中，一个单精度（float）型数据在内存中占4个字节（32位）；一个双精度（double）型数据在内存总占8个字节（64位）。单精度实数提供7位有效数字，双精度提供15~16位有效数字，数值的范围随机器系...]]></description>
</item>
<item>
<title><![CDATA[C语言的实型常量]]></title>
<link>/article/prog/C/2011/4758.html</link>
<author>biye5u.com</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-08-27 13:46:03</pubDate>
<description><![CDATA[在C语言中，实型常量又称实数或浮点数，是一个十进制表示的符号实数。可以使用小数形式和指数形式来表示。下面分别进行介绍：
1、小数形式
小数形式的实型常量一般包括整数部分和小数部分。如：0.12，0.135,1.23,0.0等都属于小数形式的实型数据。
2、指数形式
指数形式的实型常量一般包括整数部分、尾数部分和指数部分。即我们常说的科学计数法。但在C语言中使用类似2.3432E2的形式来表示，即其为小数234.32（2.3432×102）。
C语言的语法规定，指数形式表示的实型常量，字母E（e）之前必须有数字，且E（e）之后的指数必须为整数，字母E（e）前后以及数字之间不得插入空格...]]></description>
</item>
<item>
<title><![CDATA[C语言的整型变量]]></title>
<link>/article/prog/C/2011/4355.html</link>
<author>biye5u.com</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-05-13 06:08:52</pubDate>
<description><![CDATA[本节主要介绍C语言整型变量的分类、定义方法和使用。
C语言的整型变量用来定义具有整数意义的变量，如人口数量，出勤次数，产品等级等等。
C语言的整型变量可以分为四类：
（1）基本整型
基本整型使用int来定义，在Turbo C中，int类型的变量占用2个字节，而在VC 6.0中，int型变量占用4个字节。其定义形式如下：
int iNum; /*定义一个整型变量 iNum*/
int iGrade = 0; /*定义一个整型变量iGrade，并初始化为0*/
（2）短整型
短整型使用short来定义，在Turbo C中，short类型变量与int类型一样也占用2个字节，在VC 6...]]></description>
</item>
<item>
<title><![CDATA[C语言的整型常量]]></title>
<link>/article/prog/C/2011/4344.html</link>
<author>biye5u.com</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-05-11 08:31:04</pubDate>
<description><![CDATA[本节介绍C语言中的整型常量。
整型常量就是整型常数。在C语言程序中，整型常量主要有十进制、八进制和十六进制三种形式。
（1）十进制整型常量
十进制整型常量用到的数字有0~9。例如32767、65535、0等。整型常量开头数字不能为0。
（2）八进制整型常量
八进制整常数必须以0开头，即以0作为八进制数的前缀。数码取之为0～7。八进制数通常是无符号数。如015(十进制为13)、0101(十进制为65)、0177777(十进制为65535)。注意：八进制数必须用合法的八进制数字表示。例如，不能写成018，因为数字8不是八进制数字。
（3）十六进制整型常量
十六进制整型常量以0x或0X...]]></description>
</item>
<item>
<title><![CDATA[java字符串的各种编码转换方法集锦]]></title>
<link>/article/prog/java/2011/4343.html</link>
<author>佚名</author>
<category><![CDATA[Java]]></category>
<pubDate>2011-05-11 08:17:51</pubDate>
<description><![CDATA[import java.io.UnsupportedEncodingException;
　/**
　* 转换字符串的编码
　*/
　public class ChangeCharset &#123;
　　/** 7位ASCII字符，也叫作ISO646-US、Unicode字符集的基本拉丁块 */
　　public static final String US_ASCII = &quot;US-ASCII&quot;;
　　/** ISO 拉丁字母表 No.1，也叫作 ISO-LATIN-1 */
　　public static final String ISO_8859_1 = &quot;ISO-8859-1&quot;;...]]></description>
</item>
<item>
<title><![CDATA[JAVA编程中正则表达式的使用技巧]]></title>
<link>/article/prog/java/2011/4342.html</link>
<author>佚名</author>
<category><![CDATA[Java]]></category>
<pubDate>2011-05-11 08:03:40</pubDate>
<description><![CDATA[本文讲解了Java正则表达式的使用方法。
JAVA 正则表达式涉及到三个类：String，Pattern和Matcher。Pattern是要匹配的模式，Matcher是匹配的结果。例如：
Pattern p = Pattern.complie(&quot;[a-z]&#123;3&#125;&quot;);
 Matcher m = p.mather(&quot;abc&quot;);
下面是一些常用的匹配技巧：
（1）想在正则表达式中匹配一个反斜线用四个反斜线表示: &quot;\\&quot;.matches();
（2）配空白行 &quot; \n&quot;.matches(&quot;^[\\s&amp;&amp;[^\\n]]*\\n&#36;&quot;);
（3）出匹配结果在整个字符串的开...]]></description>
</item>
<item>
<title><![CDATA[C语言的常量与变量]]></title>
<link>/article/prog/C/2011/4330.html</link>
<author>biye5u.com</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-05-08 22:28:02</pubDate>
<description><![CDATA[本节主要介绍常量和变量的概念及使用方法。
1、常量
所谓常量是指在程序运行过程中，其值不能被改变的量。在C语言中， 常量在程序中经常直接出现，有整型常量、实型常量、字符常量和字符串常量等类型。整型常量还可以进一步分为短整型常量、长整型常量等。
整型常量和实型常量又称数值型常量，它们有正值和负值的区分。基本整型常量只用数字表示，不带小数点，例如12、-1、0等。实型常量必须用带小数点的数表示，例如3.14159、-2.71828、0.0等。&#39;A’和&#39;d’则是字符型常量，而&quot;NCRE&quot;和&quot;biye5u.com&quot;是字符串常量。由此可见，常量的类型从字面形式上是可区分的，C编译程序就是以此来确定...]]></description>
</item>
<item>
<title><![CDATA[C语言的标识符]]></title>
<link>/article/prog/C/2011/4310.html</link>
<author>biye5u.com</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-05-05 14:15:08</pubDate>
<description><![CDATA[本节将讲解C语言标识符的命名规则和分类。
1、C语言的标识符命名规则
在C语言中，有许多符号的命名，如变量名、函数名、数组名等，都必须遵守一定的规则，按此规则命名的符号称为标识符。
合法标识符的命名规则是：
（1）标识符可以由字母、数字和下划线组成；
（2）第一个字符必须为字母或下划线；
（3）不能使用C语言的关键字或保留字及库函数命名标识符。
下面给出的标识符是合法的标识符：
num1、area、PI、_ini、a_array、a1234、P101p
下面给出一些不符合要求的标识符：
456P、cade-y、w.w、a&amp;b、if、main
在C语言的标识符中，大...]]></description>
</item>
<item>
<title><![CDATA[C语言程序的基本结构与格式]]></title>
<link>/article/prog/C/2011/4309.html</link>
<author>biye5u.com</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-05-05 13:37:04</pubDate>
<description><![CDATA[C语言语法简洁、紧凑，使用方便、灵活，具有丰富的预定义运算符和数据类型，自定义数据类型也十分灵活。
C程序的模块化主要通过函数实现。由于C语言既有高级语言的功能，又有低级语言的一些功能，因此既可以用它来编写系统软件，也可以用来编写应用软件。
本节主要介绍了C语言程序的基本结构与格式，下面以一个求两个数最大值的例子来讲解C语言程序的基本结构与格式。
这个例子，将由键盘输入两个整数，然后通过比较大小，将最大的数输出来。
源程序代码如下：
#include &lt;stdio.h&gt;
 main()
 &#123;
   int num1,num2;   /*定义两个整型变量*/
   int ma...]]></description>
</item>
<item>
<title><![CDATA[结构化程序设计和模块化结构]]></title>
<link>/article/prog/C/2011/4300.html</link>
<author>biye5u.com</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-05-03 14:18:50</pubDate>
<description><![CDATA[本文介绍了结构化程序设计和模块化结构的知识。
1.结构化程序设计
结构化程序由三种基本结构组成。
（1）顺序结构。赋值语句、输入、输出语句都是顺序结构。当执行由这些语句构成的程序时，将按这些语句在程序中的先后顺序逐条执行，没有分支，没有转移。顺序结构可用图1所示的流程图表示，其中(a)是一般的流程图，(b)是n-s流程图。

图1 顺序结构流程图
（2）选择结构。C语言的选择结构主要由if语句和switch语句构成。当执行到这些语句时，将根据不同的条件去执行不同分支中的语句。选择结构可用图2所示的流程图表示，其中(a)是一般的流程图，(b)是n-s流程图。

图2 选择结构流程...]]></description>
</item>
<item>
<title><![CDATA[程序的算法]]></title>
<link>/article/prog/C/2011/4297.html</link>
<author>biye5u.com</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-05-02 06:50:21</pubDate>
<description><![CDATA[我们在解决一个特定问题时，除了要设计合理的数据结构外，还要设计性能较优的算法。
算法是指为解决特定问题而采取的确定且有限的步骤。一个算法应当具有以下几个特性：
（1）有穷性：一个算法包含的操作步骤应该是有限的。也就是说在执行若干操作步骤后，算法将结束，而且每一步都在合理的时间内完成。
（2）确定性。算法中每一条指令必须有确切的含义，不能有二义性，对于相同的输入必须得出相同的执行结果。
（3）可行性。算法中指定的操作，都可以通过已经验证过可以实现的基本运算执行有限次后实现。
（4）有零个或多个输入。在计算机上实现的算法是用来处理数据对象的，在大多数情况下这些数据对象需要通过输入来得到。...]]></description>
</item>
<item>
<title><![CDATA[程序和程序设计]]></title>
<link>/article/prog/C/2011/4283.html</link>
<author>biye5u.com</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-05-01 08:06:00</pubDate>
<description><![CDATA[本节介绍关于程序和程序设计的基本知识。
1.C程序介绍 
计算机已经在各行各业发挥着巨大的作用，但是，不熟悉计算机的人把它看的很神秘。实际上，计算机只不过是一种具有内部存储能力、由程序自动控制的电子设备。人们将事先编写好的计算机指令存储在计算机内存中，当人们给出命令之后，计算机就按照这些指令的顺序进行操作。人们把这种可以连续执行的指令的集合称之为“程序”。可以说，程序就是人与机器“对话”的语言，也就是人们常说的“程序设计语言”。
目前，人们使用的程序设计语言很多，他们通过一些关键字和语法编写成程序，控制计算机完成一定的任务。这些语言往往被称之为高级语言，如C、C++、Visual Bas...]]></description>
</item>
<item>
<title><![CDATA[程序员的11个层次 你属于哪一层?]]></title>
<link>/article/prog/zonghe/2011/4222.html</link>
<author>不详</author>
<category><![CDATA[编程综合]]></category>
<pubDate>2011-04-12 16:48:37</pubDate>
<description><![CDATA[自西方文艺复兴以来，中国在自然科学方面落后西方很多，软件领域也不例外。当然现在中国的许多程序员们对此可能有许多不同的意见，有些人认为中国的程序员水平远落后于西方，有些则认为中国的程序员个人能力并不比西方的程序员差，只是整个软件产业落后而已。
那么，到底中国的程序员水平比西方程序员水平差，还是中国有许多优秀的程序员达到或超过了西方程序员同等水平呢？要解决这个问题，必须先知道程序员有多少种技术层级，每个层级需要什么样的技术水平，然后再比较中国和西方在各个技术层级的人数，就可以知道到底有没有差距，差距有多大。
当然，对于如何划分程序员的技术层级，不同公司或不同人会有不同的划分标准，下面的划分仅代...]]></description>
</item>
<item>
<title><![CDATA[求两个正整数m和n的最大公约数和最小公倍数]]></title>
<link>/article/prog/C/2011/4204.html</link>
<author>biye5u.com</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-03-20 12:18:35</pubDate>
<description><![CDATA[C语言练习题
从键盘输入两个数m和n，求其最大公约数和最小公倍数。
实现方法如下：
main()
&#123;
 int m,n,a,b;
 int p,r,temp;
 printf(&quot;Please input 2 integer(m,n):&quot;);
 scanf(&quot;%d,%d&quot;,&amp;m,&amp;n);
 a = m; b = n;
 if(b&lt;a)
 &#123;
 temp = a;
 a = b;
 b = temp;
 &#125;
 p = a * b;
 while(a != 0)
 &#123;
 r = b % a;
 b = a;
 a = r;
 &#125;
 pri...]]></description>
</item>
<item>
<title><![CDATA[编写程序求分段函数的值]]></title>
<link>/article/prog/C/2011/4203.html</link>
<author>biye5u.com</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-03-20 11:07:07</pubDate>
<description><![CDATA[C语言练习题，编写程序求分段函数的值。
有一个分段函数，其形式如下：

编写程序，当输入x值后，输出y值。
实现方法如下：
main()
&#123;
 int x,y;
 printf(&quot;Please input x value:&quot;);
 scanf(&quot;%d&quot;,&amp;x);
 if( x &lt; 1)
 y = x;
 else if( x &lt; 10)
 y = 2*x - 1;
  else
  y = 3*x - 11;
 printf(&quot;when x = %3d,y = %d\n&quot;,x,y);
 &#125;
运行结果如下：


]]></description>
</item>
<item>
<title><![CDATA[由键盘输入3个整数a,b,c，求出最大值]]></title>
<link>/article/prog/C/2011/4202.html</link>
<author>biye5u.com</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-03-20 09:17:44</pubDate>
<description><![CDATA[C语言练习题：
有3个整数a,b,c，由键盘输入，输出其中最大值。
方法一：
main()
&#123;
 int a,b,c;
 printf(&quot;Please input 3 integer number;&quot;);
 scanf(&quot;%d,%d,%d&quot;,&amp;a,&amp;b,&amp;c);
 if(a&lt;b)
 if(b&lt;c)
  printf(&quot;max=%d\n&quot;,c);
 else
  printf(&quot;max=%d\n&quot;,b);
 else if(a&lt;c)
  printf(&quot;max = %d\n&quot;,c);
 else
  printf(&quot;max=%d\n&quot;,a)...]]></description>
</item>
<item>
<title><![CDATA[VC制作软件启动画面的方法]]></title>
<link>/article/prog/C/2011/4157.html</link>
<author>宋端智、贾皓丽</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-03-16 16:48:46</pubDate>
<description><![CDATA[本文介绍了如何在VC中绘制软件初始画面的方法，具体分10个步骤来讲解。
1.创建一个SDI或MDI工程。
2.新建或导入一个ID号为IDB&mdash;SPLASH的位图。
3.从CWnd类派生一个名为CSplashWnd的子类，并添加两个保护成员变量：
CBitmap m&mdash;bitmap;//初始画面位图
 static CSplashWnd c&mdash;pSplashWnd;
 //指向初始画面窗口的指针
 c&mdash;pSplashWnd为静态成员变量，应在类的实现文件(.cpp)开头说明：
 CSplashWnd CSplashWnd::c&mda...]]></description>
</item>
<item>
<title><![CDATA[学好VC++编程的十大秘诀]]></title>
<link>/article/prog/zonghe/2011/4156.html</link>
<author>不详</author>
<category><![CDATA[编程综合]]></category>
<pubDate>2011-03-16 16:44:00</pubDate>
<description><![CDATA[很多人都想学好VC++，但是面对VC++的高深，很多人选择了退步，本文作者给出了10个学好VC++编程的秘诀，供广大VC++爱好者进行参考。
一、充分利用MSDN
MSDN是Microsoft当前提供的有关编程信息的最全面的资源，它包含微软最新的技术数据库，加上易学易用的全文检索功能，让您迅速找到任何您需要的技术参考数据，让您随时拥有与全世界菁英同步的技术，掌握最丰富的程序开发资源。我经常收到很多朋友的EMAILS，他们所提的问题往往都非常的简单，MSDN完全可以解答这些问题，但他们好象不太喜欢用，这是让我郁闷的地方，是因为英文不好呢，还是没有学会充分利用各种资源来解决问题的方法呢？
二...]]></description>
</item>
<item>
<title><![CDATA[利用NetBIOS进行Windows网络编程]]></title>
<link>/article/prog/C/2011/4155.html</link>
<author>佚名</author>
<category><![CDATA[C/C++]]></category>
<pubDate>2011-03-16 16:35:38</pubDate>
<description><![CDATA[本文介绍了NetBIOS编程的一些基本概念，并通过一个异步事件服务器和一个异步事件客户机的例子，详细说明了NetBIOS进行Windows编程的基本方法。文中涉及的程序在Windows98环境下，由VC++6.0编译通过。
“网络基本输入/输出系统”（Network Basic Input/Output System，NetBIOS）是1983年由Sytex公司为IBM公司开发的一种标准应用程序编程接口，并被微软采用。1985年，IBM改进了NetBIOS，推出了NetBIOS扩展用户接口（NetBIOS Extended User Interface,NetBEUI）通信协议，它占用内存少...]]></description>
</item></channel></rss>

