Linux_linux常用工具---闲杂篇(除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点.)

vim自行查找资料, 自行配置插件.

借鉴别人的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
" 显示相关
“”""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"set shortmess=atI " 启动的时候不显示那个援助乌干达儿童的提示
"winpos 5 5 " 设定窗口位置
"set lines=40 columns=155 " 设定窗口大小
"set nu " 显示行号
set go= " 不要图形按钮
"color asmanian2 " 设置背景主题
set guifont=Courier_New:h10:cANSI " 设置字体
"syntax on " 语法高亮
autocmd InsertLeave * se nocul " 用浅色高亮当前行
autocmd InsertEnter * se cul " 用浅色高亮当前行
"set ruler " 显示标尺
set showcmd " 输入的命令显示出来,看的清楚些
"set cmdheight=1 " 命令行(在状态行下)的高度,设置为1
“set whichwrap+=<,>,h,l " 允许backspace和光标键跨越行边界(不建议)
“set scrolloff=3 " 光标移动到buffer的顶部和底部时保持3行距离
set novisualbell " 不要闪烁(不明白)
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(”%d/%m/%y\ -\ %H:%M”)} "状态行显示的内容
set laststatus=1 " 启动显示状态行(1),总是显示状态行(2)
set foldenable " 允许折叠
set foldmethod=manual " 手动折叠
"set background=dark "背景使用黑色
set nocompatible "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限

" 显示中文帮助  
if version >= 603  set helplang=cn  set encoding=utf-8  
endif  " 设置配色方案  
"colorscheme murphy  "字体   
"if (has("gui_running"))   
"   set guifont=Bitstream\ Vera\ Sans\ Mono\ 10   
"endif   set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936  
set termencoding=utf-8  
set encoding=utf-8  
set fileencodings=ucs-bom,utf-8,cp936  
set fileencoding=utf-8  """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
"""""新文件标题""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
"新建.c,.h,.sh,.java文件,自动插入文件头   
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"   
""定义函数SetTitle,自动插入文件头   
func SetTitle()   "如果文件类型为.sh文件   if &filetype == 'sh'   call setline(1,"\#########################################################################")   call append(line("."), "\# File Name: ".expand("%"))   call append(line(".")+1, "\# Author: ma6174")   call append(line(".")+2, "\# mail: ma6174@163.com")   call append(line(".")+3, "\# Created Time: ".strftime("%c"))   call append(line(".")+4, "\#########################################################################")   call append(line(".")+5, "\#!/bin/bash")   call append(line(".")+6, "")   else   call setline(1, "/*************************************************************************")   call append(line("."), "    > File Name: ".expand("%"))   call append(line(".")+1, "    > Author: ma6174")   call append(line(".")+2, "    > Mail: ma6174@163.com ")   call append(line(".")+3, "    > Created Time: ".strftime("%c"))   call append(line(".")+4, " ************************************************************************/")   call append(line(".")+5, "")  endif  if &filetype == 'cpp'  call append(line(".")+6, "#include<iostream>")  call append(line(".")+7, "using namespace std;")  call append(line(".")+8, "")  endif  if &filetype == 'c'  call append(line(".")+6, "#include<stdio.h>")  call append(line(".")+7, "")  endif  "新建文件后,自动定位到文件末尾  autocmd BufNewFile * normal G  
endfunc   """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
"键盘命令  
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
nmap <leader>w :w!<cr>  
nmap <leader>f :find<cr>  
" 映射全选+复制 ctrl+a  
map <C-A> ggVGY  
map! <C-A> <Esc>ggVGY  
map <F12> gg=G  
" 选中状态下 Ctrl+c 复制  
vmap <C-c> "+y  "去空行    
nnoremap <F2> :g/^\s*$/d<CR>   "比较文件    
nnoremap <C-F2> :vert diffsplit   "新建标签    
map <M-F2> :tabnew<CR>    "列出当前目录文件    
map <F3> :tabnew .<CR>    "打开树状文件目录    
map <C-F3> \be    
"C,C++ 按F5编译运行  
map <F5> :call CompileRunGcc()<CR>  
func! CompileRunGcc()  exec "w"  if &filetype == 'c'  exec "!g++ % -o %<"  exec "! ./%<"  elseif &filetype == 'cpp'  exec "!g++ % -o %<"  exec "! ./%<"  elseif &filetype == 'java'   exec "!javac %"   exec "!java %<"  elseif &filetype == 'sh'  :!./%  endif  
endfunc  "C,C++的调试  
map <F8> :call Rungdb()<CR>  
func! Rungdb()  exec "w"  exec "!g++ % -g -o %<"  exec "!gdb ./%<"  
endfunc  """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
""实用设置  
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  " 设置当文件被改动时自动载入  
set autoread  
" quickfix模式  
autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>  "代码补全   
set completeopt=preview,menu   "允许插件    
filetype plugin on  "共享剪贴板    
set clipboard+=unnamed   "从不备份    
set nobackup  "make 运行  
:set makeprg=g++\ -Wall\ \ %  "自动保存  set autowrite  
set ruler                   " 打开状态栏标尺  
set cursorline              " 突出显示当前行  
set magic                   " 设置魔术  
set guioptions-=T           " 隐藏工具栏  
set guioptions-=m           " 隐藏菜单栏  
"set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\  " 设置在状态行显示的信息  
set foldcolumn=0  
set foldmethod=indent   
set foldlevel=3   
set foldenable              " 开始折叠  " 不要使用vi的键盘模式,而是vim自己的  
set nocompatible  " 语法高亮  
set syntax=on  " 去掉输入错误的提示声音  
set noeb  " 在处理未保存或只读文件的时候,弹出确认  
set confirm  " 自动缩进  
set autoindent  
set cindent  " Tab键的宽度  
set tabstop=4  " 统一缩进为4  
set softtabstop=4  
set shiftwidth=4  " 不要用空格代替制表符  
set noexpandtab  " 在行和段开始处使用制表符  
set smarttab  " 显示行号  
set number  " 历史记录数  
set history=1000  "禁止生成临时文件  
set nobackup  
set noswapfile  "搜索忽略大小写  
set ignorecase  "搜索逐字符高亮  
set hlsearch  
set incsearch  "行内替换  
set gdefault  "编码设置  
set enc=utf-8  
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936  "语言设置  
set langmenu=zh_CN.UTF-8  
set helplang=cn  " 我的状态行显示的内容(包括文件类型和解码)  
"set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}  
"set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]  " 总是显示状态行  
set laststatus=2  " 命令行(在状态行下)的高度,默认为1,这里是2  
set cmdheight=2  " 侦测文件类型  
filetype on  " 载入文件类型插件  
filetype plugin on  " 为特定文件类型载入相关缩进文件  
filetype indent on  " 保存全局变量  
set viminfo+=!  " 带有如下符号的单词不要被换行分割  
set iskeyword+=_,$,@,%,#,-  " 字符间插入的像素行数目  
set linespace=0  " 增强模式中的命令行自动完成操作  
set wildmenu  " 使回格键(backspace)正常处理indent, eol, start等  
set backspace=2  " 允许backspace和光标键跨越行边界  
set whichwrap+=<,>,h,l  " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)  
set mouse=a  
set selection=exclusive  
set selectmode=mouse,key  " 通过使用: commands命令,告诉我们文件的哪一行被改变过  
set report=0  " 在被分割的窗口间显示空白,便于阅读  
set fillchars=vert:\ ,stl:\ ,stlnc:\  " 高亮显示匹配的括号  
set showmatch  " 匹配括号高亮的时间(单位是十分之一秒)  
set matchtime=1  " 光标移动到buffer的顶部和底部时保持3行距离  
set scrolloff=3  " 为C程序提供自动缩进  
set smartindent  " 高亮显示普通txt文件(需要txt.vim脚本)  
au BufRead,BufNewFile *  setfiletype txt  "自动补全  
:inoremap ( ()<ESC>i  
:inoremap ) <c-r>=ClosePair(')')<CR>  
:inoremap { {<CR>}<ESC>O  
:inoremap } <c-r>=ClosePair('}')<CR>  
:inoremap [ []<ESC>i  
:inoremap ] <c-r>=ClosePair(']')<CR>  
:inoremap " ""<ESC>i  
:inoremap ' ''<ESC>i  
function! ClosePair(char)  if getline('.')[col('.') - 1] == a:char  return "\<Right>"  else  return a:char  endif  
endfunction  
filetype plugin indent on   "打开文件类型检测, 加了这句才可以用智能补全  
set completeopt=longest,menu  """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
" CTags的设定    
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
let Tlist_Sort_Type = "name"    " 按照名称排序    
let Tlist_Use_Right_Window = 1  " 在右侧显示窗口    
let Tlist_Compart_Format = 1    " 压缩方式    
let Tlist_Exist_OnlyWindow = 1  " 如果只有一个buffer,kill窗口也kill掉buffer    
let Tlist_File_Fold_Auto_Close = 0  " 不要关闭其他文件的tags    
let Tlist_Enable_Fold_Column = 0    " 不要显示折叠树    
autocmd FileType java set tags+=D:\tools\java\tags    
"autocmd FileType h,cpp,cc,c set tags+=D:\tools\cpp\tags    
"let Tlist_Show_One_File=1            "不同时显示多个文件的tag,只显示当前文件的  "设置tags    
set tags=tags    
"set autochdir   """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
"其他东东  
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  "默认打开Taglist   
let Tlist_Auto_Open=1   """"""""""""""""""""""""""""""   
" Tag list (ctags)   
""""""""""""""""""""""""""""""""   
let Tlist_Ctags_Cmd = '/usr/bin/ctags'   
let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的   
let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim   
let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口  " minibufexpl插件的一般设置  
let g:miniBufExplMapWindowNavVim = 1  
let g:miniBufExplMapWindowNavArrows = 1  
let g:miniBufExplMapCTabSwitchBufs = 1  
let g:miniBufExplModSelTarget = 1  

更多参考https://blog.csdn.net/qq_38434805/article/details/80634636
源码安装:

步骤: 编译源码,然后安装
1.安装准备:
a、首先用yum安装gcc,用于编译源码
b、管网下载源码包
c、winSCP windows与Linux传输文件(若直接用安装软件的linux电脑下载就不用传输了)
2.安装过程
a、解压
b、进入解压后的目录配置文件 ./configure # 大多数情况下源码包都会带configure这样一个配置工具,具体使用方法可以vim查看其内容
c、make #编译源码包 如果报错了 make clean 清除缓存重新make
d、make install # 安装
然后删除源码包软件和安装目录

源码安装, rpm安装, yum安装). 重点要理解rpm安装和yum安装的区别.

rpm安装

rpm安装:安装别人编译好的软件包rpm即Redhat Package Manager,Redhat的软件包管方式,适用rpm install 命令rpm不仅已经把软件源代码编译成二进制文件,而且对软件包依赖的文件,系统环境等做了统计文件扩展名:rpm还有一种SRPM:没有编译成二进制文件,但是也包含rpm的特性

yum安装

用rpm方式安装软件,如果依赖的软件没有事先安装,软件无法安装成功。为了解决这个问题,推出yum方式。既然依赖的软件没有安装在机器上,那么就先安装依赖文件,再安装我需要安装的软件。因此yum在安装软件同时安装依赖文件。因此需要一个yum源来放依赖的软件源,对比被安装机器上rpm软件库归根到底,yum也是基于rpm的。

除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点.

1.Vim

 Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。

2. Eclipse

   Eclipse是一款很酷的开源代码编辑器,它拥有代码高亮和智能提示等强大的功能。在Eclipse中,完全胜任以下编程语言的工作——Python, R, Ruby, JavaScript, Natural, Lasso, C, C++, COBOL, Scheme, Clojure, Groovy等等,它也是Java集成开发环境,甚至提供了对Java 8的支持。在一些Web开发IDE特性的帮助下,你可以非常方便地对代码文件进行组织和访问。

3.Brackets

  Brackets也是一款为Linux开发者设计的开源代码编辑器,使用Brackets写代码,你不会被任何事情所打断。比如在写HTML代码时,即便你没有保存代码也可以及时预览你的Web页面效果。你也可以使用Theseus来检查变量,Brackets默认提供一种主题,当然你也可以在扩展中心获取更多的主题。

4.Emacs

Emacs不仅仅是一个编辑器,他是一个整合环境,或可称它为集成开发环境,这些功能如让使用者置身于全功能的操作系统中。
Emacs不仅可以作为文本编辑器,还可以用来收发电子邮件、通过FTP/TRAMP编辑远程档案、
通过Telnet登录主机、上新闻组、登陆IRC和朋友交流、查看日历等功能

5.Light Table

  Light Table是一个免费开放源代码的编辑器,该编辑器有一个非常干净的界面,并有大量扩展。它与Windows、Mac和Linux都兼容,是高度可定制的。使用Light Table,开发者只需打开一个浏览器窗口即可实时查看更改,并且支持不同的嵌入。

6.Chocolat

  Chocolat本身是Mac OS X的最佳代码编辑器。该编辑器旨在与OS无缝集成,Chocolat为JS、Python和HTML提供拖放功能、拆分编辑、代码折叠和代码完成。

7.Sublime Text

   一个紧凑但性能较高的代码编辑器一个跨平台的代码编辑器,适用于所有WordPress项目。
Sublime Text有很多功能可以提供:

调研除了gcc, 还有哪些常用的牛逼的编译器(不限制编程语言, 不限制平台).

EGCS:包括了C/C++/Obj-C/Fortran等编译器 Clang:licence极度友好,代码质量非常棒,采用的IR为LLVM IR非常优秀,但是Clang依赖于的LLVM,
目前的性能无法与GCC相提辩论,缺乏对GCC一些Builtin函数、自身带的汇编器的孱弱,对一些开源软件没有办法编译过去。ICC:没有自己专门的前端(传说中的外包),而且是针对Intel体系结构上专门优化。IBM XL C++:在IBM特定硬件与平台上表现非常牛逼,Benchmark性能测试非常优秀,但是在编译时间上过长,
对C++标准的支持、开源软件的支持、错误信息的提示上都不够友好。

2.为什么调试的时候需要编译选项中添加 -g?

在 Linux 中,我们常用 gcc编译生成可执行文件, 但是可执行程序中没有可供 gdb 调试使用的特殊信息,
无法使用 gdb 来跟踪或调试,因此我们需使用到 -g 选项,这样生成的可执行程序就可以使用 gdb 找出出现问题的位置,从而解决问题。

3. readelf命令

(1)readelf用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。
这里的elf-file(s)就表示那些被检查的文件。可以支持32位,64位的elf格式文件,也支持包含elf文件的文档
(这里一般指的是使用ar命令将一些elf文件打包之后生成的例如lib*.a之类的“静态库”文件)。(2)选项
在 Linux 中输入 man readelf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu14.04下安装qt4.8.6 +qt creator

原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://248341.blog.51cto.com/238341/1438867以前安装时没太注意&#xff0c;安装qt后发现在qt creator下无法输入中文&#xff0c;或者中文无法…

网络基础一(协议的概念,网络应用程序设计模式)

协议的概念 什么是协议&#xff1f; 从应用的角度出发&#xff0c;协议可理解为“规则”&#xff0c;是数据传输和数据的解释的规则。 假设&#xff0c;A、B双方欲传输文件。规定&#xff1a; 第一次&#xff0c;传输文件名&#xff0c;接收方接收到文件名&#xff0c;应答OK…

ubuntu修改root密码

sudo passwd root [sudo] password for you &#xff1a;---> 输入你的密码&#xff0c;不会显示 Enter new UNIX password: --- > 设置root 密码 Retype new UNIX password: --> 重复

linux 消息队列机制

现在我们来讨论第三种也是最后一种System V IPV工具&#xff1a;消息队列。在许多方面看来&#xff0c;消息队列类似于有名管道&#xff0c;但是却没有与打开与关闭管道的复杂关联。然而&#xff0c;使用消息队列并没有解决我们使用有名管道所遇到的问题&#xff0c;例如管道上…

堆(概念,数据结构中堆与内存堆区的区别 ,堆的基本操作)

堆的特性&#xff1a; 必须是完全二叉树 用数组实现 任一结点的值是其子树所有结点的最大值或最小值 最大值时&#xff0c;称为“最大堆”&#xff0c;也称大根堆&#xff1b; 在完全二叉树中&#xff0c;任何一个子树的最大值都在这个子树的根结点。最小值时&#xff0c;称为…

makefile中的shell调用---注意事项

在之前一次编写makfile时候&#xff0c;有看到相关的makefile中使用$$来引用变量&#xff0c;而且尝试后发现$$使用居然和${}有类似的功能。当时也没具体追究相关的用法&#xff0c;当然刚才所说的都是错误的观念 $$&#xff1a;在makefile中会被替换成一个$。 相关资料是这么描…

网络基础2(分层模型,通信过程,以太网,ARP协议格式和具体功能详解)

分层模型 OSI七层模型 OSI模型 1 物理层&#xff1a;主要定义物理设备标准&#xff0c;如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流&#xff08;就是由1、0转化为电流强弱来进行传输&#xff0c;到达目的地后再转化为1、0&#…

为github帐号添加SSH keys

使用git clone命令从github上同步github上的代码库时&#xff0c;如果使用SSH链接&#xff08;如我自己的beagleOS项目&#xff1a;gitgithub.com:DamonDeng/beagleOS.git&#xff09;&#xff0c;而你的SSH key没有添加到github帐号设置中&#xff0c;系统会报下面的错误&…

网络基础3(IP段格式,UDP数据报格式,TCP数据报格式)

IP段格式 IP数据报的首部长度和数据长度都是可变长的&#xff0c;但总是4字节的整数倍。 对于IPv4&#xff0c;4位版本字段是4。4位首部长度的数值是以4字节为单位的&#xff0c;最小值为5&#xff0c;也就是说首部长度最小是4x520字节&#xff0c;也就是不带任何选项的IP首部…

Linux 开发路线

Linux 开发路线&#xff1a; 使用 linux—〉linxu 系统编程开发---〉驱动开发和分析 linux 内核 开始学 linux 内核:最好有三件宝物:《深入理解 linux 内核》《LINUX内核源代码情景分析》和源代码。 《深》是纲,《情》是目。最后深入代码 Linux 内核原理&#xff1a;比较浅显…

堆的应用(堆排序,TopK问题)

堆的应用 1&#xff09;排序 堆排序 选择排序 既可以找到最大的放在最后 也可以找到最小的方最前 但是&#xff0c;堆排序不能找最小的放在最前 因为把最小数放在最前&#xff0c;会破坏掉堆的原来的顺序&#xff0c;除非重新建堆 1&#xff0c; 2&#xff0c;9&#xff0c…

有名管道和无名管道的区别

1&#xff09;无名管道:管道是半双工的&#xff0c;数据只能向一个方向流动&#xff1b;需要双方通信时&#xff0c;需要建立起两个管道&#xff1b;只能用于父子进程或者兄弟进程之间&#xff08;具有亲缘关系的进程&#xff09;。 单独构成一种独立的文件系统&#xff1a;管道…

网络基础4(TCP三次握手,四次握手,TCP流量控制,TCP状态转换 , TCP异常断开,设置TCP属性,端口复用)

TCP协议 TCP通信时序 下图是一次TCP通讯的时序图。TCP连接建立断开。包含大家熟知的三次握手和四次握手。 TCP通讯时序 在这个例子中&#xff0c;首先客户端主动发起连接、发送请求&#xff0c;然后服务器端响应请求&#xff0c;然后客户端主动关闭连接。 两条竖线表示通讯的…

linux编程手册读书笔记第一章(20140329)

&#xff08;2&#xff09;管道、FIFO、套接字、设备&#xff08;比如终端、伪终端&#xff09;都支持非阻塞模式。&#xff08;因为无法通过open&#xff08;&#xff09;来获取管道和套接字的文件描述符。所以要启用非阻塞标志&#xff0c;就必须使用fcntl&#xff08;&#…

排序(基本概念及分类,直接插入排序和希尔排序)

排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c;若经过排序&a…

Linux编程手册读书笔记第二章(20140330)

内核&#xff1a;管理和分配计算机资源&#xff08;即CPU、RAM和设备&#xff09;的核心软件层Linux内核可执行文件采用&#xff0f;boot&#xff0f;vmlinuz或类似的路径名&#xff0c;“z”表明内核是经过压缩的可执行文件。内核主要任务&#xff1a; &#xff08;1&#xff…

直接交换排序

直接交换排序 缺点&#xff1a;进行一些重复性比较&#xff0c;解决放法&#xff1a;堆排序 选择排序优化 //如果当前的数大于假定最大的数 //改变下标 //如果当前的数小于假定最小的数 //改变下标 //遍历数组跳到下一个元素 //如果最大的数没有在它的位置上 //交换 //交换…

Linux编程手册读书笔记第三章(20140407)

外壳函数执行一条中断机器指令&#xff08;int 0x80&#xff09;&#xff0c;引发处理器从用户态切换到核心态&#xff0c;并执行系统中断0x80的中断矢量所指向的代码。&#xff08;在2.6内核及glib 2.3.2之后的版本都支持sysenter指令&#xff0c;进入内核的速度更快&#xff…

Linux编程手册读书笔记第四章(20140407)

标准文件描述符定义在<unistd.h>中&#xff0c;STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO打开一个文件&#xff1a;open&#xff08;&#xff09; &#xff03;include<sys/stat.h> #include<fcntl.h> int open(const char *pathname, int flags, …/* …

快速排序概念及实现

快速排序 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff0c; 其基本思想为&#xff1a; 任取待排序元素序列中的某元素作为基准值&#xff0c;按照该排序码将待排序集合分割成两子序列&#xff0c;左子序列中所有元素均小于基准值&#xff0c;右子序列…