Linux下开发关于Samba/Vimrc/svn/tftp/等基本的配置使用

2023-10-19 21:59

本文主要是介绍Linux下开发关于Samba/Vimrc/svn/tftp/等基本的配置使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

出处:http://blog.csdn.net/max_min_go/article/details/18269227

 做了一年半的Linux的网络编程,所以分享自己现在在ubuntu系统下开发的一些工作环境配置,大家相互学习。

1 平台 

   首先就是装一个Linux系统,我现在装的是ubuntu10.04比较稳定好用!后面应该会用12.04,听说也挺稳定的!再虚拟一个xp系统,这里可以在公司内部和同事通信用!毕竟好多软件还只能在windows系统下运用

  当然也可以装双系统,但是不好交互,所以不很推荐。

2  Samba服务

   虚拟机和主机ubuntu需要相互共享目录的时候,当然用vm有自带,virtual box也是有共享目录的,但是我还是比较习惯用Samba,比较方便,具体配置如下,

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. sudo apt-get install samba     // 下载samba服务  

  然后修改下samba配置文件,在/etc/samba下有个smb.conf文件,修改它就好,如下修改

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. [someuserPCSamba]  
  2.        comment = someuserPC Samba share document  
  3.        path = /home/someuser  
  4.        browseable = yes   
  5.        writeable = yes   
  6.        valid users = someuser,root  
  7.        write list = someuser                  
  8.        guest ok = yes   
  9.        create mask = 0777  
  10.        directory mask = 0777  

someuser表示当前登录的用户名,配置好后在虚拟的xp下,在工具上映射网络驱动器如下图,并在ip地址上添上住主机的ip地址就好

            


通过上面的操作后,即可以在打开我的电脑的时候会有一个网络驱动器了,就可以直接通过双击来访问Samba共享的文件夹了!方便快捷。例如:如上面的配置文件配好后,虚拟机要映射172.18.6.33的主机:\\172.18.6.33\someuerPCSamba

2 Vim的配置

个是老生常谈的问题了,看各人的爱好来的吧!个人配置都不一样,我贴写我自己喜欢的基本操作

首先安装g++ ,vim, ctags ,cscope基本的工具,所有下载安装命令如下:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. sudo apt-get install  xxx  

下面我贴一些自己常用的一些基本配置,了需要的可以参考一下,这个个人配置都是因人而异的,所以我就贴一部分,大家相互学习

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. set path=.,/usr/local/include/,/usr/include/,./include,./*  
  2.   
  3. "set fenc=utf-8  
  4. "set encoding=gb2312                                                    // "redhat9.0中的vi只支持这个选项,cat命令为gb2312,系统默认为utf-8,man命令为系统默认  
  5. "set termencoding=gb2312                                                //"效果同set encoding"  
  6.   
  7. set fileencodings=gb18030,cp936,UTF-8,gbk,big5,ucs-bom,euc-jp,euc-kr,iso8859-1  
  8. set fileencoding=cp936  
  9. set encoding=UTF-8  
  10.   
  11. set tabstop=4  
  12. set sw=4  
  13.   
  14. filetype plugin on                                                       //"自动识别文件类型,自动匹配  
  15. filetype indent on  
  16.   
  17. set hlsearch                                                              //"搜索时高亮显示被找到的文本  
  18. set incsearch                                                             //"键入目标字符串同时开始搜索,回车跳转到当前匹配的位置  
  19. set showcmd                                                               //"在Vim窗口的右下角显示一个完整的命令已经完成的部分。 未完成也显  
  20. set sidescroll=10                                                         //"nowrap 不换行下,预留多少个字节显示  
  21. set history=1000                                                          //"keep 50 lines of command line history  
  22. set listchars=tab:>-,trail:-                                              //"查看制表符,与set list一起用  
  23. set nowrap  
  24. set number                                                                //"set nonu 相反  
  25.   
  26. syntax enable                                                             //"语法高亮  
  27. syntax on                                                                 //"自动语法高亮  
  28.   
  29. "colorscheme delek  
  30. colorscheme evening                                                       //"设定背景为夜间模式  
  31.   
  32. set softtabstop=4  
  33. set shiftwidth=4  
  34. set autoindent  
  35. set cindent  
  36. set nu  
  37. set ruler                                                                  //"打开状态栏尺寸  
  38. set foldmethod=syntax                                                      //"按高亮模式折叠  
  39. set foldlevel=100                                                          //"启动vim时不会自动折叠  
  40. set mouse=a                                                                //"鼠标控制光标  
  41.   
  42. set autochdir                                                              //"自动切换为当前目录为当前文件所在目录  
  43. set autoindent cindent cinoptions=g0                                       //"打开自动缩进和c语言风格的缩进模式,定制c语言风格缩进  
  44.   
  45. "set cursorline                                                            //"高亮当前行  
  46. set showmatch                                                              //"显示匹配的括号  
  47.   
  48. set matchtime=5                                                            //" 匹配括号高亮的时间(单位是十分之一秒)    
  49. set ignorecase                                                             // " 在搜索的时候忽略大小写    
  50.   
  51. setlocal noswapfile                                                        //"不要生成.swp文件,当buffer别丢弃的时候隐藏它  
  52. set bufhidden=hide  
  53.   
  54. set ruler                                                                  //" 在状态行上显示光标所在位置的行号和列号  
  55. set cmdheight=2                                                            //" 命令行(在状态行下)的高度,默认为1,这里是2    
  56. "cscope的配置  
  57. if has("cscope")  
  58.   
  59.     set cscopetag  
  60.     set csprg=/usr/bin/cscope  
  61.     set csto=0  
  62.     set nocsverb  
  63.     "add any database in current directory  
  64.     if filereadable("cscope.out")  
  65.         cs add cscope.out  
  66.     "else add database pointed to by environment  
  67.     elseif $CSCOPE_DB != ""  
  68.         cs add $CSCOPE_DB  
  69.     endif  
  70.       
  71.     set csverb  
  72.     set cscopeverbose  
  73.   
  74.   
  75.     nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR>  
  76.     nmap <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR>  
  77.     nmap <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR>  
  78.     nmap <C-\>t :cs find t <C-R>=expand("<cword>")<CR><CR>  
  79.     nmap <C-\>e :cs find e <C-R>=expand("<cword>")<CR><CR>  
  80.     nmap <C-\>f :cs find f <C-R>=expand("<cfile>")<CR><CR>  
  81.     nmap <C-\>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>  
  82.     nmap <C-\>d :cs find d <C-R>=expand("<cword>")<CR><CR>  
  83.   
  84.     nmap <C-@>s :scs find s <C-R>=expand("<cword>")<CR><CR>  
  85.     nmap <C-@>g :scs find g <C-R>=expand("<cword>")<CR><CR>  
  86.     nmap <C-@>c :scs find c <C-R>=expand("<cword>")<CR><CR>  
  87.     nmap <C-@>t :scs find t <C-R>=expand("<cword>")<CR><CR>  
  88.     nmap <C-@>e :scs find e <C-R>=expand("<cword>")<CR><CR>  
  89.     nmap <C-@>f :scs find f <C-R>=expand("<cfile>")<CR><CR>  
  90.     nmap <C-@>i :scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>  
  91.     nmap <C-@>d :scs find d <C-R>=expand("<cword>")<CR><CR>  
  92.   
  93.     nmap <C-@><C-@>s :vert scs find s <C-R>=expand("<cword>")<CR><CR>  
  94.     nmap <C-@><C-@>g :vert scs find g <C-R>=expand("<cword>")<CR><CR>  
  95.     nmap <C-@><C-@>c :vert scs find c <C-R>=expand("<cword>")<CR><CR>  
  96.     nmap <C-@><C-@>t :vert scs find t <C-R>=expand("<cword>")<CR><CR>  
  97.     nmap <C-@><C-@>e :vert scs find e <C-R>=expand("<cword>")<CR><CR>  
  98.     nmap <C-@><C-@>f :vert scs find f <C-R>=expand("<cfile>")<CR><CR>  
  99.     nmap <C-@><C-@>i :vert scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>  
  100.     nmap <C-@><C-@>d :vert scs find d <C-R>=expand("<cword>")<CR><CR>  
  101. endif  

当然还有一些map的映射,这个是各人习惯,我就不一一贴出来了!有需要的可以留言,我再相关贴出来!下面再说说我平时操作的一些命令,包括函数,变量来回跳转查看,高亮显示折叠等等命令!很基础的命令就没有列出来了

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1.  g + d                                                                       // 高亮显示  
  2.  n                                                                           // 下一个  
  3. \  + h + l                                                                   // 高亮显示,再一次,恢复原色  
  4. : v + s                                                                      // 左右分割窗口  
  5. : s + p                                                                      // 上下分割窗口  
  6. ctrl + w + h/j/k/l                                                           //通过方向移动光标所在区域窗口  
  7. :q                                                                           //关闭当前光标所在窗口,  
  8. :qall                                                                        //退出当前所有窗口  
  9. :only                                                                        //退去其他,保留当前光标所在窗口  
  10. ctrl + ]                                                                     //进入光标所在的定义处  
  11. ctrl + o                                                                     // 返回上次的跳转光标处     
  12. ctrl + i                                                                     //前进到上次的跳转光标处    
  13. ctrl + t                                                                     // 返回调用处  
  14.   
  15. :cs + find +e + 目标                                                         // 全局搜索目标  
  16. ctrl +n                                                                      // 下一个目标,   
  17. ctrl +p                                                                      // 上一个目标  
  18. u                                                                            //  撤销  
  19. ctrl + r                                                                     //反撤销  
  20. z + a                                                                        // 折叠当前光标所在的大括号,重复一次打开  
  21. ctrl + v + h/j/k/l                                                           // 块选中,通过方向键,控制选中的块  
  22. shift + v + j/k                                                              // 行选中,上下键控制选中的行  
  23. shift+ v + =                                                                 // 选中,并对齐代码  
  24. ctrl + shift + t                                                             // 打开新的工作区  
  25. atl + (1,2,3,4,)                                                             //切换对应的工作区域  
  26. ctrl + shift + w                                                             // 关闭小工作区  
  27. %s/old/new                                                                   // 全局old被new替换  
  28.   
  29. // 这两个命令蛮好用, 比较方便  
  30. (ctrl +v) + (shift + i) + xxxx                                               // 区域选中,然后shift+i 输入xxxx,则选中区域全部被写入xxxx  
  31. (shift+v) + (shft + : ) + s/old /new                                         // 选中区域old被new替代   
  32.   
  33.   
  34. //整页翻页   
[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. ctrl-f ctrl-b  //f就是forword b就是backward  
  2. //翻半页  
  3. ctrl-d ctlr-u  //d=down u=up  
  4.  //滚一行  
  5. ctrl-e ctrl-y  
  6. zz   // 让光标所杂的行居屏幕中央  
  7. zt   // 让光标所杂的行居屏幕最上一行 t=top  
  8. zb   // 让光标所杂的行居屏幕最下一行 b=bottom  
  9. //说明下:上面的:标识在命令模式下,其他都是在是在正常模式下进行的,如果有不懂的的。可以留言我  
先想到的就这么多了,后面想到了,再向上加吧,或者有帅哥知道一些比较方便的命令,也可以下面留言告诉我,大家相互学习,方便别人,也是方便自己!

3 svn常用的命令

这里只是简单的罗列出来几个比较常用的上传代码和下载代码,并没有关于svn服务器的配置,这个具体google下。

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1.  sudo apt-get install subversion                 //  安装命令,服务端的配置的话,可以google下  
  2.   
  3. // 常用的基础命令  
  4. svn check out <uri>                              // 检出uri路径下的代码     简写:   svn co uri  
  5. svn export  file                                 // 一般这个命令是从服务端上下checkout代码下来然后,export一份代码到自己的workspace目录,    
  6. svn commit -m"xxxx"                              // 上传当前目录下的代码到svn服务器, 后面的xxxx上传的简单日志信息   简写: svn ci -m"xxxx"  
  7. svn add files --no-ignore                        //  svn服务器上添加文件, 后面的 --no-ignore防止添加一些库文件的时候遗漏掉,  
  8.   
  9. // 添加的时候,注意要删除当下的.svn文件,具体命令如下  
  10.  find ./  -name  "*.svn"  | xargs rm -rf     
  11.  svn delete files                                 // 删除svn服务器上的files  
  12.  svn info                                         //查看当前svn服务器下文件的信息  
  13.  svn log                                          // 查看svn日子, 实际我用 svn  log|less 居多, 显示信息多些  

4 mount设备的简单命令

 开发arm设备的时候,当调试代码的时候,如果不嫌弃麻烦的,也可以每次都烧录到设备里去,当然也有简单方法,那就是需要将本机编译好的代码mount到设备上去,

当然这里因为体系的不同还需要安装交叉编译工具,我后面会简单说下,也是可以的。  言归正传,说一下mount的基本命令

首先确认通过串口进去到设备下,然后ifconfig 确认下是否ip地址起来或者是否和pc机在通过一个网段的,如果不是话,则进行下面命令

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. ifconfig eth0 192.168.1.108 up                                               // 配置和pc同网段ip  
  2. route add default gw 192.168.1.1                                             // 配置网关, 也可以通过route命令查看  

接下里就可以在设备上ping下主机的ip地址或者在pc上ping设备也是可以的,保证两边网络是通的,才能进行下一步的mount操作

mount也就是nfs来,它的基础命令很简单,其实也就是间接访问而已,具体命令如下:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. mount -t nfs  -no nolock 192.168.1.100:/home/someone/  /tmp  
  2. // 在设备端运行上面的命令后,也就是在tmp目录下共享,pc机下的/someone目录下的内容  
  3. // 192.168.1.100表示自己pc机的ip地址  

5 tftp服务的环境的配置(pc端和设备端)
 首先用pc主机下tftp服务,首先下载并安装tftp-hpa和tftpd-pha

  然后建立一个文件并加权限用ftp来访问使用,具体如下:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1.  mkdir tftpboot  
  2. chmod 755 tftpboot  // 其他用户的时候没有写权限,当然你也可以777 所有的读写权限全部加上也可以,看具体需求  
  3. //然后修改对应的配置文件  
  4. #sudo vim /etc/default/tftp-hpa  //修改此文件如下  
  5. # /etc/default/tftpd-hpa       
  6.       
  7. TFTP_USERNAME="tftp"       
  8. #TFTP_DIRECTORY="/var/lib/tftpboot"       
  9. TFTP_DIRECTORY="/home/someone/tftpboot"       
  10. TFTP_ADDRESS="0.0.0.0:69"       
  11. TFTP_OPTIONS="--secure"      

当你pc机的的环境搭好后,在设备端运行下面命令即可

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. setenv ipaddr 192.168.1.108                                                  // 设备端ip地址  
  2. setenv netmask 255.255.255.0                                                 // 设备端掩码  
  3. setenv gatewayip 192.168.1.1                                                 //  设备端和pc通信的网关  
  4. setenv serverip 172.18.6.33                                                  // pc的ip地址  
  5. saveenv                                                                      //保存设置   

6 交叉编译基本配置

由于ARM的体系结构和x86的体系结构不同,故在宿主机上编译产生的应用程序不能在ARM上运行,故需要安装交叉工具链,以下为安装过程
 (1)  将arm-linux-gcc-4.3.2.tgz移到linux的一个目录下
 (2)  解压工具链到某一个目录下
       例:tar xvzf arm-linux-gcc-4.3.2.tar.gz -C/ 
      其中  -C 指定解压到后面的绝对路径,如果不加,则解压到当前目录下
      解压过程中,会发现它解压到了 /usr/local/arm  下,这里特别要注意前面的路径,因为如果没有加 -C选项,是解压到当前目录下的,
      以 ** 表示/usr/local/arm前面的路径(加-C就是/usr/local/arm 目录下)
(3) 修改 /etc/profile
      添加 在pathmunge 下添加    **/usr/local/arm/4.3.2/bin  (如果加 -C 就没有**)
(4) 执行 source /etc/profile  就可以执行   arm-linux-gcc 命令了

7 tcpdump/netstat的一些基础命令使用

在man下tcpdump如下

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. NAME  
  2.        tcpdump - dump traffic on a network  
  3.   
  4. SYNOPSIS  
  5.        tcpdump [ -AdDefIKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]  
  6.                [ -C file_size ] [ -G rotate_seconds ] [ -F file ]  
  7.                [ -i interface ] [ -m module ] [ -M secret ]  
  8.                [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]  
  9.                [ -W filecount ]  
  10.                [ -E spi@ipaddr algo:secret,...  ]  
  11.                [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]  
  12.                [ expression ]  

当热网络也有一些比较好的比较详细的说明如

tcpdump命令详解 和 tcpdump命令详解2

我只是简单的列举几个我自己比较常用的命令 ,具体的参数是什么意思可以参考上面的两个博客都写的挺详细,

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. tcpdump host 192.168.1.108 port 8888  - A  - s0 -i lo  
  2. // 打印固定ip和固定端口的数据包,-A 以字节形式输出, -i 监听的网络选项  
  3. tcpdump host 192.168.1.108 port 8888  - A   -s0 -v -w cap.cap   
  4. // -v 详细显示, -w 是生成文件形式,后面接文件名  

这两个命令是我用的比较多了,当然,实际工作的时候,用wireshark还是占大多数的时候的!

在man下nestate如下

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. NAME  
  2.        netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships  
  3. SYNOPSIS  
  4.        netstat  [address_family_options]  [--tcp|-t]  [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users]  
  5.        [--symbolic|-N] [--extend|-e[--extend|-e]] [--timers|-o] [--program|-p] [--verbose|-v] [--continuous|-c]  
  6.        netstat {--route|-r} [address_family_options] [--extend|-e[--extend|-e]] [--verbose|-v] [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users]  [--con‐  
  7.        tinuous|-c]  
  8.        netstat  {--interfaces|-i}  [--all|-a]  [--extend|-e[--extend|-e]] [--verbose|-v] [--program|-p] [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users]  
  9.        [--continuous|-c]  
  10.        netstat {--groups|-g} [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users] [--continuous|-c]  
  11.        netstat {--masquerade|-M} [--extend|-e] [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users] [--continuous|-c]  
  12.        netstat {--statistics|-s} [--tcp|-t] [--udp|-u] [--raw|-w]  
  13.        netstat {--version|-V}  
  14.        netstat {--help|-h}  
  15.        address_family_options:  
  16.        [-4] [-6] [--protocol={inet,unix,ipx,ax25,netrom,ddp}[,...]]  [--unix|-x] [--inet|--ip] [--ax25] [--ipx] [--netrom] [--ddp]  
其实这个netstate命令用的比较少,当然是相对我来说而已,接触这个是因为中间帮平台项目调试个bug,结果最后bug别人自己搞定了,  用到个这个命令,主要对端口而已,查看一些端口的状态的,常用的基本命令如下
[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. netstate -p tcp/udp                                                           // 查看tcp连接的端口状态  
  2. netstate -anpt | grep 8888                                                    //查看固定端口的状态  

其实还有写也是基础的,我不一一列出来,这里的两个博客都比较好,想仔细研究的可以参考下

netstat命令详解1 和netstat命令详解2


好了!想写的零零散散的也就想到就这些了,后期想起别的,我也继续贴在后面。

分享也是一种学习,一种快乐!如果你有更好的,或者更直接linux网络分析这块更好的工具或者命令,可以留言告诉我的哦,也可以发送邮件:zy573124937@163.com.  大家一起学习,一起探讨。。

这篇关于Linux下开发关于Samba/Vimrc/svn/tftp/等基本的配置使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/242628

相关文章

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

Spring中配置ContextLoaderListener方式

《Spring中配置ContextLoaderListener方式》:本文主要介绍Spring中配置ContextLoaderListener方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录Spring中配置ContextLoaderLishttp://www.chinasem.cntene

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

Python Faker库基本用法详解

《PythonFaker库基本用法详解》Faker是一个非常强大的库,适用于生成各种类型的伪随机数据,可以帮助开发者在测试、数据生成、或其他需要随机数据的场景中提高效率,本文给大家介绍PythonF... 目录安装基本用法主要功能示例代码语言和地区生成多条假数据自定义字段小结Faker 是一个 python

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Pydantic中Optional 和Union类型的使用

《Pydantic中Optional和Union类型的使用》本文主要介绍了Pydantic中Optional和Union类型的使用,这两者在处理可选字段和多类型字段时尤为重要,文中通过示例代码介绍的... 目录简介Optional 类型Union 类型Optional 和 Union 的组合总结简介Pyd