原创 APUE學習筆記——第七章 進程環境

1、main函數 原型:int main(int argc, char *argv[])  其中argc是命令行參數的數目,argv是指向參數的各個指針構成的數組。 main函數的命令行參數代碼如下: #include <stdio.h>

原创 Splay Tree源碼

注:此代碼非本人所寫,實現方式爲自底向上,在做ACM題目時比教科書上的自頂向下在數據處理上要好操作。 由於個人現在比較鍾愛指針,所以從網上找了個指針實現的源碼,只是添加了點個人的理解註釋和一些其他操作。 http://dongxichen

原创 APUE學習筆記——第八章 進程控制

本章的重點內容比較多,fork函數,wait和waitpid函數,exec函數,system函數等。 1、進程標識符 #include <unistd.h> pid_t getpid(void);   //調用進程的進程ID pid

原创 基於RABC權限管理的後臺管理項目新權限的設計思想

說到權限很多人都會想到RBAC,ACL等等,這些方案都是十分成熟的權限管理方案,最早寫PHP用yii2框架的時候,就自帶了rbac權限管理,也對rbac比較熟悉,但今天想說的不僅僅侷限於路由權限。 RBAC權限管理 關於rbac權

原创 APUE學習筆記——第十二章 線程控制

本章學習控制線程行爲方面的詳細內容,在上章中對線程屬性和同步原語屬性都取其默認行爲,接下來將介紹同一進程中的多個線程之間如何保持數據的私有性,最後討

原创 APUE學習筆記——第十五章 進程間通信

進程間通信IPC(InterProcess Communication)是指能在兩個進程間進行數據交換的機制。 1、管道 管道是UNIX系統IPC的最古老形式,並且所有UNIX系統都提供此通信機制。管道有下面兩種侷限性: (1)歷史上,它

原创 Python 幾個常用的內建函數

#build-in functions ''' 1 list(iter) 將iter轉換爲list 2 tuple(iter) 將iter轉換爲tuple 3 enumerate(iter,start=0) 4 len(seq) 獲取s

原创 XSI IPC——System V消息隊列

System V消息隊列 1、key_t鍵和ftok函數 三種類型的System V IPC使用key_t值作爲它們的名字,頭文件<sys/type

原创 APUE學習筆記——第十六章 網絡IPC:套接字

1、套接字描述符 套接字是通信端點的抽象,與應用程序要使用文件描述符訪問文件一樣,訪問套接字也需要用套接字描述符,套接字描述符在UNIX系統是用文件

原创 APUE學習筆記——socket通信 阻塞IO

服務器端: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <error.h> #include <errno.h> #include <sys/so

原创 APUE學習筆記——第十章 信號

1、信號 信號是軟件中斷,很多比較重要的應用程序都需要處理信號,信號提供了一種處理異步事件的方法,例如:終端用戶鍵入中斷鍵,則會通過信號機制 停止一個程序。 每個信號都有一個名字,這些名字都是以SIG開頭,在頭文件<signal.h>中,

原创 APUE學習筆記——第十一章 線程

典型的UNIX進程可以看成只有一個控制線程:一個進程在同一時刻只能做一件事情。有了多個控制線程之後,在程序設計時可以把進程設計成在同一時刻能夠做不止一件事,每個線程處理各自獨立的任務。使用線程有很多好處: (1)、通過爲每種事件類型的處理

原创 APUE學習筆記—— 信號實現系統sleep和system函數,解決進程競爭實例

1、實現系統sleep函數 此函數使調用進程被掛起,直到滿足下列條件之一:(1)已經經過seconds所指定的牆上時鐘時間(2)調用進程捕捉到一個信號並從信號處理程序返回。 以下的可靠實現並沒有考慮到兩個alarm交互作用的情況 可靠實現

原创 Python Twisted學習總結

最近幾天丟下了之前學習的UNIX環境高級編程(APUE),開始重新學習Twisted,之前在中科院空間所參與的項目使用的是Twisted異步編程框架,當時對Twisted的理解不是很深刻,因此又重新學習一遍。 異步編程簡單的理解就是使用U

原创 RabbitMQ Python——Asynchronous publisher example

# -*- coding: utf-8 -*- import logging import pika import json LOG_FORMAT = ('%(levelname) -10s %(asctime)s %(name) -3