[原创] 在Github上添加SSH key

如果你在Github上有一个项目,为了能让这个项目可以在多台计算机上开发,需要把目标计算机的SSH key添加到你的Github账户中,否则你以SSH方式git clone时会提示无权限,例如你可以试试:

git clone git@github.com:codelast/raspberry-pi.git

会输出类似于这样的错误信息:

Permission denied (publickey).

文章来源:http://www.codelast.com/
所以下一步就要在Github中添加SSH key,让你可以在目标计算机上进行开发以及代码提交。
其实Github上已经有完整的教程了,只不过我记性不好,每次都要去翻Github教程,所以特地写下来。

检查SSH key是否已经存在
检查文件 ~/.ssh/id_rsa.pub 是否存在,如果存在,就不用生成一个新的SSH key了,直接跳到下面的第3步。
如果该文件存在,但你不想使用它的话,那么就按下面的做法另外生成一个文件也可以(例如 ~/.ssh/id_rsa_github.pub)。
文章来源:http://www.codelast.com/
 生成一个新的SSH key
如果第1步中的SSH key不存在,则需要生成:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

其中,your_email@example.com要修改成你的邮箱地址。
回车后输出如下:

Generating public/private rsa key pair.
Read More

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

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

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

阅读更多

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

最近,在使用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

阅读更多

[原创] gnuplot调教记

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

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

阅读更多

[原创] 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

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

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

作为互联网公司的一员,我对互联网营销相关的技术,虽然谈不上敏感,但还是有一点嗅觉的。
最近,我注意到一个现象,那就是我的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包中的路径) 的方式来读取配置文件。这也倒没什么不爽的,但是在单元测试中怎么办?

阅读更多

[原创] Google Protocol Buffers中文教程

注:前面这些是本人的翻译,可能不准确,可能有错误,但是基本上可以理解,希望能对大家有所帮助。

 
 
 

[原创](翻译)什么是Java的永久代(PermGen)内存泄漏

本文是我对这篇文章的翻译:What is a PermGen leak? 为了便于阅读,我将原文附于此处,翻译穿插在其中。此外,为了防止原链接在未来某一天失效后,文中的图片再也看不到的问题,我将原文中的图片也保存到了本站的服务器上,我不知道原作者是否允许这样做,但我翻译本文仅在于传播知识的目的,在此向原作者表示深深的感谢:感谢你们的分享。

阅读更多

[原创]用LaTeX for WordPress插件在WordPress中写数学公式

WordPress是地球上使用最广泛的网站建立工具(或内容管理系统,CMS,Content Management System),如果你想建一个自己的个人网站,用WordPress非常方便。​
在WordPress中写数学公式有N种方法,以前我一直是用MathType写好公式后,屏幕截图,上传图片到WordPress服务器,然后在文章中引用该图片。这样做的好处就是兼容性好,无论在任何软件(例如RSS阅读器)中都可以正确显示,任何复杂的内容都可以在公式中完美显示(包括中文),还可以给公式加版权水印;当然坏处也非常明显:整个操作过程超级麻烦(尤其是要修改公式的时候)。

阅读更多

[原创]Java基础知识记录(2)

前言:本文『很傻很天真』,任何稍有Java编程经验的都不用看了。
文章来源:http://www.codelast.com/
 创建一个Set时,如何初始化其中的元素
如果在创建一个Set之后,再用add()方法向Set中添加元素,就显得比较麻烦了。通过使用Google Guava库,可以在初始化的时候就向其添加若干元素:

Set<String> s = Sets.newHashSet("99""100")

这样创建出的s就会包含99和100这两个元素。

阅读更多