原创 Python推導式詳解

Python語言有一種獨特的推導式語法,有點像語法糖,可以幫你在某些場合寫出比較精簡酷炫的代碼,同時,它的性能可能會比我們寫循環要好。它主要用於初始化一個列表,也可以用於初始化集合和字典。 1. 推導式分類與用法 1.1 列表推導 列表推導

原创 Python迭代器詳解

從for循環說起 我們都知道,在Python中,我們可以for循環去遍歷一個列表,元組或者range對象。 for i in [1,2,3]: print(i) for i in range(0,10): print(i)

原创 Dubbo應用遷移到Kubernetes

Dubbo應用遷移到docker的問題 Dubbo是阿里開源的一套服務治理與rpc框架,服務的提供者通過zookeeper把自己的服務發佈上去,然後服務調用方通過zk獲取服務的ip和端口,dubbo客戶端通過自己的軟負載功能自動選擇服務提供

原创 利用Arthas定位線上問題實例

前言 Arthas是一個類似於Btrace的JVM在線調試分析工具,具體可參考我之前寫的一篇博客:利用JVM在線調試工具排查線上問題。本文分享筆者剛遇到的一個問題,雖然不復雜,但是很典型。 問題與分析過程 昨天上線遇到一個問題,交易後給大數

原创 通過實例理解Java網絡IO模型

網絡IO模型裏有多個概念比較難理解,本文通過用Java實現一個簡單的redis,從最簡單的單線程單連接到NIO與netty,介紹不同的IO模型。 網絡IO模型及分類 網絡IO模型是一個經常被提到的問題,不同的書或者博客說法可能都不一樣,所以

原创 異步處理ServletRequest引發的血案

我們的APP生產上出了一次比較嚴重的事故,許多用戶投訴登錄後能看到別人的信息,收到投訴後我們就開始查找問題,一般這樣的問題都是線程安全引起的,所以查找原因的思路也是按線程安全的思路去查。 業務場景是這樣的,用戶登錄後,點擊一個頁面查看信息,

原创 用Typora寫Hexo博客

Typora是一個非常方便的markdown編輯器,支持所見即所得,同時也比較方便的支持本地圖片的插入。使用Typora寫Hexo博客,需要關注的地方就是在Typora中插入圖片時,不用修改即可發佈到網站。 先通過hexo產生一篇文章 my

原创 Functional Programming For The Rest of Us

(這篇關於Functional Programming的文章不錯,就轉過來了) Monday, June 19, 2006 Introduction Programmers are procrastinators. Get in, get

原创 Linux下實現CPU使用率正弦曲線

 編程之美第一道題目就是如何讓CPU使用率曲線成爲一條正弦曲線,本文在Linux下實現這個效果。 程序運行時間 一個進程的運行時間大致分爲user time,kernel time和waiting time 三個時間加起來就是進程從開始到結

原创 gcc嵌入彙編

有時候需要在C語言裏使用彙編語言,或者是提高性能,或者是因爲某些功能不能由系統調用實現。而在內核裏,C語言裏嵌入彙編是非常普遍的。如何在C語言裏嵌入彙編語言呢? int main()  {  __asm__ __volat

原创 VMware ESX和XenServer配置NAT

 VMware ESX和XenServer都不提供NAT功能,虛擬機只能使用橋接的方式上網,如果外網IP夠用還可以,如果外網IP不夠用,就得自己配置NAT了。 本文將介紹如何在VMware ESX和XenServer環境中配置一個NAT服務

原创 利用腳本自動配置iptables的NAT端口映射

上篇博客寫了如何在VMware ESX和XenServer環境下配置NAT,解決了內網虛擬機訪問外網的問題,還沒解決外網訪問內網的問題。 每增加一臺虛擬機就增加幾條映射規則太麻煩,實現把端口都映射好了,就不需要每次添加了。 端口映射規則如下

原创 爲Docker Swarm添加調度策略

Swarm簡介Swarm是Docker的一個集羣管理工具,最開始僅僅是用作集羣管理以及簡單的調度,就像下面的圖所示的,爲Docker Client提供與Docker Engine一樣的Docker API,客戶端操作Swarm就好像在操作一

原创 Erlang學習:尾遞歸

先來看一個簡單的問題,輸入一個數N,求出1+2+3+...+N。 這個問題可以使用循環解決 sum = 0; for(i = 1; i <= N; i++)            sum += i;  但是在函數式編程語言中,變量是不允許修

原创 內存回收的一些基本方法

內存垃圾回收(Garbage Collection)是一個很古老的技術了,最開始在Lisp上出現。如今幾乎所有高級語言都有GC,大部分程序員不再需要絞盡腦汁通宵達旦去查找內存泄露的原因了。我以前也不怎麼關心垃圾回收這個問題,可是面試時老是被