resure挽救笔记本系统和一些相关的操作记录

  1. 使用fedora23很久了, 但是感觉不是很流畅, 出现了一些不太稳定的体验, 所以想改到centos7. 因为centos7的很多东西 跟 fedora23 很相近了. 所以应该是无缝过渡

  2. 是选择32位的系统还是选择64位的系统?
  • 还是要使用 32位的 它是90%的人的选择使用, 是普通人的通用选择, 几乎支持linux下的所有软件;
  • 64位的系统, 是适合 特殊职业/特殊行业使用的, 比如:建筑设计和 大型图纸设计.
  • 64位系统对内存的使用 比32位的要大些. 但是在跑服务的时候, 可能要快些. 但是生产服务器 通常内存都是比较大的, 所以, 还是安装64位的
  • 但是32位的系统识别的内存要低些, 64位的系统则能识别 (/ 并利用??) 所有的内存空间?
  • 以前没有用过64位的, 所以 这次 尝试 试用一次.
pae是什么?
pae: 怕饿: pa'e: 是 physic address extension: 物理地址扩展. 可以支持64位的系统, 让 大于4GB ~ 64GB的内存都支持 4kB的页面通常只有在 迅雷/firefox等 网络应用程序中, 描述网络速度的时候, 才使用 bit(位) 做计量单位, 其他关于文件/内存等 都使用的是 Byte来做单位. 如内存是 4GB...32位系统, 若打开PAE,则最多可以识别出64GB内存。但是 32位系统下的进程一次最多只能寻址4GB的空间。
64位linux则没有32位系统的限制。因此对于内存大于4GB的机器来说,最好安装64位系统。32位的寻址空间最多4GB,其中有些硬件黑洞(rom, framebuffer, pci, i2c 等等),操作系统能访问到的内存可能会减少到3.5GB左右,内核要占一些内存,剩下的才是用户级可以使用的.
  1. 在centos7 和 fedora23中的 firewall和iptalbes的关系: 参考: https://www.tuicool.com/articles/qYnuMj 和 http://ju.outofmemory.cn/entry/329480
    iptables: 主要是考虑 chain(链, 或者说, 存在几条 "线"). INPUT, OUTPUT FORWARD. 主要配置的是 : INPUT链 和 OUTPUT链
    ???? firewall是centos7里面的新的防火墙命令,它底层还是使用 iptables 对内核命令动态通信包过滤的,简单理解就是firewall是centos7下管理iptables的新命令????

  2. openjdk采用的是GPL协议, 而SunJDK采用的是: JRL协议: javaResearch License. 包括源码的开放/插件的使用/商标--version等上有所不同. 但是绝大多数源码是相同的.

  3. centos7 只有 x86_64位的系统, 默认使用的 文件(存储)系统是: xfs: xfs是由SGI: silicon graphics inc. 美国硅图公司, 设计出的 Xfs文件系统, 原先公司使用的是 EFS: existing filesystem. xfs为 Linux 社区提供了一种健壮的、优秀的以及功能丰富的文件系统,并且这种文件系统所具有的可伸缩性能够满足最苛刻的存储需求

高级日志文件系统 : ,由于文件系统开启了日志功能,所以你磁盘上的文件不再会意外宕机而遭到破坏了。不论目前文件系统上存储的文件与数据有多少,文件系统都可以根据所记录的日志在很短的时间内迅速恢复磁盘文件内容。

XFS 是一个全64-bit的文件系统,它可以支持上百万T字节的存储空间。

XFS使用高的表结构(B+树),保证了文件系统可以快速搜索与快速空间分配。XFS能够持续提供高速操作,文件系统的性能不受目录中目录及文件数量的限制。

CentOS/RHEL的生命周期是7到10年,基本上可以覆盖硬件的生命周期,也就意味着一个新硬件安装以后,不用再次安装操作系统。

CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一

每个版本的 CentOS都会获得十年的支持(通过安全更新方式)。新版本的 CentOS 大约每两年发行一次,而每个版本的 CentOS 会定期(大概每六个月)更新一次,以便支持新的硬件。这样,建立一个安全、低维护、稳定、高预测性、高重复性的 Linux 环境。CentOS是Community Enterprise Operating System的缩写。

cre'dential: 凭证; 证据; 证件;
vault: 金库/保险柜; 苍穹, 拱顶/

除了国内的 mirrors.163.com等镜像外, 要下载各种各样的版本的话, 还是要到 http://vault.centos.org/7.0.1406/isos/x86_64/ : 官网下载... 地址: vault.centos.org/版本号/isos/x86_64/... 这个是centos官方的原始机器.
但是下载, 还是 跳转到 镜像的 http://archive.kernel.org/centos-vault/: ( In order to conserve( 节约/节省/保护: con-serve: 共同服务...) the limited bandwidth available ....)

821299-20171029231305055-1321170730.png


821299-20171030154724996-543698606.png

  1. cp命令的-i选项?
    这个-i --interactive, 表示的是, 在重写/覆盖之前提示: prompt before overwrite! 注意, 只是在 重写之前, 才提示, 如果在拷贝的时候, 目标目录中,没有 已经存在的文件, 不会发生重写的时候, 就不会 提示!

  2. 在 shell中的 所有 命令, 都支持 通配符 * ? [a-b] , 注意是 所有的命令都支持 通配符! 包括我们的 mv命令 rm命令等等, 所以

  3. 读懂 navigation中 这个 has an associated command... do you want to automatically set it to ... ?
    首先, 设置这些 导航 shortcuts 的时候, 不要 设置成 其他程序中 , 常用 的 已经 经常使用的 快捷键, 比如: ctrl+x, ctrl+z, ctrl+c, ctrL+w等等.
    其次, 上面的这个associtated command的意思是: 设置比如 switch windows of an application 的快捷键是 alt+x, 那么这个alt+x指的是 窗口从左到右, 从前到后进行switch的快捷键, 那么相反的, 相关联的, 窗口从右到左, 从后到前的快捷键呢? 通常的做法是: 就是 在 原有的快捷键的基础上 , 加上一个shift.. 如这里就是 alt+shift+x...
    821299-20171031215514716-1295129166.png

mv命令移动文件的时候, 不会改变文件的 context! 因为它不创建新文件; 而 cp命令复制文件的时候, 会"改变复制的新文件的context, 因为这里是 创建的新文件, 所以 会使得新文件的 context 跟 源文件的 context 不一样

通常来说, /etc下的文件,(绝大多数)的 context是: system_u: object_r: etc_t:s0

chcon的时候, 如果修改context比较麻烦, 可以参考(比到起/ 比对) 其他的某个文件 进行设置, 使用参数 --reference=RFILE: chcon --reference=bar foo...
821299-20171031225556998-720175329.png

虽然/etc的目录权限是 : 755, 但是并不一定保证 其中的文件 owner:group全都是 : root:root, 也有可能是 其他用户, 如foo:foo的

方法就是 : su -c '使用 mv, 不要使用cp... "
因为: 文件谁创建, 包括: touch, vi/vim, cp命令都会创建, 所有者就是谁
但是 如果是使用 mv的话, 由于 mv 不会改变文件的 属性, 包括文件的 owner:group, 还有文件的context, 所以 : 虽然 /etc的目录权限是 755, 其他普通用户, 是不能 直接 使用 mv/cp等命令的, 但是 我可以使用 su -c(root身份执行 ) 'mv...命令', 那么 这时候 被移动的文件, 原来如果是foo:foo的, 那么移动mv到 /etc后, 就还是 foo:foo的.

geditor的很多设置, 其实是在 dconf-editor中的 gnome->geditor->prefernce中 进行设置的. 比如行号/ 高亮当前行, 括号匹配等等.

821299-20171101094047185-2129116323.png


. 关于"设置"中的 导航navigation中的 几个操作的区别:

switch applications: 只是在应用程序之间切换,如果是 一个应用程序有多个窗口, 也只是显示 一个应用程序图标; 一般是用 alt+tab
switch windows: 是在所有的窗口之间 切换, 如果是 一个应用程序有多个窗口, 则将把这些窗口全部扩展, 全部显示出来, 可以使用 super+w, 不要是哟个 ctrl_w(ctrl_w是terminal下关闭标签的快捷键)
switch windows of an application: (说的是 如果一个应用程有多个窗口的时候, 用 这个来switch), 可以设置为alt+x
重要 是: 要读懂这句话: the command "..." has an associated shortcuts "switch to previous window..." 什么的, do you want to automatically set to ...意思是说, 这个切换命令有一个相关联的命令, 即向前向上的 快捷键是什么...

...

切换终端, 切换字符界面, 使用的快捷键是 ctrl_alt+f1/f2/f3/f4...注意不是 alt_f2/f3.. 你想, alt+f2/f3等 是当前登陆的 终端的 快捷键,比如alt+f2: 是 运行命令, 相当于win中的win+R

who和whoami的区别?

who是显示的 当前登录 用户;
whoami 显示的是 当前"正在操作的" 有效 用户名称和id: 即 euid, euname..

It is usually good practice to create a dedicated user and group for running httpd, as with|| most system services.||

如果要更换不同的用户或组来运行apache,你必须先以root运行,然后他将会切换到所设置用户。跟大多数的系统服务一样,为apache 单独建立一 个用户和组来运行它是一个很好的做法。(注意,此项是设置在非NetWare和非win系统下才需配置,否则无需配置)

((practice: 实践; 也可以作: "做法, 用法" 解, dedicate: 致力于..., 专注于...; 奉献... 献身于..., 用法是: dedicate sb./themselves to + 名词, to 是介词 )): i am a doctor, dedicated myself to curing the sick, at least try to. they have been dedicating themselves to a higher purpose: 更高的目标: a higher purpose.

dedicated: 引申为 " 专门的, " create a dedicated user: 创建一个 专门的用户,... /// 单独去创建一个用户...

as with..., 介词短语作状语: 与..一样, 正如...一样 , 如同.. ..


设置的 alias和 自定义函数的区别?

别名用 alias来查看;
而自定义函数 要使用set来查看.


MariaDB在 5.5版本之前, 跟mysql的版本基本一致, 但是后来版本有了较快的增长, 现在的MariaDB 10.0大致相当于MySQL 5.6版本,完全兼容mysql的api和命令行. fc23的源仓库中安装的MariaDB 安装的是 : 10.0.28的版本.

Navicat: navi- 是 导航的意思: navigation : 导航猫:是mysql数据库的 前端gui 连接工具.


locale命令?

是用来设置 本地语言的:
包括: LC_CTYPE, LANG 等. 操作方法是 : export LC_CTYPE...
永久改变locale? :
可以在 ~/.bashrc 中永久修改: 包括设置: LANG, LC_CTYPE, LC_ALL了...

locale的设置格式是: xxx_xxx.xxx , 比如: zh_CN.UTF-8, 包括: zh: 表示语言, zh中文和 en英文, CN 表示 地区, 最后的那个是 字符集, 比如: zh_CN.GB2312等等...


util=utility 功用, 效用, 工具
    

为什么有时候httpd需要设置ServerName?

缺省情况下,并不需要指定这个ServerName参数,服务器将自动通过 名字解析 过程来获得自己的名字,但如果服务器的名字解析有问题(通常为反向解析不正确),或者没有正式的DNS名字,也可以在这里指定I P地址。当ServerName设置不正确的时候,服务器不能正常启动。

 # ServerName gives the name and port that the server uses to identify itself.90 # This can often be determined automatically, but we recommend you specify91 # it explicitly to prevent problems during startup.    // 建议显式地指定服务器名称...92 #93 # If your host doesn't have a registered DNS name, enter its IP address here.94 #95 #ServerName www.example.com:80

/boot/vmlinuz-4.2.3-... 等是linux的启动内核文件, 其中的z表示的时 压缩, 用bz进行压缩的文件!

821299-20171102101414748-1344989788.png

要明白一个总的原则了, 那就是 在系统中, 除了 用户自己创建的文件外, 即 /home/foo/下的文件, 其他所有 文件, (即在系统安装后, 就有的文件和目录) 都是 超级用户 root创建的! 你想吧, 在系统刚刚建立的时候, 还没有普通用户, 所以这个时候的机器上的东西的的都应该是root所创建的. 因此这些文件和目录都是属于 root:root的, 所以, 对于目录的权限, 最多就是 755, 对于文件的权限, 最多就是 644, 可执行文件最多就是 755. 也就是说 系统中 的绝大多数目录, (除了用户家目录~: /home/foo 之外), 像 /root, /boot, /usr, /bin, /sbin, /var, /etc/等所有的目录 中(由系统原先创建的东西) 都只能 由 root来 写!! 写权限只能是 root的!!!

比如 像 /var, /opt 想起来是 可以随意改变的东西, 随意写的目录, 但是 同样也只能 由root来写 操作!
821299-20171102121203498-1033697882.png

普通用户: 不但不能 touch, vi, cp等方式来创建文件, 即使是使用 mv 命令, 也是不可以 移动到 /opt, /var这些只能由root来 执行 "写"操作的命令!

/var/www/html中的文件的selinu属性?

  1. 要用 root用户 才能 在/var/www/html中创建文件, 因为www/html目录也是 "系统文件夹"
  2. 其selinux的context是: unconfinded_u: object_r: httpd_sys_content_t: s0, 而对应的httpd进程的context是 : httpd_t:s0
  3. 因为/var/www/html中的文件, 允许是非root用户创建, 然后由 root用户 cp/mv过来的, 所以 其用户是unconfined_u非管制用户;
  4. 只要是root用户操作的(也只有root用户)才行, 在/var/www/html中的文件 的 context_t都是 httpd_sys_content_t.
    821299-20171102151312138-1925490805.png

linux中的命令真的就是 一些单词首字母的缩写, 如scl: software collection, 所以 我们自定义的函数,srm svi, scp, smv等就是su -c 'mv...' 等, 看来正好 跟linux的 理念是吻合的!!

要注意 在自定义 smv, scp等命令的时候, 应该有两个参数, 所以函数中要使用到 $1, 和 $2 .

要杀死进程, 有两种方式, 一种是根据 pid, 一种是根据 进程名称:

根据进程pid的是: kill 命令, 可以指定杀死进程 的信号, kill -9 pid
但是有时候, 不需要知道进程的id, 或者说同一个程序名称的 多个 进程同时运行, 需要杀死 这个程序的 所有 进程, 那么就可以使用 : killall application_name. (而不必管进程的pid), 凡是同名的进程都将被杀死.

对于笔记本/键盘, 要保证输入 的高效性和正确性, 首先就是要保证 : 每次 击键 的 有效性和准确性. 一定要 保证每次击键 都确实是生效了的, 倒位了的, 即保证击键的有效性和准确性. 其次, 因为使用拼音输入法, 选字的时候比较多, 所以, 要看准了选对了再操作 ..., 要求就是 击键时, 手指要 垂直/尽量垂直击键, 斜着的时候, 有时候, 就不容易击键到位...没有按到起...
指法更严密, 击键要有弹性, 使用静止的力"按", 就会发生不到位的情况;

查看系统当前的负荷, 用户数目, 正在作什么?

可以用两个命令:

  1. 是uptime
  2. 是 w(w可以看作是 who命令的加强版). 提供更多的信息. 最后的三个数字, 表示 最近的: 1, 5, 15 秒钟 内的平均负荷. 这三个数字, 应小于 逻辑cpu的个数, 比如应低于 4. ...
    w命令的显示项目按以下顺序排列:当前时间,系统启动到现在的时间,登录用户的数目,系统在最近1秒、5秒和15秒的平均负载
    821299-20171102221827107-1810296194.png

关于selinux的开启和关闭, 其实是不会影响/修改httpd的, 所以, 当因为selinux的问题, 而不能访问网页文件的时候, 你关闭selinux, 或者重新修改文件的context后, 并不需要 重启httpd服务, 就可以生效了, 马上就可以看到效果了. 所以 , 有时候, 不能 只是机械的, 直接的 mv到 html目录, 那样的话, 因为seinux的问题, 而被限制访问. 这时, 只要修改文件的selinux type为 : httpd_sys_content_t(注意是content , 不是复数contents)就马上可以访问了.

另外, 不要屏蔽, 关闭, stausbar 中 ,关于selinux的 错误/troubleshooting reporting 错误/派错 报告. 一定要 掌握 selinux的派错 能力.


Sundry

  1. 在httpd访问时, 不一定要求 被访问的文件一定是root的, 是普通用户的也可以, 只要对 httpd 的运行者 apache:apache有访问权, 是可读的就可以了.
    比如 , 这个index.html是foo的, 还是可以访问!

821299-20171103090250232-875521293.png

  1. php的错误和异常的概念上的区别? 参考: http://www.cnblogs.com/taijun/p/4234603.html
  • 错误是程序员自己的代码写错了, 主要是由语法等问题引起的, 包括warning和notice.
  • 异常是由业务逻辑不合预期, 与正常流程不同的情况. 比如被0除. (在语法上是完全通得过的).
    php对异常的操作机制是不健全的, 绝大多数情况下, php不会自动捕获异常, 需要程序员自己主动抛出异常, 即通过if...else的判断去手动抛出异常, 但是这种机制没有太大的意义, 因为如果这样做, 说明程序元自己已经充分认识到错误的发生可能了.....然后自己 去catch异常:

  • php对错误的处理, 是提供了 set_errro_handler( function_name); 进行错误托管, 而使用 restore_error_handler来取消错误托管.

php中错误和异常是两个不同的概念,这种设计根本上导致了php的异常和错误与其它语言相异。j
java中,异常时错误唯一的报告方式。说到底,两者的区别就是对异常的认识不同产生的。php异常绝大部分是通过某种方式手动抛出,才能捕获到。是一种半自动化的异常处理机制。无论是错误还是异常,都可以使用 handler 接管系统已有的处理机制。在php中通常会在以下场景中使用异常:对程序的悲观预测 :如果认为自己的代码无法一一处理各种可预见的情况、不可预见的情况。程序的需要和对业务的关注 : 如果对数据的一致性要求很高时,可以用try...catch把异常造成的逻辑中断破坏将到最小(比如金融交易程序片断) ,并且经过补救处理后,不影响业务逻辑的完整性。语言级别的健壮性要求 : 通过精确控制运行时的流程,在程序中断时,有预见的用try...catch缩小可能出错的范围,及时捕获异常并做出相应的补救。

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

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

相关文章

2021-06-08

opencv无法读取mp4文件opencv读取mp4文件时,总是VideoCapture.isopen()返回0,即无法打开cap。解决方法,将opencv安装包的opencv_videoio_ffmpeg451_64文件复制进工程中。

Cocos2d-3.x版的HelloWorld工程分析 (二)

我们HelloWorld 从applicationDidFinishLaunching()后, 大部分人都会从这部分代码开始研究,如果想要研究main函数 如何调用applicationDidFinishLaunching() 传送门 http://blog.csdn.net/hiwoshixiaoyu/article/details/51472707 #include "App…

NO.1 python_人工智能_学习路线

***##学习路线:* 1.python基础 计算机组成原理、python开发环境、python变量、流程控制语句、文件操作、异常处理、模块与包、飞机大战游戏制作等 2.python高级应用 网络编程、并发编程、数据库编程、正则表达式、Linux系统应用、函数的高级应用、python的语法进阶…

iOS开发网络篇—数据缓存

iOS开发网络篇—数据缓存 一、关于同一个URL的多次请求 有时候,对同一个URL请求多次,返回的数据可能都是一样的,比如服务器上的某张图片,无论下载多少次,返回的数据都是一样的。 上面的情况会造成以下问题 &#xff08…

[WinError 10061] 由于目标计算机积极拒绝,无法连接错误解决办法

爬虫的时候会经常出现"[WinError 10061] 由于目标计算机积极拒绝,无法连接"错误这种情况,有可能是LAN口设置不正确 我是在爬取全国天气情况的时候出现的这种错误,后面调了以后可以了1.控制面板——网络和 Internet—— Internet选项…

这门课有什么用?

每个老师都苦恼于学生常问的问题:“某某课学了有什么用?”老师费劲巴拉解释一通,结果还是:然并卵。 一门课有什么用,很难解释得令人信服,因为这和人的认知水平有关。认知水平达不到,解释的多深入…

NO.1_python_scrapy组成爬取多页数据连接数据库配置文件书写

scrapy框架组成及各部分作用 item pipelines: 用于存放需要存储数据的数据模型,一般格式为: #需要存储多少中类型的数据就写多少行,一般是key_value组合 数据名称,即key scrapy.Field()spiders 用于解析返回来的response im…

“智云大咖秀”:大咖摄影师谈惊艳亮相的“大咖级”设备

古人云,善书者不择笔。 古人又云,工欲善其事必先利其器。 古人很矛盾。 这两句话如果用在影像创作这个领域,可以说都有道理:没有好的设备,创意大师一样能够拍出足够惊艳的作品;有足够强的设备,但…

Cobub无码埋点关键技术的实现

随着大数据时代的到来,数据采集也已经变的越来越重要。前端埋点作为一个比较成熟的数据接入手段被广泛应用着。目前埋点分为两种方式,有码与无码埋点。有码埋点比较容易理解,即调用SDK的API,在代码中插入埋点的相关代码&#xff0…

Dedesql数据库类详解(二次开发必备教程)(转)

http://www.dedecms.com/help/development/2009/1028/1076.html 织梦DedeCMS的二次开发不仅仅是会写写织梦的标签,会制作织梦的模板。很多时候,我们需要对织梦DedeCMS的数据库进行查询、插入、删除等等之类的操作,进行这一类的操作之前&#…

留言板

本软件是作为部门内员工之间留言及发送消息使用。 系统必须通过口令验证,登录进入。方法是从数据库内取出用户姓名和口令的数据进行校验。 系统包含四部分功能 1 登录:验证用户名与口令,保存会话信息,进入主界面。 界面显示代码 &…

2017-2018-1 20155301 《信息安全系统设计基础》第7周学习总结

2017-2018-1 20155301 《信息安全系统设计基础》第7周学习总结 教材学习内容总结 作为我们处理器实现的运行实例,因为受x86-64指令集的启发,它被俗称为“x86”,所以我们称我们的指令集为“Y86-64”,与“x86-64”相比,Y…

Dubbo原理解析-监控

Dubbo发布代码中,自带了一个简易的监控中心实现。对于一般的小业务这个监控中心应该能够满足需求,对于那些大业务量的大公司一般都会有自己的监控中心,更加丰富的功能如常用的报警短信通知等等。这章讲解分析使得读者能够了解一般的监控中心实…

学习笔记(04):Python网络编程并发编程-什么是socket

立即学习:https://edu.csdn.net/course/play/24458/296233?utm_sourceblogtoedu 1.什么是网络编程? 答:网络编程也叫做socket编程即套接字编程,基于遵循socket套接字的规定进行的编程 2.什么是socket? 答:socket就是…

JeeSite 4.0 说说前端的那些事

2019独角兽企业重金招聘Python工程师标准>>> 引言 一个不得不说的话题,经过近几年的发展,Web前端开发已经不是一个新有的岗位了,前端技术发展非常迅速,技术更新换代也很快,对于前端工程师来说是一个很大的挑…

程序包com.sun.istack.internal不存在

添加一下依赖 <!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl --><dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.2.11</version></dependency&…

iOS微博项目(七)发微博和定位

class a导入class b&#xff0c;class b导入class a 会出现错误 如果keyboard不显示&#xff0c;应该是hardware-》connect选择了 1. 发微博UI 2.定位 一直不回调&#xff0c;后来发现是ios8后方法更新了&#xff1a;http://blog.devzeng.com/blog/ios8-corelocation-framework…

设计模式之UML类图

在学设计模式的过程中经常碰到各式各样的UML类图。那些眼花缭乱的符号有什么含义呢&#xff1f; 类图含义 类图中的关系 从网上找来一张图作为实例 依赖关系&#xff1a;比如动物依赖氧气和水&#xff0c;这里如学生要依赖自行车。用虚线箭头表示。关联关系&#xff1a;学生和身…

tomcat启动报:No Spring WebApplicationInitializer types detected on classpath

2019独角兽企业重金招聘Python工程师标准>>> 对于maven项目&#xff0c;tomcat启动不加载spring配置文件&#xff0c;是因为找不到web.xml文件 右键项目properties 选择 Deployment Assembly 编辑 Web Deployment Assembly&#xff0c;注意主要是红色线框中的路径 …

Linux-正则表达式学习(精)

正则表达式30分钟入门教程 来园子之前写的一篇正则表达式教程&#xff0c;部分翻译自codeproject的The 30 Minute Regex Tutorial。 由于评论里有过长的URL,所以本页排版比较混乱,推荐你到原处查看,看完了如果有问题,再到这里来提出. 一些要说的话&#xff1a; 如果你没有正则表…