自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

臭脚大仙

不忘初期

  • 博客(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 351

原创 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 727

原创 MySQL查询优化之概述

1、加快select语句执行速度的最有效的办法是:在where条件中被使用的列上,建立必要的索引,尤其是当列被用作外键关系时、多个表的join查询时可以使用explain查询SQL优化器使用了哪些索引。当然,索引建立过度,在只能小幅度的提升性能的同时,会浪费大量磁盘空间,得不偿失。通常情况下要针对那些被执行次数非常多的,或者速度特别慢的那些SQL进行调优。2、将查询SQL切割成各个

2015-03-05 21:22:33 518

原创 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 6699 4

原创 算法笔记十一:二叉树之搜索二叉树

二叉树:每个节点,除了key之外,还有3个属性:父亲、左孩子、右孩子,其中,父亲一定大于左孩子,一定小于(等于)右孩子搜索二叉树:利用二叉树的这些性质,我们可以得出,在这样一个结构下,插入、删除、查找的步骤,最多不会超过树的高度。注意哈,这里的二叉树,并不是平衡的,所以,其树的高度并不等于lgN,所以,最坏情况下,这个树的插入、查找、删除的最差性能,等于树的节点树N,跟链表的性能相等

2014-12-12 22:37:19 495

原创 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 423

原创 算法笔记十:计算第I大的数

计算第I大的元素一般的思路是,把所有的数据都排好序,然后就可以求出第I大的数,但是其实这是一种浪费,因为我们只是为了得到第I大的元素,并不需要将数据排序这里采用的方法就是,随机从集合中取出一个树,保证其左边的数都比它小,右边都比它大,这样就计算出当前位置为其应该出现在已排好序的数组中的位置(还记得快速排序吗?)根据这个应该出现的位置K,去跟I做比较,如果等于I,则得出结果,否则去其左边

2014-11-18 21:46:25 648

原创 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 486

原创 算法笔记九:桶排序

思路:  假设待排序的数据集,平均的分散在各个区间里(最理想的状态是每个区间有且只有一个元素),  那么我只要将每个数据落入到响应的区间里,然后从小到大依次从区间中取出数据,即是已排序好的结果  这里的区间,其实就是桶的概念空间代价:    取决于放入桶中的元素的数据结构,我这里采用的是一个指向下一个元素的指针以及当前int元素,    基本可以人物空间代价为O(n

2014-10-31 16:53:07 417

原创 常用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 365

原创 算法笔记八:基数排序

思路:按照个位—>十位->百位这个位数,从低位到高位,依次对待排序数组执行排序,直到最后一位,排出来的结果集就是已完成排序的结果:比如:有三个数字:235,786,241先按照个位来排:241,235,786再按照10位来排:235,241,786再按照百位来排:235,241,786最终结果:正确!#ifndef __p1__BaseNumberSort__

2014-10-20 22:07:31 541 1

原创 如何在一台机器上运行两个MySQL实例

1、准备两个不同的my.cnf文件,

2014-10-20 17:04:46 531

原创 算法笔记七:计数排序

算法思想://前提条件://待排序集合均为正整数//已知其最大值(也可以排序的过程中求出)//思想:假设我知道给定一个数,其前面有N个数比我小,那么,我就知道我应该位于数组中的第几个位置上//实现方式:对于带排序集合中的每一个数,使用其值作为在另外一个数组中的下标,并将目标数组的值加1,这样,目标数组就记录了待排序集合中的每个元素所出现的次数//该目标数组称

2014-10-20 11:17:20 523

原创 算法笔记六:使用分治策略执行快速排序

算法思想://采用分治策略,将原数组,分解为三部分:左边的 + 已最终定位的节点位置 + 右边的//分解:取任意一个位置的数,将数组划分为3部分:左边+该数的最终位置+右边,继续对左右两边递归执行分解操作//解决:求出给定位置数的最终位置,即保证左边都比它小,右边都比它大//合并:在分解的过程中,就已经将元素的最终位置给计算好了,不需要任何操作分

2014-10-17 17:41:56 558

原创 算法笔记五:利用堆结构来对数据进行排序

算法思想://将数组build成最大堆格式,这样,数组的第一个元素一定是最大的//有了这个前提,就可以从后往前迭代:将最后一个元素与第一个元素交换,这样最大值就排到了最后面//然后对第一个元素开头的堆结构进行重建堆,使其依然满足第一个元素为最大的元素//关键就在于建堆的逻辑//堆数据结构:给定一个节点的下标i,其左子节点的位置为2*i+1(i右移一位+1),右子

2014-10-17 17:34:56 612

原创 算法笔记四:使用分治策略求最大子数组算法

算法思想://求最大子数组问题:给定一个数组,求出值相加起来的最大的子数组//当数组中全部是正数时,数组本身就是其最大子数组//采取分治策略来解答,将数组一分为二,那么,答案要么位于左侧,要么位于右侧,要么横跨分割点。//横跨分割点时,其解答的代价是线性的//左侧和右侧又可以采用递归方式继续求解//不难得出,代价为O(NlgN)//跟传统的依次求每种可能的代价O(n^2

2014-10-17 17:21:48 759

原创 算法笔记三:归并排序

算法思想:将一个大的规模的数据,一分为二,分成两部分,分别对这两部分执行排序,然后将两个已经排好序的部分,执行归并操作。分解—>解决—>合并在解决的步骤中,什么条件下是阻止其继续分解的终止阀呢?:1、分解的只有一个元素了2、分解到了一定小的规模,采用其他算法,如插入算法来解决排序问题最好情况:与最坏情况相同,都是O(n*log2n)最坏情况:与最

2014-10-17 16:23:56 566 1

原创 算法笔记二:插入排序

算法思想:开辟另一个新空间,将待排中的n个元素,依次取出,插入到新空间的正确位置。确定插入的位置:从队尾往队首依次比较,直到发现某个元素A比当前待插入元素B要小时,则B需要插入到A的后面执行插入:将A后面的所有元素,往后移动一位,这样,A元素后面的这个位置就空闲出来,供B插入思路举例:玩扑克牌,抓牌,插入手中已有牌的某个正确位置最好情况:如果待排序的数组是和期望的排

2014-10-17 16:19:21 416

原创 算法笔记一:概述

分析一个算法,主要是考量它的运行的时间代价和空间代价,而在评估时间代价时,还要分析下最好情况下的代价和最坏情况下的代价。最好情况,用来分析该算法的最佳应用场景最坏情况,用来确定该算法的最长执行时间的上限某些算法可能会更加的关注于平均情况,当平均情况趋向于较好情况时,是有意义的,这里就需要对其平均情况发生的概率,进行分析,但大多数算法,其平均情况基本与最坏情况相当

2014-10-17 16:18:53 358

原创 MySQL数据库的隔离级别

问题:innodb ,如果一个session A开启事务读一条数据,另一个session B开启事务更新这条数据,那么B能够顺序提交吗?A又读到的是什么值呢?经过测试,结果为,B可以立即更改这个记录,但是A始终都读的是B修改前的数据,即使B已经提交了。A只有提交了之后,再select,就看到B更新之后的数据了MYSQL有四种隔离级别:1、未提交读就是可以读到别人

2014-10-17 12:01:18 543

原创 关于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 399

原创 MySQL count(*)总结

对于myisam存储引擎,使用count(*)会非常迅速,因为其存储引擎不支持行级锁,所以维护一个总条数的代价较小,其在存储引擎内部存储了总行数这个值,所以很容易就得出count(*)对于innodb存储引擎,因为支持行级锁,一张表会有多个事务进行并发修改操作,每个事务都会影响总行数,所以为了不影响并发性,其存储引擎内部并没有维护这个总行数,自然count(*)需要遍历表中的每个记录来得出,所

2014-10-17 11:53:05 634 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 1767

原创 读懂free命令

free -m -s2-m指定以兆为单位显示,-s每多少秒刷新一次先看下输出(我调整了下格式,让其对齐了):              total       used       free     shared    buffers     cachedMem:           7844       7366        477          0        

2014-10-17 10:52:59 397

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除