node js day1

nodejs

什么是nodejs

1.运行在服务端的软件

2.后端程序的辅助软件

 

在哪里可以下载nodejs

下载软件:
    官方网站:
        https://nodejs.org/en/
    下载历史版本:
        https://nodejs.org/zh-cn/download/releases/
    建议:不建议使用最新版本
    下载完成后傻瓜式安装
下载完成以后,双击软件包,进行安装,按win键+R 出现一个运行窗口 输入cmd 进入dos命令
在dos命令中输入 node-v 如果出现 版本号,表示安装成功
然后输入 npm -v 查看npm版本  npm是安装软件的 类似于 苹果中的应用商店 安卓中的安卓市场

nodejs能干什么

  • 可以解析js代码

  • 可以搭建http服务 (搭建服务器)

  • 操作数据库

 

nodejs的特点:

  • 单线程操作(一个服务员服务多个客户) node是单线程的

    • 定义:客户端发送的每一个请求,都会交给node服务器,node服务器,对应的创建一个进程去解决你的请求

    • 缺点:不稳定,一旦出问题不好解决

    • 优点:单兵作战能力强

  • 多线程操作(多个人服务多个人)

    • 定义:客户端发送的每一个请求,都会交给服务器,单独的每一个请求都会创建一个进程去解决你的请求

    • 缺点:占用资源大,单兵作战能力差

    • 有点:稳定相对会好一些

 

基于事件驱动

  • 事件:用户的操作,当鼠标或者是键盘对文档(docuemnt)进行操作的时候,会调用指定的程序去执行

    • button div p img 找对象 绑定事件 调用对应的方法

    • 事件驱动:用户操作过程中达到的指定的效果(产生事件后,会产生什么样的效果)

 

具有强大的npm包管理工具

npm 就是下载软件及服务
我们需要安装一下软件的时候,需要在dos命令行中输入: npm install 软件包名

使用nodejs执行我们的js代码

1.需要创建一个扩展名为 xxx.js文件
2.在cmd中将路径切换到项目的目录  cd 命令 切换目录  dir 查看当前目录中的多有文件及目录
3.在使用node执行 js文件的时候,需要在dos命令窗口中 输入 node js文件 在js文件中的console.log 不会打印到浏览器的控制台,会在黑窗口中看到

 

 

 

 

1.node基本格式

// node 可以搭建http服务器
// 1.引入http模块
var http=require('http')

// 2.创建一个http服务
var server=http.createServer(function(req,res){
	// 服务端要告诉客户端,传输完毕,无需等待
	res.end('over')

})

// 3.设置监听端口
 server.listen(8090)

/* 
 访问方式:
    在访问服务器的时候,需要先启动服务器,在cmd中 输入node js 文件(服务文件),会发现没有报错
	就表示服务已经启动
	在浏览器上输入:localhost(本机)  ip  127.0.0.1
	访问服务器的时候:主机:端口号 localhost:8090

	注意:如果改了服务的代码,必须重新启动服务


 */


2.获取请求数据

// 1.引入http服务
var http=require('http')
// 引入url模块
var urll=require('url')

// 创建http服务
var server=http.createServer(function(req,res){
	// 请求报文--》客户端告诉服务端的信息
	// req -> request (请求报文)
	// res -> response(相应报文)

	// 1.获取请求方法
	console.log('---------------1-----------------');
	var method=req.method;
	console.log(method);

	// 2.获取请求路径
	console.log('---------------2-----------------');
	var url=req.url;
	console.log(url);

	// 3.获取请求头信息
	console.log('---------------3-----------------');
	var header=req.headers;
	console.log(header);


	console.log('---------------4-----------------');
	// 4.获取header中的host的值
	var host=header.host;
	console.log(host);

	// 参数:url地址参数 http://域名.com?键=值&键=值&.......
/* 
	5.获取url地址中的参数

	需要引入一个模块 url 模块
	因为在这个模块中有一个方法 parse方法
	  参数1:要解析的url地址
	  参数2:为true 会把解析的结果变成对象
 */
	  //http://localhost:8090/?name=libai&age=19
	  console.log('---------------5-----------------');
	  var par=urll.parse(url,true)
	  console.log(par.query);
	  console.log(par.query.age);
	  res.end()
})
// 3.设置监听
server.listen(8090);

3.设置请求信息

//1.引入 http服务
var http=require('http')

// 引入url模块
var urll=require('url')

// 2. 创建http服务
var sever=http.createServer(function(req,res){

	// 相应报文的设置
	// 设置相应头

	res.setHeader('name','lisi');
	// 设置状态码
	res.statusCode=400;
	//在network 中的headers中的Status Code: 400 Bad Request



// 服务端返回给客户端

res.write(`
<!DOCTYPE HTML>
			<html>
				<head>
					<title></title>
					<meta charset="utf-8"/4
				</head>
				<body>
					<h1>我是服务端返回的一级标题</h1>
				</body>
			</html>
`)

// res.write('memeda')
res.end()

})

// 3.设置监听端口
sever.listen(8090)

4.加载静态资源

var http=require('http')
var fs=require('fs')
var sever=http.createServer(function(req,res){
	// 如何加载静态资源
	// 静态资源
	//   html文件 css js img 。。。。
	//   如果想要加载静态资源想要引入静态资源模块(fs)
	//   1.fs(加载资源模块)
	  var fs=require('fs')
/* 
	  2.获取url
	  读取静态资源
	  语法格式:
	     fs.readFile(参数1,参数2)
		    参数1:静态资源的文件路径+文件
			参数2:是一个匿名函数
			    函数
				   参数1:err(错误)
				   参数2:data(数据)
 */
	// 获取url:例如 http://localhost:8090/index login  reg

	var url=req.url;
	console.log(url);
	if(url=='/static'){
		console.log('holo ');
		// 加载静态资源
		fs.readFile('./static.html',function(err,data){
			// 判断是否有错误
			if(err){
				res.write(`
				<!DOCTYPE html>
						<html>
						<head>
							<title></title>
							<meta charset="utf-8">
						</head>
						<body>
							<h4>404<br/>Not Found
The requested URL /asdfasdf was not found on this server.</h4>
						</body>
						</html>
				`)
				res.end();
			}else{
				res.write(data)
				res.end()
			}
		})
	}
	// 加载css
	if(url=='/css'){
		fs.readFile('./public/css/static.css',function(err,data){
			console.log(data);
			if(err){
				res.write('404')
				res.end()
			}else{
				
				res.write(data)
				res.end()
			}
		})
	}
	// 加载img
	if(url=='/img'){
		fs.readFile('./public/images/1.jpg',function(err,data){
			if(err){
				res.write('404')
				res.end()
			}else{
				res.write(data)
				res.end();
			}
		})
	}
})
sever.listen(8090)

5.加载html中的文件 走第二分支的方法

var http = require("http");
var fs = require("fs");
  server = http.createServer(function(req,res){
	//获取url
	var url = req.url;
	console.log(url);
	//通过url路径,根据路径是什么,加载不同的静态资源
	if(url == '/static2'){
		//加载static2.html页面
		//console.log(url);
		fs.readFile("./static2.html",function(err,data){
			if(err){
				res.write('404');
				res.end();
			}else{
				res.write(data);
				res.end();
			}
		})
	}else{
		//console.log(url);
		var p = '.'+url;// public/images/1.jpg
		console.log(p);
		fs.readFile(p,function(err,data){
			if(err){
				res.write("404");
				res.end();
			}else{
				res.write(data);
				res.end();
			}
		})
		
	}
})
server.listen(8090)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在信号处理领域,DOA(Direction of Arrival)估计是一项关键技术,主要用于确定多个信号源到达接收阵列的方向。本文将详细探讨三种ESPRIT(Estimation of Signal Parameters via Rotational Invariance Techniques)算法在DOA估计中的实现,以及它们在MATLAB环境中的具体应用。 ESPRIT算法是由Paul Kailath等人于1986年提出的,其核心思想是利用阵列数据的旋转不变性来估计信号源的角度。这种算法相比传统的 MUSIC(Multiple Signal Classification)算法具有较低的计算复杂度,且无需进行特征值分解,因此在实际应用中颇具优势。 1. 普通ESPRIT算法 普通ESPRIT算法分为两个主要步骤:构造等效旋转不变系统和估计角度。通过空间平移(如延时)构建两个子阵列,使得它们之间的关系具有旋转不变性。然后,通过对子阵列数据进行最小二乘拟合,可以得到信号源的角频率估计,进一步转换为DOA估计。 2. 常规ESPRIT算法实现 在描述中提到的`common_esprit_method1.m`和`common_esprit_method2.m`是两种不同的普通ESPRIT算法实现。它们可能在实现细节上略有差异,比如选择子阵列的方式、参数估计的策略等。MATLAB代码通常会包含预处理步骤(如数据归一化)、子阵列构造、旋转不变性矩阵的建立、最小二乘估计等部分。通过运行这两个文件,可以比较它们在估计精度和计算效率上的异同。 3. TLS_ESPRIT算法 TLS(Total Least Squares)ESPRIT是对普通ESPRIT的优化,它考虑了数据噪声的影响,提高了估计的稳健性。在TLS_ESPRIT算法中,不假设数据噪声是高斯白噪声,而是采用总最小二乘准则来拟合数据。这使得算法在噪声环境下表现更优。`TLS_esprit.m`文件应该包含了TLS_ESPRIT算法的完整实现,包括TLS估计的步骤和旋转不变性矩阵的改进处理。 在实际应用中,选择合适的ESPRIT变体取决于系统条件,例如噪声水平、信号质量以及计算资源。通过MATLAB实现,研究者和工程师可以方便地比较不同算法的效果,并根据需要进行调整和优化。同时,这些代码也为教学和学习DOA估计提供了一个直观的平台,有助于深入理解ESPRIT算法的工作原理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值