自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 手撕redis单实例分布式锁(node)

单实例分布式锁实现应用场景redis分布式锁实现思路redis单实例实现过程解决占位问题解决死锁问题释放锁问题场景与解决方案网络闪断造成死锁错误的删除锁手撕单实例应用场景用于抢红包、抢票类似的服务,商城抢货。等场景中,对同一资源进行读写操作,避免不了的一个就是资源竞争问题,通过引入分布式锁这一概念,可以解决数据一致性问题。注:如果是redis集群,每个redis master节点都是独立存储的,这种场景用单实例会有安全性问题redis分布式锁实现思路实现分布式锁的方式有很多,类似: 数据库(mo

2020-09-11 17:57:05 376

原创 遇事不决看源码

js常用源码实现简介实现一个new源码实现Object.create实现instanceofbind实现call实现apply实现结束语简介手撕常用源码为面试中必备的技能,欢迎各位大佬一起探讨指正~实现一个new源码首先了解new对实例化构造函数时内部实现了啥:创建一个控对象将构造函数的原型对象添加到这个对象的隐形属性__proto__执行构造函数当函数返回对象的时候,返回对象当函数返回非对象的时候返回这个ob j具体代码实现逻辑如下// es5写法function newp(Co

2020-09-03 20:06:00 180

原创 redis基于近似LRU算法以及LFU算法的内存淘汰策略

redis淘汰策略优化redis配置内存对应终端操作:allkeys-lru 策略 vs noeviction(默认策略)allkeys-lru 策略noeviction(默认策略):LRU算法:内存淘汰终端命令:redis配置内存Redis是基于内存的key-value数据库,因为系统的内存大小有限,所以我们在使用Redis的时候可以配置Redis能使用的最大的内存大小。对应终端操作:config set maxmemory 100mb 设置redis最大内存config get maxmemo

2020-07-29 19:52:03 430

原创 mongoose实现mongo表关联(populate)

2020-03-12 01:46:43 771

原创 koa中间件梳理(洋葱模型)

koa介绍koa是一个精简的node框架,它主要做了以下事情:基于node原生req和res为request和response对象赋能,并基于它们封装成一个context对象。基于async/await(generator)的中间件洋葱模型机制。koa1和koa2在源码上的区别主要是于对异步中间件的支持方式的不同。koa1是使用generator、yield)的模式。koa2使用...

2020-02-27 19:03:57 1091

原创 mongoose建表的一系列骚操作(对象扩展、类上扩展、虚拟属性)

一: 对象扩展(Schema.methods)对象扩展则是一个具体事物使用的方法对于对象扩展:比如我想根据具体的一本书,比如《程序员的自我修养》查找和和它类似的书,则定义实例方法 doc.isSimilar(xxx)。实例方法嘛,调用者是具体的实例注: 对于对象扩展是一个对象的调用方法可以通过mongodb查出的对象调用她的方法,也可以用生成一个实例对象调用它的方法二: 类上扩展(Sc...

2020-02-26 14:12:15 575

原创 gin框架学习笔记

gin框架学习笔记官网reviewgin 是用go编写的web框架,由于httprputer(基于radix树路由)速度快了40倍,支持中间件,路由组处理,json等多方式验证,内置了json/xml/html等渲染,是一个易于使用的go 框架如果是用常量,比如http.statusOk impport “net/http”gin使用默认的encoding/json作为默认的json包,但是可以通过其他标签构建改变他 (jsoniter: https://github.com/json

2022-01-25 00:25:01 638

原创 10分钟掌握sentry

gtihub地址:Sentry is a service that helps you monitor and fix crashes in realtime. The server is in Python, but it contains a full API for sending events from any language, in any application.简单总结: sentry是一个能够实时监控的服务,可以使用于一些语言和服务目前可以应用的服务如下简介:Sentry 是一个

2021-11-17 23:56:42 695

原创 node高并发原理机制

node高并发原理机制概念node架构图单线程、异步事件循环事件驱动+事件循环实现高并发概念事件循环:事件循环是一种编程构造,用于等待和分派程序中的事件或消息, 事件循环使Node.js可以通过将操作转移到系统内核中来执行非阻塞I/O操作(尽管JavaScript是单线程的)。事件队列:当用户的网络请求或者其它的异步操作到来时,node都会把它放到Event Queue之中,此时并不会立即执行它,代码也不会被阻塞,继续往下走,直到主线程代码执行完毕。任务队列:任务队列"是一个事件的队列(也可

2020-07-30 19:52:08 1296

原创 gitlab上创建项目

git 创建项目1. 添加个人ssh2. 在本地主机并设置下git的用户名和邮箱3. 新建project4. 新建群组项目5. 添加群组成员6.开发者操作总结创建一个合并请求如果项目在本地已经存在,需要导入到gitlab,可以通过命令直接将项目导入上去如果已经拉取过远程仓库,每次在本地编辑代码之前,应该从远程获取最新版本并merge到本地项目push到远程仓库1. 添加个人ssh终端操作命令ssh-keygen.exe –t rsa生成SSH公钥-> ~/.ssh打开隐试文件夹

2020-07-15 08:59:37 643

原创 js数组方法应用场景汇总

js arary方法、应用场景汇总数组的创建数组的元素的访问数组元素的添加数组元素的删除 (调用方法后数组形式返回所移除的元素, 原数组移除元素)数组的截取和合并数组的拷贝数组元素的字符串化查询元素有没有在数组中数组累加随机返回数组中数据数组的3个属性(length、prototype、constructor)数组的创建var arrayObj = new Array();创建一个数组var arrayObj = new Array([size]);const arr = Array(100)

2020-07-09 09:07:18 650

原创 node与java区别(语言、生态、数据库、性能、开发效率,5个方面)

5个方面区别语言对比生态数据库操作性能开发效率对比图片语言对比js事动态语言,java是动态语言(不能改变它的类型的语言,是静态语言;能够随时改变它的类型的语言,是动态语言),要到运行时才知道类型错误,测试就得些的更好更详细。js解释型语言, 编写的程序不需要编译。解释型语言在运行的时候才翻译, java编译型语言, 写的程序执行之前,需要一个专门的编译过程,把高级语言翻译成机器语言(解释型语言的特点是,跨平台、知识产权保护性弱、运行效率低, 编译型语言特点是,跨平台能力差、知识产权保护性强、运行

2020-06-22 14:43:38 1134

原创 箭头函数vs普通函数详解

2020-04-15 20:25:26 198

原创 函数this指向问题

2020-04-15 00:47:44 127

原创 npm 依赖上传及规范

npm上传规范一:简介二:常用命令三: 上传包之npm四. npm的版本控制规范npm有一套自己的版本控制标准 具体体现为:五: 上传依赖时需改下载仓库附上小弟的npm地址,哈哈哈一:简介npm是javascript的包管理工具,是前端模块化下的一个标志性产物简单地地说,就是通过npm下载模块,复用已有的代码,提高工作效率二:常用命令 1. npm install 下载包 2. npm unistall 删除包 3. npm login

2020-04-09 21:54:38 344 1

原创 写了这么久代码你了解package.json吗?

2020-04-09 21:52:27 146

原创 nanoid + axios 完成外部接口调用以及日志记录

2020-04-09 00:44:24 255

原创 利用node原生依赖crypto完成加密解密

2020-04-09 00:30:47 232

原创 js单元测试(ava&&nyc)

测试用例ava测试代码覆盖率查询

2020-03-19 01:42:22 367

原创 node原生方法修改url

node原声的方法有它默认的排序host + path + hash, 如下图,因为项目需要更改path到hash后面,最后采取node原生url规则拼接。

2020-03-14 01:17:41 592

原创 不一样的帅气,不一样的mongo schema

让你写出高逼格的schema创建规则

2020-03-13 01:43:20 150

原创 建立常用的mongo索引

mongo索引建立索引方式索引属性索引类型(6种常用)1. 单字段索引2. 唯一索引3. 复合索引查询需求4. 多key索引5.部分索引6. 稀疏索引应用场景:建立索引注意事项建立索引方式1. 是在schema定义字段时2. 通过index方法给schema添加3. db.modle.creatIndex({filed: 1}) mongo shell添加索引索引属性1. index: 布尔值 是否对这个属性创建索引2. unique: 布尔值 是否对这个属性创建唯

2020-03-10 00:42:52 417

原创 anyproxy(实现app抓包)

下次在说配置ci实现https抓包~

2020-03-03 15:06:46 592

空空如也

空空如也

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

TA关注的人

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