自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Andy Tools

闻道有先后,术业有专攻,达者为师

  • 博客(203)
  • 资源 (1)
  • 收藏
  • 关注

原创 JavaScript 对象深浅复制

最近使用使用微信推送模板消息时,数据都是通过固定的模板消息函数封装并返回, 而遇到对象浅复制的问题,导致有并发情况下,微信接口推送的是最后一个传入数据。虽然意识到了这个问题,但发现自己还没有处理过这种深复制的情况,这里整理一下,以供以后使用。如果需要代码 直接点击2.7节中 lodash库提供的接口使用,网上测评该lib的实现性能更高,在npm上的用户也非常多,可以直接用轮子。文章目录1 深...

2019-07-31 18:20:27 258

原创 Webrtc SDP格式解读

因为设备端只支持H264编码方式接入,这里涉及到webrtc web端要修改默认编码器,而编码器就离不开webrtc 信令中SDP 消息的解读,读懂了 才能知道自己支持编码器的情况下对SDP的信息进行二次修改。本文主要内容来自该说明文档:https://tools.ietf.org/html/draft-nandakumar-rtcweb-sdp-08主要涉及到 RFC4566 RFC5888...

2019-07-17 20:15:15 2759

原创 Nodejs 创建目录并写入文件

经常有遇到这种场景,向某一个路径下写入一个文件,路径不存在则创建路径并创建文件,文件存在则覆盖。就是想用一个接口就可以把数据写到某路径的文件内,而不care 路径 文件 存不存的问题。在其他语言比较容易实现。而在node中,就有点麻烦了,因为writeAPI成功的条件是路径必须存在,而路径在node老版本的情况下又要一层层往下创建。在node 10之后有递归创建路径了。这里就是基于该特性写了一个...

2019-07-12 17:50:16 15827

原创 C++获取时间戳(Linux)

Webrtc 信令服务器通信,需要实现samplewebrtc信令服务器中sid参数,而sid 参数是一个毫秒时间戳。web端是js很好拿到,而另一端是用C++实现的耶,C++获取毫秒时间戳(距离19700101000的毫秒数),没有做过,这里记录一波。环境:Linux C++11秒时间戳 使用了time.h毫秒时间戳使用了 c++11 标准库: std::chrono#include ...

2019-07-08 14:19:09 19207

原创 webrtc SDP和candidate消息生成位置学习

本文以simplewebrtc源码为例,但实际上原生API的相应事件触发即会生成相应消息。文章目录1 ICE消息生成及发送2 SDP 消息生成2.1 offer 消息生成2.2 answer 消息生成1 ICE消息生成及发送ICE消息触发是由 webrtc 原生API RTCPeerConnection 中onicecandidate事件传出,在经过rtcpeerconnection做了一...

2019-06-27 18:14:45 11750 1

原创 Webrtc流程学习-SimpleWebrtc源码阅读

文章目录1 源码结构2 流程走读3 源码阅读3.1 流程API关键解读3.2 SimpleWebrtc相应代码解读3.2.1 准备阶段(1)第一个进入房间(房主)(2)加入者(后续进入房间者)3.2 建立链接(1)加入者发送offer及candidate消息(2)房主接收offer并处理后发送answer(3)加入者处理answer消息(4)双方收到candidate消息处理SimpleWebr...

2019-06-27 18:07:31 1755

原创 AWS 创建EC2及使用ssh登录

AWS EC2创建的区域即右上角你选择的服务器决定。目前成都测试,下午电信联通环境下,都是绕北京到AWS 日本 首尔线路十分拥堵掉包严重,所以建议可以考虑AWS 新加坡区域,测试发现是直接从香港出海,掉包率较低。1 AWS后台创建EC2实例1 登录AWS EC2控制台并选择EC2服务进入EC2控制界面点击启动实例(确定拥有足够权限)2 选择你需要为EC2预装的操作系统版本,这里我选择ubu...

2019-06-06 16:06:04 23583 2

原创 simpleWebrtc 架设方案

近期架设一次webrtc另一种开源实现simplewebrtc用于学习webrtc整体实现及架构。现在单纯P2P架构的webrtc开源服务器已经很少了且近乎没有维护。大部分都是Webrtc SFU和MCU网络模型实现,但对于物联网设备一般情况下下都是一对一通话且P2P十分重要(转发服务器开销很大)。开源实现里面稍微靠谱一点就是SimpleWebrtc方案了,但该方案也在18年中旬停止维护了,今天...

2019-06-06 16:03:21 2332

原创 Apprtc 域名与ip访问同一房间无法建立链接

前一阵同事架设webrtc Google官方演示 apprtc。 实际使用中发现了一个问题,使用域名访问 和使用ip访问 同一房间时无法建立链接。这里就进行了一波debug,读读apprtc的源码顺便学习一波。首先通过FireFox 的about:webrtc的方法查看webrtc Client 链接建立记录发现ICE没有得到得到对端SDP相关信息,当然这样肯定无法建立链接啦。但是本地SDP相关...

2019-05-30 19:51:46 580

原创 JavaScript 对象数组操作(属性值存在,排序,最大最小)

最近需要将一个对象数组存到数据库中, 然后又要进行各种操作,这里写一个sample来记录操作方式。嗯 室友叫John,这里就写一个找John吧。sample有以下功能:查找对象数组中某个对象属性值是否存在并返回完整对象查找对象数组中某个对象属性值是否存在并返回Index以对象数组中对象某个属性排序找出对象数组中某个属性的最大最小值let testArray = [ { ...

2019-05-21 19:49:46 648

原创 JavaScript 查找有序数列中缺少的最小值

最近有一个需求,需要在获取一个可用id 在0~max值范围内,且有数量限制。 该id可以被删除, 删除后新的id应补位。这里举一个例子。规则:比如现在一个id 都没有用则 获取到的id为0[0]如果继续获取则为1[0, 1]如果继续获取则为2[0,1,2]继续获取则为3[0,1,2,3]现在删除1[0,2,3]再次获取则为1,在获取则为4[0,1,2,3,4]现在删除1...

2019-05-21 19:42:10 515

原创 AWS Client端SDK授权方案(Amazon Cognito 身份池)

文章目录1 Amazon Cognito 简介用户池身份池2 移动端通过Amazon Cognito接入架构2.1 使用用户池或公共登录提供商2.2 经过开发人员验证的身份3 实际使用3.1 创建身份池并自定义验证方案及权限3.2 账户服务器返回token及IdentityId3.3 终端使用token及IdentityId授权AWS SDK4 参考链接协助同事接入AWS mobile SDK,...

2019-05-21 19:35:55 9761 4

原创 AWS IOT使用模型及限制

1 AWS IOT接入模型1.1 AWS shadow 使用模型APP 通过HTTP 更新AWS Thing shadow属性控制Device ,当Device 更新完相关属性对应操作后会response AWS IOT Cloud 更新对应AWS Thing shadow中属性。 APP 通过http 轮询去查询Thing Shadow更新状态是否成功。该方式通信单向,即APP ...

2019-05-21 19:32:43 1483

原创 Webrtc 服务器网络模型

初次接触到Webrtc,都会了解到WebRTC实现了基于网页的语音对话或视频通话,目的是无插件实现web端的实时通信的能力。一版情况下会接触到下面的网络通话模型。meshSFUMCU文章目录1 1对1通话2 多对多通话2.1 mesh网络模型2.2 SFU网络模型2.3 MCU网络模型2.4 常用webrtc开源服务器3 参考链接1 1对1通话两端浏览器(clientA,clie...

2019-05-09 20:18:25 864

原创 Mediasoup(webrtc) Demo搭建及测试

团队大佬有点嫌弃原来p2p方案提供商,准备尝试使用webrtc评估替代可能性,所以近期开始架设webrtc的服务器。因为webrtc是一套通用协议,所以基于三方服务器进行通路测试及评估,先跑起来再逐步学习。基于技术栈就选以node接口的mediasoup这款开源服务器跑起来熟悉下套路。本文为Mediasoup demo部署说明。Mediasoup官网:https://mediasoup.orgM...

2019-05-07 15:22:14 33483 46

原创 DynamoDB 关系建模(多对多)

前一阵在Stack Overflow 上看到一篇关于DynamoDB 建模的回答,回答很好。所以这里整理一篇文章回顾该回答,指导以后的设计。文章目录1 Dynamodb 基础概念2 一对一3 一对多3 多对多3.1 辅助表3.2 外键集3.3 图形模式4 参考链接1 Dynamodb 基础概念每个DynamoDB表都有一个唯一的主键。主键必须由分区键组成,并且可以选择性地具有排序键。...

2019-04-29 09:54:55 1719 2

原创 后端缓存原理及常见问题

作为 server端经常会用到缓存技术来提供降低数据库压力和提高服务性能,因为一些数据我们没有必要每次查询的时候都去查询到数据库。今天读到一篇文章加深了自己对缓存的认识,整理一篇文档以作记录。文章目录1 缓存的基本实现2 缓存穿透2.1 原理2.2 解决方案3 缓存击穿4 缓存雪崩5 热点数据集中失效问题6 参考资料常见的缓存有redis等内存性缓存服务器。对于自己维护数据库而言,所有的请求都...

2019-04-25 20:19:42 3508

原创 makefile/gcc 向代码传递宏

今天捡起去年年初写的AWS IOT C code进行一波维护。代码通过AWS IOT 和服务器进行交互,具有基本控制功能,这是在X86平台上。但在嵌入式平台上还多了部分跑rtmp码流部分的代码。为了方便的在不同平台上调试代码不用去手动修改其中的内容今天在MakeFile中添加了平台这个变量并传入C代码中。而这种根据平台不同,需要调用不同编译器,依赖不同的lib,执行代码中不同部分的情况非常常见,...

2019-04-18 19:56:29 2013

原创 gulp打包混淆支持await/async语法

最近需要对node代码进行混淆编译,原来曾经解决过ES6打包混淆的问题,但最近在代码中使用了async/await语法,原来的gulpfile混淆又出问题了。下面是记录这次问题的过程,想要看解决方案可以直接跳第三节。文章目录1 环境2 问题3 解决方案1 环境待混淆代码 test.jslet test = function(){ return new Promise((resol...

2019-04-17 18:23:56 2859 1

原创 压力测试概念及方法(TPS/并发量)

最近在对代码进行压力测试,这里整理一下压测中的指标和方法。文章目录1 压力测试中的指标1.1 TPS1.2 QPS1.3 平均处理时间(RT)1.4 并发用户数(并发量)1.5 换算关系1.5 TPS和QPS的区别2 压力测试方法3 相关文档1 压力测试中的指标1.1 TPSTPS 即Transactions Per Second的缩写,每秒处理的事务数目。一个事务是指一个客户机向服...

2019-03-22 19:52:35 73131 1

原创 Node express 性能测试

最近在对服务器进行压力测试,顺便测试了一波本身express框架单机情况下的性能,这里分享出来给大家参考。文章目录1 测试环境1.1 服务器硬件1.1.1 t2.micro1.1.2 c5.large1.1.3 压力机1.2 测试工具1.2.1 测试端1.2.2 服务器监控1.3 测试方法2 测试数据2.1 c5.large2.2 t2.micro3 相关文档1 测试环境1.1 服务器硬...

2019-03-22 19:46:35 5130

原创 服务器并发量估算

最近需要对再次对服务器进行压力测试,这里整一下最近学习到的估算方案和估算方式。1 并发值估算1.1 经典公式一般来说,利用以下经验公式进行估算系统的平均并发用户数和峰值数据 1)平均并发用户数为 C = nL/T 2)并发用户数峰值 C‘ = C + 3*根号C C是平均并发用户数,n是login session的数量,L是login session的平均长度,T是值考察的时间...

2019-03-18 20:21:18 9409

原创 正/反向(proxy)代理

最近整理日志时,看到关于代理方面的记录。感觉可能以后又时很长时间接触不到这些东西,有必要整理文档记录下一波。程序猿基础操作之代理。文章目录1 基本概念2 正向代理3 反向代理4 正向/反向代理的区别5 参考链接1 基本概念代理(英语:Proxy)也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器...

2019-03-08 20:20:11 743

原创 HTTPS 协议简析

最近在微信公众号上关注了几个资深牛人的文章,今天看到了一片程序员小灰讲https的文章。虽说平时已经用的很多了,而且去年也因为要解决一些问题而学习了https的部分细节,但读了文章之后,仍然发现理解上有所差异,所以特此整理一文章记录自己所掌握的内容。1 HTTPSHTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以...

2019-02-28 20:10:21 321

原创 AWS SES发QQ邮箱拒收解决方案

文章目录1 背景1.1 现象1.2 环境1.3 测试2 分析与解决2.1 原因分析2.2 解决2.2.1 Mail From2.2.2 使用 DKIM 对电子邮件进行身份验证2.3 小结1 背景1.1 现象先说现象,现象是用使用AWS SES发送邮件,QQ邮件收件箱和垃圾箱都没有mail。Mail 必须要在自助查询-收件查询才能找到,发现下面有一栏被系统拦截的选项。本文并不是因为ip...

2019-02-22 10:48:12 8139

原创 Git 常用命令

记录汇总一下平时可能用到的git命令1 基础操作git init 新建一个空的git仓库git status 查看当前代码状态 那些被修了(deleted:被删除 ,没有前缀的文件名:新增文件,modified:部分修改)git diff 文件名 查看该文件与git仓库中文件对比git add file(文件路径)将文件加入到暂存区git rm file删除文件。当本地文件被删除时,执...

2019-02-02 14:47:36 190

原创 git commit 规范化(git commitizen工具)

在最近引入git flow流程规范 git开发流程时,在同事的blog里面同样找到一个工具git commitizen。这个工具可以用来规范git commit 的提交。原来一直都是git commit -m 添加一些描述就完了。但借着这个工具了解到了更多的commit 规范,这里特此记录一下使用过程。本文参考阮大神的blog:http://www.ruanyifeng.com/blog/201...

2019-01-31 19:41:49 6671

原创 规范地使用git(git flow)

在熟悉git的基本操作后,其实应该引入更加专业的工具让Git规范起来。在上周学习git flow 和git cz(规范commit)的使用,确实用起来了可以减少很多麻烦。本文旨在介绍最近学习的Git flow流程和如何使用工具践行这个流程。关于git flow的详细介绍,本文参考了该文章(可能国内访问有问题):https://nvie.com/posts/a-successful-git-br...

2019-01-31 14:20:30 1616

原创 AWS 不同区域网络测试方案

最近被AWS 首尔区域整的焦头烂额,后来发现是北京到东京掉包严重。这里就涉及到新的AWS服务器选型的问题。需要评估一个更稳定的新区域。这里提供部分评估方法和调试经验。https://www.cloudping.info/一个有网站可以辅助测试不同可用区访问情况。当然我们也可以自行测试:http://ec2-reachability.amazonaws.com/首先可以在这个网址内找到相应...

2019-01-17 19:59:49 10670 1

原创 网络掉包分析工具mtr

这是12月调试服务器网络情况总结的第三篇文章,网络掉包分析工具mtrMTR(My traceroute,原名Matt’s traceroute)是一套网络诊断工具,包含了traceroute与ping的功能。 前两篇文章介绍ping 用于测延时大致掉包率和用于测试网络路径工具traceroute工具,这里介绍介绍一下两者的综合体mtr工具。运行Mtr指定一个IP地址,Mtr会查看运行Mtr的主...

2019-01-17 19:52:57 6258

原创 Xshell 脚本简化二次登陆

一般情况,网络都会做出网络隔离,分为内网和外网环境。而内网工作机访问到外网都有一台中转的服务器(也可以被称为网关服务器),现在经常有种需求比如想要连到AWS EC2 就需要先登录工作机环境的中转服务器,再在中转服务区上使用ssh连到AWS EC2上。这个流程用反复手动输入显得愚蠢。今天在xshell 中找到一个叫登录脚本的配置,测试一番发现果然可以很简单实现二次登陆的功能。示例:如何使用 首...

2019-01-14 18:21:13 3257

原创 AWS中国EC2 80端口无法访问

AWS 中国和全球区有很大差异,80/8080端口均需要备案才能访问。安全组配置80端口,没有备案实际上也是没有效果的。

2019-01-10 20:12:08 11115

原创 Traceroute命令原理及使用(路由跟踪)

traceroute,现代Linux系统称为tracepath,Windows系统称为tracert,是一种计算机网络工具。它可显示数据包在IP网络经过的路由器的IP地址。我们可以用这个命令来查看数据包途径的网络节点和ISP,从而排除一部分网络问题。本文基于Linux环境文章目录1 原理2 命令3 举例4 参考链接1 原理程序是利用增加存活时间(TTL)值来实现其功能的。每当数据包经过一个...

2019-01-08 20:27:29 30716

原创 HTTP调试工具-POSTMAN使用(3) 变量及环境使用

上篇文章:https://blog.csdn.net/m0_37263637/article/details/84538698在上一篇文章中,我们尝试使用测试代码让POSTMAN对http响应结果进行判断。这就是通常使用最简单测试用例了。但一般情况下,都会区分环境,比如开发环境,测试环境,生产环境。而这些环境的地址或某些参数肯定是不同的,手动修改会显得十分愚蠢,所以如果想用一套测试case能够在...

2018-12-28 15:07:04 1016

原创 域名分级与域名解析过程(DNS)

前几天被其他同事的一个问题给问到了,域名的问题,问本人现在的域名很长,当时随口一说是这是一个二级域名,但后面一想有点不对,这种基础的东西搞不清楚是显得又low又蠢,得学习记录一波。今天晚上有空转身就把绿壳计算机网络摸出来了,果然说错了……本文参考:计算机网络第六版1 域名及域名分级的原因域名系统DNS(domain name system)是因特网使用的命名系统,用于把便于人们记忆的机器名字...

2018-12-26 22:13:56 52888 6

原创 Ping 命令原理及使用

最近处理国内访问AWS海外区网络问题,学习了一系列原来没有彻底搞清楚网络知识,这里特此记录。Ping命令可以拿来测网络是否联通,网络响应时间和基础的掉包率。但掉包分析建议使用mtr工具完成。ping是一种计算机网络工具,用来测试数据包能否透过IP协议到达特定主机。ping的运作原理是向目标主机传出一个ICMP echo@要求数据包,并等待接收echo回应数据包。程序会按时间和成功响应的次数估算丢...

2018-12-24 13:30:24 4247

原创 AWS Dynamodb 跨区域迁移数据方案(cross-region replication)

最近实在受不了中国访问AWS首尔区域了 ,决定把整个环境迁移到新加坡,服务器迁移倒是比较简单,但数据库迁移遇到很大的麻烦。原以为DynamoDB 全局表可以很容解决跨区域数据同步的问题,结果发现DynamoDB全局表只能在为空表的前提下使用,即必须是新建的表。而不能说 用到中途把普通表改成支持多区域的全局表。文章目录1 AWS Data Pipeline 方案2 git上AWS的迁移工具包dy...

2018-12-20 09:58:11 2053

原创 vscode配置中文UI

前天给自己上古笔记本装了一块固态硬盘重装了个系统,顿时又有兴趣在家里用电脑了。今天把用的最多的VS code装上,vs code安装很简单,在官网下载下来直接默认安装即可。但打开才发现和在公司用的有点不一样是英文UI有点不习惯。但很久没配置了忘了如何配置了。这里特地记录一下,以便以后再用。1 在VS CODE 推展里搜索Chinese 第一项就是语言包,选择安装(install)2 修改V...

2018-12-19 00:57:47 1195

原创 全球海底光缆图

最近为了解决国内访问AWS 首尔大量掉包的问题,天天研究ISP 运营商策略,中国网络出海口的等问题。这里贴一张分析问题用到的海底光缆图及来源网址。关于掉包问题的分析会在后面文章详细分析。网址:https://www.cablemap.info/海底光缆图:...

2018-12-17 19:18:11 9139

原创 Nodejs 递归创建路径

Nodejs 在10之前原生并不支持递归创建文件目录,即如果创建一个./study/node/files 目录,如果node目录不存在,则会直接报错。文章目录1 测试2 Node 10.14.1 版本及以上3 Node低版本方案1 测试const fs = require('fs');fs.mkdir('./study/node/files ', (err) => { if ...

2018-12-05 20:25:20 2695

LFW人脸集合(部分)

LFW人脸库一部分,含1400多个人物,每个任务均含有可用于测试人脸对比和基本人脸识别服务。可以用于简单测试

2018-08-17

空空如也

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

TA关注的人

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