567
社区成员
![](https://csdnimg.cn/release/cmsfe/public/img/topic.427195d5.png)
![](https://csdnimg.cn/release/cmsfe/public/img/me.40a70ab0.png)
![](https://csdnimg.cn/release/cmsfe/public/img/task.87b52881.png)
![](https://csdnimg.cn/release/cmsfe/public/img/share-circle.3e0b7822.png)
很高兴能选到孟老师的高级软件工程这门课。孟老师讲课娓娓道来,循序渐进,使我对软件工程有了更深一步的了解。
对于程序员来说,如果只关注项目代码的具体实现,很容易就被淹没在茫茫多的代码中。无论是想真正的理解一个项目中代码的具体实现,亦或者是上手做一个项目,软件工程的知识都是非常重要的,甚至可以说是必要的。甚至可以说,只有掌握了软件工程相关的知识,才不会成为一个只会crud的码农。
软件工程是一个实践和理论并存的学科,很多理论都是从实践中慢慢总结经验才慢慢发展起来的, 也只有在实践中,这门课程才会发挥自己的真正作用。
第一章从工具开始讲起,包括打字、VSCode、Git、Vim和正则表达式,这些是对于软件开发很重要的基本工具;
第二章使用一个menu程序为例,讲解工程化开发中需要注意的各种问题,包括环境配置、代码规范与代码风格、编写高质量代码的方法、模块化与接口、线程安全等,穿插讲解callback、微服务等知识点;
在第三章中,从获取需求讲起,讲述对需求进行分析和建模的方法,包括用用例建模、对业务领域进行建模、对业务数据进行建模,进一步的,介绍了敏捷统一过程的各个步骤;
在第四章中,讲述了软件是什么以及软件中的一些特殊机制,并引出了设计模式和软件的常见架构、软件的架构风格,最后介绍了软件的质量评价。
在第五章中,老师讲述了软件的生命周期和常见的模型,并介绍了PSP和TSP、CMM/CMMI、敏捷方法、DevOps等内容。
1./word 向下查找名称为word的字符串
2.?word向上查找名称为word的字符串
3.同时搜索多个字符串 /word1|word2|word3
4.大小写:底线命令行模式:set ignorecase ,set noignorecase
正则表达式/wordc(大小写不敏感),/WordC(大小写敏感)
5.通配符“.”,匹配任意一个字符。(hu . -> hug or hud or huc and so on)
6.通配符“+”出现一次或多次。
7.通配符“”出现零次或多次。
8.通配符“?”,?之前的元素是否出现都匹配。
9.字符出现次数为范围时:{num1,num2};例如:a{3,5}h,表示a出现3到5次;a{3,},表示 a出现3次以上。a{3},表示a出现三次。
10.[letter1,letter2,letter3],表示只出现方括号中的一个字符,如b[au]g,匹配bug,bag。
11.连字符“-”表示出现范围,如[a-z] 12.字符“^”定义不想出现的字符[^aeiou]
13.快捷写法,简化规则10,11,12的组合:快捷方式\w -> [A-Za-z0-9]。 快捷方式\W -> [^A-Za-z0-9]。 快捷方式\d -> [0-9]。 快捷方式\D -> [^0-9]。
14.贪婪匹配(默认)与懒惰匹配(懒惰匹配加个?):对于单词titanic,t[a-z]i,将匹配titani; t[a-z]*?i 将匹配ti
15.特殊位置,字符串开头^word;字符串结尾$word;
16.捕获组:(d+)s\1s\1,表示字符串中出现3次数字。
17.字符串替换,1,$s/word1/word2/gc 或 :%s/word1/word2/gc 表示从第一行到最后一行进行全局的字符串替换,将word1替换成word2,c表示confirm,s表示substitute,g表示global。$表示end,之前有提及过。
18.复用捕获组的方式进行替换:1,\(s/(capture groups)/\)1/g
早期的前端开发就是单纯的html+css+js,html铺内容,css设置样式,js做动态效果,其效果相当有限;后来出现了jsp技术,采用MVC模型,页面主要内容可以由后端实现;再后来,前端逐渐独立出来,各种框架层出不穷,其技术复杂度渐渐与后端相当。如今不论是移动端的swiftUI还是前端的Vue、React,它们都采用了MVVM的模型。在这个发展的过程中,逐渐经历了架构上和设计逻辑上的变化,框架做的工作越来越多,程序员可以将更多精力放到业务的实现上。但,如果只是自满于框架的学习,那么就会疲于奔命,不停学习新的框架。要注意到,现代这些框架的本质是大差不差的,而软件工程正是揭示了其中的奥秘所在,即MVVM模型以及设计模式等。熟悉掌握这些知识,无疑会成为自己核心竞争力。
孟宁老师的课程主页:https://gitee.com/mengning997/se