摘要: 首先的首先,恒大威武!开始正题。关系代数:目前主流的关系型数据库,是建立在关系代数的基础上的,即他的数学支撑是关系代数。关系代数主要包括如下几个二目运算:并运算union、交运算intersection、差运算difference、笛卡尔积Cartesian Product.这里需要留意的是,笛卡尔积严格的说是广义的笛卡尔积,因为在关系型数据库中的笛卡尔积的元素是元组,所谓元组,直白的解释就是数据库中的一行,每一行是一个元组。数据库中专门的关系运算有如下几个:选择selection、投影projection、链接join、除运算division。SQL:SQL,即结构化查询语言,书关系型数据库 阅读全文
posted @ 2013-11-10 15:44 半夜乱弹琴 阅读(996) 评论(2) 推荐(2)
摘要: 最近一段时间由于工作需要,开始关注针对Mysql数据库的select查询语句的相关优化方法。 由于在参与的实际项目中发现当mysql表的数据量达到百万级时,普通SQL查询效率呈直线下降,而且如果where中的查询条件较多时,其查询速度简直无法容忍。曾经测试对一个包含400多万条记录(有索引)的表执行一条条件查询,其查询时间竟然高达40几秒,相信这么高的查询延时,任何用户都会抓狂。因此如何提高sql语句查询效率,显得十分重要。以下是网上流传比较广泛的30种SQL查询语句优化方法:1、应尽量避免在 where 子句中使用!=或操作符,否则将引擎放弃使用索引而进行全表扫描。2、对查询进行优化,... 阅读全文
posted @ 2013-11-08 13:46 半夜乱弹琴 阅读(34982) 评论(6) 推荐(10)
摘要: 为方便开发人员,JDK提供了一套主要数据结构的实现,比如List、Map等。今儿说说List接口。List接口的一些列实现中,最常用最重要的就是这三个:ArrayList、Vector、LinkedList。JDK中这三个类的定义:public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializablepublic class Vector extends AbstractList implements List, RandomA... 阅读全文
posted @ 2013-08-12 00:02 半夜乱弹琴 阅读(3909) 评论(1) 推荐(1)
摘要: String a=String b + String c + String d这种代码在程序里应该随处可见,一部分人不知道这段代码的缺陷在哪,另一部分人知道这样写不好,但是太顺手了下意识就写了。在Java里,String是个不可变对象,所以右边的每次赋值操作都会new一个新对象,b+c,b+c+d,至少会new两个,很明显性能不佳。但是这个问题没有大多数情况下没我们想象的那么严重,因为编译器在编译时会对String做很多优化,但是对于一些运行时的赋值和修改操作,编译器很难优化,这种时候,就强烈不推荐这样写,虽然写的很顺手 ,但是性能不行,如果存在字符串的修改操作,就应该用StringBuild 阅读全文
posted @ 2013-08-04 23:48 半夜乱弹琴 阅读(5749) 评论(12) 推荐(2)
摘要: 都说JDK的实现诡异多,今儿也算是被我踩到一个坑了。就来说说关于String.valueOf的这个坑。 1 public class TestString { 2 3 public static void main(String[] args){ 4 5 Object obj = null; 6 System.out.println(String.valueOf(obj)); 7 System.out.println(String.valueOf(null)); 8 } 9 }这段代码,第一个输出“nu... 阅读全文
posted @ 2013-07-30 09:49 半夜乱弹琴 阅读(12341) 评论(6) 推荐(2)
摘要: 最近由于系统和业务重构需要,需要把线上1亿数据迁移到新库,由于业务变更,新表老表结构有变化,没法直接用dba dump的方式,需要自己写转换程序迁移。今天在调试的时候,碰到一个蛋疼的问题,就是一开始查询数据都正常,但是查询几条后日志就会报超时错误,具体日志如下:No ManagedConnections available within configured blocking timeout ( 5000 [ms] ); - nested throwable: (javax.resource.ResourceException: No ManagedConnections availabl.. 阅读全文
posted @ 2013-06-24 20:04 半夜乱弹琴 阅读(8518) 评论(0) 推荐(0)
摘要: uptime:uptime命令,显示系统运行时间长度,依次显示如下信息:系统当前时间,系统已运行时长,目前有多少登陆用户,系统过去1min、5min、15min的平均负载。一个典型的uptime命令输出如下: 这是一个典型的线上linux服务器的uptime输出,对监控来说,前面几个看看就好,这个命令最主要就是看最后面三个:最近1分钟、5分钟、15分钟内的平均Load。Load是神马?Load就是系统负载,可是我们看到的这三个都是活生生的数字,那么,这个负载是怎么计算的?好问题!对linux系统来说,load计算的时间间隔是5s,这个是定义在linux内核里的固定常量。每隔五秒,系统就会采样. 阅读全文
posted @ 2012-11-28 22:48 半夜乱弹琴 阅读(724) 评论(0) 推荐(0)