【算法】回溯

2022-05-05
阅读 7 分钟
759
回溯法可以看作蛮力法的升级版,它在解决问题时的每一步都尝试所有可能的选项,最终找出所有可行的解决方案。回溯法非常适合解决由多个步骤组成的问题,并且每个步骤都有多个选项。在某一步选择了其中一个选项之后,就进入下一步,然后会面临新的选项。就这样重复选择,直至到达最终的状态。

koa源码

2022-05-04
阅读 16 分钟
804
application.js主要是对 App 做的一些操作,包括创建服务、在 ctx 对象上挂载 request、response 对象,以及处理异常等操作。接下来将对这些实现进行详细阐述。

【React】基础

2022-05-04
阅读 11 分钟
889
React 是⼀个声明式,⾼效且灵活的⽤于构建⽤户界⾯的 JavaScript 库。使⽤ React 可以将⼀ 些简短、独⽴的代码⽚段组合成复杂的 UI 界⾯,这些代码⽚段被称作“ 组件” 。

【ReactNative】使用总结

2022-05-04
阅读 6 分钟
1.2k
请不要使用一些移植的终端环境,例如 git bash 或 mingw 等等,这些在 windows 下可能导致找不到环境变量。请使用系统自带的命令行(CMD 或 powershell)运行。

【音视频】RTCP

2022-04-21
阅读 2 分钟
670
RTCP由于我对全部协议内容没有过多涉及,这里只记录跟时间戳同步相关的,后续有时间精力再补充首先还是从TCP方式接收的RTSP包分析:由图可以分析出,当channel identifier是0x01时,说明是RTCP数据包。RTCP 数据包格式该规范定义了几种 RTCP 数据包类型来承载多种控制信息:SR:发送者报告,用于发送和接收的统计信息 {...

【算法】二分查找

2022-04-17
阅读 5 分钟
904
二分查找算法每次将查找范围减少一半,因此对于一个长度为n的数组可能需要O(logn)次查找,每次查找只需要比较当前查找范围的中间数字和目标数字,在O(1)的时间可以完成,因此二分查找算法的时间复杂度是O(logn)。

【音视频】RTSP

2022-04-15
阅读 9 分钟
1.4k
rtsp,英文全称 Real Time Streaming Protocol,RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议!协议主要规定定了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP体系结位于RTP和RTCP之上(RTCP用于控制传输,RTP用于数据传输),使用TCP或UDP完成数据传输!

【音视频】YUV

2022-04-13
阅读 12 分钟
2.5k
和 RGB 表示图像类似,每个像素点都包含 Y、U、V 分量。但是它的 Y 和 UV 分量是可以分离的,如果没有 UV 分量一样可以显示完整的图像,只不过是黑白的,所以yuv图像可以兼容於黑白影像和彩色影像。

《Vue设计与实现》笔记(持续更新)

2022-04-10
阅读 5 分钟
1.5k
Alright here’s a metaphor.Declarative Programming is like asking your friend to draw a landscape. You don’t care how they draw it, that’s up to them.Imperative Programming is like your friend listening to Bob Ross tell them how to paint a landscape. While good ole Bob Ross isn’t exactly commandin...

【算法】前缀树

2022-04-09
阅读 5 分钟
1.1k
前缀树主要用来解决与字符串查找相关的问题。如果字符串的长度为k,由于在前缀树中查找一个字符串相当于顺着前缀树的路径查找字符串的每个字符,因此时间复杂度是O(k)。

【算法】堆

2022-04-07
阅读 3 分钟
899
堆分类最大堆最小堆在最大堆中,每个节点的值总是大于或等于其任意子节点的值在最小堆中,每个节点的值总是小于或等于其任意子节点的值堆的最大特点是最大值或最小值位于堆的顶部,只需要 O(1)的时间就可以求出一个数据集合的最大值或最小值如果面试题需要求出一个动态数据集合中的最大值或最小值,那么可以考虑使用堆...

【算法】树

2022-04-05
阅读 9 分钟
964
不管是哪种深度优先搜索算法,也不管是递归代码还是迭代代码,如果二叉树有n个节点,那么它们的时间复杂都是O(n)。如果二叉树的深度为h,那么它们的空间复杂度都是O(h)。在二叉树中,二叉树的深度h的最小值是log2(n+1),最大值为n。例如,包含7个节点的二叉树,最少只有3层(二叉树的第1层有1个节点,第2层有2个节...

【音视频】RTP

2022-04-04
阅读 4 分钟
1.2k
发送端,上层应用程序以分组形式将编码后的媒体数据传给RTP通信模块,作为RTP报文的有效载荷,RTP通信模块将根据上层应用提供的参数在有效载荷前添加RTP报头,形成 RTP报文,通过Socket接口选择UDP协议发送出去。

【算法】哈希表

2022-04-03
阅读 5 分钟
941
哈希表是一种常见的数据结构,在解决算法面试题的时候经常需要用到哈希表。哈希表最大的优点是高效,在哈希表中插入、删除或查找一个元素都只需要O(1)的时间。因此,哈希表经常被用来优化时间效率。

【算法】链表

2022-04-01
阅读 5 分钟
688
哨兵节点是为了简化处理链表边界条件而引入的附加链表节点。哨兵节点通常位于链表的头部,它的值没有任何意义。在一个有哨兵节点的链表中,从第2个节点开始才真正保存有意义的信息。

【算法】字符串

2022-03-28
阅读 6 分钟
767
可以在移动这两个指针的同时,统计两个指针之间的字符串中字符出现的次数,这样可以解决很多常见的面试题,如在一个字符串中定位另一个字符串的变位词等。

【音视频】FFmpeg入门

2022-03-26
阅读 6 分钟
1.8k
FFmpeg 是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用 LGPL 或 GPL 许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方 案。它包含了非常先进的音频/视频编解码库 libavcodec,为了保证高可移植性和编解 码质量,libavcodec 里很多 codec 都是从头开发的。

【音视频】入门相关

2022-03-26
阅读 2 分钟
1.1k
视频码率(kb/s):是指视频文件在单位时间内使用的数据流量,也叫码流率。码率越大,说明单位时间内取样率越大,数据流精度就越高。码率指的是文件大小和时间的比,一般用kbs或者mbps来作为单位,KB指的是文件大小,p是per(每),s是秒,所以mbps就是 每秒多少mb 数值越高一般画质就更高,简单来说就是过低的话视频中...

【webpack】publicPath

2022-03-25
阅读 2 分钟
1.8k
对于按需加载(on-demand-load)或加载外部资源(external resources)(如图片、文件等)来说,output.publicPath 是很重要的选项。如果指定了一个错误的值,则在加载这些资源时会收到 404 错误。

微前端

2022-03-20
阅读 3 分钟
1k
微前端最早于2016年在Micro-Frontends被提出,并建⽴了早期的微前端模型。微前端的命名和能 ⼒和微服务有类似之处,微服务与微前端,都是希望将某个单⼀的单体应⽤,转化为多个可以独⽴运 ⾏、独⽴开发、独⽴部署、独⽴维护的服务或者应⽤的聚合,从⽽满⾜业务快速变化及分布式多团队并 ⾏开发的需求。如康威定律(Conway...

vue-router

2022-03-20
阅读 19 分钟
1.3k
vue@3.3.4源码解析前端路由主要有2部分组成:1 、url的处理; 2、 组件的加载[toc]install 函数 {代码...} 同vuex一样,vue-router的注入时机也是在beforeCreated.不过在destroyed的生命周期钩子中多了一步VueRouter 类History类 {代码...} HTML5History {代码...} getLocation获取url的path,不包含base {代码...} setu...

【源码】vuex@4.0.2

2022-03-16
阅读 4 分钟
940
之前看vuex 的 3.x 版本源码,现在看下4.x版本源码有哪些不同?还是针对核心源码Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

diff

2022-03-15
阅读 2 分钟
885
patch函数的功能主要是新旧VNode节点,将差异更新到视图上,所以传入参数有新旧2个VNode以及父节点element,先捋清函数的主逻辑:

Vue3响应式原理

2022-03-13
阅读 12 分钟
2.1k
下面的例子简单说明vue3的响应式数据的原理,即通过Proxy对象分别对get和set劫持,在 取值和赋值中间 分别插⼊劫持的⽅法,即 track 和 trigger ——依赖的跟踪和副作⽤的触发。

【源码】vuex@3.6.3

2022-03-07
阅读 9 分钟
933
vue使用vuex就是通过Vue.use(Vuex),Vue.use本质上就是执行参数的install方法,如果参数本身就是函数,那么只执行这个函数。

【源码】vue/cli@4.5.9(三)

2022-02-28
阅读 5 分钟
934
上文介绍了vue create的大致过程,下面要介绍vue add和vue invoke的执行过程,其实vue add本质上还是执行vue invoke,只不过多了插件安装的相关逻辑而已

【源码】vue/cli@4.5.9(二)

2022-02-27
阅读 28 分钟
1.6k
上文简单介绍了vue -V的执行过程,本文在此基础上,继续分析vue create的执行过程,了解vue create <app-name>经历了哪些过程 ?

【源码】vue/cli@4.5.9(一)

2022-02-26
阅读 2 分钟
1.4k
vue -V发生过程入口文件文件路径:/packages/@vue/cli/bin/vue.jscheckNodeVersion运行vue.js,第一步就是校验Node版本是否符合package.json中的engines.node的node版本。 {代码...} 其中npm包semver的satisfies方法校验版本是否符合,若不符合则退出运行进程。随后判断Node版本若不是LTS版本,则警告用户升级。 {代码.....

【算法】数组

2022-02-24
阅读 4 分钟
814
双指针是一种常用的解题思路,可以使用两个相反方向或相同方向的指针扫描数组从而达到解题目的。值得注意的是,本书在不同的章节都提到了双指针。本书中的“指针”并不专指C语言中的指针,而是一个相对宽泛的概念,是能定位数据容器中某个数据的手段。在数组中它实际上是数字的下标。

【算法】整数

2022-02-21
阅读 5 分钟
957
题目:输入2个int型整数,它们进行除法计算并返回商,要求不得使用乘号'*'、除号'/'及求余符号'%'。当发生溢出时,返回最大的整数值。假设除数不为0。例如,输入15和2,输出15/2的结果,即7。