08 2013 档案
PHP通过JSON给JS赋值;JS通过JSON给PHP传值
摘要:$fileNames = array(); // 是数组,不是字符串$filesJSON = json_encode($fileNames);// 转成json格式var oldFiles = new Array();//oldFiles = '';// 这样oldFiles成字符串了,而不是json数据oldFiles = JSON.parse('');// JSON格式即为数组格式------------------------------------------------------------------------------------------ 阅读全文
posted @ 2013-08-29 16:42 any91 阅读(1173) 评论(0) 推荐(0)
PHP限制上传文件大小
摘要:在php.ini中修改如下变量,如要限制为100Mupload_max_filesize = 100Mpost_max_size = 100M重启Apache 阅读全文
posted @ 2013-08-29 14:22 any91 阅读(187) 评论(0) 推荐(0)
PHP 类中使用全局变量和全局常量
摘要:_var = $global_var; // 全局常量不可以通过global传入 //global global_const; } }$test = new Test();echo $test->_var;echo $test->_const;?> 阅读全文
posted @ 2013-08-29 11:20 any91 阅读(8345) 评论(0) 推荐(0)
利用span设置文字固定宽度
摘要:手动下载 自动分发 .modeText { width:150px; display:inline-block; border: 1px solid #0000FF; }由于span是inline元素,所以使用width并不起作用,但是设置为block元素,又会影响其它元素的布局,CSS2.1引入的inine-block可以完美解决此问题 阅读全文
posted @ 2013-08-27 16:38 any91 阅读(574) 评论(0) 推荐(0)
PHP 输出XML字符串
摘要: 阅读全文
posted @ 2013-08-27 14:43 any91 阅读(258) 评论(0) 推荐(0)
mysql获取刚插入(添加)记录的自动编号id
摘要:我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数,一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的。但在多线程情况下,就不行了。下面介绍三种方法(1) getGeneratedKeys()方法:程序片断:Connection conn = ; Serializable ret = null; PreparedStatement state = .; ResultSet rs=null; try { state.executeUpdate(); rs = state.getGeneratedKeys(); if (rs.... 阅读全文
posted @ 2013-08-21 14:41 any91 阅读(1263) 评论(0) 推荐(0)
JQuery学习笔记
摘要:1.jquery对象的length方法,获取的元素个数不包括子元素,例如: alert($(".msg").length);//2当然,由于选择符具有继承性,所以,如果子元素有同样条件的,将被包括,例如: alert($(".msg").length);//22.$("div.class")或者$("div .class")都可以,但是不能写作$(".class div") 阅读全文
posted @ 2013-08-19 12:42 any91 阅读(154) 评论(0) 推荐(0)
详细讲解CSS中相对定位relative和绝对定位absolute
摘要:很多朋友问过我absolute与relative怎么区分,怎么用?我们都知道absolute是绝对 定位,relative是相对定位,但是这个绝对与相对是什么意思呢?绝对是什么地方的绝对,相对又是相对于什么地方而言的呢?那他们又有什么样的特性, 可以做出什么样的效果呢?关于两者之间又有什么样的技巧呢?下面我们就来一一解读。 Absolute,CSS中的写法是:position:absolute; 他的意思是绝对定位,他是参照浏览器的左上角,配合TOP、RIGHT、BOTTOM、LEFT(下面简称TRBL)进行定位,在没有设定TRBL,默认 依据父级的做标原始点为原始点。如果设定TRBL并且父. 阅读全文
posted @ 2013-08-16 18:03 any91 阅读(477) 评论(0) 推荐(0)
javascript学习笔记
摘要:1.typeof是操作符,不是函数,不过可以以函数的写法调用。例子:alert(typeof message);alert(typeof(message));2.js变量类型虽是松散的,但也是有类型的3.一个变量在定义时被初始化,根据初始化的值,变量的类型就被指明了,比如var message = "some string";此时message是字符串类型,之后也可以赋给它其它类型的值,如message=15,但这样并不推荐4.js有两个特殊数据类型:undefined类型和null类型1)undefined类型只有一个值undefined,null类型也只有一个值null 阅读全文
posted @ 2013-08-15 10:39 any91 阅读(380) 评论(1) 推荐(0)
如何学好javascript
摘要:今天逛论坛时看到有朋友问,是否有专门教Javascript的学校,这里想想把自己的一点建议和自己3年来的前端Javascript开发的经验跟大家分享下,也给出几本个人认为不错的书来做为大家学习的参考资料。当然只是个人的经验,有什么不对的也请高手见谅和指正。关于到培训学校学习的忠告:别 说现在没有这样的学校,就是有专门的学校也不要去,因为不会有好的老师的。不要浪费你自己(很可能是你父母)的钱和时间。趁早死了这个念头。关于培训学校 的这个我想我要比一般的朋友更有发言权,因为我本人干英语培训将近2年,我很清楚培训市场的情况,你很难碰到一个好的老师。英语可能还好些, 毕竟英语说得好的老师还比较多,长期 阅读全文
posted @ 2013-08-14 17:44 any91 阅读(392) 评论(0) 推荐(0)
foreach数组并直接改变数组内容
摘要: 阅读全文
posted @ 2013-08-13 09:27 any91 阅读(509) 评论(0) 推荐(0)
基于jquery,php实现AJAX长轮询(LongPoll),类似推送机制
摘要:HTTP是无状态、单向的协议,用户只能够通过客服端向服务器发送请求并由服务器处理发回一个响应。若要实现聊天室、WEBQQ、在线客服、邮箱等这些即时通讯的应用,就要用到“ 服务器推送技术(Comet)”。传统的AJAX轮询方式,客服端以用户定义的时间间隔去服务器上查询最新的数据。种这种拉取数据的方式需要很短的时间间隔才能保证数据的精确度,但太短的时间间隔客服端会对服务器在短时间内发送出多个请求。反转AJAX,就是所谓的长轮询或者COMET。服务器与客服端需要保持一条长时间的请求,它使得服务器在有数据时可以返回消息给客户端。 html:[html] view plaincopyjavascript 阅读全文
posted @ 2013-08-12 14:11 any91 阅读(488) 评论(1) 推荐(0)
设计模式C++描述----22.访问者(Visitor)模式
摘要:一. 访问者模式定义:表示一个作用于某对象结构中的各元素的操作。它你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。结构如下:二. 举例假设有一项科学实验,是用来对比两种种子在不同环境下的生长情况。两种种子,一种是普通的种子(Seed_A),一种是太空运回的种子(Seed_B)。生长环境,分别是在多雨环境下(Rain_Status),阳光环境下(Sun_Status)等等。结构如下:代码如下:[cpp] view plaincopy//状态classStatus{public:virtual~Status(){}virtualvoidVisitSeed_A(Seed*elm){}vi 阅读全文
posted @ 2013-08-09 12:50 any91 阅读(242) 评论(0) 推荐(0)
设计模式C++描述----21.解释器(Iterpreter)模式
摘要:一. 解释器模式定义:给定一个语言,定义它的文法的一种表示,并定一个解释器,这个解释器使用该表示来解释语言中的句子。结构如下:代码如下:[cpp] view plaincopy//包含解释器之外的一些全局信息classContext{public:Context(){}~Context(){}};classAbstractExpression{public:virtual~AbstractExpression(){}virtualvoidInterpret(constContext&c){}protected:AbstractExpression(){}};//终结符表达式classT 阅读全文
posted @ 2013-08-09 12:48 any91 阅读(286) 评论(0) 推荐(0)
设计模式C++描述----20.迭代器(Iterator)模式
摘要:一. 举例说明我们知道,在 STL 里提供 Iterator 来遍历 Vector 或者 List 数据结构。Iterator 模式也正是用来解决对一个聚合对象的遍历问题,将对聚合的遍历封装到一个类中进行,这样就避免暴露这个聚合对象的内部表示的可能。例如在 STL 里有如相下结构:二. 迭代器模式定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。比较经典的例子是 STL 里的 for_each 操作:[cpp] view plaincopy//functioncalledforeachelementvoidprint(intelem){coutcoll;INSERT 阅读全文
posted @ 2013-08-09 12:47 any91 阅读(209) 评论(0) 推荐(0)
设计模式C++描述----19.命令(Command)模式
摘要:一. 举例说明我们知道,在多线程程序中,多个用户都给系统发 Read 和 Write 命令。这里有几点需要说明:1. 首先明确一点,所有的这些 Read 和 Write 命令都是调用一个库函数。2. 用户并不需要知道别的用户的存在,也不管别人发不发命令,只管自己发命令,最后给结果即可。3. 这些命令先是到了一个消息队列里面,然后由消息队列调用库函数。结构图如下:代码如下:[cpp] view plaincopyclassCommand;//实施与执行类classReciever{public:voidAction(){cout_rev=rev;}~Read_Command(){deleteth 阅读全文
posted @ 2013-08-09 12:46 any91 阅读(153) 评论(0) 推荐(0)
设计模式C++描述----18.中介者(Mediator)模式
摘要:一. 举例比如,现在中图和日本在关于钓鱼岛问题上存在争端。这时,联合国就会站出来,做为调解者,其实也没什么好调解的,钓鱼岛本来就是中国的,这是不争的事实!联合国也就是个传话者、发言人。结构图如下:代码如下:[cpp] view plaincopy//抽象国家classCountry{protected:Mediator*m_mediator;//中介public:virtualvoidSetMediator(Mediator*mediator){}//设置中介virtualvoidSendMessage(stringmessage){}//向中介发信息virtualvoidGetMessage 阅读全文
posted @ 2013-08-09 12:45 any91 阅读(236) 评论(0) 推荐(0)
设计模式C++描述----17.备忘录(Memento)模式
摘要:一. 备忘录模式定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。结构图:使用范围:Memento 模式比较适用于功能比较复杂的,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分时,Originator 可以根据保存的 Memento 信息还原到前一状态。代码:[cpp] view plaincopy//备忘录类//负责存储Originator对象的内部状态classMemento{//注意:备忘录类中的方法是私有的!!!!!!!private://这是最关键的地方,将Originator为fri 阅读全文
posted @ 2013-08-09 12:42 any91 阅读(170) 评论(0) 推荐(0)
设计模式C++描述----16.状态(State)模式
摘要:一. 举例一般汽车发动机工作时有四种状态,吸气、压缩、做功和排气。在运行时,不同的状态会有不同的行为,当前的状态机在适当的时候会过渡到下一状态。其实用户在使用时根本不知道当前的状态,也无需知道当前的状态。用户只需要给发动机一个初始状态,最后得到一个停止状态就行了。结构图如下:代码如下:[cpp] view plaincopy//状态classState{public:virtualvoidOperation(Work*work){}};//工作classWork{private:State*m_state;//目前状态intm_step;//步骤public:Work(State*state) 阅读全文
posted @ 2013-08-09 12:39 any91 阅读(299) 评论(0) 推荐(0)
设计模式C++描述----15.策略(Strategy)模式
摘要:一. 举例说明以前做了一个程序,程序的功能是评价几种加密算法时间,程序的使用操作不怎么变,变的是选用各种算法。结构如下:Algorithm:抽象类,提供算法的公共接口。RSA_Algorithm:具体的RSA算法。DES_Algorithm:具体的DES算法。BASE64_Algorithm:具体的Base64算法。在使用过程中,我只需要对外公布Algorithm_Context这个类及接口即可。代码实现:[cpp] view plaincopy//策略类classAlgorithm{public:virtualvoidcalculate()=0;};//具体RSA算法classRSA_Alg 阅读全文
posted @ 2013-08-09 12:38 any91 阅读(169) 评论(0) 推荐(0)
设计模式C++描述----14.外观(Facade)模式
摘要:一. 举例说明还以我以前做的文件系统(FileSys)为例:文件系统是一个独立的系统,它提供一套核心的文件操作。除了文件系统,还有四个子系统,分别是杀毒子系统(KillVirus),压缩子系统(ZipFile),加密子系统(EncrypeFile)和刻录子系统(BurnCD),这四个子系统相互独立,但又可以做为主系统功能的一部分。假设客户需要我这个文件系统有两种执行模式,一种是完全模式,一种是简单模式。完全模式,要求杀毒子,压缩,加密和刻录功能都有。简单模式,要求只要有杀毒,刻录就行了。第一种设计:文件系统自己管理所有的子系统,并实现客户的需求。最开始的话,我们是按上面的结构来设计的,这个文件 阅读全文
posted @ 2013-08-09 12:37 any91 阅读(176) 评论(0) 推荐(0)
设计模式C++描述----12.享元(Flyweight)模式
摘要:一. 概述在面向对象系统的设计何实现中,创建对象是最为常见的操作。这里面就有一个问题:如果一个应用程序使用了太多的对象,就会造成很大的存储开销。特别是对于大量轻量级(细粒度)的对象,比如在文档编辑器的设计过程中,我们如果没有为字母创建一个对象的话,系统可能会因为大量的对象而造成存储开销的浪费。例如一个字母“a”在文档中出现了100000次,而实际上我们可以让这一万个字母“a”共享一个对象,当然因为在不同的位置可能字母“a”有不同的显示效果(例如字体和大小等设置不同),在这种情况我们可以为将对象的状态分为“外部状态”和“内部状态”,将可以被共享(不会变化)的状态作为内部状态存储在对象中,而外部对 阅读全文
posted @ 2013-08-09 12:34 any91 阅读(184) 评论(0) 推荐(0)
设计模式C++描述----13.代理(Proxy)模式
摘要:一. 举例说明我们有时打开一个网站时会发现有这样的现象,网站上的文字都显示出来了,但是上面的图片还没显示,要等一会才能显示。这些未打开的图片的位置上,还是会有图片框和一些等待的信息的,这就是代理模式的应用,此时的代理存储了真实图片的路径和尺寸也用来显示一些友好的信息。结构图如下:代码实现:[cpp] view plaincopy//基类classBigImage{public:BigImage(stringname):m_imageName(name){}virtual~BigImage(){}virtualvoidShow(){}protected:stringm_imageName;};/ 阅读全文
posted @ 2013-08-09 12:34 any91 阅读(241) 评论(0) 推荐(0)
设计模式C++描述----11.组合(Composite)模式
摘要:一. 举例这个例子是书上的,假设有一个公司的组结结构如下:它的结构很像一棵树,其中人力资源部和财务部是没有子结点的,具体公司才有子结点。而且最关健的是,它的每一层结构很相似。代码实现如下:[cpp] view plaincopy//公司类,提供接口classCompany{public:Company(stringname){m_name=name;}virtual~Company(){}virtualvoidAdd(Company*pCom){}virtualvoidDisplay(intdepth){}protected:stringm_name;};//具体公司classConcrete 阅读全文
posted @ 2013-08-09 12:33 any91 阅读(214) 评论(0) 推荐(0)
设计模式C++描述----10.装饰(Decorator)模式
摘要:一. 举例我之前做过一个文件系统就叫 MyFileSys 吧,后来的话,客户想加入一些附加功能,比如压缩、加密、杀毒之类的操作,这些附加操作没有先后顺序,比如你可以先压缩再加密,也可以先杀毒再压缩,等等。这些附加功能是可选的,有的客户要这些功能,有的不要,有的要其中的几种附加功能等等。怎么设计呢?第一种方案:直接修改这个独立的文件系统 MyFileSys,对于不同的客户实现不同的文件系统。后来随着客户的增多,发现维护和修改的工作量越来越大。因为每增加一个客户就要重新生成一个类,然后把客户想要的附加功能加入,更加郁闷的是,只针对一个客户有时也是要修改很多次,客户今天要这些附加功能,明天又想加入另 阅读全文
posted @ 2013-08-09 12:30 any91 阅读(240) 评论(0) 推荐(0)
设计模式C++描述----09.桥接(Bridge)模式
摘要:一. 举例N年前:计算机最先出来时,软件和硬件是一绑在一起的,比如IBM出了一台电脑,上面有一个定制的系统,假如叫 IBM_Win,这个IBM_Win系统当然不能在HP电脑上运行,同样HP出的HP_Win系统也不能运行在IBM上。这时如果有一家新公司Apple出了一台新电脑,那么这个公司也要开发自己的系统 Apple_Win,Apple_Linux。其实,上面几家公司开发的软件和硬件在很多地方都有相似之处,如果每家公司都做自己的系统,这意味着资源和人员的极大浪费。这时,无论出现新的系统,还是出现新的公司,对这种设计模式的修改都是很大的。N年后:Windows出现了,Linux出现了,软件和硬件 阅读全文
posted @ 2013-08-09 12:26 any91 阅读(221) 评论(0) 推荐(0)
设计模式C++描述----08.原型(Prototype)模式
摘要:一. 概述定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。换句话说,就是不用重新初始化对象,而是动态地获得对象运行时的状态。再说明白点,就是要一个拷贝过构造函数类似功能的接口。结构图如下:代码如下:[cpp] view plaincopy//原型类,有一个clone接口classPrototype{public:virtual~Prototype(){}virtualPrototype*Clone()const=0;};//具体原型类,实现一个clone自身的操作classConcretePrototype:publicPrototype{public:ConcreteP 阅读全文
posted @ 2013-08-09 12:25 any91 阅读(239) 评论(0) 推荐(0)
设计模式C++描述----07.建造者(Builder)模式
摘要:一. 概述Builder 模式要解决的问题是:当我们要创建的对象很复杂的时候(通常是由很多其他的对象组合而成),我们要要复杂对象的创建过程和这个对象的表示(展示)分离开来,这样做的好处就是通过一步步的进行复杂对象的构建,由于在每一步的构造过程中可以引入参数,使得经过相同的步骤创建最后得到的对象的展示不一样。二. 举例KFC 与 Mcdonalds 的汉堡生成过程大致都是一样的,假设分为4个步骤;但是 KFC 与 Mcdonalds 的汉堡味道有所差别,主要是在每一步的细节上有所不同。顾客要吃汉堡并不关心具体的生产步骤,其实汉堡店也不关心,因为数百年来,这些步骤者是相同的,差别只在细节上。比如盐 阅读全文
posted @ 2013-08-09 12:23 any91 阅读(288) 评论(0) 推荐(0)
设计模式C++描述----06.适配器(Adapter)模式
摘要:一. 定义适配器模式将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。Adapter 模式的两种类别:类模式和对象模式。二. 举例说明实际中,我们为了完成某项工作购买了一个第三方的库来加快开发。这个库可能都是一些.dll文件,这就带来了一个问题!我们在应用程序中已经设计好了接口,与这个第三方提供的接口不一致,为了使得这些接口不兼容的类(不能在一起工作)可以在一起工作了,Adapter模式提供了将一个类(第三方库)的接口转化为客户(购买使用者)希望的接口的方法。三. 代码实现类模式的Adapter采用继承的方式复用Adaptee的接口。[cpp 阅读全文
posted @ 2013-08-09 12:21 any91 阅读(233) 评论(0) 推荐(0)
设计模式C++描述----05.职责链(Chain of Responsibility)模式
摘要:一. 概述职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。二. 举个例子员工要求加薪公司的管理者一共有三级:总经理、总监、经理,如果一个员工要求加薪,应该向主管的经理申请,如果加薪的数量在经理的职权内,那么经理可以直接批准,否则将申请上交给总监。总监的处理方式也一样,总经理可以处理所有请求。这就是典型的职责链模式,请求的处理形成了一条链,直到有一个对象处理请求。结构图如下:假设:经理可以处理薪水的范围在:0~500总监可以处理薪水的范围在:500~1000总经理可以处理薪水的范围在:10 阅读全文
posted @ 2013-08-09 12:17 any91 阅读(241) 评论(0) 推荐(0)
设计模式C++描述----04.观察者(Observer)模式
摘要:一. 概述Observer 模式要解决的问题为:建立一个一(Subject)对多(Observer)的依赖关系,并且做到当“一”变化的时候,依赖这个“一”的多也能够同步改变。Sbuject 相当于通知者,它提供依赖于它的观察者Observer 的注册(Attach)和注销(Detach)操作,并且提供了使得依赖于它的所有观察者同步的操作(Notify)。Observer 相当于观察者,则提供一个Update操作,注意这里的 Observer 的 Update 操作并不在Observer 改变了Subject目标状态的时候就对自己进行更新,这个更新操作要延迟到 Subject 对象发出 Noti 阅读全文
posted @ 2013-08-09 12:16 any91 阅读(272) 评论(0) 推荐(0)
设计模式C++描述----03.工厂(Factory)模式
摘要:工厂模式属于创建型模式,大致可以分为三类,简单工厂模式、工厂方法模式、抽象工厂模式。一. 简单工厂模式简单工厂模式,它的主要特点是需要在工厂类中做判断,从而创造相应的产品。当增加新的产品时,就需要修改工厂类。举个例子,有一家电子产品生产厂家,它只有一个工厂,能够生产两种型号的产品,A 和 B。可以想像一下,A是电吹风,B是电风扇。客户需要什么样的吹风类产品,一定要显示地告诉生产工厂。代码实现:[cpp] view plaincopyenumCTYPE{PRODUCT_A,PRODUCT_B};//抽象产品类classProduct{public:virtualvoidShow()=0;};// 阅读全文
posted @ 2013-08-09 12:15 any91 阅读(359) 评论(0) 推荐(0)
设计模式的几种原则
摘要:一. 里氏代换原则定义:子类型必须能够替换它们的父类型。[DH]解释:也就是说,在软件里面,把父类都替换成子类,程序的行为没有变化。也只有这样父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。这个原则是对继承的一个约束,也就是说,继承中子类严格满足"is-a"的关系。所以,当你看到一个继承的时候,要习惯性的把他的父类和子类看成一个整体,这样会有助于你去理解各个类之间的关系。由于里氏代换的原则,才使得开放-封闭成为了可能。正是由于子类型的可替换性才使得父类类型的模块在无需修改的情况下就可以扩展。例如:这个继承关系就不满足里氏代换原则。二. 单一职责原则定义:就一个类 阅读全文
posted @ 2013-08-09 12:03 any91 阅读(332) 评论(0) 推荐(0)
设计模式C++描述----02.模板(Template)模式
摘要:一. 问题在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的。Template提供了这种情况的一个实现框架。二. 模式Template 模式是采用继承的方式实现这一点:将逻辑(算法)框架放在抽象基类中,并定义好细节的接口,子类中实现细节。三. 代码[cpp] view plaincopy//抽象基类,实现了一个模板方法classAbstractClass{public:virtual~AbstractClass(){}//模板方法,只在抽象基类中实现voidTemplateMe 阅读全文
posted @ 2013-08-09 12:02 any91 阅读(210) 评论(0) 推荐(0)
常用 UML 类图
摘要:一. 类类图分三层:第一层是类的名称,如果是抽象类,则用斜体显示。第二层是类的特性,通常就是字段和属性。第三层是类的操作,通常是方法或行为。注意 '+' 表示 public,'-' 表示 private,'#' 表示 protected 。[cpp] view plaincopyclassAnimal{public:voideat();voidbirth();public:boollief;};二. 继承关系继承关系用 空心三角 + 实线 来表示。三. 聚合关系聚合关系表示一种 弱 的 “拥有” 关系,体现的是A对象可以包含B对象,但B对象不是A 阅读全文
posted @ 2013-08-09 12:01 any91 阅读(228) 评论(0) 推荐(0)
设计模式C++描述----01.单例(Singleton)模式
摘要:一.概念单例模式:其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。[cpp] view plaincopyclassCSingleton{//公有的静态方法,来获取该实例public:staticCSingleton*GetInstance(){if(m_pInstance==NULL)//判断是否第一次调用m_pInstance=newCSingleton();returnm_pInstance;}//私有构造函数,防止实例化private:CSingleton(){};//私有静态指针变量,指向类的唯一实例private:staticCSinglet 阅读全文
posted @ 2013-08-09 12:00 any91 阅读(188) 评论(0) 推荐(0)
聚合,组合,依赖
摘要:1. 聚合:是关联关系的一种特例,体现的是整体与部分拥有的关系,即 has-a 的关系,此时整体与部分之间可以分离。[cpp] view plaincopy//学校classSchool{};//学生classStudent{private:School*ps;};可以看到 Student 类中包含了一个 School 类的对象指针,而且在创建一个Student 类对象时一定要对指针进行初始化,就好像当你上学时一定会有一个学校!这个时候,我们可以说 Student 的每一个对象都有一个School 的属性来标识它是属于哪个学校的!但是两者之间并不存在“同生共死”的关系,也就是说当这个学生不存在 阅读全文
posted @ 2013-08-09 11:57 any91 阅读(265) 评论(0) 推荐(0)
mysql实现海量数据的存储、访问的解决方案
摘要:mysql实现海量数据的存储、访问的解决方案: mysql数据库水平切分的实现原理可分为以下几个:分库,分表,主从,集群,负载均衡器等第1章 引言随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。水平切分数据库,可以降低单台机器的负载,同时最大限度的降低了了宕机造成的损失。通过负载均衡策略,有效的降低了单台机器的访问负载,降低了宕机的可能性;通过集群方案,解决了数据库宕机带来的单点数据 阅读全文
posted @ 2013-08-08 09:33 any91 阅读(813) 评论(0) 推荐(0)
MySQL中char、varchar和text的区别
摘要:引自:http://www.sensail.com/archives/85他们的存储方式和数据的检索方式都不一样。数据的检索效率是:char>varchar>text空间占用方面,要具体情况具体分析了。CHAR(M)M个字节,0 desc test;+-------+------------+------+-----+---------+-------+| Field |Type| Null | Key | Default | Extra |+-------+------------+------+-----+---------+-------+|a| mediumtext | Y 阅读全文
posted @ 2013-08-06 09:35 any91 阅读(985) 评论(0) 推荐(0)
如何在sprintf函数中输出百分号(%)等特殊符号
摘要:php中的sprinf可以格式化字符串的数据类型。今天遇到了想在其中输出%,可难倒我了。$query = sprintf("select * from books where %s like '% %s %'",$searchtype,$searchterm);//我以为输出是这样的:select * from books wheretitle like '%java %' ,但实际上输出会是select * from books wheretitle like '%将其换成这样就可以了:$query = sprintf(" 阅读全文
posted @ 2013-08-03 11:15 any91 阅读(9577) 评论(0) 推荐(0)
二叉树,红黑树,B树,B+树
摘要:1、不要认为红黑树仅仅是在二叉树的节点上涂上颜色,他们最根本的区别是,红黑树根据节点涂色的约束限制,最终形成的树的结构与普通二叉树不同,最重要的是,其树的高度大大缩短,从而在查找、增删改等方面提高效率。2、B树,不是二叉树,节点可以有多个孩子,B树产生于解决磁盘扫描效率的问题,B树这种结构将相近的数据尽可能的放在一起,从而减少磁盘扫描的跨度,最明显的应用就是数据库系统的索引。B+树类似于B树,只不过,B树把关键字和实际数据存在一块,而B+树在节点上只存关键字,存个指针指向实际数据 阅读全文
posted @ 2013-08-01 10:45 any91 阅读(582) 评论(0) 推荐(0)