-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
8 lines (8 loc) · 11.1 KB
/
index.html
File metadata and controls
8 lines (8 loc) · 11.1 KB
1
2
3
4
5
6
7
8
<!DOCTYPE html><html lang="zh-cn"><head><meta name="generator" content="Hexo 3.8.0"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=Edge"><meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"><meta name="format-detection" content="telephone=no"><meta name="format-detection" content="email=no"><meta name="description"><meta name="keywords" content="Hexo, Gruntjs, Nodejs, Reactjs, Vuejs"><title>Sorzen</title><link rel="stylesheet" href="/css/main_style.min.css"><link rel="icon" href="/favicon.ico"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/font-awesome/css/font-awesome.min.css"></head><body><input id="navi" type="checkbox"><ul class="main-navication"><li><a href="/"><span>Home</span></a></li><li><a href="https://github.com/Sorzen"><span>Github</span></a></li><li><a href="https://juejin.im/user/57b6e96ba34131005f86ba5d"><span>掘金</span></a></li><li><a href="/about/resume.html"><span>关于作者</span></a></li></ul><div class="wrapper" id="wrap"><div class="page-header"><label class="navi-button" for="navi">MENU</label><div class="background"><img src="/images/background.jpg"></div><div class="author"><div class="head"><img src="/images/avatar.jpg"></div><h3 class="name">Sorzen</h3><p class="signature">Talk is cheap Show me your code.</p></div></div><ul class="post-list" style="max-width:800px"><li> <p class="date">April 12, 2020</p><h4 class="title"><a href="/2020/04/12/socket.io简介及使用/">socket.io简介及使用</a></h4><div class="excerpt"><h2 id="socket-io-简介"><a href="#socket-io-简介" class="headerlink" title="socket.io 简介"></a>socket.io 简介</h2><p>socket.io 是一个为实时应用提供跨平台实时通信的库。socket.io 旨在使实时应用在每个浏览器和移动设备上成为可能,模糊不同的传输机制之间的差异。</p>
<p>socket.io 的名字源于它使用了浏览器支持并采用的 HTML5 WebSocket 标准,因为并不是所有的浏览器都支持 WebSocket ,所以该库支持一系列降级功能。<br></p></div><ul class="meta"><li><i class="icon icon-author"></i>Sorzen</li><li><i class="icon icon-clock"></i>6 Minutes</li><li><i class="icon icon-category"></i></li></ul></li><li> <p class="date">April 12, 2020</p><h4 class="title"><a href="/2020/04/12/Node的异步IO/">Node的异步I/O</a></h4><div class="excerpt"><h2 id="为什么要异步I-O"><a href="#为什么要异步I-O" class="headerlink" title="为什么要异步I/O"></a>为什么要异步I/O</h2><p>Node是面向网络进行设计,web应用已经不再是单台服务器就能胜任的,在现今高并发已经是现代编程经常遇到的问题,网络的访问关系到用户的体验与资源的分配及资源的合理利用。<br>随着网站或应用的不断膨胀,数据将会分布在多台服务器上,资源分布后将会造成获取资源耗时变长,会更加造成异步与同步在性能上的差异,只有后端能够快速响应资源,才能让前端的体验更好。<br>单线程同步编程模型会阻塞I/O导致硬件资源得不到更优的使用,多线程编程模型也因为编程中的死锁、状态同步问题都会造成开发的难度,Node在两者之间给出的解决方案:利用单线程原理多线程死锁、状态同步等问题;利用异步I/O,让单线程原理阻塞,以更好地使用CPU。</p>
<p>Node的异步I/O整个过程包括事件循环、观察者和请求对象等,接下来将会从这几方面介绍Node的异步I/O<br></p></div><ul class="meta"><li><i class="icon icon-author"></i>Sorzen</li><li><i class="icon icon-clock"></i>5 Minutes</li><li><i class="icon icon-category"></i></li></ul></li><li> <p class="date">April 12, 2020</p><h4 class="title"><a href="/2020/04/12/Buffer的理解/">Buffer的理解</a></h4><div class="excerpt"><h2 id="什么是Buffer"><a href="#什么是Buffer" class="headerlink" title="什么是Buffer"></a>什么是Buffer</h2><p>Buffer是一个像Array的对象,但它主要用于操作字节。在引入 TypedArray 之前,JavaScript 语言没有用于读取或操作二进制数据流的机制。 Buffer 类是作为 Node.js API 的一部分引入的,用于在 TCP 流、文件系统操作、以及其他上下文中与八位字节流进行交互。<br></p></div><ul class="meta"><li><i class="icon icon-author"></i>Sorzen</li><li><i class="icon icon-clock"></i>7 Minutes</li><li><i class="icon icon-category"></i></li></ul></li><li> <p class="date">April 12, 2020</p><h4 class="title"><a href="/2020/04/12/了解进程/">了解进程</a></h4><div class="excerpt"><h2 id="什么是线程与进程"><a href="#什么是线程与进程" class="headerlink" title="什么是线程与进程"></a>什么是线程与进程</h2><p>进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。</p>
<p>线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行。同样多线程也可以实现并发操作,每个请求分配一个线程来处理。<br></p></div><ul class="meta"><li><i class="icon icon-author"></i>Sorzen</li><li><i class="icon icon-clock"></i>8 Minutes</li><li><i class="icon icon-category"></i></li></ul></li><li> <p class="date">April 12, 2020</p><h4 class="title"><a href="/2020/04/12/表格的表头及多列冻结/">表格的表头及多列冻结</a></h4><div class="excerpt"><h2 id="一、什么是表格冻结"><a href="#一、什么是表格冻结" class="headerlink" title="一、什么是表格冻结"></a>一、什么是表格冻结</h2><p>当数据较多时将某些行列进行冻结,即固定在某一位置展示,比如当数据较多时,表头可以固定在首行展示,不受滚动影响。由于项目中表格及交叉透视表的功能已经实现,因此只能在原来基础上进行功能的改造,因此需要在原来表格基础上添加表头及多列冻结。</p></div><ul class="meta"><li><i class="icon icon-author"></i>Sorzen</li><li><i class="icon icon-clock"></i>24 Minutes</li><li><i class="icon icon-category"></i></li></ul></li><li> <p class="date">April 11, 2019</p><h4 class="title"><a href="/2019/04/11/pm2在项目中的初次尝试/">pm2在项目中的初次尝试</a></h4><div class="excerpt"><h2 id="PM2简介"><a href="#PM2简介" class="headerlink" title="PM2简介"></a>PM2简介</h2><p>PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。<br></p></div><ul class="meta"><li><i class="icon icon-author"></i>Sorzen</li><li><i class="icon icon-clock"></i>10 Minutes</li><li><i class="icon icon-category"></i></li></ul></li><li> <p class="date">October 24, 2018</p><h4 class="title"><a href="/2018/10/24/前端监控/">前端监控</a></h4><div class="excerpt"><h2 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h2><p>TD第二届黑客马拉松赛题其中一个就是进行前端错误和性能监控,之前一直想过做这么一件事情,当线上发生代码错误或者资源引用错误时不是通过用户反馈得知,而是开发人员能在第一时间知晓,这次终于有机会进行尝试,与另外两名前端同事在10月20日进行了一天一夜的代码长跑。<br></p></div><ul class="meta"><li><i class="icon icon-author"></i>Sorzen</li><li><i class="icon icon-clock"></i>19 Minutes</li><li><i class="icon icon-category"></i></li></ul></li><li> <p class="date">September 26, 2018</p><h4 class="title"><a href="/2018/09/26/使用Web Worker开启浏览器多线程/">使用Web Worker开启浏览器多线程</a></h4><div class="excerpt"><h3 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h3><p>javascript是单线程模型,如果要处理一些密集型任务时可能会拖慢主进程的执行(如页面UI卡顿),是否可以使javascript像其他语言使用多线程方式运行,一部分运行在UI线程下,另一部分运行一个独立线程(如只进行某些复杂运算)。</p>
<p>Web Worker作用就是为javascript提供一个创建多线程环境,但是这是浏览器的功能,实际和javascript语言本身几乎没什么关系,浏览器可以提供多个引擎实例,各自运行在自身的线程上,这样就可以在不同的线程上运行不同的程序。在worker内部是无法访问主程序的任何资源,这意味着你不能访问它的任何全局变量,也不能访问页面的DOM或者其他资源,这是一个完全独立的线程。<br></p></div><ul class="meta"><li><i class="icon icon-author"></i>Sorzen</li><li><i class="icon icon-clock"></i>9 Minutes</li><li><i class="icon icon-category"></i></li></ul></li><li> <p class="date">May 3, 2018</p><h4 class="title"><a href="/2018/05/03/开发过程采坑/">开发过程采坑记录</a></h4><div class="excerpt"><h1 id="起因"><a href="#起因" class="headerlink" title="起因"></a>起因</h1><p>最近开发中遇到一些不太常遇到的问题,心血来潮记录一下他们产生的原因,有些问题找了很久才发现问题所在,也给需要的人一些帮助。<br></p></div><ul class="meta"><li><i class="icon icon-author"></i>Sorzen</li><li><i class="icon icon-clock"></i>5 Minutes</li><li><i class="icon icon-category"></i></li></ul></li><li> <p class="date">March 3, 2018</p><h4 class="title"><a href="/2018/03/03/js设计模式/">JS设计模式</a></h4><div class="excerpt"><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>了解前端常见设计模式,使代码更加系统化与规范化<br></p></div><ul class="meta"><li><i class="icon icon-author"></i>Sorzen</li><li><i class="icon icon-clock"></i>16 Minutes</li><li><i class="icon icon-category"></i></li></ul></li></ul><ul class="pagination"><li class="current"><a>1</a></li><li class="link"><a href="/page/2/"><i class="icon icon-arror-right"></i></a></li></ul><div class="page-footer"><div class="top"><ul class="social"><li><a href="https://github.com/Sorzen" title="Github" target="_blank"><i class="icon icon-github"></i></a></li><li><a href="https://juejin.im/user/57b6e96ba34131005f86ba5d" title="掘金" target="_blank"><i class="icon icon-juejin"></i></a></li><li><a href="https://segmentfault.com/" title="SegmentFault" target="_blank"><i class="icon icon-segmentfault"></i></a></li></ul></div><div class="bottom"><p class="copyright">© 2020 Sorzen<br><small>POWER BY <a href="https://hexo.io" target="_blank">HEXO</a></small><small>, THEME BY <a href="https://github.com/BoizZ/hexo-theme-laughing" target="_blank">LAUGHING</a></small></p></div></div></div><script>var wrap = document.getElementById('wrap');
window.onload = function () {
wrap.className += ' done';
}</script><script src="/live2d-widget/autoload.js"></script></body></html>