原创 Namespaces in operation, part 4: more on PID namespaces

在本文中,我們將繼續上週關於 PID 命名空間的討論(並擴展我們正在進行的關於命名空間的系列文章)。PID 命名空間的一個用途是實現一個進程包(容器),其行爲類似於一個自包含的 Linux系統。init 進程是傳統系統和 PID

原创 Node.js --- async/await

基本原理 async / await 本質上是 generator 的語法糖,與 generator 相比,多了以下幾個特性: 內置執行器,無需手動執行 next() 方法 await 後面的函數可以是 promise 對象也可

原创 不用 80 端口更新 SSL 證書

更新 SSL 證書時出現如下問題: $ certbot renew --dry-run ... Attempting to renew cert (banana-6lfueg4a.pai.tcloudbase.com) from

原创 python --- 線程不適合計算密集型的例子

多個線程幹同一件事 VS 一個線程幹一件事 2 個線程算 2 個斐波那契 VS 1 個線程算 2 個斐波那契,沒想到居然後者更快一些,原來 python 中的線程不適合計算密集型。 原因:https://www.dabeaz.co

原创 Namespaces in operation, part 7: Network namespaces

自從上次我們研究 Linux 命名空間以來已經有一段時間了。我們的系列缺少了一篇,現在補上:網絡命名空間。顧名思義,網絡命名空間將網絡設備、地址、端口、路由、防火牆規則等的使用劃分在不同的盒子,基本上是在一個單獨運行的內核實例中虛

原创 Mount namespaces, mount propagation, and unbindable mounts

在上一期命名空間系列的文章中,我們研究了掛載命名空間和共享子樹的基本概念,包括掛載傳播類型和對等組的概念。在這篇文章中,我們提供了各種傳播類型操作的一些實際演示:MS_SHARED,MS_PRIVATE,MS_SLAVE 和 MS

原创 python 進程與線程的交互

#!/usr/bin/env python # -*- coding: utf-8 -*- import time import datetime from multiprocessing import Process, Man

原创 python 進程交互:Queue

#!/usr/bin/env python # -*- coding: utf-8 -*- import time import datetime import multiprocessing from multiprocess

原创 Namespaces in operation, part 5: User namespaces

繼續我們的命名空間系列文章,本文看一下用戶命名空間,大部分實現於 Linux 3.8。(剩餘的工作是 XFS 和其它文件系統中的一些改動;後者合併於 3.9)。用戶命名空間與用戶和組 ID 相映射。這意味着一個進程在某個用戶命名空

原创 Namespaces in operation, part 2: the namespaces API

命名空間將全局系統資源包裝在一個抽象中,使得命名空間中的進程認爲它們擁有獨立的資源實例。命名空間可用於多種目的,最重要的是實現容器,一種輕量級虛擬化技術。本系列的第二篇文章將看一下命名空間的一些細節和 API。本系列中的第一篇文章

原创 python 中 queue 高效的原因

queue 高效的原因:底層使用了 dequeue dequeue: [1] C 編寫 [2] dequeu 的 append 和 popleft 方法的時間複雜度均爲 O(1) [3] 完全避免了 realloc(),當空間不夠

原创 編譯原理之美 --- 03 | 語法分析(一):純手工打造公式計算器

語法分析:生成 AST(Abstract Syntax Tree, 抽象語法樹)。 可通過遞歸下降算法生成 AST,然後遍歷 AST 進行求值。 上下文無關文法允許遞歸,而正則不允許,正則是上下文無關文法的一個子集。 simple

原创 編譯原理之美 --- 04 | 語法分析(二):解決二元表達式中的難點

核心 循環代替左遞歸。 代碼 以前: ''' 語法解析:加法表達式 ''' def additive(self, tokens): child1 = self.multiplicative

原创 centos 開啓防火牆端口

查看防火牆狀態: firewall-cmd --state 查看所有打開的端口: firewall-cmd--zone=public --list-ports 添加端口: firewall-cmd --zone=public

原创 react --- 父子組件間通信

父組件將數據或函數傳給子組件的 props,以改變子組件。 子組件通過調用 props 中的回調函數改變父組件的狀態。需要注意的是,父子組件不要漏掉 bind,否則會報錯 this.setState is undefined 父組