• 不可能会想到汽车以1公里每小时的速度行驶在宽阔的八达岭高速上。

    不可能想到到京郊的家民兄弟,开口闭口只谈钱。一个人一个心眼。太毒啦。。。

    从北京到康西要四个小时,不可能?没有不可能。

    在康西草原一切皆有不可能。

     

  • 关于MySQL事务处理学习记

    START TRANSACTION, COMMIT和ROLLBACK语法
    START TRANSACTION | BEGIN [WORK]
    COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
    ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
    SET AUTOCOMMIT = {0 | 1}

    START TRANSACTION或BEGIN语句可以开始一项新的事务。COMMIT可以提交当前事务,是变更成为永久变更。ROLLBACK可以 回滚当前事务,取消其变更。SET AUTOCOMMIT语句可以禁用或启用默认的autocommit模式,用于当前连接。

    自选的WORK关键词被支持,用于COMMIT和RELEASE,与CHAIN和RELEASE子句。CHAIN和RELEASE可以被用于对事务完成进行附加控制。Completion_type系统变量的值决定了默认完成的性质。

    AND CHAIN子句会在当前事务结束时,立刻启动一个新事务,并且新事务与刚结束的事务有相同的隔离等级。RELEASE子句在终止了当前事务后,会让服务器断开与当前客户端的连接。包含NO关键词可以抑制CHAIN或RELEASE完成。如果completion_type系统变量被设置为一定的值,使连锁或释放完成可以默认进行,此时NO关键词有用。

    默认情况下,MySQL采用autocommit模式运行。这意味着,当您执行一个用于更新(修改)表的语句之后,MySQL立刻把更新存储到磁盘中。

    如果您正在使用一个事务安全型的存储引擎(如InnoDB, BDB或NDB簇),则您可以使用以下语句禁用autocommit模式:

    SET AUTOCOMMIT=0;
    通过把AUTOCOMMIT变量设置为零,禁用autocommit模式之后,您必须使用COMMIT把变更存储到磁盘中,或着如果您想要忽略从事务开始进行以来做出的变更,使用ROLLBACK。

    如果您想要对于一个单一系列的语句禁用autocommit模式,则您可以使用START TRANSACTION语句:

    START TRANSACTION;
    SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
    UPDATE table2 SET summary=@A WHERE type=1;
    COMMIT;
    使用START TRANSACTION,autocommit仍然被禁用,直到您使用COMMIT或ROLLBACK结束事务为止。然后autocommit模式恢复到原来的状态。

    BEGIN和BEGIN WORK被作为START TRANSACTION的别名受到支持,用于对事务进行初始化。START TRANSACTION是标准的SQL语法,并且是启动一个ad-hoc事务的推荐方法。BEGIN语句与BEGIN关键词的使用不同。BEGIN关键词可以启动一个BEGIN...END复合语句。后者不会开始一项事务。

    您也可以按照如下方法开始一项事务:

    START TRANSACTION WITH CONSISTENT SNAPSHOT;

    WITH CONSISTENT SNAPSHOT子句用于启动一个一致的读取,用于具有此类功能的存储引擎。目前,该子句只适用于InnoDB。该子句的效果与发布一个START TRANSACTION,后面跟一个来自任何InnoDB表的SELECT的效果一样。请参见15.2.10.4节,“一致的非锁定读”。

    开始一项事务会造成一个隐含的UNLOCK TABLES被执行。

    为了获得最好的结果,事务应只使用由单一事务存储引擎管理的表执行。否则,会出现以下问题:

    如果您使用的表来自多个事务安全型存储引擎(例如InnoDB和BDB),并且事务隔离等级不是SERIALIZABLE,则有可能当一个事务提交时,其它正在进行中的、使用同样的表的事务将只会发生由第一个事务产生的变更。也就是,用混合引擎不能保证事务的原子性,并会造成不一致。(如果混合引擎事务不经常有,则您可以根据需要使用SET TRANSACTION ISOLATION LEVEL把隔离等级设置到SERIALIZABLE。)

    如果您在事务中使用非事务安全型表,则对这些表的任何变更被立刻存储,不论autocommit模式的状态如何。

    如果您在更新了事务中一个事务表之后,发布一个ROLLBACK语句,则会出现一个ER_WARNING_NOT_COMPLETE_ROLLBACK警告。对事务安全型表的变更被 回滚,但是对非事务安全型表没有变更。

    每个事务被存储在一个组块中的二进制日志中,在COMMIT之上。被回滚的事务不被计入日志。(例外情况:对非事务表的更改不会被 回滚。如果一个被回滚的事务包括对非事务表的更改,则整个事务使用一个在末端的ROLLBACK语句计入日志,以确保对这些表的更改进行复制。)

    您可以使用SET TRANSACTION ISOLATION LEVEL更改事务的隔离等级。

    回滚可以慢速运行。在用户没有明确要求时,也可以进行回滚(例如,当错误发生时)。因此,在明确地和隐含的(ROLLBACK SQL命令)回滚时,SHOW PROCESSLIST会在Stage列中显示Rolling back,用于连接。

  • 放过屁的没举手,第二天他告诉大家他昨天放屁了。

    没放屁的没举手,第二他告诉大家他昨天听见别人放屁了。

    当屁的价值失去时,他才让大家知道他放了屁。

     



  • 费话不说,代码说话!

    配置文件config.php

    <?php
    $dbhost = 'localhost';
    $dbuser = 'root';
    $dbpass = '';
    $dbname = 'success';

    ?>

    数据库及数据表session.sql

    CREATE DATABASE success;
    USE success;
    DROP TABLE IF EXISTS `sess`;
    CREATE TABLE `sess` (
      `sess_id` varchar(255) character set latin1 collate latin1_bin NOT NULL default '',
      `sess_expires` int(10) unsigned NOT NULL default '0',
      `sess_data` text,
      PRIMARY KEY  (`sess_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    SESSION处理类,以及在最面的实例

    <?php
    /**
     * @Date    2008/09/12
     *
     * @Author  genghonghao@gmail.com
     *
     * @About   SESSION 处理类
     *
     */
    include_once 'config.php';

    define('BB_DBHOST', $dbhost);
    define('BB_DBUSER', $dbuser);
    define('BB_DBPASS', $dbpass);
    define('BB_DBNAME', $dbname);

    define('BANKBONE_SESS_NAME', 'backbone');

    class Database {
        private $connect;

        public function __construct() {
            $this->connect = mysql_connect(BB_DBHOST, BB_DBUSER, BB_DBPASS);
            mysql_select_db(BB_DBNAME, $this->connect);
        }

        public function query($sql) {
            $query = mysql_query($sql) or die("Invalid query: " . mysql_error());
            return $query;
        }

        public function get_result($sql) {
            $query = $this->query($sql);
            $result = mysql_fetch_assoc($query);
            return $result;
        }

        public function get_num_rows($sql) {
            $result = $this->query($sql);
            $num_rows = mysql_num_rows($result);
            return $num_rows;
        }

        public function affected_rows() {
            return mysql_affected_rows();
        }

        public function close() {
            @mysql_close($this->connect);
        }
    }
    class BackboneSession extends Database{
        public $lifetime;

        function open($save_path, $sess_name) {
            $this->lifetime = empty($this->lifetime) ? get_cfg_var("session.gc_maxlifetime") : $this->lifetime;
            parent::__construct();
            return true;
        }
        function close() {
            $max_life_time = empty($this->lifetime) ? ini_get('session.gc_maxlifetime') : $this->lifetime;
            $this->gc($max_life_time);
            return parent::close();
        }
        function read($sess_id) {
            $res = "SELECT sess_data AS d FROM sess WHERE sess_id = '$sess_id' AND sess_expires > ".time();
            $result = parent::get_result($res);
            $result = $this->result;
            if($result['d']) {
                return $result['d'];
            }
            return "";
        }
        function write($sess_id,$sess_data) {
            $new_exp = time() + $this->lifetime;
            if(parent::get_num_rows("SELECT * FROM sess WHERE sess_id = '$sess_id'")) {
                $sql = "UPDATE sess SET sess_expires = '$new_exp', sess_data = '$sess_data' WHERE sess_id = '$sess_id'";
                parent::query($sql);
                if(parent::affected_rows())
                    return true;
            }
            else {
                $sql = "INSERT INTO sess ( sess_id, sess_expires, sess_data) VALUES( '$sess_id', '$new_exp', '$sess_data')";
                parent::query($sql);
                if(parent::affected_rows())
                    return true;
            }
            return false;
        }
        function destroy($sess_id) {
            parent::query("DELETE FROM sess WHERE sess_id = '$sess_id'");
            if(parent::affected_rows())
                return true;
            return false;
        }
        function gc($sess_max_life_time) {
            $sql = "DELETE FROM sess WHERE sess_expires < ".time();
            parent::query($sql);
            return parent::affected_rows();
        }
    }
    $session = new BackboneSession();
    $session->lifetime = 3600;
    session_set_save_handler(array(&$session,"open"),
            array(&$session,"close"),
            array(&$session,"read"),
            array(&$session,"write"),
            array(&$session,"destroy"),
            array(&$session,"gc"));

    if (ini_get('session.auto_start') == true && session_name() != BANKBONE_SESS_NAME) {
        $_SESSION = array();
        if (isset($_COOKIE[session_name()])) {
            session_name(BANKBONE_SESS_NAME);
        }
        session_unset();
        @session_destroy();
    }

    ini_set('session.use_cookies', true);
    ini_set('session.use_only_cookies', false);
    ini_set('session.use_trans_sid', false);
    ini_set('session.cookie_lifetime', 0);
    @session_name(BANKBONE_SESS_NAME);

    session_start();
    if (!isset($_SESSION[' backbone_token '])) {
            $_SESSION[' backbone_token '] = md5(uniqid(rand(), true));
    }

    // 注销一个会话
    if($_GET['action'] == 'logout') {
        $_SESSION = array();
        if(isset($_COOKIE[session_name()])) {
            setcookie(session_name(), time()-1000);
        }
        session_destroy();
    }

    // 生成一个会话
    if($_GET['action'] == 'login') {
        $_SESSION['username'] = "xuewu";
        $_SESSION['userid']   = 1;
        $_SESSION['valid']    = 1;
        var_dump($_SESSION);
        echo session_name()."|".session_id();
    }
    ?>
     

  • 1,天灰蒙蒙滴,公组织俺们去兴城。

    2,俺们躲在海水里一边游泳一边撒尿。

    3,海天相接的地方越看越宽广。

    4,建松是个追梦人,没有放弃梦想。就会轻意成功。

    5,日子过的松紧无度。百无聊赖。

    6,挣钱吧。

     

  • 无命题。

    2008-08-27

    9,巴西,和美国你更喜欢谁。朕喜欢奔腾的美国。

    3,龌龊的事情我们都有染指的可能,但深度却完全不同。

    5,后天要去辽宁了,不知道第一次见到大少海会是个什么样子。

    6,队列是被叫作QUEUE的家伙,阿佟的意思是里边放四个进程。

    1,BODY是知识,HEADER是头脑和路子。那么HEADER比BODY重要。

    0,又想看《天龙八部》了,一个晚上打十个电话或许不是个死命令。

  • 短暂!

    2008-08-25

    1,博客写了二年半了,看上时间还是很短暂。

    2,买了一本《西藏秘密1》和一本《时间管理》

  • 难念的经!!!

    2008-08-24

    天龙八部主题曲

    周华建

    笑你我枉花光心计
    爱竞逐镜花那美丽
    怕幸运会转眼远逝
    为贪嗔喜恶怒着迷
    责你我太贪功恋势
    怪大地众生太美丽
    悔旧日太执信约誓
    为悲欢哀怨妒着迷

    啊~啊~舍不得璀灿俗世
    啊~啊~躲不开痴恋的欣慰
    啊~啊~找不到色相代替
    啊~啊~参一生参不透这条难题

    吞风吻雨葬落日未曾彷徨
    欺山赶海践雪径也未绝望
    拈花把酒偏折煞世人情狂
    凭这两眼与百臂或千手不能防
    天阔阔雪漫漫共谁同航
    这沙滚滚水皱皱笑着浪荡
    贪欢一刻偏教那女儿情长埋葬

    吞风吻雨葬落日未曾彷徨
    欺山赶海践雪径也未绝望
    拈花把酒偏折煞世人情狂
    凭这两眼与百臂或千手不能防
    天阔阔雪漫漫共谁同航
    这沙滚滚水皱皱笑着浪荡
    贪欢一刻偏教那女儿情长埋葬


    笑你我枉花光心计
    爱竞逐镜花那美丽
    怕幸运会转眼远逝
    为贪嗔喜恶怒着迷
    责你我太贪功恋势
    怪大地众生太美丽
    悔旧日太执信约誓
    为悲欢哀怨妒着迷

    啊~啊~舍不得璀灿俗世
    啊~啊~躲不开痴恋的欣慰
    啊~啊~找不到色相代替
    啊~啊~参一生参不透这条难题

    吞风吻雨葬落日未曾彷徨
    欺山赶海践雪径也未绝望
    拈花把酒偏折煞世人情狂
    凭这两眼与百臂或千手不能防
    天阔阔雪漫漫共谁同航
    这沙滚滚水皱皱笑着浪荡
    贪欢一刻偏教那女儿情长埋葬

    吞风吻雨葬落日未曾彷徨
    欺山赶海践雪径也未绝望
    拈花把酒偏折煞世人情狂
    凭这两眼与百臂或千手不能防
    天阔阔雪漫漫共谁同航
    这沙滚滚水皱皱笑着浪荡
    贪欢一刻偏教那女儿情长埋葬

    吞风吻雨葬落日未曾彷徨
    欺山赶海践雪径也未绝望
    拈花把酒偏折煞世人情狂
    凭这两眼与百臂或千手不能防
    天阔阔雪漫漫共谁同航
    这沙滚滚水皱皱笑着浪荡
    贪欢一刻偏教那女儿情长埋葬

    吞风吻雨葬落日未曾彷徨
    欺山赶海践雪径也未绝望
    拈花把酒偏折煞世人情狂
    凭这两眼与百臂或千手不能防
    天阔阔雪漫漫共谁同航
    这沙滚滚水皱皱笑着浪荡
    贪欢一刻偏教那女儿情长埋葬
  • 1,埃蒙斯的每一次失败都显的那么不可思议,但他仍旧保持了微笑。

    2,埃蒙斯是以一个心态相当好的超人。我们应该记住他。

    3,中国举重队也有一个超人,他叫张国政。他最耀眼的时刻是在2004年的雅典。他永远都不曾放弃过梦想。

    4,梦--不是重复而是创新。梦不应该缩小而应该放大。梦,是坚持出来的。

    5,...................

  • 赞!

    2008-08-20

    1,很久没有写博客了,朕要和你大战一场。

    2, 感谢刘翔,激发我独立思考的勇气。

    3,鸟巢输给了水立方。

    4,韩小胖越来越粗鲁了,也越来越傻了。

    5,亿邮是个很棒的公司,我已经为她工作快两年了。

    6,在地铁上消耗时间比他妈工作还累。

    7,palm650越强大就越不稳定。

    8,如果google android 系统的手机上市说,老子的PALM650将要下岗。

    9,随着年龄的增长,朕也变的越来越保守了。

    10,经验的增长总是伴随着激情的消失。

    11,如果有了孩子,我的生活会变的多无聊。

    12,公司再处理电脑了,搬到家里一台,当服务器用。

    13,明天要弄六张电影票,谢天谢地,谢谢韩小胖。