自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一个头发贼多的小火鸡

且行且珍惜。

  • 博客(77)
  • 收藏
  • 关注

原创 Socket.io 聊天室(代码已开源)

1.启发1.1 最近得闲有空玩一下Socket.io跟RabbitMQ所以造个小项目自己玩玩。1.2 当然不是正式项目,个人复习 测试所用。设计部分有的地方也不太合理,UI也是随便弄的。1.3 有个BUG,这个问题我只在Web端遇到过。描述:Web连接 socket.io 后如果刷新Web页面会导致Socket.io连接有缓存,但是后台监听Socket连接已经断开,如果发生消息有可能会发生至上次连接的socket.id连接上。导致消息丢失。此问题只有在Web上面遇到过,如果有大佬知道是什么...

2020-10-26 14:40:13 947 1

原创 PM2 ecosystem 服务器自动化部署

一:准备工作1.1 :将项目上传至代码管理库(github,gitlab,bitbucket,等)1.2 :Windows 和 服务器 都安装SSH,Git 工具。二:开始2.1 本地生成ssh key连接服务器//根据邮箱生成ssh keyssh-keygen -t rsa -C "[email protected]"//仔细看注释//1.如果生成过一次ssh key,就别一路回车了。中间有一步是需要确认覆盖ssh key的。2.2 将本地id_rsa.pub里面的内

2020-07-30 17:46:33 972

原创 crontab+Shell 定时切割服务器日志

一:编译Shell脚本切割任务。1.1在任意地方创建一个sh脚本文件。(以service.sh为例)sudo touch service.sh1.2编辑脚本任务#!/bin/bash# 第一行必须是 #!/bin/bash 开头。#!/bin/bashecho "日志开始切割"echo $(date -d "yesterday" +"%Y")-$(date -d "yesterday" +"%m")-$(date -d "yesterday" +"%d") $(date -

2020-07-29 17:19:42 448

原创 SSH Tunneling (SSH隧道)远程连接服务器

由于工作原因,总是要连接到各种不能直接访问的环境,所以大部分环境必须要使用ssh隧道进行访问。理解:本质上就是端口转发。它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程也被叫做“隧道”(tunneling),这是因为 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输而得名。SSH 端口转发能够提供两大功能:1.加密 SSH Client 端至 SSH Server 端之间的通讯数据。2.突破防火墙的限制完成一些之前无法建立的

2020-07-17 14:38:32 3461 2

原创 Node.js 搭建邮件发送服务

在日常的登录,注册中经常会使用到邮件服务,这里记录一个邮件发送服务。以163为例第一步:下载依赖npm install nodemailer --save第二步:去163网站获取邮件授权码。第三步:配置configuration文件。module.exports = { Email: { service: '163', //邮箱 163 secureConnection: true, //是否使用了ssl证书验证 user

2020-06-01 15:06:09 907

原创 WebSocket消息推送接收-(微仿滴滴打车业务场景)-(node.js-Vue.js)

年终结尾最后一次更新,在不写一次估计年前就没机会再写了(保证一月一次)。突然想起之前一个朋友问起实时订单推送如何实现。在年尾没啥事自己也比较感兴趣,简单实现了一下。1.开始准备工作就不写了哈~,直接梭。安装websocket依赖库。//安装 websocket依赖npm install websocket //安装 hashMap依赖npm install hashmap2...

2020-01-16 14:58:49 1139 1

原创 微信小程序:高德API-PoI地址搜索

在开始开发前有几步必要步骤:1.进入高德地图API官网,登陆,开发支持-微信小程序SDK,控制台,应用管理,创建开发需要的key。注意:服务平台,必须是微信小程序。key用于什么开发就创建什么平台Key。2.下载 amap-wx.js开发包,https://lbs.amap.com/api/wx/download3.登录微信公众平台,在 "设置"->"开发设置" 中设置 requ...

2018-08-23 16:53:18 2289 6

原创 微信小程序:高德API之定位。

在开始开发前有几步必要步骤:1.进入高德地图API官网,登陆,开发支持-微信小程序SDK,控制台,应用管理,创建开发需要的key。注意:服务平台,必须是微信小程序。key用于什么开发就创建什么平台Key。2.下载 amap-wx.js开发包,https://lbs.amap.com/api/wx/download3.登录微信公众平台,在 "设置"->"开发设置" 中设置 requ...

2018-08-23 15:52:22 3110 2

原创 微信小程序:登陆获取用户信息,包括维护3rdSession。(Node.js-Koa)

前两三个月最常见的问题就是登陆模块的问题了。自己也改了好几次登陆的问题,从普通登陆,一直改到维护3rdSession。(token)普通登陆:用户数据包括appid,secret全部暴露在外,相对来说不安全。上前台代码块:wxml<button open-type='getUserInfo' lang='zh_CN' bindgetuserinfo='onGetUserIn...

2018-08-22 15:41:20 3227

原创 微信小程序:wx.request请求封装工具类

修改过的封装请求:header: {'Content-Type': 'application/json'}, 防止参数中敏感字符丢失的问题header: {'Content-Type': 'application/x-www-form-urlencoded'},function Requests(url, data) { return new Promise((resolv...

2018-07-04 14:55:41 2084

原创 RabbitMQ之Plugins插件----AMQP对接MQTT

2.AMQP连接消费也需要绑定到MQTT对应的交换器和队列中,其中routingKey则使用MQTT订阅主题。由mqtt-subscription-***-qos1组成queue名。其中qos概念自行了解。AMQP是由交换器和queue队列组成的消息队列机制,MQTT是由订阅主题组成的消息机制。1.MQTT创建连接时会向rabbitmq创建一个自己的queue,默认使用。

2024-03-23 09:40:33 413 1

原创 RabbitMQ创建死信队列

RabbitMQ创建死信队列示例

2022-05-27 16:06:11 931

原创 Redis设置过期数据监听

这个人很懒啥也懒得描述。const redis = require('redis')const client = redis.createClient("6379", "localhost", { detect_buffers: true })client.auth('123456')console.log("设置过期数据!");client.set('order:timeoutData', JSON.stringify({ id: 1, name: 'allen' }), (err, re

2022-02-10 09:15:22 1017

原创 Redis订阅发布

懒得描述了直接上democonst redis = require('redis');const client = redis.createClient("6379", "localhost", { detect_buffers: true })client.auth('123456')const redis2 = require('redis');const client2 = redis2.createClient("6379", "localhost", { detect_buffers

2022-02-09 16:40:34 392

原创 Electron(Node.js)下载文件并执行.exe文件

描述一下遇到的问题!1.因为Electron软件需要使用特殊的文件层级包裹,里面携带一些驱动 固件等等,所以不能直接使用electron-update升级的方式去升级应用程序,所以另辟蹊径。2.目前使用了VNISEdit 编译环境来编译安装包(NSIS脚本编译),下载时直接安装覆盖。const http = require('http')const path = require('path')const fs = require('fs')http.get("http://172.

2021-12-22 17:22:45 1908 5

原创 Node.js连接Mysql主从读写分离

直接梭代码const mysql = require('mysql');var config = { canRetry: true, //如果true,PoolCluster将在连接失败时尝试重新连接 removeNodeErrorCount: 5, //如果连接失败,节点的errorCount增加。当errorCount大于时删除一个节点PoolCluster。(默认值:5) defaultSelector: 'ORDER' //默认选择器 RR:交替选择一个(循环)。

2021-09-02 15:16:10 366

原创 Electron: 主进程开启子线程 cluster.fork

1.background.jsconst cluster = require('child_process'); var son_course = cluster.fork(process.env.NODE_ENV == "development" ? "./src/renderer.js" : "./resources/renderer.js")//向子线程发生消息son_course.send("我是你粑粑~~~")//接收子线程的消息son_course.on('message',..

2021-08-24 17:04:15 1573

原创 Electron: 渲染进程开启子线程 Worker

在Vue中需要使用例外的线程去执行轮询的任务,这里以获取网卡信息为例。注:这里是在Electron中使用的,可以使用Node.js实例 “child_process”,如果是纯Vue工程无法使用Node实例。1.创建一个renderer.js文件,放在public静态文件夹下。// This file is required by the index.html file and will// be executed in the renderer process for that windo

2021-08-24 16:46:09 2167

原创 Electron消息通信 (主进程与渲染进程通信)

在Electron中有2中方式进行通信:1、ipcRenderer:渲染页面向主进程发送消息。2、ipcMain:监听消息对象并接收3、BrowserWindow:主进程窗口对象向渲染进程发送消息。ipcRenderer:渲染进程(Vue.js)<template> <div> <h1> Hello Henry </h1> <button @click="sendMainMsg">send</bu

2021-07-23 14:18:00 2617

原创 Electron builder配置

1. 安装compression-webpack-plugincnpm install [email protected] --save 2. 在根目录下创建vue.config.js打包配置文件,如下注意看注释://let publicPath = process.env.NODE_ENV === 'production' ? 'sing-app-vue-dashboard/' : '/';const CompressionPlugin = requ

2021-07-22 15:01:40 1186

原创 Electron入门(新建工程)

前言:因为工作需要使用Electron做桌面应用程序,了解一下学习成本最低的只有Electron。直接结合Node.js + Vue.js 可以快速实现使用,当然了解的并不深入。这里做一下记录。顺便吐槽一下遇到一个问题,就是Electron打包后会出现部分Node.js的node_modules库找不到,当然了也找到了解决方式。Electron文档:https://www.electronjs.org/Electron-builder文档:https://www.electron.build

2021-07-21 14:47:40 397 1

原创 Crypto aes-128-cbc加密

1.crypto (如node.js)var key = '2cef781a9c0411eb'var str = JSON.stringify({ "ip": "192.168.12.1", "mac": "80:3F:5D:0E:04:2B", "wan_ip": "0.0.0.0", "internet": "1", "5g_ssid": "531A6-yang_test_2G", "2g_ssid": "531A6-yang_test_5G", "5g_tx_power": "100", ".

2021-06-04 10:56:50 1851

原创 Node.js 获取网卡信息(解决中文乱码问题)

1. 使用 iconv-lite 依赖库var iconv = require('conv-lite');var encoding = 'cp936';var binaryEncoding = 'binary';var cluster = require('child_process');cluster.exec("cmd /c chcp 65001>nul && netsh wlan show interface", (err, res) => {

2021-06-04 10:25:02 1065

原创 Redis:Key过期回调函数 (node.js)

1.使用Redis过程中需要用到Key过期时回调一个函数。const redis = require('redis')const client = redis.createClient("6379", "localhost", { detect_buffers: true })client.auth('123456')console.log("设置过期数据!");client.set('user:timeoutData', json.stringify({id:1,name:'allen'

2021-04-09 15:05:46 1291

原创 Nginx配置http、https

Nginx默认端口1:80。80端口是http默认端口。在访问代理路径的时候可以不携带端口号。(例如:http://192.168.16.91:8080/index.html)2:443。443端口是https默认端口,需要配置SSL证书。在访问代理路径的时候可以不携带端口号。(例如:https://192.168.16.91:8080/index.html)80端口#开启gzip压缩包加载。在前端访问文件经常会有比较大的加载文件,可以使用压缩包加载,减少文件体积。#例如Vue打包过

2021-01-30 13:45:25 276

原创 Nginx负载均衡与反向代理

Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和反向代理服务器,也是一个 IMAP/POP3/SMTP代理服务器。在高连接并发的情况下,Nginx是Apache服务器不错的替代品。本篇主要配置负载均衡环境:ubuntu18.04.4upstream:负载均衡配置模块关于负载均衡的模式:1.轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。2.ip_hash:...

2021-01-30 11:36:00 301

原创 Web语音播报提示音

网页需要提示音提醒,(如:新订单,新消息网页播放提示音:您有新的消息,请注意查收!)var url= "https://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=6&text=" + encodeURI("您有新的消息,请注意查收!"); new Audio(url).play();...

2020-12-30 11:24:00 1493

原创 git submodule的简单使用

项目中经常会使用到第三方的 git 库,直接把第三方的版本库合并到自己的库中。目前做Node.js Koa2 时需要使用工程集成的Mongodb Models文件,所以需要将Koa2工程引用外部工程模块。创建2个Git代码仓库。以下为例:1.1 JS仓库:Test_git1.2 Models仓库:Model创建完两个仓库。//获取代码至本地git clone [email protected]:dlw1398287387/Test_git.git//进入项目cd Test_git.

2020-11-26 11:42:26 429 1

转载 Vue3.0开发文档 (转载)

本文为转载博文。 学习Vue3.x方便c Vue 3 新增内容的整理文档(经过验证的) 重点内容: ViteComposition API新的响应式机制计算属性和侦听器teleport (传送)Fragment(碎片)自定义事件($emit 验证)组件的 v-model 升级 利用 vite 创建下一代的 Vue 项目...

2020-11-23 15:52:12 985 1

原创 gridfs-stream 文件上传至Mongodb并访问

1.安装依赖cnpm install gridfs-stream --save2.实现文件上传至Mongodbvar mongoose = require('mongoose');const Grid = require('gridfs-stream');const fs = require('fs');const utils = require('../resource/utils');const jwt = require('jsonwebtoken');const confi

2020-10-23 11:04:49 865

原创 Mongodb更新多层嵌套数组对象。

应对 mongodb修改多层数组对象时,一个$不够用。一,原数据{ "_id": ObjectId("5f7d88c342318e24c4003083"), "id": "123456", "arr": [ { "name": "nickchen", "condition": [ { "type": "phone",

2020-10-07 17:45:22 2833 2

原创 Vue:九宫格抽奖 (模拟用途,纯前端)

<template> <div style="width: 100%; height: 90vh;; background: rgb(245, 224, 224);"> <div style="width: 100%;"> <div style="width: 80%; float: left; margin-top:50px; height: 300px; margin-left: 10%; border:0px solid black;">.

2020-09-28 10:25:34 648 1

原创 RabbitMQ在Node.js中的实际应用

1.起步安装步骤自行下载安装。可视化界面:http://localhost:15672 默认登录用户名guest,密码guest2.基本概念1.生产者:即发送消息客户端释义:给队列发送消息,俗称生产者。2.消费者:即接收消息服务端释义:接收生产者发送过来的消息,并加以处理。3.channel:连接通道释义:RabbitMQ的连接对象通道,在代码中全部操作基于channel通道。4.exchange:交换机释义:消息生产者发送消息到交换机(也可以说交..

2020-08-25 15:30:46 1956

原创 MongoDB 高级CRUD操作

此为mongodb CRUD命令操作,由简到高级查询基础部分1.插入操作(以User表为例)db.adminUser.insertOne({ "openId": "admin_b075df20d85711e98ba819498dwf0854", "jurisdiction": "SSS", "email": "[email protected]", "password": "eyJhbGciOiJIUzI1NiJ9.Y2hlbmJpZGExMjM.MMYE...

2020-08-18 16:47:56 446

原创 Vue的几种生命周期

1.创建之前beforeCreate(){ console.log("生命周期---创建之前")},2.创建完成created(){ console.log("生命周期---创建完成")},3.挂载之前beforeMount(){ console.log("生命周期---挂载之前")},4.挂载完成mounted(){ console.log("生命周期---挂载完成")}5.更新之前beforeUpdate(){ console.log("生

2020-08-14 09:40:20 172

原创 PayPal支付开发之退款处理(node.js---Koa2)

应该也有人跟我一样拿回调的PaymentID去退款的。然后就报错。找不到订单。第一步:获取saleid,这个是支付成功之后在execute方法里返回的参数。(payment.transactions[0].related_resources[0].sale.id)业务层:async function MerchantsArefund_PayPal(ctx) { var saleid = ctx.request.body.PayerID //退款ID var data = {

2020-06-30 15:20:19 642

原创 Vue:加入百度地图经纬度选取。(Ant design pro vue)

需求描述:1.使用百度地图选取地理经纬度位置,结合mongodb 2d索引检索距离。2.可手动输入经纬度地址,和唤起地图选取。3.根据用户信息把用户经纬度传给百度地图组件,回显坐标。4.把获取的经纬度地址截取成数组让mongodb识别。var locations = this.storeLocation.split(',')StoreLocation = [Number(locations[0]), Number(locations[1])]准备工作:申请百度地图开放平台Key(

2020-05-30 15:28:43 2579 10

原创 Vue:文件上传

UI框架不满足使用场景。需要点击头像上传头像!H5部分<van-cell-group> <input type="file" id="updateAvatar" style="display: none" multiple @change="handleFile"/> <div style="display: flex; height: 50px; margin-top: 10px;" @click="selectAvatar"> &.

2020-05-16 09:58:00 610

原创 JS:获取时间格式utils工具包。

1:生成普通时间格式数据.//生成时间格式function getTime() { var date = new Date(); var seperator1 = "-"; var seperator2 = ":"; var month = date.getMonth() + 1; var strDate = date.getDate(); ...

2020-04-18 10:14:24 565

原创 MongoDB:连接用户名密码校验

今天服务器被黑了,估计是服务器端口27017端口开放导致mongodb被劫持(服务器一切正常只有数据库被黑,原有库消失,多出来一个劫持让我支付比特币的通告库),测试数据库直接消失。还好是准备上线之前跑线上环境测试库,不然就要跑路了。(开放27017端口是因为需要使用工具查看数据源,并修改)解决方案:1.使用用户名密码权限连接校验。修改mongod.conf配置文件//打开...

2020-04-15 17:42:19 431

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除