<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>星星</title>
	<atom:link href="http://www.bruceleey.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.bruceleey.com</link>
	<description>行走，思考。</description>
	<lastBuildDate>Thu, 17 Jun 2010 08:59:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Java version of the Tetris</title>
		<link>http://www.bruceleey.com/archives/283</link>
		<comments>http://www.bruceleey.com/archives/283#comments</comments>
		<pubDate>Thu, 17 Jun 2010 08:59:31 +0000</pubDate>
		<dc:creator>bruceleey</dc:creator>
				<category><![CDATA[J2SE/J2EE]]></category>
		<category><![CDATA[Tetris]]></category>

		<guid isPermaLink="false">http://www.bruceleey.com/?p=283</guid>
		<description><![CDATA[import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.*; import javax.swing.Timer; public class Tetris extends JFrame { public Tetris() { Tetrisblok a = new Tetrisblok(); addKeyListener(a); add(a); } public static void main(String[] args) { Tetris frame = new Tetris(); JMenuBar menu = new JMenuBar(); frame.setJMenuBar(menu); JMenu game = new JMenu(&#34;游戏&#34;); JMenuItem newgame [...]]]></description>
			<content:encoded><![CDATA[<pre class="brush: java;">
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;
import javax.swing.Timer;

public class Tetris extends JFrame {
    public Tetris() {
        Tetrisblok a = new Tetrisblok();
        addKeyListener(a);
        add(a);
    }

    public static void main(String[] args) {
        Tetris frame = new Tetris();
        JMenuBar menu = new JMenuBar();
        frame.setJMenuBar(menu);
        JMenu game = new JMenu(&quot;游戏&quot;);
        JMenuItem newgame = game.add(&quot;新游戏&quot;);
        JMenuItem pause = game.add(&quot;暂停&quot;);
        JMenuItem goon = game.add(&quot;继续&quot;);
        JMenuItem exit = game.add(&quot;退出&quot;);
        JMenu help = new JMenu(&quot;帮助&quot;);
        JMenuItem about = help.add(&quot;关于&quot;);
        menu.add(game);
        menu.add(help);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(220, 275);
        frame.setTitle(&quot;Tetris内测版&quot;);
        // frame.setUndecorated(true);
        frame.setVisible(true);
        frame.setResizable(false);

    }
}

// 创建一个俄罗斯方块类
class Tetrisblok extends JPanel implements KeyListener {

    // blockType 代表方块类型
    // turnState代表方块状态
    private int blockType;
    private int score = 0;

    private int turnState;

    private int x;

    private int y;

    private int i = 0;

    int j = 0;
    int flag = 0;
    // 定义已经放下的方块x=0-11,y=0-21;
    int[][] map = new int[13][23];

    // 方块的形状 第一组代表方块类型有S、Z、L、J、I、O、T 7种 第二组 代表旋转几次 第三四组为 方块矩阵
    private final int shapes[][][] = new int[][][] {
    // i
            { { 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
                    { 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 },
                    { 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
                    { 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 } },
            // s
            { { 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                    { 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
                    { 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                    { 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } },
            // z
            { { 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                    { 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 },
                    { 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                    { 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } },
            // j
            { { 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 },
                    { 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                    { 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 },
                    { 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
            // o
            { { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                    { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                    { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                    { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
            // l
            { { 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 },
                    { 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                    { 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
                    { 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
            // t
            { { 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                    { 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
                    { 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                    { 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 } } };

    // 生成新方块的方法
    public void newblock() {
        blockType = (int) (Math.random() * 1000) % 7;
        turnState = (int) (Math.random() * 1000) % 4;
        x = 4;
        y = 0;
        if (gameover(x, y) == 1) {

            newmap();
            drawwall();
            score = 0;
            JOptionPane.showMessageDialog(null, &quot;GAME OVER&quot;);
        }
    }

    // 画围墙
    public void drawwall() {
        for (i = 0; i &lt; 12; i++) {
            map[i][21] = 2;
        }
        for (j = 0; j &lt; 22; j++) {
            map[11][j] = 2;
            map[0][j] = 2;
        }
    }

    // 初始化地图
    public void newmap() {
        for (i = 0; i &lt; 12; i++) {
            for (j = 0; j &lt; 22; j++) {
                map[i][j] = 0;
            }
        }
    }

    // 初始化构造方法
    Tetrisblok() {
        newblock();
        newmap();
        drawwall();
        Timer timer = new Timer(1000, new TimerListener());
        timer.start();
    }

    // 旋转的方法
    public void turn() {
        int tempturnState = turnState;
        turnState = (turnState + 1) % 4;
        if (blow(x, y, blockType, turnState) == 1) {
        }
        if (blow(x, y, blockType, turnState) == 0) {
            turnState = tempturnState;
        }
        repaint();
    }

    // 左移的方法
    public void left() {
        if (blow(x - 1, y, blockType, turnState) == 1) {
            x = x - 1;
        }
        ;
        repaint();
    }

    // 右移的方法
    public void right() {
        if (blow(x + 1, y, blockType, turnState) == 1) {
            x = x + 1;
        }
        ;
        repaint();
    }

    // 下落的方法
    public void down() {
        if (blow(x, y + 1, blockType, turnState) == 1) {
            y = y + 1;
            delline();
        }
        ;
        if (blow(x, y + 1, blockType, turnState) == 0) {
            add(x, y, blockType, turnState);
            newblock();
            delline();
        }
        ;
        repaint();
    }

    // 是否合法的方法
    public int blow(int x, int y, int blockType, int turnState) {
        for (int a = 0; a &lt; 4; a++) {
            for (int b = 0; b &lt; 4; b++) {
                if (((shapes[blockType][turnState][a * 4 + b] == 1) &amp;&amp; (map[x
                        + b + 1][y + a] == 1))
                        || ((shapes[blockType][turnState][a * 4 + b] == 1) &amp;&amp; (map[x
                                + b + 1][y + a] == 2))) {

                    return 0;
                }
            }
        }
        return 1;
    }

    // 消行的方法
    public void delline() {
        int c = 0;
        for (int b = 0; b &lt; 22; b++) {
            for (int a = 0; a &lt; 12; a++) {
                if (map[a][b] == 1) {

                    c = c + 1;
                    if (c == 10) {
                        score += 10;
                        for (int d = b; d &gt; 0; d--) {
                            for (int e = 0; e &lt; 11; e++) {
                                map[e][d] = map[e][d - 1];

                            }
                        }
                    }
                }
            }
            c = 0;
        }
    }

    // 判断你挂的方法
    public int gameover(int x, int y) {
        if (blow(x, y, blockType, turnState) == 0) {
            return 1;
        }
        return 0;
    }

    // 把当前添加map
    public void add(int x, int y, int blockType, int turnState) {
        int j = 0;
        for (int a = 0; a &lt; 4; a++) {
            for (int b = 0; b &lt; 4; b++) {
                if (map[x + b + 1][y + a] == 0) {
                    map[x + b + 1][y + a] = shapes[blockType][turnState][j];
                }
                ;
                j++;
            }
        }
    }

    // 画方块的的方法
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        // 画当前方块
        for (j = 0; j &lt; 16; j++) {
            if (shapes[blockType][turnState][j] == 1) {
                g.fillRect((j % 4 + x + 1) * 10, (j / 4 + y) * 10, 10, 10);
            }
        }
        // 画已经固定的方块
        for (j = 0; j &lt; 22; j++) {
            for (i = 0; i &lt; 12; i++) {
                if (map[i][j] == 1) {
                    g.fillRect(i * 10, j * 10, 10, 10);

                }
                if (map[i][j] == 2) {
                    g.drawRect(i * 10, j * 10, 10, 10);

                }
            }
        }
        g.drawString(&quot;score=&quot; + score, 125, 10);
        g.drawString(&quot;抵制不良游戏，&quot;, 125, 50);
        g.drawString(&quot;拒绝盗版游戏。&quot;, 125, 70);
        g.drawString(&quot;注意自我保护，&quot;, 125, 90);
        g.drawString(&quot;谨防受骗上当。&quot;, 125, 110);
        g.drawString(&quot;适度游戏益脑，&quot;, 125, 130);
        g.drawString(&quot;沉迷游戏伤身。&quot;, 125, 150);
        g.drawString(&quot;合理安排时间，&quot;, 125, 170);
        g.drawString(&quot;享受健康生活。&quot;, 125, 190);
    }

    // 键盘监听
    public void keyPressed(KeyEvent e) {
        switch (e.getKeyCode()) {
        case KeyEvent.VK_DOWN:
            down();
            break;
        case KeyEvent.VK_UP:
            turn();
            break;
        case KeyEvent.VK_RIGHT:
            right();
            break;
        case KeyEvent.VK_LEFT:
            left();
            break;
        }

    }

    // 无用
    public void keyReleased(KeyEvent e) {
    }

    // 无用
    public void keyTyped(KeyEvent e) {
    }

    // 定时器监听
    class TimerListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {

            repaint();
            if (blow(x, y + 1, blockType, turnState) == 1) {
                y = y + 1;
                delline();
            }
            ;
            if (blow(x, y + 1, blockType, turnState) == 0) {

                if (flag == 1) {
                    add(x, y, blockType, turnState);
                    delline();
                    newblock();
                    flag = 0;
                }
                flag = 1;
            }
            ;
        }
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.bruceleey.com/archives/283/feed</wfw:commentRss>
		<slash:comments>43</slash:comments>
		</item>
		<item>
		<title>Javamelody monitoring of JavaEE applications</title>
		<link>http://www.bruceleey.com/archives/280</link>
		<comments>http://www.bruceleey.com/archives/280#comments</comments>
		<pubDate>Mon, 14 Jun 2010 07:53:44 +0000</pubDate>
		<dc:creator>bruceleey</dc:creator>
				<category><![CDATA[Components]]></category>

		<guid isPermaLink="false">http://www.bruceleey.com/?p=280</guid>
		<description><![CDATA[The goal of JavaMelody is to monitor Java or Java EE applications servers in QA and production environments. It is not a tool to simulate requests from users, it is a tool to measure and calculate statistics on real operation of an application depending on the usage of the application by users. JavaMelody is opensource [...]]]></description>
			<content:encoded><![CDATA[<p>The goal of JavaMelody is to monitor Java or Java EE applications  servers in QA and production environments. It is not a tool to simulate  requests from users, it is a tool to measure and calculate statistics on  real operation of an application depending on the usage of the  application by users.</p>
<p>JavaMelody is opensource (LGPL) and  production ready: in production in an application of 25 person years.  JavaMelody is easy to integrate in most applications and is lightweight  (no profiling and no database).</p>
<p>JavaMelody is mainly based on  statistics of requests and on evolution charts.</p>
<p>It allows to  improve applications in QA and production and help to:</p>
<ul>
<li>give  facts about the average response times and number of executions</li>
<li>make  decisions when trends are bad, before problems become too serious</li>
<li>optimize  based on the more limiting response times</li>
<li>find the root causes  of response times</li>
<li>verify the real improvement after  optimizations</li>
</ul>
<p>It includes summary charts showing the  evolution over time of the following indicators:</p>
<ul>
<li>Number of  executions, mean execution times and percentage of errors of http  requests, sql requests, jsp pages or methods of business façades (if  EJB3, Spring or Guice)</li>
<li>Java memory</li>
<li>Java CPU</li>
<li>Number  of user sessions</li>
<li>Number of jdbc connections</li>
</ul>
<p>These  charts can be viewed on the current day, week, month, year or custom  period.</p>
<p>JavaMelody includes statistics of predefined counters (as  of today http requests, sql requests, jsp pages and methods of business  façades if EJB3, Spring or Guice) with, for each counter :</p>
<ul>
<li>A  summary indicating the overall number of executions, the average  execution time, the cpu time and the percentage of errors.</li>
<li>And  the percentage of time spent in the requests for which the average time  exceeds a configurable threshold.</li>
<li>And the complete list of  requests, aggregated without dynamic parameters with, for each, the  number of executions, the mean execution time, the mean cpu time, the  percentage of errors and an evolution chart of execution time over time.</li>
<li>Furthermore, each http request indicates the size of the flow  response, the mean number of sql executions and the mean sql time.</li>
</ul>
<p>It  also includes statistics on http errors, on warnings and errors in  logs, on data caches if ehcache and on batch jobs if quartz.</p>
<p>An  optional and independent collect server may be used if necessary to  unload the application of storage management, and of reports generation  and to centralize the data of clustered applications or of several  applications.</p>
<p>JavaMelody users&#8217; group is at <a rel="nofollow" href="http://groups.google.com/group/javamelody">http://groups.google.com/group/javamelody</a> (email: javamelody@googlegroups.com).</p>
<p>Hudson &#8220;Monitoring&#8221; plugin  with JavaMelody is available in Hudson management page and described <a rel="nofollow" href="http://wiki.hudson-ci.org/display/HUDSON/Monitoring">here</a><br />
<a href="http://code.google.com/p/javamelody/">http://code.google.com/p/javamelody/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bruceleey.com/archives/280/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>希望</title>
		<link>http://www.bruceleey.com/archives/277</link>
		<comments>http://www.bruceleey.com/archives/277#comments</comments>
		<pubDate>Thu, 10 Jun 2010 15:21:08 +0000</pubDate>
		<dc:creator>bruceleey</dc:creator>
				<category><![CDATA[杂谈]]></category>

		<guid isPermaLink="false">http://www.bruceleey.com/?p=277</guid>
		<description><![CDATA[我很小的时候住在外婆家，一直到4岁左右才从我外婆家搬出来，因为隔的地方不 远，基本上每个星期都会去，有时候我妈揍我我也会跑到我外婆家去，印象很深刻的是5岁那一次傍晚的时候我妈要揍我，我跑的可快了，我妈还没撒腿追的时候我 就没踪影了，一口气跑到我外婆家，我妈后来到处找我，找到后带回家又是一顿暴揍。我和我外婆家的人都很亲近，和我的舅舅们就和哥们似的。 我小的时候外婆家很穷，我很少见到我外公，天蒙蒙亮就出去，晚上很晚才回来，忙的全是地里的活，忙忙碌碌一直到生病直至去世。我的大舅身体很不好，动了手 术后背部有很大一块凸骨，个子很矮，我玩到很晚的时候突然记起来要回家就吵着我舅舅送我，我外婆就会抓把米放到我口袋，说是辟邪，在路上撒撒鬼怪就不会害 你，我外婆家到我家的路上有一个坡，现在看起来感觉很平，但那时候我舅舅骑自行车下坡的时候总把我吓个半死，吓得我死死的抱着他，我舅舅就会哈哈大笑，小 时候我觉得我的大舅就像我的父亲。我舅舅长的一点不都强悍，因为身材很矮小，所以很多方面都很吃亏，他喜欢喝酒，我16岁的时候就开始和我的舅舅们喝白 酒，无话不谈。我舅舅和他老婆总是嘻嘻哈哈的，他很疼爱他老婆，什么事都依她，他老婆也让他很疼，我表弟10多岁的时候，我舅妈就走了，一直都没回来，我 舅舅又当爹又当妈的，我表弟17岁的时候他还抱着坐膝盖上。我舅妈走后的好几年，别人给我舅舅介绍老婆，呆的最久的也就两三个月，害我白叫别人舅妈好几 次。 我舅舅是个民工，做的都是很辛苦的事情，稍微好点的区别也是晒不晒太阳的说法，有事做的时候会出去几个月不回家，而且还要手艺好的人才行，有时候我外婆生 病我舅舅他们也会赶回来，匆匆忙忙看看又上工地干活，没事做的人都想办法找事情做，能够多挣一天算一天，基本上闲不下来。我舅舅是那种典型的上有老下有小 收入不高干体力活养活的人，国家大事和他们无关，他们干的都是人民的住房大事，这代人的希望全部都寄托在孩子身上，会读书的哪怕是卖血也会送他们上学，读 书不行的就想办法让孩子学门手艺，至少有一技傍生不会饿死。 我舅舅已经四十多岁了，去年在内蒙古工地做了半年事情，他打电话和我说那里好冷，但还得上高架，因为工价要稍高。我表弟去年还在学校上学，两年的时间花了 四万多块钱，四万块钱并不是一次性拿出来，是每一天每一天干活积累一个月又寄过去，我舅舅充满了希望，虽然他和我说他没有什么希望，只是做一个父亲应该做 的事情。上一辈人成就了我们也害了我们，似乎是命中注定。 这是可以改变的事实，而那把筛子正抓在我们手里，就看你有没有勇气和智慧把一手烂牌打好。 我盼望着和我的父辈们把酒言欢，没有时间，没有拘束。]]></description>
			<content:encoded><![CDATA[<p>我很小的时候住在外婆家，一直到4岁左右才从我外婆家搬出来，因为隔的地方不 远，基本上每个星期都会去，有时候我妈揍我我也会跑到我外婆家去，印象很深刻的是5岁那一次傍晚的时候我妈要揍我，我跑的可快了，我妈还没撒腿追的时候我 就没踪影了，一口气跑到我外婆家，我妈后来到处找我，找到后带回家又是一顿暴揍。我和我外婆家的人都很亲近，和我的舅舅们就和哥们似的。</p>
<p>我小的时候外婆家很穷，我很少见到我外公，天蒙蒙亮就出去，晚上很晚才回来，忙的全是地里的活，忙忙碌碌一直到生病直至去世。我的大舅身体很不好，动了手 术后背部有很大一块凸骨，个子很矮，我玩到很晚的时候突然记起来要回家就吵着我舅舅送我，我外婆就会抓把米放到我口袋，说是辟邪，在路上撒撒鬼怪就不会害 你，我外婆家到我家的路上有一个坡，现在看起来感觉很平，但那时候我舅舅骑自行车下坡的时候总把我吓个半死，吓得我死死的抱着他，我舅舅就会哈哈大笑，小 时候我觉得我的大舅就像我的父亲。我舅舅长的一点不都强悍，因为身材很矮小，所以很多方面都很吃亏，他喜欢喝酒，我16岁的时候就开始和我的舅舅们喝白 酒，无话不谈。我舅舅和他老婆总是嘻嘻哈哈的，他很疼爱他老婆，什么事都依她，他老婆也让他很疼，我表弟10多岁的时候，我舅妈就走了，一直都没回来，我 舅舅又当爹又当妈的，我表弟17岁的时候他还抱着坐膝盖上。我舅妈走后的好几年，别人给我舅舅介绍老婆，呆的最久的也就两三个月，害我白叫别人舅妈好几 次。</p>
<p>我舅舅是个民工，做的都是很辛苦的事情，稍微好点的区别也是晒不晒太阳的说法，有事做的时候会出去几个月不回家，而且还要手艺好的人才行，有时候我外婆生 病我舅舅他们也会赶回来，匆匆忙忙看看又上工地干活，没事做的人都想办法找事情做，能够多挣一天算一天，基本上闲不下来。我舅舅是那种典型的上有老下有小 收入不高干体力活养活的人，国家大事和他们无关，他们干的都是人民的住房大事，这代人的希望全部都寄托在孩子身上，会读书的哪怕是卖血也会送他们上学，读 书不行的就想办法让孩子学门手艺，至少有一技傍生不会饿死。</p>
<p>我舅舅已经四十多岁了，去年在内蒙古工地做了半年事情，他打电话和我说那里好冷，但还得上高架，因为工价要稍高。我表弟去年还在学校上学，两年的时间花了 四万多块钱，四万块钱并不是一次性拿出来，是每一天每一天干活积累一个月又寄过去，我舅舅充满了希望，虽然他和我说他没有什么希望，只是做一个父亲应该做 的事情。上一辈人成就了我们也害了我们，似乎是命中注定。</p>
<p>这是可以改变的事实，而那把筛子正抓在我们手里，就看你有没有勇气和智慧把一手烂牌打好。</p>
<p>我盼望着和我的父辈们把酒言欢，没有时间，没有拘束。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bruceleey.com/archives/277/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>30个HTML5学习资源</title>
		<link>http://www.bruceleey.com/archives/274</link>
		<comments>http://www.bruceleey.com/archives/274#comments</comments>
		<pubDate>Thu, 10 Jun 2010 06:08:03 +0000</pubDate>
		<dc:creator>bruceleey</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://www.bruceleey.com/?p=274</guid>
		<description><![CDATA[早在几个星期前，Adobe就发布了Dreamweaver CS5 HTML5 Pack的预览版下载。众所周知，HTML5在互联网领域掀起了一场大论战，并让Adobe的日子很难熬。HTML5致力于为前端开发提供全面的标记语 言。以下30多个资源可帮你开始学习HTML5。 Blowing up HTML5 video and mapping it into 3D space（将HTML5视频吹散并组成3D效果）最近我研究了HTML 5中的Canvas 和Video 标签，并发现了一些很酷的特性。其中之一就是Canvas.drawImage() api。此为详细介绍。 Code a Backwards Compatible, One Page Portfolio with HTML5 and CSS3（用HTML5 和CSS3 打造向下兼容的网页）HTML5更加语义化，使用HTML5 我们不必在网页上布满没有意义的div。它引入了有意义的tag，比如 navigations 和 footers 使代码更有意义也更接近自然语言。 Coding A HTML 5 Layout From Scratch（HTML 5 布局） 这篇文章将教你 用原有技术将元素放置在特定位置 最新的技术潮流 Microformats与HTML5协同使用 介绍HTML5与CSS3的新特性 Coding a CSS3 and [...]]]></description>
			<content:encoded><![CDATA[<p>早在几个星期前，Adobe就发布了Dreamweaver CS5 HTML5   Pack的预览版下载。众所周知，HTML5在互联网领域掀起了一场大论战，并让Adobe的日子很难熬。HTML5致力于为前端开发提供全面的标记语  言。以下30多个资源可帮你开始学习HTML5。<br />
<a href="http://www.craftymind.com/2010/04/20/blowing-up-html5-video-and-mapping-it-into-3d-space/">Blowing  up HTML5 video and mapping it into 3D   space（将HTML5视频吹散并组成3D效果）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>最近我研究了HTML 5中的Canvas  和Video  标签，并发现了一些很酷的特性。其中之一就是Canvas.drawImage()  api。此为详细介绍。</p>
<p><a href="http://inspectelement.com/tutorials/code-a-backwards-compatible-one-page-portfolio-with-html5-and-css3/">Code  a Backwards Compatible, One Page Portfolio with   HTML5 and CSS3（用HTML5  和CSS3 打造向下兼容的网页）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>HTML5更加语义化，使用HTML5   我们不必在网页上布满没有意义的div。它引入了有意义的tag，比如 navigations 和  footers   使代码更有意义也更接近自然语言。</p>
<p><a href="http://www.smashingmagazine.com/2009/08/04/designing-a-html-5-layout-from-scratch/">Coding  A HTML 5 Layout From Scratch（HTML 5 布局）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a><br />
这篇文章将教你</p>
<ul>
<li>用原有技术将元素放置在特定位置</li>
<li>最新的技术潮流</li>
<li>Microformats与HTML5协同使用</li>
<li>介绍HTML5与CSS3的新特性</li>
</ul>
<p><a href="http://tutorialzine.com/2010/02/html5-css3-website-template/">Coding  a CSS3 and HTML5 One Page Website  Template（制作CSS3和 HTML5 一页式站点模板）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>这篇文章介绍了如何利用CSS3  和jQuery的新特性制作HTML5  网页模版。 HTML5 仍在完善当中，你也可以选择性的下载XHTML版。</p>
<p><a href="http://www.html5trends.com/tutorials/comprehensive-video-tutorial-on-html5/">Comprehensive  video tutorial on HTML5（全面的HTML5视频指南）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>这 是一个叫Brad  Neuberg的工程师制作的HTML5教学视频。</p>
<p><a href="http://www.ibm.com/developerworks/web/tutorials/wa-html5/">Create  modern Web sites using HTML5 and   CSS3（用HTML5与CSS3打造时尚站点）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>这篇文章介绍了许多HTML5的功能和语法及 API，还有CSS3的新的选择器，效果和特性。最 后，  还将教你如何利用这些新特性开发一个网页。当你读完这篇文章，你就能用HTML5和CSS3开发一个自己的站点啦。</p>
<p><a href="http://html5doctor.com/designing-a-blog-with-html5/">Designing  a blog with html5（用html5设计博客）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>许多HTML5  特性要结合JavaScript    API一起使用，以增加网页的互动性。但仍有一些新元素可让传统的Web1.0页面更加语义化。为了学习这些，我们来看怎样建立一个博客。</p>
<p><a href="http://devsnippets.com/article/designing-with-html5-css3.html">Designing  for the Future with HTML5 and CSS3 :  Tutorials  and Best  Practices（为未来设计：HTML 5 和 CSS3 指南与最佳案例）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>这篇文章将介绍用  HTML5和CSS3搭建的几个最佳站点。</p>
<p><a href="http://line25.com/tutorials/design-and-code-a-cool-iphone-app-website-in-html5">Design  and Code a Cool iPhone App Website in  HTML5（用HTML5设计和实现一个超酷 iPhone   App 网站）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a></p>
<p><a href="http://24ways.org/2009/have-a-field-day-with-html5-forms">Have  a Field Day with HTML5 Forms（建立HTML 5表格）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>这篇文站将教你 如果用HTML 5  和高级CSS技术与最新的CSS3技术建立一个漂亮的表格。</p>
<p><a href="http://www.pvmgarage.com/2010/04/touch-the-future-create-an-elegant-website-with-hmtl-5-and-css3/">How  To Create A Nice Blog Design Touching The   Future(不用photoshop，完成网页设计)<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a></p>
<p><a href="http://net.tutsplus.com/tutorials/html-css-techniques/how-to-make-all-browsers-render-html5-mark-up-correctly-even-ie6/">How  to Make All Browsers Render HTML5 Mark-up Correctly   – Even  IE6（怎样让所有浏览器都渲染HTML5标记——即使是IE6）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>这篇文章将教你如何用JavaScript和 CSS，使 HTML5页面向下兼容，即使是IE6也不例外。</p>
<p><a href="http://sixrevisions.com/web-development/html5-iphone-app/">How  to Make an HTML5 iPhone App（制作HTML5 iPhone 应用）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>这是  一篇针对iPhone的指导，但是许多技术也可用在兼容HTML5的手机浏览器上。</p>
<p><a href="http://net.tutsplus.com/tutorials/html-css-techniques/html-5-and-css-3-the-techniques-youll-soon-be-using/">HTML  5 and CSS 3: The Techniques You’ll Soon Be   Using（HTML 5 和CSS  3：你将用到的技术）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>这篇文章使用HTML 5和CSS 3  搭建博客页面。如果你已经熟悉html  和CSS，将很容易跟上。</p>
<p><a href="http://www.whatcreative.co.uk/blog/tutorials/html5-for-beginners-use-it-now-its-easy/">HTML5  for Beginners. Use it now, its easy!（HTML 5初学指南）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>给 所有具有基础HTML知识的初学者的HTML 5  入门指南</p>
<p><a href="http://apirocks.com/html5/html5.html">HTML5   Presentation<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>这篇文章介绍了HTML5  的发展历史和它的基本特性</p>
<p><a href="http://www.dave-woods.co.uk/index.php/html5-tutorial-getting-started/">HTML5  Tutorial – Getting Started（HTML 5 入门指导）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a></p>
<p><a href="http://www.webmonkey.com/2010/02/building_web_pages_with_html_5/">How  to Build Web Pages With HTML 5（怎样建立HTML 5网页）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a></p>
<p><a href="http://www.designzzz.com/website-layout-tutorial-html-5-css-3/">Simple  Website Layout Tutorial Using HTML 5 and CSS   3（HTML5和CSS3布局指南）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>HTML5最令人期待的新标签包 括&lt;header&gt;, &lt;footer&gt;,  &lt;aside&gt;,  &lt;nav&gt;,    &lt;audio&gt;，同时它还包括画图，线下存储数据，拖放等API。页面布局将会更易理解。这里将介绍一个最简单的HTML 5    布局页面，用CSS3 设置样式。最终结果如下</p>
<p><a href="http://orderedlist.com/our-writing/resources/html-css/structural-tags-in-html5/">Structural  Tags in HTML5（HTML 5 结构标签）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>HTML5   有许多标签帮助网页结构化，这能省去以网页中许多div</p>
<p><a href="http://html5doctor.com/html-5-boilerplates/">HTML5    Boilerplates（HTML 5模板）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>此文介绍了一些你能拿来就用的HTML5 模板文件</p>
<p><a href="http://dev.opera.com/articles/view/html-5-canvas-the-basics/">HTML  5 canvas – the basics（HTML 5 基础——Canvas）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>对HTML 5  Canvas使用方法的全面指导</p>
<p><a href="http://html5tutorial.net/category/tutorials">HTML   5  Tutorials（HTML 5 指南）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a></p>
<p><a href="http://net.tutsplus.com/tutorials/html-css-techniques/implementing-html5-drag-and-drop-new-premium-tutorial/">Implementing  HTML5 Drag and Drop: New Premium   Tutorial（HTML 5 拖放）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>HTML5  的一个新特性就是拖放，不过IE早在5.5时代就支持拖放了，而HTML 5    的拖放也是基于IE的。本例将教你如果用拖放实现一个简单的购物车界面。</p>
<p><a href="http://www.alistapart.com/articles/previewofhtml5/">Preview  of HTML 5<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>这是一篇比较老的文章，介绍了HTML5的特性和优 点。</p>
<p><a href="http://www.8bitrocket.com/newsdisplay.aspx?newspage=39402">The  HTML 5 Canvas For Flash Developers : Drawing（HTML 5   Canvas 的画图功能）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a></p>
<p><a href="http://perishablepress.com/press/2009/07/19/power-of-html5-css3/">The  Power of HTML 5 and CSS 3<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>介绍了HTML 5   与CSS3能创造的各种效果。</p>
<p><a href="http://ajaxian.com/archives/view-source-tutorial-sticky-notes-with-html5-and-css3">View  Source Tutorial: Sticky Notes With HTML5 and   CSS3（HTML5 和CSS3  打造便利贴效果）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a></p>
<p><a href="http://www.weboshelp.net/getting-started-with-webos/156-palm-webos-html5-database-storage-tutorial">webOS  HTML5 Database Storage Tutorial（webOS HTML5   数据存储指南）<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>HTML5 的本地存储功能将使数据存储十分简便。</p>
<p><a href="http://articles.sitepoint.com/article/html-5-snapshot-2009">Yes,  You Can Use HTML 5 Today!<img id="snap_com_shot_link_icon" src="http://i.ixnp.com/images/v6.33/t.gif" alt="" /></a>本文介绍了一些现已被支持的HTML 5   特性，对初学者十分有用。</p>
<p>文章来源：NTT.cc<br />
翻译：lovelyashes</p>
<p>转自：http://blog.csdn.net/Vanessa219/archive/2010/06/09 /5658910.aspx#1412768</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bruceleey.com/archives/274/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>DB2隔离级别</title>
		<link>http://www.bruceleey.com/archives/266</link>
		<comments>http://www.bruceleey.com/archives/266#comments</comments>
		<pubDate>Wed, 02 Jun 2010 08:59:38 +0000</pubDate>
		<dc:creator>bruceleey</dc:creator>
				<category><![CDATA[DB2]]></category>
		<category><![CDATA[DB2隔离级别]]></category>

		<guid isPermaLink="false">http://www.bruceleey.com/?p=266</guid>
		<description><![CDATA[1. JDBC的数据隔离级别设置： JDBC隔离级别 数据库隔离级别 数据访问情况 TRANSACTION_READ_UNCOMMITTED(未提交的读)Uncommitted Read ur 就是俗称“脏读”（dirty read），在没有提交数据时能够读到已经更新的数据 TRANSACTION_READ_COMMITTED (游标稳定性)Cursor Stability cs 在一个事务中进行查询时，允许读取提交前的数据，数据提交后，当前查询就可 以读取到数据。update数据时候并不锁住表 TRANSACTION_REPEATABLE_READ (读稳定性)Read Stability rs 在一个事务中进行查询时，不允许读取其他事务update的数据，允许读取 到其他事务提交的新增数据 TRANSACTION_SERIALIZABLE    (可重复的读)Repeatable Read rr 在一个事务中进行查询时，不允许任何对这个查询表的数据修改。 “可重复的读”隔离级别rr 当使用可重复的读隔离级别时，在单个事务执行期间锁定该事务引用的所有行。使用这种隔离级别时，同一事务多次发出的同一个 SELECT 语句将始终产生同一结果；丢失更新、脏读、不可重复的读、幻像都不会发生。 使用可重复的读隔离级别的事务可以多次检索同一行集，并可以对它们执行任意次操作，直到由提交或回滚操作终止事务；不允许其它事务执行插入、更新或删除操 作，因为这些操作会在隔离事务存在期间影响正在被使用的行集。为了确保在“可重复的读”隔离级别下运行的事务所访问的数据不会受其它事务的负面影响，所以 锁定了该隔离事务所引用的每个行 — 而不是仅锁定被实际检索和／或修改的那些行。因此，如果一个事务扫描了 1000 行但只检索 10 行，则所扫描的 1000 行（而不仅是被检索的 10 行）都会被锁定。 那么在现实环境中这个隔离级别是如何工作的呢？假定您拥有一家大型旅馆，并有一个网站，该网站按“先到先服务”的原则接受客户的房间预订。如果您的旅馆预 订应用程序是在“可重复的读”隔离级别下运行的，当客户检索某个日期段内的所有可用房间列表时，您将无法更改那些房间在指定日期范围内的费用，而其他客户 也将无法进行或取消将会更改该列表的预订，直到生成该列表的事务终止为止。（对于第一个客户的查询所指定范围之外的任何房间，您都可以更改房价，其他客户 也都可以进行或取消房间预订。） “读稳定性”隔离级别rs 当使用读稳定性隔离级别时，在单个事务执行期间，会锁定该事务所检索的所有行。当使用这种隔离级别时，直到隔离事务终止之前，其它事务不能更改隔离事务读 取的所有行。此外，其它事务对其它行所作的更改，在提交之前对于运行在“读稳定性”隔离级别下的事务而言是不可见的。因此，当使用“读稳定性”隔离级别 时，在同一事务中多次发出 SELECT 语句可能会产生不同的结果。丢失更新、脏读和不可重复的读都不会发生；但是，有可能出现幻像。 使用“可重复的读”隔离级别时，隔离事务引用的每一行都被锁定；但是，在“读稳定性”隔离级别下，只锁定隔离事务实际检索和／或修改的行。因此，如果一个 [...]]]></description>
			<content:encoded><![CDATA[<div><strong><span style="color: #000000;">1. JDBC的数据隔离级别设置：</span></strong></div>
<div><span style="color: #000000;"><br />
</span></div>
<div>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top"><span style="color: #000000;"><strong><span style="font-family: Times New Roman;">JDBC</span></strong><strong>隔离级别</strong></span></td>
<td valign="top"><span style="color: #000000;"><strong>数据库隔离级别</strong></span></td>
<td valign="top"><span style="color: #000000;"><strong>数据访问情况</strong></span></td>
</tr>
<tr>
<td valign="top"><span style="color: #000000;">TRANSACTION_READ_UNCOMMITTED(未提交的读)Uncommitted Read</span></td>
<td valign="top"><span style="color: #000000;">ur</span></td>
<td valign="top"><span style="color: #000000;">就是俗称“脏读”（dirty  read），在没有提交数据时能够读到已经更新的数据</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #000000;">TRANSACTION_READ_COMMITTED (游标稳定性)Cursor Stability</span></td>
<td valign="top"><span style="color: #000000;">cs</span></td>
<td valign="top"><span style="color: #000000;">在一个事务中进行查询时，允许读取提交前的数据，数据提交后，当前查询就可 以读取到数据。update数据时候并不锁住表</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #000000;">TRANSACTION_REPEATABLE_READ (读稳定性)Read Stability</span></td>
<td valign="top"><span style="color: #000000;">rs</span></td>
<td valign="top"><span style="color: #000000;">在一个事务中进行查询时，不允许读取其他事务update的数据，允许读取 到其他事务提交的新增数据</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #000000;">TRANSACTION_SERIALIZABLE       (可重复的读)Repeatable Read</span></td>
<td valign="top"><span style="color: #000000;">rr</span></td>
<td valign="top"><span style="color: #000000;">在一个事务中进行查询时，不允许任何对这个查询表的数据修改。</span></td>
</tr>
</tbody>
</table>
</div>
<p><span style="color: #000000;"><strong>“可重复的读”隔离级别rr</strong><br />
当使用可重复的读隔离级别时，在单个事务执行期间锁定该事务引用的所有行。使用这种隔离级别时，同一事务多次发出的同一个 SELECT  语句将始终产生同一结果；丢失更新、脏读、不可重复的读、幻像都不会发生。<br />
使用可重复的读隔离级别的事务可以多次检索同一行集，并可以对它们执行任意次操作，直到由提交或回滚操作终止事务；不允许其它事务执行插入、更新或删除操 作，因为这些操作会在隔离事务存在期间影响正在被使用的行集。为了确保在“可重复的读”隔离级别下运行的事务所访问的数据不会受其它事务的负面影响，所以 锁定了该隔离事务所引用的每个行 — 而不是仅锁定被实际检索和／或修改的那些行。因此，如果一个事务扫描了 1000 行但只检索 10  行，则所扫描的 1000 行（而不仅是被检索的 10 行）都会被锁定。<br />
那么在现实环境中这个隔离级别是如何工作的呢？假定您拥有一家大型旅馆，并有一个网站，该网站按“先到先服务”的原则接受客户的房间预订。如果您的旅馆预 订应用程序是在“可重复的读”隔离级别下运行的，当客户检索某个日期段内的所有可用房间列表时，您将无法更改那些房间在指定日期范围内的费用，而其他客户 也将无法进行或取消将会更改该列表的预订，直到生成该列表的事务终止为止。（对于第一个客户的查询所指定范围之外的任何房间，您都可以更改房价，其他客户 也都可以进行或取消房间预订。）</span></p>
<p><span style="color: #000000;"><br />
</span></p>
<p><strong>“读稳定性”隔离级别rs</strong><br />
当使用读稳定性隔离级别时，在单个事务执行期间，会锁定该事务所检索的所有行。当使用这种隔离级别时，直到隔离事务终止之前，其它事务不能更改隔离事务读 取的所有行。此外，其它事务对其它行所作的更改，在提交之前对于运行在“读稳定性”隔离级别下的事务而言是不可见的。因此，当使用“读稳定性”隔离级别 时，在同一事务中多次发出 SELECT 语句可能会产生不同的结果。丢失更新、脏读和不可重复的读都不会发生；但是，有可能出现幻像。<br />
使用“可重复的读”隔离级别时，隔离事务引用的每一行都被锁定；但是，在“读稳定性”隔离级别下，只锁定隔离事务实际检索和／或修改的行。因此，如果一个 事务扫描了 1000 行但只检索 10 行，则只有被检索到的 10 行（而不是所扫描的 1000 行）被锁定。<br />
那么，这种隔离级别会如何改变旅馆预订应用程序的工作方式呢？现在，当一个客户检索某个日期段内的所有可用房间列表时，您可以更改旅馆中任何房间的房价， 而其他客户也可以取消在第一个客户的查询所指定的日期段内所保留房间的预订。因此，如果在终止提交查询的事务之前再次生成列表，则产生的新列表中有可能包 含新的房价或第一次产生列表时不可用的房间。</p>
<p><strong>“游标稳定性”隔离级别cs</strong><br />
当使用游标稳定性隔离级别时，只要隔离事务所用的游标定位在某一行上，就会锁定该游标所引用的这一行。所获取的锁一直有效，直到游标重定位（通常通过调用  FETCH 语句）或隔离事务终止为止。因此，当使用这种隔离级别时，在同一事务中多次发出 SELECT  语句可能会产生不同的结果。丢失更新和脏读不会发生；但有可能出现不可重复的读和幻像。<br />
当使用“游标稳定性”隔离级别的事务通过可更新游标从表中检索行时，在游标定位在该行上时，其它事务不能更新或删除该行。但是，如果被锁定的行本身不是用 索引访问的，那么其它事务可以将新的行添加到表，并对位于被锁定行前后的行进行更新和／或删除操作。此外，如果隔离事务修改了它检索到的任何行，那么在隔 离事务终止之前，即使在游标不再位于这个被修改的行，其它事务不能更新或删除该行。<br />
其它事务在其它行上进行的更改，在提交之前对于使用“游标稳定性”隔离级别的事务是不可见的。缺省情况下，大多数事务都使用“游标稳定性”隔离级别。<br />
这种隔离级别对旅馆预订应用程序有什么影响呢？现在，当一个客户检索某个日期段内的所有可用房间列表，然后查看关于所产生的列表上每个房间的信息时（每次 查看一个房间），您可以更改旅馆中任何房间的房价，而其他客户可以对任何日期段的任何房间进行或取消预订；唯一的例外是第一个客户当前正在查看的房间。当 第一个客户查看列表中另一个房间的信息时，对于这个新房间也是一样；您现在可以更改第一个客户刚才查看的房间的房价，其他客户也可以预订该房间，但不能对 第一个客户当前正在查看的房间进行这些操作。</p>
<p><strong>“未提交的读”隔离级别ur</strong><br />
在使用未提交的读隔离级别的情况中，当单个事务检索行时，仅当另一个事务试图删除或更改被检索的行所在的表时，才会在单个事务期间锁定这些行。因为在使用 这种隔离级别时，行通常保持未锁定状态，所以丢失更新、脏读、不可重复的读和幻像都可能会发生。<br />
在大多数情况下，其它事务对行所作的更改，在提交或回滚之前对于使用“未提交的读”隔离级别的事务是可见的。但是，此类事务不能看见或访问其它事务所创建 的表、视图或索引，直到那些事务被提交为止。类似地，如果其它事务删除了现有的表、视图或索引，使用“未提交的读”隔离级别的事务仅当进行删除操作的事务 终止时才能了解这一情况。这种行为有一个例外：当运行在“未提交的读”隔离级别下的事务使用可更新游标时，该事务的行为和在“游标稳定性”隔离级别下运行 一样，并应用“游标稳定性”隔离级别的约束。<br />
“未提交的读”隔离级别通常用于那些访问只读表的事务和／或某些执行 SELECT 语句的事务，这些语句对其它事务的未提交数据没有负面效果。<br />
那么这种隔离级别对旅馆预订应用程序有什么影响呢？现在，当一个客户检索某个日期段内的所有可用房间列表时，您可以更改旅馆中任何房间的房价，而其它客户 也可以对任何日期段内的任何房间进行或取消预订。此外，如果其它客户取消了预订，即使他们还没有终止其事务并将那些取消提交到数据库，所生成的列表就可以 包含这些取消预订的房间了。<br />
<strong><span style="color: #000000;">2. 数据库之间的差异:</span></strong></p>
<p><span style="color: #000000;"> </span> <span style="color: #000000;">1)．Oracle通过具有意向锁的多粒度封锁机制进行并发控制，保证数据的一致性。其DML锁 （数据锁）分为两个层次（粒度）：即表级和行级。通常的DML操作在表级获得的只是意向锁（RS或RX），其真正的封锁粒度还是在行级；DB2也是通过具 有意向锁的多粒度封锁机制进行并发控制，保证数据的一致性。其DML锁（数据锁）分为两个层次（粒度）：即表级和行级。通常的DML操作在表级获得的只是 意向锁（IS，SIX或IX），其真正的封锁粒度也是在行级；另外，在Oracle数据库中，单纯地读数据（SELECT）并不加锁，这些都提高了系统的 并发程度，Oracle强调的是能够&#8221;读&#8221;到数据，并且能够快速的进行数据读取。而DB2的锁强调的是&#8221;读一致性&#8221;，进行读数据(SELECT)时会根据 不同的隔离级别（RR,RS,CS）而分别加 S,IS,IS锁，只有在使用UR隔离级别时才不加锁。从而保证不同应用程序和用户读取的数据是一致的。</span></p>
<p>2).  在支持高并发度的同时，DB2和Oracle对锁的操纵机制有所不同：Oracle利用意向锁及数据行上加锁标志位等设计技巧，减小了Oracle维护行 级锁的开销，使其在数据库并发控制方面有着一定的优势。而DB2中对每个锁会在锁的内存（locklist）中申请分配一定字节的内存空间，具体是X锁  64字节内存，S锁32字节内存（注：DB2 V8之前是X锁72字节内存而S锁36字节内存）。</p>
<p>3). Oracle数据库中不存在锁升级，而DB2数据库中当数据库表中行级锁的使用超过locklist*maxlocks会发生锁升级。</p>
<p>4).  在Oracle中当一个session对表进行insert，update，delete时候，另外一个session仍然可以从Orace回滚段或者还 原表空间中读取该表的前映象（before image）;  而在DB2中当一个session对表进行insert，update，delete时候，另外一个session仍然在读取该表数据时候会处于lock  wait状态，除非使用UR隔离级别可以读取第一个session的未提交的值；所以Oracle同一时刻不同的session有读不一致的现象，而  DB2在同一时刻所有的session都是&#8221;读一致&#8221;的。</p>
<p><span style="color: #000000;">5). db2缺省下是使用cs级别,oracle缺省是使用ur.</span><br />
<br/></p>
<pre class="brush: sql;">
   for example: WITH UR
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.bruceleey.com/archives/266/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>常用英文短语五</title>
		<link>http://www.bruceleey.com/archives/263</link>
		<comments>http://www.bruceleey.com/archives/263#comments</comments>
		<pubDate>Mon, 31 May 2010 16:06:49 +0000</pubDate>
		<dc:creator>bruceleey</dc:creator>
				<category><![CDATA[杂谈]]></category>
		<category><![CDATA[常用英文短语]]></category>

		<guid isPermaLink="false">http://www.bruceleey.com/?p=263</guid>
		<description><![CDATA[God works. 上帝的安排。 Not so bad. 不错。 No way! 不可能！ Don&#8217;t flatter me. 过奖了。 Hope so. 希望如此。 Go down to business. 言归正传。 I&#8217;m not going. 我不去了。 Does it serve your purpose？ 对你有用吗？ I don&#8217;t care. 我不在乎。 None of my business. 不关我事。 It doesn&#8217;t work. 不管用。 Your are welcome. 你太客气了。 It is a long story. 一言难尽。 [...]]]></description>
			<content:encoded><![CDATA[<p>God works. 上帝的安排。<br />
Not so bad. 不错。<br />
No way! 不可能！<br />
Don&#8217;t flatter me. 过奖了。<br />
Hope so. 希望如此。<br />
Go down to business. 言归正传。<br />
I&#8217;m not going. 我不去了。<br />
Does it serve your purpose？ 对你有用吗？<br />
I don&#8217;t care. 我不在乎。<br />
None of my<br />
business. 不关我事。<br />
It doesn&#8217;t work. 不管用。<br />
Your are welcome. 你太客气了。<br />
It is a long story. 一言难尽。<br />
Between us. 你知，我知。<br />
Sure thin! 當然！<br />
Talk truly. 有话直说。<br />
I&#8217;m going to go. 我這就去。<br />
Never mind. 不要緊。<br />
Why are you so sure？ 怎么这样肯定？<br />
Is that so？ 是这样吗？<br />
Come on, be reasonable. 嗨，你怎么不讲道理。<br />
When are you leaving？ 你什么时候走？<br />
You don&#8217;t say so. 未必吧，不至于这样吧。<br />
Don&#8217;t get me wrong. 别误会我。<br />
You bet! 一定，当然！<br />
It&#8217;s up to you. 由你决定。<br />
The line is engaged. 占线。<br />
My hands are full right now. 我现在很忙。<br />
Can you dig it？ 你搞明白了吗？<br />
I&#8217;m afraid I can&#8217;t. 我恐怕不能。<br />
How big of you! 你真棒！<br />
Poor thing! 真可怜！<br />
How about eating out？ 外面吃饭怎样？<br />
Don&#8217;t over do it. 别太过分了。<br />
You want a bet？ 你想打赌吗？<br />
What if I go for you？ 我替你去怎么样？<br />
Who wants？ 谁稀罕？<br />
Follow my nose. 凭直觉做某事。<br />
Cheap skate! 小气鬼！<br />
Come seat here. 来这边坐。<br />
Dinner is on me. 晚饭我请。<br />
You ask for it! 活该！<br />
You don&#8217;t say! 真想不到！<br />
Get out of here! 滚出去！<br />
How come… 怎么回事，怎么搞的。<br />
Don&#8217;t mention it. 没关系，别客气。<br />
It is not a big deal! 没什么了不起！<br />
thousand times no! 绝对办不到！<br />
Who knows! 天晓得！<br />
Have a good of it.玩的很高兴。<br />
Don&#8217;t let me down. 别让我失望。<br />
It is urgent. 有急事。</p>
<p>Can I have this. 可以给我这个吗？</p>
<p>It doesn&#8217;t take much of you time. 这不花你好多时间。</p>
<p>Drop it! 停止！Bottle it! 閉嘴！<br />
There is nobody by that name working here.這裡沒有這個人。<br />
Easy does it. 慢慢来。<br />
Don&#8217;t push me. 别逼我。</p>
<p>Come on! 快点，振作起来！</p>
<p>What is the fuss？ 吵什么？<br />
Still up？ 还没睡呀？<br />
It doesn&#8217;t make any differences. 没关系。<br />
It is a deal！ 一言为定！<br />
Take a seat! 请坐！<br />
Here ye! 说得对！<br />
It can be a killer. 这是个伤脑筋的问题。<br />
Don&#8217;t take ill of me. 别生我气。<br />
It&#8217;s up in the air. 尚未确定。<br />
I am all ears. 我洗耳恭听。<br />
Right over there. 就在那里。<br />
Get an eyeful. 看个够。<br />
Here we are! 我们到了！<br />
I lost my way. 我迷路了<br />
Say hello to everybody for me. 替我向大家问好。<br />
Not precisely! 不见得，不一定！<br />
That is unfair. 这不公平！<br />
We have no way out. 我们没办法。<br />
That is great! 太棒了！<br />
You are welcome! 别客气！<br />
I&#8217;m bored to death. 我无聊死了。<br />
Bottoms up! 干杯！<br />
Big mouth! 多嘴驴！<br />
Can－do. 能人。<br />
Don&#8217;t play possum! 別裝蒜！<br />
He neither drinks nor smokes. 他既不喝酒也不抽煙。<br />
Make it up! 不记前嫌！<br />
Watch you mouth. 注意言辞。<br />
Any urgent thing？ 有急事吗？<br />
Good luck! 祝你好运！<br />
Make it. 达到目的，获得成功。<br />
I&#8217;ll be seeing you. 再见。<br />
I wonder if you can give me a lift？ 能让我搭一程吗？<br />
It is raining. 要下雨了。<br />
I might hear a pin drop. 非常寂静。<br />
Don&#8217;t get loaded. 别喝醉了。<br />
Stay away from him. 别*近他。</p>
<p>Don&#8217;t get high hat. 别摆架子。</p>
<p>That rings a bell. 听起来耳熟。</p>
<p>Play hooky. 旷工、旷课。</p>
<p>I am the one wearing pants in the house. 我当家。</p>
<p>Get cold feet. 害怕做某事。</p>
<p>Good for you! 好得很！</p>
<p>Go ahead. 继续。</p>
<p>Help me out. 帮帮我。</p>
<p>Let&#8217;s bag it. 先把它搁一边。</p>
<p>Lose head. 丧失理智。</p>
<p>He is the pain on neck. 他真让人讨厌。<br />
Do you have straw？ 你有吸管吗？<br />
Don&#8217;t make up a story. 不要捏造事实。<br />
Absence makes the heart grow fonder. 小别胜新婚。<br />
She make a mess of things. 她把事情搞得一塌糊涂。<br />
He has a quick eye. 他的眼睛很锐利。<br />
Shoot the breeze. 闲谈。<br />
Tell me when! 随时奉陪！<br />
It is a small world! 世界真是小！<br />
Not at all. 根本就不（用）。<br />
Let&#8217;s play it by ear. 让我们随兴所至。<br />
Wait and see. 等着瞧。<br />
Why so blue？ 怎么垂头丧气？<br />
What brought you here？ 什么风把你吹来了？<br />
Hang on! 抓紧（别挂电话）！<br />
Leave me alone. 别理我。<br />
Chin up. 不气 ，振作些。<br />
You never know. 世事难料。<br />
I stay at home a lot. 我多半在家里。<br />
She&#8217;ll be along in a few minutes. 他马上会过来。<br />
I&#8217;m not in a good mood. 没有心情（做某事）。<br />
He is a fast talker. 他是个吹牛大王。<br />
Daring! 亲爱的！<br />
She is still mad at me. 她还在生我的气。<br />
I&#8217;ll get even with him one day. 我总有一天跟他扯平<br />
Hit the ceiling. 大发雷霆。</p>
<p>She&#8217;s got quite a wad. 她身怀巨款。</p>
<p>I don&#8217;t have anywhere to be. 没地方可去。</p>
<p>I&#8217;m dying to see you. 我很想见你。<br />
I swear by the god. 我对天发誓。<br />
Nothing tricky. 别耍花招。<br />
You might at least apologize. 你顶多道个歉就得了。<br />
Price is soaring, if it goes on like this, we shall not be able to keep the pot boiling. 物价直线上升，这样子下去，我们锅里可没什么东西煮饭。<br />
None of you keyhole. 不准偷看。<br />
You don&#8217;t seem to be quite yourself today. 你今天看起来不大对劲。<br />
Do you have any money on you？ 你身上带钱了吗？<br />
What is your major？ 你学什么专业？<br />
My girlfriend and I broke up. 我和我的女朋友吹了。<br />
It was something that happens once in the blue moon. 这是千载难逢的事。<br />
I&#8217;ll kick you out. 我将炒你鱿鱼。<br />
I hate to be late and keep my date waiting. 我不喜欢迟到而让别人久等。<br />
There is nobody by that name working here. 这里没有这个人。<br />
He neither drinks nor smokes. 他既不喝酒也不抽烟。<br />
He pushes his luck. 他太贪心了。<br />
Nuts! 呸；胡说；混蛋！<br />
I can&#8217;t make both ends meet. 我上个月接不到下个月，缺钱。<br />
It is of high quality. 它质量上乘。<br />
Dead end. 死胡同。<br />
Would you mind making less noise. 能不能小声点</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bruceleey.com/archives/263/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>2010-5-29</title>
		<link>http://www.bruceleey.com/archives/261</link>
		<comments>http://www.bruceleey.com/archives/261#comments</comments>
		<pubDate>Sat, 29 May 2010 14:23:09 +0000</pubDate>
		<dc:creator>bruceleey</dc:creator>
				<category><![CDATA[杂谈]]></category>

		<guid isPermaLink="false">http://www.bruceleey.com/?p=261</guid>
		<description><![CDATA[我小时候的理想是成为一名歌手，身披金甲圣衣，万众瞩目，万千抱着绒娃娃睡觉的姑娘的墙上都贴有我的海报，时常可以在颁奖会上表达自己的个性，并且可以驾驶着保时捷四处撒钱。 这个理想在我进专业的艺校学习音乐一年多后夭折了，死无葬身之地。我从那时候起就变得很现实，不由得你不说，我们那一代的小孩心里大多都有一些稀奇古怪的想法，但很多都不太现实。 我们那一代生长在农村的孩子出社会的年龄都比较早，教育程度平均在高中左右，也有少许进入比较好的大学，不过据我所知大多数都去了职业学校，所谓的职业学校性质上是交2-3万块钱可以得到一张中专文凭并安排到一些大型的工厂工作，所做的工作基本上和学校所学专业无关，而这类学校所教的课程体系非常庞大，多而不精。这些选择也许大都不是孩子做的决定，说实话，真正有理想，有自己的想法的人很少，至少我们那一代是的。以前的信息没有现在那么发达，父母和孩子所知道的谁家的狗生了哪家的猫和谁家的姑娘嫁了哪家的儿子之类的事情除外的其他事情大多都是从亲戚朋友和电视新闻和广告上得知，甚至我们那一代的家庭都没有看报纸的习惯。现在的后一代我相信会比我们那一代多知，如果都足够清醒。 我在农村有一个医生朋友的同学，在农村做水泥工，实实在在靠劳动力生存的人，以前的工价大概是50块钱一天，全是按天计算，如果下雨的话就意味着少工作一天，后来努力了几年结了婚生了小孩，房子装修结婚彩礼生小孩的费用加起来我估计他应该借了不少钱。他的同学朋友比较多，都是处于一个年龄段的人，结婚生小孩的时间相差没有多少，同学朋友结婚最少要送200块钱，生小孩，小孩怎样怎样，这些都要送钱，加上自己不能挣很多钱，压力越来越大，后来有一天他就跳楼死了。像这样劳劳碌碌一辈子的人很多，卖劳动力，挣得钱只能养家糊口，没有假期。只是压力的大小和人心理承受能力不同就导致不同的结局。 我表弟今年四月份来的上海，之前在一所中专上学，毕业后被安排到上海的一家笔记本加工的工厂，流水线操作，平均每天上班15个小时，一个月多加点班能挣 1800块左右，我表弟很年轻，是典型90年代农村的人，喜欢上网吧，不能去上网也喜欢开着手机上QQ，喜欢买一些精品店的装饰物。他们这些学生住的是工厂分的宿舍，8人间的员工宿舍，大部分平常用的东西都是公用的，想在上海租房子几乎不可能，我上次去他的宿舍看望他，全是刚从学校出来的孩子，最大的19 岁，都是从学校的推荐机会进来的，为此我舅舅还送了一个红包给就业的教师。 类似于富士康这样类型的工厂有很多，到处都是像我表弟这样的人，他们付出的多，得到的回报少，但他们很多都是没有选择，很多人看了富士康的报道都说为什么不离开一定要呆在那里，为什么要以寻死的方式解决问题，我也不明白，但是我知道他们都有苦衷，他们没有选择，即使做出了抉择也改变不了本质，他们的这种勇气令我毛骨悚然。 也许他们曾经都是热血青年，都有心爱的姑娘，本应自由的青春却化成了一堆脑浆和死血。我愿望人人自由平等，把酒言欢， 无论你们在哪里，无论发生什么事情，我们是否相识，我都与你们同在。 A：兄弟姐妹们，快跑，桥要断了。 B：哥们别急，我带上我的CD。 A：快看，树林里有条小溪，我们一起度过去吧。 C：快点吧，快看，彩虹出来了。你闻到气味了吗？]]></description>
			<content:encoded><![CDATA[<p>  我小时候的理想是成为一名歌手，身披金甲圣衣，万众瞩目，万千抱着绒娃娃睡觉的姑娘的墙上都贴有我的海报，时常可以在颁奖会上表达自己的个性，并且可以驾驶着保时捷四处撒钱。</p>
<p>  这个理想在我进专业的艺校学习音乐一年多后夭折了，死无葬身之地。我从那时候起就变得很现实，不由得你不说，我们那一代的小孩心里大多都有一些稀奇古怪的想法，但很多都不太现实。</p>
<p>  我们那一代生长在农村的孩子出社会的年龄都比较早，教育程度平均在高中左右，也有少许进入比较好的大学，不过据我所知大多数都去了职业学校，所谓的职业学校性质上是交2-3万块钱可以得到一张中专文凭并安排到一些大型的工厂工作，所做的工作基本上和学校所学专业无关，而这类学校所教的课程体系非常庞大，多而不精。这些选择也许大都不是孩子做的决定，说实话，真正有理想，有自己的想法的人很少，至少我们那一代是的。以前的信息没有现在那么发达，父母和孩子所知道的谁家的狗生了哪家的猫和谁家的姑娘嫁了哪家的儿子之类的事情除外的其他事情大多都是从亲戚朋友和电视新闻和广告上得知，甚至我们那一代的家庭都没有看报纸的习惯。现在的后一代我相信会比我们那一代多知，如果都足够清醒。</p>
<p>  我在农村有一个医生朋友的同学，在农村做水泥工，实实在在靠劳动力生存的人，以前的工价大概是50块钱一天，全是按天计算，如果下雨的话就意味着少工作一天，后来努力了几年结了婚生了小孩，房子装修结婚彩礼生小孩的费用加起来我估计他应该借了不少钱。他的同学朋友比较多，都是处于一个年龄段的人，结婚生小孩的时间相差没有多少，同学朋友结婚最少要送200块钱，生小孩，小孩怎样怎样，这些都要送钱，加上自己不能挣很多钱，压力越来越大，后来有一天他就跳楼死了。像这样劳劳碌碌一辈子的人很多，卖劳动力，挣得钱只能养家糊口，没有假期。只是压力的大小和人心理承受能力不同就导致不同的结局。</p>
<p>  我表弟今年四月份来的上海，之前在一所中专上学，毕业后被安排到上海的一家笔记本加工的工厂，流水线操作，平均每天上班15个小时，一个月多加点班能挣 1800块左右，我表弟很年轻，是典型90年代农村的人，喜欢上网吧，不能去上网也喜欢开着手机上QQ，喜欢买一些精品店的装饰物。他们这些学生住的是工厂分的宿舍，8人间的员工宿舍，大部分平常用的东西都是公用的，想在上海租房子几乎不可能，我上次去他的宿舍看望他，全是刚从学校出来的孩子，最大的19 岁，都是从学校的推荐机会进来的，为此我舅舅还送了一个红包给就业的教师。</p>
<p>  类似于富士康这样类型的工厂有很多，到处都是像我表弟这样的人，他们付出的多，得到的回报少，但他们很多都是没有选择，很多人看了富士康的报道都说为什么不离开一定要呆在那里，为什么要以寻死的方式解决问题，我也不明白，但是我知道他们都有苦衷，他们没有选择，即使做出了抉择也改变不了本质，他们的这种勇气令我毛骨悚然。</p>
<p>  也许他们曾经都是热血青年，都有心爱的姑娘，本应自由的青春却化成了一堆脑浆和死血。我愿望人人自由平等，把酒言欢， 无论你们在哪里，无论发生什么事情，我们是否相识，我都与你们同在。</p>
<p>  A：兄弟姐妹们，快跑，桥要断了。</p>
<p>  B：哥们别急，我带上我的CD。</p>
<p>  A：快看，树林里有条小溪，我们一起度过去吧。</p>
<p>  C：快点吧，快看，彩虹出来了。你闻到气味了吗？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bruceleey.com/archives/261/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Windows下模拟Linux环境的软件</title>
		<link>http://www.bruceleey.com/archives/254</link>
		<comments>http://www.bruceleey.com/archives/254#comments</comments>
		<pubDate>Wed, 26 May 2010 04:16:01 +0000</pubDate>
		<dc:creator>bruceleey</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Cygwin]]></category>

		<guid isPermaLink="false">http://www.bruceleey.com/?p=254</guid>
		<description><![CDATA[很火星的推荐一款软件，功能在于在Windows上模拟Linux环境，项目主页：http://www.cygwin.com/]]></description>
			<content:encoded><![CDATA[<p>很火星的推荐一款软件，功能在于在Windows上模拟Linux环境，项目主页：<a href="http://www.cygwin.com/">http://www.cygwin.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bruceleey.com/archives/254/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>洋葱头与胡萝卜</title>
		<link>http://www.bruceleey.com/archives/249</link>
		<comments>http://www.bruceleey.com/archives/249#comments</comments>
		<pubDate>Mon, 24 May 2010 08:28:09 +0000</pubDate>
		<dc:creator>bruceleey</dc:creator>
				<category><![CDATA[杂谈]]></category>
		<category><![CDATA[翻墙]]></category>

		<guid isPermaLink="false">http://www.bruceleey.com/?p=249</guid>
		<description><![CDATA[想上Google搜几根胡萝卜都不行了，没办法，只能依靠洋葱头来找它朋友胡萝卜。 1、用你的gmail邮箱写封邮件到： gettor@torproject.org，主题为help。（注意格式必须设为：纯文本） 2、收到邮件后，立即回复，将收件人地址改为：gettor+zh@torproject.org，回复的内容为：tor-browser-bundle (注意格式必须设为：纯文本) 3、大概3-5分钟，你会收到约为16M大小的tor压缩文件，zip格式。 4、下载到本地电脑，解压缩。在tor browser文件夹中找到 “start tor browser”的程序。 5、双击“start tor browser”，如果无法建立链接，先点停止，然后点：下方的“设定”—网络—勾选“我的ISP阻挡了对Tor网络的链接—添加一个网桥—框内依次输入： 80.68.94.202:8080 92.206.112.137:9001 89.228.47.36:443 每输入一个点击左边的绿色+ 号添加，最后确定，重新连接，即可成功。 6、如果以上网桥被封无法连接，用你的gmail邮箱，写邮件到：bridges@torproject.org 主题：get bridges，内容： bridges （注意邮件格式须为纯文本）。很快你的gmail邮箱会收到几个可用的网桥地址。重复第5项的操作即可。 7、tor成功链接后，会打开内置的一个firefox火狐浏览器，便意味着你已进入菜市场，可以寻找胡萝卜。]]></description>
			<content:encoded><![CDATA[<p>想上Google搜几根胡萝卜都不行了，没办法，只能依靠洋葱头来找它朋友胡萝卜。</p>
<p>1、用你的gmail邮箱写封邮件到： gettor@torproject.org，主题为help。（注意格式必须设为：纯文本）</p>
<p>2、收到邮件后，立即回复，将收件人地址改为：gettor+zh@torproject.org，回复的内容为：tor-browser-bundle (注意格式必须设为：纯文本)</p>
<p>3、大概3-5分钟，你会收到约为16M大小的tor压缩文件，zip格式。</p>
<p>4、下载到本地电脑，解压缩。在tor browser文件夹中找到 “start tor browser”的程序。</p>
<p>5、双击“start tor browser”，如果无法建立链接，先点停止，然后点：下方的“设定”—网络—勾选“我的ISP阻挡了对Tor网络的链接—添加一个网桥—框内依次输入：</p>
<p>80.68.94.202:8080</p>
<p>92.206.112.137:9001</p>
<p>89.228.47.36:443</p>
<p>每输入一个点击左边的绿色+ 号添加，最后确定，重新连接，即可成功。</p>
<p>6、如果以上网桥被封无法连接，用你的gmail邮箱，写邮件到：bridges@torproject.org 主题：get bridges，内容： bridges （注意邮件格式须为纯文本）。很快你的gmail邮箱会收到几个可用的网桥地址。重复第5项的操作即可。</p>
<p>7、tor成功链接后，会打开内置的一个firefox火狐浏览器，便意味着你已进入菜市场，可以寻找胡萝卜。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bruceleey.com/archives/249/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google 永久提供在线吃豆人游戏</title>
		<link>http://www.bruceleey.com/archives/247</link>
		<comments>http://www.bruceleey.com/archives/247#comments</comments>
		<pubDate>Mon, 24 May 2010 08:27:17 +0000</pubDate>
		<dc:creator>bruceleey</dc:creator>
				<category><![CDATA[杂谈]]></category>
		<category><![CDATA[在线吃豆]]></category>

		<guid isPermaLink="false">http://www.bruceleey.com/?p=247</guid>
		<description><![CDATA[根据Google官方博客的报道，Google将从即刻起永久提供吃豆人的在线游戏，以满足广大G粉和游戏迷的怀旧需求。本月22日，Google将首页logo换为NAMCO的经典游戏吃豆人(PACMAN)，以纪念该游戏问世 30周年。这个logo可以实实在在地进行游 戏，并且据传拥有完整的255关。 随后，此游戏在各类社区引发游戏热潮。一天之后该logo下线。 在线游戏地址在这里：http://www.google.com/pacman/ 有没有谁去试下打到爆机的？]]></description>
			<content:encoded><![CDATA[<p>根据Google官方博客的报道，Google将从即刻起永久提供吃豆人的在线游戏，以满足广大G粉和游戏迷的怀旧需求。本月22日，Google将首页logo换为NAMCO的经典游戏吃豆人(PACMAN)，以纪念该游戏问世 30周年。这个logo可以实实在在地进行游 戏，并且据传拥有完整的255关。</p>
<p>随后，此游戏在各类社区引发游戏热潮。一天之后该logo下线。 在线游戏地址在这里：<a href="http://www.google.com/pacman/">http://www.google.com/pacman/</a></p>
<p>有没有谁去试下打到爆机的？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bruceleey.com/archives/247/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
