Time of Update: 2018-07-21
恭喜你完成了自己的 C 語言編譯器,本章中我們發一發牢騷,說一說編寫編譯器值得注意的一些問題;編寫編譯器時遇到的一些難題。 本系列: 手把手教你做一個 C 語言編譯器(0):前言 手把手教你做一個 C 語言編譯器(1):設計 手把手教你做一個 C 語言編譯器(2):虛擬機器 手把手教你做一個 C 語言編譯器(3):詞法分析器 手把手教你做一個 C 語言編譯器(4):遞迴下降 手把手教你做一個 C
Time of Update: 2018-07-22
CTRL-Z和CTRL-C都是中斷命令,但是他們的作用卻不一樣. CTRL-C是強制中斷程式的執行, 而CTRL-Z的是將任務中斷,但是此任務並沒有結束,他仍然在進程中他只是維持掛起的狀態,使用者可以使用fg/bg操作繼續前台或背景任務,fg命令重新啟動前台被中斷的任務,bg命令把被中斷的任務放在後台執行. 例如: 當你vi一個檔案是,如果需要用shell執行別的操作,但是你又不打算關閉vi,因為你得
Time of Update: 2018-07-22
CTRL-Z和CTRL-C都是中斷命令,但是他們的作用卻不一樣. CTRL-C是強制中斷程式的執行, 而CTRL-Z的是將任務中斷,但是此任務並沒有結束,他仍然在進程中他只是維持掛起的狀態,使用者可以使用fg/bg操作繼續前台或背景任務,fg命令重新啟動前台被中斷的任務,bg命令把被中斷的任務放在後台執行. 例如: 當你vi一個檔案是,如果需要用shell執行別的操作,但是你又不打算關閉vi,因為你得
Time of Update: 2018-07-22
函數1:qsort函數 http://www.cnblogs.com/sooner/archive/2012/04/18/2455011.html No.1、手工實現QuickSort: 基本思想是:通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列。
Time of Update: 2018-07-22
服務端代碼: # include < stdio. h> # include < string . h> # include < sys/ socket . h> # include < netinet/ in. h> # define MAXDATASIZE 1024# define SERVERPORT 8000# define MAXCONN_NUM 10int main( ) {
Time of Update: 2018-07-22
今天終於邁出了自己LINUX下寫C的第一步,在VI下寫的程式,在GCC下面編譯連結的,VI的使用比較不方便,目前還不太習慣。 fei@fei-pc:~$ vi test.c fei@fei-pc:~$ vi test.c fei@fei-pc:~$ gcc -o test test.c test.c:9: error: ‘N’ undeclared here (not in a function) test.c: In function ‘main’: test.c:42:
Time of Update: 2018-07-22
進程簡單的說就是把一段代碼複製成多份,並讓他們同時執行。處理序間通訊是為了讓他們有序的運行 線程簡單的說就是讓多個函數同時執行,線程間通訊是為了讓他們有序的運行 編譯線程程式時會警告說線程函數找不到 pthread 庫不是 Linux 系統預設的庫,串連時需要使用靜態庫 libpthread.a,所以在使用pthread_create()建立線程,以及調用
Time of Update: 2018-07-22
下面先來一個執行個體來感受下linux下C語言多線程編程的樂趣。我們通過建立兩個線程來實現對一個數的遞加。先不去理會代碼的含義,我們先運行linux,在其中編寫我們的第一個C語言多線程程式。 #include <pthread.h>#include <stdio.h>#include <sys/time.h>#include <string.h>#define MAX 10pthread_t thread[2];pthread_mutex_t
Time of Update: 2018-07-22
Linux 下 C 開發—— gcc , gdb 的使用 作者: zccst 我們學習的過程應該是一個積累的過程,有無到有,又少到多,而不能像下山的猴子。 9 月份的時候是第一次系統學習 gcc, gdb, makefile (詳見前面部落格)。如今作為嵌入式系統的一個組成部分,決定重學一次,感覺理解加深了一些。 gcc 編譯器 前提編輯工具的使用: vi vim Emacs 等。 理論篇
Time of Update: 2018-07-22
一 般來說,段錯誤就是指訪問的記憶體超出了系統所給這個程式的記憶體空間,通常這個值是由gdtr來儲存的,他是一個48位的寄存器,其中的32位是儲存由它指 向的gdt表,後13位儲存相應於gdt的下標,最後3位包括了程式是否在記憶體中以及程式的在cpu中的運行層級,指向的gdt是由以64位為一個單位的 表,在這張表中就儲存著程式啟動並執行程式碼片段以及資料區段的起始地址以及與此相應的段限和頁面交換還有程式運行層級還有記憶體粒度等等的資訊。一旦一個程式發生了 越界訪問,cpu就會產生相應的異常保護,
Time of Update: 2018-07-22
一. 互斥鎖 儘管在Posix Thread中同樣可以使用IPC的訊號量機制來實現互斥鎖mutex功能,但顯然semphore的功能過於強大了,在Posix Thread中定義了另外一套專門用於線程同步的mutex函數。 1. 建立和銷毀 有兩種方法建立互斥鎖,靜態方式和動態方式。POSIX定義了一個宏PTHREAD_MUTEX_INITIALIZER來靜態初始化互斥鎖,方法如下: pthread_mutex_t
Time of Update: 2018-07-22
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 多線程和多進程還是有很多區別的。其中之一就是,多進程是linux核心本身所支援的,而多線程則需要相應的動態庫進行支援。對於進程而言,資料之間都是相互隔離的,而多線程則不同,不同的線程除了堆棧空間之外所有的資料都是共用的。說了這麼多,我們還是自己編寫一個多線程程式看看結果究竟是怎麼樣的。 #include
Time of Update: 2018-07-21
標籤:math.h 格式 als names game none else void 資料 1 // C++編程基礎 總練習.cpp: 定義控制台應用程式的進入點。 2 // 3 4
Time of Update: 2018-07-21
標籤:des put written pre ict rev you string dict The set of written test
Time of Update: 2018-07-21
標籤:風格 model1 函數 lse cli using array c++編程 mode 1 // 22-組合賦值運算子和關係運算子.cpp: 定義控制台應用程式的進入點。 2 // 3
Time of Update: 2018-07-21
標籤:錯誤 使用 編程 ace com 本質 文法 style get 1 // 13-字串基於string.cpp: 定義控制台應用程式的進入點。 2 // 3 4 #include
Time of Update: 2018-07-21
標籤:clu 容器 指標 連續 圖片 個數 演算法 通過 class 1、vector的動態增長 當添加元素時,如果vector空間大小不足,則會以原大小的兩倍另外配置一塊較大的新空間,然後將
Time of Update: 2018-07-21
標籤:climits 等於 應用程式 行修改 ret ring none cli amp 1 // 26-do while迴圈.cpp: 定義控制台應用程式的進入點。 2 // 3 4
Time of Update: 2018-07-21
標籤:upd name turn span command ret mes open() comm 1 private static string connString =
Time of Update: 2018-07-21
標籤:sre 索引 tpc bst system str rdf 檔案 oid using System;using System.Collections.Generic;using