技术与技巧札记

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.mzph.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…