03 2014 档案

摘要:数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。范式说明1.1第一范式(1NF)无重复的列所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含 阅读全文
posted @ 2014-03-25 13:19 jamesbd 阅读(314) 评论(0) 推荐(0)
摘要:Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。 HTTP协议的主要特点可概括如下: 1.支持客户/服务器模式。 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议 阅读全文
posted @ 2014-03-23 19:46 jamesbd 阅读(231) 评论(0) 推荐(0)
摘要:任何一个Web网站的内容都是在不断更新和变化,但这并不意味这这个网站的内容就是动态内容,事实上,动态的内容是指用户每次点击 相同的链接时取的的内容是由Web服务器应用程序生成的,如常见得ASP,JSP等,与此相对应,静态内容一般就是指由文本、图像和多媒体组成,在用户每 次单击相应链接时基本保持不变。现在解决动态内容缓存的最新技术就是通过ESI技术来设计网站的内容。ESI技术工作原理动态生成的内容能为用户带来丰富精彩的页面,网站开发者也可以更容易和更灵活地控制相关的内容,但在享受这些便利的同时,也增加了 网站数据库和应用服务器的处理压力的。当网站的访问量增大后,硬件和数据库的投资是非常巨大的,即 阅读全文
posted @ 2014-03-23 19:45 jamesbd 阅读(294) 评论(0) 推荐(0)
摘要:对于片段缓存,业界有成熟的解决方案,还有一个所谓的W3C标准:ESI(Edge Side Include) 。ESI本身没有什么,只是一个XML的标签集合。ESI和SSI(Server Side Include)很相似,做过ASP开发的都熟悉这么一个标签:IIS碰到这么一个标签后,会把header.inc里面的东西合并到当前的页面,这样做的好处是header.inc本身可以复用了,你可以在多个页面include它。ESI的功能也是类似的,只不过解析和合并它的任务一般落到缓存服务器或代理上: 1: 2: 3: #foreach($book in $books) 4: $boo... 阅读全文
posted @ 2014-03-23 19:42 jamesbd 阅读(554) 评论(0) 推荐(0)
摘要:通过本文,了解工作分发系统 Gearman 并分发用 PHP、C、Ruby 及其他受支持语言编写的应用程序的工作负载。尽管一个 Web 应用程序的大部分内容都与表示有关,但它的价值与竞争优势却可能体现在若干专有服务或算法方面。如果这类处理过于复杂或拖沓,最好是进行异步执行,以免 Web 服务器对传入的请求没有响应。实际上,将一个计算密集型的或专门化的功能放在一个或多个独立的专用服务器上运行,效果会更好。常用的缩略词API:应用程序编程接口HTTP:超文本传输协议LAMP:Linux、Apache、MySQL 与 PHPPHP 的 Gearman 库能把工作分发给一组机器。Gearman 会对作 阅读全文
posted @ 2014-03-22 16:05 jamesbd 阅读(326) 评论(0) 推荐(0)
摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。JSON建构于两种结构:“名称/值”对的集合(A collection 阅读全文
posted @ 2014-03-22 13:55 jamesbd 阅读(215) 评论(0) 推荐(0)
摘要:您可能想要将工作扩散到一个大型机器群体中,或者想要在不同语言和环境之间共享功能,那么开放源码的 Gearman 服务可以让您轻松地将工作分布到网络中的其他机器。本文将介绍 Gearman 的一些典型应用,以及它如何解决现代应用程序中的各种问题。还将学习 Gearman 如何与其他工具(比如说 memcached)结合使用,帮助加速您的应用程序和处理需求。简介现代计算环境最大的挑战之一就是工作分布和计算资源的有效利用。目前的一般趋势是,便宜且轻松地安 装一台强大的机器来执行比较直观和简单的任务,但是这可能得不到最佳的总体性能和机器的最佳利用。相反,很多应用程序现在发现自己需要执行一些相当小的操 阅读全文
posted @ 2014-03-22 13:53 jamesbd 阅读(382) 评论(0) 推荐(0)
摘要:安装redisshell> wget http://redis.googlecode.com/files/redis-2.0.4.tar.gzshell> tar zxvf redis-2.0.4.tar.gzshell> mv redis-2.0.4 redisshell> cd redisshell> makeshell> redis-server 不要关shell> redis-cliredis>set foo barOKredis>get foo"bar"安装phpredis模块https://github.co 阅读全文
posted @ 2014-03-22 12:09 jamesbd 阅读(345) 评论(0) 推荐(0)
摘要:说法一:两个不同版本的php的memcached的客户端new memcache是pecl扩展库版本new memcached是libmemcached版本功能差不多说法二:Memcache是什么?Memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加速动态web应用程序,减轻数据库负载。 它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这些HashTable。Memcached是简单而强大的。它简单的设计促进迅速部署,易于发展所面临的问题,解决了很多大型数据缓存。它的API可 阅读全文
posted @ 2014-03-22 11:37 jamesbd 阅读(480) 评论(0) 推荐(0)
摘要:Gearman是一个分发任务的程序框架,可以用在各种场合,与Hadoop相 比,Gearman更偏向于任务分发功能。它的任务分布非常简单,简单得可以只需要用脚本即可完成。Gearman最初用于LiveJournal的图片 resize功能,由于图片resize需要消耗大量计算资源,因此需要调度到后端多台服务器执行,完成任务之后返回前端再呈现到界面。通常,多语言多系统之间的集成是个大问题,一般来说,人们多半会采用WebService的方式来处理此类集成问题,但不管采用何种风格的WebService,如RPC风格,或者REST风格,其本身都有一定的复杂性。相比之下,Gearman也能实现类似的作用 阅读全文
posted @ 2014-03-22 11:24 jamesbd 阅读(244) 评论(0) 推荐(0)
摘要:http://www.freewaf.org/solution/#1http://baike.soso.com/v60659982.htm 阅读全文
posted @ 2014-03-22 11:11 jamesbd 阅读(207) 评论(0) 推荐(0)
摘要:Explain语法EXPLAIN SELECT ……变体:1. EXPLAIN EXTENDED SELECT ……将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2. EXPLAIN PARTITIONS SELECT ……用于分区表的EXPLAIN执行计划包含的信息id包含一组数字,表示查询中执行select子句或操作表的顺序id相同,执行顺序由上至下如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行id如果相同,可以认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行select_ty. 阅读全文
posted @ 2014-03-12 20:03 jamesbd 阅读(479) 评论(0) 推荐(0)
摘要:system('echo "'.$xmlHeader.$xmlBody.$xmlFooter.'" | mail -s "百度新闻源生成成功,地址=>http://www.xxx.com/'.$fileName[$cate][3].'" "xxx.xxx@xxx.com.cn"'); 阅读全文
posted @ 2014-03-11 18:34 jamesbd 阅读(128) 评论(0) 推荐(0)
摘要:线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源(3)线程是处理器调度的基本单位,但进程不是.4)二者均可并发执行. 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。 另外,进程在执行过程中拥有独立的内存单... 阅读全文
posted @ 2014-03-10 13:54 jamesbd 阅读(188) 评论(0) 推荐(0)
摘要:•Mysql相关工具 –Mysqlslap 压力测试工具 –Mysqlsla 日志分析工具–Mysqlreport 效能监控工具 –Mysqlproxy 快速实现读写分离以及负载均衡–percona-toolkit 监控类工具 如监视死锁–Sysbench 多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试。数据库目前支持MySQL/Oracle/PostgreSQL–MySQL-Transefer 多线程同步工具–Relayfetch 解决mysql replication 中主从延迟问题–percona-xtrabackup 热备和恢复MySQL –Mydumpe 阅读全文
posted @ 2014-03-10 11:09 jamesbd 阅读(184) 评论(0) 推荐(0)
摘要:在调用存储过程中,就会涉及到表锁,行锁这一概念:所谓区别:有索引的时候就是行锁,没有索引的时候就是表索。innodb 的行锁是在有索引的情况下,没有索引的表是锁定全表的.表锁演示(无索引)Session1:mysql> set autocommit=0;mysql> select * from innodb_test;+------+-------------+| id | name |+------+-------------+| 1 | woshiceshi || 2 | woshiceshi2 || 3 | woshiceshi3 |+------+------------- 阅读全文
posted @ 2014-03-05 14:22 jamesbd 阅读(993) 评论(0) 推荐(0)
摘要:http://www.woiweb.net/github-gitshell-tutorial.html 阅读全文
posted @ 2014-03-05 13:29 jamesbd 阅读(122) 评论(0) 推荐(0)
摘要:如果你的MySQL出现了性能问题,第一个需要“诊断”的就是slow log(慢日志)了。slow log文件很小,使用more less等命令就足够了。如果slow log很大怎么办?这里介绍MySQL自带的工具mysqldumpslow来帮你解析慢日志(也可以跳过本文,直接阅读Manual)。1. 基本使用$mysqldumpslow slow.log > slow.dat$more slow.dat输出的数据:Count: 3 Time=62.67s (188s) Lock=0.00s (0s) Rows=1623770.7 (4871312), root[root]@localho 阅读全文
posted @ 2014-03-05 11:37 jamesbd 阅读(1302) 评论(0) 推荐(0)
摘要:__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload1、__get、__set这两个方法是为在类和他们的父类中没有声明的属性而设计的__get( $property ) 当调用一个未定义的属性时访问此方法__set( $property, $value ) 给一个未定义的属性赋值时调用这里的没有声明包括当使用对象调用时,访问控制为proteced,priva 阅读全文
posted @ 2014-03-05 10:54 jamesbd 阅读(160) 评论(0) 推荐(0)
摘要:由于某个临时需求,需要给在线MySQL的某个超过千万的表增加一个字段。此表在设计之时完全按照需求实现,并没有多余的保留字段。我们知道在MySQL中如果要执行ALTER TABLE操作,MySQL会通过制作原来表的一个临时副本来工作。对于表结构的修改在副本上施行,然后将新表替换原始表,此时会产生锁表,用户可以从原始表读取数据,而用户的更新和写入操作都会被lock,待新表准备好后写入新表。这对于在线的数据量较大的表来说是绝对无法容忍的,并且由于这种在线操作时间会很长,此时如果show processlist,会发现有若干的MySQL进程处于lock状态,当这种进程太多超过单台服务器允许的MySQL 阅读全文
posted @ 2014-03-05 10:52 jamesbd 阅读(1594) 评论(0) 推荐(0)
摘要:#定义Nginx运行的用户和用户组user www www;#nginx进程数,建议设置为等于CPU总核心数。worker_processes 8;#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]error_log ar/loginx/error.log info;#进程文件pid ar/runinx.pid;#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。worker_rl 阅读全文
posted @ 2014-03-03 17:42 jamesbd 阅读(209) 评论(0) 推荐(0)
摘要:在 Nginx 0.6.35 的版本中,配置多个 server 虚拟主机,必须要在配置文档中 http { 里头加上 server_names_hash_bucket_size 64; 这么一句http {server_names_hash_bucket_size 64;include mime.types;default_type application/octet-stream;………….省略}不然不但 nginx 启动不了,而且 nginx -t 测试配置文档的时候会提示could not build the server_names_hash, you should increase 阅读全文
posted @ 2014-03-03 17:06 jamesbd 阅读(2104) 评论(0) 推荐(0)
摘要:查看CPU信息(型号)# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz(看到有8个逻辑CPU, 也知道了CPU型号)# cat /proc/cpuinfo | grep physical | uniq -c 4 physical id : 0 4 physical id : 1(说明实际上是两颗4核的CPU)# getconf LONG_BIT 32(说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)# cat /proc/cpuin 阅读全文
posted @ 2014-03-03 16:46 jamesbd 阅读(22715) 评论(0) 推荐(0)