﻿<?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-幸せのちから</title><link>http://www.blogjava.net/lucky/</link><description>&lt;B&gt;平凡的世界&lt;/B&gt;&lt;/br&gt;

&lt;font color="blue"&gt;看似平常实崎岖&lt;/br&gt;
成如容易却艰辛&lt;/font&gt;</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 02:00:15 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 02:00:15 GMT</pubDate><ttl>60</ttl><item><title> Effective JAVA</title><link>http://www.blogjava.net/lucky/archive/2016/08/26/431682.html</link><dc:creator>Lucky</dc:creator><author>Lucky</author><pubDate>Fri, 26 Aug 2016 09:45:00 GMT</pubDate><guid>http://www.blogjava.net/lucky/archive/2016/08/26/431682.html</guid><wfw:comment>http://www.blogjava.net/lucky/comments/431682.html</wfw:comment><comments>http://www.blogjava.net/lucky/archive/2016/08/26/431682.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lucky/comments/commentRss/431682.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lucky/services/trackbacks/431682.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>EffectiveJAVA.html</title>
<meta name="generator" content="Haroopad 0.13.1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <br /><h1 id="effective-java"><a name="effective-java" href="#effective-java"></a>Effective JAVA</h1>
<h4 id="第2章-创建销毁对象"><a name="第2章-创建销毁对象" href="#第2章-创建销毁对象"></a>第2章 创建销毁对象</h4>
<h5 id="1.考虑用静态工厂方法代替构造器"><a name="1.考虑用静态工厂方法代替构造器" href="#1.考虑用静态工厂方法代替构造器"></a>1.考虑用静态工厂方法代替构造器</h5>
<p><mark>优点</mark></p>
<pre><code data-origin="
<pre><code>&#183;静态工厂方法有名称
&#183;不用每次都创建新实例
&#183;可以返回远返回类型的任何子类型的对象
&#183;在创建参数化类型实例的时候代码更简洁
</code></pre>
">&#183;静态工厂方法有名称
&#183;不用每次都创建新实例
&#183;可以返回远返回类型的任何子类型的对象
&#183;在创建参数化类型实例的时候代码更简洁
</code></pre>
<p><mark>缺点</mark></p>
<pre><code data-origin="
<pre><code>&#183;不能被子类化
&#183;它们与其他的静态方法实际上没有任何区别
</code></pre>
">&#183;不能被子类化
&#183;它们与其他的静态方法实际上没有任何区别
</code></pre>
<h5 id="2.遇到多个构造器参数时要考虑用构造器"><a name="2.遇到多个构造器参数时要考虑用构造器" href="#2.遇到多个构造器参数时要考虑用构造器"></a>2.遇到多个构造器参数时要考虑用构造器</h5>
<p>如果类的构造器或者静态工厂中具有多个参数，可以考虑使用<mark>Builder</mark>模式</p>
<h5 id="3.用私有构造器或者枚举类型强化singleton属性"><a name="3.用私有构造器或者枚举类型强化singleton属性" href="#3.用私有构造器或者枚举类型强化singleton属性"></a>3.用私有构造器或者枚举类型强化Singleton属性</h5>
<p>编写一个包含单个元素的枚举类型</p>
<pre class="java hljs"><code class="JAVA" data-origin="
<pre><code class=" &quot;java&quot;" ="">public enum Elvis{
INSTANCE;
public void leaveTheBuilding*(){
...}
}
</code></pre>
"&gt;<span class="hljs-keyword">public</span> <span class="hljs-keyword">enum</span> Elvis{
INSTANCE;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> leaveTheBuilding*(){
...}
}

<h5 id="4.通过私有构造器强化不可实例化的能力"><a name="4.通过私有构造器强化不可实例化的能力" href="#4.通过私有构造器强化不可实例化的能力"></a>4.通过私有构造器强化不可实例化的能力</h5>
<p>让不需要实例化的类拥有私有（private）构造器来避免被实例化</p>
<pre class="java hljs"><code class="JAVA" data-origin="
<pre><code class=" &quot;java&quot;" ="">//Noninstantiable utility class
public enum UtilityClass{
private UtilityClass（）{
throw new AssertinError();
}
...
}
</code></pre>
"&gt;<span class="hljs-comment">//Noninstantiable utility class</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">enum</span> UtilityClass{
<span class="hljs-keyword">private</span> UtilityClass（）{
<span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> AssertinError();
}
...
}

<h5 id="5.避免创建不必要的对象"><a name="5.避免创建不必要的对象" href="#5.避免创建不必要的对象"></a>5.避免创建不必要的对象</h5>
<p>使用静态的初始化器（initialize）避免创建重复的Calendar，TimeZone和Date实例</p>
<pre class="java hljs"><code class="JAVA" data-origin="
<pre><code class=" &quot;java&quot;" ="">import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class Person {
private Date birthDate;
private static final Date BOOM_START;
private static final Date BOOM_END;
static {
Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
gmtCal.set(1946, Calendar.JANUARY, 1, 0, 0, 0);
BOOM_START = gmtCal.getTime();
gmtCal.set(1965, Calendar.JANUARY, 1, 0, 0, 0);
BOOM_END = gmtCal.getTime();
}
public boolean isBabyBoomer() {
return birthDate.compareTo(BOOM_START) &amp;gt;= 0 &amp;amp;&amp;amp; birthDate.compareTo(BOOM_END) &amp;lt;= 0;
}
}
</code></pre>
"&gt;<span class="hljs-keyword">import</span> java.util.Calendar;
<span class="hljs-keyword">import</span> java.util.Date;
<span class="hljs-keyword">import</span> java.util.TimeZone;
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Person</span> </span>{
<span class="hljs-keyword">private</span> Date birthDate;
<span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> Date BOOM_START;
<span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> Date BOOM_END;
<span class="hljs-keyword">static</span> {
Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone(<span class="hljs-string">"GMT"</span>));
gmtCal.set(<span class="hljs-number">1946</span>, Calendar.JANUARY, <span class="hljs-number">1</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>);
BOOM_START = gmtCal.getTime();
gmtCal.set(<span class="hljs-number">1965</span>, Calendar.JANUARY, <span class="hljs-number">1</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>);
BOOM_END = gmtCal.getTime();
}
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">boolean</span> <span class="hljs-title">isBabyBoomer</span><span class="hljs-params">()</span> </span>{
<span class="hljs-keyword">return</span> birthDate.compareTo(BOOM_START) &gt;= <span class="hljs-number">0</span> &amp;&amp; birthDate.compareTo(BOOM_END) &lt;= <span class="hljs-number">0</span>;
}
}

<p>优先使用基本类型而不是装箱基本类型，要当心无意识的自动装箱。</p>
<h5 id="6.消除过期的对象引用"><a name="6.消除过期的对象引用" href="#6.消除过期的对象引用"></a>6.消除过期的对象引用</h5>
<p>一旦对象引用已经过期，只需清空这些引用即可。</p>
<h5 id="7.避免使用终结方法"><a name="7.避免使用终结方法" href="#7.避免使用终结方法"></a>7.避免使用终结方法</h5>
<p>终结方法（finalizer）通常是不可预测的，也是很危险的，一般情况下是不必要的。<br />
不应该依赖终结方法来更新重要的持久状态。<br />
显式终止方法的典型例子：<mark><strong>InputStream,OutputStream,java.sql.Connection的Close</strong></mark></p>
<h4 id="第3章-对于所有对象都通用的方法"><a name="第3章-对于所有对象都通用的方法" href="#第3章-对于所有对象都通用的方法"></a>第3章 对于所有对象都通用的方法</h4>
<h5 id="8.覆盖equals时请遵守通用约定"><a name="8.覆盖equals时请遵守通用约定" href="#8.覆盖equals时请遵守通用约定"></a>8.覆盖equals时请遵守通用约定</h5>
<pre><code data-origin="
<pre><code>&#183;类的每个实例本质上都是唯一的
&#183;不关心类是否提供了&#8220;逻辑相等&#8221;
&#183;超类已经覆盖了equals，从超类继承过来的行为对于子类也是合适的
&#183;类是私有的或是包级私有的，应该覆盖父类的equals方法保证永远不会被调用
</code></pre>
">&#183;类的每个实例本质上都是唯一的
&#183;不关心类是否提供了&#8220;逻辑相等&#8221;
&#183;超类已经覆盖了equals，从超类继承过来的行为对于子类也是合适的
&#183;类是私有的或是包级私有的，应该覆盖父类的equals方法保证永远不会被调用
</code></pre>
<h5 id="9.覆盖equals时总要覆盖hashcode"><a name="9.覆盖equals时总要覆盖hashcode" href="#9.覆盖equals时总要覆盖hashcode"></a>9.覆盖equals时总要覆盖hashCode</h5>
<h5 id="10.始终要覆盖tostring"><a name="10.始终要覆盖tostring" href="#10.始终要覆盖tostring"></a>10.始终要覆盖toString</h5>
<h5 id="11.谨慎地覆盖clone"><a name="11.谨慎地覆盖clone" href="#11.谨慎地覆盖clone"></a>11.谨慎地覆盖clone</h5>
<h5 id="12.考虑实现comparable接口"><a name="12.考虑实现comparable接口" href="#12.考虑实现comparable接口"></a>12.考虑实现Comparable接口</h5>
<h4 id="第4章-类和接口"><a name="第4章-类和接口" href="#第4章-类和接口"></a>第4章 类和接口</h4>
<h5 id="13.使类和成员的可访问性最小化"><a name="13.使类和成员的可访问性最小化" href="#13.使类和成员的可访问性最小化"></a>13.使类和成员的可访问性最小化</h5>
<h5 id="14.在公有类中使用访问方法而非公有域"><a name="14.在公有类中使用访问方法而非公有域" href="#14.在公有类中使用访问方法而非公有域"></a>14.在公有类中使用访问方法而非公有域</h5>
<h5 id="15.使可变性最小化"><a name="15.使可变性最小化" href="#15.使可变性最小化"></a>15.使可变性最小化</h5>
<pre><code data-origin="
<pre><code>1.不要提供任何会修改对象状态的方法
2.保证类不会被扩展
3.使所有域都是final
4.使所有域都成为私有的
5.确保对于任何可变组建的互斥访问
</code></pre>
">1.不要提供任何会修改对象状态的方法
2.保证类不会被扩展
3.使所有域都是final
4.使所有域都成为私有的
5.确保对于任何可变组建的互斥访问
</code></pre>
<h5 id="16.复合优先于继承"><a name="16.复合优先于继承" href="#16.复合优先于继承"></a>16.复合优先于继承</h5>
<h5 id="17.要么为继承而设计，并提供文档说明，要么就禁止继承"><a name="17.要么为继承而设计，并提供文档说明，要么就禁止继承" href="#17.要么为继承而设计，并提供文档说明，要么就禁止继承"></a>17.要么为继承而设计，并提供文档说明，要么就禁止继承</h5>
<h5 id="18.接口优于抽象类"><a name="18.接口优于抽象类" href="#18.接口优于抽象类"></a>18.接口优于抽象类</h5>
<pre><code data-origin="
<pre><code>- 现有的类可以很容易被更新，以实现新的接口
- 接口是定义minin（混合类型）的理想选择
- 接口允许我们构造非层次结构的类型框架
</code></pre>
">- 现有的类可以很容易被更新，以实现新的接口
- 接口是定义minin（混合类型）的理想选择
- 接口允许我们构造非层次结构的类型框架
</code></pre>
<h5 id="19.接口只用于定义类型"><a name="19.接口只用于定义类型" href="#19.接口只用于定义类型"></a>19.接口只用于定义类型</h5>
<h5 id="20.类层次优于标签类"><a name="20.类层次优于标签类" href="#20.类层次优于标签类"></a>20.类层次优于标签类</h5>
<h5 id="21.用函数对象表示策略"><a name="21.用函数对象表示策略" href="#21.用函数对象表示策略"></a>21.用函数对象表示策略</h5>
<h5 id="22.优先考虑静态成员类"><a name="22.优先考虑静态成员类" href="#22.优先考虑静态成员类"></a>22.优先考虑静态成员类</h5>
<h4 id="第5章-泛型"><a name="第5章-泛型" href="#第5章-泛型"></a>第5章 泛型</h4>
<h5 id="23.请不要在新代码中使用原生态类型"><a name="23.请不要在新代码中使用原生态类型" href="#23.请不要在新代码中使用原生态类型"></a>23.请不要在新代码中使用原生态类型</h5>
<h5 id="24.消除非受检警告"><a name="24.消除非受检警告" href="#24.消除非受检警告"></a>24.消除非受检警告</h5>
<pre><code data-origin="
<pre><code>SuppressWarnings注解始终在尽可能小的范围中使用。
</code></pre>
">SuppressWarnings注解始终在尽可能小的范围中使用。
</code></pre>
<h5 id="25.列表预先于数组"><a name="25.列表预先于数组" href="#25.列表预先于数组"></a>25.列表预先于数组</h5>
<pre><code data-origin="
<pre><code>数组是协变得（covariant）。
数组是具体化的。
</code></pre>
">数组是协变得（covariant）。
数组是具体化的。
</code></pre>
<h5 id="26.优先考虑泛型"><a name="26.优先考虑泛型" href="#26.优先考虑泛型"></a>26.优先考虑泛型</h5>
<h5 id="27.优先考虑泛型方法"><a name="27.优先考虑泛型方法" href="#27.优先考虑泛型方法"></a>27.优先考虑泛型方法</h5>
<h5 id="28.利用有限制通配符来提升api的灵活性"><a name="28.利用有限制通配符来提升api的灵活性" href="#28.利用有限制通配符来提升api的灵活性"></a>28.利用有限制通配符来提升API的灵活性</h5>
<h5 id="29.优先考虑类型安全的已购容器"><a name="29.优先考虑类型安全的已购容器" href="#29.优先考虑类型安全的已购容器"></a>29.优先考虑类型安全的已购容器</h5>
<h4 id="第6章-枚举和注解"><a name="第6章-枚举和注解" href="#第6章-枚举和注解"></a>第6章 枚举和注解</h4>
<h5 id="30.用enum代替int常量"><a name="30.用enum代替int常量" href="#30.用enum代替int常量"></a>30.用enum代替int常量</h5>
<h5 id="31.用实例域代替序数"><a name="31.用实例域代替序数" href="#31.用实例域代替序数"></a>31.用实例域代替序数</h5>
<h5 id="32.用enumset代替位域"><a name="32.用enumset代替位域" href="#32.用enumset代替位域"></a>32.用EnumSet代替位域</h5>
<h5 id="33.用enummap代替序数索引"><a name="33.用enummap代替序数索引" href="#33.用enummap代替序数索引"></a>33.用EnumMap代替序数索引</h5>
<h5 id="34.用接口模拟可伸缩的枚举"><a name="34.用接口模拟可伸缩的枚举" href="#34.用接口模拟可伸缩的枚举"></a>34.用接口模拟可伸缩的枚举</h5>
<h5 id="35.注解优先于命名模式"><a name="35.注解优先于命名模式" href="#35.注解优先于命名模式"></a>35.注解优先于命名模式</h5>
<h5 id="36.坚持使用override注解"><a name="36.坚持使用override注解" href="#36.坚持使用override注解"></a>36.坚持使用Override注解</h5>
<h5 id="37.用标记接口定义类型"><a name="37.用标记接口定义类型" href="#37.用标记接口定义类型"></a>37.用标记接口定义类型</h5>
<h4 id="第7章-方法"><a name="第7章-方法" href="#第7章-方法"></a>第7章 方法</h4>
<h5 id="38.检查参数的有效性"><a name="38.检查参数的有效性" href="#38.检查参数的有效性"></a>38.检查参数的有效性</h5>
<h5 id="39.必要时进行保护性拷贝"><a name="39.必要时进行保护性拷贝" href="#39.必要时进行保护性拷贝"></a>39.必要时进行保护性拷贝</h5>
<h5 id="40.谨慎设计方法签名"><a name="40.谨慎设计方法签名" href="#40.谨慎设计方法签名"></a>40.谨慎设计方法签名</h5>
<pre><code data-origin="
<pre><code>谨慎地选择方法的名称
不要过于追求提供便利的方法
避免过长的参数列表
</code></pre>
">谨慎地选择方法的名称
不要过于追求提供便利的方法
避免过长的参数列表
</code></pre>
<h5 id="41.慎用重载"><a name="41.慎用重载" href="#41.慎用重载"></a>41.慎用重载</h5>
<h5 id="42.慎用可变参数"><a name="42.慎用可变参数" href="#42.慎用可变参数"></a>42.慎用可变参数</h5>
<h5 id="43.返回零长度的数组或集合，而不是null"><a name="43.返回零长度的数组或集合，而不是null" href="#43.返回零长度的数组或集合，而不是null"></a>43.返回零长度的数组或集合，而不是null</h5>
<h5 id="44.为所有到处的api元素编写文档注释"><a name="44.为所有到处的api元素编写文档注释" href="#44.为所有到处的api元素编写文档注释"></a>44.为所有到处的API元素编写文档注释</h5>
<h4 id="第8章-通用程序设计"><a name="第8章-通用程序设计" href="#第8章-通用程序设计"></a>第8章 通用程序设计</h4>
<h5 id="45.将局部变量的作用域最小化"><a name="45.将局部变量的作用域最小化" href="#45.将局部变量的作用域最小化"></a>45.将局部变量的作用域最小化</h5>
<h5 id="46.for-each循环优先于传统的for循环"><a name="46.for-each循环优先于传统的for循环" href="#46.for-each循环优先于传统的for循环"></a>46.for-each循环优先于传统的for循环</h5>
<pre><code data-origin="
<pre><code> 无法使用for-each的情形
1.过滤
2.转换
3.平行迭代
</code></pre>
"> 无法使用for-each的情形
1.过滤
2.转换
3.平行迭代
</code></pre>
<h5 id="47.了解和使用类库"><a name="47.了解和使用类库" href="#47.了解和使用类库"></a>47.了解和使用类库</h5>
<h5 id="48.如果需要精确的答案，请避免使用float和double"><a name="48.如果需要精确的答案，请避免使用float和double" href="#48.如果需要精确的答案，请避免使用float和double"></a>48.如果需要精确的答案，请避免使用float和double</h5>
<pre><code data-origin="
<pre><code>正确的做法：使用BigDecimal,int或者long进行货币计算
</code></pre>
">正确的做法：使用BigDecimal,int或者long进行货币计算
</code></pre>
<h5 id="49.基本类型优先于装箱基本类型"><a name="49.基本类型优先于装箱基本类型" href="#49.基本类型优先于装箱基本类型"></a>49.基本类型优先于装箱基本类型</h5>
<h5 id="50.如果其他类型更适合，则尽量避免使用字符串"><a name="50.如果其他类型更适合，则尽量避免使用字符串" href="#50.如果其他类型更适合，则尽量避免使用字符串"></a>50.如果其他类型更适合，则尽量避免使用字符串</h5>
<pre><code data-origin="
<pre><code>字符串不适合替代其他的值类型
字符串不适合代替枚举类型
字符串不适合替代聚集类型
字符串也不适合太呆能力表(capabilities)
</code></pre>
">字符串不适合替代其他的值类型
字符串不适合代替枚举类型
字符串不适合替代聚集类型
字符串也不适合太呆能力表(capabilities)
</code></pre>
<h5 id="51.当心字符串连接的性能"><a name="51.当心字符串连接的性能" href="#51.当心字符串连接的性能"></a>51.当心字符串连接的性能</h5>
<h5 id="52.通过接口引用对象"><a name="52.通过接口引用对象" href="#52.通过接口引用对象"></a>52.通过接口引用对象</h5>
<h5 id="53.接口优先于反射机制"><a name="53.接口优先于反射机制" href="#53.接口优先于反射机制"></a>53.接口优先于反射机制</h5>
<p>反射机制的代价<br />
丧失了编译时类型检查的好处<br />
执行反射访问所需要的代码非常笨拙和冗长<br />
性能损失</p>
<h5 id="54.谨慎地使用本地方法"><a name="54.谨慎地使用本地方法" href="#54.谨慎地使用本地方法"></a>54.谨慎地使用本地方法</h5>
<h5 id="55.谨慎地进行优化"><a name="55.谨慎地进行优化" href="#55.谨慎地进行优化"></a>55.谨慎地进行优化</h5>
<h5 id="56.遵守普遍接受的命名惯例"><a name="56.遵守普遍接受的命名惯例" href="#56.遵守普遍接受的命名惯例"></a>56.遵守普遍接受的命名惯例</h5>
<h4 id="第9章-异常"><a name="第9章-异常" href="#第9章-异常"></a>第9章 异常</h4>
<h5 id="57.只针对异常的情况才使用异常"><a name="57.只针对异常的情况才使用异常" href="#57.只针对异常的情况才使用异常"></a>57.只针对异常的情况才使用异常</h5>
<h5 id="58.对可恢复的情况使用受检异常，对编程错误使用运行时异常"><a name="58.对可恢复的情况使用受检异常，对编程错误使用运行时异常" href="#58.对可恢复的情况使用受检异常，对编程错误使用运行时异常"></a>58.对可恢复的情况使用受检异常，对编程错误使用运行时异常</h5>
<p>JAVA提供了三种可抛出结构(throwable)<br />
1.受检的异常(checked exception)<br />
2.运行时异常(run-time exception)<br />
3.错误(error)</p>
<h5 id="59.避免不必要地使用受检的异常"><a name="59.避免不必要地使用受检的异常" href="#59.避免不必要地使用受检的异常"></a>59.避免不必要地使用受检的异常</h5>
<h5 id="60.优先使用标准的异常"><a name="60.优先使用标准的异常" href="#60.优先使用标准的异常"></a>60.优先使用标准的异常</h5>
<h5 id="61.抛出与抽象相对应的异常"><a name="61.抛出与抽象相对应的异常" href="#61.抛出与抽象相对应的异常"></a>61.抛出与抽象相对应的异常</h5>
<h5 id="62.每个方法抛出的异常都要有文档"><a name="62.每个方法抛出的异常都要有文档" href="#62.每个方法抛出的异常都要有文档"></a>62.每个方法抛出的异常都要有文档</h5>
<h5 id="63.在细节信息中包含能捕获失败的信息"><a name="63.在细节信息中包含能捕获失败的信息" href="#63.在细节信息中包含能捕获失败的信息"></a>63.在细节信息中包含能捕获失败的信息</h5>
<h5 id="64.努力使失败保持原子性"><a name="64.努力使失败保持原子性" href="#64.努力使失败保持原子性"></a>64.努力使失败保持原子性</h5>
<h5 id="65.不要忽略异常"><a name="65.不要忽略异常" href="#65.不要忽略异常"></a>65.不要忽略异常</h5>
<h4 id="第10章-并发"><a name="第10章-并发" href="#第10章-并发"></a>第10章 并发</h4>
<h5 id="66.同步访问共享的可变数据"><a name="66.同步访问共享的可变数据" href="#66.同步访问共享的可变数据"></a>66.同步访问共享的可变数据</h5>
<p>关键字synchronized可以保证在同一时刻，只有一个线程可以执行某一个方法，或者某一个代码块。</p>
<h5 id="67.避免过度同步"><a name="67.避免过度同步" href="#67.避免过度同步"></a>67.避免过度同步</h5>
<h5 id="68.executor和task优先于线程"><a name="68.executor和task优先于线程" href="#68.executor和task优先于线程"></a>68.executor和task优先于线程</h5>
<h5 id="69.并发工具优先于wait和notify"><a name="69.并发工具优先于wait和notify" href="#69.并发工具优先于wait和notify"></a>69.并发工具优先于wait和notify</h5>
<h5 id="70.线程安全性的文档化"><a name="70.线程安全性的文档化" href="#70.线程安全性的文档化"></a>70.线程安全性的文档化</h5>
<h5 id="71.慎用延迟初始化"><a name="71.慎用延迟初始化" href="#71.慎用延迟初始化"></a>71.慎用延迟初始化</h5>
<h5 id="72.不要依赖于线程调度器"><a name="72.不要依赖于线程调度器" href="#72.不要依赖于线程调度器"></a>72.不要依赖于线程调度器</h5>
<h5 id="73.避免使用线程组"><a name="73.避免使用线程组" href="#73.避免使用线程组"></a>73.避免使用线程组</h5>
<h4 id="第11章-序列化"><a name="第11章-序列化" href="#第11章-序列化"></a>第11章 序列化</h4>
<h5 id="74.谨慎地实现serializable接口"><a name="74.谨慎地实现serializable接口" href="#74.谨慎地实现serializable接口"></a>74.谨慎地实现Serializable接口</h5>
<pre><code data-origin="
<pre><code>代价
1.实现Serializable接口而付出的最大代价是，可改变性变低
2.增加了出现Bug和安全漏洞的可能性
3.随着类发行新的版本，相关的测试负担也增加了
</code></pre>
">代价
1.实现Serializable接口而付出的最大代价是，可改变性变低
2.增加了出现Bug和安全漏洞的可能性
3.随着类发行新的版本，相关的测试负担也增加了
</code></pre>
<h5 id="75.考虑使用自定义的序列化形式"><a name="75.考虑使用自定义的序列化形式" href="#75.考虑使用自定义的序列化形式"></a>75.考虑使用自定义的序列化形式</h5>
<h5 id="76.保护性地编写readobject方法"><a name="76.保护性地编写readobject方法" href="#76.保护性地编写readobject方法"></a>76.保护性地编写readObject方法</h5>
<h5 id="77.对于实例控制，枚举类型优先于readresolve"><a name="77.对于实例控制，枚举类型优先于readresolve" href="#77.对于实例控制，枚举类型优先于readresolve"></a>77.对于实例控制，枚举类型优先于readResolve</h5>
<h5 id="78.考虑用序列化代理代替序列化实例"><a name="78.考虑用序列化代理代替序列化实例" href="#78.考虑用序列化代理代替序列化实例"></a>78.考虑用序列化代理代替序列化实例</h5><img src ="http://www.blogjava.net/lucky/aggbug/431682.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lucky/" target="_blank">Lucky</a> 2016-08-26 17:45 <a href="http://www.blogjava.net/lucky/archive/2016/08/26/431682.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解決EXP-00091</title><link>http://www.blogjava.net/lucky/archive/2013/04/16/397888.html</link><dc:creator>Lucky</dc:creator><author>Lucky</author><pubDate>Mon, 15 Apr 2013 16:44:00 GMT</pubDate><guid>http://www.blogjava.net/lucky/archive/2013/04/16/397888.html</guid><wfw:comment>http://www.blogjava.net/lucky/comments/397888.html</wfw:comment><comments>http://www.blogjava.net/lucky/archive/2013/04/16/397888.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lucky/comments/commentRss/397888.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lucky/services/trackbacks/397888.html</trackback:ping><description><![CDATA[<div><span style="font-family: 宋体;">原文请参照<br /><a href="http://blog.csdn.net/wangjialiang/article/details/6051817">http://blog.csdn.net/wangjialiang/article/details/6051817</a><br /><br />说明：</span><br /><span>EXP-00091: </span><br /><span style="font-family: 宋体;">出口可疑的统计。</span><br /><span>EXP-00091: Exporting questionable statistics.<br /></span><span style="font-family: 宋体;">产生：</span><br /><span style="font-family: 宋体;">在数据库的服务器端和客户端字符集不同的情况下，导出</span><br />(dump)<br /><span style="font-family: 宋体;">数据库表时，会产生这个错误。虽然产生这个错误，但好像对导入没有影响。</span><br /><span style="font-family: 宋体;">解决：</span><br /><span style="font-family: 宋体;">服务器端数据的字符集查看方法：</span><br /><span>1</span><span style="font-family: 宋体;">、打开</span>SQLPLUS<span style="font-family: 宋体;">，用</span>sys<span style="font-family: 宋体;">用户登录。</span><br /><span>2</span><span style="font-family: 宋体;">、执行<br /></span><span>SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';</span><br /><span style="font-family: 宋体;">其中</span><br />'NLS_CHARACTERSET'<br /><span style="font-family: 宋体;">必须为大写。</span><br /><span>PARAMETER<br />-------------------<br />VALUE<br />--------------------<br />NLS_CHARACTERSET<br />ZHS16GBK<br /></span><span style="font-family: 宋体;">（</span><span>Linux)<br /></span><span style="font-family: 宋体;">在</span>oracle<span style="font-family: 宋体;">用户的</span>.bash_profile<span style="font-family: 宋体;">文件加入</span><span><br />export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK</span><br /><span style="font-family: 宋体;">（</span>Windows<span style="font-family: 宋体;">）</span><span><br />1</span><span style="font-family: 宋体;">、打开注册表，依次进入</span><br />HKEY_LOCAL_MACHINE&#8594;SOFTWARE&#8594;ORACLE&#8594;HOME0<br /><span style="font-family: 宋体;">目录。</span><br /><span>2</span><span style="font-family: 宋体;">、察看</span>NLS_LANG<span style="font-family: 宋体;">的值。</span><br /><span>3</span><span style="font-family: 宋体;">、将其修改为数据库服务器端字符集相同的字符。</span><br /><span style="font-family: 宋体;">或</span><br /><span style="font-family: 宋体;">临时设定环境变量</span><span><br />set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK</span><br /></div><br /><img src ="http://www.blogjava.net/lucky/aggbug/397888.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lucky/" target="_blank">Lucky</a> 2013-04-16 00:44 <a href="http://www.blogjava.net/lucky/archive/2013/04/16/397888.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> Oracle 11G在用EXP 导出时，空表不能导出解决 </title><link>http://www.blogjava.net/lucky/archive/2013/04/15/397887.html</link><dc:creator>Lucky</dc:creator><author>Lucky</author><pubDate>Mon, 15 Apr 2013 15:39:00 GMT</pubDate><guid>http://www.blogjava.net/lucky/archive/2013/04/15/397887.html</guid><wfw:comment>http://www.blogjava.net/lucky/comments/397887.html</wfw:comment><comments>http://www.blogjava.net/lucky/archive/2013/04/15/397887.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lucky/comments/commentRss/397887.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lucky/services/trackbacks/397887.html</trackback:ping><description><![CDATA[<div lh22?=""><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 原创作品，允许转载，转载时请务必以超链接形式标明文章 <a style="text-decoration: underline;" href="http://wanwentao.blog.51cto.com/2406488/545154" target="_blank">原始出处</a> 、作者信息和本声明。否则将追究法律责任。<a href="http://wanwentao.blog.51cto.com/2406488/545154">http://wanwentao.blog.51cto.com/2406488/545154</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </div>　　11G中有个新特性，当表无数据时，不分配segment，以节省空间<br /><div><p>　　解决方法：</p><p>　<strong>　1、insert一行，再rollback就产生segment了。</strong></p><p>　　该方法是在在空表中插入数据，再删除，则产生segment。导出时则可导出空表。</p><p>　<strong>　2、设置deferred_segment_creation 参数 </strong></p><p><strong><span>show parameter deferred_segment_creation <br />NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE <br />------------------------------------ ----------- ------------------------------ <br />deferred_segment_creation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean&nbsp;&nbsp;&nbsp;&nbsp; TRUE <br />SQL&gt; alter system set deferred_segment_creation=false; <br /></span><span style="font-family: 宋体;">系统已更改。</span><span> <br />SQL&gt; show parameter deferred_segment_creation <br />NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE <br />----------------------------------- ----------- ------------------------------ <br />deferred_segment_creation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean&nbsp;&nbsp;&nbsp;&nbsp; FALSE</span></strong></p><p>　　该参数值默认是TRUE，当改为FALSE时，无论是空表还是非空表，都分配segment。</p><p>　　需注意的是：该值设置后对以前导入的空表不产生作用，仍不能导出，只能对后面新增的表产生作用。如需导出之前的空表，只能用第一种方法。</p><p>搞了我好久，最后查到这个方法。</p><p>先查询一下当前用户下的所有空表</p><p><strong><span style="color: red; font-size: 12pt;">select table_name from user_tables where NUM_ROWS=0;</span></strong></p><p>用以下这句查找空表</p><p><strong>select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0</strong></p><p>把查询结果导出，执行导出的语句</p><p>'ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'<br /><br />-----------------------------------------------------------<br />alter table AQ$_AQ$_MEM_MC_H allocate extent;<br />alter table AQ$_AQ$_MEM_MC_G allocate extent;<br />alter table AQ$_AQ$_MEM_MC_I allocate extent;<br />alter table AQ$_AQ_PROP_TABLE_T allocate extent;<br />alter table AQ$_AQ_PROP_TABLE_H allocate extent;<br />alter table AQ$_AQ_PROP_TABLE_G allocate extent;<br />alter table AQ$_AQ_PROP_TABLE_I allocate extent;<br />alter table AQ$_KUPC$DATAPUMP_QUETAB_T allocate extent;<br />alter table AQ$_KUPC$DATAPUMP_QUETAB_H allocate extent;<br />alter table AQ$_KUPC$DATAPUMP_QUETAB_G allocate extent;<br />alter table AQ$_KUPC$DATAPUMP_QUETAB_I allocate extent;</p><p>'ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'<br />-----------------------------------------------------------<br />alter table AQ$_SYS$SERVICE_METRICS_TAB_T allocate extent;<br />alter table AQ$_SYS$SERVICE_METRICS_TAB_H allocate extent;<br />alter table AQ$_SYS$SERVICE_METRICS_TAB_G allocate extent;<br />alter table AQ$_SYS$SERVICE_METRICS_TAB_I allocate extent;</p><p>然后再执行</p><p>exp 用户名/密码@数据库名 file=/home/oracle/exp.dmp log=/home/oracle/exp_smsrun.log</p><br /><p>　　成功！</p></div><img src ="http://www.blogjava.net/lucky/aggbug/397887.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lucky/" target="_blank">Lucky</a> 2013-04-15 23:39 <a href="http://www.blogjava.net/lucky/archive/2013/04/15/397887.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>项目百态 笔记 </title><link>http://www.blogjava.net/lucky/archive/2012/08/28/386413.html</link><dc:creator>Lucky</dc:creator><author>Lucky</author><pubDate>Tue, 28 Aug 2012 02:47:00 GMT</pubDate><guid>http://www.blogjava.net/lucky/archive/2012/08/28/386413.html</guid><wfw:comment>http://www.blogjava.net/lucky/comments/386413.html</wfw:comment><comments>http://www.blogjava.net/lucky/archive/2012/08/28/386413.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lucky/comments/commentRss/386413.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lucky/services/trackbacks/386413.html</trackback:ping><description><![CDATA[<div>模式1 玩的就是心跳组织相信一直处于忙碌状态才是正常的，事情没有优先级，只要是紧急的事件，就会去做，没有一种任务管理的机制。这实际会降低开发效率。<br />模式2 快，赶上行动力强，迭代开发，快速出原型。<br />模式3 死鱼即使所有人都知道项目不可以完成，也没人说出来。在没偿试之前，你就说不能完成，会被人认为你没信心，害怕挑战，不努力工作等。<br />模式4 欢乐的鼓掌会议完全是一种形式的，领导在讲话，而且拒绝在会议上提出的问题。<br />模式5 保姆型项目经理保姆型项目经理类似于英式保姆，负责保护项目成员，为项目成员的成长等提供帮助。对项目成员的能力了如指掌，在分派任务、制订计划等时会寻求最佳的契合点。<br />模式6 牵涉性疼痛发现不了根本问题，往往只注意到表面表现，解决了这些问题，也无法根除根本问题。<br />模式7 明日复明日紧迫感是实际行动的重要催化剂。如果目标订的过于粗，时间过于长，往往在项目的前期，成员无法感到紧迫，这个时候往往工作效率是比较低的。<br />模式8 眼神交流让成员在一起工作，让他们有眼神交流，可以更准确、清晰的传达信息，增加彼此的了解，能获得最佳的整合效果。<br />模式9 情绪戒指管理经理不是基于摆在项目面前的风险、决策和问题为汇报项目状态，而是基于团队的活动、付出和热情。<br />模式10 忠实信徒个体把某种思想派系作为真理来膜拜，与圣典稍有偏差即被认为是亵渎神灵。项目上的忠实信徒会让工作止步不前，他们不去专注于内容，反而为方法争执不休。<br />模式11 出租灵魂从业者愿意放弃长期练就的技能或者技术。当某个情景下，用另一种技术能更好的实现当前任务时，那就采用这种技术，即使让你放弃长期坚持甚至精通的技术并不容易，你要能忍受暂时的不适。<br />模式12 系统开发旅鼠周期虽然组织流程很明显地需要定制，但项目团队依然盲从于未定制的标准。<br />模式13 清空&#8220;板凳&#8221;组织变得如此精简，以致于失去任何一个关键人物，都会演变成一场灾难。所以，要预留一些板凳人员，他们技能较全面，在任一个关键人物离开时，他们都能顶上去，以防止项目的中断。<br />模式14 面对面分布式团队通过各地之间大量的面对面交流机会，以建立使远距离团队合作成为可能的熟悉感和可靠感。(视频会议也有一定效果)让分布式团队成员有面对面的机会，<br />面对面可以增加他们的熟悉度与信任感，在后续一起合作时会更高效。如果缺乏面对面的交流，其中一个团队往往会以高傲的态度对待其它地点的团队。<br />模式15 我给了你凿子，可你为什么不是米开朗基罗经理购买工作、潜意识里希望它们可以赐予团队技能。&#8220;工具的成本不仅仅是工具的价格&#8221;。<br />拥有恰当的技能去使用工具，才是最关键的。<br />模式16 主面板强弱团队都使用主面板，但用的目的及方法不一样，面板表达的意义也是不同的。团队前进动力并非缘于对成功一腔热情，而是对批评心有余悸。<br />团队成员从他们的领导那里秉承了这一特点。<br />模式17 无休止的集体会议允许无休止的争辩，最终肯定无法达到任何一项决定。一定要有决策机制，不能允许无休止的争辩。<br />要让成员认识到，最终，一旦做出决定，大家都要无条件接受。<br />模式18 幼犬和老狗年轻人更有活力，可以带动组织里年龄比较大的员工，让他们也充满活力，老年人这时候往往不敢粗心大意，应付工作等。<br />模式19 影评人影评人是团队成员或者公司内部的旁观者，他们认为自己给项目带来的价值在于指出问题所在或者将会出现问题的地方，<br />却不把解决问题视为自己的职责。影评人的特征：即使自己所处的项目失败了，他们也能成功。<br />(认为自己指出了项目中的缺点，从而获得了个人成功)影评人认为自己的成功与项目的成功是泾渭分明的，而且经常快到项目结束时才参与进来。<br />之所以存在&#8220;影评人&#8221;，原因是有些组织的管理文化允许甚至是赞扬影评人，鼓励影评人的出现。<br />模式20 单一问责项目的每件任务都清晰地映射到仅仅承担单一职责的个体身上。每个人都十分清楚自己承担的职责，以及自己同事承担的职责。插曲 <br />项目秘密听上去无关痛痒的词句背后，是并不友善的深层含义。比如&#8220;进度表有些激进&#8221;往往意味着&#8220;我们有麻烦了&#8221;，&#8220;这是一次学习经历&#8221;意味着&#8220;我们真的搞砸了&#8221;等。<br />模式21 <br />苏式风格交付的产品包含了客户要求的功能，但客户并不喜欢。原因是缺乏与客户的沟通，产品出来之后，往往与客户认为的不同。<br />模式22 <br />自然权力能力吸引权力。即如果自己在某方面或某领域具有相应的很强的能力，则应该有制定相应决策的能力，而并不是仅仅有领导来决策所有。<br />模式23 <br />万籁俱寂的办公室办公室太安静，凸显出团队已经失去了活力源泉。<br />模式24 <br />白线通过声明需要修改的系统/业务领域与直接交互的外部世界之间的每个接口来定义项目范围。一旦该工作完成，系统范围就将不再有任何的歧义，你已经借助于接口绘出了白线。<br />模式25 沉默即同意利害相干人无法区分屈服的沉默和同意。<br />模式26 稻草人快速完成原型开发，以获得早期的反馈和认识。<br />模式27 <br />伪造的紧急性仅仅是为了遏制成本，项目的截止日期被强行安排得非常紧张。信徒的紧急性会引发伪造风险。容易引导组织没有抓住真正的商业机会去从事高价值的项目，而高价值的<br />项目风险是值得去尝试的。<br />模式28 <br />时间清除了你的手牌经理在项目初期的决定对项目的影响最大。所有优秀的项目经理都要知道何时需要亮出自己的牌，好让时间无法赢过他们。(也经常因为前期项目没有紧迫感，导<br />致项目会出现延期、交付质量差等问题&#8230;&#8230;)模式29 Lewis与Clark项目团队在前期投入精力，探索新领域并发掘潜能。前期进行项目预研，判断可行性。<br />模式30 <br />短铅笔连续不断的削减成本，开始影响到组织完成任务的能力。<br />模式31 节奏团队通过定期交付，建立起工作的节奏。 (迭代)模式32 <br />加班预兆如果在早期项目成员就已经开始加班，很有可能说明项目已经出现了问题，开发人员可能知道项目是不可能完成的了，而且恐惧文化充斥于组织内部，人们怕项目失败会承受<br />责备，所以，通过不断的加班，来确保当项目失败时自己不会受到责备。<br />模式33 <br />扑克之夜来自组织各个部门的雇员聚集在一起，参加与工作角色并无关联的活动。可以让人们之间增加联系，多了一份朋友关系，在工作中更加容易沟通、交流等，为别人做起事来也更<br />积极。<br />模式34 错误的质量关卡项目中的质量保证工作着眼于格式检查，而这些工作根本不能给真正的产品质量带来任何改善。(只注意形式，不注重真正的内容)模式35 <br />测试之前先测试让测试贯穿于整个项目。<br />模式36 <br />苹果酒屋规则项目团队成员罔顾或者绕过那些由项目工作无关人士制定的规则。成功的项目需要有一些规则和定义良好的流程。但是，规则制订者眼中的世界和规则遵守者栖息的世界<br />必须得存在耦合的地方。<br />模式37 说，然后写下来项目团队在交谈间得出了决定，然后立刻用书面形式记录下来以供交流。<br />模式38 <br />项目中贪多求全贪多求全会放慢速度，导致净收益降低。给任务安排优先级，把高价值的任务放前面，低价值的放后面。<br />模式39 <br />巨神阿特拉斯团队领袖(几乎)善长一切事情。他们也是精神领袖，带领着项目成员完成一个个的项目，但领袖起到非常大的决定作用，而且自己完成很多细节工作。不过一旦这个领袖<br />离开了团队，就会出现很多问题了，因为团队成员已经完全依赖于那个领袖了，很难再为团队找到这样的领袖。不过对这个领袖本身而已，因为事无巨细，所以可能无法带领更大的项目<br />团队。如果要带领更大的团队，需要放权，让更多的团队成员来决策、执行。<br />模式40 所有人都穿着衣服是有原因的信息冗余会导致注意力涣散。<br />模式41 <br />同事预审在招聘过程中，让将来与应聘者共事的人也参与进来。如果大家都不喜欢应聘者时，那就毫无疑问pass掉。<br />模式42 <br />浮潜与水肺潜水不同形式的分析活动贯穿项目的整个生命周期。侦察时用浮潜，审查时用水肺潜水。<br />模式43 <br />一切都是该死的接口要强调接口，接口极易出现问题。防止出现任何一个工作组在任何一个接口上做出不恰当假设的可能性。康威定律：产品反映了制造该产品的组织结构。对于接口，<br />这一点尤为正确：项目中复杂的人类接口容易导致复杂的产品接口。<br />模式44 <br />蓝色区域蓝色区域即是那些没有明确要要做的事情，而又没有被明确禁止的。组织里存在这样一种人是幸运的，在完成自己本职的工作基础上，会自觉去完成蓝色区域中的任务，他们<br />以项目利益最大化为指导原则。<br />模式45 <br />消息美化坏消息在组织里没有被准确地向上传达。因为人们总是讨厌那些传递坏消息的人，所以人们源于恐惧，在坏消息传递的过程中，会让消息看起来没那么坏。所以在传递过程中，<br />坏消息慢慢的就变成了普通消息，甚至是好消息。<br />模式46 <br />慢慢地道出事实公司文化迫使人们把令人不安的消息埋在心底。因为如果是你发现了杂乱不堪的现象，领导可能就会让你去清理，所以就会导致很多人发现问题之后保持沉默。<br />模式47<br />&nbsp;残局游戏迭代开发模式48 音乐制作人根据员工兴趣，让他们组织起来，也为他们提供展现的平台。<br />模式49 <br />记者记者是指那些把准确报告这个目标与让项目成功这个目标完全分开的项目经理。记者类似于组织里面的&#8220;影评人&#8221;，把自己的成功与项目成功分开。<br />模式50 <br />空椅子添加一把椅子，为专门负责协调所有子项目的人准备的。<br />模式51 我的堂兄文尼争论的关键在于说服别人。<br />模式52 <br />特性汤产品夸耀自己繁多的零碎特性，其中很多对于解决客户真正的业务需求几乎毫无帮助。要避免不断往产品中添加无关紧要的特性。<br />模式53 <br />数据质量数据本身有错误，却去寻找更好的软件来处理数据。而不是从根本上来解决数据错误的问题。<br />模式54 <br />本一些人对工作的热爱大于对薪水的热爱。要留住这些人，不要因为他们热爱工作，就把一些离职人员的工作都交给他们，当他们工作压力太大时，要么对工作的兴趣消失，要么会离职<br />走人。<br />模式55 礼数小姐要对事不对人，不要拒绝批评。<br />模式56 全神贯注尽量专注于一个项目，如果同时处理多个项目时，在项目之间切换是会有一定的浪费的。<br />模式57 <br />&#8220;棒球不相信眼泪！&#8221;组织文化不鼓励人们表露情绪，进而使得冲突只能暗中进行。应该让员工表露自己的情绪，激情有时会掀起怒火，但扑灭这怒火是达成宏伟目标必须偿付的代价之<br />一。<br />模式58 铁窗喋血把所有的未能达成、和谐的情景都归咎于沟通不足。沟通成了替罪羊。 冲突其实是自然的，要把注意力放在有效解决冲突的技巧上。<br />模式59 <br />按期交付，每回都不例外不能完全以交付上期为标准，这样容易导致为了赶时间交付，即使质量还不达标的时候。版本后期容易出问题。<br />模式60 <br />食物++项目团队成员定期在一起享用他们的食物，而且如果可能，整个团队会在一起策划和准备这些食物。实际上是通过成功完成&#8220;做饭、吃饭&#8221;这样的日常小项目，来增加团队的凝聚<br />力，提高活力等。<br />模式61 没人在意的交付物没有人在意的交付物，不要去开发。<br />模式62 <br />隐藏的美&#8220;美到极致不是增无可增，而是减无可减。&#8221;所有设计，都存在美学元素。要懂得欣赏别人工作成果中的美。<br />模式63 <br />我不知道组织营造出能讲真话的氛围，即使讲真话意味着无法立即给予答复。如果说出&#8220;我不知道&#8221;，会提出当前存在的问题，可能别人有思路或很容易解决。<br />模式64 <br />乌比冈湖儿童经理给出的绩效排名不能有效地区分出执行力的强弱。那些能力很强的，没有得到相应的绩效，而那些能力弱的，因为慢慢分给他们更少的工作，当工作少到一定程度之<br />后，他们可能也能完成自己的工作，所以，他们的绩效可能也不差。<br />模式65 <br />互相教学项目的利害相干人明白每个人都能从其他人那里学到很多东西。每个人都能从其他人那里学到很多东西。消费者和开发者要各自向对方学习需求，必须深刻理解消费者的需求<br />才能产生正确的产品和服务。<br />模式66 <br />意气相投游击队，他们非常快速的完成所有事情。他们允许开发流程的简化，让你觉得软件开发流程中的很多部分其实没必要那么正式。他们可以有高的惊人的生产率，也可以惊人地<br />富于破坏性，这取决于如何引领和指导他们。这样的团队是逐渐形成的，通常围绕着一两位引人瞩目的领袖人物形成的。<br />模式67 <br />十字槽螺丝帽显而易见的想法可能不会很快被接受。<br />模式68 可预测的创新团队在自身对创新的需求和老板对可预测性的需求之间做出平衡。<br />模式69 <br />玛莉莲&#183;明斯特在有些组织中，开发人员就是君王，而在有些组织中，他们只是无名小卒。即同样的人，因为所处的环境不同，待遇什么也是不同的。插曲 剪辑掉的底片模式70 <br />布朗运动在项目愿景尚不明朗的情况下，团队成员就被添加到项目里面。在前期都加进来，为了让员工都利用起来，往往会使决策很仓促，项目就会更乱。(在《最后期限》中有对这块的<br />详细论述)模式71 <br />大声地、清楚地要清晰的表达项目的目标。拥有正确的目标至关重要。让每个人都始终意识到自己的目标会给项目以及自己开发的产品产生巨大的影响。<br />模式72 <br />安全阀为了化解工作中的紧张气氛，团队发明了纾解压力的活动，并深化为团队生活的一部分。做为经理，如果发现团队在安全阀活动上面花了一点时间，不要反对，也不要鼓励，因为<br />这是团队自己的娱乐时间，他们清楚怎么利用这段时间。<br />模式73 巴别塔开发出团队成员和利害相干人都能理解的通用语音。<br />模式74 <br />惊喜死死抓住奖励和资金模式的组织从来得不到奖励。<br />模式75 冰箱门团队成员定期把各自的工作成果展现给团队所有的人。<br />模式76 <br />明天会是晴空万里经理相信未来的平均进度会超过过去的平均进度。因为之前遇到过很多突发事件，导致的进度比较慢，所以经理认为后续进度会赶上来。但往往没有意识到，后面也<br />会有很多突发事件，所以在制定计划时，就要考虑好。<br />模式77 堆积利害相干人，不断的往项目中添加特性。 (类似于特性汤)模式78 <br />变更时节迭代！即如果有需求变更，也要放到下个迭代中，但前提是迭代周期不要太长。<br />模式79 造纸厂组织通过迄今产出文档的重量和数量来衡量进度。<br />模式80 <br />离岸荒唐事领导们被低廉的工人薪资所吸引，启动了离岸开发计划，使得在各个开发地点之间沟通的难度剧增。<br />模式81 <br />作战室如果有可能，为项目组提供一个作战室，里面贴满了进度、待办任务之类的，让团队成员进去之后明确的感受到当前项目的进度等。<br />模式82 <br />什么味道所有的员工都需要知道他们的组织闻起来如何，从而可以决定做出如何反应。<br />模式83 <br />不从教训中学习团队认识到自己的错误，却一次一次地重蹈覆辙。学而不思则罔，需要认真的总结过去的失败，然后制定下一步改进的措施，以及执行。<br />模式84 <br />不成熟的想法神圣不可侵犯团队愿意鼓励、呵护即使看起来不成熟的想法。<br />模式85 <br />渗漏人们有时候为了让自己看起来进度正常，可能会在尝试比较难以完成的任务之后，转而去实现容易实现的任务，以此在前期可以表现正常。但这可以隐藏风险，到后期才会暴露出<br />来。<br />模式86 <br />模板僵尸项目团队使用模板---而不是对于产品交付所必需的、经过深思熟虑的iytk---来驱动自己的工作。流程是死的，人是活的，按需进行调整，不能顽固的完全按照模板来，灵<br />活的处理一切。</div><img src ="http://www.blogjava.net/lucky/aggbug/386413.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lucky/" target="_blank">Lucky</a> 2012-08-28 10:47 <a href="http://www.blogjava.net/lucky/archive/2012/08/28/386413.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第4章　ファイルとプロセスの管理</title><link>http://www.blogjava.net/lucky/archive/2012/08/02/384604.html</link><dc:creator>Lucky</dc:creator><author>Lucky</author><pubDate>Thu, 02 Aug 2012 05:33:00 GMT</pubDate><guid>http://www.blogjava.net/lucky/archive/2012/08/02/384604.html</guid><wfw:comment>http://www.blogjava.net/lucky/comments/384604.html</wfw:comment><comments>http://www.blogjava.net/lucky/archive/2012/08/02/384604.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lucky/comments/commentRss/384604.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lucky/services/trackbacks/384604.html</trackback:ping><description><![CDATA[<div>第4章　ファイルとプロセスの管理<br />4.1 基本的なファイル管理<br />4.1.1　ファイルの圧縮、解凍<br />gzip オプション　ファイル名<br />-d　圧縮ファイルを展開する<br />-c 標準出力へ出力する<br />-r ディレクト内のファイルをすべて圧縮する<br /><br />4.1.2　アーカイブの作成、展開<br />複数のファイルをまとめたファイルをアーカイブといいます。<br />tarコマンド<br />tarコマンドの主なオプション<br />-c アーカイブを作成<br />-x　アーカイブからファイルを取り出す<br />-t アーカイブの内容を確認する<br />-f ファイル名を指定する<br />-z gzipによる圧縮をサポートする<br />-j bzip2による圧縮をサポートする<br />-v 詳細な情報を表示する<br /><br />cpioコマンド<br />ファイルをアーカイブファイルにコポーしたり、アーカイブからファイルをコポーします。<br /><br />ddコマンド<br />入力側に指定したファイルの内容を、ファイルもしくは標準出力に送ります。<br />4.2 パーミッションの設定<br />4.2.1　所有者<br />アクセス件の変更<br />アクセス権を変更するには、chmodコマンドを使います。<br />chmod オプション　アクセス権　ファイル名<br /><br />-R 指定したディレクト以下にある全ファイルのアクセス権を変更する<br />u 所有者<br />g グループ<br />o その他ユーザー<br />a すべてのユーザー<br /><br />+ 権限を追加<br />- 権限を削除<br />= 権限を指定<br /><br />r 読み取り<br />w 書き込み<br />x　実行<br />s SUIDもしくはSGID<br />t すてぃキービット<br /><br />4.2.5 デフォルトのアクセス権<br />umask　マスク値<br />4.3 ファイルの所有者管理<br />4.3.1 所有者の変更<br />chown -R　指定したディレクトりとその中にある全ファイルの所有者を変更する<br />chgrp グループの変更<br />4.4.1 ハードリンク<br />4.4.2　シンボリックリンク<br />4.4.3　リンクの作成<br />ln オプション　リンク元　リンクファイル<br />-s シンボリックリンクを作成<br />4.5 プロセス管理<br />4.5.1　プロセスの監視<br />ps オプション<br />a ほかのユーザーのプロセスも表示する<br />f 親子関係をツリー状に表示する<br />u　ユーザー名も表示する<br />x　制御端末のないデーモンなどのプロセスも表示する<br />-e　すべてのプロセスを表示する<br />-l　詳細な情報を表示する<br />-p PID　特定のPIDのプロセス情報のみ表示する<br /><br />top<br />pstree<br />kill - PID<br />kill -s PID<br />kill -SIG PID<br />HUP 　ハングアップ<br />INT 2　割り込み<br />KILL 9 強制終了<br />TERM 15　終了<br />CONT 18　停止しているプロセスを再開<br />STOP 19 一時停止<br />killall - プロセス名<br />killall -s プロセス名<br />4.5.3 ジョブ管理<br />4.6　プロセスの実行優先度<br />nice -n ナイス値　コマンド<br />renice ナイス値　<br /><br />第5章　デバイスとLinuxファイルシステム<br />/bin /sbin システムに必要なコマンド、プログラム<br />/etc　各種設定<br />/lib ライブラリ<br />/dev デバイスファイル<br />fdisk コマンド<br />fdisk -l デバイス名<br />パーティションテーブルの状態を表示しています。<br />fdiskコマンドのサブ子アンド<br />l&nbsp; 表示<br />n　作成<br />d　削除<br />p　テーブルを表示<br />t　変更<br />a　ブートフラグをオン/オフする<br />w　変更を保存<br />q　　変更を保存しない<br />m　ヘルプメニューを表示<br /><br />５．２．１<br />df　オプション　デバイス名<br />-h&nbsp; 容量を適切な単位で表示する<br />-H　<br />-k　　容量をキロバイト単位で表示する<br />-i　<br /><br />du オプション　ファイル名/ディレクトリ名<br />duコマンドのオプション<br />-a ディレクトリ以外にファイルについても表示する<br />-l　リンクを含めて集計<br />-c　すべての容量の合計を表示する<br />-k<br />-m<br />-s<br />-S<br /><br />fsck　オプション　デバイス名<br />-t　ファイルシステム名　種類を指定<br />-a 自動的に修複<br />-r 対話的に修複を実行<br />-A <br />-N 実際には実行せず何が行われるかのみ表示<br />5.2.3　ファイルシステムの管理<br />tune2fs<br />-c チェックなしでマウントできる最大回数を指定する <br />-i　ファイルシステムをチェックする最大の時間間隔を指定する<br />-j<br />-L<br /><br />５．３　ファイルシステムのマウントとアンマウント<br />５．３．１　マウントの仕組み<br />５．３．３　マウントアンマウント<br />mountコマンド<br />mount オプション<br />-a /etc/fstab<br />-t ファイルシステムの種類を指定する<br />-o マウントオプションを指定する<br />unmount <br />-a<br />-t<br />5.4 ディスククォータの管理<br />クォータ<br /><br />quotaコマンド<br />quota -u オプション　ユーザー名<br />quota -g オプション　グループ名<br /><br />quotacheck<br />quotaon<br />quotaoff<br /><br />5.5.2 ファイルの検索<br /><br />find検索<br />find　検索ディレクトリ 検索式<br />-name&nbsp; ファイル名で検索する<br />-atime　最終アクセス時刻で検索する<br />-mtime　最終更新時刻で検索する<br />-perm　アクセス権で<br />-size<br />-type<br />-user<br />-print<br />-exec<br /><br />locateコマンド<br />予め作成されたあデータベースに基づいて、指定されたパターンに一致する<br />ファイルを検索します。<br />locate　検索パターン<br />updatedb コマンド<br />whick コマンド<br />whereis<br />type<br /></div><img src ="http://www.blogjava.net/lucky/aggbug/384604.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lucky/" target="_blank">Lucky</a> 2012-08-02 13:33 <a href="http://www.blogjava.net/lucky/archive/2012/08/02/384604.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GNU＆UNIXコマンド</title><link>http://www.blogjava.net/lucky/archive/2012/07/26/384045.html</link><dc:creator>Lucky</dc:creator><author>Lucky</author><pubDate>Thu, 26 Jul 2012 05:01:00 GMT</pubDate><guid>http://www.blogjava.net/lucky/archive/2012/07/26/384045.html</guid><wfw:comment>http://www.blogjava.net/lucky/comments/384045.html</wfw:comment><comments>http://www.blogjava.net/lucky/archive/2012/07/26/384045.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lucky/comments/commentRss/384045.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lucky/services/trackbacks/384045.html</trackback:ping><description><![CDATA[<div>GNU＆UNIXコマンド<br />3.1<br />一般ユーザーの場合とスーパーユーザーの場合では、プロンプトが異なります。<br />シェルのプロンプト表示は環境変数PS1で設定できます。<br />カーソルの移動<br />Ctrl＋A　カーソルが行頭に移動<br />Ctrl＋E　カーソルが行尾に移動<br />コマンドラインの編集<br />Ctrl＋D　カーソル部分の1文字を削除します<br />Ctrl＋H　カーソルの左側にある1文字を削除します<br />Ctrl+L 　一旦画面をクリアしてから、カレント行を再表示します。<br />3.1.3　シェル変数と環境変数<br />シェル変数の有効範囲は、その変数を定義したしゃるのみになります。<br />環境変数は、その変数を定義したシェル上、及びそのシェルで実行されるプログラムからも参照することのできる変数です。<br />主な環境変数<br />PATH　コマンドやプログラムを検索するディレクトリリスト<br />PWD　カレントディレクトリ<br />HOSTNAME　ホスト名<br />USER　現在のユーザー<br />LANG　ロケール<br />HOME　カレントユーザーのホームディレクトリ<br />LOGNAME　ログインシェルのユーザー名<br />PS1　　プロンプトの表示文字列<br />PS2　　複数行にわたる入力時のプロンプト<br />HISTSIZE　コマンド履歴の最大値<br />HISTFILE　コマンド履歴を格納するファイル<br />TERM　端末の種類<br />変数名＝値<br />echo　「文字列または＄変数名」<br />unset 変数名<br />定義されている環境変数を一覧ひょいうじするには、envコマンドやprintenvコマンドを使います。<br />環境変数とシェル変数を両方表示したい場合、setコマンドを使います。<br />シェル変数は新たに起動したシェルから参照することはできませんが、exportコマンドでエクスポートすることによって参照できるようになります。<br />export 変数名[=値]<br />3.1.4 環境変数PATH<br />環境変数PATHにパスを追加するには、.bash profileなどの環境設定ファイルのPATH設定を修正するか、<br />PATH=PATH:追加するディレクトリ名<br />カレントディレクトリにパスが通っていない場合、カレントディレクトリにあるプログラムを実行するには、プログラム名の前にカレントディレクトリを意味するを明示する必要があります。<br /><br />３．１．５　コマンドの実行<br />コマンドを「；」で区切りったバイ、<br />&amp;&amp;　コマンド１が正常に終了したときだけコマンド２が実行されます<br />||　　コマンド１が正常に終了しなかっただけコマンド２が実行されます<br />&#8217;　単一引用符の中は、すべて文字列であると解釈されます<br />"　二重引用符<br />　　二重引用符内に変数があれば、その変数の内容が展開されます。<br />3.1.7 コマンド履歴<br />history　コマンド<br />!　履歴番号<br />man<br />-a すべてのセクションのマニュアルを表示する<br />-f　指定されたキーワードを含むを表示する<br />-k　指定されたキーワードを含むドキュメントを表示する<br />-w　マニュアルの置かれているディレクトリを表示する<br />セクション<br />1&nbsp; ユーザーコマンド<br />2　システムコール<br />3　ライブラリ<br />4　デバイスファイル<br />5　ファイルフォーマット<br />6　ゲーム<br />7　その他<br />8　システム管理コマンド<br />9　Linux独自のカーネル用ドキュメント<br />man -f<br />whatis<br />aproposコマンド、-k及び-fオプション付きのmanコマンドはいずれもwhatデータベースを参照します。<br />3.1.9　ファイル操作コマンド<br />lsコマンド<br />ls　コマンドの主なオプション<br />-a&nbsp;&nbsp; &nbsp;.から始まるファイルも表示する<br />-A　<br />-d　ディレクトリ自身の情報を表示する<br />-F　ファイルの種類も表示する<br />-i　　iノート番号を表示する<br />-l　　ファイルの詳細な情報を表示する<br />-t　　日付順に表示する<br />cpコマンド<br />cp オプション コピー元ファイル名　コピー先ファイル名<br />cpコマンドの主なオプション<br />-f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; コピー先に同名のファイルがあれば上書きする<br />-i　　同名のファイルがあれば確認する<br />-p　ファイルの属性をほう<br />-r -R　ディレクトリ内を再帰できにコピーする<br />mv　コマンド<br />-f&nbsp; 同名のファイルがあれば上書きする<br />-i 　同名のファイルがあれば確認する<br />mkdirコマンド<br />ーｍ　指定したアクセス件でディレクトリを作成する<br />-p 必要なら親ディレクトリも同時に作成する<br /><br />ｒｍコマンド<br />-f　　ユーザーへの確認なしに削除する<br />-i　　削除する前に確認する<br />-r,-R　再帰的にディレクトリ全体を削除する<br /><br />rmdirコマンド<br />-p 複数階層の空ディレクトリを削除する<br />touch コマンド<br />-t　 タイムスタンプ変更する<br />-a　アクセス時刻だけ変更する<br />-m　修正時刻だけ変更する<br />fileコマンド<br />ファイルの種別を表示します。<br />3.2　パイプとリダイレクト<br />3.2.1　標準入出力<br />0&nbsp; 標準入力　キーボード<br />1　標準出力　画面<br />2　標準エラー出力　画面<br />teeコマンド<br />teeコマンドは、標準入力から読み込み、それをファイルと標準出力へとT字<br />ls -l |tee lslog |wc -l<br />3.3 テキスト処理フィルタ<br />cat ファイル内容を表示します。<br />-n　各行の左端に行番号を付加する<br />cat file1 file2 &gt; newfile<br />nlコマンド<br />nlコマンド<br />&nbsp; テキストファイルの一部または全部に行番号を付けて表示します。<br />&nbsp; ヘッダ、本文、フッタの部品に分けて行番号を付加することができます。<br />&nbsp; nlコマンドの主なオプション<br />&nbsp; -b　形式　指定した形式で本文に行番号を付加する<br />&nbsp; -h&nbsp; ヘッダ<br />&nbsp; -f&nbsp; フッタ<br />&nbsp;形式<br />&nbsp;a すべての行<br />&nbsp;t　空白以外の行<br />&nbsp;n　行番号の付加を中止<br />&nbsp;odコマンド<br />&nbsp;バイナリファイル内容を8進数や16進数で表示します。オプションを指定しない場合は8進数でひょうじします。<br />&nbsp;od　オプション　ファイル名<br />&nbsp;-t　出力タイプ<br />&nbsp;c ASCII文字<br />&nbsp;o　8進数<br />&nbsp;x　16進数<br />&nbsp;headコマンド<br />&nbsp;ファイルの先頭部分を表示します。オプションを指定しない場合は、先頭から10行目までを表示します。<br />&nbsp;head オプション　ファイル名<br />&nbsp;-n 行数　<br />&nbsp;-行数<br />&nbsp;-c　バイト数<br />&nbsp;tailコマンド<br />-n　指定された行数分だけ表示する<br />-行数<br />-c　バイト数<br />-f　ファイルのに追加された行を常に表示する<br />cutコマンド<br />ファイルの各行から指定したフィールドを取り出します<br />cut オプション　ファイル名<br />-c文字数　取り出す文字位置を指定する<br />-d区切り文字<br />-f　取り出すフィールドを指定する<br />joinコマンド<br />join　オプション　ファイル名１　ファイル名２<br />-jフィールド　連結するフィールドを指定する<br />Pasteコマンド<br />1つ以上のファイルを読み込んで、それぞれで一致する行を水平方向に連結します。<br />paste　オプション　ファイル名１　ファイル名２<br />tr [オプション]　「文字列１　「文字列２」」<br />-d　文字列１でマッチした文字列を削除する<br />-s　連続するパターン文字列を１文字として処理する<br />sortコマンド<br />行単位でファイル内容をソートします。デフォルトではにソートします。<br />sort　オプション　開始位置　終了位置　ファイル名<br />-b　行頭の空白は無視する<br />-f&nbsp; 大文字小文字の区別を無視する<br />-r　降順にソートする<br />-n　数字を文字ではなく数値として処理する<br />splitコマンド<br />指定されたサイズでファイルを分画します。<br />split オプション　入力ファイル名　出力ファイル名<br />-行数　入力ファイルを指定された行ごとに<br />split -100 sample.txt s}sample.<br />uniqコマンド　入力されたテキストリームの中で重複している行を調べて、重複している行は１行にまとめて出力します。<br />uniq オプション　入力ファイル　出力ファイル<br />-d　重複している行のみ出力する<br />-u　重複している行は１行にまとめて表示する<br />prコマンド<br />ファイルの書式を。<br />pr　オプション　ファイル名<br />+開始ページ<br />-h　へっだ文字列<br />-l　ページ長<br />fmtコマンド<br />テキストを決められた桁に整形します<br />fmt　オプション　ファイル名<br />-w 文字幅　1行の幅を設定する<br />expandコマンド<br />テキストファイルの中にあるタブをスペースに変換します。<br />expand　オプション　ファイル名<br />-i　行頭のタブのみ変換する<br />-t　タブ幅　タブ幅を設定する<br />unexpand　コマンド<br />行頭にある連続した空白をタブに変換します。<br />unexpand　オプション　ファイル名<br />-a 行頭以外の空白も変換する<br />-t タブ幅　タブ幅を指定する<br />wcコマンド<br />ファイルの行数、単語数、文字数を表示します。<br />wc　オプション　ファイル名<br />-c 文字数を表示する<br />-l　行数を表示する<br />-w　単語数を表示する<br />xargsコマンド<br />標準入力から受け取った文字列を引数に指定して、与えられたコマンドを実行します。<br />find . -mtime +60 -type f | xargs rm<br /><br />3.4　正規表現を使ったテキスト検索<br />3.4.1 正規表現<br />文字　正規表現の中にある文字<br />任意の１文字　任意の1文字を表すには「.」を使います。<br />文字クラス<br />＾は行頭を、「＄」は行末ｗお表します。<br />特殊文字<br />. 任意の1文字<br />*　直前の文字の0回以上の繰り返し<br />「」　－<br />＾　行頭<br />＄　行末<br />￥　次に来る文字をメタキャラクタではなく通常の文字として処理する。<br />3.4.2　grepコマンド<br />grep　オプション　検索パターン　ファイル名<br />grep　オプション　-f　ファイル名　ファイル名<br />-c パターンがマッチした行の行数だけを常時する<br />-f 検索パターンをファイルから読み込む<br />-i　大文字小文字を区別せず検索する<br />-n　検索結果と合わせて行番号も表示する<br />-v　パターンがマッチしない行を表示する<br />-E 拡張正規表現を使用する<br /><br />3.4.3 sedコマンド<br />sedは,テキストストリームに対して編集を行います。sedでは、編集する内容をコマンドやスクリプトとしてsedに指示しておき,sedはその指示に基づいてストリームの編集を行って、標準出力に編集結果を書き出します。<br />d マッチした行を削除する<br />s　パターンに基づいて置換する。gスイッチを使うと、マッチ箇所すべてを置換する<br />y　文字を変換する<br /><br />-e 次の引数はコマンドと認識する<br />-f　次の引数はスクリプトファイルと認識する<br />dコマンド<br />ファイルの複数行を削除します<br />sコマンド　s/検索パターン/置換パターン　<br />yコマンド<br />「y/検索文字/置換文字」　<br /><br /><br /><br /></div><img src ="http://www.blogjava.net/lucky/aggbug/384045.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lucky/" target="_blank">Lucky</a> 2012-07-26 13:01 <a href="http://www.blogjava.net/lucky/archive/2012/07/26/384045.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LPIC Level1</title><link>http://www.blogjava.net/lucky/archive/2012/07/18/383389.html</link><dc:creator>Lucky</dc:creator><author>Lucky</author><pubDate>Wed, 18 Jul 2012 04:25:00 GMT</pubDate><guid>http://www.blogjava.net/lucky/archive/2012/07/18/383389.html</guid><wfw:comment>http://www.blogjava.net/lucky/comments/383389.html</wfw:comment><comments>http://www.blogjava.net/lucky/archive/2012/07/18/383389.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lucky/comments/commentRss/383389.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lucky/services/trackbacks/383389.html</trackback:ping><description><![CDATA[<p>第一章　システムアーキテクチャ<br />1.1.3　デバイスの確認</p>
<p>/proc/bus/usb/* USBデバイス情報<br />/proc/cpuinfo&nbsp;CPU情報<br />/proc/interrupts IRQ情報<br />/proc/pci PCIデバイス情報<br />/proc/scsi/scsi SCSIデバイス情報</p>
<p>Linuxは、ハードウェアへのアクセスを抽象化するデバイスファイルを持っています。<br />デバイス情報を確認するためのコマンドも用意されています。<br />USBデバイスの情報を表示するには&nbsp;&nbsp;&nbsp; lsusb<br />PCIデバイスの情報を表示するには　　lspci</p>
<p>1.1.4 デバイスドライバのロード<br />Linuxでは、デバイスドライブはカーネルの一部として提供されています。<br />ロードされているカーネルモジュールを確認するには、lsmodコマンドを使います。<br />手動でロードする場合はmodprobeコマンドを実行します。</p>
<p>1.2　システムの起動<br />1.2.2　ブートオプションの指定<br />GRUBでブートオプションを指定するには、起動時の画面でAキーを押します。<br />すると、キーボートからパラメータを入力できるようになります。<br />1.2.3　起動時のイベント確認<br />dmesgコマンドを使うと、システム起動時にどのような処理が行われたのかを確認できます。<br />システムのメインログファイルである/var/log/messagesにも起動時のメッセージが記録されています。<br />1.3　ランレベルとシャットダウン<br />1.3.1　ランレベル<br />種類<br />0　　停止<br />1&nbsp;シングルユーザーモード<br />2&nbsp;マルチユーザーモード<br />3　　　マルチユーザーモード<br />4&nbsp;未使用<br />5　　マルチユーザーモード<br />6　　再起動<br />S/s　シングルユーザーモード</p>
<p>シングルユーザーモード　rootユーザーだけが利用できる状態です。<br />ランレベルの変更<br />現在のランレベルを表示するには、runlevelコマンドを使います。<br />ランレベルを変更するには、スーパーユーザーでinitコマンドもしくはtelinitコマンド<br />を使います。<br />#init 1<br />デフォルトのランレベルの設定<br />Linuxが起動すると、最初のプロセスとしてinitが実行され。<br />デフォルトのランレベルは、/etc/inittabに記述されています。</p>
<p>/etc/inittabファイルでデフォルトのランレベルを指定できます。書式も覚えておきましょう。</p>
<p>1.3.2　システムのシャットダウンと再起動<br />システムのシャットダウンや再起動は、shutdownコマンドを使って操作します。</p>
<p>shutdown [option] 時間　「メッセージ」<br />&nbsp;-h&nbsp; シャットダウン完了後にシステムを停止する<br />&nbsp;-r　シャットダウン完了後にシステムを再起動する<br />&nbsp;-f　次回起動時にｆｓｃｋをスキップする<br />&nbsp;-F　次回起動時にｆｓｃｋを必ず実行する<br />&nbsp;-k　実際にシャットダウンせず警告メッセージを通知する<br />&nbsp;-c 現在実行中のシャットダウンをキャンセルする<br />&nbsp;<br />&nbsp;第２章　Linuxのインストールとパッケージ管理<br />&nbsp;2.1　ハードディスクのレイアウト設計<br />&nbsp;ルートパーティション<br />&nbsp;さわっぷ領域<br />&nbsp;・/home<br />&nbsp;・/var<br />&nbsp;・/usr<br />&nbsp;・/boot<br />&nbsp;・スワップ領域<br />&nbsp;スワップ領域のサイズは物理メモリと同程度～2倍程度のサイズを割り当てます<br />&nbsp;用途が異なるディレクトリは別パーティションに配置するようにします。<br />&nbsp;<br />&nbsp;2.2　ブートマネージャのインストール<br />&nbsp;2.2.1　GRUB<br />&nbsp;GRUBは多機能なブートローダです。<br />&nbsp;・多数のファイルシステムを認識可能<br />&nbsp;・シェル機能を搭載し、コマンドによる高度な管理が可能<br />&nbsp;＃grub-install /dev/sda<br />&nbsp;<br />&nbsp;GRUBの設定ファイルは/boot/grub/menu.lst<br />&nbsp;timeout&nbsp; メニューを表示している時間<br />&nbsp;default　デフォルトで起動するエントリの番号<br />&nbsp;title　　　メニューに表示されるエントリ名<br />&nbsp;root　　　ルートデバイスの指定<br />&nbsp;kernel　　起動するカーネルイメージファイルと起動オプションの指定<br />&nbsp;makeactive　ルートパーティションをアクティブ化<br />&nbsp;chainloader　指定されたセクタの読み込みと実行<br />&nbsp;hiddenmenu　起動時に選択メニューを表示しない。<br />&nbsp;<br />&nbsp;2.2.2　LILO<br />&nbsp;<br />&nbsp;LILOはIntelアーキテクチャマシン用のブートローダです。<br />&nbsp;・ブートローダ<br />&nbsp;・マップインストーラ　/sbin/lilo<br />&nbsp;・マップファイル&nbsp; ディスク上の物理的なカーネルの位置を記録したファイルです。<br />&nbsp;・LILO設定ファイル　/etc/lib.confです。<br />&nbsp;<br />第一段階のブートローダは、BIOSから呼び出され、第2段階のブートローダ<br />をメモリに読み込みます。第２段階のブートローダの役割は次の通りです。<br />・ブートプロンプトを表示する<br />・読み込むカーネルを選択する<br />・カーネルをメモリ上に読み込む<br />・etc/lib.conf</p>
<p>boot　ブートセクタを含むデバイス名<br />timeout　プロンプト時の入力待ちタイムアウト時間<br />prompt　ブート時にプロンプトを表示して入力を要求する<br />default　デフォルトで起動するカーネルの食べる<br />append　起動時にカーネルに渡すパラメータ<br />read-only　ルートファイルしセムを読み込み専用でマウントする<br />map　マップファイルの指定<br />image　ブートイメージのラベル<br />label　ブートイメージのラベル<br />initrd 初期RAMDISKの読み込み指定<br />root　ルートファイルシステムのデバイス名</p>
<p>/etc/lilo.confの設定内容を反映させるには、/sbin/liloコマンドを実行する必要があります。<br />lilo　コマンド</p>
<p>-C設定ファイル　設定ファイルを知っていする<br />-R　　　　　　　　次回再起動時に適用されるコマンドラインパラメータを指定する<br />-V&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Version<br />-q&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 現在のマップファイルの内容を表示する<br />-t　　　　　　　　テストのみ実行する<br />-u　　　　　　　　LILOを削除する<br />-v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　詳細情報を表示する</p>
<p>２．３　共有ライブラリ管理<br />共有ライブラリは、libreadline.so.5のように、「lib~.so~」という名前が付けられていうます。通常、/lib,/usr/libに配置されています</p>
<p>2.3.2 必要な共有ライブラリの確認<br />実行ファイルが必要としている共有ライブラリは、lddコマンドで調べることができます。<br />ldd /bin/cat<br />しかし、プログラムを実行するたびにこれらのディレクトリを検索するのは非効率出来なので、実際にはバイナリのキャッシュファイルである/etc/ld.so.cacheが参照されます。<br />ldconfigコマンドは、/etc/ld.so.confファイルに基づいて/etc/ld.so.cacheを再構築します。<br />＃ldconfig</p>
<p>そのたのディレクトりも検索対象に加えたい場合は、環境変数LDLIBRARYPATHにデイレクト利リストを記述します。<br />２．４　Debianパッケージの管理<br />２．４．１　パッケージ管理とは</p>
<p>&nbsp;実行プログラム、設定ファイル、ドキュメントなどを一つのファイルにまとめたものをパッケージといいます。<br />&nbsp;パッケージ管理システム<br />&nbsp;パッケージの依存関係<br />&nbsp;パッケージ管理システムは依存関係を監視し、依存関係を 損なうようなインストールやアンインストールには警告をはします。<br />&nbsp;Debian形式は、Debian系のディストリビューションで利用されている。<br />&nbsp;パッケージ管理作業にはdpkg,dselect,APTツール<br />&nbsp;RPM形式は、パッケージ管理作業にはrpmコマンドが使われます。両者には互換性<br />&nbsp;がありませんが、alienコマンドを使って相互に形式を変換することもできます。<br />&nbsp;Debian形式のパッケージファイル名は、次のようになっています。<br />&nbsp;tree-1.5.0-2-i386.deb<br />&nbsp;tree: パッケージ名<br />&nbsp;1.5.0.2　バージョン番号<br />&nbsp;2&nbsp;&nbsp; リリース番号<br />&nbsp;i386　アーキテクチャ<br />&nbsp;deb 拡張子<br />&nbsp;<br />&nbsp;Debian形式のパッケージを扱うにはdpkgコマンドを使います。<br />&nbsp;<br />&nbsp;dpkg [option] アクション<br />Option<br />&nbsp; -E&nbsp; すでに同バージョンがインストールされていればインストールしない<br />&nbsp;-G　すでに新バージョンがインストールされていればインストールしない<br />&nbsp;-R　ディレクトりないを再帰的に処理する<br />&nbsp;<br />&nbsp;Action<br />&nbsp;-i&nbsp; パッケージをインストールする<br />&nbsp;-r　設定ファイルも含め完全にパッケージをアンインストール<br />&nbsp;-P　設定ファイルも含め完全にパッケージをアンインストール<br />&nbsp;-l　インストール済みパッケージを検索して表示する<br />&nbsp;-S　指定したファイルがどのパッケージからインストールされたが表示する<br />&nbsp;-L　指定パッケージからインストールされたファイルを一覧表示する<br />&nbsp;-s　パッケージの情報を表示する<br />&nbsp;--configure　展開されたぱっっケージを構成する<br />&nbsp;--unpack　　パッケージを展開する<br />&nbsp;<br />&nbsp;dpkg -i apache2-2.2.3-4+etch6-all.deb<br />&nbsp;<br />&nbsp;dpkg --purge apache2<br />&nbsp;dpkg -S '*/apache'<br />&nbsp;dpkg -l<br />&nbsp;dpkg -L bash<br />&nbsp;dpkg -s bash<br />&nbsp;<br />&nbsp;2.4.3 apt-getコマンド<br />&nbsp;apt-getは、APTというパッケージ管理ツールに含まれるコマンドで、依存関係を調整<br />&nbsp;しながらパッケージのインストール、アップグレード、アンインストールを行います。<br />&nbsp;<br />apt-get 「オプション」　サブコマンド　パッケージ名<br />option<br />-d　ファイルをダウンロードする<br />-s 　システムを変更せず動作をシミュレートする<br />サブコマンド<br />clean&nbsp;&nbsp;&nbsp; 過去に取得して保存中のパッケージを削除する<br />dist-upgrade　Debianのシステムを最新にアップグレードする<br />install　　　パッケージをインストールまたはアップグレードする<br />remove　アンインストール<br />update　パッケージデータベースを更新する<br />uograde　システムの全ぽっけーじを安全にアップグレードする</p>
<p>apt-getコマンドでパッケージ管理を始めるには、まず/etc/apt/sources.listにパッケージ<br />を管理しているサイトのURLを記述します</p>
<p>apt-cacheコマンド<br />パッケージ情報を照会・検索することのできるコマンドです。<br />apt-cache　<br />search<br />show<br />showpkg<br />depends</p>
<p>aptitudeコマンド<br />apt-getコマンドよりも高度な機能を持ったコマンドとしてaptitudeコマンドがあります。<br />とりわけ、正規表現を使った検索機能が優れています。</p>
<p>2.5　RPMパッケージの管理<br />RPMパッケージのファイル名は、次のようになっています。<br />bash-3.2-21.i386.rpm<br />bash パッケージの名称<br />3.2　　バージョン番号<br />21　　リリース番号<br />i386　アーキテクチャ<br />rpm 拡張子</p>
<p>2.5.2　rpmコマンドの利用<br />rpmコマンドの主なオプション<br />-i&nbsp; インストール<br />-U　アップグレード<br />-F　<br />-v　詳細な情報を表示する<br />-h　進行状況を「＃」で<br />--nodeps　依存関係を無視してインストールする<br />--force　既存のファイルを新しいものに置き換える<br />--test&nbsp;&nbsp;&nbsp; 実際にはインストールせずテストを実施する<br />-e&nbsp;&nbsp;&nbsp;&nbsp; パッケージをアンインストール<br />-q&nbsp;&nbsp;&nbsp; 指定したパッケージがインストールされているか照会する<br />-a&nbsp;&nbsp;&nbsp; インストール済みのすべてのパッケージを表示する<br />-f　　指定したファイルを含むパッケージ名を表示する<br />-p 　対象としてパッケージファイルを指定する</p>
<p>パッケージのインストール<br />#rpm　-ivh zsh-4.2.6-1.i386.rpm<br />次の例では、~/rpmsディレクトリ以下にあるRPMパッケージをすべてアップグレードします<br />#rpm -Fvh ~/rpms/*.rpm</p>
<p>パッケージのアンインストール<br />#rpm -e httpd<br />パッケージ情報<br />パッケージを調査するには-qオプションを使います。<br />#rpm -qa | grep emacs<br />#rpm -qi bash<br />#rpm -qf /bin/bash<br />#rpm -qlp bash-3.0-19.2.i386.rpm<br />#rpm -qR gzip</p>
<p>2.5.3 YUM<br />YUMの設定 /etc/yum.confと/etc/yum.repos.dディレクトリ以下のファイルで行います。<br />yum サブコマンド<br />check-update アップデート対象のパッケージリストを表示する<br />update　パッケージ名 指定したパッケージ名をアップデートする<br />install　パッケージ名　インストール<br />remove アンインストール<br />info　指定したぱけーじの情報を表示する<br />lisｔ　　全パッケージをリスト表示する<br />search&nbsp;&nbsp; キーワードで検索する<br />grouplist パッケージグループをリスト表示する<br />groupinstall パッケージをインストール</p>
<p>#yum check-update<br />#yum update<br />#yum install<br />#yum remove emacs<br />#yum info samba<br />#yum list<br />#yum search ruby<br />#yum grouplist<br />#yum groupinsatll "X Window System"<br />#yumdownloader samba</p>
<p>&nbsp;</p><img src ="http://www.blogjava.net/lucky/aggbug/383389.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lucky/" target="_blank">Lucky</a> 2012-07-18 12:25 <a href="http://www.blogjava.net/lucky/archive/2012/07/18/383389.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>配置VirtualBox+CentOS的SSH+FTP及CentOS yum镜像</title><link>http://www.blogjava.net/lucky/archive/2012/07/13/383041.html</link><dc:creator>Lucky</dc:creator><author>Lucky</author><pubDate>Fri, 13 Jul 2012 09:28:00 GMT</pubDate><guid>http://www.blogjava.net/lucky/archive/2012/07/13/383041.html</guid><wfw:comment>http://www.blogjava.net/lucky/comments/383041.html</wfw:comment><comments>http://www.blogjava.net/lucky/archive/2012/07/13/383041.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lucky/comments/commentRss/383041.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lucky/services/trackbacks/383041.html</trackback:ping><description><![CDATA[<div><h2>配置TELNET一定要映射端口</h2><h2><a title="Permanent Link to 配置VirtualBox+CentOS的SSH+FTP及CentOS yum镜像" href="http://liucheng.name/1947/" rel="bookmark">配置VirtualBox+CentOS的SSH+FTP及CentOS yum镜像</a></h2> 					<p>Posted on 27 八月 2011 by 柳城 ，阅读 554  </p> 		 					 						<p>接上(<a title="Permanent Link to 虚拟机VirtualBox+Centos+NAT网络的配置过程" href="http://liucheng.name/1944/" rel="bookmark">虚拟机VirtualBox+Centos+NAT网络的配置过程</a>)：装好VirtualBox后，在XP下进入网络邻居，多了个VirtualBox Host-Only Network。可知：</p> <h3>Host机的IP</h3> <pre>Host机的IP：192.168.56.1</pre> <p><a href="http://liucheng.name/wp-content/uploads/2011/08/VirtualBox-3.png"><img title="VirtualBox Host-Only Network" src="http://liucheng.name/wp-content/uploads/2011/08/VirtualBox-3.png" alt="" height="462" width="345" /></a></p> <h3>虚拟机的IP</h3> <p>在CentOS查看虚拟机的IP：</p> <pre>ifconfig -a #查看IP</pre> <pre>eth0      Link encap:Ethernet  HWaddr 08:00:27:BE:80:A6           inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0           inet6 addr: fe80::a00:27ff:febe:80a6/64 Scope:Link           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1           RX packets:172 errors:0 dropped:0 overruns:0 frame:0           TX packets:119 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:1000           RX bytes:15640 (15.2 KiB)  TX bytes:21109 (20.6 KiB)  lo        Link encap:Local Loopback           inet addr:127.0.0.1  Mask:255.0.0.0           inet6 addr: ::1/128 Scope:Host           UP LOOPBACK RUNNING  MTU:16436  Metric:1           RX packets:0 errors:0 dropped:0 overruns:0 frame:0           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:0           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)</pre> <h3>映射虚拟机和Host机的端口（用SSH登陆<a href="http://liucheng.name/tag/centos/" title="查看 Centos 中的全部文章" target="_blank">Centos</a>）</h3> <p>虚拟机的IP是10.0.2.15，自动获取的IP。接下来打开&nbsp;&nbsp;VirtualBox,按下图设置：</p> <p>SSH的默认端口是22，填好HostIP及GuestIP就行了。这样子就能通过putty等软件SSH登陆了。</p> <p>SSH IP: &nbsp;192.168.65.1</p> <p>帐号：CentOS设置的帐号，如root</p> <p><a href="http://liucheng.name/wp-content/uploads/2011/08/VirtualBox-2.png"><img size-full=""  wp-image-1948"="" title="配置VirtualBox+CentOS的SSH+FTP及CentOS yum镜像" src="http://liucheng.name/wp-content/uploads/2011/08/VirtualBox-2.png" alt="" height="582" width="620" /></a></p> <p>web的80端口是为以后安装apache用的。设置了这个后，Host机才能用http://IP/通过浏览器直接访问。（还需要设置CentOS的防火墙不屏蔽80端口。以后再详~）</p> <h3>CentOS yum镜像</h3> <p>设置yum的镜像，方便下载更新软件。设置的方法参照：http://centos.ustc.edu.cn/</p> <p>&nbsp;</p> <p>安装地方设置为HTTP,Server ctos.ustc.edu.cn, 目录 为<strong>centos</strong>/6/os/i386 或&nbsp;<strong>centos</strong>/6/os/x86_64。</p> <p>安装后请按照以下步骤修改CenOS-Base.repo，以后就可以方便的用yum从本镜像站点安装、更新软件。</p> <p><strong>&nbsp;CentOS6的安装方法</strong></p> <pre>cd /etc/yum.repos.d mv <strong>CentOS</strong>-Base.repo  <strong>CentOS</strong>-Base.repo.save wget http://ctos.ustc.edu.cn/<strong>CentOS</strong>-Base.repo.6 wget http://ctos.ustc.edu.cn/epel.repo.6 mv <strong>CentOS</strong>-Base.repo.6 <strong>CentOS</strong>-Base.repo mv epel.repo.6 epel.repo</pre> <p>&nbsp;</p> <p>提醒：装了centos的最小版本minimal之后，一开始没有安装wget了，所以就是需要配置SSH后，就能随便上传文件了。</p></div><img src ="http://www.blogjava.net/lucky/aggbug/383041.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lucky/" target="_blank">Lucky</a> 2012-07-13 17:28 <a href="http://www.blogjava.net/lucky/archive/2012/07/13/383041.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CentOS的yum配置</title><link>http://www.blogjava.net/lucky/archive/2012/07/13/383023.html</link><dc:creator>Lucky</dc:creator><author>Lucky</author><pubDate>Fri, 13 Jul 2012 07:22:00 GMT</pubDate><guid>http://www.blogjava.net/lucky/archive/2012/07/13/383023.html</guid><wfw:comment>http://www.blogjava.net/lucky/comments/383023.html</wfw:comment><comments>http://www.blogjava.net/lucky/archive/2012/07/13/383023.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lucky/comments/commentRss/383023.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lucky/services/trackbacks/383023.html</trackback:ping><description><![CDATA[<div><table bgcolor="#ffffff" border="1" cellpadding="2" cellspacing="0" width="745" height="191"><tbody><tr><td align="left" background="table_1.gif"><strong> 1、プロキシの設定（yumによるアップデート） 】</strong></td>           </tr>           <tr>             <td align="left" valign="top"><strong>&#9670;/etc/yum.conf  を編集しないでプロキシの指定する方法</strong><br />             <br />             記述例：プロキシのポート番号を5273としています。<br />             <br />             <strong># export proxy=http://proxy.hostname.com:5273/</strong><br />             </td></tr></tbody></table></div><div><div><p><a name="2">&nbsp;リポジトリの設定</a></p> <p>日本国内では理研のサーバを指定するのが主流（らしい）なので、<br /> yum が見に行くサーバを理研のサーバになるように変更します。<br /> 変更するファイルは <strong>/etc/yum.repos.d/CentOS-Base.repo</strong> です。</p>  <p># vi /etc/yum.repos.d/CentOS-Base.repo</p> <p>[base]<br /> name=CentOS-$releasever - Base<br /> baseurl=http://ftp.riken.jp/Linux/centos/$releasever/os/$basearch/<br /> gpgcheck=1<br /> <br /> #released updates<br /> [update]<br /> name=CentOS-$releasever - Updates<br /> baseurl=http://ftp.riken.jp/Linux/centos/$releasever/updates/$basearch/<br /> gpgcheck=1<br /> <br /> #packages used/produced in the build but not released<br /> [addons]<br /> name=CentOS-$releasever - Addons<br /> baseurl=http://ftp.riken.jp/Linux/centos/$releasever/addons/$basearch/<br /> gpgcheck=1<br /> <br /> #additional packages that may be useful<br /> [extras]<br /> name=CentOS-$releasever - Extras<br /> baseurl=http://ftp.riken.jp/Linux/centos/$releasever/extras/$basearch/<br /> gpgcheck=1<br /> <br /> #additional packages that extend functionality of existing packages<br /> [centosplus]<br /> name=CentOS-$releasever - Plus<br /> baseurl=http://ftp.riken.jp/Linux/centos/$releasever/centosplus/$basearch/<br /> gpgcheck=1<br /> enabled=0<br /> <br /> #contrib - packages by Centos Users<br /> [contrib]<br /> name=CentOS-$releasever - Contrib<br /> baseurl=http://ftp.riken.jp/Linux/centos/$releasever/contrib/$basearch/<br /> gpgcheck=1<br /> enabled=0<br /> <br /> #packages in testing<br /> [testing]<br /> name=CentOS-$releasever - Testing<br /> baseurl=http://ftp.riken.jp/Linux/centos/$releasever/testing/$basearch/<br /> gpgcheck=1<br /> enabled=0<br /> <br /> [dag]<br /> name=Dag RPM Repository for Red Hat Enterprise Linux<br /> baseurl=http://ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag<br /> gpgcheck=1<br /> enabled=1</p>  <p>設定後、上書き保存します。</p></div></div><img src ="http://www.blogjava.net/lucky/aggbug/383023.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lucky/" target="_blank">Lucky</a> 2012-07-13 15:22 <a href="http://www.blogjava.net/lucky/archive/2012/07/13/383023.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SAStruts</title><link>http://www.blogjava.net/lucky/archive/2011/12/08/365855.html</link><dc:creator>Lucky</dc:creator><author>Lucky</author><pubDate>Thu, 08 Dec 2011 04:56:00 GMT</pubDate><guid>http://www.blogjava.net/lucky/archive/2011/12/08/365855.html</guid><wfw:comment>http://www.blogjava.net/lucky/comments/365855.html</wfw:comment><comments>http://www.blogjava.net/lucky/archive/2011/12/08/365855.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lucky/comments/commentRss/365855.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lucky/services/trackbacks/365855.html</trackback:ping><description><![CDATA[<div>最近把SAStruts的文档翻译成中文了，有需要的亲们请下载。<br />SAStruts中文文档<br /><a href="/Files/lucky/saStruts-Doc-zh.zip">/Files/lucky/saStruts-Doc-zh.zip</a><br /><br />SAStruts的介绍PPT（日语）<a href="/Files/lucky/Sastruts_intro.zip">/Files/lucky/Sastruts_intro.zip</a><br /></div><img src ="http://www.blogjava.net/lucky/aggbug/365855.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lucky/" target="_blank">Lucky</a> 2011-12-08 12:56 <a href="http://www.blogjava.net/lucky/archive/2011/12/08/365855.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>50个必备的实用jQuery代码段(转载)</title><link>http://www.blogjava.net/lucky/archive/2011/12/07/365721.html</link><dc:creator>Lucky</dc:creator><author>Lucky</author><pubDate>Wed, 07 Dec 2011 01:59:00 GMT</pubDate><guid>http://www.blogjava.net/lucky/archive/2011/12/07/365721.html</guid><wfw:comment>http://www.blogjava.net/lucky/comments/365721.html</wfw:comment><comments>http://www.blogjava.net/lucky/archive/2011/12/07/365721.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lucky/comments/commentRss/365721.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lucky/services/trackbacks/365721.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 50个必备的实用jQuery代码段 	 	  本文会给你们展示50个 jquery代码片段，这些代码能够给你的javascript项目提供帮助。其中的一些代码段是从jQuery1.4.2才开始支持的做法，另一些则是 真正有用的函数或方法，他们能够帮助你又快又好地把事情完成。如果你发现你任何可以做得更好的地方的话，欢迎把你的版本粘贴在评论中!1. 如何修改jQuery默认编码（例如默认UTF-8改成...&nbsp;&nbsp;<a href='http://www.blogjava.net/lucky/archive/2011/12/07/365721.html'>阅读全文</a><img src ="http://www.blogjava.net/lucky/aggbug/365721.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lucky/" target="_blank">Lucky</a> 2011-12-07 09:59 <a href="http://www.blogjava.net/lucky/archive/2011/12/07/365721.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>测试</title><link>http://www.blogjava.net/lucky/archive/2011/07/30/355396.html</link><dc:creator>Lucky</dc:creator><author>Lucky</author><pubDate>Sat, 30 Jul 2011 06:24:00 GMT</pubDate><guid>http://www.blogjava.net/lucky/archive/2011/07/30/355396.html</guid><wfw:comment>http://www.blogjava.net/lucky/comments/355396.html</wfw:comment><comments>http://www.blogjava.net/lucky/archive/2011/07/30/355396.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lucky/comments/commentRss/355396.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lucky/services/trackbacks/355396.html</trackback:ping><description><![CDATA[<p>发布</p><img src ="http://www.blogjava.net/lucky/aggbug/355396.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lucky/" target="_blank">Lucky</a> 2011-07-30 14:24 <a href="http://www.blogjava.net/lucky/archive/2011/07/30/355396.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>结束PMP学习</title><link>http://www.blogjava.net/lucky/archive/2011/05/20/350691.html</link><dc:creator>Lucky</dc:creator><author>Lucky</author><pubDate>Fri, 20 May 2011 07:06:00 GMT</pubDate><guid>http://www.blogjava.net/lucky/archive/2011/05/20/350691.html</guid><wfw:comment>http://www.blogjava.net/lucky/comments/350691.html</wfw:comment><comments>http://www.blogjava.net/lucky/archive/2011/05/20/350691.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lucky/comments/commentRss/350691.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lucky/services/trackbacks/350691.html</trackback:ping><description><![CDATA[<div>从有学习PMP的想法，开始已经过了1年了。在这1年里系统参加了netlearning的《IT项目管理》的学习，<br />教材方面看了几遍PMBOK的第4版，然后学习了Rita的经典PMP考试教材。也做了配套的Fast Track<br />的1501道，还有网上找到的465道练习题。原先想考PMP认证的想法现在反而没有了，即使进行了<br />系统的学习，还是强烈的认为项目管理是门艺术。<br />PMBOK定义了理想状态下的流程，提供了很多工具和方法论。PMP的试题也是有很多来考查这些东西，<br />对于立志于做PM但是缺少相关知识，概念和经验的人可以通过系统的学习，以及做题和考试来完善自己的<br />知识储备和自己管理方法体系的建立。但是在实际的工作环境中，会看到一些PMBOK提供的流程定<br />义，方法，工具的影子，但很多时候你会发现有很多并没有遵守甚至违反的地方。每个公司，每个PM都有<br />自己的一套既成的管理方法体系结构。做了这么多年的项目，很多都是大公司花了多少亿的大项目，<br />但是最终做的好的并没有几个，公司不管执行什么CMMI，还是会管理的PM，不管过程中的文档做的多么<br />漂亮，沟通多么完善，一些成功的项目反而是技术出身的PM带的。单纯熟练掌握PMBOK并熟练应用各种沟<br />通技巧的会管理的PM管理IT项目，有时候可能并不如没有掌握完善的沟通技巧，PMBOK也是一知半解的人<br />管理的项目成功率高。个人观察的可能原因是，IT是个脑力创造的行业，虽然到具体的函数方法可能只是<br />简单的crtl+C和Ctrl+V,但是作为项目的负责人必须在系统成型之前头脑就应该对系统有个整体的image，<br />并且能够对每个成员的工作状况有个切实的确切的把握，而不是单纯的每天填表报告完成了百分之多少。<br />就是说项目中可能出现的问题，以及需要注意的地方都在头脑中有印象。当出现时马上能反映出相关的对策。<br />总之，个人认为，IT的PM应该是个技术性的领导者，这样就能比较从容应对系统出现以及可能出现的问题，<br />并且能够在与干系人交流时能够能够对交流的事情进行自我判断并形成自己的意见。<br />有时间的话，真想再把温伯格的书找出来看看。10年没翻过，看看再翻这些经典书的时候自己会有那些感触。<br />PMP的学习就此结束，重点转向日语。</div><img src ="http://www.blogjava.net/lucky/aggbug/350691.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lucky/" target="_blank">Lucky</a> 2011-05-20 15:06 <a href="http://www.blogjava.net/lucky/archive/2011/05/20/350691.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VBA参考</title><link>http://www.blogjava.net/lucky/archive/2011/03/24/346958.html</link><dc:creator>Lucky</dc:creator><author>Lucky</author><pubDate>Thu, 24 Mar 2011 08:09:00 GMT</pubDate><guid>http://www.blogjava.net/lucky/archive/2011/03/24/346958.html</guid><wfw:comment>http://www.blogjava.net/lucky/comments/346958.html</wfw:comment><comments>http://www.blogjava.net/lucky/archive/2011/03/24/346958.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lucky/comments/commentRss/346958.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lucky/services/trackbacks/346958.html</trackback:ping><description><![CDATA[<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">Sub</span><span style="color: #000000; ">&nbsp;辞書コードを取得()<br />
<br />
</span><span style="color: #0000FF; ">Dim</span><span style="color: #000000; ">&nbsp;intCount_JISYO_CD&nbsp;</span><span style="color: #0000FF; ">As</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">Integer</span><span style="color: #000000; "><br />
</span><span style="color: #0000FF; ">Dim</span><span style="color: #000000; ">&nbsp;intUUNo_JISYO_CD&nbsp;</span><span style="color: #0000FF; ">As</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">Integer</span><span style="color: #000000; "><br />
intCount_JISYO_CD&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">3</span><span style="color: #000000; "><br />
intUUNo_JISYO_CD&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; "><br />
</span><span style="color: #008000; ">'</span><span style="color: #008000; ">辞書コードをSheetｎ5に作成します、重複の場合スキップします</span><span style="color: #008000; "><br />
</span><span style="color: #0000FF; ">Do</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">While</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">Len</span><span style="color: #000000; ">(Worksheets(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Sheet2</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).Cells(intCount_JISYO_CD,&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">).Value)&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">Set</span><span style="color: #000000; ">&nbsp;Obj&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Worksheets(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Sheet5</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).Cells.Find(Worksheets(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Sheet2</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).Cells(intCount_JISYO_CD,&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">).Value,&nbsp;LookAt:</span><span style="color: #000000; ">=</span><span style="color: #000000; ">xlWhole)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">If</span><span style="color: #000000; ">&nbsp;Obj&nbsp;</span><span style="color: #0000FF; ">Is</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">Nothing</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">Then</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Worksheets(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Sheet5</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).Cells(intUUNo_JISYO_CD,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">).Value&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Worksheets(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Sheet2</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).Cells(intCount_JISYO_CD,&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">).Value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intUUNo_JISYO_CD&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;intUUNo_JISYO_CD&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">End</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">If</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;intCount_JISYO_CD&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;intCount_JISYO_CD&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br />
</span><span style="color: #0000FF; ">Loop</span><span style="color: #000000; "><br />
<br />
</span><span style="color: #008000; ">'</span><span style="color: #008000; ">Sheet5に作成された辞書コードを昇準にソートします</span><span style="color: #008000; "><br />
'</span><span style="color: #008000; ">Worksheets("Sheet5").Active</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">Worksheets(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Sheet5</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).Range(Cells(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">),&nbsp;Cells(intUUNo_JISYO_CD,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)).Sort&nbsp;Key1:</span><span style="color: #000000; ">=</span><span style="color: #000000; ">Worksheets(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Sheet5</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).Cells(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">),&nbsp;order1:</span><span style="color: #000000; ">=</span><span style="color: #000000; ">xlAscending<br />
<br />
</span><span style="color: #0000FF; ">End&nbsp;Sub</span><span style="color: #000000; "><br />
<br />
</span><span style="color: #0000FF; ">Sub</span><span style="color: #000000; ">&nbsp;辞書コードが存在しない部品()<br />
<br />
</span><span style="color: #0000FF; ">Dim</span><span style="color: #000000; ">&nbsp;intCount_JISYO_CD&nbsp;</span><span style="color: #0000FF; ">As</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">Integer</span><span style="color: #000000; "><br />
</span><span style="color: #0000FF; ">Dim</span><span style="color: #000000; ">&nbsp;intNum_Record&nbsp;</span><span style="color: #0000FF; ">As</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">Integer</span><span style="color: #000000; "><br />
intCount_JISYO_CD&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">3</span><span style="color: #000000; "><br />
intNum_Record&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">3</span><span style="color: #000000; "><br />
</span><span style="color: #008000; ">'</span><span style="color: #008000; ">辞書コードが存在しない部品をSheet6に作成します</span><span style="color: #008000; "><br />
</span><span style="color: #0000FF; ">Do</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">While</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">Len</span><span style="color: #000000; ">(Worksheets(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Sheet2</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).Cells(intCount_JISYO_CD,&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">).Value)&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">If</span><span style="color: #000000; ">&nbsp;Worksheets(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Sheet2</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).Cells(intCount_JISYO_CD,&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">).Value&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">C5416</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">Or</span><span style="color: #000000; ">&nbsp;Worksheets(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Sheet2</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).Cells(intCount_JISYO_CD,&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">).Value&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">C5860</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">Then</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;Worksheets(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Sheet2</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).Cells(intCount_JISYO_CD,&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">).EntireRow.Copy<br />
&nbsp;&nbsp;&nbsp;&nbsp;Worksheets(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Sheet6</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).Cells(intNum_Record,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">).EntireRow.Insert<br />
&nbsp;&nbsp;&nbsp;&nbsp;intNum_Record&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;intNum_Record&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">End</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">If</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;intCount_JISYO_CD&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;intCount_JISYO_CD&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br />
</span><span style="color: #0000FF; ">Loop</span><span style="color: #000000; "><br />
</span><span style="color: #0000FF; ">End&nbsp;Sub</span><span style="color: #000000; "><br />
<br />
</span><span style="color: #0000FF; ">Sub</span><span style="color: #000000; ">&nbsp;重複レコードを削除します()<br />
</span><span style="color: #0000FF; ">Dim</span><span style="color: #000000; ">&nbsp;intRows&nbsp;</span><span style="color: #0000FF; ">As</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">Integer</span><span style="color: #000000; "><br />
</span><span style="color: #0000FF; ">Dim</span><span style="color: #000000; ">&nbsp;intUniqueRows&nbsp;</span><span style="color: #0000FF; ">As</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">Integer</span><span style="color: #000000; "><br />
intRows&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br />
intUniqueRows&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br />
</span><span style="color: #0000FF; ">Do</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">While</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">Len</span><span style="color: #000000; ">(Worksheets(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Sheet7</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).Cells(intRows,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">).Value)&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">Set</span><span style="color: #000000; ">&nbsp;Obj&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Worksheets(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Sheet9</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).Cells.Find(Worksheets(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Sheet7</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).Cells(intRows,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">).Value,&nbsp;LookAt:</span><span style="color: #000000; ">=</span><span style="color: #000000; ">xlWhole)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">If</span><span style="color: #000000; ">&nbsp;Obj&nbsp;</span><span style="color: #0000FF; ">Is</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">Nothing</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">Then</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Worksheets(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Sheet7</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).Cells(intRows,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">).EntireRow.Copy<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Worksheets(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Sheet9</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).Cells(intUniqueRows,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">).EntireRow.Insert<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intUniqueRows&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;intUniqueRows&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">End</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">If</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;intRows&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;intRows&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br />
</span><span style="color: #0000FF; ">Loop</span><span style="color: #000000; "><br />
</span><span style="color: #0000FF; ">End&nbsp;Sub</span><span style="color: #000000; "><br />
</span></div>
</div>
<img src ="http://www.blogjava.net/lucky/aggbug/346958.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lucky/" target="_blank">Lucky</a> 2011-03-24 16:09 <a href="http://www.blogjava.net/lucky/archive/2011/03/24/346958.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>探亲签证所需资料</title><link>http://www.blogjava.net/lucky/archive/2011/01/12/342871.html</link><dc:creator>Lucky</dc:creator><author>Lucky</author><pubDate>Wed, 12 Jan 2011 07:23:00 GMT</pubDate><guid>http://www.blogjava.net/lucky/archive/2011/01/12/342871.html</guid><wfw:comment>http://www.blogjava.net/lucky/comments/342871.html</wfw:comment><comments>http://www.blogjava.net/lucky/archive/2011/01/12/342871.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lucky/comments/commentRss/342871.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lucky/services/trackbacks/342871.html</trackback:ping><description><![CDATA[<a href="http://www.cn.emb-japan.go.jp/consular/visa_shinzoku.htm">http://www.cn.emb-japan.go.jp/consular/visa_shinzoku.htm</a>日本大使馆 <br />
<a href="http://www.shanghai.cn.emb-japan.go.jp/cn/apply/index.html">http://www.shanghai.cn.emb-japan.go.jp/cn/apply/index.html</a> 上海领事馆<br />
<br />
<a href="http://www.jxfsc.com/ysqzriben.asp?p=384&amp;dir=386">http://www.jxfsc.com/ysqzriben.asp?p=384&amp;dir=386</a> 签证代办机构&nbsp; 江西省友好因私出国境服务中心
<img src ="http://www.blogjava.net/lucky/aggbug/342871.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lucky/" target="_blank">Lucky</a> 2011-01-12 15:23 <a href="http://www.blogjava.net/lucky/archive/2011/01/12/342871.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>