test html
随笔-10  评论-6  文章-0  trackbacks-0
  2007年9月9日
jQuery入门第一步

指南(1)用jquery开始吧

这个指南是对jquery库的一个总的介绍,当然你也被要求具备javascript和DOM(文档对象模型)的相关知识。该指南试图解释一些必须的细节。它涵盖了一个简单的”hello world”实例,选择器和事件基础,AJAX,FX以及官方插件。

这个指南并没有”click me”,而是依靠”copy me”(复制/粘贴代码)来测试例子,拷贝一个例子,看它是怎么做的,然后根据你自己的想法修改它。

目录:
1.    安装
2.    Hello jQuery (look like hello world)
3.    用选择器(selector)和事件(events)
4.    用ajax
5.    用FX(各种效果)
6.    用tablesorter 插件
7.    书写你自己的插件
8.    下一步(展望)


1.安装
开始之前,我们需要一个jquery库的拷贝(js文件)。最新的版本你能在这里下载。这个指南也提供了一个基本的“开始工具包”,你可以在下面地址下载到。

Jquery starterkit

下载该文件并且解压缩。用你喜欢的编辑器(比如:记事本)打开starterkit.htm和custom.js,并在浏览器(IE,firefox, netscape)打开starterkit.htm
现在我们可以开始类似于“hello world”的例子了。

2.Hello ,jQuery
作为我们要做的每一件事情,需要确定只要用到了dom,那么你就应该为当前文档注册一个ready 事件
(关于ready和onload的区别,大家可以参考<小蛀翻译的"jQuery简单指南"部分>,在这里就不解释了)

$(document).ready(function() {
  // do stuff when DOM is ready
});




在函数块里边放一个alert并没多少意义,因为一个alert并不需要DOM被加载。所以你可以做一些更复杂的事情来用到dom,比如下面当你click一个<a>的时候显示一个alert
$(document).ready(function() {
    $("a").click(function() {
        alert("Hello world!");
    });
});




所以只要你点<a>标签,alert就会显示出来。
让我们看一看都做了些什么吧。$(“a”)是一个jquery的选择器(selector),它能选择所有的元素(dom对象)。$是一个jquery里对于类的别名,因此$()构造了一个新的jquery对象。Click()函数是对象里的有个方法。它绑定了对所有元素的click事件并且当事件发生时执行提供的函数。
类似于下面的代码:
<a href="#" >Link</a>
这个区别是显而易见的:我们不需要为单一的对象写click事件了。我们把html(结构)和js(行为)分开了就象用CSS分开一样。
现在,我们已经对选择器和事件有了一定的认识了。

3.选择器(selector)和事件(events)
Jquery提供了2个方法来选择DOM元素。第一个方法是用CSS和XPATH(比如:$(“div > ul a”))。第二种方法是用jQuery对象的各种方法。当然两种方法也可以结合。
我们在starterkit里选择和修改第一个order list来测试这些选择器。
开始之前,我们需要选择列表本身。这个列表有一个ID=” orderedlist”,在经典javascript里,你必须这样用:document.getElementById("orderedlist"),但是在jQuery里,我们只需要做这些:
$(document).ready(function() {
    $("#orderedlist").addClass("red");
});




这个starterkit提供了一个如何加CSS样式  class.red。因此,当你刷新starterkit.htm的时候,你会发现第一个list背景变成红色,而第二个list没有被改变。
现在让我们加更多的classes到list的子元素:
$(document).ready(function() {
    $("#orderedlist > li").addClass("blue");
});




上面的例子选择了id为orderedlist的所有子标签li,并且在他们上面加了一个class.blue的样式。
现在来点更复杂的。当鼠标移到li元素的时候,增加和删除一个Class样式:
$(document).ready(function() {
    $("#orderedlist li:last").hover(function() {
        $(this).addClass("green");
    }, function() {
        $(this).removeClass("green");
    });




你在这里可以找到很多CSS和XPATH的语法。
更多的例子和表达式你也可以在这里找到。
对于每个onxxx事件,象onclick,onchange,onsubmit等,都有一个和jquery同意义的对应的事件,而其他事件,象ready,hover等,都是为某个方法提供。
你能在visual jquery里发现一个完整的事件列表。

还有种写法是jquery特有的(chain),就是把一个选择器的所有的事件并排列出来,中间用”.”隔开:
$(document).ready(function() {
    $("#orderedlist").find("li").each(function(i) {
        $(this).html( $(this).html() + " BAM! " + i );
    });
});




一个你经常面对的任务是在事件里边执行函数。比如这样
$(document).ready(function() {
    // use this to reset a single form
    $("#reset").click(function() {
        $("#form")[0].reset();
    });
});




这个代码只是ID为form的表单执行reset()方法。但是万一你有很多个表单需要执行呢?那么你可以这样写:
$(document).ready(function() {
    // use this to reset several forms at once
    $("#reset").click(function() {
        $("form").each(function() {
            this.reset();
        });
    });
});




另外一个你必须面对的问题是选择某个或某几个元素。Jquery提供了filter()和not()方法。当filter()是过滤一些适合filter()表达式元素,而not()是删除和not()表达式相反的元素。当你想选择所有的li元素,并且不包含ul子元素呢?你可以这样写:
$(document).ready(function() {
    $("li").not("[ul]").css("border", "1px solid black");
});




结果是除了包含ul子元素的li,其他所有的li都得到了一个border.可能你也想选择有name属性的anchor(<a>):
$(document).ready(function() {
    $("a[@name]").background("#eee");
});




要匹配属性的值(value),我们可以用”*=”来代替”=”
$(document).ready(function() {
    $("a[@href*=/content/gallery]").click(function() {
        // do something with all links that point somewhere to /content/gallery
    });
});




直到现在,我们已经学到了很多选择器的使用。这里还有种情况你需要选择前一个或后一个元素。想一想starterkit.htm里的FAQ,当你click问题的时候,它是怎么实现隐藏和显示的呢?代码是这样的:
$(document).ready(function() {
    $('#faq').find('dd').hide().end().find('dt').click(function() {
         var answer = $(this).next();
         if (answer.is(':visible')) {
             answer.slideUp();
         } else {
             answer.slideDown();
         }
     });
});




因为上面只有唯一一个选择器(#faq),我们用chain来减少代码的长度和提高代码的易读性和表现性.这里要说明一下,如果按原文翻译过来我想很多人都看不懂,感觉他自己也没怎么说明白。我说说我自己的理解:
‘dd’和‘dt’都是#faq的子元素,find()的作用就是找到它的子元素。End()应该和next()搭配的,end()实质上是把 ‘dd’过滤了,也就是next()的时候实质上是参考的’dt’。这样每个’dt’的next就是‘dd’,挺容易实现的。要是还不明白你可以边参考边照着做一遍。

除了同属元素外,我们也可以选择父元素:
$(document).ready(function() {
    $("a").hover(function() {
        $(this).parents("p").addClass("highlight");
    }, function() {
        $(this).parents("p").removeClass("highlight");
    });
});



很容易看懂,p就是a的父元素。

让我们回顾一下前面所学的,jquery有很多地方能使代码更简洁因此容易读和保持。下面的就是对$(document).ready(callback)符号的一个简单描述
$(function() {
    // code to execute when the DOM is ready
});





好吧,让我们来写个hello , world ,来结束第一天的课程,相信你一定会写了吧
$(function() {
    $("a").click(function() {
        alert("Hello world!");
    });
});




现在,基础已经掌握了,下次我们将探索一下Jquery的其他方面(ajax)

4.Rateing:使用AJAX
在这部分我们写了一个简单的ajax应用,它的目的是允许用户rate(评估)一些事情,就象youtube.com一样.
我们需要写一些代码.例子中用到了一个php文件来读取"rating"的参数和返回rating个数(count)和平均rating(array_sum/count).你可以看一看starterkit里边的rate.php代码.
我们需要这个例子工作在ajax上,因此我们用jquery写一个必要的标签并且把它追加到一个ID名为”rating”的div容器里边.代码如下:
$(document).ready(function() {
    // generate markup
    var ratingMarkup = ["Please rate: "];
    for(var i=1; i <= 5; i++) {
        ratingMarkup[ratingMarkup.length] = "<a href='#'>" + i + "</a> ";
    }
    // add markup to container and applier click handlers to anchors
    $("#rating").append( ratingMarkup.join('') ).find("a").click(function(e) {
        e.preventDefault();
        // send requests
        $.post("rate.php", {rating: $(this).html()}, function(xml) {
            // format result
            var result = [
                "Thanks for rating, current average: ",
                $("average", xml).text(),
                ", number of votes: ",
                $("count", xml).text()
            ];
            // output result
            $("#rating").html(result.join(''));
        } );
    });
});



上面的代码片断产生了5个<a>元素并且把它们追加到了id为”rating”的div容器里.第一次加载页面后,所有的<a>元素都包含在div容器里,然后再加上个click事件。当<a>被click的时候,一个post请求被发送到rate.php文件里,并且通过rating: $(this).html()传递参数,经过处理PHP文件处理后把结果作为xml写进div容器

如果你电脑上没装php的运行环境。你可以在这里看到这个例子的效果。

对与一个不用javascript也能工作的rating例子,你可以访问softonic.de

你也能在这里或者在visual jquery里边发现更多的关于ajax的帮助文档。

当靠AJAX加载内容的时候,一个非常普遍的问题是:当加载事件句柄到你文档的时候也需要将该事件应用与你加载的内容里,所以你不得不在内容加载之后提供这些事件句柄。为了防止代码重复,你应该委派一个函数。例如:
// lets use the shortcut
$(function() {
    var addClickHandlers = function() {
        $("a.clickMeToLoadContent").click(function() {
            $("#target").load(this.href, addClickHandlers);
        });
    };
    addClickHandlers();
});




上面当DOM准备好后addClickHandlers只应用了一次,并且每次用户点一个样式为class. clickMeToLoadContent的时候内容已经完成加载了。
请主义函数addClickHandlers被定义成了一个局部变量,而非全局函数(function addClickHandlers() {...}).。请坚持这种写法,因为它可以避免全局变量定义过多引起的冲突。

另外一个非常普遍的AJAX回调问题是参数。假设你需要传递一个额外的参数,那么把回调封装到一个函数里能够实现,如下:
// get some data
var foobar = ...;
// specify handler, it needs data as a paramter
var handler = function(data) {
  ...
};
// add click handler and pass foobar!
$('a').click( function(event) { handler(foobar); } );

// if you need the context of the original handler, use apply:
$('a').click( function(event) { handler.apply(this, [foobar]); });




5.各种动态效果的实现:用FX
Jquery能实现简单的动态效果,比如显示(show)和隐藏(hide)
// $(document).ready(function() {
    $("a").toggle(function() {
        $(".stuff").hide('slow');
    }, function() {
        $(".stuff").show('fast');
    });
});




发挥你的想像,你能用aninate()创建任意的组合:
// $(document).ready(function() {
    $("a").toggle(function() {
        $(".stuff").animate({
            height: 'hide',
            opacity: 'hide'
        }, 'slow');
    }, function() {
        $(".stuff").animate({
            height: 'show',
            opacity: 'show'
        }, 'slow');
    });
});




interface 插件收集里,你能发现很多奇特的效果。这个站点也提供一些演示。

6.分类:用表格分类插件
该插件是运行在客户端的,所以你只要在你文件里包含jquery和插件的文件并且写出你想如何分类。试试下面的例子。在starterkit.htm里添加下面一行代码:
<script src="lib/jquery.tablesorter.js" type="text/javascript"></script>


把插件包含进去后,你还需要在custom.js里写
$(document).ready(function() {
    $("#large").tableSorter();
});




点击表格的头部看看它是怎么工作的。
这个表格也能够用高亮隔行显示来实现斑马线效果。代码如下:
$(document).ready(function() {
    $("#large").tableSorter({
        stripingRowClass: ['odd','even'],    // Class names for striping supplyed as a array.
        stripRowsOnStartUp: true        // Strip rows on tableSorter init.
    });
});




这里有更多的例子和演示在tablesorter homepage
当你用jquery久了之后会发现把你的代码(功能模块)作为插件封装在一个包是多么有用,不仅你自己或你的公司能重用这些代码(功能模块),也能在一些社区里共享。下面我们将来看看如何构造一个插件!

7.插件:写你自己的jquery插件
其实为jquery写插件是很简单的。如果你按照下面的规则,整合你的插件将非常容易。
1.给你的插件命名。让我们叫它”foobar”
2.创建一个文件名为:jquery.[你的插件名].js 比如:jquery.foobar.js
3.扩展jquery的内部对象,创建一个或多个插件的方法,比如:
jQuery.fn.foobar = function() {
    // do something
});



4.用帮助函数创建一个对象(可选)
jQuery.fooBar = {
height: 5,
calculateBar = function() { ... },
checkDependencies = function() { ... }
};



然后你能在你的插件里边调用这些帮助函数
jQuery.fn.foobar = function() {
// do something
jQuery.foobar.checkDependencies(value);
// do something else
};



5.创建一个用户能修改的默认的设置(可选)
jQuery.fn.foobar = function(options) {
var settings = {
value: 5,
name: "pete",
bar: 655
};
if(options) {
jQuery.extend(settings, options);
}
};



然后你能用下面的默认调用该插件(有选项)
$("...").foobar({
    value: 123,
    bar: 9
});




如果你要发布你的插件,你应该提供一些例子和演示。
现在你有一个基本的认识了吧,让我们运用自己的知识和创造力来写我们自己的插件
有很多朋友操作表单这样来结束代码:
$("input[@type='checkbox']").each(function() {
    this.checked = true;
    // or, to uncheck
    this.checked = false;
    // or, to toggle
    this.checked = !this.checked;
});



请注意,无论什么时候,当你的代码出现each时,你应该重写上面的代码来构造一个插件如下:
$.fn.check = function() {
    return this.each(function() {
        this.checked = true;
    });
};



于是插件可以这样用:
$("input[@type='checkbox']").check();



现在你也能写一些插件为uncheck()和togglecheck().但是我们可以扩展插件来接收一些选项.
$.fn.check = function(mode) {
    var mode = mode || 'on'; // if mode is undefined, use 'on' as default
    return this.each(function() {
        switch(mode) {
        case 'on':
            this.checked = true;
            break;
        case 'off':
            this.checked = false;
            break;
        case 'toggle':
            this.checked = !this.checked;
            break;
        }
    });
};



然后用户能够这么使用:
$("input[@type='checkbox']").check();
$("input[@type='checkbox']").check('on');
$("input[@type='checkbox']").check('off');
$("input[@type='checkbox']").check('toggle');




8.下一步(展望)
如果你计划学习更多的javascript,你应该考虑用firefox的firebug插件来调试你的代码.它为javascript的调试提供了一个控制台,一个调试器和其他有用的东西.
如果你有任何问题不能解决,请给我们发邮件jQuery mailing list.


声明:本站作品均由Jquery中国小组翻译,制作.无任何商业用途(不允许拿本站内容做任务商业行为,违者追究法律责任),允许转载,但须说明出处.
posted @ 2007-09-09 09:52 我们走在JAVA的光明大道上 阅读(988) | 评论 (0)编辑 收藏
  2007年5月8日

双鱼座的神话


  维纳斯为防止丘比特再度失散,用一条绳子将两个人的脚绑在一起,然后再变成两条鱼,逃脱怪物的追赶。

双鱼座的特点


总深陷在灵和欲之间,退缩在一种自创的梦幻之境里。他们爱做梦,也无时不在幻想,也常将这种情结搬到现实环境中,而显得有些不切实际,但他们是善良的, 有绝对舍己助人的牺牲奉献精神;他们是敏感、仁慈、和善、宽厚、与世无争、温柔、多愁善感的纯情主义者,也是十二星座中最“多情”的一个。
  双 鱼是个古老复杂的星座,包含了太多的情绪,所以在情绪方面起伏非常的大,矛盾、敏锐的感性、知性、诗情和纤细的触觉,种种冲击之下便产生了无与伦比的艺术 天才。例如在我们所研究的古典音乐大师之中,双鱼座便是十二星座中最多的。也许,这也是他们另一种沉醉的表现。总之这是一个充满神性、魔性、理解力,观察 力强却又优柔寡断、缺乏自信、神经质的、自制力不强、又善变的像谜一般的星座。



真实的双鱼座(1)

看看现在铺天盖地的关于双鱼的各种传说,分析,解释。似乎无一例外的把双鱼当作了一个女人的星座,动不动就是流眼泪,唉声叹气。可惜可叹,如果双鱼真的只是这样的一个星座,那么可以说没有一个人愿意去做双鱼,而历史上也不会有什么著名的双鱼人物了。
现在让我还给你一个真实的双鱼座。

==========   最本质的部分:思考   ==========


双鱼座的最本质特点是什么?善良?懦弱?温柔?不是,我告诉你,是思考(在很多情况下,是过多的思考)。
是的,双鱼座的一切特性,都来自于他过多的思考,或许世上没有第二个星座比双鱼座更能洞察别人的心理,更能分析事情的本质。
你可以称之为敏感,但是一旦这种敏感能够正确的使用,那么没有人能比双鱼座更快的学会人情世故,在这一方面,有一个双鱼座的伟人做的尤其出色,他的名字是周恩来。

因为思考的太多,所以双鱼座的人就算不是真正善良的,也至少是表面善良的。对于双鱼来说,善良与其说是本质,不如说是双鱼喜欢的一种生活方式,以善良的方式活着,是轻松而又受人尊敬的,一般的双鱼座很早就能洞察到这一点。
再 谈谈温柔,这一点,不管是哪篇文章,都不会忘了提双鱼座的温柔。是的,双鱼的确是温柔的。因为双鱼总能敏感的体会到对方的细微变化,时刻了解到对方心意的 转变,表现在行动上,就是能尽快的知道,什么时候应该为女孩披上自己的外衣,什么时候应该停下手里的活,转过身去和女友好好的说话。



==========   与众不同的部分:信仰   ==========


  双鱼的信仰就是没有信仰!

在双鱼的世界里面,没有绝对的对和错,如果发生了一件事,他第一件做的事情是去理解这件事,去分析这件事,而不是去判断这件事是对的还是错的。   下面引用一段话说明双鱼的这个特点:
“鱼 座男人没有偏见,没有亲自穿著鹿皮走几哩路,他不会评断印地安人;没有试试赤脚走路,他也不会评断裸体主义者。甚至这些做了,他还是会满心谅解而不会过于 批评。他很少冷酷的指控,倒是每每温暖的忍耐,他甚至会试试了解他的岳母,天底下有几个男人能这样?海王子拥有罕见的同情精神,他的朋友向他吐露秘密而从 不担忧会把他吓著,要吓到鱼起码需要两吨以上的炸弹。如果你和我以及你的鱼儿三人同坐一室,一个男人走进来告诉我们他有些担忧,因为他重婚,在四个州各有 一个老婆,你可能眼睛瞪得大大瞧他,冒著火,心想监狱是最适合他的地方,我可能鄙夷的说他是个卑鄙的**,但你的鱼儿很可能问:“那四州?你爱不爱她们其 中任何一个?”鱼很好奇,但防震。对他来说,这个家伙需要一缸子同情以及好得要命的律师。”
有一位伟人利用了这点特性,结果成就了科学史上的神话,他就是爱因斯坦。



==========   双鱼的致命缺点:懦弱   ==========


现实中的双鱼座确实给人太多的失望,懦弱,多疑,自卑,优柔寡断,没有主见……一个双鱼座或许没有上面全部的特点,但至少会有一,二个。就算是伟大如周恩来,有时候难免有些优柔寡断和没有主见,当然,这种时候不多。
造 成双鱼座优柔寡断的原因很简单。因为同样一个选择,在一个射手看来,只需要考虑2样东西,但是在双鱼看来,却需要考虑10样东西,因为他想的实在是太多 了。简单的说一句话,双鱼都会想到它会给周围的人带来多少种不同的影响,它会让人对自己有怎么样的看法,会不会造成误解。(虽然很多时候,双鱼会冲动的把 一些话脱口而出)

至于多疑,这点和自卑联系的比较紧密。虽然双鱼座能轻易的了解对方的意图,看透事情的真相,但是却往往不能坚持住自 己的观点,这种不能坚持大多数是因为双鱼座自己不愿接受这个事实,也有很多时候是因为双鱼对自己不够自信。关于前一点,比较突出的一个例子是,双鱼座的女 孩不到男孩子直截了当的告诉她,他不爱她了,女孩就总是还抱有一线希望,虽然女孩心里明白的很。      
懦弱呢?关于这点,和信仰联系在一起。你一定觉得很奇怪,懦弱和信仰又有什么关系呢?

信 仰是种很可怕的力量,他可以让一个人做出平时不敢做的事情,拥有不该拥有的勇气,牺牲不该牺牲的东西。而双鱼恰恰是没有一丁点信仰的,就算有,也不过是为 了给生活加一点调味剂,或是给自己找一个避难所。对于双鱼来说,自己能过舒适,安稳的日子,比什么都重要。富贵如浮云,最想的开这点的就是双鱼座了。至于 爱国什么的,酒饱饭足的双鱼可以慷慨激昂,也会不惜重金施于,但是只是建立在自己有好日子过的前提下。

接下来,可以解释下双鱼的懦弱了。

只 要能让自己和爱人平平安安,有什么不可以忍受的呢?什么尊严,什么气节,见鬼去吧。所以只要不把双鱼逼到绝境,你尽可以嘲弄双鱼的懦弱。每条鱼的忍受范围 都不同,但一般都比正常人多那么一点点。但是如果你不小心让一条鱼觉得无路可走了,那么你真的要小心了。鱼可以践踏人间一切法律,无视所有道理,更不会考 虑自己的尊严和人格。你务必要相信这一点,虽然这种时候很少,但那只不过是因为上帝不想让人们经常看到地狱的惨状。



==========   双鱼的最大优点:感情   ==========

与其说双鱼是个为爱情而活的星座,不如说双鱼是个为感情而活的星座。   对于双鱼来说,世界上最重要的东西是感情,一条精神上满足的鱼,可以没有其他东西,就已经是最幸福的人(当然,绝大多数情况下,没有其他东西,很难精神上满足)。

任何感情对于双鱼来说都是重要的,爱情很重要,但不见得会比亲情更重要,在双鱼的眼中。

对 于鱼来说,感情是单纯的,是单独的。鱼可以原谅对方的一切,只要那个人是真心对他好的。你可以十恶不赦,可以吃喝嫖赌,可以之前是人尽可夫的妓女,可以是 个卑鄙无耻的骗子,都可以原谅,只要鱼能确定你是真心的喜欢他,对他好。但是请注意一点,大部分的鱼都比你聪明,不要以为你的小伎俩可以骗到鱼,你是不是 真心喜欢他,他比谁都清楚。

对于一个男孩子来说,双鱼女孩能给你对于一个女孩子想要的一切,温柔,爱你不顾一切,可爱(很多时候是装的, 鱼大多数是很聪明的),体贴……对于一个女孩子来说,双鱼男孩……嗯……看你的运气了,如果你遇到的鱼是个没有志气,不想做事,玩玩乐乐的鱼,而且他已经 25岁左右了,那么好心的提醒你,还是尽早离开他吧。除非你是个富婆,或者你只是找个情人(没有人比双鱼更适合做情人了:安全快乐而无副作用)。否则,你 会经历世间最凄凉的婚姻和生活,阿门………………
那么如果你遇到的鱼是有事业心,能上进,肯做事的鱼,或者干脆就是事业有成的鱼,那么真的是 恭喜你,你是千万少女中最幸运的一个,再挑剔的女人也无法对一个有上进心有事业的鱼有更多的要求了。你可以得到世界上一切的温柔和快乐,包括用钱买的到的 和用钱买不到的,鱼很乐意把他的一切奉献给他爱的人,看到他爱的人开心,他会更开心。大部分的鱼的“一切”仅仅只有感情,而没有物质,但是我们现在讨论的 是最优秀的那种鱼,那种能随时把名望和财富送给你的鱼,现在你知道你有多幸运了吧。



=========   提到感情不得不提的:公平   =========

很奇怪吗?

公平对于双鱼来说,是个很重要的单词。

双鱼没有普遍意义上的价值观,是非观,你不能用这件事这样做是对的,那样做是错的来说服一个双鱼座。永远记住,鱼的世界里很少有对错。

那么鱼又是怎么来处理他和别人(尤其是爱人的关系)呢? 就是公平。
     
如果鱼曾经有过十几,二十个女朋友,那么他就不会在意你以前有过多少个男朋友,如果鱼一个不小心跑出去玩了一夜情,那么你一夜情的时候,他也会选择无所谓。

好 吧,就算你的鱼纯情的一塌糊涂,你是他(她)的第一次,他也可以原谅你的曾经花心,一时花心,可能会的花心,只要你能用足够的关心和真心的喜欢弥补。鱼大 致兑换了下你的关心(兑换比例只有天知道了,呵呵),如果觉得双方大致公平的(相对于他对于你的感情付出),那么他就无所谓,就会原谅你。     
所以和鱼相处是件很简单的事情,只要你能保证你给他的和他为你付出的差不多多,就可以了。至于伦理道德嘛...嗯,讲真的,鱼从来不是教条主义者。      
反过来,如果你让鱼觉得你对他的关心不够多,对他的爱不够多(不够多是指没有他给你的多),那么鱼会在痛苦之后,也相应的减少对你的关心和爱,不要怀疑,这方面,鱼比谁都表现的现实和斤斤计较。



==========   感情中的完美主义   ==========

鱼在意的东西很少,所以很不幸,鱼对于他在意的东西就是完美主义者的态度。
对于鱼来说,完美的情人不是忠贞不二的情人,不是事业爱情兼顾的情人,也不是外形完美的情人。鱼要求的是“完美的爱”。

你可以不经常说我爱你,但是你说的时候,一定要是真心实意。

你可以很少陪他逛街,但是你陪的时候,一定要是真的开开心心。

你也可以对他说很少的情话,但是你要保证,你对别人说的情话更少,而且你对他说的是真心的话。

对 于鱼来说,欺骗和做作是最不可原谅的。很多人以为简简单单的对鱼说几句我爱你,固定性的发些短信问候鱼,经常为鱼买些好东西就能让鱼觉得被爱了。真不幸, 大部分鱼都聪明过了头,一般都能轻松辨别哪些举动是真心的,哪些不过是手段(如果你曾经用这些手段征服过双鱼女生,也别得意,只不过是双鱼女生比男生更难 以拒绝别人而已)。

所以,请诚实一点对待鱼,爱他多少就给他多少,他也会给你同样多。这至少比他生你的气好的多,不是吗?



==========   双鱼真的浪漫吗?   ==========


所有的星座解释都会说双鱼是浪漫的,但是所有和双鱼(特别是双鱼男生,一般浪漫都是指男生做的事情)接触过的人,都往往感觉不到双鱼的浪漫,到底是为什么呢?难道双鱼并不浪漫?

我给你个肯定的答案,双鱼绝对浪漫,他脑子里面的浪漫点子不仅包含了所有好莱坞大片的经典场景,还有更多他自己的原创镜头,他时不时的都在幻想浪漫的场面,一个鱼可能在他18的时候就开始想他30岁结婚的布置。

那么为什么现实中是两样呢? 因为2点,自卑和善良。
前一点很好理解,大部分的浪漫需要自信。很多时候,不是鱼不想浪漫,而是不好意思和没胆子那么做,你能理解是吧,呵呵。

那么自信的鱼呢?为什么他也不浪漫?

因为他没有遇到合适的人,因为他善良。

双 鱼的爱情大部分是有些被动的。鱼总是轻易的喜欢上一个女孩子(注意,我用的单词是喜欢),然后开始和这个女孩开始交往,然后十有八九,会发现这个女孩不是 能给自己完美的爱的女孩(这是肯定的,遇到最合适自己的人哪有那么容易),鱼很现实的知道,他和这个女孩不可能有将来的,2个人能拥有只能是一段回忆。那 么对鱼来说,绝大部分的情话都会说不出口,因为鱼自己知道这些话都是骗人的,很多浪漫的举动做不出来,因为鱼不敢让女孩陷的太深,怕分手的那一天女孩太伤 心。很多人说处女,金牛的人想的多,其实鱼想的并不比他们少,只不过犹犹豫豫又舍不得的鱼,就算明了的知道和女孩没有将来,也不会点破,只会静静的维持, 享受拥有的每一天。但是这样的情况下,鱼的善良就让鱼忍住了很多浪漫的情话和行动。

我这么说是不是显的鱼很高尚?呵呵,没有什么真正高尚的人。鱼能如此的为女孩着想,是因为这么做能让鱼觉得自己很伟大,有一种悲剧式的美感,鱼愿意让自己沉浸在这种自我的意淫中。

当然,这样至少比不顾别人的死活,只图自己开心要好的多是不是? 所以还是应该为鱼们鼓鼓掌的。

所以,如果有一天,你看到一条浪漫无比的鱼,不要怀疑,他已经认定你们有个美好的未来,他已经知道他不会给你太多的伤心了,那你还犹豫什么?上去拥抱你的幸福吧。




=========   结语:什么样是好的双鱼?   =========

双鱼有很多缺点,但是大多数都可以原谅。除了2条,懒惰和犹豫。      而双鱼要成为一条好鱼,所需要的东西很简单,事业。

其实不用去提醒鱼们其他的事情了,他们自己都能想明白。只需能保证鱼能稳步进行他们的事业就可以了。

一旦鱼用心去赚钱了,那么他肯定能赚到钱。但是这一点很难,真的很难,如果有一天,你看到一条生龙活虎的鱼,千万不要放过,好好的捆住他,很有可能,他会带给你所有的梦想。

posted @ 2007-05-08 01:19 我们走在JAVA的光明大道上 阅读(423) | 评论 (0)编辑 收藏
  2007年5月5日
there is a will there is a way



posted @ 2007-05-05 15:33 我们走在JAVA的光明大道上 阅读(211) | 评论 (0)编辑 收藏
人是一种害怕孤独寂寞的动物!无论哪个国家,什么人种,任何年龄,男人或是女人,都是...............
posted @ 2007-05-05 13:19 我们走在JAVA的光明大道上 阅读(215) | 评论 (0)编辑 收藏
  2007年5月3日

 

CREATE TABLE img (id_num int IDENTITY(1,1), company_name sysname)
INSERT img(company_name) VALUES ('New Moon Books')
INSERT img(company_name) VALUES ('Lucerne Publishing')
-- SET IDENTITY_INSERT ON and use in img table.
SET IDENTITY_INSERT img ON

DECLARE @minidentval smallint
DECLARE @nextidentval smallint
SELECT @minidentval = MIN(IDENTITYCOLFROM img
 
IF @minidentval = IDENT_SEED('img')
    
SELECT @nextidentval = MIN(IDENTITYCOL+ IDENT_INCR('img')
    
FROM img t1
    
WHERE IDENTITYCOL BETWEEN IDENT_SEED('img'AND 32766 AND
      
NOT    EXISTS (SELECT * FROM img t2
          
WHERE t2.IDENTITYCOL = t1.IDENTITYCOL + IDENT_INCR('img'))
 
ELSE
    
SELECT @nextidentval = IDENT_SEED('img')
SET IDENTITY_INSERT img OFF
IDENTITYCOL:返回表中identity列.
IDENT_SEED(表名):IDENT_SEED() 函数返回表中标识性字段identity column 的初值.
IDENT_INCR(表名):返回identity列的增量值.
SET IDENTITY_INSERT:允许将显式值插入表的标识列中

还是不能完全理解,请哪位高人分析分析!
posted @ 2007-05-03 04:16 我们走在JAVA的光明大道上 阅读(1698) | 评论 (0)编辑 收藏
 纤云弄巧,飞星传恨,银汉迢迢暗度。
          
          柔情似水,佳期如梦,忍顾鹊桥归路?

  金风玉露一相逢,便胜却人间无数。

          两情若是久长时,又岂在朝朝暮暮?
  
                           ——秦观《鹊桥仙》



posted @ 2007-05-03 04:02 我们走在JAVA的光明大道上 阅读(233) | 评论 (1)编辑 收藏
不知道有多少人会对这个感兴趣!

自己提出问题,自己来解答!现在准备找找资料!

------------------------------------------------

GOOGLE 上找来的资料:http://www.cjsdn.net/post/view?bid=1&id=9965&sty=1&tpg=1&age=0


给出地址,也不要再转载了。

大家都能搜到的!


posted @ 2007-05-03 02:44 我们走在JAVA的光明大道上 阅读(1518) | 评论 (1)编辑 收藏
  2007年5月1日
《JAVA与模式》这本书,一年前就买了,但说真的,当时真的是只看得懂字,看不明白道理!
所以当有空时我就又拿出来翻翻,这次对于第3章的软件可维护性与可复用性,特别有感触!

我也不想抛很多技术名词出来(开-闭 原则之类的),亲身经历告诉我,如果看的人不是自己明白其中的道理,那他看多了这种名词,就习惯的把他当口头语来用了,已经明白的人,自然有比我更高的认识。

所以我选择一种比较“俗”的方式,说出我的体会。(因为我就是一俗人)

还是回到接口上来吧,什么时候接口才能起作用?当你需要处理将来不断变化的需要时!

有这么一个场景:

某导演要拍个大片,然后开会时他对助手说出要找女一号,并对女一号要求如下:

1。全国知名女性;
2。有绝世容貌;
3。身材一流;

好了先说这3个吧。

助手根据要求去找来 某某女明星A,但助手知道,导演老人家不会一看就看中的,所以准备联系了女明星B,女明星C.

果然,导演开始觉得女明星A还不错,但是没过2天,觉得要换,(演艺圈的事谁说得清呢),这时助手马上有B,C来代替!

助手的工作应变十分的好,导演大大的有赏!

现在我们来简单分析下:

把导演对女明星的要求作为接口的定义。
该接口是三个特征的集合:

1。全国知名女性;
2。有绝市容貌;
3。身材一流;

导演只是根据符合这3个特征要人,而助手根据这3个特征去找人,显然女明星 A,B,C 必须同时符合这3个特征,(也就是实现了这个接口)

导演在不满意  女明星 A 后,能迅速找到 B ,C 做替换,助手自然是功不可没,但根本原因,是因为导演的要求是放在 特征的集合 上.

试想如果导演当初是指名到姓的要谁谁做女一号,然后找来又不满意了,要求这么具体,助手哪能那么快找来其他人代替?

下面开始要抛点名词了,我把这里导演的先见之明叫做 “依赖抽象”!

public interface  女一号{

    public void 全国知明女性();
    public void 有绝世容貌();
    public void 身材一流();

}

public class 女明星A implements 女一号{

    public void 全国知明女性(){
     张某某;
    }
    public void 有绝世容貌(){
    貌似天仙;
    }
    public void 身材一流(){
    三围(75c,38,80)
    }
public class 女明星B implements 女一号{

    public void 全国知明女性(){
     某某姐姐;
    }
    public void 有绝世容貌(){
    吓死路边一头牛;
    }
    public void 身材一流(){
    三围(80d,45,95);
    }

public class 女明星C implements 女一号{

    public void 全国知明女性(){
     某某神仙;
    }
    public void 有绝世容貌(){
     人见人爱;
    }
    public void 身材一流(){
    三围(70c,35,80);
    }
}






posted @ 2007-05-01 12:17 我们走在JAVA的光明大道上 阅读(527) | 评论 (2)编辑 收藏

第一次写接口时,第一个感觉就是,写接口跟没写一样。定义一个接口,马上去写实现类!其实此时就是用着面向过程的思路写程序,然后挂了个羊头,说起来怎么也有个接口了!

今天看了一位老兄写的对于接口的心得体会,真是太有同感了!

不要为了接口而接口,当你把自己不当做是个程序员来思考时,就能把用人的思想来思考了,你不会写程序,就不会考虑细节的实现了!此时你所关注的问题就是比较抽象的了,你看这不正符合面向对象的原则吗?当年张三丰教张无忌打太极就是要把招式全忘了,你要定义接口前就先忘了自己是个程序员吧!
 
当然不可能有100%的抽象,最终你还是要回到实现细节上来的,可此时你已是学会了太极的张无忌了!

posted @ 2007-05-01 04:01 我们走在JAVA的光明大道上 阅读(425) | 评论 (1)编辑 收藏

1.浮躁: 凡事欲速则不达,可现在太多的人希望能走捷径,最终结果呢? 相信做过这条路的人不说也知道,还在走的人对他说了也没用!


2.迷茫: 我们国家看似软件行业蓬勃发展,软件公司欲与各地发廊试比多,可招聘场上招人的招不到可用之人,应聘的人...(后半句不说也罢,说得大家都伤心!)难怪每家发廊门口都要贴张急招按摩小姐,工资高,待遇佳!

3.拿来主义:拿来主义本来也是件好事,可当大家都用拿来主义时,我们可以换个名词叫“天下文章一大抄”了。曾几何时,你是否有在GOOGLE上搜索一个问题,接着看到无数一样的答案,却不是你想要的那一个时的无奈!

4.新技术名词:这年头新技术发展势头强劲,搞得大家都来不及学,只得把新技术的名词背背熟,为啥?招聘会上怎么也能吹上2句!

5.一代后浪推前浪,前浪顶死后浪:新人到进公司,一种只要混个时间上的经验,一年半载后跳槽加工资,另一种抱着学习的态度却无人可学或是无人肯教。第三中最幸运了,有个好老大肯教肯带!烧高香!

6.TODO...
posted @ 2007-05-01 03:05 我们走在JAVA的光明大道上 阅读(304) | 评论 (1)编辑 收藏
仅列出标题  
test html.....