BI内存泄漏
分析样本
开发环境
项目:百川 2
仪表盘 _ 图表数:小林疋仪表盘测试 _ 3、第一个仪表盘-001 * 5
动作:反复切换 10 次;
分析方式:
仪表盘之间反复切换,使用Performance记录性能火焰图;分析出具体原因之后使用Memory找出具体泄露的代码;
具体步骤
根据分析方式的交互,随着反复切换仪表盘,可以看到JS heap和Listeners直线飙升,可以分析出出现卡顿的原因确实是由于内存泄露导致的,没有在正确的时机销毁\释放掉内存和事件监听;
同样,通过Memory分析发现,在时间轴中能体现出内存占用出现高峰后并没有被释放:
挑时间轴中的一个高峰发现能看懂的就这些:
2024-11-20
koa-compose源码解析笔记
首先,在app.js中new Koa(),生成Koa实例,所以在koa包中会有个构造函数,负责生成实例:
module.exports = class Application extends Emitter {
constructor(options) {
super();
options = options || {};
...
this.middleware = []; // 中间件数组
this.context = Object.create(context); // 创建上下文对象context,以及请求和响应对象
this.re
2022-03-28
nodejs
TCP协议简介
互联网由一整套协议构成。
TCP是以太网协议和IP协议的上层协议,也是应用层协议的下层协议。
最底层的以太网协议(Ethernet)规定了电子信号如何组成数据包(packet),解决了子网内部(同一个局域网内)的点对点通信。
IP协议解决了多个局域网之间是如何互通的;IP协议是一个地址协议,并不保证数据包的完整性。
TCP协议的作用是保证数据通信的完整性和可靠性,防止丢包。
HTTP协议主要规定客户端与服务器端数据通信格式。
TCP数据包的大小以太网数据包的大小是个固定的,最初是1518字节(差不多是1.5kb),后来增加到1522字节,其中1500字节是负载(payload),2
2022-03-25
TCP协议
前端安全--如何防止XSS攻击
什么是XSS攻击XSS攻击是页面被注入了恶意代码,且恶意代码得以执行,从而产生的一系列后果。
通常页面中包含的用户输入内容都在固定的容器或者属性内,以文本的形式展示;
攻击者利用这些页面的用户输入片段,拼接特殊格式的字符串,突破原有的位置限制,形成代码片段;
攻击者通过在目标网站上注入脚本,使之在用户浏览器上运行,从而引发潜在风险;
通过HTML转义,可以防止XSS攻击。
可以通过哪些方式完成XSS攻击
在HTML中内嵌的文本中,恶意内容一scrip标签形式注入;
在内联的JavaScript中,拼接的数据突破了原本的限制(字符串,变量,方法名等);
在标签的href、src等
2022-03-25
前端安全
小程序插件开发要点记录
插件,是可被添加到小程序内直接使用的功能组件。开发者可以像开发小程序一样开发一个插件,供其他小程序使用。同时,小程序开发者可直接在小程序内使用插件,无需重复开发,为用户提供更丰富的服务。
小程序插件服务对象
小程序插件与组件之间的差异
在开发过程中,组件一般以静态文件的形式在文件系统里面被引用,而插件则需要在运行时通过网络请求加载,在使用时无法看到插件代码(除DOM结构外);
小程序也无法获取插件提供的组件实例。
无法使用方法作用到组件插件的样式。
组件可由第三方包管理工具托管代码,而插件只能上传到微信小程序服务器,并且需要审核;
自定义组件只提供代码级的复用,而插件基于其独立的域名列
2021-07-22
微信小程序
到店业务逻辑梳理
项目概述
服务全渠道、全场景的 SaaS 产品,为商家提供一站式服务
按技术PC管理后台、智慧小店。
小程序智慧到店、微行生活、小店群掌柜。
按受众针对商家管理后台、智慧小店、小店群掌柜。
针对消费者智慧到店、微行生活、小店群掌柜。
细分管理后台
创建商户。
统一管理各商户门店的消费数据。
统一管理各商户门店的商品套餐数据。
智慧小店
管理门店数据。
运营管理,创建小程序所需商品、套餐、优惠券等。
为线下渠道提供支持。
智慧到店
套餐商品推广,提供购买渠道。
按区域为消费者提供商品套餐推荐。
微行生活同上
小店群掌柜
为小店商家经营微信群等提供多样化的管理工具。
业务关联
SaaS提
2021-05-20
关于元素的contenteditable属性
之前一直很好奇富文本编辑器中的各种元素是怎么插入的,最近刚好项目中有关功能需要用到富文本的一丁点功能,所以才得以了解可实现富文本编辑器的一个途径。
元素的contenteditable属性正是可以替代textarea,实现复杂文本输入的一种解决方案。当给元素加上contenteditable="true"时,这个元素就类似于input type="textarea"可输入。输入的内容会作为文本节点插入到父节点中:
但是与textarea、input等输入框不同的是,textarea、input失去焦点后想插入修改值,就必须改变该节点的value值,并且只
2021-04-20
通过vue源码阅读解决的问题
问题公司需要将现有系统的一部分功能单独拿出来,作为一个新项目提供给客户使用,该功能使用了一个第三方包,用来批量生成表单,但是在运行时报错了。
其中使用的Vue版本和第三方包的版本都与现有系统一致,唯一不同的是当前项目使用的是vue-cli3.0搭建的。
定位问题从报错信息中可以看到,问题是出在form-create中的this.vm.constructor.super.compiler上,点开报错位置,发现是被压缩过的代码…
第三方导出的包都是在package.json的module字段中定义的,有些会对外提供一个未被压缩的代码用作调试,找到form-create包,发现其中确实有一个不带
2021-03-09
Vue