Promise 与异步编程

<p>Promise 是 JavaScript 中的一个重要概念,与前端的工作更是息息相关。因此本文将整理一下 Promise 在日常工作中的应用。</p> <p><strong>目录</strong></p> <ul> <li><a href="#%E6%A6%82%E5%BF%B5">概念</a></li> <li><a href="#asyncawait">async/await</a><ul> <li><a href="#await">await</a></li> <li><a href="#%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86">错误处理</a></li> </ul> </li> <li><a href="#promise-%E4%B8%B2%E8%81%94">Promise 串联</a><ul> <li><a href="#%E5%B8%B8%E8%A7%84%E5%A4%84%E7%90%86%E6%96%B9%E6%B3%95">常规处理方法</a></li> <li><a href="#%E4%B8%B2%E8%81%94%E8%87%AA%E5%8A%A8%E5%8C%96">串联自动化</a></li> </ul> </li> <li><a href="#promise-%E5%B9%B6%E5%8F%91">Promise 并发</a><ul> <li><a href="#%E6%8E%A7%E5%88%B6%E6%89%B9%E6%AC%A1">控制批次</a></li> <li><a href="#%E7%AE%80%E6%98%93%E7%89%88%E5%B9%B6%E5%8F%91%E6%8E%A7%E5%88%B6">简易版并发控制</a></li> <li><a href="#%E5%8A%A8%E6%80%81%E4%BB%BB%E5%8A%A1%E9%98%9F%E5%88%97">动态任务队列</a></li> <li><a href="#%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%93">第三方库</a></li> </ul> </li> <li><a href="#%E6%80%BB%E7%BB%93">总结</a></li> </ul>

2023/12/18
阅读更多

数据结构实践

<p>本篇将根据自考实践要求对「数据结构」一科进行简要的复习,代码实现使用 <code>C++</code> 语言实现。</p> <h2 id="实践"><a href="#实践" class="headerlink" title="实践"></a>实践</h2><p>已知 Q 是一个非空队列,S 是一个空栈。编写算法,仅用队列和栈的 ADT 函数和少量工作变量,将队列 Q 的所有元素逆置。</p> <p>栈的基本 ADT 函数有:</p> <ol> <li>置空栈。函数原型为: <code>void MakeEmpty(SqStack s);</code></li> <li>元素e入栈。函数原型为: <code>void Push(SqStack s,ElemType e);</code></li> <li>出栈,返回栈顶元素。函数原型为: <code>ElemType pop(SqStack s);</code></li> <li>判断栈是否为空。函数原型为: <code>int isEmpty(SqStack s);</code></li> </ol> <p>队列的基本ADT函数有:</p> <ol> <li>元素e入队。函数原型为:void enQueue(Queue q,ElemType e);</li> <li>出队,返回队头元素。函数原型为:ElemType deQueue(Queue q);(3)(3)判断队是否为空。函数原型为:int isEmpty(Queue q);</li> </ol> <p>题目要求:</p> <ol> <li>编程实现队列和栈的ADT函数</li> <li>仅用队列和栈的ADT函数和少量工作变量,编写将队列Q的所有元素逆置的函数</li> <li>测试该函数</li> </ol>

2022/5/18
阅读更多

MySQL 实践

<p>由于自考的实践考核要求有需要用到 mysql 进行考核,故记录一下在 mac 环境下试手的笔记。</p>

2022/5/16
阅读更多

组件通信: EventBus 的原理解析与应用

<p>在开发复杂的单页面应用时,我们经常会遇到一个问题:如何高效地在组件或模块之间进行通信?这里,<code>EventBus</code>(事件总线)就派上了用场。简单来说,<code>EventBus</code> 是一种设计模式,它允许不同组件或模块之间通过事件来通信,而无需直接引用彼此。</p> <p><code>EventBus</code> 是传统的组件通信解决方案,下面我们将讲解 <code>EventBus</code> 跨组件通信的原理、实现方式以及该如何使用。</p>

2022/1/22
阅读更多

Redux 食用指南

<p>Redux 是一个强大的状态管理框架,被广泛用于管理应用程序的状态。它的设计理念是让状态的更新可预测和透明。本文将简要探讨 Redux 的核心机制和实际应用。</p>

2021/10/11
阅读更多

计算机网络原理笔记

<p>计算机网络原理学习笔记。</p> <!-- omit in toc --> <h2 id="目录"><a href="#目录" class="headerlink" title="目录"></a>目录</h2><blockquote> <p>下面目录定位有些使用不了。若需要跳转到具体段落应使用侧边栏文章定位</p> </blockquote> <ul> <li><a href="#%E8%AE%A1%E7%AE%97%E7%B1%BB%E9%80%9F%E8%A7%88">计算类速览</a><ul> <li><a href="#%E9%80%9F%E7%8E%87%E4%B8%8E%E5%B8%A6%E5%AE%BD">速率与带宽</a></li> <li><a href="#tcp-%E6%8A%A5%E6%96%87%E6%AE%B5%E7%A1%AE%E8%AE%A4%E5%8F%B7">TCP 报文段确认号</a></li> <li><a href="#%E6%B1%89%E6%98%8E%E8%B7%9D%E7%A6%BB">汉明距离</a></li> <li><a href="#%E5%BE%AA%E7%8E%AF%E5%86%97%E4%BD%99%E7%A0%81">循环冗余码</a></li> </ul> </li> <li><a href="#%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E6%A6%82%E8%BF%B0">计算机网络概述</a><ul> <li><a href="#%E5%B8%B8%E8%A7%81%E5%BA%94%E7%94%A8%E7%9A%84%E7%AB%AF%E5%8F%A3%E5%8F%B7">常见应用的端口号</a></li> <li><a href="#tcpiposi-%E5%8F%82%E8%80%83%E6%A8%A1%E5%9E%8B">TCP/IP、OSI 参考模型</a></li> <li><a href="#%E7%AE%80%E8%BF%B0osi%E5%8F%82%E6%95%B0%E6%A8%A1%E5%9E%8B%E7%89%A9%E7%90%86%E5%B1%82%E7%9A%84%E4%B8%BB%E8%A6%81%E5%8A%9F%E8%83%BD%E5%8F%8A%E8%AF%A5%E5%B1%82%E5%8D%8F%E8%AE%AE%E8%A7%84%E5%AE%9A%E7%9A%84%E5%9B%9B%E4%B8%AA%E7%89%B9%E6%80%A7">简述OSI参数模型物理层的主要功能及该层协议规定的四个特性。</a></li> </ul> </li> <li><a href="#%E5%BA%94%E7%94%A8%E5%B1%82">应用层</a><ul> <li><a href="#%E7%AE%80%E8%BF%B0%E5%85%B8%E5%9E%8B%E7%9A%84http%E8%AF%B7%E6%B1%82%E6%96%B9%E6%B3%95%E5%8F%8A%E5%85%B6%E4%BD%9C%E7%94%A8">简述典型的HTTP请求方法及其作用</a></li> <li><a href="#%E7%AE%80%E8%BF%B0-pop3-%E5%8D%8F%E8%AE%AE%E4%BA%A4%E4%BA%92%E8%BF%87%E7%A8%8B">简述 POP3 协议交互过程</a></li> </ul> </li> <li><a href="#%E4%BC%A0%E8%BE%93%E5%B1%82">传输层</a><ul> <li><a href="#tcpip">TCP/IP</a></li> <li><a href="#%E7%AE%80%E8%BF%B0%E4%BC%A0%E8%BE%93%E5%B1%82%E6%89%80%E5%AE%9E%E7%8E%B0%E7%9A%84%E5%8A%9F%E8%83%BD">简述传输层所实现的功能</a></li> <li><a href="#%E7%AE%80%E8%BF%B0%E4%BC%A0%E8%BE%93%E5%B1%82%E5%AE%9E%E7%8E%B0%E5%8F%AF%E9%9D%A0%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93%E7%9A%84%E4%B8%BB%E8%A6%81%E6%8E%AA%E6%96%BD">简述传输层实现可靠数据传输的主要措施</a></li> <li><a href="#%E7%AE%80%E8%BF%B0%E4%BF%9D%E8%AF%81%E7%BD%91%E7%BB%9C%E4%BC%A0%E8%BE%93%E5%8F%AF%E9%9D%A0%E6%80%A7%E7%9A%84%E7%A1%AE%E8%AE%A4%E4%B8%8E%E9%87%8D%E4%BC%A0%E6%9C%BA%E5%88%B6%E7%9A%84%E6%A6%82%E5%BF%B5">简述保证网络传输可靠性的确认与重传机制的概念</a></li> <li><a href="#%E7%AE%80%E8%BF%B0%E5%B7%AE%E9%94%99%E6%8E%A7%E5%88%B6%E7%9A%84%E6%A6%82%E5%BF%B5%E4%BB%A5%E5%8F%8A%E5%B7%AE%E9%94%99%E6%8E%A7%E5%88%B6%E7%9A%84%E5%9F%BA%E6%9C%AC%E6%96%B9%E6%B3%95">简述差错控制的概念以及差错控制的基本方法</a></li> <li><a href="#%E7%AE%80%E8%BF%B0tcp%E6%89%80%E6%8F%90%E4%BE%9B%E7%9A%84%E9%9D%A2%E5%90%91%E8%BF%9E%E6%8E%A5%E6%9C%8D%E5%8A%A1">简述TCP所提供的面向连接服务</a></li> <li><a href="#%E7%AE%80%E8%BF%B0%E4%B8%BA-udp-%E5%A5%97%E6%8E%A5%E5%AD%97%E5%88%86%E9%85%8D%E7%AB%AF%E5%8F%A3%E5%8F%B7%E7%9A%84%E4%B8%A4%E7%A7%8D%E6%96%B9%E6%B3%95">简述为 UDP 套接字分配端口号的两种方法</a></li> <li><a href="#%E7%AE%80%E8%BF%B0-udp-%E6%8F%90%E4%BE%9B%E7%9A%84%E6%9C%8D%E5%8A%A1%E7%9A%84%E4%B8%BB%E8%A6%81%E7%89%B9%E5%BE%81">简述 UDP 提供的服务的主要特征</a></li> </ul> </li> <li><a href="#%E7%BD%91%E7%BB%9C%E5%B1%82">网络层</a><ul> <li><a href="#%E7%AE%80%E8%BF%B0%E8%99%9A%E7%94%B5%E8%B7%AF%E7%9A%84%E6%A6%82%E5%BF%B5%E5%8F%8A%E5%85%B6%E6%9E%84%E6%88%90%E8%A6%81%E7%B4%A0">简述虚电路的概念及其构成要素</a></li> <li><a href="#%E8%99%9A%E7%94%B5%E8%B7%AF%E4%BA%A4%E6%8D%A2%E5%92%8C%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E7%9A%84%E4%B8%BB%E8%A6%81%E5%B7%AE%E5%88%AB">虚电路交换和数据交换的主要差别</a></li> <li><a href="#%E7%94%B5%E8%B7%AF%E4%BA%A4%E6%8D%A2%E7%9A%84%E7%89%B9%E7%82%B9%E5%92%8C%E4%BC%98%E7%BC%BA%E7%82%B9">电路交换的特点和优缺点</a></li> <li><a href="#%E7%AE%80%E8%BF%B0%E6%B0%B8%E4%B9%85%E8%99%9A%E7%94%B5%E8%B7%AF%E4%B8%8E%E4%BA%A4%E6%8D%A2%E8%99%9A%E7%94%B5%E8%B7%AF%E7%9A%84%E5%8C%BA%E5%88%AB">简述永久虚电路与交换虚电路的区别</a></li> <li><a href="#%E7%AE%80%E8%BF%B0%E8%B7%AF%E7%94%B1%E5%99%A8%E8%BE%93%E5%85%A5%E7%AB%AF%E5%8F%A3%E6%8E%A5%E5%8F%97%E4%B8%8E%E5%A4%84%E7%90%86%E6%95%B0%E6%8D%AE%E7%9A%84%E8%BF%87%E7%A8%8B">简述路由器输入端口接受与处理数据的过程</a></li> </ul> </li> <li><a href="#%E6%95%B0%E6%8D%AE%E9%93%BE%E8%B7%AF%E5%B1%82%E4%B8%8E%E5%B1%80%E5%9F%9F%E7%BD%91">数据链路层与局域网</a><ul> <li><a href="#%E5%B8%A7%E7%9A%84%E7%BB%84%E6%88%90">帧的组成</a></li> <li><a href="#-%E5%A4%9A%E8%B7%AF%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6%E5%8D%8F%E8%AE%AE-">==== 多路访问控制协议 ====</a><ul> <li><a href="#%E9%9D%9E%E5%9D%9A%E6%8C%81-csma-%E7%9A%84%E5%9F%BA%E6%9C%AC%E5%8E%9F%E7%90%86">非坚持 csma 的基本原理</a></li> <li><a href="#1-%E5%9D%9A%E6%8C%81-csma-%E7%9A%84%E5%9F%BA%E6%9C%AC%E5%8E%9F%E7%90%86">1-坚持 csma 的基本原理</a></li> </ul> </li> <li><a href="#-%E5%B1%80%E5%9F%9F%E7%BD%91-">==== 局域网 ====</a><ul> <li><a href="#%E7%AE%80%E8%BF%B0%E5%9C%B0%E5%9D%80%E8%A7%A3%E6%9E%90%E5%8D%8F%E8%AE%AE-arp-%E7%9A%84%E4%BD%9C%E7%94%A8%E5%92%8C%E5%9F%BA%E6%9C%AC%E6%80%9D%E6%83%B3">简述地址解析协议 ARP 的作用和基本思想</a></li> <li><a href="#%E7%AE%80%E8%BF%B0%E8%99%9A%E6%8B%9F%E5%B1%80%E5%9F%9F%E7%BD%91vlan%E7%9A%84%E6%A6%82%E5%BF%B5%E4%BB%A5%E5%8F%8A%E5%88%92%E5%88%86%E6%96%B9%E6%B3%95">简述虚拟局域网(VLAN)的概念以及划分方法</a></li> </ul> </li> </ul> </li> <li><a href="#%E7%89%A9%E7%90%86%E5%B1%82">物理层</a><ul> <li><a href="#%E7%AE%80%E8%BF%B0-cmi-%E7%A0%81%E7%9A%84%E7%BC%96%E7%A0%81%E8%A7%84%E5%88%99%E5%B9%B6%E7%94%BB%E5%87%BA%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%AF%94%E7%89%B9%E5%BA%8F%E5%88%97-1011010011-%E7%9A%84-cmi-%E7%A0%81%E4%BF%A1%E5%8F%B7%E6%B3%A2%E5%BD%A2">简述 CMI 码的编码规则,并画出二进制比特序列 1011010011 的 CMI 码信号波形</a></li> <li><a href="#%E7%B1%B3%E5%8B%92%E7%A0%81%E7%9A%84%E7%BC%96%E7%A0%81%E8%A7%84%E5%88%99">米勒码的编码规则</a></li> </ul> </li> <li><a href="#%E6%97%A0%E7%BA%BF%E4%B8%8E%E7%A7%BB%E5%8A%A8%E7%BD%91%E7%BB%9C">无线与移动网络</a><ul> <li><a href="#%E7%AE%80%E8%BF%B0-4-%E4%B8%AA-ieee-80211-%E6%A0%87%E5%87%86%E5%85%B7%E6%9C%89%E7%9A%84%E5%85%B1%E5%90%8C%E7%89%B9%E5%BE%81">简述 4 个 IEEE 802.11 标准具有的共同特征</a></li> </ul> </li> <li><a href="#%E7%AE%80%E7%AD%94%E9%A2%98">简答题</a><ul> <li><a href="#%E6%AF%8F%E4%B8%AA-as-%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87-bgp%E8%BE%B9%E7%95%8C%E7%BD%91%E5%85%B3%E5%8D%8F%E8%AE%AE-%E5%AE%9E%E7%8E%B0%E5%93%AA%E4%BA%9B%E5%8A%9F%E8%83%BD">每个 AS 可以通过 BGP(边界网关协议) 实现哪些功能</a></li> <li><a href="#%E7%AE%80%E8%BF%B0%E6%95%B0%E5%AD%97%E7%AD%BE%E5%90%8D%E5%BA%94%E6%BB%A1%E8%B6%B3%E7%9A%84%E8%A6%81%E6%B1%82">简述数字签名应满足的要求</a></li> </ul> </li> <li><a href="#%E5%9F%BA%E7%A1%80%E8%AE%A1%E7%AE%97">基础计算</a><ul> <li><a href="#%E5%8D%81%E8%BF%9B%E5%88%B6%E8%BD%AC%E4%BA%8C%E8%BF%9B%E5%88%B6">十进制转二进制</a></li> <li><a href="#2n-%E9%80%9F%E6%9F%A5%E8%A1%A8">2^n 速查表</a></li> <li><a href="#%E5%AD%90%E7%BD%91%E6%8E%A9%E7%A0%81%E9%80%9F%E8%A7%88">子网掩码速览</a></li> <li><a href="#%E9%80%9A%E8%BF%87-ip-%E5%9C%B0%E5%9D%80%E4%B8%8E%E5%AD%90%E7%BD%91%E6%8E%A9%E7%A0%81%E6%8E%A8%E7%AE%97%E5%87%BA%E5%85%B6%E4%BB%96%E4%BF%A1%E6%81%AF">通过 IP 地址与子网掩码推算出其他信息</a></li> </ul> </li> </ul> <hr>

2021/8/15
阅读更多

Accessibility Parsing 无障碍页面分析

<img src="/blog/2021/04/13/w3c-validator/banner.jpg" class=""> <p>最近项目需要做 Accessibility 的处理,在这段时间的接触了很多无障碍相关的技术。除了基础的 <a href="https://developer.mozilla.org/zh-CN/docs/Web/Accessibility/ARIA">ARIA</a> 和相对单位的影响等基础知识外,本篇想介绍一下比较实用的 Accessibility Parsing tools。</p>

2021/4/13
阅读更多

软件工程笔记

<p>软件工程相关笔记。</p> <hr> <ul> <li><a href="#1-%E7%BB%AA%E8%AE%BA">1. 绪论</a><ul> <li><a href="#%E7%AE%80%E8%BF%B0%E8%BD%AF%E4%BB%B6%E5%8D%B1%E6%9C%BA%E4%B8%8E%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%9A%84%E6%A6%82%E5%BF%B5%E4%BB%A5%E5%8F%8A%E6%8F%90%E5%87%BA%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E6%A6%82%E5%BF%B5%E7%9A%84%E7%9B%AE%E7%9A%84">简述软件危机与软件工程的概念以及提出软件工程概念的目的</a></li> <li><a href="#%E7%AE%80%E8%BF%B0%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E7%9A%84%E6%9C%AC%E8%B4%A8">简述软件开发的本质</a></li> </ul> </li> <li><a href="#2-%E8%BD%AF%E4%BB%B6%E9%9C%80%E6%B1%82%E4%B8%8E%E8%BD%AF%E4%BB%B6%E9%9C%80%E6%B1%82%E8%A7%84%E7%BA%A6">2. 软件需求与软件需求规约</a><ul> <li><a href="#%E5%88%9D%E5%A7%8B%E5%8F%91%E7%8E%B0%E9%9C%80%E6%B1%82">初始发现需求</a></li> <li><a href="#%E9%9C%80%E6%B1%82%E8%A7%84%E7%BA%A6%E5%AE%9A%E4%B9%89">需求规约定义</a></li> <li><a href="#%E9%9C%80%E6%B1%82%E8%A7%84%E7%BA%A6%E7%9A%84%E4%B8%89%E7%A7%8D%E5%9F%BA%E6%9C%AC%E5%BD%A2%E5%BC%8F">需求规约的三种基本形式</a></li> </ul> </li> <li><a href="#3-%E7%BB%93%E6%9E%84%E5%8C%96%E6%96%B9%E6%B3%95">3. 结构化方法</a><ul> <li><a href="#%E6%A8%A1%E5%9D%97%E7%9A%84%E5%86%85%E8%81%9A%E6%80%A7">模块的内聚性</a></li> <li><a href="#%E6%A8%A1%E5%9D%97%E9%97%B4%E7%9A%84%E8%80%A6%E5%90%88%E7%B1%BB%E5%9E%8B">模块间的耦合类型</a></li> <li><a href="#%E7%A8%8B%E5%BA%8F%E6%B5%81%E7%A8%8B%E5%9B%BE%E4%B8%BB%E8%A6%81%E7%94%A8%E4%BA%8E%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E7%9A%84%E5%93%AA%E4%B8%80%E9%98%B6%E6%AE%B5%E5%AE%83%E7%9A%84%E4%B8%BB%E8%A6%81%E4%BC%98%E7%BC%BA%E7%82%B9%E6%9C%89%E5%93%AA%E4%BA%9B">程序流程图主要用于软件开发的哪一阶段?它的主要优缺点有哪些?</a></li> <li><a href="#%E7%B3%BB%E7%BB%9F%E6%B5%81%E7%A8%8B%E5%9B%BE%E4%B8%8E%E6%95%B0%E6%8D%AE%E6%B5%81%E7%A8%8B%E5%9B%BE%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB">系统流程图与数据流程图有什么区别?</a></li> <li><a href="#%E6%BC%94%E5%8C%96%E6%A8%A1%E5%9E%8B%E7%9A%84%E4%B8%BB%E8%A6%81%E7%89%B9%E5%BE%81%E6%98%AF%E4%BB%80%E4%B9%88%E5%AE%83%E5%AD%98%E5%9C%A8%E4%BB%80%E4%B9%88%E4%B8%8D%E8%B6%B3">演化模型的主要特征是什么?它存在什么不足?</a></li> </ul> </li> <li><a href="#4-rupuml">4. RUP、UML</a><ul> <li><a href="#%E5%9B%BE%E5%BD%A2%E5%B7%A5%E5%85%B7%E7%9A%84%E7%94%A8%E9%80%94">图形工具的用途</a></li> <li><a href="#%E4%BB%80%E4%B9%88%E6%98%AF-uml-%E5%AE%83%E6%9C%89%E4%BB%80%E4%B9%88%E7%89%B9%E7%82%B9">什么是 UML? 它有什么特点?</a></li> <li><a href="#%E7%AE%80%E8%BF%B0%E6%B3%9B%E5%8C%96%E7%9A%84%E6%A6%82%E5%BF%B5%E5%8F%8A%E5%85%B6%E7%BA%A6%E6%9D%9F">简述泛化的概念及其约束</a></li> <li><a href="#rup-%E7%9A%84%E7%89%B9%E7%82%B9%E4%B9%8B%E4%B8%80%E6%98%AF%E8%BF%AD%E4%BB%A3%E5%A2%9E%E9%87%8F%E5%BC%8F%E5%BC%80%E5%8F%91%E5%AE%83%E8%A7%84%E5%AE%9A%E4%BA%86-4-%E4%B8%AA%E5%BC%80%E5%8F%91%E9%98%B6%E6%AE%B5%E8%AF%B7%E7%AE%80%E8%BF%B0%E6%AF%8F%E6%AC%A1%E8%BF%AD%E4%BB%A3%E5%9C%A8%E5%90%84%E9%98%B6%E6%AE%B5%E7%9A%84%E7%9B%AE%E6%A0%87">RUP 的特点之一是迭代、增量式开发,它规定了 4 个开发阶段。请简述每次迭代在各阶段的目标。</a></li> <li><a href="#%E7%AE%80%E8%BF%B0-rup-%E5%92%8C-uml-%E4%B9%8B%E9%97%B4%E7%9A%84%E5%85%B3%E7%B3%BB">简述 RUP 和 UML 之间的关系</a></li> <li><a href="#%E7%AE%80%E8%BF%B0%E9%9C%80%E6%B1%82%E5%88%86%E6%9E%90%E4%B8%8E%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1%E4%B8%A4%E4%B8%AA%E9%98%B6%E6%AE%B5%E4%BB%BB%E5%8A%A1%E7%9A%84%E4%B8%BB%E8%A6%81%E5%8C%BA%E5%88%AB">简述需求分析与软件设计两个阶段任务的主要区别</a></li> <li><a href="#%E7%AE%80%E8%BF%B0%E4%BA%8B%E5%8A%A1%E8%AE%BE%E8%AE%A1%E7%9A%84%E5%9F%BA%E6%9C%AC%E6%AD%A5%E9%AA%A4">简述事务设计的基本步骤</a></li> </ul> </li> <li><a href="#6-%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95">6. 软件测试</a><ul> <li><a href="#%E7%99%BD%E7%9B%92%E6%B5%8B%E8%AF%95%E6%B3%95%E5%92%8C%E9%BB%91%E7%9B%92%E6%B5%8B%E8%AF%95%E6%B3%95%E7%9A%84%E5%8C%BA%E5%88%AB%E6%98%AF%E4%BB%80%E4%B9%88">白盒测试法和黑盒测试法的区别是什么?</a></li> <li><a href="#%E7%AE%80%E8%BF%B0%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E7%9A%84%E5%9F%BA%E6%9C%AC%E6%AD%A5%E9%AA%A4">简述软件测试的基本步骤</a></li> <li><a href="#%E7%AE%80%E8%BF%B0%E8%B7%AF%E5%BE%84%E6%B5%8B%E8%AF%95%E4%B8%AD%E5%87%A0%E7%A7%8D%E5%85%B8%E5%9E%8B%E7%9A%84%E6%B5%8B%E8%AF%95%E7%AD%96%E7%95%A5">简述路径测试中几种典型的测试策略。</a></li> <li><a href="#%E7%AE%80%E8%BF%B0%E5%9B%A0%E6%9E%9C%E5%9B%BE%E6%96%B9%E6%B3%95%E7%94%9F%E6%88%90%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B%E7%9A%84%E5%9F%BA%E6%9C%AC%E6%AD%A5%E9%AA%A4">简述因果图方法生成测试用例的基本步骤</a></li> </ul> </li> <li><a href="#7-%E8%BD%AF%E4%BB%B6%E7%94%9F%E5%AD%98%E5%91%A8%E6%9C%9F%E8%BF%87%E7%A8%8B%E4%B8%8E%E7%AE%A1%E7%90%86">7. 软件生存周期过程与管理</a><ul> <li><a href="#%E8%BD%AF%E4%BB%B6%E7%94%9F%E5%AD%98%E5%91%A8%E6%9C%9F%E6%A8%A1%E5%9E%8B">软件生存周期模型</a></li> <li><a href="#%E7%AE%80%E8%BF%B0%E6%BC%94%E5%8C%96%E6%A8%A1%E5%9E%8B%E5%8F%8A%E5%85%B6%E4%B8%BB%E8%A6%81%E7%89%B9%E5%BE%81">简述演化模型及其主要特征</a></li> </ul> </li> <li><a href="#8-%E9%9B%86%E6%88%90%E5%8C%96%E8%83%BD%E5%8A%9B%E6%88%90%E7%86%9F%E5%BA%A6%E6%A8%A1%E5%9E%8B">8. 集成化能力成熟度模型</a><ul> <li><a href="#%E8%83%BD%E5%8A%9B%E7%AD%89%E7%BA%A7">能力等级</a></li> <li><a href="#%E6%88%90%E7%86%9F%E5%BA%A6%E7%AD%89%E7%BA%A7">成熟度等级</a></li> </ul> </li> <li><a href="#%E5%85%B6%E4%BB%96">其他</a></li> </ul>

2021/2/10
阅读更多

JavaScript 实现二叉树

<p>二叉树数据结构的学习与笔记。</p> <!-- omit in toc --> <h2 id="目录"><a href="#目录" class="headerlink" title="目录"></a>目录</h2><ul> <li><a href="#%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%82%A8%E5%AD%98%E7%BB%93%E6%9E%84">二叉树的储存结构</a></li> <li><a href="#%E9%A1%BA%E5%BA%8F%E7%BB%93%E6%9E%84%E8%BD%AC%E9%93%BE%E5%BC%8F%E7%BB%93%E6%9E%84">顺序结构转链式结构</a></li> <li><a href="#%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%81%8D%E5%8E%86">二叉树的遍历</a><ul> <li><a href="#%E5%89%8D%E5%BA%8F%E5%BA%8F%E9%81%8D%E5%8E%86">前序序遍历</a></li> <li><a href="#%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86">中序遍历</a></li> <li><a href="#%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86">后序遍历</a></li> <li><a href="#%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86">层序遍历</a></li> </ul> </li> <li><a href="#%E5%90%88%E5%B9%B6%E4%BA%8C%E5%8F%89%E6%A0%91">合并二叉树</a></li> <li><a href="#%E4%BA%8C%E5%8F%89%E6%8E%92%E5%BA%8F%E6%A0%91-bst">二叉排序树 (BST)</a><ul> <li><a href="#%E9%AB%98%E5%BA%A6%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91">高度平衡二叉搜索树</a></li> <li><a href="#%E5%88%A4%E6%96%AD%E6%8C%87%E5%AE%9A%E6%A0%91%E6%98%AF%E5%90%A6%E6%98%AF%E5%B9%B3%E8%A1%A1%E6%A0%91">判断指定树是否是平衡树</a></li> </ul> </li> </ul>

2021/1/5
阅读更多

闭包与链式设计的使用示例

<p>最近遇到了个按需请求数据的需求,非常适合用于讲解闭包与链式设计的例子,故来分享一下思路。</p>

2020/12/22
阅读更多

React 知识回顾 (优化篇)

<img src="/blog/2020/11/04/react-retrospection-2/banner.png" class=""> <p>接下来对 React 性能相关的问题进行知识回顾。</p>

2020/11/4
阅读更多

React 知识回顾 (使用篇)

<img src="/blog/2020/10/31/react-retrospection/banner.png" class=""> <p>使用 React 进行项目开发也有好几个项目了,趁着最近有空来对 React 的知识做一个简单的复盘。</p>

2020/10/31
阅读更多

Hexo 常见问题解决方案

<img src="/blog/2020/09/27/hexo-issue/banner.png" class=""> <p>记录 Hexo 升级或使用时遇到的问题和一些解决方案。</p>

2020/9/27
阅读更多

React vs Vue

<p>在项目架构时选择合适的前端框架是至关重要的。React 和 Vue 都是流行的选择,但它们在灵活性、易用性和性能方面各有特点。本文旨在深入比较这两个框架,让我们在开发前选择技术架构有个参考。</p>

2020/7/5
阅读更多

webpack + Travis CI 自动部署项目应用

<img src="/blog/2020/06/08/github-travis-build/banner.png" class=""> <p>我们知道 <strong><a href="https://pages.github.com/">Github Pages</a></strong> 是 Github 免费提供给用户展示页面的一项服务。当我们完成项目开发后,想将页面部署到 Github Pages 时,该要怎么操作呢?</p> <p>可以在 GitHub 的储存库设置中设置用于展示页面的分支,该分支只保留构建后的静态资源,也就是源码与编译后的静态资源分离。按照传统的做法是:手动运行编译命令,编译后再复制到指定分支中。这样操作很繁琐,但使用 <code>Travis CI</code> 持续集成服务之后就可以不用操心这些事了。</p>

2020/6/8
阅读更多

从零构建 webpack 脚手架(基础篇)

<img src="/blog/2020/05/04/webpack-example/banner.png" class=""> <p>webpack 是一个现代 JavaScript 应用程序的静态模块打包工具,它对于前端工程师来说可谓是如雷贯耳,基本上现在的大型应用都是通过 webpack 进行构建的。</p> <p>webpack 具有高度可配置性,它拥有非常丰富的配置。在过去一段时间内曾有人将熟练配置 webpack 的人称呼为 “webapck 工程师”。当然,这称呼只是个玩笑话,但也能从侧面了解到 webpack 配置的灵活与复杂。</p> <p>为了能够熟练掌握 webpack 的使用,接下来通过几个例子循序渐进的学习如何使用 webpack。</p> <p>以下 <code>Demo</code> 都可以在 Github 的 <a href="https://github.com/anran758/webpack-example">webpack-example</a> 中找到对应的示例,欢迎 star~</p>

2020/5/4
阅读更多

Flexbox 布局实际用例

<p>上篇文章介绍了 flexbox 的属性与示例,本文再通过几个 flex 布局的案例来体会 flex 布局的特性带来的便利和问题~</p> <img src="/blog/2020/02/22/flexbox-use-cases/banner.png" class="">

2020/2/22
阅读更多

Flexbox 布局入门

<p>互联网早期实现布局是需要通过多种不同属性组合才能实现我们想要的布局。</p> <p>比如常见的垂直居中,刚接触 css 的朋友看到 <code>vertical-align: middle;</code> 这个属性可能就会认为它就是用于垂直居中的,但实际上并没有那么简单。如果想要通过该属性来实现垂直居中,还需要其他小伙伴配合。</p> <figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.container</span> &#123;</span><br><span class="line"> <span class="attribute">width</span>: <span class="number">200px</span>;</span><br><span class="line"> <span class="attribute">height</span>: <span class="number">200px</span>;</span><br><span class="line"> <span class="attribute">border-radius</span>: <span class="number">6px</span>;</span><br><span class="line"> <span class="attribute">text-align</span>: center;</span><br><span class="line"> <span class="attribute">color</span>: <span class="number">#fff</span>;</span><br><span class="line"> <span class="attribute">background</span>: <span class="number">#e44b27</span>;</span><br><span class="line"> <span class="attribute">white-space</span>: nowrap;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/* 该伪类是实现垂直居中关键 */</span></span><br><span class="line"><span class="selector-class">.container</span>:after &#123;</span><br><span class="line"> content: <span class="string">&#x27;&#x27;</span>;</span><br><span class="line"> <span class="attribute">display</span>: inline-block;</span><br><span class="line"> <span class="attribute">height</span>: <span class="number">100%</span>;</span><br><span class="line"> <span class="attribute">vertical-align</span>: middle;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.content</span> &#123;</span><br><span class="line"> <span class="attribute">display</span>: inline-block;</span><br><span class="line"> <span class="attribute">white-space</span>: normal;</span><br><span class="line"> <span class="attribute">vertical-align</span>: middle;</span><br><span class="line"> <span class="attribute">text-align</span>: left;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure> <figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;container&quot;</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;content&quot;</span>&gt;</span>我想居中!<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure> <p>这样看来,为了实现垂直居中布局,我们还得打一套组合拳才能出来才行,是不是看起来有点麻烦的样子?</p> <p>W3C 在 2009 年提出的 <code>Fiexbox(flex)</code> 布局<a href="https://www.w3.org/TR/2009/WD-css3-flexbox-20090723/">草案</a>,就是针对用户界面设计优化的 CSS 盒模型。如果使用 flex 布局来实现上面的垂直居中布局的话,可以简化为:</p> <figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.container</span> &#123;</span><br><span class="line"> <span class="attribute">width</span>: <span class="number">200px</span>;</span><br><span class="line"> <span class="attribute">height</span>: <span class="number">200px</span>;</span><br><span class="line"> <span class="attribute">border-radius</span>: <span class="number">6px</span>;</span><br><span class="line"> <span class="attribute">color</span>: <span class="number">#fff</span>;</span><br><span class="line"> <span class="attribute">background</span>: <span class="number">#e44b27</span>;</span><br><span class="line"></span><br><span class="line"> <span class="comment">/* 使用 flex 布局 */</span></span><br><span class="line"> <span class="attribute">display</span>: flex;</span><br><span class="line"> <span class="attribute">justify-content</span>: center;</span><br><span class="line"> <span class="attribute">align-items</span>: center;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure> <figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;container&quot;</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">div</span>&gt;</span>我想居中!<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure> <p>修改后的代码就显得更精简了,也不需要其他小伙伴来搭把手。布局的事情就让 flex 家族自己来解决即可。</p>

2020/2/5
阅读更多

Hexo blog 的升级与同步方案

<p>前一篇我们介绍了如何使用 <code>Hexo</code> 框架及 <code>Next</code> 主题搭建博客。这次来聊聊如何安全的更新博客与主题的版本。</p> <p><img src="https://user-images.githubusercontent.com/16272760/63487983-da41b080-c4df-11e9-951c-64883a8a5e9b.png" alt="next theme"></p>

2019/11/2
阅读更多

将 JSON 数据格式输出至页面上

<p><code>JSON</code> 是一种轻量级的数据交换格式,它有键值对集合(js 中的对象)和数组两种结构。<code>JSON</code>是一个通用的格式,在前后端语言中都能跟该 <code>JSON</code> 打交道。</p> <p>有时候我们需要将 <code>JSON</code> 格式输入至页面展示的需求,其中还需要保持一定的索引,那么该如何实现呢?</p>

2019/8/24
阅读更多