技術與技巧札記

Linux常用命令及技巧:

1cat /proc/version?查看當前內核的版本

? (2)? 掛載nfs文件夾:需要先確認在/etcexports文件,可以用于開發板掛載的文件夾

? ? ? ? mount -o nolock 10.0.22.30:/root/sharednfs /mnt

etcexports文件常見參數:

rw 可讀寫的權限?

ro 只讀的權限

no_root_squash ? NFS 客戶端分享目錄使用者的權限,即如果客戶端使用的是 root用戶,那么對于這個共享的目錄而言,該客戶端就具有 root的權限

sync 資料同步寫入到內存與硬盤當中?

async 資料會先暫存于內存當中,而非直接寫入硬盤

? (3) Vi命令行模式:set nu顯示行號

?? ? ? ? ? ? ? ? ? ? ? ? ? /搜索字符串

? (4) 強制刪除非空的目錄:rm -rf ./hello (強制刪除本地目錄下的hello及其子目錄)

5)在當前目錄及其子目錄中查找字符串:grep -rn "PROC_FS" ./*

./* : 表示路徑為當前目錄.

-r 是遞歸查找

-n 是顯示行號

? ? ? ?

? (6)建立文件的符號鏈接:ln -s ../hello.c ./hello1 ? ?上層目錄中的hello.c在本層目錄中建立符號鏈接hello1

7tar打包壓縮;tar解壓縮解包

? ? ? ? a. 當前目錄下所有文件打包用gzip壓縮: tar -czvf hello.tar.gz? ./*

? ? ? ? b. 當前目錄下的文件解包gzip解壓縮:tar -xzvf hello.tar.gz

? ? ? ? c. 當前目錄下所有文件打包用bzip2壓縮: tar -cjvf hello.tar.bz2? ./*

? ? ? ? d. 當前目錄下的文件解包bzip2解壓縮:tar -xjvf hello.tar.bz2

? (8)查看域名對應IP地址:nslookup www.ismartalarm.com

? (9)ifconfig eth0 down? ? 網卡down

?? ? ifconfig eth0 up ? ? ? 網卡up

?? ? ifconfig -a ? 查看當前機器中所有網絡,包括停止工作的網絡

?? ? ifconfig eth0 10.0.22.30 netmask 255.255.255.0

10)查看nfs服務是否啟用:service nfs status

? (11)查看nfs服務在各個啟動level下的啟用/禁用情況:chkconfig —list | grep ifs

?? ? ? 修改nfs服務在啟動level下的啟用:chkconfig —level 3 nfs on

? (12)查看服務的端口號: catetc/service

? (13) VI 移動到行開頭:0(數字0

? ? ? ? ? ? 移動到行尾:$

? ? ? ? ? ? 移動到文檔開頭:1(或輸入數字到某一行)

? ? ? ? ? ? 移動到文件尾部:G

? ? ? ? ? ? 復制行:yy? ?黏貼:p ?刪除:dd ?撤銷:u ?刪除字符:x

?14gccgdb查看版本:gcc -v

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? gdb -v

?? (15) linux gzip解壓包含符號鏈接文件的gzip壓縮包失敗:

?? ? ? ? Windows共享目錄, fat分區等是不支持linux的符號鏈接;?必須在ext3/4, btrfs等這些分區格式的目錄下解壓

?16touch命令創建文件

?? (17) arp -a 查看接入路由器的MAC

?18tail命令,從指定點開始將文件寫到標準輸出。使用tail命令的-f選項可以方便的查閱正在改變的日志文件,tail -f filename會把filename里最尾部的內容顯示在屏幕上,并且不但刷新,使你看到最新的文件內容。

?? (19) mkdir -p 選項允許你一次性創建多層次的目錄,而不是一次只創建單獨的目錄。如:mkdir -p /var/run

?20printk根據不同優先級的信息可以輸出到控制臺上、/var/log/messages里。其中,對輸出給控制臺的信息有一個特定的優先級 console_loglevel。若優先級小于這個整數值時,則消息才能顯示到控制臺上,否則,消息會顯示在/var/log/messages里。若不加任何優先級選項,則消息默認輸出到/var/log/messages文件中。

?21proc - process information pseudo-file system

? ? ? ? ? 進程信息虛擬文件系統,此目錄中的文件是關于你正在運行的進程詳細信息,如PID等信息。

22)顯示當前文件夾下所有文件的行數:cat*|wc -l

23)顯示當前文件夾下各個文件的行數:ls *|xargs wc -l


24)修改Uboot中的串口波特率:/Ubootinclude/configs/rt2880.h? ?

? ? ? ? ? CONFIG_BAUDRATE

? ? ? ? ? Uboot開機的打印位于:/Ubootlib_mips/board.c


25Vim操作快捷鍵:dd--剪切光標所在行?ndd?連續剪切多行)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? yy--復制光標所在行?nyy?連續復制多行)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? p--黏貼

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? x--刪除光標后面的一個字符

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? X--刪除光標前面的一個字符

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? u--撤銷上一個操作?ctrl+r?可撤銷u的修改)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .--重復上一個操作

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? v--進入可視模式;選中多行,y--進行復制;p--進行黏貼;d--進行刪除

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? G--跳轉到最后一行

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? nG--跳轉到第n

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? :%s/old/new/g ? ? 整個文件中的old替換為new


26!!可以執行上一個指令

27>以覆蓋的方式重定向輸出(>默認表示1>;還可以將標準錯誤輸出重定向為2>

?? ? ? ? >>以累加的方式重定向輸出(>>默認表示1>>;還可以將標準錯誤輸出重定向為2>>

?? ? ? ? <<<表示標準輸入重定向

(28) ubuntu12.04txt文件亂碼如何解決?

gsettings set org.gnome.gedit.preferences.encodings auto-detected "['UTF-8','GB18030','GB2312','GBK','BIG5','CURRENT','UTF-16’]"

(29)ubuntu terminal配色方案

文字顏色:#708284

背景顏色:#07242E

30)移除所有的.O文件

find? -name “*.o" | xargs rm




volatile關鍵字:

一般說來,volatile用在如下的幾個地方:

1、中斷服務程序中修改的供其它程序檢測的變量需要加volatile

2、多任務環境下各任務間共享的標志應該加volatile

3、存儲器映射的硬件寄存器通常也要加volatile說明,因為每次對它的讀寫都可能有不同意義;



特殊字符:

~ @ # $ ^ & * ( ) - + = [ ] { } ? | . ‘


?TJk@GJyM:AHAw2INr:e*mfGCPN:q4H+ALMm:jMZ6pTk6:+U[kruWB?



const意味著只讀

一個參數既可以是const還可以是volatile嗎?解釋為什么。

?一個指針可以是volatile嗎?解釋為什么。

?下面的函數有什么錯誤:

int square(volatile int *ptr)

{

return *ptr * *ptr;

}

下面是答案:

是的。一個例子是只讀的狀態寄存器。它是volatile因為它可能被意想不到地改變。它是const因為程序不應該試圖去修改它。

?是的。盡管這并不很常見。一個例子是當一個中服務子程序修該一個指向一個buffer的指針時。

?這段代碼有點變態。這段代碼的目的是用來返指針*ptr指向值的平方,但是,由于*ptr指向一個volatile型參數,編譯器將產生類似下面的代碼:

int square(volatile int *ptr)

{

int a,b;

a = *ptr;

b = *ptr;

return a * b;

}

由于*ptr的值可能被意想不到地該變,因此ab可能是不同的。結果,這段代碼可能返不是你所期望的平方值!正確的代碼如下:

long square(volatile int *ptr)

{

int a;

a = *ptr;

return a * a;

}



static關鍵字,意味著不要導出到程序外部


static void? ? /* "static" means don't export the symbol... */

myfunc2()

{

? ? myfunc3();

}



tar壓縮算法:

tar -zcvf /home/xahot.tar.gz /xahot

tar -zcvf 打包后生成的文件名全路徑要打包的目錄

例子:把/xahot文件夾打包后生成一個/home/xahot.tar.gz的文件。


幾種快速清空文件內容的方法:

  $ : > filename #其中的 :是一個占位符,不產生任何輸出.

  $ > filename

  $ echo “” > filename

  $ echo /dev/null > filename

  $ echo > filename

  $ cat /dev/null > filename




mount命令詳解

Baby 鏡像更新:

1.cp /tftpboot/root_uImage /root/sharednfs

2.telnet 登錄板子

3.mount 本地鏡像所在路徑到/mnt

mount -o nolock,rw 10.0.22.18:/root/sharednfs /mnt

4.cd mnt

?? cp? root_uImage /dev/mtdblock4

5.reboot


功能:加載指定的文件系統。?

語法:mount [-afFhnrvVw] [-L<標簽>] [-o<選項>] [-t<文件系統類型>] [設備名] [加載點]?

用法說明:mount可將指定設備中指定的文件系統加載到Linux目錄下(也就是裝載點)。可將經常使用的設備寫入文件/etc/fastab,以使系統在每次啟動時自動加載。mount加載設備的信息記錄在/etc/mtab文件中。使用umount命令卸載設備時,記錄將被清除。?

常用參數和選項:?

-a 加載文件/etc/fstab中設置的所有設備。?

-f 不實際加載設備。可與-v等參數同時使用以查看mount的執行過程。?

-F 需與-a參數同時使用。所有在/etc/fstab中設置的設備會被同時加載,可加快執行速度。?

-h 顯示在線幫助信息。?

-L<標簽>加載文件系統標簽為<標簽>的設備。?

-n 不將加載信息記錄在/etc/mtab文件中。?

-o<選項>指定加載文件系統時的選項。有些選項也可在/etc/fstab中使用。這些選項包括:?

async 以非同步的方式執行文件系統的輸入輸出動作。?

atime 每次存取都更新inode的存取時間,默認設置,取消選項為noatime?

auto 必須在/etc/fstab文件中指定此選項。執行-a參數時,會加載設置為auto的設備,取消選取為noauto?

defaults 使用默認的選項。默認選項為rwsuiddevexecanto nouserasync?

dev 可讀文件系統上的字符或塊設備,取消選項為nodev?

exec 可執行二進制文件,取消選項為noexec?

noatime 每次存取時不更新inode的存取時間。?

noauto 無法使用-a參數來加載。?

nodev 不讀文件系統上的字符或塊設備。?

noexec 無法執行二進制文件。?

nosuid 關閉set-user-identifier(設置用戶ID)set-group-identifer(設置組ID)設置位。?

nouser 使一位用戶無法執行加載操作,默認設置。?

remount 重新加載設備。通常用于改變設備的設置狀態。?

ro 以只讀模式加載。?

rw 以可讀寫模式加載。?

suid 啟動set-user-identifier(設置用戶ID)set-group-identifer(設置組ID)設置位,取消選項為nosuid?

sync 以同步方式執行文件系統的輸入輸出動作。?

user 可以讓一般用戶加載設備。?

??

-r 以只讀方式加載設備。?

-t<文件系統類型>指定設備的文件系統類型。常用的選項說明有:?

minix Linux最早使用的文件系統。?

ext2 Linux目前的常用文件系統。?

msdos MS-DOS FAT?

vfat Win85/98 VFAT?

nfs 網絡文件系統。?

iso9660 CD-ROM光盤的標準文件系統。?

ntfs Windows NT的文件系統。?

hpfs OS/2文件系統。Windows NT 3.51之前版本的文件系統。?

auto 自動檢測文件系統。?

-v 執行時顯示詳細的信息。?

-V 顯示版本信息。?

-w 以可讀寫模式加載設備,默認設置。




mount jffs2 文件系統系統錯誤解決辦法?

分類: Linux2012-09-11 17:37 930人閱讀 評論(0) 收藏 舉報

flashblog

最近在板上mount jffs2時老是出錯,困擾了好像。主要是提示如下錯誤:

Child dir "upf" (ino #26) of dir ino #3 appears to be a hard link
Child dir "param" (ino #21) of dir ino #3 appears to be a hard link

.........................
Child dir "app" (ino #62) of dir ino #6 appears to be a hard link

一堆的這樣問題。搞的頭大。

想不出為什么!!

沒辦法G之。偶然找到一個blog說是flash沒有擦除。fuck earse ,tftp下載,果然正常。

該文主要內容如下:

1.判斷是不是jffs2文件。用UE打開,在前面應該是0x85,0x19 ,如果不是,則是大小端的問題。請在mkfs.jffs2命令上加入-l或者-b

2.如果出現以下錯誤,則是文件系統被覆蓋了。


3.出現以下錯誤。是因為flash不夠干靜。erase

Child dir "upf" (ino #26) of dir ino #3 appears to be a hard link
Child dir "param" (ino #21) of dir ino #3 appears to be a hard link

4.出現以下錯誤。是Flash空間不夠

jffs2_read_dnode() asked for 4096 bytes at 114688 from 3241-byte node
jffs2_read_dnode() asked for 4096 bytes at 118784 from 3241-byte node

順便帶上jffs2的命令格式:

/mkfs.jffs2 -d ./jffs2 -l? -e 0x20000 -o jffs2.img

原文地地址:http://blog.csdn.net/plaris060504/article/details/6031576






glibc libc?


glibc libc 都是 Linux 下的 C函數庫。?

libc Linux 下的 ANSI C 函數庫;glibc Linux下的 GUN C函數庫。?


ANSI C GNU C有什么區別呢??


?? ? ? ANSI C 函數庫是基本的 C語言函數庫,包含了 C語言最基本的庫函數。這個庫可以根據頭文件劃分為 15個部分,其中包括:?

  1. <ctype.h>:包含用來測試某個特征字符的函數的函數原型,以及用來轉換大小寫字母的函數原型;
  2. <errno.h>:定義用來報告錯誤條件的宏;
  3. <float.h>:包含系統的浮點數大小限制;
  4. <math.h>:包含數學庫函數的函數原型;
  5. <stddef.h>:包含執行某些計算 C所用的常見的函數定義;
  6. <stdio.h>:包含標準輸入輸出庫函數的函數原型,以及他們所用的信息;
  7. <stdlib.h>:包含數字轉換到文本,以及文本轉換到數字的函數原型,還有內存分配、隨機數字以及其他實用函數的函數原型;
  8. <string.h>:包含字符串處理函數的函數原型;
  9. <time.h>:包含時間和日期操作的函數原型和類型;
  10. <stdarg.h>:包含函數原型和宏,用于處理未知數值和類型的函數的參數列表;
  11. <signal.h>:包含函數原型和宏,用于處理程序執行期間可能出現的各種條件;
  12. <setjmp.h>:包含可以繞過一般函數調用并返回序列的函數的原型,即非局部跳轉;
  13. <locale.h>:包含函數原型和其他信息,使程序可以針對所運行的地區進行修改。
  14. 地區的表示方法可以使計算機系統處理不同的數據表達約定,如全世界的日期、時間、美元數和大數字;
  15. <assert.h>:包含宏和信息,用于進行診斷,幫助程序調試。

上述庫函數在其各種支持 C 語言的 IDE中都是有的。?


?? ? ? GNU C 函數庫是一種類似于第三方插件的東西。由于 Linux是用 C語言寫的,所以 Linux的一些操作是用 C語言實現的,因此,GUN組織開發了一個 C語言的庫以便讓我們更好的利用 C語言開發基于 Linux 操作系統的程序。不過現在的不同的 Linux的發行版本對這兩個函數庫有不同的處理方法,有的可能已經集成在同一個庫里了。?

查看當前系統的 glibc 版本的方法:?

(1)/lib/libc.so.6

(2)ldd - -version


? ? ? 錯誤觀點glib前面有個 "g",所以認為 glib GNU的東東;同時認為 glibc glib的一個子集。?

? ? ? 其實,glib glibc基本上沒有太大聯系,可能唯一的共同點就是,其都是 C編程需要調用的庫而已。?

glib Gtk+ 庫和 Gnome 的基礎。glib可以在多個平臺下使用,比如 LinuxUnixWindows等。glib為許多標準的、常用的 C 語言結構提供了相應的替代物。?


libc 實際上是一個泛指。凡是符合實現了 C標準規定的內容,都是一種 libc

glibc GNU 組織對 libc 的一種實現。它是 unix/linux的根基之一。

微軟也有自己的 libc 實現,叫 msvcrt

嵌入式行業里還常用 uClibc ,是一個迷你版的 libc


ld-uClibc-0.9.28uclibc下進行動態庫連接的連接器


uclibc

計算術語中,uClibc是一個面向嵌入式Linux系統的小型的C標準庫。最初uClibc是為了支持uClinux而開發,這是一個不需要內存管理單元Linux版本,因此適合于單片機系統(uCs;此處"u"是代表"micro"μ羅馬化)

uClibc 是一個小型的 C庫,應用于嵌入式 Linux系統開發。它基本實現了 glibc的功能,幾乎所有 glibc支持的應用程序都能在 uClibc上運行,這使得應用程序的移植變得相當簡單,只需要使用 uClibc庫重新編譯源代碼就可以了。目前 uClibc主要運行在不帶 MMU的平臺下,支持 alpha, ARM, i386, i960, h8300, m68k, mips/mipsel, PowerPC, SH, SPARC等等。






uclibcglibc的差別

uClibcGlibc并不相同,兩者有許多不同之處,而且以下不同有可能給你帶來一些問題。


1. uClibcGlibc小,雖然uClibcGlibc在已有的接口上是兼容的,而且采用uClibc編譯應用程序比采用Glibc編譯應用程序要更方便,但是uClibc并沒有包括Glibc中的所有接口實現,因此有些應用可能在uClibc中不能編譯。

2. uClibc在可配置性上比glibc要好。

3. uClibc并不能保證發布的庫二進制兼容舊版本uClibc庫。當一個新的版本uClibc庫被發布,則可能需要也可能不需要重新編譯應用程序。

4. Glibc中調用malloc(0),將返回一個有效的指針,然而在uClibc中調用malloc(0),則返回NULL指針。根據在SuSv3中關于malloc(0)的行為的定義,兩個庫的實現都是正確的。對于調用relloc(NULL,0),兩個庫的實現也不同。個人感覺Glibc的如此實現不是特別安全。Glibcmalloc的實現可以通過MALLOC_CHECK_環境變量調節。這個方法主要用于malloc調試。這些擴展的malloc調試特性在uClibc中是不可用的。在Linux上有許多有些的malloc調試功能的庫(如:dmalloc,electric fence,valgrind)Glibc中的擴展的malloc調試功能更好用。因此uClibc中去掉這些功能特性并不會有多大損失。


5. uClibc沒有提供用于數據接口的庫(libdb)

6. uClibc不支持NSS(/lib/libnss_*),在這方面Glibc更容易支持不同方式的認證和DNS解析。uClibc僅僅支持采用flat口令文件或者shadow口令文件存儲授權信息。如果需要比這些更復雜的的授權,可以編譯安裝pam

7. uClibc中的libresolv庫僅僅是一個樁。Glibclibresolv庫中的部分并不是全部的功能uClibc都提供,許多函數都沒有實現。

8.提供網絡信息服務支持(NIS)libnsl(最初被稱為黃頁YP),被SUN擴展為發明為RPC并用于網絡共享Unix口令文件。個人認為NIS是一個令人厭惡的東西并應該使用。因此,在實現相同的功能情況下采用ldapNIS更有效。uClibc雖然提供一個樁libnsl,但并不支持NIS。我們因此也不提供在Glibc下提供的位于/usr/include/rpcsvc里的頭文件。

9. uClibc的區域支持并不是100%的完全。正在這方面努力?

10. uClibc的數據功能函數庫內部僅僅支持long double,設置對于long double的支持也是非常有限。與此對應的只實現了較少的數學函數。如果應用程序采用double類型,則會程序會運行得較好。

11. uClibclibcrpt庫不支持可重入crypt_r,setkey_rencrypt_r,因為這些也不是SuSv3所規定的。

12. uClibc直接采用內核的數據類型去定義大多數透明的數據類型。

13. uClibc支持采用linux內核結構特有的結構體"struct stat"

14. uClibc的運行時庫librt當前缺少aio接口、全部的時鐘接口和共享內存接口(僅僅實現定時器接口和消息隊列接口)





MIPS架構的交叉編譯工具問題



某些MIPS架構的機頂盒提供了六種交叉編譯工具GCC,如下:
· mipsel-linux-gcc
· mipsel-linux-uclibc-gcc
· mipsel-uclibc-gcc
· mips-linux-gcc
· mips-linux-uclibc-gcc
· mips-uclibc-gcc

這六種有什么區別?分別用于什么情況呢?

1)首先,mipsmipsel的主要區別在于Big Endian(大端)和Little Endian(小端)結構。
mips對應的是Big Endian
mipsel對應的是Little Endian

2)其次,要明白uclibc庫。
uclibc庫是面向嵌入式Linux系統開發優化的C語言庫。比GNU C Library更小,但接口兼容,且更易于配置。
uclibc可運行于標準的以及無MMULinux系統之上,支持i386x86x64ARMAVR32BlackfinH8300M68KMIPSPowerPCSuperHSPARCV850等處理器下列。
mips-uclibc-gcc表示采用uclibc庫進行編譯的GCC

3)至于第三點是否帶linux的區別則不清楚,以后再補充吧




預定義__GNUC__

? ? 1 __GNUC__ gcc編譯器編譯代碼時預定義的一個宏。需要針對gcc編寫代碼時,可以使用該宏進行條件編譯。

? ? 2 __GNUC__ 的值表示gcc的版本。需要針對gcc特定版本編寫代碼時,也可以使用該宏進行條件編譯。

? ? 3 __GNUC__ 的類型是“int”,該宏被擴展后,得到的是整數字面值。可以通過僅預處理,查看宏擴展后的文本。

示例:

  #include <assert.h>

  #include <stdio.h>

  #include <typeinfo>
  #ifndef __GNUC__

    #error sample for gcc compiler

  #else

    /* use gcc special extension: #warning , __attribute__, etc.? */

  #endif

  int main()?

  { ? ?

    printf("hello gcc %d\n",__GNUC__); ? ?

    assert( typeid(__GNUC__)==typeid(int) ); ? ?

    printf("press Enter to exit\n"); ? ?

    (void)getchar();

  }





函數名: getenv

:從環境中取字符串,獲取環境變量的值

頭文件:stdlib.h

:char *getenv(char *envvar);

函數說明:getenv()用來取得參數envvar環境變量的內容。參數envvar環境變量的名稱,如果該變量存在則會返回指向該內容的指針環境變量的格式為envvar=valuegetenv函數的返回值存儲在一個全局二維數組里,當你再次使用getenv函數時不用擔心會覆蓋上次的調用結果。

返回值:執行成功則返回指向該內容的指針,找不到符合的環境變量名稱則返回NULL。如果變量存在但無關聯值,它將運行成功并返回一個空字符串,即該字符的第一個字節是null

相關函數:_wgetenvgetenv_s_wgetenv_s




git取消修改,恢復版本命令大全

分類: git2014-01-15 15:41 5847人閱讀評論(2)收藏 舉報

#取消對文件的修改。還原到最近的版本,廢棄本地做的修改。

git checkout -- <file>


#取消已經暫存的文件。即,撤銷先前"git add"的操作

git reset HEAD <file>...


#修改最后一次提交。用于修改上一次的提交信息,或漏提交文件等情況。

git commit --amend


#回退所有內容到上一個版本

git reset HEAD^


#回退a.py這個文件的版本到上一個版本 ?

git reset HEAD^ a.py ?


#向前回退到第3個版本 ?

git reset –soft HEAD~3 ?


#將本地的狀態回退到和遠程的一樣 ?

git reset –hard origin/master ?


#回退到某個版本 ?

git reset 057d ?


#回退到上一次提交的狀態,按照某一次的commit完全反向的進行一次commit.(代碼回滾到上個版本,并提交git)

git revert HEAD


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/383329.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383329.shtml
英文地址,請注明出處:http://en.pswp.cn/news/383329.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c++中new的總結(動態管理,malloc存在的問題,malloc與new的區別)

c中使用malloc出現的問題 程序員必須確定對象的長度malloc 返回一個&#xff08;void *&#xff09;指針 &#xff0c;c不允許將&#xff08;void*) 賦值給其它指針&#xff0c;必須強轉malloc可能申請內存失敗&#xff0c;所以必須判斷返回值來保存內存分配成功用戶在使用對象…

Linux中變量#,@,0,1,2,*,$$,$?的含義

$# 是傳給腳本的參數個數 $0 是腳本本身的名字 $1 是傳遞給該shell腳本的第一個參數 $2 是傳遞給該shell腳本的第二個參數 $ 是傳給腳本的所有參數的列表 $* 是以一個單字符串顯示所有向腳本傳遞的參數&#xff0c;與位置變量不同&#xff0c;參數可超過9個 $$ 是腳本運行的當前…

Volatile的陷阱

最近寫的關于在嵌入式開發中常遇到的關于volatile關鍵字使用的短文&#xff0c;都是些通用的技術&#xff0c;貼上來share。 對于volatile關鍵字&#xff0c;大部分的C語言教材都是一筆帶過&#xff0c;并沒有做太過深入的分析&#xff0c;所以這里簡單整理了一些關于volatile的…

c++中靜態成員變量和靜態成員函數

靜態成員變量 在一個類中&#xff0c;若將一個成員變量聲明為static,這種成員成為靜態成員變量&#xff0c;與一般的數據成員不同&#xff0c;無論建立了多少個對象&#xff0c;都只想有一個靜態數據的拷貝&#xff0c;靜態成員變量&#xff0c;屬于某個類&#xff0c;所有對象…

單列模式(餓漢)

單例模式案例 目的&#xff1a;為了讓類中只有一個實例&#xff0c;實例不需要自己釋放將 默認構造 和 拷貝構造 私有化內部維護一個 對象的指針私有化唯一指針對外提供getinstance方法來訪問這個指針保證類中只能實例化唯一 一個對象 主席案例 #include<iostream>usin…

Makefile札記

Makefile中: ? 的區別 在Makefile中我們經常看到 : ? 這幾個賦值運算符&#xff0c;那么他們有什么區別呢&#xff1f;我們來做個簡單的實驗 新建一個Makefile&#xff0c;內容為&#xff1a; ifdef DEFINE_VRE VRE “Hello World!” else endif ifeq ($(OPT),define) VRE…

c++中this指針基本概念和使用

class Person { public:int m_A;//非靜態成員變量&#xff0c;屬于對象上void func(/*Person * this*/){}; //非靜態成員函數 不屬于對象身上static int m_B;//靜態成員函數&#xff0c;不屬于對象上static void fun2(){};//靜態成員函數 &#xff0c;不屬于對象身上//double …

通用Makefile實現

Makefile是Linux下程序開發的自動化編譯工具&#xff0c;一個好的Makefile應該準確的識別編譯目標與源文件的依賴關系&#xff0c;并且有著高效的編譯效率&#xff0c;即每次重新make時只需要處理那些修改過的文件即可。Makefile擁有很多復雜的功能&#xff0c;這里不可能也沒必…

c++中空指針訪問成員函數

如果成員函數沒有用到this &#xff0c;那么空指針可以直接訪問 如果成員函數用到this 指針&#xff0c;就要注意&#xff0c;要判斷是否為空&#xff0c;防止程序崩潰 #include<iostream>using namespace std;class Person{public:void show(){//沒有 用到this指針&am…

從0開始python學習-35.allure報告企業定制

目錄 1. 搭建allure環境 2. 生成報告 3. logo定制 4. 企業級報告內容或層級定制 5. allure局域網查看 1. 搭建allure環境 1.1 JDK&#xff0c;使用PyCharm 找到pycharm安裝目錄找到java.exe記下jbr目錄的完整路徑&#xff0c;eg: C:\Program Files\JetBrains\PyCharm Com…

grep 常用命令

這個--include選項,可以這樣使用: grep -rn --include*.c --include*.h re . 可以指定多次, 如果真是上面的這種情況, 其實可以用 grep -rn --include*.[ch] re . 但是, 如果源文件中含有C源代碼,上面的方法就不湊效了, 因為[]中只能放一個字符. grep -rn --include*.{cp…

c++中友元函數詳解

友元 友元分為&#xff1a;友元函數和友元類 友元提供了一種突破封裝的方式&#xff0c;有時提供了便利。但是友元會增加耦合度&#xff0c;破壞了封裝&#xff0c;所以友元不宜多 用。 全局函數做友元函數 全局函數寫到類中做聲明 并且最前面寫關鍵字 friend 友元函數可訪問…

Linux時間函數札記

關于gmtime、gmtime_r、localtime、localtime_r 測試環境&#xff1a;vmware 7 Redhat5.5&#xff0c;系統時間使用UTC&#xff0c;時區為上海。 1、函數功能介紹 使用man gmtime或man localtime都可以的得到這幾個函數的介紹。原型如下&#xff1a; struct tm *gmtime(const …

c++實現順序表的相關操作

Myarray.h文件 #pragma once#include<iostream>using namespace std;class MyArray { public:MyArray();//默認構造 默認100容量MyArray(int capacity);MyArray(const MyArray& array);~MyArray();//尾插法void Push_Back(int val);//根據索引獲取值int getData(int…

系統架構札記

什么是高內聚、低耦合&#xff1f; 起因&#xff1a;模塊獨立性指每個模塊只完成系統要求的獨立子功能&#xff0c;并且與其他模塊的聯系最少且接口簡單&#xff0c;兩個定性的度量標準――耦合性和內聚性。 耦合性也稱塊間聯系。指軟件系統結構中各模塊間相互聯系緊密程度的一…

c++中運算符重載(加號運算,左移運算,前置后置++運算符,賦值運算,關系運算,函數運算)

運算符重載注意 重載的運算符要易讀內置的數據類型的表達式的運算符是不可以改變的不要重載&& 和 | | 運算符&#xff0c;[]和->運算符只能通過成員函數進行重載<<和>>只能通過全局函數配合友元函數進行重載 加號運算符重載 如果想讓自定義數據類型 進…

linux fstab解讀

fstab這個文件挺有用的。 從左到右&#xff1a; /dev/device mount-point type rules dump fsck 1. /dev/device: 不用說了吧&#xff1f;例如&#xff0c;/dev/hda1為M$-Win9x下的c:盤。 2. mount-point: 掛載點。例如&#xff0c;把/dev/hda1掛到/mnt/mywinc下。 3. type: ex…

c++實現字符串類的封裝

MyString.h文件 #define _CRT_SECURE_NO_WARNINGS#pragma once#include<iostream>#include<string>using namespace std;class MyString{friend ostream & operator<<(ostream & cout, MyString & str);friend istream & operator>>(…

c++中的繼承--1(引出,繼承方式,繼承的對象模型)

繼承的引出 概念&#xff1a; 繼承(inheritance)機制是面向對象程序設計使代碼可以復用的最重要的手段&#xff0c;它允許程序員在保持原有類特 性的基礎上進行擴展&#xff0c;增加功能&#xff0c;這樣產生新的類&#xff0c;稱派生類。繼承呈現了面向對象程序設計的層次結構…

Makefile經典教程(掌握這些足夠)

makefile很重要 什么是makefile&#xff1f;或許很多Winodws的程序員都不知道這個東西&#xff0c;因為那些Windows的IDE都為你做了這個工作&#xff0c;但我覺得要作一個好的和professional的程序員&#xff0c;makefile還是要懂。這就好像現在有這么多的HTML的編輯器&#xf…