不灭的焱

革命尚未成功,同志仍须努力

作者:php-note.com  发布于:2016-02-24 16:05  分类:MySQL/NoSQL 

Atlas是由 Qihoo 360,  Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的 MySQL-Proxy 0.8.2 版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平 台,每天承载的读写请求数达几十亿条。

源码下载:https://github.com/Qihoo360/Atlas

作者:php-note.com  发布于:2016-02-18 23:11  分类:PHP开发问题 

大部分PHP框架中,为了防止一个类被重复实例化,往往采用“单例模式”实例化类。我们的项目框架是这样做的:

先写好一个基类 /framework/Base.class.php,内容如下:

<?php
namespace framework;

defined('SITE_PATH') or die('Access Denied');

/**
 * 业务基类
 *
 * @package framework
 */
class Base {
	/**
	 * 类实例化(单例模式)
	 *
	 * @return mixed
	 * @throws \Exception
	 */
	public static function instance() {
		static $_instance = array();

		$classFullName = get_called_class();
		if (!isset($_instance[$classFullName])) {
			core_load_class($classFullName);
			if (!class_exists($classFullName, false)) {
				throw new \Exception('"' . $classFullName . '" was not found !');
			}
			$_instance[$classFullName] = new $classFullName();
		}

		return $_instance[$classFullName];
	}
}
?>
作者:php-note.com  发布于:2016-02-18 15:03  分类:PHP基础 

延迟静态绑定

在PHP5.3以后引入了延迟静态绑定。看下面这段代码:

<?php
class A {
	public static function who() {
		echo __CLASS__;
	}

	public static function test() {
		self::who();
	}
}

class B extends A {
	public static function who() {
		echo __CLASS__;
	}
}

B::test();
?>

上面的代码输出了A,但是我希望它输出B,这就是问题的所在。这也是self和__CLASS__的限制。使用self::或者 __CLASS__对当前类的静态引用,取决于定义当前方法所在的类。所以,这就很好的解释了为什么上面的代码输出了A。但是,如果我们需要输出B呢?

作者:php-note.com  发布于:2016-02-15 18:15  分类:PHP开发问题 
作者:php-note.com  发布于:2016-02-13 21:21  分类:Linux_C基础 
头文件 说明
<assert.h> 验证程序断言
<complex.h> 复数算术运算支持
<ctype.h> 字符分类和映射支持
<errno.h> 出错码
<fenv.h> 浮点环境
作者:php-note.com  发布于:2016-02-13 00:07  分类:Linux_C基础 

本节的任务:

1、建立一个静态库和动态库,提供HelloFunc函数供其他程序编程使用,HelloFunc向终端输出Hello World字符串;

2、安装头文件与共享库。

作者:php-note.com  发布于:2016-02-12 22:43  分类:Linux_C基础 

本小节主要描述了如何在工程中使用多目录、各种安装指令以及CMAKE_INSTALL_PREFIX变量(你真够牛的,这么点东西居然罗唆了这么多文字)在下一小节,我们将探讨如何在cmake中构建动态库静态库,以及如何使用外部头文件外部共享库,毕竟,这是程序编写中最长使用的(对了,你知道用怎样的gcc参数可以直接构建静态库和动态库吗?)

作者:php-note.com  发布于:2016-02-12 22:03  分类:Linux_C基础 

本小节描述了使用cmake构建Hello World程序的全部过程,并介绍了三个简单的指令:PROJECT/MESSAGE/ADD_EXECUTABLE以及变量调用的方法,同时提及了两个隐式变量<projectname>_SOURCE_DIR<projectname>_BINARY_DIR,演示了变量调用的方法,从这个过程来看,有些开发者可能会想,这实在比我直接写Makefile要复杂多了,甚至我都可以不编写Makefile,直接使用gcc main.c即可生成需要的目标文件。是的,正如第一节提到的,如果工程只有几个文件,还是直接编写Makefile最简单。但是,kdelibs压缩包达到了50多M,您认为使用什么方案会更容易一点呢?

作者:php-note.com  发布于:2016-02-01 23:22  分类:Linux_C基础 

《CMake实践》的第三章,初试cmake - cmake的helloworld 中的 

PROJECT (HELLO)
SET(SRC_LIST main.c)
MESSAGE(status "This is BINARY dir " ${HELLO_BINARY_DIR})
MESSAGE(status "This is SOURCE dir " ${HELLO_SOURCE_DIR})
ADD_EXECUTABLE(hello SRC_LIST)

报错