当前位置: 首页 > news >正文

企业网站建设及推广研究/磁力屋torrentkitty

企业网站建设及推广研究,磁力屋torrentkitty,科技有限公司可以做网站建设吗?,阿里云装wordpress慢node.js基础 🍓什么是node.js🍓node.js模块🍒🍒 内置模块🍅🍅🍅fs模块🍅🍅🍅path模块🍅🍅🍅http模块 🍒&#…

node.js基础

  • 🍓什么是node.js
  • 🍓node.js模块
    • 🍒🍒 内置模块
      • 🍅🍅🍅fs模块
      • 🍅🍅🍅path模块
      • 🍅🍅🍅http模块
    • 🍒🍒自定义模块
    • 🍒🍒第三方模块
      • 🍅🍅🍅npm
      • 🍅🍅🍅包的分类
      • 🍅🍅🍅规范包的组成结构
      • 🍅🍅🍅发布自己的包
      • 🍅🍅🍅express
        • 🍓🍅🍅🍅express`创建`web服务器的步骤
        • 🍓🍅🍅🍅挂载路由
        • 🍓🍅🍅🍅req获取请求参数
        • 🍓🍅🍅🍅app.use()函数
        • 🍓🍅🍅🍅路由模块化:
        • 🍓🍅🍅🍅中间件
          • 🍒🍒🍅🍅🍅定义中间件
          • 🍒🍒🍅🍅🍅注册中间件
          • 🍒🍒🍅🍅🍅中间件的分类
          • 🍒🍒🍅🍅🍅中间件解决跨域问题
  • 🍓node.js常用命令

🍓什么是node.js

  • 定义: node.js是一个基于Chrome V8 引擎的JavaScript运行环境(后端javaScript运行环境)
    浏览器属于JavaScript前端运行环境
  • node.js官网:https://nodejs.org/en

🍓node.js模块

  • 📌引入模块的方式
    //引入fs模块(内置模块和三方模块需要写上模块名)
    const fs = require('fs')//引入自定义模块(自定义模块需要写上js路径)
    const dataFormat = require('./dataFormat.js')
    
  • 📌模块分类
    • 🍁内置模块:
      fs、path、http
    • 🍁自定义模块:
      用户创建的每一个js文件,引用自定义模块,需要通过相对路径使用
    • 🍁第三方模块
  • 📌模块作用域
    在模块中定义的全局变量var,作用域只在模块自己内部,可以解决全局变量被污染的问题
  • 📌向外暴露模块作用域的成员:
    每一个.js自定义模块中都有一个module对象,module对象中的成员exports对象用来对外暴露模块作用域中的成员

🍒🍒 内置模块

🍅🍅🍅fs模块

引入fs内置模块

const fs = require('fs')
  1. 📌fs模块用于操作文件
  2. 📌fs.readFile(path[, options], callback) 读取文件
    • 🍁path:必选参数,文件路径-字符串
    • 🍁options:可选参数,编码格式
    • 🍁callback:必选参数,文件读取成功的回调函数
      形参:
      • 🌷err:失败的结果
      • 🌷dataStr:成功的结果
    fs.readFile('C:\\Users\\Desktop\\abc.txt', 'utf8', (err, dataStr) => {if(!err) {console.log(dataStr);} else {console.error(err)}
    });
    
  3. 📌fs.writeFile(path, data[, options], callback) 写文件
    • 🍁path:必选参数,文件路径-字符串
    • 🍁data: 必选参数,写入内容
    • 🍁options:可选参数,编码格式
    • 🍁callback:必选参数,文件编写成功的回调函数
      形参:
      • 🌷err:失败的结果
    fs.writeFile('C:\\Users\\Desktop\\1.txt', "你好,nodejs", 'utf8', err => {if(err) {console.log(err)}
    })
    
  4. 📌fs.mkdir(path[, options], callback )创建目录
    • 🍁path:必选参数
    • 🍁options:可选参数(对象)
      • 🌷recursive
        true:递归创建
        false:不会递归创建
    • 🍁callback:必选参数,文件夹创建成功的回调函数
      形参:
      • 🌷err:失败的结果
      • 🌷path:文件夹路径,返回创建的第一层级的目录
  5. 📌fs.rmdir(path[, options], callback )删除目录
    • 🍁path:必选参数
    • 🍁options:可选参数(对象)
      • 🌷recursive
        true:递归删除
        false:不会递归删除
    • 🍁callback:必选参数,文件夹删除成功的回调函数
      形参:
      • 🌷err:失败的结果
      • 🌷path:文件夹路径,返回创建的第一层级的目录
  6. 📌fs.unlink(path, callback) 删除文件
    • 🍁path:必选参数
    • 🍁callback:必选参数,文件删除成功的回调函数
      形参:
      • 🌷err:失败的结果

🍅🍅🍅path模块

路径问题nodejs执行js时,js中的相对路径是参照node命令执行所在的目录,而不是参照js文件所在的目录

  1. 📌使用绝对路径(不推荐)
    缺点:
    移植性非常差,不利于维护
  2. 📌__dirname:代表当前文件所处的目录(不推荐)
    缺点:
    1. 🍁路径需要通过拼接的形式生成
    2. 🍁只能处理当前目录以下的文件,当前目录之前的文件无法处理
  3. 📌path模块(推荐)

引入path内置模块

const path = require('path')const pathStr = path.join('/a','/b/c','../','./d','e')
console.log(pathStr) //\a\b\d\econst fpath = '\a\b\v\index.html';
console.log(path.basename(fpath))   //index.html
console.log(path.basename(fpath, '.html')) //index
console.log(path.extname(fpath))    //.html
  • 🍁join(path0,path1,path2...,pathn):拼接多个路径,一个../消除一个前面的路径
  • 🍁basename(path[, ext]):获取文件名称
  • 🍁extname(path):获取文件的扩展名

🍅🍅🍅http模块

引入http模块

const http = require('http')
  1. 📌http模块用于创建web服务

  2. 📌创建http服务

    1. 🍁引入http模块
    2. 🍁创建web服务器实例
    3. 🍁为服务器绑定request事件,监听客户端的请求
    4. 🍁启动服务器
    //1. 引入http模块
    const http = require('http')
    //2. 创建web服务器实例
    const server = http.createServer()
    //3. 为服务器绑定request事件,监听客户端的请求
    server.on('request', function(req, res){const url = req.urlconst method = req.methodconsole.log(`Your request url is ${url}, and request method is ${method}`)res.setHeader('Content-Type', 'text/html;charset=utf-8')res.end('你好,nodejs')
    })
    //4. 启动服务器
    server.listen('8080', ()=>{console.log('server is runnging at http://127.0.0.1:8080')
    })
    
  3. 📌request事件回调函数

    • 🍁req:
      • 🌷req.url :获取请求路径
      • 🌷req.method :获取请求方式
    • 🍁res
      • 🌷res.end(str) :结束本次请求,并向客户端发送指定内容
      • 🌷res.setHeader(key, val) : 设置响应头

🍒🍒自定义模块

node.js中,自定义模块暴露成员通过挂载在module.exports对象上,其中exports对象默认也是内存地址指向module.exports,只要在挂载的时候没有更改module.exports对象的地址或者更改exports对象的地址就不会有问题。

//挂载属性
module.exports.name = '张三'//挂载方法
module.exports.sayHello = () => {console.log('Hello world!')
}//挂载属性
exports.age = 23//注意:该方式修改了module.exports对象内存地址的指向,导致module.exports和exports指向的不是同一个地址,则exports挂载属性不会生效。
module.exports = {code:'0000',message:'成功!'
}//注意:该方式修改了exports对象内存地址的指向,导致module.exports和exports指向的不是同一个地址,则exports挂载属性不会生效。
exports = {title:'爱好',content:'足球'
}

🍒🍒第三方模块

🍅🍅🍅npm

  • npm用于下载发布管理三方包,我们可以通过npm命令去下载安装一些三方包供我们项目使用
    查询包:https://www.npmjs.com/
    下载包:https://registry.npmjs.org/
  • node_modules是用于存放三方依赖的文件夹
  • package.json用于记录项目中使用的包,通过执行命令npm i来初始化项目,安装三方包

🍅🍅🍅包的分类

  • 📌项目包
    • 🍁定义:那些被安装到项目的node_modules目录中的包,被称为项目包
    • 🍁开发依赖包
      npm i {packageName} -D
      被记录到package.json文件中节点devDependencies下面的包被称为开发依赖包,只在开发期间会使用到
    • 🍁核心依赖包
      npm i {packageName}
      被记录到package.json文件中节点dependencies下面的包被称为核心依赖包,开发期间和项目上线后都会使用到
  • 📌全局包
    • 🍁安装全局包:npm i {packageName} -g
    • 🍁卸载全局包:npm uninstall {packageName} -g
    • 🍁全局依赖包会下载到C:\Users\用户目录\AppData\Roaming\npm\node_modules
    • 🍁注意:
      只有工具性质的包,才有全局安装的必要性,因为它们提供了好用的终端命令(一般官方文档里面会告诉你)

🍅🍅🍅规范包的组成结构

  • 包必须以单独的目录而存在
  • 包的顶级目录下必须包含package.json文件
  • package.json必须包含name、version、main这三个属性,分别代表包名、包版本、包的入口

🍅🍅🍅发布自己的包

  1. 📌在package.json中编写自己的包信息
    {"name":"{packageName}",  //必须与当前npm仓库中的包名不重名"version":"1.0.0",       //版本号"main":"index.js",       //包程序入口"description":"包的描述信息","keywords":["","",""...] //检索包的关键字信息"license":"ISC"          //开源许可协议
    }
    
  2. 📌编写README.MD文档,写明使用此包的方式
  3. 📌注册npm账号
    https://www.npmjs.com/
  4. 📌在终端输入以下命令,登录npm账号(在此之前,一定要先把下包的镜像地址切换到npm官方服务器)
    npm login
  5. 📌在包的根目录下输入以下命令,即可发布包
    npm publish

🍅🍅🍅express

express是基于内置模块http的基础上封装的一套可以方便、快速的创建Web网站服务器或API接口服务器
安装
npm i express

🍓🍅🍅🍅express创建web服务器的步骤
  1. 📌引入express模块

  2. 📌创建web服务器

  3. 📌启动web服务,监听端口

    const express = require('express')//创建web服务器
    const app = express()//启动web服务,监听端口
    app.listen('80', ()=>{console.log('express server running at http://127.0.0.1')
    })
    
🍓🍅🍅🍅挂载路由

app.get(url, function)
app.post(url, function)

🍓🍅🍅🍅req获取请求参数
  • 📌获取url地址传参:(形如:http://127.0.0.1/user?name=张三&age=23
    req.query.{key}
  • 📌获取动态地址传参:(形如:http://127.0.0.1/query/1234
    req.params.{key}
  • 📌获取请求体数据
    req.body(需要配置解析请求体数据的中间件)
    app.get('/user', function(req, res) {console.log('进入GET /user')//req.query 获取url地址传参(http://127.0.0.1/user?name=张三&age=23)const name = req.query.nameconst age = req.query.age//向客户端响应内容res.send({name, age})
    })app.get('/query/:id/:name',(req, res) => {//req.params 获取url地址的动态参数(http://127.0.0.1/query/1234/张三)const id = req.params.idconst name = req.params.nameres.send({id, name})
    })//express.urlencoded({extended:false})
    //express.json()
    app.post('/add/user', express.json(), (req, res) => {console.log(req.body)res.send(req.body)
    })
    
🍓🍅🍅🍅app.use()函数
  • 📌挂载静态资源:
    app.use(express.static({static_path}))
    app.use('{地址前缀}', express.static({static_path}))
  • 📌路由模块化:
    app.use(模块路由)
    app.use({地址前缀}, 模块路由)
  • 📌注册中间件
    app.use({中间件名称})
🍓🍅🍅🍅路由模块化:

问题: 通过app去挂载路由,会导致js文件臃肿,难以维护,路由模块化可以解决这个问题

  1. 📌引入express模块

  2. 📌创建路由对象

  3. 📌挂载路由

  4. 📌暴露路由对象

  5. 📌app.use()注册路由对象

    //引入express模块
    const express = require('express')//创建路由对象
    const router = express.Router()router.get('/user/list', (req, res) => {res.send([{name:'张三',age:23},{name:'李四', age:24}])
    })//暴露路由(注意:这里不能使用exports = router)
    module.exports = router//注册路由
    const xxx = require('./xxx.js')
    app.use(xxx)
    
🍓🍅🍅🍅中间件
🍒🍒🍅🍅🍅定义中间件
//普通中间件
const mw = function(req, res, next){//放行next()
}//错误中间件
const mw = function(err, req, res, next){//放行next()
}
🍒🍒🍅🍅🍅注册中间件
  • 📌全局中间件注册:app.use(mw)
  • 📌单个局部中间件注册:app.get(url, 中间件, 函数)
  • 📌多个局部中间件注册:app.get(url, [中间件1, 中间件2, ..., 中间件n], 函数)
    //定义全局中间件
    const mw = function(req, res, next){console.log('最简单的中间件函数')//流转给后面的路由next()
    }
    //注册全局中间件
    app.use(mw)//定义中间件
    const mv2 = function(req, res, next){console.log('最简单的中间件函数2')next()
    }//挂载路由,监听客户端post请求,请求地址是/user
    //将中间件mv2注册为局部中间件
    app.post('/user', mv2, function(req, res){console.log('进入POST /user')throw new Error('服务器内部发生了错误!')res.send({code:'000000', msg:'请求失败!'})
    })//定义中间件
    const mv3 = function(req, res, next){console.log('最简单的中间件函数3')next()
    }//挂载路由,监听客户端动态地址传参
    //注册多个局部中间件
    app.get('/query/:id/:name', [mv2, mv3],(req, res) => {//req.params 获取url地址的动态参数(http://127.0.0.1/query/1234)const id = req.params.idconst name = req.params.nameres.send({id, name})
    })
    
  • 📌多个中间件之间,共享同一份reqres,我们可以在上游的中间件中为reqres挂载某些属性和方法为下游中间件使用
    调用顺序:(与中间件注册的顺序有关)
    客户端请求 => 中间件1 => 中间件2 => 中间件3 => … => 中间件n => 响应客户端
🍒🍒🍅🍅🍅中间件的分类
  1. 📌应用级别的中间件
    通过app.use()、app.get()、app.post()绑定的
  2. 📌路由级别的中间件
    通过router.use()、router.get()、router.post()绑定的
  3. 📌错误级别的中间件(注意:错误的中间件一定要放在最后定义)
    app.use(function(err, req, res, next))
    //挂载路由,监听客户端post请求,请求地址是/user
    //将中间件mv2注册为局部中间件
    app.post('/user', mv2, function(req, res){
    console.log('进入POST /user')
    throw new Error('服务器内部发生了错误!')
    res.send({code:'000000', msg:'请求失败!'})
    })//定义全局错误中间件
    app.use(function(err, req, res, next){
    console.log('发生了错误:' + err.message)
    res.send(err.message)
    })
    
  4. 📌Express内置的中间件
    配置解析 application/json 格式请求体数据的内置中间件
    app.use(express.json())
    配置解析 application/x-www-form-urlencoded 格式请求体数据的内置中间件
    app.use(express.urlencoded({extended:false}))
    由于express解析请求体数据中间件在4.16.0之后才支持,在此版本之前使用body-parser中间件解析请求体
    • 🍁下载body-parser
      npm install body-parser
    • 🍁引入body-parser模块
    • 🍁调用app.use()注册中间件
      app.use(parser.json())
      app.use(parser.urlencoded({extended:false}))
🍒🍒🍅🍅🍅中间件解决跨域问题
  1. 📌安装cors中间件
    npm i cors
  2. 📌注册cors中间件为全局中间件
    app.use(cors())
  3. 📌cors相关的响应头
    • 🍁Access-Control-Allow-Origin:*|具体的http地址
      • 🌷*:允许任何请求访问
      • 🌷具体的http地址:如http://app.cn.nb:81,表示只允许这个ip开头的客户端可以访问
    • 🍁Access-Control-Allow-Headers
      • 🌷允许客户端发送的请求头
      • 🌷默认情况下,cors仅支持客户端发送如下的请求头:
        Accept、Accept-Language、Content-Language、DPR、Downlink、Save-Data、Viewport-Width、Width、Content-Type(值仅限于text/plain、multipart/form-data、application/x-www-form-urlencoded
    • 🍁Access-Control-Allow-Methods
      默认情况下,cors仅支持客户端发起GET、PUT、HEAD请求

🍓node.js常用命令

# 1. node版本查看
node -v# 2. 运行javaScript脚本
node xxx.js# 3. npm版本查看
npm -v# 4. 安装下载包(默认下载最新版本)
npm install {packageName}
npm i {packageName}# 5. 安装下载包(指定下载版本)
npm install {packageName}@{version}
npm i {packageName}@{version}# 6. 初始化项目,根据package.json安装三方包
npm install
npm i# 7. 卸载包
npm uninstall {packageName}# 8. 创建package.json
npm init -y# 9. 安装下载开发环境的包
npm i {packageName} -D
npm i {packageName} --save-dev# 10. 检查当前下包镜像源
npm config get registry# 11. 切换下包镜像源
npm config set registry=https://registry.npm.taobao.org/# 12. 使用nrm快速切换镜像源
## 12.1. 下载安装nrm,将nrm安装成全局可用的工具
npm i nrm -g
## 12.2. 查看所有可用的镜像源
nrm ls
## 12.3. 将下载的镜像源切换为taobao镜像
nrm use taobao# 13. 安装全局包
npm i {packageName} -g# 14. 卸载全局包
npm uninstall {packageName} -g# 15. 登录npm账号
npm login# 16. 发布包(包根目录下执行)
npm publish# 17. md文件转html
## 17.1 下载安装i5ting_toc,将i5ting_toc安装成全局可用的工具
npm i i5ting_toc -g
## 17.2 md文件转html
i5ting_toc -f xxx.md -o

相关文章:

node.js基础

node.js基础 🍓什么是node.js🍓node.js模块🍒🍒 内置模块🍅🍅🍅fs模块🍅🍅🍅path模块🍅🍅🍅http模块 🍒&#…...

fastapi实现websocket在线聊天

最近要实现一个在线聊天功能,基于fastapi的websocket实现了这个功能。下面介绍一下遇到的技术问题 1.问题难点 在线上环境部署时,一般是多进程的方式进行部署启动fastapi服务,而每个启动的进程都有自己的独立存储空间。导致存储的连接对象分…...

LLM推理部署(六):TogetherAI推出世界上LLM最快推理引擎,性能超过vLLM和TGI三倍

LLM能有多快?答案在于LLM推理的最新突破。 TogetherAI声称,他们在CUDA上构建了世界上最快的LLM推理引擎,该引擎运行在NVIDIA Tensor Core GPU上。Together推理引擎可以支持100多个开源大模型,比如Llama-2,并在Llama-2–…...

Unity | 渡鸦避难所-2 | 搭建场景并添加碰撞器

1 规范项目结构 上期中在导入一系列的商店资源包后,Assets 目录已经变的混乱不堪 开发过程中,随着资源不断更新,遵循一定的项目结构和设计规范是非常必要的。这可以增加项目的可读性、维护性、扩展性以及提高团队协作效率 这里先做下简单的…...

展望2024年供应链安全

2023年是开展供应链安全,尤其是开源治理如火如荼的一年,开源治理是供应链安全最重要的一个方面,所以我们从开源治理谈起。我们先回顾一下2023的开源治理情况。我们从信通院《2023年中国企业开源治理全景观察》发布的信息。信通院调研了来自七…...

React 列表页实现

一、介绍 列表页是常用的功能,从后端获取列表数据,刷新到页面上。开发列表页需要考虑以下技术要点:1.如何翻页;2.如何进行内容搜索;3.何时进行页面刷新。 二、使用教程 1.user-service 根据用户id获取用户列表,返回…...

【程序人生】还记得当初自己为什么选择计算机?

✏️ 初识计算机: 还记得人生中第一次接触计算机编程是在高中,第一门编程语言是Python(很可惜由于条件限制的原因,当时没能坚持学下去......现在想来有点后悔,没能坚持,唉......)。但是&#xf…...

9-tornado-Template优化方法、个人信息案例、tornado中ORM的使用(peewee的使用、peewee_async)、WTForms的使用

在很多情况下,前端模板中在很多页面有都重复的内容可以使用,比如页头、页尾、甚至中间的内容都有可能重复。这时,为了提高开发效率,我们就可以考虑在共同的部分提取出来, 主要方法有如下: 1. 模板继承 2. U…...

IDEA中.java .class .jar的含义与联系

当使用IntelliJ IDEA这样的集成开发环境进行Java编程时,通常涉及.java源代码文件、.class编译后的字节码文件以及.jar可执行的Java存档文件。 1. .java 文件: 1.这些文件包含了Java源代码,以文本形式编写。它们通常位于项目中的源代码目录中…...

北斗三号短报文森林消防应急通信及天通野外图传综合方案

森林火灾突发性强、破坏性大、危险性高,是全球发生最频繁、处置最困难、危害最严重的自然灾害之一,是生态文明建设成果和森林资源安全的最大威胁,甚至可能引发生态灾难和社会危机。我国总体上是一个缺林少绿、生态脆弱的国家,是一…...

js Array.every()的使用

2023.12.13今天我学习了如何使用Array.every()的使用,这个方法是用于检测数组中所有存在的元素。 比如我们需要判断这个数组里面的全部元素是否都包含张三,可以这样写: let demo [{id: 1, name: 张三}, {id: 2, name: 张三五}, {id: 3, name…...

前端编码中快速填充内容--乱数假文

写前端页面的时候,如果要快速插入图片,可以使用 https://picsum.photos/ 详见笔者这篇博文: 工具网站:随机生成图片的网站-CSDN博客 可是,如果要快速填充文字内容该怎么做呢? 以前,我们都是…...

数据结构二维数组计算题,以行为主?以列为主?

1.假设以行序为主序存储二维数组Aarray[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]( )。 A.808 B.818 C.1010 D&…...

springboot(ssm电影院订票信息管理系统 影院购票系统Java系统

springboot(ssm电影院订票信息管理系统 影院购票系统Java系统 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0&#xff0…...

AI 问答-供应链管理-相关概念:SCM、SRM、MDM、DMS、ERP、OBS、CRM、WMS...

一、供应链管理是什么 供应链管理:理解供应链管理_snowli的博客-CSDN博客 二、SCM 供应链管理 SCM全称为“Supply Chain Management”,即供应链管理。 SCM是企业管理范畴中一个非常重要的概念,指的是企业与供应商、生产商、分销商等各方之…...

初学vue3与ts:vue3选项式api获取当前路由地址

vue2的获取方法 this.$route.pathvue3选项式api获取方法 import { useRouter } from vue-router; const router useRouter(); console.log(router) console.log(router.currentRoute.value.path)...

2023最新大模型实验室解决方案

人工智能是引领未来的新兴战略性技术,是驱动新一轮科技革命和产业变革的重要力量。近年来,人工智能相关技术持续演进,产业化和商业化进程不断提速,正在加快与千行百业深度融合。 大模型实验室架构图 大模型实验室建设内容 一、课…...

leetcode707.设计链表

题目描述 你可以选择使用单链表或者双链表,设计并实现自己的链表。 单链表中的节点应该具备两个属性:val 和 next 。val 是当前节点的值,next 是指向下一个节点的指针/引用。 如果是双向链表,则还需要属性 prev 以指示链表中的…...

【K8s】Kubernetes CRD 介绍(控制器)

文章目录 CRD 概述1. 操作CRD1.1 创建 CRD1.2 操作 CRD 2. 其他笔记2.1 Kubectl 发现机制2.2 校验 CR2.3 简称和属性 3. 架构设计3.1 控制器概览 参考 CRD 概述 CR(Custom Resource)其实就是在 Kubernetes 中定义一个自己的资源类型,是一个具…...

Python 小程序之PDF文档加解密

PDF文档的加密和解密 文章目录 PDF文档的加密和解密前言一、总体构思二、使用到的库三、PDF文档的加密1.用户输入模块2.打开并读取文档数据3.遍历保存数据到新文档4.新文档进行加密5.新文档命名生成路径6.保存新加密的文档 四、PDF文档的解密1.用户输入模块2.前提准备2.文件解密…...

使用python脚本一个简单的搭建ansible集群

1.环境说明: 角色主机名ip地址控制主机server192.168.174.150受控主机/被管节点client1192.168.174.151受控主机/被管节点client2192.168.174.152 2.安装python和pip包 yum install -y epel-release yum install -y python python-pip 3.pip安装依赖库 pip in…...

【价值几十万的仿抖音直播电商系统源码共享】

当下,传统的图文电商模式已经走向没落,以抖音为首的直播电商模式备受用户追捧,它具有实时直播和强互动的特点,是传统电商所不具备的优势。而且,当前正是直播电商的红利期,很多主播和品牌商都通过直播电商业…...

对于vue3项目中使用shareReward还是shareReward.value的问题

问: // 设置当前有没有分享过 默认是false const shareReward ref(false) // 是否是第一次分享 来判断是否发放抽奖次数 function haveShare() { console.log(进入haveshare) if (userInfo.uid && shareReward.value) { rewardTimes(2).then((res) &…...

利用websockify将websocket通信转换成tcp

文章目录 前言websockifywebsockify 介绍websockify 使用 探索的过程提供基础TCP服务测试可用 实现Websocket客户端开始测试websockify功能再次启动websockify单独实现一个js版本websocket客户端 什么是VNC总结 前言 目前遇到一个问题,原本的服务都是利用tcp通信的…...

【LeetCode刷题】-- 163.缺失的区间

163.缺失的区间 class Solution {public List<List<Integer>> findMissingRanges(int[] nums, int lower, int upper) {List<List<Integer>> res new ArrayList<>();for(int num : nums){if(lower < num){res.add(Arrays.asList(lower,num -…...

ClickHouse为何如此之快

针对ClickHouse为什么很快的问题&#xff0c;基于对ClickHouse的基础概念之上&#xff0c;一般会回答是因为是列式存储数据库&#xff0c;同时也会说是使用了向量化引擎&#xff0c;所以快。上面两方面的解释也都能够站得住脚&#xff0c;但是依然不能够解释真正核心的原因。因…...

Avalonia中如何将View事件映射到ViewModel层

前言 前面的文章里面我们有介绍在Wpf中如何在View层将事件映射到ViewModel层的文章,传送门,既然WPF和Avalonia是两套不同的前端框架,那么WPF里面实现模式肯定在这边就用不了,本篇我们将分享一下如何在Avalonia前端框架下面将事件映射到ViewModel层。本章内容还是在上一节的…...

(第42天)DataGuard 搭建之使用 Duplicate 复制

环境准备 本文讲解 Oracle 19C 环境通过 Duplicate 在线复制搭建单机 Active DataGuard 的完整步骤,以下为测试环境信息: 角色主机名IP地址数据库版本实例名DB名DB_UNIQUE名services名TNS名sys密码主lucifer10.211.55.20019CoradboradboradboradbORADB_PRIoracle备luciferdg…...

LeetCode 0070. 爬楼梯:动态规划(递推)

【LetMeFly】70.爬楼梯&#xff1a;动态规划&#xff08;递推&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/climbing-stairs/ 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#x…...

XMemcached network layout exception java.nio.channels.ClosedChannelException

java.nio.channels.ClosedChannelException 表示尝试在已关闭的通道上进行 I/O 操作&#xff0c;通常发生在网络连接意外关闭后尝试在关闭的通道上执行读取或写入操作。 XMemcached network layout exception 可能是由于 XMemcached 客户端在尝试与 Memcached 服务器通信时发生…...