登录 |
  • 注册
  • 国外大站使用Javascript framework调查

    2008年06月25日10:23:10 星期三 | 作者:marcian

    Royal Pingdom最近发布了一份关于200个流行网站都采用了哪些Javascript框架的调查报告。这些网站分别是Alexa美国排名前100名Webware前100名的网站应用

    原文地址:http://royal.pingdom.com/?p=305

    未必全面,不过可以做个参考,JQuery真的很不错。

    Windows下Apache2.2.8和Subversion1.4.6的配置与使用

    2008年06月23日17:40:13 星期一 | 作者:marcian

    A:下载Apache并安装。

    B:下载Subvervion,注意要下载zip格式的,并且要注意其所对应的Apache版本。下载地址:http://subversion.tigris.org/

    C: 解压缩Subversion文件,并将其中的bin文件夹添加到PATH环境变量中,这一步并非必须,但是为了更方便的使用SVN命令建议这样做。

    D:将环境变量LANG设置为en_US,如果没有则添加。这一步并非必须,如果使用SVN命令出现乱码,则这一步可以解决这个问题。

    E:使用svnadmin create D:/ svn 命令创建一个SVN版本仓库。

    F:将解压缩后Subversion文件夹其中的bin文件夹下面的mod_authz_svn.somod_dav_svn.sointl3_svn.dlllibdb44.dll复制到Apache安装目录的modules文件夹下。注意四个文件必须全部复制,否则可能会出现Cannot load mod_dav_svn.so into server的错误。

    G:修改httpd.conf文件,添加如下指令:

    LoadModule dav_authz_module         modules/mod_authz_svn.so
    
    LoadModule dav_svn_module     modules/mod_dav_svn.so
    
    <Location /svn>
    
    DAV svn
    
    SVNPath D:/svn
    #SVNParentPath D:/svn
    </Location>
    
    

    H:重启Apache,现在可以通过http://localhost/svn来访问svn仓库了。

    I:推荐的版本库布局,创建一个trunk目录来保存开发的“主线”,一个branches目录存放分支拷贝,tags目录保存标签拷贝。

    创建trunk目录示例:
    svn import your files your svn/trunk

    创建branches目录示例:
    svn copy http://svn.example.com/repos/calc/trunk http://svn.example.com/repos/calc/branches/my-calc-branch -m “example”

    创建tags目录示例:
    copy http://svn.example.com/repos/calc/trunk http://svn.example.com/repos/calc/tags/release-1.0 -m “example”

    J:Subversion在日常工作中常用的命令

    • 更新工作拷贝
      • svn update
    • 做出修改
      • svn add
      • svn delete
      • svn copy
      • svn move
    • 检验修改
      • svn status
      • svn diff
    • 可能会取消一些修改
      • svn revert
    • 解决冲突(合并别人的修改)
      • svn update
      • svn resolved
    • 提交修改
      • svn commit
    • 同步数据库
      • svnsync

    K:Eclipse的SVN插件Subclipse

    http://subclipse.tigris.org/update_1.0.x

    L:SVN在线帮助文档

    http://www.subversion.org.cn/svnbook/1.4/index.html

    M:Download PPT

    svn.ppt

    线程与同步

    2008年06月19日11:09:51 星期四 | 作者:marcian

    线程(Thread)是一份独立运行的程序,有自己专用的运行栈。线程有可能和其他线程共享一些资源,比如,内存,文件,数据库等。当多个线程同时读写同一份共享资源的时候,可能会引起冲突。这时候,需要使用线程“同步”机制,同步锁。

    在Java里面,任何一个Object Reference都可以作为同步锁。我们可以把Object Reference理解为对象在内存分配系统中的内存地址。因此,要保证同步代码段之间使用的是同一个同步锁,我们就要保证这些同步代码段的 synchronized关键字使用的是同一个Object Reference,同一个内存地址。

    每一个同步锁下面都挂了几个线程队列,包括就绪(Ready)队列,待召(Waiting)队列等,每个队列里面都可能有多个暂停运行的线程。竞争同步锁失败的线程进入的是该同步锁的就绪(Ready)队列,而不是后面要讲述的待召(Waiting Queue)队列。就绪队列里面的线程总是时刻准备着竞争同步锁,时刻准备着运行。而待召队列里面的线程则只能一直等待,直到等到某个 信号的通知之后,才能够转移到就绪队列中,准备运行。

    成功获取同步锁的线程,执行完同步代码段之后,会释放同步锁。该同步锁的就绪队列中的其他线程就继续下一轮同步锁的竞争。成功者就可以继续运行,失败者还是要乖乖地待在就绪队列中。 因此,线程同步是非常耗费资源的一种操作。我们要尽量控制线程同步的代码段范围。同步的代码段范围越小越好。我们用一个名词“同步粒度”来表示同步代码段的范围。 所谓同步粒度,就是同步的代码段的范围,该范围越小越好。

    信号量模型:线程在运行的过程中,可以主动停下来,等待某个信号量的通知;这时候,该线程就进入到该信号量的待召(Waiting)队列当中;等到通知之后,再继续运行。在Java中,与此相关的分别是Object的两个方法:wait()和notify().

    这是一篇别人文章的摘要,原文地址: http://www.javaeye.com/topic/164905

    LinkedIn Architecture

    2008年06月06日17:30:37 星期五 | 作者:marcian

    原文地址:http://www.javaeye.com/news/2494

    哈哈,看起来我当初的技术方案选择是对的,太棒了。又多了一些信心。