- 博客(24)
- 收藏
- 关注
原创 挂载磁盘(备忘)
fdisk 查看磁盘fdisk -S 56 /dev/xvdb 进行分区mkfs.ext3 /dev/xvdb1 格式化分区echo '/dev/xvdb1 /mnt ext3 defaults 0 0' >> /etc/fstab 挂载mount -a
2015-12-18 13:01:50 370
原创 MySQL是如何优化WHERE条件的
有些时候,我们经常会改写一些SQL,通过牺牲SQL的可读性来优化SQL的执行速度,但是大部分情况下,我们这么做是多余的,而且是不可取的,因为MySQL自身就完成了这项工作所以,我们需要多了解了解MySQL本身是如何进行SQL改写工作的。1、去掉不必要的括号((a AND b) AND c OR (((a AND b) AND (c AND d))))-> (a AND b AND
2015-03-05 21:26:52 750
原创 MySQL查询优化之概述
1、加快select语句执行速度的最有效的办法是:在where条件中被使用的列上,建立必要的索引,尤其是当列被用作外键关系时、多个表的join查询时可以使用explain查询SQL优化器使用了哪些索引。当然,索引建立过度,在只能小幅度的提升性能的同时,会浪费大量磁盘空间,得不偿失。通常情况下要针对那些被执行次数非常多的,或者速度特别慢的那些SQL进行调优。2、将查询SQL切割成各个
2015-03-05 21:22:33 540
原创 PostgreSQL JDBC 源码分析之fetchSize
JDBC的statement对象,有一个setFetchSize方法,参数是一个int值,其作用是,执行查询时,一次从服务器端拿多少行的数据到本地jdbc客户端这里来还有一个方法:setMaxRows,这个方法,作用是JDBC最多返回多少行数据给调用者。举个例子:一个表,有100行数据,sql语句为select * from table,fetchsize设置为20,maxrows设置为5
2014-12-18 13:38:19 6925 4
原创 算法笔记十一:二叉树之搜索二叉树
二叉树:每个节点,除了key之外,还有3个属性:父亲、左孩子、右孩子,其中,父亲一定大于左孩子,一定小于(等于)右孩子搜索二叉树:利用二叉树的这些性质,我们可以得出,在这样一个结构下,插入、删除、查找的步骤,最多不会超过树的高度。注意哈,这里的二叉树,并不是平衡的,所以,其树的高度并不等于lgN,所以,最坏情况下,这个树的插入、查找、删除的最差性能,等于树的节点树N,跟链表的性能相等
2014-12-12 22:37:19 515
原创 MySQL基础之左连接、右连接、内连接、外连接
有2张表 t1 和 t2:mysql> select * from t1;+------+| a |+------+| 1 || 2 || 3 |+------+3 rows in set (0.00 sec)mysql> select * from t2;+------+------+| a | b |+------+------
2014-11-27 12:47:22 441
原创 算法笔记十:计算第I大的数
计算第I大的元素一般的思路是,把所有的数据都排好序,然后就可以求出第I大的数,但是其实这是一种浪费,因为我们只是为了得到第I大的元素,并不需要将数据排序这里采用的方法就是,随机从集合中取出一个树,保证其左边的数都比它小,右边都比它大,这样就计算出当前位置为其应该出现在已排好序的数组中的位置(还记得快速排序吗?)根据这个应该出现的位置K,去跟I做比较,如果等于I,则得出结果,否则去其左边
2014-11-18 21:46:25 681
原创 MySQL中关于join的一个误区
我估计应该有一部分MySQL的小白用户跟我一样,以为 A left join B on a.key=b.key and condition 等价于 A left join B on a.key = b.key where condition假设我们有两张表,分别存放某个对象的信息1+信息2、信息3+信息4,表结构如下:
2014-11-18 08:35:32 503
原创 算法笔记九:桶排序
思路: 假设待排序的数据集,平均的分散在各个区间里(最理想的状态是每个区间有且只有一个元素), 那么我只要将每个数据落入到响应的区间里,然后从小到大依次从区间中取出数据,即是已排序好的结果 这里的区间,其实就是桶的概念空间代价: 取决于放入桶中的元素的数据结构,我这里采用的是一个指向下一个元素的指针以及当前int元素, 基本可以人物空间代价为O(n
2014-10-31 16:53:07 436
原创 常用shell命令
获取当前shell文件路径:baseDir=$(cd "$(dirname "$0")"; pwd)SVN 签出无版本控制的代码:svn export --force http://yourrepos path_want_to_save查看进程的所有环境变量(这里可以看到进程的启动路径之类的哦。。):cat /proc/15732/environ |tr "\00" "\n
2014-10-21 10:59:50 384
原创 算法笔记八:基数排序
思路:按照个位—>十位->百位这个位数,从低位到高位,依次对待排序数组执行排序,直到最后一位,排出来的结果集就是已完成排序的结果:比如:有三个数字:235,786,241先按照个位来排:241,235,786再按照10位来排:235,241,786再按照百位来排:235,241,786最终结果:正确!#ifndef __p1__BaseNumberSort__
2014-10-20 22:07:31 564 1
原创 算法笔记七:计数排序
算法思想://前提条件://待排序集合均为正整数//已知其最大值(也可以排序的过程中求出)//思想:假设我知道给定一个数,其前面有N个数比我小,那么,我就知道我应该位于数组中的第几个位置上//实现方式:对于带排序集合中的每一个数,使用其值作为在另外一个数组中的下标,并将目标数组的值加1,这样,目标数组就记录了待排序集合中的每个元素所出现的次数//该目标数组称
2014-10-20 11:17:20 539
原创 算法笔记六:使用分治策略执行快速排序
算法思想://采用分治策略,将原数组,分解为三部分:左边的 + 已最终定位的节点位置 + 右边的//分解:取任意一个位置的数,将数组划分为3部分:左边+该数的最终位置+右边,继续对左右两边递归执行分解操作//解决:求出给定位置数的最终位置,即保证左边都比它小,右边都比它大//合并:在分解的过程中,就已经将元素的最终位置给计算好了,不需要任何操作分
2014-10-17 17:41:56 593
原创 算法笔记五:利用堆结构来对数据进行排序
算法思想://将数组build成最大堆格式,这样,数组的第一个元素一定是最大的//有了这个前提,就可以从后往前迭代:将最后一个元素与第一个元素交换,这样最大值就排到了最后面//然后对第一个元素开头的堆结构进行重建堆,使其依然满足第一个元素为最大的元素//关键就在于建堆的逻辑//堆数据结构:给定一个节点的下标i,其左子节点的位置为2*i+1(i右移一位+1),右子
2014-10-17 17:34:56 635
原创 算法笔记四:使用分治策略求最大子数组算法
算法思想://求最大子数组问题:给定一个数组,求出值相加起来的最大的子数组//当数组中全部是正数时,数组本身就是其最大子数组//采取分治策略来解答,将数组一分为二,那么,答案要么位于左侧,要么位于右侧,要么横跨分割点。//横跨分割点时,其解答的代价是线性的//左侧和右侧又可以采用递归方式继续求解//不难得出,代价为O(NlgN)//跟传统的依次求每种可能的代价O(n^2
2014-10-17 17:21:48 781
原创 算法笔记三:归并排序
算法思想:将一个大的规模的数据,一分为二,分成两部分,分别对这两部分执行排序,然后将两个已经排好序的部分,执行归并操作。分解—>解决—>合并在解决的步骤中,什么条件下是阻止其继续分解的终止阀呢?:1、分解的只有一个元素了2、分解到了一定小的规模,采用其他算法,如插入算法来解决排序问题最好情况:与最坏情况相同,都是O(n*log2n)最坏情况:与最
2014-10-17 16:23:56 599 1
原创 算法笔记二:插入排序
算法思想:开辟另一个新空间,将待排中的n个元素,依次取出,插入到新空间的正确位置。确定插入的位置:从队尾往队首依次比较,直到发现某个元素A比当前待插入元素B要小时,则B需要插入到A的后面执行插入:将A后面的所有元素,往后移动一位,这样,A元素后面的这个位置就空闲出来,供B插入思路举例:玩扑克牌,抓牌,插入手中已有牌的某个正确位置最好情况:如果待排序的数组是和期望的排
2014-10-17 16:19:21 433
原创 算法笔记一:概述
分析一个算法,主要是考量它的运行的时间代价和空间代价,而在评估时间代价时,还要分析下最好情况下的代价和最坏情况下的代价。最好情况,用来分析该算法的最佳应用场景最坏情况,用来确定该算法的最长执行时间的上限某些算法可能会更加的关注于平均情况,当平均情况趋向于较好情况时,是有意义的,这里就需要对其平均情况发生的概率,进行分析,但大多数算法,其平均情况基本与最坏情况相当
2014-10-17 16:18:53 385
原创 MySQL数据库的隔离级别
问题:innodb ,如果一个session A开启事务读一条数据,另一个session B开启事务更新这条数据,那么B能够顺序提交吗?A又读到的是什么值呢?经过测试,结果为,B可以立即更改这个记录,但是A始终都读的是B修改前的数据,即使B已经提交了。A只有提交了之后,再select,就看到B更新之后的数据了MYSQL有四种隔离级别:1、未提交读就是可以读到别人
2014-10-17 12:01:18 560
原创 关于MySQL中的死锁
锁分为两种情况,一种是死锁,一种是锁等待,通常我们说的MySQL"死锁",指的是锁等待。事务1锁定记录A事务2锁定记录B事务1尝试更新记录B(这里是锁等待,等待事务2提交,释放B)事务2尝试更新记录A(这里是死锁,mysql会自动检测,并报ERROR 1213 (40001): Deadlock found when trying to get lock; try
2014-10-17 11:57:46 420
原创 MySQL count(*)总结
对于myisam存储引擎,使用count(*)会非常迅速,因为其存储引擎不支持行级锁,所以维护一个总条数的代价较小,其在存储引擎内部存储了总行数这个值,所以很容易就得出count(*)对于innodb存储引擎,因为支持行级锁,一张表会有多个事务进行并发修改操作,每个事务都会影响总行数,所以为了不影响并发性,其存储引擎内部并没有维护这个总行数,自然count(*)需要遍历表中的每个记录来得出,所
2014-10-17 11:53:05 665 1
原创 各级存储的访问速度
1s = 1,000 ms = 1,000,000 us = 1,000,000,000 nss:秒 ms:毫秒 us:微秒 ns:纳秒一级缓存:0.5 ns一次分支的判断:5 ns二级缓存: 7 ns互斥锁的加解锁:25 ns内存访问: 100 ns = 0.1 us使用Zippy压缩1K字节数据: 3,000 ns = 3 us = 0.003 ms从内
2014-10-17 11:51:03 1842
原创 读懂free命令
free -m -s2-m指定以兆为单位显示,-s每多少秒刷新一次先看下输出(我调整了下格式,让其对齐了): total used free shared buffers cachedMem: 7844 7366 477 0
2014-10-17 10:52:59 415
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人