zhuanlan.zhihu.com/p/75843905
前后端分离:可以分层,基础数据层,业务层,性能有优势;缺点,沟通成本过高,容易出bug; node前端全栈: 使用node-web模式,加快开发效率,降低沟通成本,缺点:增加运维成本和安全性问题,性能效率需要考察后端专业性。 复制代码
blog.csdn.net/u013451157/…
和其他语言的最大区别: 解决了长链接,多请求引起的成本问题 php,java等一个请求场景一个线程,有限的内存只能支持有限的并发(可用nginx解决) node是事件驱动,请求会在引擎里发射一个事件,而不是为每个链接生成一个进程 优势: 密集IO,事件驱动,异步编辑,节约CPU资源、不阻塞、快速、高响应,不用考虑锁,线程上下切换 复制代码
适用场景
游戏,在线聊天,实时推送,SNS实时交流,实时监控系统,股票 单页面,多异步请求 社交系统 命令行工具:可以场景大量子进程流输出,做devops等效率工具 复制代码
不实用场景
cpu密集,io适用较差 复制代码
www.jianshu.com/p/1ee6c21f6… zhuanlan.zhihu.com/p/33058983
promise,nextTick, setImmediate,setTimeout,setInterval JS运行环境中拥有栈,消息队列,堆。 timers: 这个阶段执行定时器队列中的回调如 setTimeout() 和 setInterval()。 I/O callbacks: 这个阶段执行几乎所有的回调。但是不包括close事件,定时器和setImmediate()的回调。 idle, prepare: 这个阶段仅在内部使用,可以不必理会。 poll: 等待新的I/O事件,node在一些特殊情况下会阻塞在这里。 check: setImmediate()的回调会在这个阶段执行。 close callbacks: 例如socket.on('close', ...)这种close事件的回调。 消息队列有宏任务队列(setImmediate,setTimeout,setInterval ),微任务队列(promise,nextTick) 当前执行栈执行完毕时会立刻先处理所有微任务队列中的事件,然后再去宏任务队列中取出一个事件。同一次事件循环中,微任务永远在宏任务之前执行。 复制代码
juejin.im/post/5d3a3b…
buffer就是内存 复制代码
一次性读取大文件,会占用大量内存,使用流分割。http的请求和响应,文件压缩都是用流 复制代码
* 手写流 复制代码
juejin.im/post/5b3d75… 使用切割fs.read,切割读取和记录位置,之后使用事件触发器触发on.data事件
juejin.im/post/58feb8…
juejin.im/post/5d032b… socket.io
Round-robin算法,负载 for和os.cpus构建对等的进程 复制代码
系统架构
数据类型
日志系统
事务和锁
索引
数据库优化点
数据类型和常用场景
实现原理
为什么要用redis
系统架构
数据类型
日志系统
事务和锁
索引
mongoing.com/archives/27…
数据库优化点
css篇
**- **布局有哪些
前端性能优化有哪些方法
输入一个url发生了什么
vue相关面试题
mvvm如何实现
状态管理是什么
cookie和session的区别
http的缓存配置
跨域
post提交数据
1.优化点 一次循环没有交换,终结外层循环体 每次循环交换的位置记录下来 2.伪代码 比较交换,两个遍历。大的就替换小的 复制代码
list、stack、queue、linkedList、dictionary、hash、set、tree、graph
www.notion.so/golang-fec3…