Linux: the big picture

10月 20th, 2009

This article gives a brief introduction to Linux, with a sketch of the background history. It was written for PC Update, the monthly magazine of the PC user group in Melbourne, Australia. This version does not contain all the editorial changes and spelling fixes made by the magazine.

April 28, 2003

History Read more »

字符串填充函数(javascript实现)

09月 22nd, 2009

昨天js课上讲到这样一个字符串填充函数,上课老师讲的不是多么仔细,没怎么听懂,下课后研究一下,问了一下以前教c的老师,发现这个小技巧还是很优秀的,可以很大程度的减少循环的次数,从而大大的减少运算的时间。 Read more »

要开学了

08月 15th, 2009

还有半个月就又要开学了,慢慢的来学的时间也已经有一段时间了。每天做着自己喜欢做得事情,感觉倒还是蛮不错的。这个暑假,感觉我兑现了自己的诺言–创造了属于自己的奇迹。我们做得小视频会议软件,现在虽然还处在实验阶段(已经具体实施的步骤),不过感觉自己现在的这种状态很好,每天研究一点,把东西从无到有的给弄出来,感觉很cool。 Read more »

[转载]JMF系统介绍

08月 13th, 2009

一.简介 
1.1JMF 体系结构简介
在开发JMF 应用程序之前要完全理解JMF 的体系架构、接口和类。就拿我们的家用摄像机系统作个例子。首先用摄像机拍摄内容,拍摄下来的内容录制在DV带中。DV带可以放在放像机里播放、放像机提 供视频信号给电视机,提供音频信号给音箱,这样我们就可以在电视机上看到画面,从音箱里听到声音。JMF API 提供的也是同样的模型。 Read more »

PHP缓冲机制(转)

08月 8th, 2009

动态网站的内容加速显示十分重要,本文通过对 PHP 几个函数的深入讨论,提出了 PHP 网页压缩和缓冲的解决方案

Read more »

终于搞清楚了c#中的事件和委托

07月 25th, 2009

c#中的事件和委托,今天可算给搞明白了。比较高兴。嘿嘿。
理解c#中的事件和委托,关键还是要理解委托。要明白多播委托是怎么个玩意儿。现在把我自己写得一个例子,贴出来让大家看看,如果有什么不对的地方,希望指正。
狗饿 狗叫 给吃的。
public class Starter
{
public static void Main()
{
dog dog1 = new dog();
dog1.dogbark += new bark(Handler);
dog1.hungry();
}
public static void Handler(object o, DogEventArgs e)
{
Console.WriteLine(”给你一根骨头,吃吧。”);
}
}

public delegate void bark(object o, DogEventArgs e);
public class dog
{
public event bark dogbark;

public void hungry()
{
if (dogbark != null)
{
DogEventArgs args = new DogEventArgs();
dogbark(this, args);
}
}
}
public class DogEventArgs : EventArgs
{
}

其中我们将狗叫理解成引起事件的原因,狗叫理解成事件,给吃的理解成事件处理函数。对应代码就是:hungry()函数是引起事件的发生。dogbark是事件,Handler是事件处理程序。

单实例对象设计模式

06月 6th, 2009

单例模式是一种创建型模式,所谓创建型模式就是对实例的生成过程进行管理的一类模式。当编程的时候我们常常有一个这样的问题,我们需要写一个类,规定这个类只能产生一个实例,这个实例在全局被所有类都能够调用到,这个时候我们所使用的就是单例模式。
单实例对象设计模式提供了一个关于私有和静态构造函数的非常好的一个实例。下面我们看一个例子:

using System;
 
namespace Donis.CSharpBook
{
     public class Chessboard{
	private Chessboard(){}
	static Chessboard()
	{
	    board = new Chessboard();
	    board.start = DateTime.Now.ToShortTimeString();
	}
	public static Chessboard board = null;
	public string player1 ; 
	public string player2 ;
	public string start;
    }
    public class Game{
           public static void Main(){
   	Chessboard game = Chessboard.board;
	game.player1 = "sally";
	game.player2 = "Bob";
	Console.WriteLine("{0} played {1} at {2}",game.player1,game.player2,game.start);
          }
    }
}

在这个例子中。首先我们可以看到一个私有的构造函数,因为私有的构造函数本身是不能在类外部被访问的,那么就只有在类的内部进行访问了。于是看下面的静态构造函数中显示调用了私有构造函数,实例化了该类,并将它赋予静态成员 board.
这样就可以通过静态实例来访问类的实例成员(看这行代码:Chessboard game = Chessboard.board;),因为静态构造函数总是自动调用的。

让我们在看看下面这个JAVA的例子:

package src;
 
public class Stin {
    private Stin()//代码段1
    {
 
    }
    private static Stin stin;//代码段2
    public static Stin getStin()//代码段3
    {
        if(stin==null)//代码段4
        {
            stin=new Stin();//代码段5
        }
        return stin;
    }
}

在这段代码中我们可以看见一些与一般的类不同的地方,当然,单例规定的是所有类都可以调用到,那么这个类首先要是public属性。
首先看这个类的构造方法(代码段1),它的构造方法是一个私有的构造方法,我们知道私有构造方法的类是不能够外部被实例化的,这样的目的就使限制外部类使用new关键字来创建实例而达到实例不会被随意的创建出来(当然利用反射还是可以实例化的,这里只是一种编译上的限制)。那么既然外部不能够实例化,那就只好内部实例化了(代码段5)。
如果要被外部访问到,又不能外部实例化,要得到内部实例化的类就必须要是静态属性和静态方法,我们知道静态属性和方法可以通过类直接访问到而不用实例化,通过这一点我们可以获取到被类内部实例化的实例(代码段2和代码段3都是静态的)。当进入到实例生成的方法中判断是否已经生成实例(代码段4),如果没有就生成,如果有就直接返回,这样就实现了单例。在整个应用中只能生成一个实例,而生成的这一个实例能被应用中所有类调用到。
单例模式应用的场合和多,而且也有很多不同的变化。

c# 多线程编程 <转>

05月 22nd, 2009

一.多线程的概念

Windows是一个多任务的系统,如果你使用的是windows 2000及其以上版本,你可以通过任务管理器查看当前系统运行的程序和进程。什么是进程呢?当一个程序开始运行时,它就是一个进程,进程所指包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的,线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。浏览器就是一个很好的多线程的例子,在浏览器中你可以在下载JAVA小应用程序或图象的同时滚动页面,在访问新页面时,播放动画和声音,打印文件等。

多线程的好处在于可以提高CPU的利用率——任何一个程序员都不希望自己的程序很多时候没事可干,在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。

然而我们也必须认识到线程本身可能影响系统性能的不利方面,以正确使用线程:

线程也是程序,所以线程需要占用内存,线程越多占用内存也越多
多线程需要协调和管理,所以需要CPU时间跟踪线程
线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题
线程太多会导致控制太复杂,最终可能造成很多Bug Read more »

入室抢劫

05月 17th, 2009

在美国,每个15秒钟就有人举报一起入室行窃案,统计数据显示,去年窃贼逛够了两百多万户人家。人们实际上几乎无法将蓄意行窃的盗贼拒之门外,所以做得只是设法拦截他片刻,从而使其暴露在巡警或者附近溜达的人们面前。常识告诉我们,光照是犯罪行为的障碍物。家门口必须安装一盏灯,并在晚上开着。不管是否相信,有些人,尤其是最晚进家的孩子,晚上进屋后不把门锁上。空心门,即便是锁上了,也容易遭贼入侵。因此最好选择实心门或者铁门,因为窃贼很难将它们撬开。如果你有意购买报警装置,别忘了索要报警器的标志,并把它们贴在窗户和门上。最后,提醒一句,外出旅游时,一定要请一位信得过的邻居,再你回来前,收好每日的报纸和邮件。这是因为放在门阶上或邮箱里成堆的报纸邮件如同广告一样让大家都知道你家里没人。

Read more »

进入ASP.NET的学习领域

05月 17th, 2009

最近一周进入了ASP.NET的学习中,把《visual studio 2005从入门到精通》看了个大概,也没明白个究竟,看来这本书还就是让你会操作visual studio的,而不是讲知识的。不过发现自己在接触新的东西的时候,往往在没有老师的指点下,一般都是撞得“头破血流”之后自己才有了如梦初醒的感觉。之后老师在那么一讲解,就有醍醐灌顶的感觉了。最近一周的生活有点混乱,每天都到晚上3点钟才睡着。早上的时间基本上就没办法利用。

我的英语啊,要考四级呀。英语还是要背诵的,必须抽出时间读英语。这是必要的。不然四级铁定考不过,以后再看个英文的技术文章,就不用每每的拿着个词典在那查啊查的了。在博客里面新开个英语的栏目,把我背诵过得,写过的文章发一下,惊醒一下自己吧。

c#的所涉及的范畴,学了已经多过半个学期了。有了一个大概。如果现在让我做一个winform我想,我自己肯定做不出来,现在心里对winform也没有很清晰的轮廓。就凭课本那本书还远远的不够,多看书,看经典教材。争取自己做一个桌面程序出来,自己看看。心里也有个底。还是要理解面向对象。深入的理解。