Node.js中使用MongoDB数据库
1. 数据库概述及环境搭建1.1 为什么要使用数据库
动态网站中的数据都是存储在数据库中的
数据库可以用来持久存储客户端通过表单收集的用户信息
数据库软件本身可以对数据进行高效的管理http://www.lovekhh.xyz/blog/9http://www.lovekhh.xyz/blog/9
1.2 什么是数据库数据库即存储数据的仓库,可以将数据进行有序的分门别类的存储。它是独立于语言之外的软件,可以通过API去操作它。常见的数据库软件有:mysql、mongoDB、oracle。
1.3 MongoDB数据库下载安装下载地址:https://www.mongodb.com/download-center/community
###1.4 数据库相关概念在一个数据库软件中可以包含多个数据仓库,在每个数据仓库中可以包含多个数据集合,每个数据集合中可以包含多条文档(具体的数据)。
1.5 Mongoose第三方包
使用Node.js操作MongoDB数据库需要依赖Node.js第三方包mongoose
使用npm install mongoose命令下载
###1.6 启动M ...
请求响应原理及HTTP协议
1. 服务器端基础概念1.1 网站的组成网站应用程序主要分为两大部分:客户端和服务器端。客户端:在浏览器中运行的部分,就是用户看到并与之交互的界面程序。使用HTML、CSS、JavaScript构建。服务器端:在服务器中运行的部分,负责存储数据和处理应用逻辑。
1.2 Node网站服务器能够提供网站访问服务的机器就是网站服务器,它能够接收客户端的请求,能够对请求做出响应。
1.3 URL统一资源定位符,又叫URL(Uniform Resource Locator),是专为标识Internet网上资源位置而设的一种编址方式,我们平时所说的网页地址指的即是URL。
URL的组成传输协议://服务器IP或域名:端口/资源所在位置标识http://www.lovekhh.xyz/admin/blogshttp:超文本传输协议,提供了一种发布和接收HTML页面的方法。
2. 创建web服务器创建web服务器
123456789101112 // 引用系统模块const http = require('http'); // 创建web服务器cons ...
Node.js模块化开发
1.Node.js模块化开发JavaScript在使用时存在两大问题,文件依赖和命名冲突。
1.1 Node.js中模块化开发规范Node.js规定一个JavaScript文件就是一个模块,模块内部定义的变量和函数默认情况下在外部无法得到模块内部可以使用exports对象进行成员导出, 使用require方法导入其他模块。
1.2 模块成员导出12345678// a.js // 在模块内部定义变量 let version = 1.0; // 在模块内部定义方法 const sayHi = name => `您好, ${name}`; // 向模块外部导出数据 exports.version = version; exports.sayHi = sayHi;
1.3 模块成员的导入12345678// b.js // 在b.js模块中导入模块a let a = require('./b.js'); // 输出b模块中的version变量 console.log(a.version); // 调用b模块中的sayHi方法 并输出其返 ...
NIO入门
Java NIOJava NIO (New IO)是从Java1.4版本开始引入的一个新的IO API,可以替代次奥准的Java IO API。NIO支持面向缓冲区的,基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。这篇文章是根据课件做的学习笔记,比较长。可以根据选择查看。
比较NIO与IO特性对比
面向流与面向缓冲区的区别以及对通道与缓冲区的理解面向流是单向的,文件与程序之间建立数据流,输入流和输出流都需要建立不同的“管道”。抽象的理解为自来水管和下水道吧,水就是传输的数据。
面向缓冲区,文件与程序之间建立通道,里面存在缓冲区。抽象的理解可以把通道认为是铁路,缓冲区认为是一辆火车,而载着的货物也就是所要传输的数据了。
简单认为:通道负责传输,缓冲区负责存储。
缓冲区(Buffer)Buffer在Java NIO 中负责数据的存取,缓冲区就是数组,用于存储不同数据类型的数据。
缓冲区类型根据数据类型的不同(boolean除外),提供了相应类型的缓冲区。
ByteBufferCharBufferShortBufferIntBufferLongBufferFloatBuff ...
反射与注解
反射:框架设计的灵魂123456* 框架:半成品软件。可以在框架的基础上进行软件开发,简化编码* 反射:将类的各个组成部分封装为其他对象,这就是反射机制 * 好处: 1. 可以在程序运行过程中,操作这些对象。 2. 可以解耦,提高程序的可扩展性。
1. 获取Class对象123456789101112* 获取Class对象的方式: 1. Class.forName("全类名"):将字节码文件加载进内存,返回Class对象 * 多用于配置文件,将类名定义在配置文件中。读取文件,加载类 2. 类名.class:通过类名的属性class获取 * 多用于参数的传递 3. 对象.getClass():getClass()方法在Object类中定义着。 * 多用于对象的获取字节码的方式 * 结论: 同一个字节码文件(*.class)在一次程序运行过程中,只会被加载一次, 不论通过哪一种方式获取的Class对象都是同一个。
1234567891011121314151617181920212223242526272829303132333435363 ...
Nginx入门
一、什么是NginxNginx (engine x) 是一个高性能的HTTP和反向代理web服务器,
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发 行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆 使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
二、为什么使用Nginx?在传统的Web项目中,并发量小,用户使用的少。
所以在低并发的情况下,用户可以直接访问tomcat服务器,然后tomcat服务器返回消息给用户。
用户访问<–>Tomcat服务器
而在互联网项目下,因单个tomcat默认并发量有限制。如果请求量过大,会产生如下问题:
高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,
它通常是指,通过设计保证系统能够同时并行处理很多请求。
高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS ...
21.cloudAlibaba-Seata处理分布式事务
1. 分布式事务问题分布式前
单机单库没这个问题
分布式之后
一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题
2. Seata简介是什么
Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务
官网地址: http://seata.io/zh-cn/
能干嘛
分布式事务处理过程的-ID+三组件模型
Transaction ID XID 全局唯一的事务ID
Transaction Coordinator(TC):事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚;
Transaction Manager(TM) :控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议;
Resource Manager(RM) :控制分支事务,负责分支注册,状态汇报,并接收事务协调器的指令,驱动分支(本地)事务的提交和回滚;
处理过程
去哪下:https://github.com/seata/seata/releases
怎么玩
本地@Transactional
全局@Gl ...
20.cloudAlibaba-Sentinel服务熔断与持久化
1.限流之@SentinelResource1.1 按资源名称限流+后续处理启动Nacos成功启动Sentinel成功Module1. 新建cloudalibaba-sentinel-service8401
2. pom.xml
123456<dependency> <groupId>com.atguigu.springcloud</groupId> <artifactId>cloud-api-commons</artifactId> <version>${project.version}</version></dependency>
3. application.yml
123456789101112131415161718192021server: port: 8401spring: application: name: cloudalibaba-sentinel-service cloud: nacos: disco ...
19.cloudAlibaba-Sentinel服务限流与降级
官网:https://github.com/alibaba/Sentinel
中文:https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D
是什么
能干嘛
代替了Hystrix
服务雪崩
服务降级
服务熔断
服务限流
Sentinel分为两个部分:
核心库(Java客户端)不依赖任何框架/库,能够运行于所有Java运行时环境,同时对Dubbo/Spring Cloud等框架也有较好的支持。
控制台(Dashboard)基于SpringBoot开发,打包后可以直接运行,不需要额外的Tomcat等应用容器。
安装步骤:
前提
java8环境OK
8080端口不能被占用
下载地址:https://github.com/alibaba/Sentinel/releases
下载到本地sentinel-dashboard-1.7.0.jar
运行命令:java -jar sentinel-dashboard-1.7.0.jar
访问sentinel管理界面
http://localhost:80 ...
15.SpringCloud-Sleuth分布式请求链路跟踪
问题: 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协调产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延迟或错误都会引起整个请求最后的失败。
SpringCloud Sleuth提供了一套完整的服务跟踪的解决方案在分布式系统中提供追踪解决方案并且兼容支持了zipkingithup:https://github.com/spring-cloud/spring-cloud-sleuth官网:https://cloud.spring.io/spring-cloud-sleuth/reference/html/
Sleuth 负责收集整理,Zipkin负责展现。
1.Sleuth 搭建链路监控步骤1.1 zipkin下载地址:https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/SpringCloud从F版起已不需要自己构建Zipkin Server了,只需调用jar包
下载后为zipkin-server-2.12.9.exe ...






