Voilà

moke's blog

Windows 设置 git 代理

查看代理地址和端口

  1. 打开控制面板
  2. 选择网络和Internet
  3. 选择Internet选项
  4. 弹出窗口中选择连接选项卡
  5. 连接选项卡中选择局域网设置
  6. 查看代理服务器设置(默认为本机地址7890端口
阅读全文 »

概论(5分左右)

软件体系结构的意义

体系结构提供一种方法:解决共同的问题,确保建筑、桥梁、乐曲、书籍、计算机、网络或系统在完成后具有某些属性或行为

  • 体系结构既是所构建系统的计划,确保得到期望的特性,同时也是所构建系统的描述。

软件体系结构的意义:

  • 体系结构,有助于确保系统能够满足其利益相关人的关注点,构想、计划、构建、维护系统时,体系结构有助于处理复杂性。
  • 开发一个具有一定规模和复杂性的软件系统和编写一个简单的程序是不一样的
阅读全文 »

SOA技术简述

为什么要引入SOA、SOA要解决的问题

为什么要引入SOA:需求拉动、技术推动

  1. Internet环境下的企业交互:现代企业已经不再是封闭的企业,市场分工的日益专业化使得企业之间可能存在大量频繁的交互行为,以发挥各自的竞争优势。这种业务上的交互体现为企业业务流程的交互/互操作,同时一定需要企业信息系统的支持,因此体现为软件系统之间的集成与互操作
  2. 异构系统的集成与互操作:技术平台不同、软件体系结构不同、数据格式不同
  3. 频繁变化的互操作与集成需求:企业的业务是频繁变化的,IT应用系统要能够快速支持这种变化的需求,需要迅速、敏捷、高效的调整业务应用系统

SOA要解决的问题:

  1. 分布式企业间业务的协同
  2. 通过Internet连接在一起的异构企业应用软件系统的集成、交互与互操作
  3. 当业务(Business)发生变化时,IT系统能够快速响应
阅读全文 »

软件测试

第一章 概述及基础

对软件测试的理解

  • 正向思维:以功能验证为导向,证明软件是正确的

  • 逆向思维:以破坏性检测为导向,为了找到软件中的错误(发现错误

  • 软件 = 程序 + 文档

  • 软件测试 ≠ 程序测试

软件测试标准定义

  • 使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别
  • 软件测试是以检验是否满足需求为目标
阅读全文 »

问题

Node.js 单线程如何保证线程不中断?

Node.js 被广泛认为是单线程的,但这个说法需要更准确的解释。Node.js 的主执行线程是单线程的,它运行在 V8 JavaScript 引擎上。然而,Node.js 使用多线程来处理 I/O 密集型任务,这是通过其底层的 libuv 库实现的。以下是 Node.js 保证其单线程不中断的几个关键方面:

  1. 异步非阻塞 I/O:

    • Node.js 主要依靠事件循环和回调函数来处理 I/O 操作(如文件读写、网络请求等),这些操作是异步和非阻塞的。
    • 当一个 I/O 操作开始时,它会被发送到事件循环,并继续执行后续的代码,而不是等待 I/O 操作完成。当 I/O 操作完成时,相应的回调函数会被放入事件队列中,等待主线程空闲时执行。
  2. 事件驱动架构:

    • Node.js 使用事件驱动模型来处理各种异步操作。每当有事件发生时(如数据到达、超时、处理完成),相应的回调函数会被触发。
    • 这种模型使得 Node.js 能够在不被阻塞的情况下高效地处理大量的并发请求。
  3. libuv 库:

    • 尽管 JavaScript 代码在单个主线程上运行,Node.js 使用 libuv 库在背后管理一个线程池。
    • 对于一些复杂的操作(如文件系统操作、某些加密操作),libuv 会在后台的多个线程上执行这些任务,而主线程继续执行 JavaScript 代码。
  4. 错误处理机制:

    • Node.js 提供了异常处理机制,比如 try-catch 块和全局的 uncaughtException 事件,来处理同步和异步代码中的错误。
    • 正确的错误处理能够防止异常导致主线程崩溃。
  5. 进程管理:

    • 对于 CPU 密集型任务,可以使用 Node.js 的 child_process 模块来创建子进程,分担主线程的负载。
    • 还可以使用集群(Cluster)模块来创建多个进程,每个进程都有自己的事件循环和 V8 实例,可以更好地利用多核 CPU。

通过这些机制,Node.js 能够确保即使是在单个主线程上运行,也能高效地处理大量的并发 I/O 操作,同时避免线程中断和阻塞。

阅读全文 »

VSCode 下的 PR 流程

  1. VSCode 安装 Github Pull Request 插件
  2. 于源代码管理处点击创建拉取请求
  3. 提交 PR 后等待其余协同开发者审核
阅读全文 »

参考书籍:计算机网络——自顶向下方法(原书第 8 版)

阅读全文 »

参考书籍:数据结构与算法分析(C语言描述) 原书第二版

阅读全文 »

Timer

Zero Delay

如果指定超时延迟为 0 ,回调函数将尽快执行,但在当前函数执行之后:

1
2
3
4
5
setTimeout(() => {
console.log('after ');
}, 0);

console.log(' before ');
阅读全文 »

google 编码风格

干净的代码既简单又直接。干净的代码读起来像写得很好的散文。简洁的代码永远不会掩盖设计者的意图,而是充满清晰的抽象和直接的控制线。

style guide,编码规范,又称风格指南。每个较大的开源项目都有自己的风格指南:关于如何为该项目编写代码的一系列规定(有时候会比较武断)。当所有代码均保持一致的风格时,在理解大型代码库时更为轻松。

阅读全文 »
0%