September 29, 2012
MySQL数据库性能优化之表结构优化
"由于MySQL数据库是基于行(Row)存储的数据库,而数据库操作 IO 的时候是以 page(block)的方式,也就是说,如果我们每条记录所占用的空间量减小,就会使每个page中可存放的数据行数增大,那么每次 IO 可访问的行数也就增多了。反过来说,处理相同行数的数据,需要访问的 page 就会减少,也就是 IO 操作次数降低,直接提升性能。此外,由于我们的内存是有限的,增加每个page中存放的数据行数,就等于增加每个内存块的缓存数据量,同时还会提升内存换中数据命中的几率,也就是缓存命中率。\n** 数据类型选择**\n数据库操作中最为耗时的操作就是 IO 处理,大部分数据库操作 90% 以上的时间都花在了 IO 读写上面。所以尽可能减少 IO 读写量,可以在很大程度上提高数据库操作的性能。\n我们无法改变数据库中需要存储的数据,但是我们可以在这些数据的存储方式方面花一些心思。下面的这些关于字段类型的优化建议主要适用于记录条数较多,数据量较大的场景,因为精细化的数据类型设置可能带来维护成本的提高,过度优化也可能会带来其他的问题:\n1、数字类型:非万不得已不要使用DOUBLE,不仅仅只是存储 …"
September 17, 2012
MySQL索引背后的数据结构及算法原理
"摘要\n本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。\n文章主要内容分为三个部分。\n第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础。\n第二部分结合MySQL数据库中MyISAM和InnoDB数据存储引擎中索引的架构实现讨论聚集索引、非聚集索引及覆盖索引等话题。\n第三部分根据上面的理论基础,讨论MySQL中高性能使用索引的策略。\n数据结构及算法基础\n索引的本质\nMySQL官方对索引的定义为:**索引(Index)是帮助MySQL高效获取数据的数据结构。**提取句子主干,就可以得到索引的本质:索引是数据结构。\n我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。 …"
September 16, 2012
linux下时间格式为24小时制的办法(centos)
"下面是自己解决的方法\ntzselect\n根据提示选择\n5 –\u0026gt; 9–\u0026gt;1–\u0026gt;1–\u0026gt;ok rm /etc/localtime ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime\n这时就可以看到时间已经修改成为国内的时间了。时间也对的。时间为24小时制。"
September 12, 2012
百度地图API如何给自定义覆盖物添加事件
"摘要:\n给marker、lable、circle等Overlay添加事件很简单,直接addEventListener即可。那么,自定义覆盖物的事件应该如何添加呢?我们一起来看一看~\n一、定义构造函数并继承Overlay\n//定义自定义覆盖物的构造函数 functionSquareOverlay(center, length, color){ this._center = center; this._length = length; this._color = color; } //继承API的BMap.Overlay SquareOverlay.prototype = newBMap.Overlay(); 二、初始化自定义覆盖物\n//实现初始化方法 SquareOverlay.prototype.initialize = function(map){ //保存map对象实例 this._map = map; //创建div元素,作为自定义覆盖物的容器 vardiv = document.createElement(“div”); div.style.position = …"
September 8, 2012
adodb cs5破解办法及注册码
"用记事本编辑“C:\\Windows\\System32\\Drivers\\etc\\”目录下的 hosts 文件\n127.0.0.1 activate.adobe.com 127.0.0.1 practivate.adobe.com 127.0.0.1 ereg.adobe.com 127.0.0.1 activate.wip3.adobe.com 127.0.0.1 wip3.adobe.com 127.0.0.1 3dns-3.adobe.com 127.0.0.1 3dns-2.adobe.com 127.0.0.1 adobe-dns.adobe.com 127.0.0.1 adobe-dns-2.adobe.com 127.0.0.1 adobe-dns-3.adobe.com 127.0.0.1 ereg.wip3.adobe.com 127.0.0.1 activate-sea.adobe.com 127.0.0.1 wwis-dubc1-vip60.adobe.com 127.0.0.1 activate-sjc0.adobe.com\n以防止其连接 Adobe 的激活验证服务 …"
September 7, 2012
数据类型和Json格式
"前几天,我才知道有一种简化的数据交换格式,叫做 yaml。\n我翻了一遍它的 文档,看懂的地方不多,但是有一句话令我茅塞顿开。\n它说, 从结构上看,所有的数据(data)最终都可以分解成三种类型:\n第一种类型是 标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如”北京”这个单独的词。\n第二种类型是 序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组(array)或列表(List),比如”北京,上海”。\n第三种类型是 映射(mapping),也就是一个名/值对(Name/value),即数据有一个名称,还有一个与之相对应的值,这又称作散列(hash)或字典(dictionary),比如”首都:北京”。\n我恍然大悟,数据构成的最小单位原来如此简单!难怪在编程语言中,只要有了数组(array)和对象(object)就能够储存一切数据了。\n我马上想到了 json。\n21世纪初,Douglas Crockford寻找一种简便的数据交换格式,能够在服务器之间交换数据。当时通用的数据交换语言是XML,但是Douglas …"
September 5, 2012
增加Apache2和Nginx的header长度限制
"nginx默认的header长度上限是4k,如果超过了这个值 nginx会直接返回400错误\n[error] 16613#0: *105 upstream sent too big header while reading response header from upstream\n可以通过以下2个参数来调整header上限\nclient_header_buffer_size 16k; large_client_header_buffers 4 16k;\n看起来是,nginx默认会用client_header_buffer_size这个buffer来读取header值,如果header过大,它会使用large_client_header_buffers来读取\nclient_header_buffer_size\nsyntax: client_header_buffer_size size\ndefault: 1k\ncontext: http, server\nDirective sets the headerbuffer size for the request header from …"
August 20, 2012
Ubuntu12.04 root用户登录桌面设置
"ubuntu12.04默认是不允许root登录的,在登录窗口只能看到普通用户和访客登录。以普通身份登陆Ubuntu后我们需要做一些修改, 普通用户登录后,修改系统配置文件需要切换到超级用户模式,在终端窗口里面输入: sudo -s.然后输入普通用户登陆的密码,回车即可进入 root用户权限模式.\n然后执行: vi /etc/lightdm/lightdm.conf.\n增加 **greeter-show-manual-login=true allow-guest=false . **修改完的整个配置文件是\n[SeatDefaults] greeter-session=unity-greeter user-session=ubuntu greeter-show-manual-login=true #手工输入登陆系统的用户名和密码 allow-guest=false #不允许guest登录\n****然后我们启动root帐号:\nsudo passwd root\n根据提示输入roott帐号密码。\n重启ubuntu,登录窗口会有“登录”选项,点击“登录”选项,就会提示让输入用户名了。这时候我们就可 …"
August 18, 2012
git下添加新项目及用户
"我们在上一节()配置成功了git-server。这里我们新创建一个git项目并允许开者使用.\n1. 生成密钥与公钥\n***[dev1@bogon ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/dev1/.ssh/id_rsa): Created directory ‘/home/dev1/.ssh’. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/dev1/.ssh/id_rsa. Your public key has been saved in /home/dev1/.ssh/id_rsa.pub. The key fingerprint is: …"
August 14, 2012
CentOS 6.0 SSH命令无法执行的问题的解决办法
"需要通过这台centos,ssh到另外一台\n结果发现没有ssh\n通常可能是未安装openssh所导致的\n执行\nrpm -qa | grep openssh\n如果没有:\nopenssh-clients\n那就安装:\nyum -y install openssh-clients"