From ca50b6ffb4fd919b036bb23a989743b0ec9e782c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9F=A6=E6=B0=B8=E9=9F=AC?= <1795535399@qq.com> Date: Mon, 13 Feb 2023 20:47:09 +0800 Subject: [PATCH 1/2] a --- .../1\345\210\235\345\247\213node.md" | 179 ++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100755 "node\347\273\203\344\271\240/1\345\210\235\345\247\213node.md" diff --git "a/node\347\273\203\344\271\240/1\345\210\235\345\247\213node.md" "b/node\347\273\203\344\271\240/1\345\210\235\345\247\213node.md" new file mode 100755 index 0000000..4053013 --- /dev/null +++ "b/node\347\273\203\344\271\240/1\345\210\235\345\247\213node.md" @@ -0,0 +1,179 @@ +## 微专业 3,4月份会开设微专业 + +### 实施工程师 + +​首先,在整个互联网行业中,主要基石就是研发。研发人员负责软件的开发和需求定制,设计人员负责绘制软件logo、图标和版式,封装完成之后,打成软件包,如.exe、.war等格式的安装包,此时产品完成。销售人员把产品销售给客户后,诞生了一个问题:研发会安装,但是他需要查找漏洞发布补丁或者写新的产品;销售不懂技术,无法教给客户使用。所以有需求才有市场,诞生了一个新的岗位:实施工程师。那么说实施工程师负责的内容,就是把产品的安装包带到客户现场,进行安装和调试,并且教给客户如何使用,不恰当的比喻可以理解为一个经常出差的弱化版的研发。 + +实施开发工程师与软件开发工程师不同,实施开发人员事实上很少接触到项目的编码,主要以数据库的操作,编码存储过程和数据转换为主,因而工作多年后在编码能力上非常弱。但是实施开发工程师极其了解项目的业务逻辑,擅长客户沟通。继而多以需求沟通分析为主,而对于实施工程师而言,多以项目经理与管理行政为发展方向。当然数据库管理员是最理想的职位。 + +### 硬件实施 + +​​首先看到“硬件”二字,有的人可能会理解为干体力活,搬东西。其实不然,举个最简单的例子:个人电脑上的QQ,是软件,如果你把QQ.exe带到客户现场,没有服务器等硬件设备作为支撑的话软件也是无法安装运行的。所以,硬件实施的职责,就是负责把硬件设备带到客户现场进行安装调试,中间可能会需要体力付出,比如拉货,但是大部分情况下是不需要的。当然,货拉来摆上并不意味着完了,硬件实施也需要一定的软件基础,举个例子:你新买一台无系统的电脑,是需要装操作系统的,涉及到硬盘分区、系统引导等知识。所以,硬件实施也是需要了解软件知识,简单的如:系统安装,稍微难的,例如:交换机的调试、防火墙的配置等。所以,想要从事硬件实施工程师,你可以不会SQL语句等操作,但是必须要会Linux等指令型的知识。 + + +### 软件实施 + +当硬件实施将客户现场的硬件环境搭建好之后,就到了软件实施大显身手的时刻。首先,就系统软件层来讲,可能操作系统为Windows、也可能为Linux,所以软件实施要懂得系统的基本操作、指令以及一些简单问题的处理;其次,产品本身要存放数据的,所以要学会对数据库的使用,由于大部分实施工程师的权限不够高,所以只需要掌握基本的查询语句即可,当然,要想在这一行有个更好的发展,一些高级用法,比如:存储过程、触发器、索引等也是需要会写,这个是后话;然后,在软件实施工作时,硬件实施应该离开客户现场了,这时也需要掌握一些常见的硬件问题排查,比如Windows蓝屏代码阅读、网络无法连接等;最后,客户可能会需要一些文档,比如培训PPT、实施方案等,所以,也需要对office办公软件有一定的知识掌握。 + + +### 运维工程师 + + +在谈及运维工程师之前,首先了解一个软件行业的基本概念:厂家、渠道(集成商)和客户:厂家研发产品,但是不会直接售卖给客户,客户购买产品需要进行招标,那么渠道就是中间人。所以在厂家的软件实施、硬件实施都完成工作后,渠道会给客户派运维人员进行售后运维工作。其主要工作内容,就包括:熟知客户软硬件环境、了解客户使用的产品等,所以侧面也说明了,运维工程师需要了解的技术知识要比实施人员更杂,需要了解到多方位的信息,全方位懂得如何排障,以及在无法处理的情况如何及时联系实施人员,确保得到厂家的售后技术支持。总的来说,运维工程师是博众家之长,集大成者。 + + +### 技术支持 + +技术支持这个岗位,相比于前三者而言,属于较为轻松的一个。技术支持一般不需要出差,以在公司办公为主,基本为电话、远程解决客户提出的问题,可以简单理解为实施人员的附属团队,实施人员负责前期安装调试,技术支持人员负责后期简单的问题解答,以及无法处理时联系研发、实施人员获得解决办法。所以需要了解的技术和实施人员相似,在此不做复述。 + +### 测试工程师 + +简单的说就是对开发的项目进行测试,看功能是否能达到产品的业务逻辑. + + +## 课程安排 + +本学期的三门课:node(后端技术) vue(国内最热的前端的框架) webapi(以java的springboot为例) + +7,8月安装实训项目 + + + +## 什么是node + +从本章开始,我们就正式开启JavaScript的后端开发之旅。 + +Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 + +众所周知,在Netscape设计出JavaScript后的短短几个月,JavaScript事实上已经是前端开发的唯一标准。 + +后来,微软通过IE击败了Netscape后一统桌面,结果几年时间,浏览器毫无进步。(2001年推出的古老的IE 6到今天仍然有人在使用!) + +没有竞争就没有发展。微软认为IE6浏览器已经非常完善,几乎没有可改进之处,然后解散了IE6开发团队!而Google却认为支持现代Web应用的新一代浏览器才刚刚起步,尤其是浏览器负责运行JavaScript的引擎性能还可提升10倍。 + +先是Mozilla借助已壮烈牺牲的Netscape遗产在2002年推出了Firefox浏览器,紧接着Apple于2003年在开源的KHTML浏览器的基础上推出了WebKit内核的Safari浏览器,不过仅限于Mac平台。 + +随后,Google也开始创建自家的浏览器。他们也看中了WebKit内核,于是基于WebKit内核推出了Chrome浏览器。 + +Chrome浏览器是跨Windows和Mac平台的,并且,Google认为要运行现代Web应用,浏览器必须有一个性能非常强劲的JavaScript引擎,于是Google自己开发了一个高性能JavaScript引擎,名字叫V8,以BSD许可证开源。 + +现代浏览器大战让微软的IE浏览器远远地落后了,因为他们解散了最有经验、战斗力最强的浏览器团队!回过头再追赶却发现,支持HTML5的WebKit已经成为手机端的标准了,IE浏览器从此与主流移动端设备绝缘。 + +浏览器大战和Node有何关系? + +话说有个叫Ryan Dahl的歪果仁,他的工作是用C/C++写高性能Web服务。对于高性能,异步IO、事件驱动是基本原则,但是用C/C++写就太痛苦了。于是这位仁兄开始设想用高级语言开发Web服务。他评估了很多种高级语言,发现很多语言虽然同时提供了同步IO和异步IO,但是开发人员一旦用了同步IO,他们就再也懒得写异步IO了,所以,最终,Ryan瞄向了JavaScript。 + +因为JavaScript是单线程执行,根本不能进行同步IO操作,所以,JavaScript的这一“缺陷”导致了它只能使用异步IO。 + +选定了开发语言,还要有运行时引擎。这位仁兄曾考虑过自己写一个,不过明智地放弃了,因为V8就是开源的JavaScript引擎。让Google投资去优化V8,咱只负责改造一下拿来用,还不用付钱,这个买卖很划算。 + +于是在2009年,Ryan正式推出了基于JavaScript语言和V8引擎的开源Web服务器项目,命名为Node.js。虽然名字很土,但是,Node第一次把JavaScript带入到后端服务器开发,加上世界上已经有无数的JavaScript开发人员,所以Node一下子就火了起来。 + +在Node上运行的JavaScript相比其他后端开发语言有何优势? + +最大的优势是借助JavaScript天生的事件驱动机制加V8高性能引擎,使编写高性能Web服务轻而易举。 + +其次,JavaScript语言本身是完善的函数式语言,在前端开发时,开发人员往往写得比较随意,让人感觉JavaScript就是个“玩具语言”。但是,在Node环境下,通过模块化的JavaScript代码,加上函数式编程,并且无需考虑浏览器兼容性问题,直接使用最新的ECMAScript 6标准,可以完全满足工程上的需求 + +## 环境的安装 + + +官网:https://nodejs.org/en/download/ + + +### 怎么判断有没安装成功 + +在cmd终端输入node如果有输出版本信息等则安装成功 + +## 第一个node代码 + +```javascript + +console.log("hello world"); + +``` +## 什么是npm + +npm是什么东东?npm其实是Node.js的包管理工具(package manager),比较新的node(node11以上)都自带了npm. + +为啥我们需要一个包管理工具呢?因为我们在Node.js上开发时,会用到很多别人写的JavaScript代码。如果我们要使用别人写的某个包,每次都根据名称搜索一下官方网站,下载代码,解压,再使用,非常繁琐。于是一个集中管理的工具应运而生:大家都把自己开发的模块打包后放到npm官网上,如果要使用,直接通过npm安装就可以直接用,不用管代码存在哪,应该从哪下载。 + +更重要的是,如果我们要使用模块A,而模块A又依赖于模块B,模块B又依赖于模块X和模块Y,npm可以根据依赖关系,把所有依赖的包都下载下来并管理起来。否则,靠我们自己手动管理,肯定既麻烦又容易出错。 + +### 注意现有的版本(16)的node是自带npm的,早期的版本10的node以下是不带npm + + +## 查看npm的版本 + +```javascript + + npm -v + + +``` + +## git 工具,码云,github,gitlab(相对少点) git之父:linux之父 + + +node作业:https://gitee.com/lai123/class6nodehomework/invite_link?invite=7ec51fa0a5171339cd80d606a438442e8f23f6d9069ee2ad8b40572f73d50c1eac58cac1038731afe766b0d826817bc9 + +node课件地址:https://gitee.com/lai123/21st-node-courseware/invite_link?invite=7ec51fa0a5171339cd80d606a438442ef3f35ea4ed1da3458b40572f73d50c1e08e9827e84effb33e766b0d826817bc9 + + + +### 要记得切分支,master(主分支),工作中会创建一个 developer (开发)分支 + + +master 分支是最终分支,生产环境就用master分支。developer 是开发分支,开发最终都是合并到developer分支 + + +git branch 查看分支,和创建分支(创建分支需要具体给个分支名称) + + +git checkout '分支名' 切换分支 (提交作业时每个同学自己起一个分支名称) + + +commit 和 push 提交跟邱老师之前说的一样 + + +提交作业时候:在自己码云上提交一个 pr(到master分支) + + + + +## 作业:搭建node环境 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- Gitee From f0e7bff4116df5ca4ee8175a26e014593b61e285 Mon Sep 17 00:00:00 2001 From: hh Date: Tue, 14 Feb 2023 17:04:12 +0800 Subject: [PATCH 2/2] =?UTF-8?q?'=E6=A8=A1=E5=9D=97'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20230214\346\250\241\345\235\227/a.js" | 5 +++++ .../modul/modul.js" | 15 +++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 "node\347\273\203\344\271\240/20230214\346\250\241\345\235\227/a.js" create mode 100644 "node\347\273\203\344\271\240/20230214\346\250\241\345\235\227/modul/modul.js" diff --git "a/node\347\273\203\344\271\240/20230214\346\250\241\345\235\227/a.js" "b/node\347\273\203\344\271\240/20230214\346\250\241\345\235\227/a.js" new file mode 100644 index 0000000..c78d0d1 --- /dev/null +++ "b/node\347\273\203\344\271\240/20230214\346\250\241\345\235\227/a.js" @@ -0,0 +1,5 @@ +var obj=require("./modul/modul.js"); +console.log(obj.jia(2,3)); +console.log(obj.jian(10,1)); +console.log(obj.cheng(15,1)); +console.log(obj.chu(15,5)); \ No newline at end of file diff --git "a/node\347\273\203\344\271\240/20230214\346\250\241\345\235\227/modul/modul.js" "b/node\347\273\203\344\271\240/20230214\346\250\241\345\235\227/modul/modul.js" new file mode 100644 index 0000000..360f15b --- /dev/null +++ "b/node\347\273\203\344\271\240/20230214\346\250\241\345\235\227/modul/modul.js" @@ -0,0 +1,15 @@ +var calculation={ + 'jia':function(a,b){ + return a+b; + }, + 'jian':function(a,b){ + return a-b; + }, + 'cheng':function(a,b){ + return a*b; + }, + 'chu':function(a,b){ + return a/b; + } +} +module.exports=calculation; -- Gitee