在寫代碼的過程當中,我們總會遇到需要保證全局只有一個實例的時候,這個時候就要使用單件模式。
單件模式——它確保了一個類只有一個實例,並提供一個全局訪問點。
那麼怎麼實現單件模式呢?我們來看看最經典的 Java 代碼,該怎麼實現這個 單件模式。
我們在網上隨便搜索“java 單件模式”就能找到不少現成的代碼段,這裡是其中隨機摘抄的一份:
[crayon-6725e3da88abf7037[……]
在寫代碼的過程當中,我們總會遇到需要保證全局只有一個實例的時候,這個時候就要使用單件模式。
單件模式——它確保了一個類只有一個實例,並提供一個全局訪問點。
那麼怎麼實現單件模式呢?我們來看看最經典的 Java 代碼,該怎麼實現這個 單件模式。
我們在網上隨便搜索“java 單件模式”就能找到不少現成的代碼段,這裡是其中隨機摘抄的一份:
[crayon-6725e3da88abf7037[……]
我們都知道,比如 Swift 、 Python 裡,都不需要特別的去聲明一個變量的類型——它們雖然是類型安全的語言,卻可以動態地在上下文中幫你推斷變量的類型。
Python 不用你做什麼,寫一個名字就是默認聲明了一個變量;而 Swift,則更接近我們的題目,它也使用了 是 。
如果你有過 Swift 的使用經驗,再來使用 C#[……]
CentOS 上默認沒有安裝 PIP ,而且默認源里也沒有,所以我們需要先添加 epel 源:
1 |
yum -y install epel-release |
然後再安裝 PIP:
1 |
yum install python-pip |
[……]
之前我們有講過如何給網站開啟全站 SSL 現在我們就一起來看看如何在 vps 上給 Nginx 開啟 Let’s Encrypt 證書並且自動更新。
這篇文章中的內容較舊,關於 letsencrypt 的配置文章,我寫了一篇新的,或許你可以參考看看:letsencrypt 工具改名 certbot
首先,我們要準備一下安裝環境,這次我使用的是 CentOS 6.7[……]
前段時間我寫過一篇文章,說是時候使用白名單來翻牆了,不過那個白名單已經過期好久,用起來不是那麼順暢了,後來我就誇下海口說:我要自己實現一個爬蟲,來爬取中國的網站域名,好更新白名單。
好吧,總之這個爬蟲是寫好了然後上線爬取了一萬多的,不過最後我找到了前人做的更好的方案,於是這個爬蟲項目還是廢棄了。總之,白名單更強大了,只是沒有使用這個爬蟲而已。
爬蟲是用 Python 寫的,並沒有使用經[……]
最近室友在 Ubuntu的 上跑 MC,我幫著搭了一下,但由於包是他自己改過的,所以可能具體的運行過程並不通用,但總體環境配置還是比較通用的。
首先 MC 是跑在 java的 環境下的,為了讓它跑的更加順暢,我們還是要在 Ubuntu 上安裝甲骨文的 java 環境:
1 2 3 4 5 6 7 |
apt-get install python-software-properties add-apt-repository ppa:webupd8team/java apt-get update apt-get install oracle-java7-installer |
安裝好以後,可以使用這個命令來驗證你的 j[……]
在使用 Python 做網絡編程的時候難免會遇到字符串與字節流的轉換,這裡我們記錄以下幾種常用的方法:
首先是字節數組轉字符串,也就是str:
1 2 3 4 5 |
b = b'some byte array' str(b, encoding = "utf-8") #or bytes.decode(b) |
然後是字符串轉為字節數組:
1 2 3 4 5 |
s = 'some string' bytes(s, encoding = "utf8") #or str.encode(s) |
以上兩種方法不論哪種都是可以的。[……]
我在阿里雲搭建的自用 dnsmasq 服務器,用來做免污染的 DNS,最近由於公開了IP,果然就遭到了攻擊——其實是被用於 DNS 放大攻擊。
由於 dnsmasq 本身就沒有設計為對外提供 DNS 服務,所以它對於安全方面的配置文件不是很多(根本沒有!),但它的解析策略又很方便配置(比如中國DNS解析白名單等),所以我在原本的基礎上,再加了一個 Bind9 作為前端來做安全。[……]