[原创] Shell sort(希尔排序)笔记

『1』概述
希尔排序(Shell sort)是一种不常用的排序算法,因为它效率不算高,但是作为插入排序的改进算法之一,有必要了解一下。

  • 时间复杂度:

最坏情况: O\left( {{n^2}} \right)
最好情况: O\left( {n{{\log }^2}n} \right)
平均情况: O\left( {{n^{1.5}}} \right)

  • 是不是稳定排序算法:否
  • 得名起源:1959年的时候Donald Shell发明的,所以叫Shell sort

阅读更多

[翻译] 在JAVA中,怎样周期性运行一个任务

本文是对这篇文章的翻译:《How to Schedule a Task to Run in an Interval》
我不知道原作者是否允许这样做,但我翻译本文仅在于传播知识的目的,在此向原作者表示深深的感谢:感谢你们的分享。

在程序中通常都有在后台周期性运行某些任务的需求。例如,类似于Java垃圾收集的后台运行任务。
我将在本文中向你展示3种不同的实现方法,如下:

[原创] mysql-mxj/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory 错误的解决办法


环境:Ubuntu 12.10 64位
这个错误是我在一个Java的单元测试中遇到的,因为该unit test使用了Embedded MySQL。

[原创] InputStream读取多次导致的Unexpected end of ZLIB input stream问题

有一次,在一个程序中,对jar包里的一个文本文件使用如下方式来读取:

InputStream fin = getClass().getResourceAsStream("/file_to_read.txt");

然后在后面的代码中,对 fin 进行读取:

BufferedReader reader = new BufferedReader(new InputStreamReader(fin));
for (String line = reader.readLine(); line != null; line = reader.readLine()) {
    //TODO: your code here
}

读一次是没有问题的,但如果对同一个InputStream对象读取两次,就会报类似于下面的错误:

Error: java.io.EOFException: Unexpected end of ZLIB input stream
at java.util.zip.ZipFile$1.fill(ZipFile.java:239)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:141)
at java.io.FilterInputStream.read(FilterInputStream.java:116)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
Read More

[原创] 再谈 共轭方向法/Conjugate Direction Method In Optimization

共轭方向法是介于最速下降法牛顿法之间的一种存在——它的收敛速度(二阶收敛)比最速下降法(线性收敛)快,同时它的计算量又比牛顿法要小,因此它的存在是有意义的。

阅读更多

[原创] Hadoop 2.x的DistributedCache无法工作的问题

现象:和这个帖子描述的一样,简单说来就是,在Hadoop 2.x上,用新的DistributedCache的API,在mapper中会获取不到这个cache文件。
下面就详细地描述一下新旧API的用法区别以及解决办法。

阅读更多

[原创] 去除流氓插件“微度标签页”内置的“亿起发”返利链接跳转

写这篇文章实在是因为受不了“微度标签页”这个流氓插件内置的“亿起发”返利链接跳转,不得不愤怒地写此教程告诉大家如何去除它们的流氓行径。

作为互联网公司的一员,我对互联网营销相关的技术,虽然谈不上敏感,但还是有一点嗅觉的。
最近,我注意到一个现象,那就是我的Chrome浏览器在访问一些购物网站的时候(是我在地址栏里输入的干净网址),会先快速跳转到一个 yiqifa.com 的网址,然后再继续跳转回我要访问的购物网站,于是我立马明白了:我中了流氓公司的招了。
网上有一些人也遇到了同样的困扰,但是不明为什么,所以我想我有必要写一篇文章出来,让大家看看某些公司有多么无节操。
注意:本文的方法无法防止流氓插件“微度标签页”的全部流氓行为——因为“微度”一旦升级,你修改过的本地插件数据可能就会被覆盖掉。所以,最好的方法就是:卸载它!大家可以换用Speed Dial 2这样的良心插件(云同步功能需要支付$2.99,我觉得完全可以接受,至少它一点流氓行径也没有)。
如果你非要自虐,继续使用“微度标签页”(我已经卸载了,改用Speed Dial 2),那么本文可以在一定程度上帮你去除其强制跳转的恶心行为,请继续往下看。

[原创] “不需要升级,您的WordPress数据库已经是最新的了!”导致进不了WordPress管理后台的问题

今天突然发现,进不去WordPress后台管理页面了,登录之后,屏幕上就两句话:

不需要升级
您的WordPress数据库已经是最新的了!
由于我今天没有升级过WordPress,也没做什么后台设置更改,并且我从来没见过这个提示,所以刹那间心一凉,心想我的WordPress数据库不是出什么问题了吧?
于是问Google,查到这个问题是由于使用了object-cache缓存插件导致的问题,于是解决了,如下。

阅读更多

[原创] Java动态添加一个目录到classpath中

通常我们写程序,会用到一些配置文件,这些文件与程序在同一个父目录下,配置文件可能放在config之类的目录下,程序中会使用这些配置文件。
我遇到了这么件事情:因为一个特殊需求,需要把配置文件放到jar包中,最终部署出去的只能是一个jar包(所有东西都在jar包里,包括程序和所需的资源),然后在程序中使用 getClass().getResourceAsStream(文件在jar包中的路径) 的方式来读取配置文件。这也倒没什么不爽的,但是在单元测试中怎么办?

阅读更多

[原创] 再谈 牛顿法/Newton's Method In Optimization

牛顿法是最优化领域的经典算法,它在寻优的过程中,使用了目标函数的二阶导数信息,具体说来就是:用迭代点的梯度和二阶导数对目标函数进行二次逼近,把二次函数的极小点作为新的迭代点,不断重复此过程,直到找到最优点。

阅读更多

[原创] 再谈 梯度下降法/最速下降法/Gradient descent/Steepest Descent

当今世界,深度学习应用已经渗透到了我们生活的方方面面,深度学习技术背后的核心问题是最优化(Optimization)。最优化是应用数学的一个分支,它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称。
梯度下降法(Gradient descent,又称最速下降法/Steepest descent),是无约束最优化领域中历史最悠久、最简单的算法,单独就这种算法来看,属于早就“过时”了的一种算法。但是,它的理念是其他某些算法的组成部分,或者说在其他某些算法中,也有梯度下降法的“影子”。例如,各种深度学习库都会使用SGD(Stochastic Gradient Descent,随机梯度下降)或变种作为其优化算法。
今天我们就再来回顾一下梯度下降法的基础知识。

阅读更多

[原创] Emacs文章合集

转载请注明出处:http://www.codelast.com/

文章越来越多,越来越不好查询了,只能一点点归类。

➤ Emacs on Windows初步实践

➤ 在Emacs中使用树形“资源管理器”——emacs-nav

➤ 在Emacs中使用树形“资源管理器”——Sr Speedbar

阅读更多

[原创] 在Emacs中使用树形“资源管理器”——Sr Speedbar

『1』下载
使用Sr Speedbar可以在Emacs中“造”出一个树形资源管理器。在这个页面下载到 sr-speedbar.el(若链接已失效,请自行搜索)。

『2』创建一个Emacs的load path
我在我放置Emacs插件的总目录 ~/.emacs.d/ 下创建了一个“extra”目录,用于放置其他我自己下载的插件,于是我把上面下载的 sr-speedbar.el 也放到这个extra目录下了。

阅读更多

[原创] 在Emacs中使用树形“资源管理器”——emacs-nav

『1』下载
项目主页:https://code.google.com/p/emacs-nav/

『2』安装
解压下载到的安装包,并将其拷贝到一个自己创建的Emacs load-path中:

tar zxf emacs-nav-49.tar.gz
cd emacs-nav-49/
mkdir ~/.emacs.d/emacs-nav/
cp * ~/.emacs.d/emacs-nav/

其中,~/.emacs.d/emacs-nav/ 是我为emacs-nav自己创建的一个目录。

阅读更多

[原创] 如何在Ubuntu下的VirtualBox虚拟机(Windows XP)里挂载/使用U盘

在Ubuntu下安装了VirtualBox之后,如果你的虚拟机安装的是Windows XP系统,那么,你会发现,当你插上U盘时,无论你怎么折腾,虚拟机(XP)里都是没有任何反应的,既不提示找到新硬件,也看不到U盘的分区。
不像VMware,默认安装之后对U盘的支持很好,根本不需要用户去配置什么东西。从这一点上,我觉得VirtualBox太龌龊了,小而美归小而美,但是你不能把最常用的功能放在基础支持列表之外,还要用户去配置才能用,不是么?

下面就教你如何能让VirtualBox的虚拟机(XP)找到U盘并挂载上。宿主机系统是Ubuntu。实话说,网上的很多文章写得实在让人很无语,要么简略得太夸张,要么连中文都写得不通顺(负点责任行吗),我实在是看不下去了,所以在研究出来怎么做之后,我决定要把这么简单的一件事情写成教程,帮助有需要的人。

阅读更多