- 博客(165)
- 收藏
- 关注
原创 学习Node js:raw-body模块源码解析
本文我们了解了raw-body的简单使用,raw-body模块也是Nodejs生态中使用的很频繁的一个模块,通过对v0.0.3和v2.5.2版本源码的解析,也了解了内部实现。参考资料。
2023-09-17 18:36:25
753
原创 在Nodejs中使用JWT进行鉴权
JSON Web Token(JWT)是一种用于在web上传递信息的标准,它以JSON格式表示信息,通常用于身份验证和授权。JWT由三个部分组成:Header(头部)、Payload(负载)和Signature(签名)。它们用点号分隔开,形成了一个JWT令牌。JWT 的基本结构HeaderHeader(头部)是JWT结构的第一部分,它是一个包含关于令牌的元数据的JSON对象。Header通常包含两个主要字段:alg和 typ。alg(Algorithm)字段:这个字段指定了用于签名JWT的加密算法。
2023-08-30 12:51:23
710
原创 NodeJS Cluster模块基础教程
本文介绍了使用NodeJS Cluster模块进行多进程处理的方法,包括如何创建子进程、压测Cluster、主进程和子进程通信、以及如何使用Cluster进行优雅的重启。在生产环境中,我们一般会使用PM2来进行进程管理,PM2基于cluster,提供负载均衡、过程监控、零停机重启和其他功能。下篇文章会介绍一下PM2,敬请期待吧!
2023-04-08 23:48:57
1438
原创 【JavaScript】前端必会的代码整理(包含leetcode题解)
更多leetcode题解在我的github上面:点击这里后面还会持续进行更新~常用数据结构和算法这些代码都在leetcode上AC了题目二分查找const binarySearch = function (nums, target) { if(nums === null || nums.length === 0) { return -1 } let left = 0,...
2019-04-19 13:41:42
974
1
原创 【leetcode101】 JavaScript-对称二叉树
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @param {TreeNode} root * @return {boolean} */var i...
2019-04-15 18:07:43
448
1
原创 【leetcode-102】JavaScript版本 二叉树层序遍历
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @param {TreeNode} root * @return {number[][]} */va...
2019-04-15 14:09:07
600
1
原创 【leetcode733】JavaScript-图像渲染
var floodFill = function(image, sr, sc, newColor) { let Len1 = image.length, Len2 = image[0].length let dir = [[1, 0], [-1, 0], [0, 1], [0, -1]] let visited = [] let color = image[sr][sc] ...
2019-04-15 11:25:29
497
1
原创 【JavaScript】设计模式-单例模式
let Single = (function() { let _instance = null function init(props) { return { publickMethod: function(){ }, value: props.value } } return function(props) { if(...
2019-04-09 21:24:57
309
原创 【JavaScript】设计模式-发布订阅模式
var Observer = (function() { var _message = {} return { //将订阅者注册的消息推到消息队列中,接收的参数时消息的类型和如何处理消息 regist(type, fn) { if(typeof _message[type] === 'undefined') { _message[type] = ...
2019-04-09 20:58:39
198
原创 【DNS】DNS解析过程浅谈
DNS,域名服务,负责吧域名解析成IP。理论上讲一个全世界使用一个域名服务器就够了,但为了防止服务器过载,或者服务器出现故障,导致整个网络瘫痪。DNS被设计成一个分布式的数据库系统,即使单个计算机除了故障,也不会妨碍DNS系统的正常运行。在DNS请求报文中,为了减少开销和加快速度,使用的是UDP用户数据报方式域名服务器是一个树状的层次结构1,根域名服务器,根域名服务器知道所有顶级域名服务...
2019-04-09 16:51:56
380
原创 【leetcode 41】JavaScript版-缺失的第一个正数
var firstMissingPositive = function (nums) { nums = selectSort(nums.filter(item => item >= 0)) //吧小于零的数过滤掉,并排序 if (!nums.length) return 1 for (let i = 0; i < nums.length; i++) { if ...
2019-04-09 11:28:30
305
原创 【leetcode922】JavaScript版 按奇偶排序数组 II
var sortArrayByParityII = function (arr) { arr = quickSort(arr, 0, arr.length-1) let result = [], m = 0, n = 1 for(var i = 0; i < arr.length; i++) { if(arr[i] % 2 === 0) { //偶数 res...
2019-04-09 10:28:43
227
原创 【leetcode215】JavaScript版 数组中的第K个最大元素
var findKthLargest = function(nums, k) { nums = quickSort(nums, 0, nums.length-1) console.log(nums[k-1]) return nums[k-1]};function quickSort(arr, left, right) { let index index = pa...
2019-04-09 10:26:25
744
1
原创 【JavaScript】封装一个jsonp函数
function jsonp({url, params, callback}) { return new Promise ((resolve, reject) => { let script = document.createElement ('script'); window[callback] = function (data) { //声明这个全局函数,scrip...
2019-04-04 11:12:47
303
原创 【JavaScript】leetcode89,格林编码
思路:利用格林编码的对称性/** * @param {number} n * @return {number[]} */var grayCode = function(n) { function getCode(n) { if(n === 0) { return ['0'] } if(n === 1) { return ['0', ...
2019-03-29 11:49:08
436
1
原创 【JavaScript】leetcode605,种花问题
var canPlaceFlowers = function(flowerbed, n) { var count = 0 for(var i = 0; i < flowerbed.length; i++) { if(flowerbed[i-1] !== 1 && flowerbed[i] === 0 && flowerbed[i+1] !== ...
2019-03-29 10:29:37
350
原创 【react】react单元测试初探,小白的采坑之路
第一次在react中使用单元测试,没想到遇到这么多坑我使用create-react-app创建的react项目,单元测试工具Jest已经集成在项目中了,所以直接运行:npm run test就可以运行测试样例第一个坑:找不到测试样例,命令行提示如下图:项目结构如下:经过一番google,发现react项目的测试文件夹必须放在src下面,且测试的文件名必须是:下划线下划线tes...
2019-03-26 20:20:36
268
原创 【leetcode】电话号码组合(JavaScript版)
function fn(digits) { let hash = { 2: 'abc', 3: 'def', 4: 'ghi', 5: 'jkl', 6: 'mno', 7: 'pqrs', 8: 'tuv', 9: 'wxyz', } let a = [] digits.split('').forEach(item ...
2019-03-26 14:45:33
267
原创 【JavaScript】浏览器的缓存策略:强缓存和协商缓存
通常浏览器缓存策略分为两种:强缓存和协商缓存,并且缓存策略都是通过设置 HTTP Header 来实现的。强缓存(如果命中就不会去请求服务器,返回状态码200)如何设置强缓存?1,设置http头:Cache-Control,以客户端相对时间为准Cache-Control:max-age=3600(单位是秒)。2,expires(http1.0产物)会将资源的实效日期告知客户端。Exp...
2019-03-24 10:52:19
1599
1
原创 【http】简述TCP三次握手和四次挥手
三次握手是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。可以想象两人用对讲机交谈。A:我准备好了你准备好了吗,收到请回答。B:收到收到,我也准备好了,收到请回答。A:收到收到四步挥手客户端:“兄弟,我这边没数据要传了,咱关闭连接吧。”服务端:“收到,我看看我这边有木有数据了。”服务端:“兄弟,我这边也没数据要传你了,咱可以关闭连接了。”客户端:“好嘞。...
2019-03-24 10:25:19
379
1
原创 【计算机网络】tcp udp的特点和区别
UDP协议面向无连接UDP 是不需要和 TCP 一样在发送数据前进行三次握手建立连接的UDP的不可靠性UDP 因为没有拥塞控制,一直会以恒定的速度发送数据。即使网络条件不好,也不会对发送速率进行调整。这样实现的弊端就是在网络条件不好的情况下可能会导致丢包但是优点也很明显,在某些实时性要求高的场景(比如电话会议,直播)就需要使用 UDP 而不是 TCP。TCP 面向连接,只有确认通信端存在...
2019-03-24 10:21:07
596
1
原创 【JavaScript】给定一个字符串,请统计字符串中出现最多的字母和次数
//给定一个字符串,请统计字符串中出现最多的字母和次数function fn(str) { var hash = {} for(let i = 0; i < str.length; i++) { if(hash[str[i]]) { hash[str[i]]++ } else { hash[str[i]] = 1 } } le...
2019-03-20 20:23:34
1518
原创 【JavaScript】 异步的终极方案async,await
看一个最简单例子:function x() { return new Promise((resolve, reject) => { setTimeout(() => { resolve('hello js') }, 3000) })}async function test() { let n = await x() console.lo...
2019-03-11 17:02:45
246
1
原创 【JavaScript】ES6新增的数据类型(Symbol,Set,Map,weakSet,weakMap)
回顾一下js中七种数据类型:number, string, bool,null,undefined,symbol, Object。前面六种是基本数据类型,Object是复杂数据类型Object里面又分为:Array Function Date objectES6新增的数据类型(Set,Map,weakSet,weakMap)都属于ObjectSymbolSymbol的使用:var a ...
2019-03-11 15:43:15
1071
原创 【JavaScript】三种方式实现JavaScript继承
1,组合继承function Parent(value) { this.val = value}Parent.prototype.getValue = function() { console.log(this.val)}function Child(value) { Parent.call(this, value)}Child.prototype = new Paren...
2019-03-10 14:25:56
207
1
原创 【CSS】使用css实现一个loading效果
<style> body { padding: 200px; position: relative; } .load::before, .load::after { content: ''; position: absolute; top: 0; right: 0; left:...
2019-03-09 15:58:18
349
1
原创 【JavaScript】自己动手封装一个ajax函数
我们在jquery中一般是这样是用ajax函数的:xxx.addEventListener('click', function(){ window.ajax({ url:'/xxx', method: 'get', body: '', //请求体,method为get可以为空 headers: { //请求头 'content-type'...
2019-03-06 14:07:25
253
1
原创 【Vue】Vue中methods,computed(计算属性),watch(监听数据)的区别
触发时机watch: 被 watch 的值变化的时候执行一个函数methods: getMessage() 出现在视图里的时候,或视图更新的时候调用 getMessagecomputed: 两个调试同时满足的时候:一、依赖的属性变化了 二、message 出现在视图里了或视图更新了使用形式watch 的值需要用 data 承载,本身返回值没有用methods 的返回值可以直接展示在视图...
2019-03-06 13:30:30
377
1
原创 【Vue】我对Vue双向绑定的理解
v-model从 Vue 0.x 开始,Vue 就用 v-model 来实现「双向绑定」。如data: { user: { name: 'frank'}}<input v-model="user.name">能实现以下两个绑定:user.name 的变化自动同步到 input.valueinput.value 的变化自动同步到 user.name但是当 F...
2019-03-06 12:55:25
250
1
原创 【CSS】总结一下CSS垂直居中的方案
1,使用flex布局(元素定宽,不定宽均适用)<section> <style> .parent { border: 1px solid red; padding: 20px; display: flex; justify-content: center; align-it...
2019-03-02 16:22:12
285
1
原创 【react】在create-react-app项目中使用图片路径的三种方式,亲测有效
1.引入图片:import imgUrl from ‘…/src/a.jpg’,render() { return ( <div > <img src={imgUrl } /> </div> ); }2.利用webpa...
2019-02-26 15:22:17
5013
2
原创 【JavaScript】实现两个jQuery API
window.jQuery = function(nodeOrSelector) { var nodes = {} //包装这个要返回的jQuery对象 if(typeof nodeOrSelector === 'string') { var temp = document.querySelectorAll(nodeOrSelector) //伪数组 for(let...
2018-12-15 21:50:10
214
原创 【JavaScript】JS 里的数据类型转换和内存图
类型转换&五个falsy值先来看一下js里面的七种数据类型:number string boolean null undefined object symbol。那么这些类型之间是如何转换呢?//number 转stringvar n = 1n.toString() // '1'1 + '' // '1' 老司机经常用这种方法 . 加号发现左右任意一边有字符串...
2018-12-02 00:00:26
679
1
原创 【JavaScript】图解JavaScript原型和原型链
来看一个例子:var n = new Number(1)var s = new String('s')var b = new Boolean(true)var o = new Object()这几个对象在内存中是这个样子:大家都知道js中的对象有一些共有的方法,如valueOf(),toString()如下图:想一个问题,咱们只是声明了一个对象,没有添加这些方法,那么这些方法...
2018-11-29 16:49:32
298
1
原创 【JavaScript】js数据类型那些事儿
基本类型:number string boolean null undefined symbol复杂类型(引用类型),由基本类型组成,object看一个例子:var name = 'zhangsan'var age = 18var sex = 'male'这是三个基本类型,但三个变量之间有一些关系,这个时候就可以用一个对象表示:var person = { name = '...
2018-11-26 18:11:57
197
1
原创 【JavaScript】leetcode:removeElement 移除元素
/*移除元素给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中...
2018-11-23 20:24:07
477
原创 【JavaScript】leetcode算法:moveZeroes 移动零
/*移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。*/var moveZeroes2 = function(nums) {var len = nums.lengthvar count = ...
2018-11-23 20:22:42
479
1
原创 【css】css实现布局: 左:200px,右:30%,中:自适应
第一种方法:浮动布局 &lt;style&gt; body { padding:50px; } * { box-sizing: border-box; } .clearfix::after { content: ''; display: block; clear: both } ....
2018-11-18 16:24:15
834
1
原创 【JavaScript】JS红宝书笔记
1,离线检测 1,开发离线应用的第一步是要知道设备是在线还是离线,HTML5为此定义了一个 navigator.onLine属性,这个属性值为 true 表示设备能上网,值为 false 表示设备离线。 2,除 navigator.onLine 属性之外,为了更好地确定网络是否可用,HTML5 还定义了两个事件:online 和 offline 。当网络从离线变为在线或者从在线变为...
2018-11-18 14:58:49
496
1
原创 【CSS布局】深入理解CSS flex布局
先来看一张图:基本概念1, 主轴默认为x轴,侧轴默认为y轴。flex布局就是围绕这个轴来进行的2, flex container就是布局的父元素,flex item就是子元素flex container的属性一共有:1,主轴方向flex-direction: row/row-reverse/column/column-reverse来看一个例子: <style> ...
2018-11-17 21:01:58
612
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人