原创 Scala學習筆記(1) -- 爲什麼要學函數式編程

很久之前我就學過Lisp和Erlang,但是也就是寫寫HelloWorld,寫個排序算法。也在Coursera上聽過Scala的課,可是那時候我還不怎麼用Java,所以後來也沒怎麼繼續。可是對函數式編程的興趣一直不減,工作中幾乎不會用Sca

原创 Java應用線程泄漏原因分析與避免

起因-日誌丟失生產上出現過幾次日誌丟失的問題,我們日誌每小時生成一個文件,然後每個小時剛到整點切換的時候會生成新文件然後正常輸出日誌,到了固定時點就空了,只有一個定時清理數據的線程打的幾行日誌。通過分析,是因爲我們的應用部署在weblogi

原创 十分鐘寫一個簡單的docker

我在這個視頻(http://pan.baidu.com/s/1c0fKOtM)裏介紹了容器虛擬化的原理,主要有三個方面:資源隔離,命名空間隔離,運行環境隔離。這些東西都是linux本身就有的功能,只需要寫一個shell腳本,就能實現一個簡單

原创 Http協議之Content-Length

前言http協議是互聯網中最重要的協議之一,雖然看上去很簡單,但是實際中經常遇到問題,我們就已經遇到好幾次了。有長連接相關的,有報文解析相關的。對http協議不能一知半解,必須透徹理解才行。所以就寫了這個系列分享http協議的問題與經驗。問

原创 漫談遞歸和迭代

歡迎訪問我的新博客: http://ihack.sinaapp.com先講個故事吧。從前有座山,山裏有座廟,廟裏有個老和尚,正在給小和尚講故事呢!故事是什麼呢?“從前有座山,山裏有座廟,廟裏有個老和尚,正在給小和尚講故事呢!故事是什麼呢?‘

原创 像apt和yum一樣使用docker

    apt和yum以及其他的包管理工具可以解決Linux下各種包的依賴關係,有了apt和yum基本不需要手動編譯源代碼解決依賴關係了。手動make源代碼,可能會引出好多個make,make到最後發現對內核版本有要求,再去make內核,最

原创 OSGI學習(1) - HelloWorld

工作後第一個項目就用的OSGI。連Java都不怎麼會,一下子就用OSGI,各種概念名詞都不懂,而且沒有時間去深入學習,只能在已經搭好的框架上寫交易,寫業務流程,數據庫的增刪改查,過了很久才慢慢理解。這個系列的筆記主要以實例的方式介紹我們項目

原创 我的友情鏈接

牛哥的新博客

原创 圖的着色及應用

圖的着色(Graph Coloring)按照某種規則對一個圖的每個頂點或者邊分配一個顏色(編號),稱爲對圖的着色。能按此規則完成着色的最小顏色數稱爲色數(chromatic number),記爲χ(G)。In graph theory, g

原创 從Linux的errno到Java的ThreadLocal

Linux裏的errno在Linux下執行系統調用時,一般會有一個返回值表示成功或失敗,但是這個值只說明了成功或失敗,卻沒有說明是如何成功或失敗的。errno就是爲了解決這個問題的,系統調用會把錯誤號設置爲errno,我們通過錯誤號就能知道

原创 Erlang學習:快速排序和尾遞歸

上一篇博客介紹了尾遞歸,是我自己的理解,從編譯器的角度考慮的,在看算法導論的時候發現了下面這個題目,裏邊模擬了尾遞歸,看看是怎麼模擬尾遞歸的。先用Python實現下面的算法,然後用Erlang實現。 算法導論中的題目: The QUICKS

原创 理解Goroutine

Go語言裏面的併發使用的是Goroutine,Goroutine可以看做一種輕量級的線程,或者叫用戶級線程。與Java的Thread很像,用法很簡單:go fun(params);相當於Java的new Thread(someRunnabl

原创 編程語言的一些基本概念

 學好編譯原理對於學習一門編程語言是十分重要的,對於理解程序如何在系統中運行也是很有幫助的。但是似乎大部分計算機專業的人都沒有把這門課學好,編譯原理學不好沒關係,但是其中的一些概念還是應該理解的。 編譯型語言VS解釋型語言 有這樣一個面試題

原创 多進程與多線程(3)

 線程和進程是面試中最常遇見的問題。有一個問題就是線程之間哪些東西是共享的。線程共享進程的整個地址空間,共享打開的文件,建立的socket等。線程有獨立的棧以及一些寄存器,用來進行調度。堆,數據區和代碼區是共享的。 地址空間 Linux下3

原创 Java那些坑(1):Java7的substring

問題描述應用服務器從Weblogic 10升級到了Weblogic 12,對應的jdk也從1.6升級到了1.7,結果原來的一個sql執行時間從1s變成了25s。這個sql是使用Mybatis進行的動態拼裝,如下,省略了一些字段。<inser