自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 收藏
  • 关注

原创 ES6 Promise实现

【代码】ES6 Promise实现。

2024-04-17 00:56:55 62

原创 js位运算的简用

js位运算简单应用

2024-03-29 02:52:34 192

原创 js设计模式

设计模式

2024-03-22 17:28:33 452

原创 ES6数组判断以及原始值转换

es6数值转换和数组判断

2024-03-18 11:48:36 249

原创 nodejs简易的token更新模型

JWT全称为(JSON WEB TOKEN),是目前流行做登录认证的工具之一,它是一个非常轻巧的规范。

2023-05-18 18:19:50 722

原创 使用wireshark抓包理解tcp协议和tls

首先下载安装打开软件1.选则自己连结的网络;此时就会捕获的数据2.加上端口过滤。3.启动一个本地的http服务(这里采用的nodejs4.一个TCP报文段的最大长度为65495字节.TCP封装在IP内,IP数据报最大长度2^16-1,头部最小20TCP头部长度最小20,所以最大封装数据长度为TCP固定首部20个字节,即除去选项及填充同步序列编码;当前包序列号;==SynSeq;下一个包的的序列号 ==Seq确认序号==确认序号 + (对方)数据包长度点击SEQ=0。

2023-04-24 16:47:10 1869

原创 wsl迁移与升级以及docker安装

按照官网说明 先安装wsl。5.wsl1升级到wsl2。

2023-04-22 23:32:31 528

原创 typescript中array.filter的用法和ts中is的作用

此时就可以了,filter函数筛选类型时 要返回一个类型谓词;要不然ts是不知道你缩减了类型的;关键字,它被称为类型谓词,用来判断一个变量属于某个接口或类型。当我要帅选出所有A类型数据时,用filter判断是否有a属性;可以看到filter是接受泛型的:泛型S受T约束;此时你会发现 ts的推导类型并没有改变,还是。可以看到一个"类型xxx必须为类型谓词"不应该是boolean吗?这个时候就会疑惑 啥是类型谓词;TypeScript 中的。

2023-04-20 11:31:45 781

原创 格式化xml

格式化xml

2023-02-14 17:40:47 127

原创 python学习-控制windows鼠标

【代码】python学习-控制windows鼠标。

2023-01-11 10:51:10 652

原创 vscode中typescript的相关配置

typescript中别名(alias),jest,ts-node,apidoc等相关配置及示例如何配置别名

2022-11-17 14:36:41 1058

原创 关于JavaScript中reduce的使用场景

(花色简称: 红桃-H, 梅花-C, 方块-D,黑桃-S)定义一个函数,让用户选择两张扑克牌, 函数返回所有可能的顺子组合, 如果能形成同花顺,在开始前打印(SF).然后计算每一种顺子不同花色的排列组合;顺子的长度相当于for循环的层数 ,也就是递归的次数;,利用reduce去递归,比起正常递归调用,思路更加清晰, 每一步结果一个自动传下去;打印结果: SF->DA, D2, D3, D4, D5。顺子固定长度为5张牌,不用考虑K之后到A的情况。是从1开始的,而不是0开始。顺子就是一个排列组合问题,

2022-11-14 11:59:30 637

原创 typescript中interface和type学习

如果一个值是联合类型,我们只能访问此联合类型的所有类型的共有属性。

2022-10-19 19:06:33 2321

原创 DragResize

拖拽缩放

2022-10-18 11:53:11 118

原创 Token刷新处理

【代码】Token刷新处理。

2022-10-17 16:59:42 84

原创 前端录屏demo

前端录屏工具

2022-09-23 18:31:26 397

转载 vue3 和 vite3脚手架相关20个库

vue3 和 vite3脚手架相关20个库

2022-09-09 15:33:36 1852

原创 关于WeakMap的使用

es6 WeakMap的使用

2022-09-08 16:17:24 102

原创 Promise/A+实现Promise

const PENDING = 'PENDING';const FULFILLED = 'FULFILLED';const REJECTED = 'REJECTED';const resolveMyPromise = ( myPromise: MyPromise, x: any, resolve?: (result: any) => void, reject?: (err?: any) => void,) => { // 如果 x === myPromise,则会造成循

2022-03-04 19:29:32 160

原创 关于typescript的类型定义

关于typescript的类型定义的学习心得

2021-12-29 17:49:36 568

原创 koa响应http流

koa2中的如果所有中间件走完 没有设置ctx.body则会响应404import recorders from '../../recorder';import { IMiddleware } from 'koa-router';import https from 'https'; const getStreamTexts: IMiddleware< any, { query: { envName: string; streamId: string; startI

2021-08-30 18:33:00 552

原创 关于对ffmpeg中SAR/DAR/PAR的理解

SAR: 相当于从原始图片中取出单位面积的S1的像素点渲染到播放器的S2中的宽高比。(上图SAR=4:3)DAR: 相当于把原始图片中所有像素点按照SAR的值渲染到播放器中后播放器的宽高比。(上图DAR=16:9)PAR: 相当于把原始图片中 (所有横向的像素点):(所有纵向的像素点)。(上图PAR=4:3)DAR=PAR*SAR

2021-07-28 18:34:09 2823

原创 nodejs中箭头函数、定时器以及普通函数中的this指向

this相当于某个作用域的上下文;bind(this)相当于在运行时传入一个上下文替换原有this;而箭头函树相当于在函数作用域内锁定上下文this;class A { public name: string; constructor() { this.name = 'a'; } public a() { console.log(this.name); }}class B { public name: string; constructor() { this.name

2021-07-06 17:17:05 375

原创 nodejs使用promise和process.nextTick实现暂停

export default class A { public Resume: () => void; public Paused: Promise<void>; constructor() { } public Start() { process.nextTick(async () => { await (this.Paused || Promise.resolve()); console.log('runing job'); // 此处必须要用set

2021-06-03 16:54:03 531

原创 nodejs按固定大小读取文件

1.流式读取:const readstream = fs.createReadStream('test.mp4'); let i = 0; console.time('readtime'); readstream.on('readable', () => { let chunk = readstream.read(8192 * 1024); while (null !== chunk) { console.log(`file${++i} md5: ${md5(chunk)}`);

2021-01-13 13:59:00 1020

原创 ioredis自定义函数以及在ts声明文件库添加声明

在incude中添加声明文件夹:types/*添加ts的配置文件:// tsconfig.json{ "compilerOptions": { "experimentalDecorators": true, "module": "commonjs", "esModuleInterop": true, "allowSyntheticDefaultImports": true, "target": "es6", "noImplicitAny": true, "moduleRe

2020-07-15 16:36:10 729

原创 前端实现图片压缩

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>图片压缩</title></head><body> <input type="file" name=

2020-06-24 15:38:36 236

原创 js小游戏 - 五子棋人机

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="shortcut icon" href="" type="image/x-icon" /> <meta http-equiv=

2020-06-02 18:45:15 759

原创 js小游戏 - 消灭星星

github地址简介:刚学js的时候写了一个消灭星星的小游戏的, 现在改进下算法,复用dom加快渲染;其中所有定时器只是用来演示 算法的过程。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title&

2020-06-02 17:58:20 910

原创 WebAssembly之js调用c/c++代码

安装emscriptenwindows系统 建议采用wsl安装比较方便;示例test.c:#include <stdio.h>#include <emscripten/emscripten.h>int EMSCRIPTEN_KEEPALIVE myFunction(int argc, char **argv){ printf("这是一个测试函数\n"); return 0;}编译: 会生成test.js test.wasm;(详细编译命令看官网) emc

2020-05-22 12:25:14 1526

原创 在ubuntu上交叉编译

说明使用交叉编译工具 i586-mingw32msvc-g++。安装echo “deb http://us.archive.ubuntu.com/ubuntu trusty main universe” >> /etc/apt/sources.listsudo apt-get updatesudo apt-get install mingw32使用i586-mingw32msvc-g++ test.c -o test.exe...

2020-05-20 10:47:56 567

原创 前端将一个canvas的动画,录制成一个视频

requestAnimationFrameindex.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <script src="whammy.js"></script></head><body> <canvas id="canvas

2020-05-09 17:35:49 2050 1

原创 electron安装+vue实现录屏的的demo

github地址:https://github.com/zengwangqiu/electron-vue安装electron最好采用cnpm主进程main/index.tsimport path from "path";import window from "./window";import { dialog, app, ipcMain, globalShortcut, Notification, shell, screen } from "electron";let mainWindow:

2020-05-09 17:20:16 6628 6

原创 使用ffmpeg将rtmp流转成hls,使用video.js播放

服务端 ts-node server.tsserver.tsimport express from 'express';const app = express();app.all('*', (req, res, next) => { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Headers', 'Content-Type,Content-Length, Authoriz

2020-05-09 16:49:01 2037 2

原创 chrome插件demo

chrome插件manifest.json{ "name": "Desktop Capture", "description": "Allows you to capture your desktop for use in video applications", "version": "0.1.0", "manifest_version": 2, "background": { ...

2020-04-07 12:35:31 366

原创 canvas裁剪视频流

captureStreamdrawImagegetImageDataindex.html文件:<!DOCTYPE html><html><head> <style> body { background: black; color: #CCCCCC; } #c2 { background-image: u...

2020-04-07 11:49:25 807

原创 chrome浏览器录屏

getDisplayMediaMediaRecorder下载的视频格式一般播放器放不了!【vlc播放,或者使用ffmpeg转下码】index.html文件如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" c...

2020-04-07 11:26:58 1864

原创 使用request模块上传文件

const Promise = require('bluebird');const request = Promise.promisify(require('request'));const fs = require('fs');const getFileHash = function (filepath, type, start, end) { return new Promis...

2019-03-22 19:34:01 2815

原创 nodejs把文件按字节分割

function fileSplit(inputFile, splitSize, outPath, ext) { let i = 0 function copy(start, end, size) { return new Promise((resolve, reject) => { if (start >= size) { ...

2019-03-22 19:27:48 1507

原创 nodejs----JSON中存在大数字时

let bigNumJSON = JSON.stringify({"a":"test","b":635241345853678786253})bigNumJSON = bigNumJSON.replace(/:(\d+)/g, `:"$1"`)bigNumJSON = JSON.parse(bigNumJSON)

2019-03-22 19:24:26 1264 1

空空如也

空空如也

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

TA关注的人

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