nodejs版本升级/降级(使用nvm对node版本进行管理及切换)

前言

在项目开发过程中,不同项目使用的node版本可能不同,过高或者过低都可能会导致报错,所以我们通常使用nvm对node版本进行管理,根据不同项目要求的版本进行灵活切换。

本文主要讲述如何使用nvm对node版本进行管理。

1、卸载本地已安装的node.js版本

node -v
查看本地安装node版本

where node
查看本地安装的node路径

D:\smaple>node -v
v16.13.2

D:\smaple>where node
C:\Program Files\nodejs\node.exe

D:\smaple>

docker mysql报错:standard_init_linux.go:228: exec user process caused: exec format error

问题描述:
docker mysql镜像(基础镜像mysql:5.7.31),在windows系统可以正常构建并运行,迁移至麒麟操作系统时,构建时报错:

standard_init_linux.go:228: exec user process caused: exec format error

dockerfile内容:

# 基础镜像
FROM mysql:5.7.31
# author
MAINTAINER whw

# 执行sql脚本
ADD ./db/*.sql /docker-entrypoint-initdb.d/

问题分析:
1、查看Windows主机架构(docker version命令):

docker-version-win.pngdocker-version-win.png

websocket重连及心跳机制完整示例

重连机制和心跳机制是保证websocket连接可靠性的两种重要机制。

1、心跳检测机制

  • 定期发送心跳消息到服务器,如果服务器在预定时间内没有收到心跳消息,它可以假设连接已断开,并采取响应措施,如关闭连接或尝试重新连接。
  • 同时,在服务器端也实现相应的心跳响应逻辑,以确保双向通信的可靠性。

2、重连机制

  • 在客服端实现一个重连机制,当websocket连接断开时,可以自动尝试重新建立连接。
  • 重连机制应该有一定的退避策略,比如指数退避,避免在短时间内频繁尝试重连导致额外的网络负担。

本文我们以vue页面为例来说明,前端页面如何建立websocket连接,以及重连机制和心跳机制的实现。

完整示例:

Nginx支持websocket配置

前言

wss协议实际就是websocket+ssl,就是在websocket协议上加入ssl层,类似https(http+ssl)。

Nginx websocket代理主要配置:

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

ws配置示例

server {
    listen 80;
    server_name yourdomain.com;

    location /websocket {
        proxy_pass http://localhost:8000;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

sqlserver大表数据导入导出【bcp命令】

前言

一般情况下,我们在迁移表结构和数据时,是使用数据库工具提供的结构同步或数据同步功能,来迁移数据库或保证不同服务器数据库结构和数据的一致。但特殊情况下,比如网络不通的情况下,我们要迁移大表的数据,则只能先把大表数据导出成脚本或文件,然后再在目标服务器执行导入。本文我们主要使用bcp命令(Bulk Copy Program)来说明,如何通过bcp命令来完成大表数据的导入和导出操作。

bcp命令说明

bcp导出命令

bcp "SELECT * FROM YourTable" queryout C:\YourFile.dat -c -T -S YourServerName -d databaseName

将YourTable表中选取所有列,并将结果保存到YourFile.dat文件中。
-c参数指定输出格式为字符型;
-T参数指示使用Windows身份验证登录服务器;
-S参数后面应该提供服务器名称或IP地址;
-d参数指定数据库名称;

bcp导入命令

bcp YourTable IN C:\YourFile.dat -c -T -S YourServerName -d databaseName

将YourFile.dat文件中的内容导入到名为YourTable的表中。