【实习日志】7.14日学习输出

学习任务1:

  • 完成postman,nginx代理的学习
  • 完成ECMAScript/typescript的入门学习

学习任务2:

  • 熟悉es6的基本数据类型和常见语法
  • 熟悉ts的类型系统和常见语法

Nginx

定义

是一个十分轻量级的HTTP服务器,是一个高性能的HTTP和反向代理服务器,同时也是一个支持IMAP/POP/SMTP的代理服务器。

具有的优点

1.具有很好的稳定性、丰富的模块库、灵活的配置和低系统资源的消耗。

2.它响应静态页面的速度非常快,对于proxy和rewrite模块的支持很彻底,还支持mod_fcgi、ssl、vhosts,适合用来做mongrel clusters的前端。

3.当然最主要的有点是性能优化方面,实现上非常注重效率,有报告标明能支持高达50000个并发连接数。

4.Nginx采用的master-salve模型,能够充分利用SMP的优势,且能够减少工作进程在磁盘IO上的阻塞延迟,当采用select()/poll()调用时,还可以限制每个进程的连接数

为什么能够处理较多的并发连接?

Nginx采取分段资源分配技术,使得它的CPU与内存占用率非常低,这样子即使同时接受到很多的恶意请求DOS攻击都可以有效的处理。

Nginx的配置文件包括

全局块:配置影响nginx全局的指令,一般有运行nginx服务器的用户组,进程ID存放路径等

event块:配置影响nginx服务器或与用户的网络连接。如每个进程的最大连接数,选取那种事件驱动模型处理连接请求等

http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,日志自定义等,是否使用snedfile,传输文件,连接超时时间,单连接请求数

upstream块:负载均衡配置模块

server块:配置虚拟主机的相关参数

location块:配置请求的路由,以及各种页面的处理情况

nginx -t        查看配置文件是否有错误
nginx -s -reload重启nginx,重新加载nginx
nginx -s quit关闭nginx

利用Nginx搭建静态服务器:

1.下载安装nginx,这里选择安装的是nginx1.17.6版本,下载完成之后解解压安装在H盘下。

2.启动方式:

①直接点击nginx.exe文件,之后在浏览器访问默认的
http://localhost/
 

②打开cmd控制台,使用指令进入到文件夹目录下,然后代用exe文件

4

运行结果展示,证明nginx能够正常运行

 

 修改与nginx.exe同目录下的nginx.conf配置文件,进行处理器数量,日志路径,Pid文件路径等的修改

 

重启nginx.exe之后,在地址兰输入http://127.0.0.1:8008/work/

 结果如下,可以看到和work目录下的内容一致

nginx虚拟机

1.添加两个基于不同域名的虚拟主机,域名分别为www.test1.com和www.test2.com,

2.相应的再html文件下编写两个虚拟主机的index.html页面文件

3.修改自己电脑的本地DNS文件目录,C:\Windows\System32\drivers\etc\hosts文件打开修改其中的localhost域名 

在浏览器中分别打开www.test1.com:8088  和www.test2.com:8088地址可以分别对两个虚拟主机进行访问。

nginx反向代理

正向代理:是一个位于客户端和原始服务器之间的服务器,为了从原始服务器区的内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端,客户端才能使用正向代理。

反向代理:是指以代理服务器来接受Internet上的连接请求,探后将请求转发给内部网络上的服务器,并将服务器上得到的结果返回给客户端,此时代理服务器对外就表象为一个反向代理服务器。

负载均衡:在服务器集群中,nginx起到了一个代理服务器的角色,为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器,目前nginx服务器的upstream支持6中方式的分配

轮询默认方式
weight权重方式
ip_hash根据IP分配方式
least_conn最少连接方式
fair(第三方)响应事件方式
url_hash根据URL分配方式

POSTMAN:

介绍:postman是一款强大的http调试软件

可以进行请求测试,输入网址后向目的服务器发送请求并可以检测保存返回的结果。

还能进行文件上传测试、压力测试。

ES6常见数据类型

基本数据类型

ES6的基本数据类型有7种:

Number:数值类型

String:字符串类型

Boolean:布尔类型

null:空值

undefined:未定义,表示变量未定义

symbol:符号类型

bigint:大整数类型

引用数据类型:

object:对象

function :函数

object有包括有:普通对象,数组对象(array),正则对象(regexp),日期对象(date),Math数学函数对象

其中symbol作为ES6新增的一种数据类型,本质上是表示一个唯一标识,每次创建一个symbol,它所代表的值都不可能重复。理论上symbol的存在只有一个意义:用于必须使用唯一值的场景。

1.number


// number数据类型,采用的IEE 754格式表示整数和浮点值
// 不同的数值类型有不同的数值字面量格式
// 最基本的数值字面量格式是十进制,也可以是八进制(0o开头),十六进制(0x开头)

console.log("常见的整数")
let intNum = 55;           //十进制整数55
console.log("十进制整数:"+intNum);

let octalNum = 0o70;       //八进制整数56
console.log("八进制整数:"+octalNum);

let hexNum = 0x39;         //十六进制整数57
console.log("十六进制整数:"+hexNum);



// 浮点值数值中必须包含小数点,且小数点后必须至少有一个数字
// 对于非常大的或非常小的数值,浮点值可以科学计数法表示
// 浮点值的精确度虽然很高但是在算数计算中远不如整数准确
console.log("浮点数")
let floatNum1 = 1.1;
let floatNum2 = 0.1;
let floatNum3 = .1;        // 有效,但不推荐
let floatNum4 = 3.125e7;   // 等于 31250000
let a = 0.1, b = 0.2;
console.log(a + b);        //0.30000000000000004 !== 0.3

// 有一个特殊的数值NaN,意思是"不是数值",用来表示本来要返回数值的操作失败了
// NaN具有几个特殊的属性:
// 1.任何设计NaN的操作始终返回NaN
// 2.NaN不等于包含NaN在内的任何值
// 3.NaN通过isNaN来判断收到的参数是否"不是数值"
console.log("NaN 相关的操作")
console.log(0/0);          //NaN
console.log(5/0);          //Infinity
console.log(5/-0);         //-Infinity
console.log(NaN == NaN);   //false
console.log(isNaN(NaN));   //true
console.log(isNaN(10));    //false,10是数值
console.log(isNaN("10"));  //false,"10"可以转换为数值10
console.log(isNaN("ES"));  //true,"ES"无法转换为数值
console.log(isNaN(true));  //false,true可以转换为数值1,false可以转换为数值0


// 数值转换
// Number()  
//     布尔值,true转换为1 ,false转换为0
//     null返回0
//     undefined 返回NaN
//     字符串:
//         包含有数值字符,包括数值字符前面带有-,+的情况,转换成十进制数值
//         包含有效的浮点值格式"1.1",转换成相应的浮点值
//         包含有有效的十六进制格式如"0xf",则会转换为与该十六进制值对应的十进制整数值
//         如果是空字符串(不包含字符),则返回0。
//         其他情况返回NaN
console.log("number数值转换")
let num1 = Number("Hello world!");            // NaN
console.log(num1);
let num2 = Number("");                        // 0
consolee.log(num2);
let num3 = Number("000011");                  // 11
console.log(num3)
let num4 = Number(true);                      // 1
console.log(num4)


// // parseInt()

// parseFloat()

2.string

string 字符类型表示0或多个16位Unicode字符序列,字符串可以使用单双引号来表示

let name1 = "Jack";
console.log(name1);
let name2 = 'Mary';

// 字符串一旦创建,其值就不可以改变,若要修改必须先销毁原始的字符串
// 然后将包含新值的另一个字符串保存到该变量
// let name1 = "jack2" // 报错,无法重新声明


name1 = name1 +"javascipt"
console.log(name1)
// String()转型函数
// 转换时遵循的原则是:
// 1.如果值有toString()方法,则调用该方法(不传参数)并返回结果。
// 2.如果值是null,返回"null"
// 3.如果值是undefined,返回"undefined"
let value1 = 10;
let value2 = true;
let value3 = null;
let value4;
console.log(String(value1));                // "10"
console.log(String(value2));                // "true"
console.log(String(value3));                // "null"
console.log(String(value4));                // "undefined"

3.Boolean类型值

Boolean(布尔值)类型有两个字面值:true 和false。这两个布尔值不同于数值,因此true 不等于1,false 不等于0。下面是其他类型的值与boolean类型值的等价关系

数据类型为true为false
Booleantruefalse
string非空空字符串
number非00、NaN
object任意对象null
undefined无true情况undefined

let found = true;
let lost  =false;

// Boolean()可以将其他类型的值转换等价的布尔值形式
let message = "Hello ECMAScript!";
console.log(typeof message);              //string
let messageAsBoolean = Boolean(message);
console.log(typeof messageAsBoolean);     //boolean

4.undefined

使用 var 或 let 声明了变量但没有初始化时,就相当于给变量赋予了undefined 值

let message1;
console.log(message1,typeof message1);   // undefined  'undefined'
// 包含undefined值的变量和未定义变量是有区别的
// 已声明但是未初始化的变量,在执行的consol.log()的时候会指出“undefined”
// 未声明的变量只能执行typeof,执行完的结果就是字符“undefined”

let message;
console.log(message);          //undefined
console.log(age);              //报错
console.log(typeof message);   //undefined
console.log(typeof age);       //undefined

5.null

NULl类型同样只有一个值,特殊值null。

1.typeof传入null会返回““object”

2.undefined值是有null值派生而成的,因此它们被定义为表面上相等,但是在全等比较的时候,它们是不同的。

let  name1 = null;

console.log("typeof name1:",typeof name1);
// object
console.log("null == undefined",null == undefined);
// true
console.log("null === undefined",null === undefined);
// false

6.symbol数据类型

symbo(符号)是ES6中新增的数据类型。symbol是原始值,且symbol实例是唯一不可变的

。用途主要是确保对象属性使用唯一标识符,不会发生属性冲突的危险

符号需要使用Symbol()函数初始化,因为符号本事是原始类型,所以typeof操作符对符号返回symbol。调用Symbol()函数时,也可以传入一个字符串数作为对符号的藐视,将来可以通过这个字符串来调试代码,但是,这个字符串参数与符号定义或标识完全无关

let sym1 = Symbol();
let sym2 = Symbol();
console.log(sym1,sym2);        //Symbol() Symbol()
console.log(sym1 == sym2);     //false
 
let sym3 = Symbol('foo');
let sym4 = Symbol('foo');
console.log(sym3 == sym4);     //false

// 可以看出,symbol与引用一般,变量相当于指针,指向的地址是不相同的
// 注意:Symbol()函数不能与new关键字一起作为构造函数使用

7.BigInt

BigInt是一种数字类型的数据,它可以标识大于2^53-1的整数,使用BigInt可以安全地存储和操作大整数,即使这个数已经超出了Number能够表示的安全整数范围。

定义方式:

1.直接BigInt(数值)

2.在整数字面量的后面加n来定义一个BigInt

特点:

1.不能想Number一样使用Math对象中的方法

2.不能和任何Number实例混合运算,需要转换成一种类型后运算

3.BigInt转换成number时候可能会出现精度丢失现象

const theBiggestInt = 9007199254740991n;
const alsoHuge = BigInt(9007199254740991);          // 9007199254740991n
const hugeString = BigInt("9007199254740991");      // 9007199254740991n
const hugeHex = BigInt("0x1fffffffffffff");         // 9007199254740991n
const hugeBin = BigInt("0b11111111111111111111111111111111111111111111111111");
                                                    // 9007199254740991n

8.object 

对象被定义为一组属性的无序结合,对于每个属性或方法都由一个名称来标识,

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值