原创 標準的make file 模板

一個make file的模板,通喫所有項目。隨時可以備用。 # define variable SUFFIX = process OUTPUT_PATH = ./output BUILD = debug OUTPUT_PATH = ./

原创 論程序員的懶

系統是部署在AWS上的大型分佈式系統。有的時候出問題找不到原因, 運維的兄弟特地部署了debug role. 這個debug role會把debug log 全部打開,這樣可以方便復現和查找問題。 但往往有些時候,即使開了debug ro

原创 [APUE]再讀之文件和目錄

本章討論了不帶緩存IO的各文件操作。 1. stat 函數族。 int stat(const char* pathname, struct stat* buf) int fstat(int fd, struct stat* buf)

原创 來看看C語言的-1>1並且小有1的問題

先看如下代碼: #include <stdio.h> //small to big, signed to unsigned int main() { unsigned int ui_one =1; signed in

原创 volatile變量的一個例子

volatile 用來告訴編譯器不用做優化。 非硬件的程序員碰到最多的例子是信號,和多線程環境中的情況。 下面的例子是信號的情況下,有volatile和沒有volatile的區別。 變量flag用於,當接收到SIGUSR1信號時候提醒進程

原创 數據結構與算法分析再讀之引論和算法分析

本章由兩個問題引開,並證明了一些算法基礎的數學公式。 1. 兩個問題 a. 求N個數中的前K個最大值問題。從全部排序法,到維持一個K個元素的數組方法,再到2叉堆法,一步一步說明算法重要性。 b. 字謎問題。 2. 數學公式 指數問題

原创 [APUE]UNIX 標準化

1. UNIX 的標準化 A N S I標準X 3 . 1 5 9 - 1 9 8 9, 被採用爲國際標準ISO/IEC 9899:1990。 該標準意圖時C具有可移植性,使其最大限度適用於各系統。 P O S I X是一個由I E E

原创 Java final以及static用法簡單demo

Java Final 修飾符 final 終結的,最終的。final 可以修飾類,方法和變量。 修飾類 final修飾類時表示類不可以被繼承,是最終類。 public final class FinalTest { } //err

原创 [APUE]再讀之 unix 基礎知識

1. 登錄 1.1 登錄名  unix 爲多用戶系統,登錄信息存儲在/etc/passwd中,包含登錄名,起始目錄,shell 1.2 shell. 常用的爲bash shell  1.3 文件和目錄  unix文件系統是目錄和文件的一

原创 [APUE]再讀之 標準IO庫

本章介紹標準IO庫 1. FILE對象 標準IO庫一切函數基於FILE對象。FILE對象包含了管理該流的所有信息: 文件描述符,指向流緩存的指針,緩存的長度,緩存的字節數以及出錯標識等 2. 標準輸入,標準輸出和標準出錯。 對應非標準

原创 c語言宏中的#和##

本文描述c語言中#和##的作用 #define f(a,b) a##b #define d(a) #a #define s(a) d(a) void main( void ) { puts(d(f(a,b)));

原创 [APUE] 再讀之進程關係

本章是最爲難懂,最爲晦澀的一章。主要講解進程組,session, 終端,作業之間關係和概念。 1. 終端登錄 終端登錄由init自舉fork getty進程,getty 調用類似execle("/usr/bin/login","log

原创 [APUE]再讀之進程間通信

本章主要介紹幾種進程間通信的方式。管道,FIFO(也叫命名管道), 消息隊列,信號量,共享存儲。 其他的不在本章內容中的進程間通信方式有:流管道,命令流管道(下章介紹),套接字,流(後兩種支持在不同主機間的進程通信)。 1. 管道 管道只

原创 [APUE] 再讀之進程控制

本章解釋了fork,exec函數族,exit,wait函數族,解釋器文件,system 函數,以及進程會計和進程時間等。 1. 進程標識。 unix環境進程0爲swapper調度進程,1 爲init系統自舉進程,2爲pagedaemon,

原创 Java NIO 隨筆(二)

Java NIO數據通道傳輸: RandomAccessFile fromFile = new RandomAccessFile("fromFile.txt", "rw"); FileChannel fromChannel =