Xinyuan Wang

Results 79 comments of Xinyuan Wang

https://www.html5rocks.com/zh/tutorials/internals/howbrowserswork/#The_browser_high_level_structure

#2 使用 autocannon 进行并发测试

## 参考链接 [使用 Puppeteer 搭建统一海报渲染服务](https://www.infoq.cn/article/dcsbl_9azcwvpsaq70dh) [Puppeteer 用来做爬虫太 Low 了!但用在这里很合适!](https://juejin.cn/post/6844903961263079431) [自动化 Web 性能分析之 Puppeteer 爬虫实践](https://cloud.tencent.com/developer/article/1557430) [Puppeteer自动化的性能优化与执行速度提升](https://cloud.tencent.com/developer/article/1673764) [puppeteer使用问题总结](https://www.jianshu.com/p/31375cae68d1)

服务器端架构使用的都是常用配置,通过PM2生成多个Node实例,Chrome Headless本身支持多实例(理论 上在资源足够多的情况下我们可以打开无数个Chrome浏览器)。Chrome Headless的执行是同步的,Node服务本身是异步的,所以多个实例并不能支持更大的并发,只是可以利用多核CPU。这里PM2生成4个实例和生成一个实例的差异并不大。接口的瓶颈在于 Chrome Headless 的执行速度与内存、CPU等资源的消耗情况。Chrome Headless版本选择在tlinux上chromium有多个版本可以选择,经过我的测试,最优的版本是: ```shell $ yum install chromium-headless $ /usr/lib64/chromium-browser/headless_shell (调用路径) ``` 主要优化点浏览器每次调用后一定要关闭。否则一个page页面发生错误,整个服务都会卡死。浏览器打开时会默认有一个page页面,直接利用该页面能减少1/3左右的内存消耗。

是否要锁死项目对 typescript 包的版本目前版本锁死在 "typescript": "4.1.6" 可能由于不同 @types/node 版本导致存在编译时类型校验不通过,项目无法正常编译 @arco-design/mobile-utils 流程被卡顿

目前直接解决方案之一就是不再锁 typescript 版本,"typescript": "^4.1.6" 即可解决,或者考虑对项目 @types/node 版本做些限制

Lab links and expiration Update lab1 link https://pdos.csail.mit.edu/6.824/labs/lab-mr.html

单例模式--全局唯一对象 如果没有则创建如果有就返回 ```js function createObj(createMethod) { let obj; return function () { return obj || (obj = createMethod.call(this, arguments)); }; } let obj = createObj(function () { return { name:...

适配器模式 -- 用于转换接口 ```js function A() { return { A: function () { return "A"; }, }; } function B() { return { B: function () { return "B"; },...

发布订阅模式 ```js class Event { events = {}; emit(type, ...args) { const listeners = this.events[type]; for (const listener of listeners) { listener(...args); } } on(type, listener) { this.events[type] = this.events[type]...