第一次发现全等(===)这个比较运算符:

 

===     全等(值和类型)

    
<script type="text/javascript">
var x = 5;
document.writeln(x 
== 5);    // true
document.writeln(x == '5');    // true
document.writeln(x === 5);    // true
document.writeln(x === '5');    // false
document.writeln(x != '5'); // false
document.writeln(x !== '5');    // true
</script>
posted @ 2009-04-20 19:27 jeky 阅读(103) | 评论 (1)编辑
★ 协变:

 委托的类型返回值是它所指向函数的返回值得基类.

    private void InitPage()
    {
        HandlerMethod handler1 
= Method1;
        HandlerMethod handler2 
= Method2; // 协变
    }


    
private class Animal { }
    
private class Dog : Animal { }

    
private delegate Animal HandlerMethod();

    
private static Animal Method1() { return null; }
    
private static Dog Method2() { return null; }   

 


★ 逆变:

委托的类型参数是它所指向函数的参数的派生类.

    private void InitPage()
    {
        HandlerMethod handler1 
= Method1;
        HandlerMethod handler2 
= Method2; // 逆变
    }


    
private class Animal { }
    
private class Dog : Animal { }

    
private delegate void HandlerMethod(Dog dog);

    
private static void Method1(Dog dog) { }
    
private static void Method2(Animal animal) { }   


posted @ 2009-04-04 20:51 jeky 阅读(21) | 评论 (0)编辑
    ----- 传统方法
    
    /// <summary>
    /// 判断一个整数是否为偶数。
    /// </summary>
    /// <param name="n">int类型的整数。</param>
    /// <returns></returns>
    public static bool IsEven(int n)
    {
        return n % 2 == 0;
    }
    
    ---- 二进制方法    
    
    在二进制情况下,奇数的最后一位总是1,而偶数的最后一位总是0。
    所以我们现在只要检测数字的最低位是否为0,就可以知道它是不是偶数了。
    如何检测?这个数字和1进行“与运算”,结果为1则是奇数,结果为0则是偶数。
            
    位逻辑与运算将两个运算对象按位进行与运算。与运算的规则:1与1等于1,1与0等于0。
    比如:10010001(二进制)&11110000等于10010000(二进制)。
    

    /// <summary>
    /// 判断一个整数是否为偶数。
    /// </summary>
    /// <param name="n">int类型的整数。</param>
    /// <returns></returns>
    public static bool IsEven(int n)
    {
        return (n & 1) == 0;
    }    
   
posted @ 2009-03-31 21:17 jeky 阅读(41) | 评论 (0)编辑
看图例:



看代码:

    /// <summary>
    
/// 选择排序。
    
/// </summary>
    
/// <param name="arrInt"></param>
    private void Sort(int[] arrInt)
    {
        
// 因为第i个值,需要和i+1之后的值比较,所以这里需要 -1。
        for (int i = 0; i < arrInt.Length - 1; i++)
        {
            
int min = i; // 最小值的位置
            for (int j = i + 1; j < arrInt.Length; j++)
            {
                
if (arrInt[j] < arrInt[min])
                    min 
= j;
            }
            
if(min != i)
            {
                
// 最小值和第i个记录交换
                int temp = arrInt[i];
                arrInt[i] 
= arrInt[min];
                arrInt[min] 
= temp;
            }
        }
    }
posted @ 2009-03-31 20:22 jeky 阅读(115) | 评论 (1)编辑

让我笔试吃亏的题目:单例模式。

因为是纯英文试卷,而且我从来没有用过单例模式。

答题时,有点儿懵了,竟然在类的实例构造函数里瞎写一番。

回来之后,终于静下来心,踏踏实实地学习了一下。记录在此。


1. 单例的目的是什么?  
    这个应该很明显,保证一个类只有单一的实例,也就是说你无法通过New或CreateInstance来创建这个类的一个新实例。    
    
2. 单例的好处在哪里?
    当一个对象在程序内部只能有一个实例的时候,它可以保证我们不会重复创建,而是始终指向同一个对象。    

3. 应用场景:

    如(记录系统日志.log)


4. 参考文章:
    《Implementing the Singleton Pattern in C#》
    http://www.yoda.arachsys.com/csharp/singleton.html

 

simple thread-safety

    // 密封类,不允许派生子类
    public sealed class Singleton
    {
        
static Singleton instance = null// 静态实例
        static readonly object padlock = new object(); // 静态只读锁

        Singleton() { } 
// 私有的构造函数

        
// 公共的静态属性:获取类的实例
        public static Singleton Instance
        {
            
get
            {
                
lock (padlock)
                {
                    
if (instance == null)
                        instance 
= new Singleton();
                }
                
return instance;
            }
        }
    }

 

 

not quite as lazy,

but thread-safe without using locks

    // 密封类,不允许派生子类
    public sealed class Singleton
    {
        
static readonly Singleton instance = new Singleton(); // 静态只读实例

        
static Singleton() { } // 静态构造函数,用于是初始化 instance 变量

        Singleton() { } 
// 实例构造函数

        
// 公共的静态属性:获取类的实例
        public static Singleton Instance
        {
            
get
            {
                
return instance;
            }
        }
    }
posted @ 2009-03-25 17:27 jeky 阅读(117) | 评论 (2)编辑

  从毕业到现在,已经有至少5年多的时间了。5年了,一直都从事着程序方面的工作,一直都是浑浑噩噩的过着。

  我是在南阳上的学,计算机专业,在学校时没有好好学习,毕业时有19门需要补考。不过,唯一让心欣慰的是,在学校那段时间,我一直对网页制作有着极大的爱好。现在看来,那种兴趣来自于我的虚荣心。因为我是在班上第一个会盲打字母的人、第一个会五笔的人、打字速度最快的、最先有QQ号、最先有个人主页的。就这样,在虚荣心的帮助下,我把HTML掌握得相当熟练。我在上机课上用记事本敲打着HTML,老师用赞许的目光看着我。我在汇编课上,给女老师写纸条,上面留着我的QQ、Emai和个人主页。以至于,到现在为止,不管是做网站、还是软件,我都是纯手写。

  第一份工作,是在郑州。靠着和应聘我的那位经理是我老乡的关系、靠着我的那种老实、靠着我的HTML和仅有的一点ASP知识,我在一家汽车公司做网站建设。

  接下来、再接下来,都是在郑州。HTML已经不值得去炫耀了,因为我的ASP动态语言已经掌握得相当纯熟了。至少说基本的一些网站应用,我都能付应下来了。

  当.NET出来之后,我慢慢地学着、惭惭地向这更高一级的编程语言迈进。用.NET实施了几个网站之后,在一位好同事好朋友的帮忙下,我来到伟大的首都-北京。

  到了北京,这个人才济济的大城市之后,发现自己是那么的渺小。在这个牛人满地的环境里,我不得不去学点东西。于是,我的.NET水平又上了一层,在工作的压力下,我也掌握了 SQL-Server、包括后来的 Oracle。在北京这几年,我做过大型网站、也做过一些项目,又稀里糊涂的当过项目经理、又承包过项目。

  一直以来,我都是一个相当沉着的人,遇事经常拖拉、从不知道“着急”二字是怎么写的。但是就在今天,我却感觉到非常地心慌。因为金融危机的原因,我承包的项目前段时间停工了。我的积蓄也不多了,我向往的那种自由,已经一去不复返了,我不得不为此重新找工作。在这种被动、又不情愿的情况下,我投了若干简历,都是石沉大海。智联招聘上面,我查看了一些职位的应聘情况,一般都是几千人投过,多着更是一万二万的。在这种情况下,招聘公司能看到我的简介的几率真是太微小了。

  我心慌,还有一个方面,是因为别人都在努力、上进。可是自己却一直原地踏步。在如此的社会中,不前进就是一种落后。其实,仔细想一下我现在学到的那些知识,大部分都是在工作中项目里学到的。现在想来,这些都是被动式地学习,虽说也能够进步,但是和主动式的相比较,自己还是差得太远了。一般情况下,只要能够满足项目需要,我就不再去深入研究了。几年了,不可能每一天都有项目压力、技术压力让我进步,所以一直以来都是这样这般浑浑噩噩、平平淡淡。

   我在想,要是我五年以来,我每天坚持学点东西,现在也不会如此。看看园子里的那些TOP100里面,应该没有一个像我这般不积极、不进取。像 TerryLee、Jeffrey、Dflying等等,我都不认识他们,但是从他们的文章中,我很清楚地看到了他们个个都是很积极、很努力、很上进的人。可是自己呢?我除了浮躁,还是浮躁!我经常想着不做技术转销售、不去上班当老板。我基本上一直都在这种浮躁的日子里生活下来的。

  26岁了,去年已经结婚了。浪费了五年时间了,我以后怎么办??我还能一个劲地浮躁吗???

posted @ 2009-03-23 23:53 jeky 阅读(2284) | 评论 (31)编辑

  最近在搞一个网站,需要在内容区域高亮显示一些关键词。本来想在后台页面用c#实现,后来感觉这样做不太可取。因为我想高亮的高键词有n个之多,在服务端循环处理的话,势必会影响效率、占用服务器资源。所以,才考虑使用JS来实现,代码如下:

 一个小类(可以放置到一个*.js文件中)

    function XP_Highlight()
    
{
        
this.KeyWords = null;
        
        
// 格式化关键词
        this.formatKeyword = function(content, keyword)
        
{
            keyword 
= keyword.replace(/(^\s*)|(\s*$)/g, "");
            
if(keyword == '')
                
return content;
            
var reg = new RegExp('('+keyword+')''gi');
            
return content.replace(reg, '<em>$1</em>');
        }

        
        
// 重绘内容区域
        this.refreshContent = function(contentID)
        
{
            
var content = document.getElementById(contentID).innerHTML;
            
for(var i = 0; i < keywords.length; i ++)
            
{
                
var strKey = keywords[i].toString();
                
var arrKey = strKey.split(',');
                
for(var j = 0; j < arrKey.length; j ++)
                
{
                    
var key = arrKey[j];
                    content 
= this.formatKeyword(content, key);
                }

            }

            document.getElementById(contentID).innerHTML 
= content;
        }

    }


页面调用:

    // 关键词定义
    var keywords = 
    [
        [
'心情好转,好梦一场,,真不错,真好吃,哈哈,嘻嘻'],
        [
'头晕脑胀,疲乏气短,索然无味,,,折腾,生病,抱怨,疾病,累,疼,病'],
        [
'怎么了,啊,呀,喂']
    ];
    
    
    $(document).ready(
function(){
        
var hl = new XP_Highlight();
        hl.keywords 
= keywords; // 这里是关键词的定义
        hl.refreshContent(
'res'); // 这里是要格式化内容的元素Id号
    }
); 


CSS定义(可以设置多种风格,以支持不同类型的关键词):

em { font-size:small; color:#CC0033; font-style:normal; }

 

结束语:

以上代码在 FF3.0 及 IE8兼容模式下测试通过。
如何各位有其他方法或建议的话,请在这里回复,先谢谢了!

posted @ 2009-03-13 17:03 jeky 阅读(173) | 评论 (4)编辑
i,执行大小写不敏感的匹配。

g,执行一个全局的匹配。简而言之,就是找到所有的匹配,而不是在找到第一个之后就停止了。
posted @ 2009-03-13 16:42 jeky 阅读(72) | 评论 (0)编辑
正确的:

input[type=text] { width:90%; }

注意不正确的:
input[@type='text'] { width:90%; }

浏览器检测通过:FF3、IE7/8

 

posted @ 2009-03-11 23:44 jeky 阅读(183) | 评论 (0)编辑

注意void()里面不能空,应该加0。
否则,在FF下显示正常,但在ie8下会出现语法错误。
<a href="javascript:void(0);" onclick="openThx(this);">特别感谢</a>

 

119魔域网 - 专注于打造全国最棒最火的魔域私服发布站   

本站网址:http://www.119myw.com

 

posted @ 2009-03-11 20:55 jeky 阅读(86) | 评论 (0)编辑