咖啡 的个人资料Separate Lives照片日志列表 工具 帮助
2007/5/31

时间测量

     在国际单位制中的7个基本单位中(1.长度—米;2.质量—千克或公斤;3.时间—秒;4.电流—安或安培;5.热力学温度—开或开尔文;6.物质的量—摩或摩尔;7.发光强度—坎或坎德拉)时间单位的定义与测量是历史最悠久、情况最复杂、目前测量精度最高的一个基本单位。
     天文学时间标准在人类社会活动和科学技术进步中曾经发挥了巨大作用。但是由于它的实测精度很难提高,在20世纪50年代以后,逐步为新兴的物理学原子标准所取代。原子时间计量标准在1967年正式取代了天文学的秒长的定义新秒长规定为:位于海平面上的铯Cs133原子基态的两个超精细能级间在零磁场中跃迁振荡9192631770个周期所持续的时间为一个原子时秒。这一定义标志着时间测量的一个新时代的到来。
    时间既然由原子振荡频率来定义。因此频率稳定度和频率准确度便成为时间测量的一个重要概念。在时频测量中习惯上把不稳定性称为稳定度,例如,国际原子时的稳定度为正负3乘10的负15次方。就是指国际原子时在取样时间内的不稳定性
   时域下的时间稳定度测量——被测时钟和参考时钟的输出信号(例如秒)分别进入时间间隔计数器。参考时钟的秒脉冲信号为开门信号被测时钟的秒脉冲信号为关门信号。然后由时间间隔计数器计算被测时钟秒脉冲到达预设波阵面高度的时刻。  
   时域下的频率稳定度测量——测量频率稳定度一般使用两个频率不同但相近的振荡器,去伺服混频器再经过低通滤波后,由电子计数器进行测量。
   频域下的频率稳定度特征——要得到各种偶然因素造成的频率不稳定性,一般方法是将它们的功率谱密度函数在所有的频率上进行积分。然后对增量利用方差进行统计处理。最常用的是Allan方差。
   时间和频率比对——在原子时测量领域中,由于构成时间的基本单位是频率。因此,实验室内部需要经常进行频率比对,以求得尽量均匀的时间单位;同时,各个实验室之间也需要相互比对。时间比对主要分为局部时间比对和远距离时间比对,在远距离时间比对中又采用搬运钟、单向法、双向法。
 
2007/5/25

一切皆对象

面向对象设计是用计算机数据和算法结构来匹配现实逻辑,人只是把现实逻辑切出一段来做为一个对象,然后再用程序描述它。同个对象细化程度不同导致程序千差万别。

一切皆对象,想想就好。人还是实际点好,管理一切的事情 不是人做的。

JavaScript OOP

      在写面向对象的WEB应用程序方面JavaScript是一种很好的选择.它能支持OOP.因为它通过原型支持继承的方式和通过属性和方法的方式一样好.很多开发者试图抛弃JS,试着用C#或JAVA仅是因为JS不是他认为合适的面向对象的语言.许多人还没有认识到javascript支持继承.当你写面向对象的代码时.它能给你很强大的能量.你也可以使用它写出可复用,可封装的代码.
对象为何如此伟大?
    面向对象思想的成功是由于它仿照了现实中的事物和事物的联系.事物有属性和方法.如果我们描述一个台灯.我们会说它的高度和宽度,比如12CM."开灯"这个动作是它的方法.当它是处于开着的状态时.它可以被调亮一点或暗一点(也就是亮度这个属性值变大或变小).
   
javascript 给予了为WEB应用程序创建对象的能力.对象在需要的时候相应的事件会被触发,代码封装后,它能被实例化很多次.在javascript里有几种创建对象的方法,在不同的场合可用不同的方法
1.1JS创建对象方式之一用 new Object() 来创建对象
.最简单的就是用new 操作符,例如:
<script language="javascript" type="text/javascript">
person = new Object()
person.name = "Tim Scarfe"
person.height = "6Ft"
person.run = function() {
       this.state = "running"
       this.speed = "4ms^-1"
}
</script>
我们在这个例子里定义了person这个对象,然后加入了它的属性和方法.在这个例子里,自定义的方法里有两个属性.
1.2.用文字记号Literal Notation创建对象
用文字记号也可以创建对象,但要javascript 1.2以上版本.它的创建形式是多样的.
<script language="javascript" type="text/javascript">
// Object Literals
timObject = {
      property1 : "Hello",
      property2 : "MmmMMm",
      property3 : ["mmm", 2, 3, 6, "kkk"],
      method1 : function(){
         alert("Method had been called" + this.property1)
       }
};
timObject.method1();
alert(timObject.property3[2]) // 结果为3
var circle = { x : 0, y : 0, radius: 2 } // another example
// 嵌套也是允许的哦.
var rectangle = {
          upperLeft : { x : 2, y : 2 },
         lowerRight : { x : 4, y : 4}
}
alert(rectangle.upperLeft.x) // 结果为2
</script>
文字记号可是是数组,也可以是任意的javascript表达式或值.
用 new 操作符或文字记号创建一个自定义对象都是简单的,也是符合逻辑的.但它最大的缺点就是结果不可复用.也不能很容易的用不同的版本初始化创建对象.例如上面的第一个例子,如果 person 的 name 不是 "Tim Scarfe",那样我们不得不重新定义整个对象,仅仅为了适应它的一点点改变.
1.3.对象的构造和原型
   在OOP的世界里,用先前的方法定义对象在许多场合都有限制.我们需要一种创建对象的方法,类型可以被多次使用而不用重新定义.对象在实例化时每次都可以按需分配不同的值.实现这个目标的标准方法是用对象构造器函数.
   一个对象构造器只不过是个有规则的javascript函数,它就象一个容器(定义参数,调用其他函数等等).它们两者所不同的是构造器函数是由 new 操作符调用的.(你将在下面的例子中看到).基于函数语法形式的对象定义,我们可以使它工作得最好.
让我们用现实世界中的猫来举个例子.猫的 name 和 color 是猫的属性.meeyow(猫叫)是它的一个方法.重要的是任何不同的猫都可能有不同的 name 和 meeyow 的叫声.为了建立适应这些特征的对象类,我们将使用对象构造器.
<script language="javascript" type="text/javascript">
function cat(name) {
       this.name = name; 
       this.talk = function() {
              alert( this.name + " say meeow!" )
       }
}
cat1 = new cat("felix")
cat1.talk() //alerts "felix says meeow!"
cat2 = new cat("ginger")
cat2.talk() //alerts "ginger says meeow!"
</script>
在这里,函数 cat() 是一个对象构造器,它的属性和方法在函数体里用this来定义,用对象构造器定义的对象用 new 来实例化.主意我们如何非常容易的定义多个cat 的实例.每一个都有自己的名字,这就是对象构造器带给我们的灵活性.
构造器建立了对象的蓝图.并不是对象本身.
在原型里增加方法.
在上面我们看到的例子里,对象的方法是在构造器里定义好的了.另外一种实现的途径是通过原型(prototype).xxx
原型是javascript继承的一种形式.我们可以为对象定义好后,再创造一个方法.原来所有对象的实例都将共享.
让我们来扩展最初的 cat 对象.增加一个改名的方法.用 prototype 的方式.
<script language="javascript" type="text/javascript">
cat.prototype.changeName = function(name) {
          this.name = name;
}
firstCat = new cat("pursur")
firstCat.changeName("Bill")
firstCat.talk() //alerts "Bill says meeow!"
</script>
就象你所看到的.我们仅只用了 关键字 prototype 实现了在对象定义后马上增加了changeName方法.这个方法被所有的实例共享.
用原型(prototype) 重载 javascript 对象
原型 在自定义对象和有选择性的重载对象上都可以工作.比如 Date() 或 String .这可能是无止境的.
1.4.子类和超类
下面一个例子演示了如何继承
<script language="javascript" type="text/javascript">
function superClass() {
         this.supertest = superTestMethod; //attach method superTest
}
function superTestMethod() {
         return "superTest";
}
function subClass() {
         this.inheritFrom = superClass;
         this.inheritFrom();
         this.subtest = subTestMethod; //attach method subTest
}
function subTestMethod() {
        return "subTest";
}
var newClass = new subClass();
alert(newClass.subtest()); // 弹出"subTest"
alert(newClass.supertest()); // 弹出 "superTest"
</script>
1.5.访问对象属性
正如你所知, (.)操作符能够用来操作对象属性和方法,而([]) 操作符用来操作数组.
<script language="javascript" type="text/javascript">
// 这两种用法是相同的
object.property
object["property"]
</script>
<script language="javascript">
function Circle (xPoint, yPoint, radius) {
       this.x = xPoint;
       this.y = yPoint;
       this.r = radius;
}
var aCircle = new Circle(5, 11, 99);
alert(aCircle.x);
alert(aCircle["x"]);
</script>
我们可以通过for in循环来遍历对象的属性。
<script language="javascript" type="text/javascript">
var testObj = {
      prop1 : "hello",
      prop2 : "hello2",
      prop3 : new Array("hello",1,2)
}
for(x in testObj) {
     alert( x + "-" + testObj[ x ] )
}
</script>
<script language="javascript">
var Circle = { // another example
       x : 0,
       y : 1,
      radius: 2
}
for(p in Circle) {
       alert( p + "-" + Circle[ p ] )
}
</script>
 
2007/5/18

奔跑

小的时候我总是躺在无边的黑夜
睁大眼睛看着世界那就是你
我总会把星空当做太阳
把点点的星星当作灯塔的光
鲜红鲜红的红领巾和翠绿的书包
在不知不觉的岁月里再无法找到
离开了家乡才知道还会走得更远
付出了真正的感情才知道成熟的滋味
我的全部努力不过完成了普通的生活
我那青春的海洋已在等待中干涸
生命的旅程里我一刻不停拼命地奔跑
也许最后才发现永远没有终点
现在我终于在命运中理顺了自己
等待起那未来能否过的从容
偶尔间看到一群孩子他们蹦蹦跳跳的走过
我也会教他们唱一首20世纪的歌谣
生命的旅程里我一刻不停拼命地奔跑
2007/5/16

流星

我想知道
流星能飞多久
它的美丽是否
值得去寻求
夜空的花
散落在你身后
幸福了我很久
值我去等候
于是我心狂奔
从黄昏到清晨
不能再承受
情愿坠落在你手中
羽化成黑夜的彩虹
蜕变成月光的清风
成月光的清风
我纵身跳
跳进你的河流
一直游到尽头
那里多自由
我许个愿
我许个愿保佑
让我的心凝固
在最美的时候
情愿坠落在你手中
羽化成黑夜的彩虹
情愿不再见明媚的天
不再见明媚的天
幸福
跳进你的河流
一直游到尽头
跳进你的河
我许个愿保佑
在最美的时候
我许的愿
我想知道
流星能飞多久
幸福了我很久