摘要: 部署:MongoDB服务端可运行在Linux、Windows或IOS平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。64位系统就没有最大文件限制。32位系统最大限制2g的原因为:32位系统下,所有地址必须能用32位系统访问到(超过2g访问不到了)。所以针对32位操作系统下的mongod最多只能处理2g的数据。一个数据库的数据存储方式:比如数据库test分别会有如下文件:testabc.0,testabc.1,testabc.2每个文件的大小都会成倍增加。第一个是16m,第二个是32m,第三个是64m。第四 阅读全文
posted @ 2013-08-22 00:18 王滔 阅读(1175) 评论(0) 推荐(0) 编辑
摘要: mongodb的结构与关系型数据库不同,它类似树状结构,可以很方便对每个分支进行操作,但它没有像mysql那样insert(value、value、value...)那样的语法,也不支持transaction所以mongodb不能批量插入数据,如果你要批量插入数据,可以在mongodb里写一个循环,它支持for等语法。因为MongoDB的底层就不支持这种操作。从MongoDB的oplog模式中可以看出,MongoDB的每次op都是独立执行的最小单元,因此,不会存在多个op组合成一个执行的情况。因此在各种API中都不会存在这种批量插入的操作。某网友提到他的理解,觉得很有道理:这里还是涉及到大家经 阅读全文
posted @ 2013-08-22 00:13 王滔 阅读(11538) 评论(0) 推荐(0) 编辑
摘要: 像Oracle这样成熟稳定的数据库,足以支撑海量数据的存储与查询了?为什么还需要数据切片呢?的确,Oracle的DB确实很成熟很稳定,但是高昂的使用费用和高端的硬件支撑不是每一个公司能支付的起的。试想一下一年几千万的使用费用和动辄上千万元的小型机作为硬件支撑,这是一般公司能支付的起的吗?即使就是能支付的起,假如有更好的方案,有更廉价且水平扩展性能更好的方案,我们为什么不选择呢?收费是按照cpu个数和用户数两种方式进行的:http://blog.csdn.net/hzw2312/article/details/8617607 mysql被sun收购,sun最后又被oracle收购。自己公司两个产 阅读全文
posted @ 2013-08-17 00:29 王滔 阅读(6371) 评论(0) 推荐(0) 编辑
摘要: 突然写个感悟:感觉有些公司不能呆久了。呆久了,技术得不到提升。过去的经历存在大脑数据库,人做判断是根据大脑数据库已经存储的信息,所以思维模式容易受到过去的影响。做phper,想提升技术,两类公司不能呆久了:一类是网站建设公司。二类是接项目单子为盈利的公司。像软件外包公司就是的。1,关于网站建设公司。我以前去一个公司面试的时候,是一个网站建设公司。我当面对老板说,我说公司可以呆,但是呆久了。技术很难得到提升。浪费了提升技术水平的机会。我与a同学也劝过一个同学,你以前在这种公司呆过,就不要继续找这方面工作了,会导致你技术难以得到质的提升。找那种网站运营的公司去。这样技术提升快。网站建设公司,公司以 阅读全文
posted @ 2013-08-12 22:38 王滔 阅读(1026) 评论(0) 推荐(1) 编辑
摘要: :吉姆.科林斯在中用了很大篇幅谈论应该懂得何时停止的问题。2004年,当我阅读他的这本书时,我又想起了我1984年和1994年的两次止步。并没有什么信号,也没有什么冥冥之中的声音在昭示我"是时候该停下来了"。每一次,我只是在某一个时刻感觉自己脚下的路快要走到尽头了。是时候停下来,开始一段新的旅程了。我总是会遇到一些生意人,他们想停止,却停不下来,原因是多种多样的。一个最常见的原因就是他们的b-i三角形还不稳定。为了克服这些弱点,创业者经常需要更努力,更长时间地工作。另一个原因是,创业者一旦停止工作,经济上就会陷入入不敷出,这是b-i三角形不够坚实的缘故。还有一个原因是,一个 阅读全文
posted @ 2013-08-12 22:36 王滔 阅读(828) 评论(0) 推荐(0) 编辑
摘要: 技术不是用来显示自己多么牛逼的。是用来解决问题的工具,这样才会产生市场价值,于是产生生产力。追求花俏的东西。没有任何意义。1、喜欢测验一些花俏,不实用的技能。很多公司的技术,由于不懂如何面试。而且自己也不谦虚。所以,面试应聘者就变成了装B显示我技术多么厉害的的场合。题目考一些不切实际的,不实用的题目。喜欢用那种标准答案的考试方法。感觉回到了应试考试似的。比如:php5.3的新特性,可能有些人做了5,6年开发公司用的版本一直是5.2.x,以实用为主。其一,他不知道这种新特性并不能表示出什么。最多说明,没有关心新特性。其二,即便不知道这个新的特性。并不会影响开发。花几分钟看一下就知道了,我觉得这才 阅读全文
posted @ 2013-08-12 22:36 王滔 阅读(968) 评论(1) 推荐(1) 编辑
摘要: 多看一些资料,实践了几年有了如下感悟:单一的技术化思路,只会陷入技术死胡同越陷越深。有时候要跳出来,从业务上去看,从现实中一些事情去看。现实中的思想用到技术中去。技术只是一个工具而已,确定一种什么思想,然后以技术为工具去解决。单纯为技术而技术达不到境界的。万事万物有其相互融通的一面。哲学思想。比如,道路出口交通拥挤,单纯的用技术手段:怎么把道路扩宽。就会陷入死循环,你扩得再宽,这是存在极限的,可能还是无法从根本上解决问题。非技术层面,是想着如何进行调度。避免所有车辆都挤到一个口子去。互联网的很多技术方案其实是与现实中相通的。单个服务器性能再强,总是存在极限。从集中式向分布式处理,就是分散压力。 阅读全文
posted @ 2013-08-07 14:10 王滔 阅读(1541) 评论(0) 推荐(0) 编辑
摘要: 好的程序员做不出好的软件设计本文由“外刊IT评论”网(http://www.aqee.net/)荣誉出品你不能看到一个程序员还不错,就把他推到系统分析师、软件设计师或软件架构师的位置上。如果你在团队或公司里寻找一个能胜任软件架构师或设计师这样重要位置的人时,首先出现在脑子里的想法通常是在程序员中选一个最好的。别这么干。这样的位置不是随意的找个不错的程序员就能胜任的。把你最资深的程序员晋升到这个位置也未必就合适。乍一听你可能感觉荒诞。为什么我不能让一个程序员去做系统设计呢?毕竟,他们是设计程序的,不是吗?的确是的,没错。但你要明白的事情是,设计软件相对于编写程序,它需要的是一套完全不同的技能。让 阅读全文
posted @ 2013-08-07 14:04 王滔 阅读(27740) 评论(0) 推荐(1) 编辑
摘要: 创业型公司如何激励员工享受工作环境是最好的激励 (潘晓良 百姓网CTO)理 想的工作状态应该是怎样的?那就是在每天早上醒来时,就迫不及待地投入到一天的工作中,每天都 有那么多有意义的事情在等待着我,看着一件件解决,感觉是充实且快乐的;总是感觉自己在工作中能够不断学到新的东西,自己在变得更强;自己的价值能够被认可,自己的问题能够被发现;自己的建议能够被重视,有充分的发言权;我依赖公司给创造的良好环境,公司也需要我的努力和辅助,当公司获得成功时,我也能享 受我的回报。公司的所有员工很享受这样一种环境。有竞争力的工资对任何人来说,工资永远不嫌弃高,但对于公司来说,纯粹一味提供高工资不是一个好选择。我 阅读全文
posted @ 2013-08-03 13:10 王滔 阅读(1980) 评论(0) 推荐(1) 编辑
摘要: 做为技术人员,大家都觉得工资高,工作稳定,还能学到很多的东西。是大部份走出校门或性格内向,或希望过平静的人的必然选择。其实,你们有没有问过自己,这条路到底走对了吗? 一个刚毕业的大学生,从事销售和从事技术两种不同的工作,可能工资的差距会达到数倍之远。对于初出校门的人来说,不无一种极端的诱惑力。刚毕业的年青人,当然会果断的选择技术之路。 两年后,我们再看看,由于经验的积累,做业务的积累了部份客户资源,做技术的积累了好的经验,在各自的领域内都大展开了手脚,收入也基本接近了。 再以后呢,技术之路越来越难走,毕竟做技术需要的大量的时间和精力,否则就跟不上现在时代的技术更新了,做业务的呢,客户群... 阅读全文
posted @ 2013-05-16 23:50 王滔 阅读(376) 评论(0) 推荐(1) 编辑
摘要: ###################################方法与观念的改变###################################错误导向:我在网上会看到人们怎么优化网站,就是用yslow这样的工具来看,工具会告诉你要怎么做,哪方面有问题,比如我写在文档里面的像这样的:这里会告诉你要开启压缩。这里大致反映出时间。这些做法做都是正确的。只是这种都是花俏的工夫。把这些当成是优化的方向,方向不对。着力点错了。结果发现网站速度没明显改善。因为方法错误了。基本是这种想法:先按照上面说的,把该做的做了吧。肯定有提高的。始终没尝试找网站速度慢的瓶颈在哪里?同学总结得很恰到:这些工夫 阅读全文
posted @ 2012-05-10 12:42 王滔 阅读(2500) 评论(1) 推荐(0) 编辑
摘要: 如果你的需要是统计总行数时,为什么要使用count(*),而避免使用指定具体的列名?count()函数里面的参数是列名的的时候,那么会计算这个字段有值项的次数。也就是,该字段没有值的项并不会进入计算范围(就是网上常说的值为null的项不纳入统计)很多地方都有类似表述:COUNT ( column )... 阅读全文
posted @ 2011-04-12 22:54 王滔 阅读(33316) 评论(1) 推荐(2) 编辑
摘要: 一、通信知识中的半双工概念通信的方式分为:单工通信,半双工,全双工。全双工的典型例子是:打电话。电话在接到声音的同时也会传递声音。在一个时刻,线路上允许两个方向上的数据传输。网卡也是双工模式。在接收数据(比如一直在下载东西)的同时,又发送数据(比如请求网页)半双工:在同一个时刻只能进行一个动作。在一个时刻,线路上只允许一个方向上的数据传输。单工:典型例子就是电视遥控器。接收端和发送端已经固定了的。接收端只能接收数据。没有发送数据的功能。发送端只有发送的功能。没有接收的功能.特点是,线路上的数据流是永远是单方向,固定方向。这样理解的话,显示器与电脑主机之间的工作方式也是单工模式的。问:是半双工还 阅读全文
posted @ 2011-04-12 22:36 王滔 阅读(2886) 评论(0) 推荐(0) 编辑
摘要: Compiling shared PECL extensions with phpizeSometimes, using the pecl installer is not an option. This could be because you're behind a firewall, or i... 阅读全文
posted @ 2011-03-16 22:40 王滔 阅读(13809) 评论(1) 推荐(1) 编辑
摘要: 下面是记录使用二进制的方式安装mysql的步骤 2011.3.5 使用二进制安装的好处mysql安装为什么大部分使用二进制安装。而不是源码手动去编译?mysql使用的glibc进行开发的。glibc库是一个底层api,所以只要是linux,都会有glibc库。所以,mysql安装不需要考虑环境是否符合要求。移植性很方便。直接将编译好的二进制代码复制到另外一个机器上,也是可以用的。原理性东西:一般在linux下安装一个软件,不同软件所需要的函数库不同。于是会遇到一个现象:一个软件复制到另外一个平台可能无法运行。安装软件需要先侦测环境就是出于此考虑。因为mysql使用的是通用的glibc函数库。没 阅读全文
posted @ 2011-03-07 17:28 王滔 阅读(7127) 评论(0) 推荐(0) 编辑
摘要: 总结的方向:在linux下php挂接mysql.so扩展的方法问题背景:平常我们都是先安装mysql,然后才能去安装php。假如先安装php,后安装mysql,由于php需要连接mysql,因而在php引擎中需要配置使用mysql.so扩展。这时需要手动编译生成mysql.so扩展。当前问题:在上面情况下,使用phpize能否实现挂接mysql.so扩展?实践结论:使用phpize工具能够生成mysql.so,但是必须加上"--with-mysql=mysql客户端的路径"。也就是mysql.so模块必须用到mysql客户端才行。可以这样理解,mysql.so内部会调用my 阅读全文
posted @ 2011-03-07 12:30 王滔 阅读(29168) 评论(0) 推荐(0) 编辑
摘要: 买书的时候,遇到好几本比较好的书籍。看着是外国高手写的书,怎么都比国内人写的书籍更有料。先不管这本书适不适合自己。哪怕你买本操作系统原理之类的书籍,即使当时你看不懂。也不会浪费你钱买了本没有多大用的书结果浪费你时间。因为,我看来,是国外人写的,内容上至少不是那么忽悠人,这里复制点那里复制点凑成一本书的内容。尽管是国外的书籍,我今天发现有些书不适合自己。是可以有方法看的。我找到了一种方法,知道怎么样判断这本书是不是自己想要的内容。只是对手册内容的复制和重复,这样,我完全可以去看官方手册。买这样的书,虽然能学到知识,不过,浪费钱。作者本身水平虽然高,但是写书的经验就不一定丰富了。因为,他的所有东西 阅读全文
posted @ 2011-03-01 15:56 王滔 阅读(1105) 评论(0) 推荐(0) 编辑
摘要: 问题在于:如果没有指定 extract_type,则被假定为 EXTR_OVERWRITE。 覆盖就意味着,假如在使用extract之前存在一个跟数组中索引值相等的变量名。那么,就会覆盖掉之前的变量值。所以:使用该函数时一定要定义extract_type。不要让其按默认值处理了。不定义就按默认值。网上关于性能问题的测试:http://www.liuhui.info/article25.html 也就是明显比自定义for循环慢替代方式:$get = $_GET;//接收返利网传递的参数//注册为超全局变量foreach($get as $key => $value){ if(!isset( 阅读全文
posted @ 2011-03-01 14:39 王滔 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 全局变量就是在函数外面定义的变量。不能在函数中直接使用。因为它的作用域不会到函数内部。所以在函数内部使用的时候常常看到类似global $a;超全局变量作用域在所有脚本都有效。所以,在函数可直接使用。比如 $_GET,$_SERVER都是超全局变量。除$_GET,$_POST,$_SERVER,$_COOKIE等之外的超全局变量保存在$GLOBALS数组中。注意,不要误写成$_GLOBALS。有点受到$_POST的影响了。$GLOBAL是一个特殊的php自定义的数组。超级全局变量。跟$_SERVER一样,都属于超全局变量。在手册中搜索$GLOBALS 就能查询超全局变量的具体说明和使用方法变量 阅读全文
posted @ 2011-03-01 14:36 王滔 阅读(1963) 评论(0) 推荐(0) 编辑
摘要: 年前有这样的体会。必须迈过的一道坎:看英文原版书籍。尽管首次看会比较吃力。但是,一定要经历这个过程才行。看到慢,不要紧。先看,不是简单点的。一开始就很难,就会让你失去信心。今天收到购买的影印版书籍<high performance mysql>,大致看了一下。尝试后,发现其实英文版的也没想象得那么恐怖。可能国外人编写计算机喜欢以比较通俗的语言讲解。因而并不是哪些生涩的语法结构。用来用去都是一些常见的句法结构。有些单词认不得,大部分是涉及到专业名称的词语。查一查,就知道单词的含义。如果有计算机开发经验。这些词语只要查处中文含义后,整个意思还是好理解的。总之,有难度,但是并不是想像得那 阅读全文
posted @ 2011-02-25 11:19 王滔 阅读(340) 评论(0) 推荐(0) 编辑
摘要: select FOUND_ROWS()总是返回上一次select所返回的行数。它的结果受到上一次select中是否使用SQL_CALC_FOUND_ROWS的影响测试如下:1.运行语句:select SQL_CALC_FOUND_ROWS * from penalties where amount>=20 limit 2然后运行:select FOUND_ROWS();返回的行数是:42.不使用SQL_CALC_FOUND_ROWSselect * from penalties where amount>=20 limit 2然后运行:select FOUND_ROWS();返回的 阅读全文
posted @ 2011-02-25 00:50 王滔 阅读(1888) 评论(0) 推荐(0) 编辑
摘要: 一、使用视图的理由是什么?1.安全性。一般是这样做的:创建一个视图,定义好该视图所操作的数据。之后将用户权限与视图绑定。这样的方式是使用到了一个特性:grant语句可以针对视图进行授予权限。2.查询性能提高。3.有灵活性的功能需求后,需要改动表的结构而导致工作量比较大。那么可以使用虚拟表的形式达到少修改的效果。这是在实际开发中比较有用的例子:假如因为某种需要,a表与b表需要进行合并起来组成一个新的表c。最后a表与b表都不会存在了。而由于原来程序中编写sql分别是基于a表与b表查询的,这就意味着需要重新编写大量的sql(改成向c表去操作数据)。而通过视图就可以做到不修改。定义两个视图名字还是原来 阅读全文
posted @ 2011-02-24 23:11 王滔 阅读(108005) 评论(9) 推荐(6) 编辑
摘要: 压缩css和js脚本是非常值得的。根据经验,通常对大于1kb或者2kb的文件进行压缩。对图片进行压缩是得不偿失的。因为会消耗许多cpu资源(包括服务器端和客户端的)LoadModule expires_module modules/mod_expires.soCache-Control:Private 禁用代理apache的版本与压缩组件的关系:1.3对应了mod_gizp 2.x对应了mod_deflate也就是:1.3的gizp功能由mod_gizp提供。那么2.x版本中的gzip功能由mod_deflate提供首页平均使用了6-7个脚本文件,1-2个css文件 soutuan.com使用 阅读全文
posted @ 2011-02-23 14:03 王滔 阅读(1037) 评论(0) 推荐(0) 编辑
摘要: linux下文件的几种类型:目录,符号链接、套接字文件....。要注意,说到的文件类型是一个不一样的概念。linux下文件的类型不是后缀名上进行区别。"-"表示该文件是一个普通类型的文件。什么是普通类型文件?你得记住linux下几种类型的文件。不属于那里面列出的,就属于普通类型文件了。chmod 77- 文件名读 4 写 2 执行 1专业点的描述:chmod改变权限的方式分为:符号模式(就是使用了用户符号进行表示)和绝对模式(就是"chmod 777 文件名"的形式)绝对模式的一点注意:实际上它是按照8进制进行计算的。而像读权限是4这样的表示方式,只是因 阅读全文
posted @ 2011-02-23 14:02 王滔 阅读(1797) 评论(0) 推荐(0) 编辑
摘要: linux下文件的几种类型:目录,符号链接、套接字文件....。要注意,说到的文件类型是一个不一样的概念。linux下文件的类型不是后缀名上进行区别。"-"表示该文件是一个普通类型的文件。什么是普通类型文件?你得记住linux下几种类型的文件。不属于那里面列出的,就属于普通类型文件了。chmod 77- 文件名读 4 写 2 执行 1专业点的描述:chmod改变权限的方式分为:符号模式(就是使用了用户符号进行表示)和绝对模式(就是"chmod 777 文件名"的形式)绝对模式的一点注意:实际上它是按照8进制进行计算的。而像读权限是4这样的表示方式,只是因 阅读全文
posted @ 2011-02-23 14:00 王滔 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 常常使用的到了更新操作。学习后,知道了update还有其他一些用法,以前并不知道。现在进行总结一、update后面使用order by的情况什么时候有必要增加order by:假如一个表中有自增型或者唯一键id。当想实现对所有id都加一。就会用到类似如下的sql: update teams set teamno=teamno+1 此时就会出现问题,假如有两行数据,一行的teamno=6,另一行的teamno=7。当执行teamno=teamno+1语句,6的值加上1变成7,但是还存在teamno=7的一行,那么就会出现重复而报错。解决办法是,先让teamno=7的行执行更新,然后才让teamn 阅读全文
posted @ 2011-02-23 12:37 王滔 阅读(2890) 评论(0) 推荐(0) 编辑
摘要: 一、不兼容的语法问题。先看使用如下sql:SELECT count(*),town FROM `players` 结果会报错。从这里涉及到sql的一个原则:值的集合与一个行mysql认为是不兼容的。这里,count(*)的结果是一个值。而town列出的结果是很多行,也就是值组成的集合。所以,两者不不兼容的。而如果加上group by,就不一样了,如下:SELECT count(*),town FROM `players` group by sex上面的sql,并没有报错。因为使用了group by子句后,count(*),town所显示的结果不一样了。count((*)是根据group by子 阅读全文
posted @ 2011-02-23 11:14 王滔 阅读(25743) 评论(2) 推荐(2) 编辑
摘要: 测试书中题目:加上distinct是否多余?不加distinct的话,显示类似如下情况:SELECT count( * )FROM `players`GROUP BY towncount( * )122加上distinct的话,显示类似如下情况:SELECT distinct count( * )FROM `players`GROUP BY towncount( * )12结论:加上distinct的话,为空的值不计入count中了。另外一个测试例子:SELECT DISTINCT playernoFROM playersWHERE TOWN = '长沙'distinct为什么 阅读全文
posted @ 2011-02-22 22:45 王滔 阅读(1039) 评论(0) 推荐(0) 编辑
摘要: 使用phpmyadmin导出sql的时候,常常会出现SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";的语句。通过看sql手册,明白了这里设置的含义。那么可以回答几个疑惑性问题了一、设置sql模式有什么作用?会产生什么方面的影响?模式定义mysql会支持哪些sql语法。以及应... 阅读全文
posted @ 2011-02-22 22:41 王滔 阅读(7440) 评论(0) 推荐(0) 编辑
摘要: INSERT DELAYED是立刻返回一个标识,告诉上层程序,数据已经插入了,当表没有被其它线程使用时,此行被插入,真实插入时间就不可控了。所以这样的写法对数据的安全性是没有保障的。· 如果您使用DELAYED关键字,则服务器会把待插入的行放到一个缓冲器中,而发送INSERT DELAYED语句的客户端会继续运行。如果表正在被使用,则服务器会保留这些行。当表空闲时,服务器开始插入行,并定期检查是否有新的读取请求。如果有新的读取请求,则被延迟的行被延缓执行,直到表再次空闲时为止。请参见13.2.4.2节,“INSERT DELAYED语法”。INSERT LOW_PRIORITY IN 阅读全文
posted @ 2011-02-22 22:31 王滔 阅读(912) 评论(0) 推荐(0) 编辑
摘要: mysql手册sql优化学习:BENCHMARK(1000000,1+1)的理解:执行右边表达式(1+1)1000000次。该函数执行所返回的结果永远是0英文参考理解:表达式必须是标量表达式。比如select 返回的是很多行,是一个结果集。那么执行该函数的时候并没有任何结果显示。失败了。返回的结果必须是单列或者是单行。一、使用explain工具显示信息:explain语句结果信息的使用:id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE fanwe_goods index NULL PRIMARY 阅读全文
posted @ 2011-02-22 22:21 王滔 阅读(1066) 评论(0) 推荐(0) 编辑
摘要: 在url中附带的参数明明是a=show 结果,使用$_GET['a']得到的结果是index,这是在一个静态页面中以href属性的形式点击访问的。而直接在浏览器中输入url却访问正常,使用$_GET['a']得到的结果是是show了。百思不得其解。后来终于找到思路了:如果获取到的参数与实际值不一致,那么肯定是中间经过修改了。因而,想到thinkphp框架是否会进行修改。在载入框架之前输出$_GET['a'],得到的结果还是index。此时没有执行框架代码,也是这样的。那么就是js在获取href的值后,进行了二次修改。实际上是通过js去访问指定的u 阅读全文
posted @ 2011-02-22 22:20 王滔 阅读(2744) 评论(0) 推荐(0) 编辑
摘要: set语句的学习:使用select定义用户变量的实践将如下语句改成select的形式:set @VAR=(select sum(amount) from penalties);我的修改:select @VAR:=(select sum(amount) from penalties);我这样改,虽然是可以的。但是,对比的书中的答案,发现这样的方式太蹩脚了。说明没有很好地理解select定义变量的本质。在select中,发现有一个用户变量,如果没有定义,那么就会初始化。select子句原来的方式根本不受到影响。只是增加了用户变量。所以,还是按照原来的方式使用select子句。那么像:select 阅读全文
posted @ 2011-02-21 14:43 王滔 阅读(110991) 评论(4) 推荐(3) 编辑
摘要: 这个是在整合ucenter的时候,看到的。往往是“insert into table_name set a=$a,b=$b”的格式。在mysql手册中能看到这种语法:之前不明白。为什么要使用这种方式。后来听同学说,这样使用是为了提高插入速度。还没找到相关的资料详细介绍这种语法的不同之处。暂时搁置 阅读全文
posted @ 2011-02-20 22:32 王滔 阅读(8100) 评论(0) 推荐(0) 编辑
摘要: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><style type="text/css">*{border 阅读全文
posted @ 2011-02-20 22:13 王滔 阅读(1991) 评论(0) 推荐(0) 编辑
摘要: 之前在学校的时候,只知道session与cookie的区别在于:session是保存在服务器端,cookie保存在客户端。session怎么样保存的?以文件的形式保存。自己去测试过。有的忘记了。对应session的id号模糊不清。在开发中,非常有必要弄明白具体细节。不能停留在使用session_st 阅读全文
posted @ 2011-02-16 23:05 王滔 阅读(46547) 评论(20) 推荐(11) 编辑
摘要: uc中的用到的代码(在api/uc.php)代码:$post = xml_unserialize(file_get_contents('php://input'));php手册(http://cn.php.net/manual/zh/wrappers.php.php)说明: php://input allows you to read raw data from the request body. In case of POST requests, it preferrable to $HTTP_RAW_POST_DATA as it does not depend on special p 阅读全文
posted @ 2011-02-16 22:17 王滔 阅读(9488) 评论(0) 推荐(0) 编辑
摘要: 实践过程:id 是主键测试方式一,插入索引值是一样的:REPLACE INTO fanwe_order(id,sn) VALUES('33','测试replace into 使用') 结果:受影响的行数:2SELECT * FROM fanwe_order WHERE sn='测试replace i... 阅读全文
posted @ 2011-02-03 16:04 王滔 阅读(7948) 评论(0) 推荐(0) 编辑
摘要: 将过去在开发中体会到经验整理出来。今天贴出来,整理,做个备忘。tinyint 是-128到128 。当属性设置为unsigned的时候。最大值就是255了。现在知道为什么需要设置为unsigned属性了。原来是为了最大限度的使用给予的存储空间。如果不设置。那么假如你的值都是正数的。那么-128这一百多个数字就相当于是浪费了。tinyint会自动设置为tinyint(3)smallint 不设置unsigned的时候,也有3万多的样子。tinytext 就是255个字节。大概就是存储127个中文的样子 tinytext就相当于varchar类型。把它看成这样的该类型就容易理解了。int 类型ph 阅读全文
posted @ 2011-01-21 14:09 王滔 阅读(5901) 评论(0) 推荐(2) 编辑
摘要: 过去,经常会遇到这样的报错情况:已经输出头信息的报错提示。常常是通过,去查看报错信息中显示的具体行。遗憾的是,只会显示这个行出现错误。然后得自己去找到是哪个位置首次输出了头信息。以前去找这个位置,还是能够找到的,只要花点时间。知道有一次,遇到的障碍是在是大。很难找到。它就是这样的一种情况:".?php"。在php开始标签的前面出现了一个小点号。很小,在编辑器中根本没发现到。找了很久的时间。没找到,才听朋友说,php中有个专门的函数headers_sent可以定位出输出头信息的行数。用这个,果然一下子找到了。之后,就经常会使用这个函数去定位,排除错误位置很快。if(headers_sent ( 阅读全文
posted @ 2011-01-21 14:07 王滔 阅读(256) 评论(0) 推荐(0) 编辑