使用nodejs搭建一个简单服务器

1. nodejs 服务器搭建

nodejs 写一个服务器,别人能够访问到;

http 协议:浏览器 和 服务器 遵守的规范;

http 服务器 和 浏览器 之间的通信,都是通过 http 实现的

我们的服务器,最重要的一环,监听,也就是说,http 向服务器发送请求,那么服务器就应该接收到这样的请求,这就是监听;

第一步: 我们创建server.js文件如下:
// 1. 导入http模块
const http = require("http");

// 2. 创建一个web服务器对象
const server = http.createServer();

// 3. 监听请求事件
server.on("request", (req, 
    

Socket网络通信

Socket网络通信

Socket 是什么?

Socket 其实就是套接字,大部分人对于 Socket 的理解就是它可以实现一个简单的网络通信,但是它「具体解决了哪些问题?有什么实际的作用?为什么会有一个 Socket 出现?」

Socket 其实是在「应用层与传输层之间的一个产物」,它把传输层的很多复杂操作封装成一些简单的接口,来让应用层调用以此来实现进程在网络中的通信,Socket 是对端口通信开发的工具,它要更底层一些。

Socket 其实类似于一台洗碗机,它的功能就是洗碗(网络通信),如果没有它,你可能需要自己手动去洗碗(手动调用传输层、应用层之间的各个 api),但是有了它你只需要点击开关、调整时长就行了(封装了 api),你可以不需要它,但是如果没有它,洗碗(应用层与传输层之间的交互)将变得非常繁琐。

一次完整的网络通信必不可少的会经过物理传输层的网线和网卡,网络传输层的 IP 协议可以知道要将数据传送给哪台机器,但是在计算机系统中会运行不同进程,那要如何把「网卡中的网络数据识别出来是给哪个进程的」,这其实就是 Socket 设计的想解决的一点了。

Socket 是「对 TCP/IP 或者 UDP/IP 协议的封装」,Socket 本身其实就是一个调用接口。通过这个接口我们在开发网络应用程序的时候,就可以不用关心底层是怎么实现的,减轻开发的难度。

Socket 运行流程

基于 TCP

Server

  • socket():表示创建一个 socket,底层会生成一个文件描述符,用来表示该

yarn的安装及使用教程

目录

一、引言

二、同为包管理工具 npm和yarn的区别

三、yarn的安装

 四、总结


一、引言

之前出过一篇关于 用 npm 创建 react 项目的介绍与使用教程,本文在此介绍并对比一下 yarn 的使用。

yarn 是由 Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具,yarn 是为了弥补 npm 的一些缺陷而出现的。

二、同为包管理工具 npm和yarn的区别

1、并行安装:yarn安装包会同时执行多个任务,npm 需等待上一个任务安装完成才能运行下一个任务
2、离线模式:如果你已经安装过一个包,用 yarn 再次安装会从缓存中获取,而 npm 会从网络下载
3、版本锁定:yarn 默认有一个 yarn.lock 文件锁定版本,保证环境统一,而 npm

        

windows10环境下的RabbitMQ安装步骤

windows10环境下的 RabbitMQ 安装步骤

安装步骤

一、安装erlang(需要配置环境变量)
二、安装RabbitMQ(需要安装插件)
三、测试登录
四、创建用户

一、安装erlang

1,下载地址:http://www.erlang.org/downloads
2,配置环境变量:(系统变量)

变量名:ERLANG_HOME
地址:到bin的上一级目录

3,双击系统变量path
点击“新建”,将%ERLANG_HOME%\bin加入到path中。
4,测试:
cmd——erl

二、安装RabbitMQ

1,下载地址:http://www.rabbitmq.com/download.html
2,安装RabbitMQ-Plugins(sbin目录下安装)-----可视化插件

命令:rabbitmq-plugins enable rabbitmq_management

三、测试登录

1,cmd到sbin目录:输入 rabbitmqctl status
2,启动服务————双击rabbitmq-server.bat,访问:http://localhost:15672
用户名/密码:guest

四、创建用户

rabbitmq高可用,rabbitmq主从,rabbitmq镜像

【1】架构介绍

  • 普通集群:主备架构,只是实现主备方案,不至于主节点宕机导致整个服务无法使用
  • 镜像集群:同步结构,基于普通集群实现的队列同步

(1.1)rabbitmq 主从集群

slave节点复制 master节点的所有数据和状态,除了队列数据;

  队列数据只存在master节点,但是Rabbitmq slave节点可以实现队列的转发,也就是说消息消费者可以连接到slave节点,但是slave需要连接到master节点转发队列;

由此说明只能保证了服务可以用,无法达到高可用…

Go channel与锁

不同 goroutine 之间如何通讯?有两种方案:
1. 全局变量的互斥锁
2. 使用管道 channel 来解决
因为没有对全局变量 m 加锁,因此会出现资源争夺问题,代码会出现错误,提示 concurrent map writes

var (
    myMap = make(map[int]int, 10)
    lock sync.Mutex
)

func test(n int) {
    res := 1
    for i := 1; i <= n; i++ {
        

go tcp编程

网络编程有两种:
1) TCP socket 编程,是网络编程的主流。之所以叫 Tcp socket 编程,是因为底层是基于 Tcp/ip 协议的。比如: QQ 聊天
2) b/s 结构的 http 编程,我们使用浏览器去访问服务器时,使用的就是 http 协议,而 http 底层依旧是用 tcp socket 实现的。

TCP/IP (Transmission Control Protocol/Internet Protocol) 的简写,中文译名为传输控制协议 / 因特网互联协议,又叫网络通讯协议,这个协议是 Internet 最基本的协议、Internet 国际互联网络的基础,简单地说,就是由网络层的 IP 协议和传输层的 TCP 协议组成的。
客户端向服务端发送消息…