沙沙罗曼的专栏

写点技术,聊聊生活

Node.js之class vs module

Node.js之class vs module class是面向对象编程中的重要概念,它强大到大家没有任何可以吐槽它的角度,但本文还是想针对Node.js对class与module做个对比,然后结合实际俩聊自己的思考。 class 通过对相似事物的共性进行抽象,从而得到class,在所有面向对象编...

2019-07-14 23:47:03

阅读数 10

评论数 0

系统限流

系统限流 最近在系统中对一个资源访问做了限流,写篇文章聊聊这个话题。 为什么要限流 在衡量Web系统性能的指标中,最重要的参数是极限QPS,它表示系统每秒最多能够处理的Query数。从定义中可以知道QPS是一个描述系统处理速度的指标,当存在需要处理的流量(Query数)使得系统即使以极限QPS处理...

2019-05-05 21:54:56

阅读数 74

评论数 0

利用Redis实现排队需求

利用Redis实现排队需求 近期在项目中做了一个用户排队等待接入客服的需求,此文记录自己的实现思路与过程,以及一些考虑的异常。 需求 大部分人都有排队等待接入客服的经历,所以需求不难理解:“存在一个在线客服列表,用户发起接入请求时,从客服列表中选择空闲的进行配对接入,如果没有可用客服则用户进入等待...

2019-03-23 16:34:21

阅读数 575

评论数 1

排序算法

排序算法 直接插入排序 直接插入排序的思路是遍历过程中保持被遍历过的元素有序,每遍历到一个新元素时如不能保持已遍历元素有序,则为该新元素寻找合适的插入位置插入以保持遍历元素的有序性,当完成遍历时所有元素均有序。 假设初始列表items = [4, 2, 3, 1, 5],非降序的直接插入排序过程如...

2019-03-09 21:19:10

阅读数 17

评论数 0

数据结构-二叉树

数据结构-二叉树 树 树的定义 树是n个结点的有限集合,在一个非空的树中有且只有一个根结点,其余结点可分为m个互不相交的有限子集,其中每个子集又是一棵树,并且成为根节点的子树。 文字定义有点绕,但图形化很容易记住: |----------A----------| |...

2019-03-04 22:09:04

阅读数 24

评论数 0

小程序-Canvas绘制折线图

小程序-Canvas绘制折线图 自己在一个小程序项目中,希望通过绘制折线图展示不同时间的数值变化趋势,搜索了一番后没找到特别好的第三方库,故打算自己实现一个简单的绘制折线图方法,本文记录自己如何在小程序中通过canvas绘制折线图。 目标 最终目标是达到官方小程序数据助手中折线图的效果: 除了U...

2019-02-27 15:17:02

阅读数 365

评论数 1

WebSocket备忘

WebSocket备忘 记些websocket的知识备忘。 对比HTTP优势 websocket与HTTP一样,都是建立TCP之上的应用层协议,它较于HTTP的优点主要有以下两点: 全双工 HTTP不允许服务端主动向client发送数据,websocket在设计之初着重考虑了这个问题,所以w...

2019-02-24 00:12:27

阅读数 22

评论数 0

Node.js Event Loop备忘

Node.js Event Loop备忘 Event Loop阶段描述图 ┌───────────────────────────┐ ┌─>│ timers │ │ └─────────────┬─────────────┘ │ ...

2019-02-21 15:40:12

阅读数 13

评论数 0

实现文本diff比较与展示

实现文本diff比较与展示 作为编程人员,文本diff比较与展示应该不陌生,最常见的是在Git中使用git diff命令,可以查看代码修改前后的对比。在git中diff比较与展示的最小单位是行,因为代码修改涉及的改动一般较多,以行为单位显示出来的效果,美观且容易阅读。 自己最近在某个项目中遇到与一...

2019-01-17 15:58:39

阅读数 317

评论数 0

利用Redis实现分布式锁

利用Redis实现分布式锁 在之前的答题对战项目中,游戏规则是根据双方回答同一道题所花时间长短判胜负,但测试过程中遇到一个偶现BUG:“对战开始后双方收到的题目不一致”,经过分析代码,发现问题原因在于发题逻辑没有加锁,所以写篇文章聊聊这个话题。 什么是锁 在编程领域,锁是一种用来做独占代码执行的方...

2018-12-17 20:51:22

阅读数 33

评论数 0

实简单现websocket信道服务

实简单现websocket信道服务 开端 之前有为一个项目做顾问工作,帮助解决了几个问题。该项目完全按照wafer解决方案做的,我在解决问题过程中,发现wafer信道容易出现消息丢失情况,当时由于金主预算有限,没有从根本上解决这个问题,只是做了些曲线救国的优化,然后继续将就着用。与此同时腾讯官方表...

2018-12-05 11:15:07

阅读数 226

评论数 0

docker学习之杂谈

docker学习之杂谈 docker,离我第一次“近距离”接触已过去两年有余,这次为追赶潮流再次学习一番,此文记录自己对docker的一些认识和见解。 我对docker的认识 docker,本质上我认为是一个虚拟化技术,与虚拟机类似,虚拟机可以在宿主机上模拟完整的硬件环境,从而可以独立安装操作系统...

2018-10-17 11:31:46

阅读数 33

评论数 0

wafer信道的不可靠性

wafer信道的不可靠性 wafer - 企业级微信小程序全栈方案 近期帮他人处理了一个与wafer信道有关的技术问题,通过了解wafer信道相关内容,自己也对websocket也多了些认识,本文捋一捋自己这次经历以及收获。 问题场景 一个双人问答对战的小程序,多轮对战的过程中某一方可能出现卡住的...

2018-10-11 17:20:21

阅读数 234

评论数 0

Linux的知识备忘

Linux的知识备忘 最近在复习Linux的基础知识,这篇文章纪录一些我认为较有用的小知识点,相互之间没有必然联系。 目录 目录 说明 / 根目录,万物起源 /bin 系统启动和运行所必须的二进制程序 /boot Linux内核和启动加载程序 /dev 设备结点的特殊目...

2018-10-11 11:14:17

阅读数 19

评论数 0

InnoDB Gap锁

InnoDB Gap锁 这篇文章基于大家对于数据库事务隔离级别以及数据库锁有一定的认识,然后讲一讲InnoDB的Gap锁。 事务隔离级别 数据库的事务隔离级别主要用于定义并发事务之间的相互影响,比如如A事务将一条数据的id由2修改为3但未提交,这时B事务查询该条数据,id是2还是3?事务...

2018-08-24 17:58:37

阅读数 434

评论数 0

session、token与jwt

session、token与jwt 自认为对session、token与jwt理解还可以,这次来讲讲这个话题。 session与cookie 什么是session session翻译过来是会话,但在WEB领域常常是指会话数据:“同一客户端与服务端进行沟通时的上下文信息”,sessi...

2018-08-21 17:05:33

阅读数 1602

评论数 0

使用子进程方式避免sharp rss占用过大

使用子进程方式避免sharp rss占用过大 前些日子写了一篇文章-记一次内存泄漏处理,曲折过后发现并不是内存泄漏问题,而是rss占用过大,这篇文章讲述自己解决这个rss占用过大问题的一种方式:子进程调用。 前情回顾 应用中有一个服务端合成海报图片的功能,这个功能借助第三方库sharp实...

2018-08-14 16:58:04

阅读数 128

评论数 0

Node.js + InfluxDB实现APM

Node.js + InfluxDB实现APM 应用性能监控,简称APM(Application Performance Management),它可以让我们随时快速的了解应用所处的状态,以及提供预警等功能。之前只知道有这么个东西但没有接触过,经验基本为零,最近由于业务发展良好并且自己也有兴趣,...

2018-08-07 18:47:53

阅读数 343

评论数 0

记一次内存泄漏处理

记一次内存泄漏处理 近期在检查服务器状态时,发现每个Node.js进程占用的内存大小在400-500M之间,根据平时的经验判断是代码中出现了内存泄漏导致,本文就记录这次内存泄漏问题的处理过程。 定位内存泄漏原因过程没有用到什么高难度技术,只是靠经验凭感觉找到的问题代码,简言之就是应用中有一个合...

2018-08-01 11:55:25

阅读数 247

评论数 0

记一次WEB服务器性能优化

记一次WEB服务器性能优化 上个周末,自己做的一个业务后端,因为流量“过大”导致大部分请求在正常时间内都无法完成响应,故障持续了1个小时,中途只能调低nginx的连接上限,让部分人能够访问。 这个业务后端上线一个多月,那一天的流量大约占之前所有流量的1/3,而且集中在那么几个小时内,QPS压力...

2018-07-22 12:29:17

阅读数 558

评论数 0

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