www.nginx.cnsitemap

存档

2015年5月 的存档

linode下一个接力者,这次是电源问题

2015年5月30日 4 条评论

从网易断网、支付宝断网、到携程,一直当笑话听。
今天linode也跟着出现问题了,由于电力问题导致机房中断服务,大概8个小时。
虽说博客比不了大公司,也体验了一把服务不能用的待遇。

Update - We have about 13 damaged servers left and are working on transplanting their drives to hot-spare servers.
May 30, 09:08 UTC
Update - Most Linodes in Fremont should be booted at this time. We continue to work on the servers that were damaged due to the power outage.
May 30, 08:04 UTC
Update - Power was restored at approximately 11:10PM PDT and Linodes are booting. There may be several servers that need special attention due to the power failure and we are investigating those at this time.
May 30, 06:50 UTC
Update - Our upstream provider has provided a new estimated time to restoration of 11:30PM PDT.
May 30, 05:08 UTC
Update - Our upstream provider has provided a new estimated time to restoration of 10:00PM PDT.
May 30, 04:37 UTC
Update - At approximately 6:30PM PDT, the Fremont datacenter experienced a power utility outage. One out of eight generators also experienced an electromechanical failure. The estimated time to restoration is currently 9:30PM PDT. Linode has all hands on deck to get Linodes online as soon as power is restored.
May 30, 03:21 UTC
Update - We have received word from our colocation provider that there has been a power event in a section of the Fremont datacenter. The affected space is where a critical part of the datacenter network is located. The datacenter's electric provider is working with staff to restore power as soon as possible. Please watch this status page for further updates.
May 30, 02:25 UTC
Identified - We are aware of an issue within our Fremont datacenter and are investigating at this time. We will provide additional information as it becomes available.
May 30, 01:47 UTC

分类: 网站 标签:

mac上切换jdk版本

2015年5月19日 没有评论

在~/.profile中增加如下内容
alias setJdk6='export JAVA_HOME=$(/usr/libexec/java_home -v 1.6)'
alias setJdk7='export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)'
alias setJdk8='export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)'

切换java_home为1.6版本
setJdk6
切换java_home为1.7版本
setJdk7
切换java_home为1.8版本
setJdk8

JDK的安装路径
jdk 1.6 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk

jdk 1.7 /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/

jdk 1.8 /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/

bin位置:Contents/Home/bin/

参考网址
http://support.apple.com/en-us/HT202643
http://hints.macworld.com/article.php?story=20121024002012496
https://wimdeblauwe.wordpress.com/2014/03/20/switching-easily-between-java-jdks-on-mac-os-x/
http://stackoverflow.com/questions/17885494/how-can-i-change-mac-oss-default-java-vm-returned-from-usr-libexec-java-home

分类: iOS/Mac, java 标签: ,

如何在 Mac OS X 10.10 上安装 Java?

2015年5月19日 1 条评论

java1.6版安装
http://support.apple.com/kb/DL1572

因为并非所有用户都用得着 Java ,所以在默认状态下 OS X 不预装 Java , 如果你需要的话可以手动安装.

到苹果官网下载 http://support.apple.com/kb/DL1572

http://support.apple.com/downloads/DL1572/en_US/JavaForOSX2014-001.dmg

安装后在终端输入
java -version

如果显示版本就说明安装好了.
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-466.1, mixed mode)

如果显示如下, 就说明没安装对,需要重新来过.
No Java runtime present, requesting install.

java1.8安装同上去oracle网站下载
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

安装java1.8之后如何降级为1.6
在安装了java8和java6之后,停用java8使用java6
打开终端.
创建备份目录
sudo mkdir -p /Library/Internet Plug-Ins/disabled

备份插件
sudo mv /Library/Internet Plug-Ins/JavaAppletPlugin.plugin /Library/Internet Plug-Ins/disabled

恢复java6 applet plug-in
sudo ln -sf /System/Library/Java/Support/Deploy.bundle/Contents/Resources/JavaPlugin2_NPAPI.plugin /Library/Internet Plug-Ins/JavaAppletPlugin.plugin

恢复 Java SE 6 Web Start:
sudo ln -sf /System/Library/Frameworks/JavaVM.framework/Commands/javaws /usr/bin/javaws

恢复java8环境
禁用 Java SE 6 Web Start opening:
sudo ln -sf /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javaws /usr/bin/javaws

要想恢复 Java 8 applet plug-in 只能通过重新安装最新的java8

分类: iOS/Mac 标签:

一个关于分页的面试题

2015年5月1日 5 条评论

在网上看到面试中考分页的帖子,结合自己的想法,集合一下,欢迎讨论。

分页是各式各样系统开发过程中必不可少的环节,普通web应用数据量小、访问量小,分页可以用简单的方式来实现,一般是通过startrow+pagenum来实现,甚至可以提前生成静态页面,这样数据库基本没有压力,缺点是数据变动时要重新生成所有列表页,而且不能实时显示数据的变化。

不过还好的是对于大多数的应用能够实现需求即可,不必过多考虑优化。

互联网公司的海量数据,情况就变得不一样了,更多考虑的是性能和效率,加载速度提高一点点,就意味着用户体验的提升,用户体验决定着产品的未来。

因此我们可以看到数据量变大的情况下一个高效的分页变的重要程度,分页面试能够体现面试者是否处理过大量数据,没处理过也能够体现其面试时处理问题的思考和应变能力。

不管什么方法做分页,它都离不开数据库的支持,优化原则是尽量减少扫描数据库中记录的条数。

常用的关系数据库mysql和oracle为例:mysql分页依赖于limit,oracle分页使用rownum实现。

mysql分页方法?

mysql分页的核心语句:

先看一下分页的基本原理(CSDN那个百万级数据库来测试!):

SELECT * FROM csdn ORDER BY id DESC LIMIT 100000,2000;
耗时: 0.813ms

分析:对上面的mysql语句说明:limit 100000,2000的意思扫描满足条件的102000行,扔掉前面的100000行,返回最后的2000行。

问题就在这里,如果是limit 100000,20000,需要扫描120000行,在一个高并发的应用里,每次查询需要扫描超过100000行,性能肯定大打折扣。

在《efficient pagination using mysql》中提出的clue方式。

利用clue方法,给翻页提供一些线索,比如还是SELECT * FROM csdn order by id desc,按id降序分页,每页2000条,当前是第50页,当前页条目id最大的是102000,最小的是100000。如果我们只提供上一页、下一页这样的跳转(不提供到第N页的跳转)。

那么在处理上一页的时候SQL语句可以是:
SELECT * FROM csdn WHERE id<=102000 ORDER BY id DESC LIMIT 2000; #上一页 耗时:0.015ms 处理下一页的时候SQL语句可以是: SELECT * FROM csdn WHERE id>102000 ORDER BY id ASC LIMIT 2000; #下一页
耗时:0.015ms

这样,不管翻多少页,每次查询只扫描20行。效率大大提高了!

但是,这样分页的缺点是只能提供上一页、下一页的链接形式。

oracle如何分页?

oracle分页的核心:

大量数据时oracle分页语句的优化(通过rownum和rowid来进行分页),如下:

分类: mysql, oracle 标签: