[原创] 让ThreadPoolExecutor的workQueue占满时自动阻塞submit()方法

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

使用Java的ThreadPoolExecutor可以并发地执行一些任务,它的基本用法是:
(1)创建一个 ThreadPoolExecutor 对象

ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(workQueueSize));
Read More

[原创] 使用ThreadPoolExecutor产生的 OutOfMemoryError: unable to create new native thread 错误

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

最近,在使用Java的ThreadPoolExecutor来实现一个并发功能的时候,发现程序刚执行起来不久,就提示了错误:

OutOfMemoryError: unable to create new native thread

并且服务器立即陷入类似于“无响应”的状态,无法用Ctrl+C结束掉我的Java程序,按Ctrl+C的时候,命令行只是不断地打印出类似于下面的消息:

Exception java.lang.OutOfMemoryError occurred dispatching signal SIGINT to handler- the VM may need to be forcibly terminated
Read More

[原创] Protocol Buffers的Emacs语法高亮

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

让Emacs支持Protocol Buffers文件的语法高亮,很简单,首先下载这个文件:

wget https://raw.githubusercontent.com/dylanvaughn/emacs/master/lib/protobuf-mode.el
Read More

[原创] 树莓派视频教程

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

我为极客学院录制了一个系列的树莓派视频教程,总共有6节大课。
该系列课程内容是基于树莓派Model B+型号的,而本站里我以前写过的很多树莓派文章是基于树莓派Model B型号(较老)的,因此,我录制的这些课程内容更“新”一些,适合于初学者学习。
由于是商业用途的课程,所以极客学院只把每节大课的第一课时设置为可以免费观看的,并且由于有协议约束,我也不能把教学视频发布到其他任何一个网站上,在这里我要向大家说抱歉,希望大家能支持极客学院。
但是,作为一个知识共享的拥护者,我希望每个人都能得到尽可能多的知识,因此,如果有时间的话,我会在本站写一些类似的技术文章出来。并且,本系列教程中的所有代码,都上传到了Github,你可以到这里下载。… Read More

[原创] gnuplot调教记

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

gnuplot是命令行绘图的极佳选择之一。用它画出一副简单的图极其容易,但是对画出的图进行微调却很令人抓狂,这主要“得益”于gnuplot超级强大的功能,以及无穷无尽纷繁复杂的说明文档,通常让人没时间去细细研究。
如果你经常有gnuplot的使用需求,那么可以仔细研读一下它的文档,否则,还是像我一样,现学现用吧。
我折腾了一天多时间,把我想要的一副图给画出来了,里面涉及到了很多图像的微调过程,有些解决方案很难搜到,但我运气稍好,终究还是弄出来了,在此,作为一个使用案例来分析一下。因此,本文并不是gnuplot的使用教程,而是用gnuplot绘图时,对某些奇怪问题的解决办法的分享。

本文基于gnuplot版本:4.4,系统:RHEL 5.3… Read More

[原创] 解决找不到emacsclient命令的问题 / Solve the emacsclient: command not found problem

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

用daemon模式运行Emacs,并且用emacsclient连接上这个已经启动的server的话,那么Emacs启动速度真是如光速一般。不过,在我的一台计算机上,竟然找不到emacsclient命令,于是我挖了一番,解决了这个问题,于是写下来。… Read More

[原创] 如何用「归纳假设法」求归并排序的时间复杂度

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

分析归并排序算法的时间复杂度,可以根据算法的逻辑,分析每一个步骤的最坏情况,然后得到总体的时间复杂度;也可以利用数学中的『归纳假设法』,用几乎纯数学的方式来得到它的时间复杂度。而后者比前者好理解得多,所以,我认为要推导归并排序的时间复杂度的话,归纳假设的方法是不二之选。… Read More

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

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

『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
Read More

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

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

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

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