Blog

我想证明并没有普通人那样一种东西
我们都有着深刻的内心生活
我们都燃烧着惊人的激情
我们都曾经历着一些难忘的事
我们身上都有一些值得记下来的事

类的quiz

类的quiz 99. quiz 1. 编译器会为C++的类自动生成什么函数? 编译器会为C++的类自动生成以下六种特殊的成员函数: 默认构造函数(如果没有定义任何构造函数) 析构函数(如果没有定义) 拷贝构造函数(如...

Marco Hwong
Marco Hwong

浏览器疑问

浏览器疑问 1. javaScript 1.1 怎么理解变量提升?为什么要有变量提升? 变量提升(Hoisting)是 JavaScript 中的一个特性,它意味着无论变量在哪里声明,都会被提升到当前作用域的顶部。这个特性只适用...

Marco Hwong
Marco Hwong

分层和合成机制:为什么CSS动画比JavaScript高效

分层和合成机制:为什么CSS动画比JavaScript高效 1. 显示器是怎么显示图像的 每个显示器都有固定的刷新频率,通常是 60HZ,也就是每秒更新 60 张图片。这些更新的图片都来自于显卡中一个叫前缓冲区的地方。显示器所做的...

Marco Hwong
Marco Hwong

虚拟DOM:虚拟DOM和实际DOM有何不同

虚拟DOM:虚拟DOM和实际DOM有何不同 虚拟 DOM 是最近非常火的技术,两大著名前端框架 React 和 Vue 都使用了虚拟 DOM,所以我觉得非常有必要结合浏览器的工作机制对虚拟 DOM 进行一次分析。当然了,React ...

Marco Hwong
Marco Hwong

DOM树:JavaScript是如何影响DOM树构建的

DOM树:JavaScript是如何影响DOM树构建的 而在渲染流水线中,后面的步骤都直接或者间接地依赖于 DOM 结构,所以本文我们就继续沿着网络数据流路径来介绍 DOM 树是怎么生成的。然后再基于 DOM 树的解析流程介绍两块内...

Marco Hwong
Marco Hwong

页面渲染

页面渲染 1. 基本概念 什么是服务端渲染,与客户端渲染的区别是什么? 为什么需要服务端渲染,服务端渲染的利弊是什么? 如何对VUE项目进行同构? 2. 渲染 2.1 页面的渲染流程 页面的渲染流程通常包括以下步骤: ...

Marco Hwong
Marco Hwong

渲染流水线

渲染流水线 0. concepts 从服务器得到响应体之后,如果这是一个content-type为text/html的,那就需要将这些文本处理成我们能看到的页面。这个过程,叫做渲染。 渲染流水线,说白了就是如何将响应体得到的HT...

Marco Hwong
Marco Hwong

消息队列和事件循环:页面是怎么活起来的

消息队列和事件循环:页面是怎么活起来的 前面我们讲到了每个渲染进程都有一个主线程,并且主线程非常繁忙,既要处理 DOM,又要计算样式,还要处理布局,同时还需要处理 JavaScript 任务以及各种输入事件。要让这么多不同类型的任务...

Marco Hwong
Marco Hwong

浏览器工作原理

浏览器工作原理 浏览器内有哪些进程,这些进程都有些什么作用 浏览器地址输入URL后,内部的进程、线程都做了哪些事 我们与浏览器交互时,内部进程是怎么处理这些交互事件的 1. 浏览器架构 进程(process)是程序的一次执行过程...

Marco Hwong
Marco Hwong

从输入URL到页面展示这中间发生了什么

从输入URL到页面展示这中间发生了什么 1. concepts 从图中可以看出,整个过程需要各个进程之间的配合,所以在开始正式流程之前,我们还是先来快速回顾下浏览器进程、渲染进程和网络进程的主要职责。 浏览器进程...

Marco Hwong
Marco Hwong

迭代器

迭代器 1. 迭代器有哪些 STL(Standard Template Library,标准模板库)中的迭代器主要有五种类型: 输入迭代器(Input Iterators):只支持对元素进行一次正向访问,只能进行...

Marco Hwong
Marco Hwong

渲染管线

渲染管线 1. 什么是渲染管线? 渲染管线,也被称为图形管线,是一个用于生成2D图像(如屏幕上的图像)的硬件或软件实现的概念模型。这个过程通常基于3D场景的数据,包括但不限于几何、视点、纹理、光照信息等。 渲染管线通常可以分为几个...

Marco Hwong
Marco Hwong

编译过程与原理

编译过程与原理 1. 编译过程 - 编译器在做什么? 如果想要机器按照我们的设想执行我们的命令,我们需要一个能够跟机器沟通的方式,而这种方式也就是==机器语言(第一代计算机语言)==,一堆01构成的指令。我们需要事先设计好指令集到...

Marco Hwong
Marco Hwong

(99)关于网络的一些quiz

(99)关于网络的一些quiz 1. 画出tcp头部的协议格式 2.udp头部/ip头部/http头部 3. 滑动窗口的作用 答:主要就是为了实现流量控制,控制了发送包的速率,每次发送方只能发送滑动窗口内部的数据包,才能保证接收...

Marco Hwong
Marco Hwong

1. DNS

# (6)网络安全 1. DNS 1. 针对DNS服务器的攻击 是什么? ​ 通过随机生成一些域名,向DNS服务器发起解析,由于DNS本地一般不会有随机生成的域名结果,就会递归往上查询。如果有很多域名解...

Marco Hwong
Marco Hwong

(5.2)负载均衡和CDN

(5.2)负载均衡和CDN 1. 基本概念 什么是负载均衡? ​ 负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。 ​ 通过...

Marco Hwong
Marco Hwong

(5.1)http

(5.1)http 1. concepts HTTP协议是一种应用层协议,主要用于在Web浏览器和Web服务器之间传输数据.在你的文件中,HTTP协议的内容主要包括以下几个部分: 请求方法:HTTP的请求方法包括G...

Marco Hwong
Marco Hwong

(5)应用层

(5)应用层 应用层有哪些? 计算机网络的应用层有许多协议,常见的包括: HTTP(超文本传输协议):用于在Web浏览器和Web服务器之间传输超文本文档. FTP(文件传...

Marco Hwong
Marco Hwong

(4.2)UDP

(4.2)UDP 3.2 UDP UDP是什么? ​ UDP 在传送数据之前不需要先建立连接,远地主机在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 却...

Marco Hwong
Marco Hwong

(4.1)TCP

(4.1)TCP 1. concepts 序号: 用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401. ...

Marco Hwong
Marco Hwong

(4)传输层

(4)传输层 1. 基本概念 简单来说,网络层实现了设备与设备的通信问题。但是在实际应用中,一个设备上通常会运行多个进程,这些进程可能都需要进行网络通信。因此,我们需要一种机制来区分这些进程的通信数据,这就是端口的作用。每个进程都...

Marco Hwong
Marco Hwong

(3)网络层

(3)网络层 1. 基本概念 IP协议(Internet Protocol):IP协议是网络层的核心协议,它定义了IP地址和数据包的格式,并负责将数据包从源主机发送到目标主机.IP协议包括IPv4和IPv6两个版本...

Marco Hwong
Marco Hwong

(2)链路层

(2)链路层 1. 基本概念 链路层(Link Layer)是计算机网络的四层模型中的第二层,它负责在网络节点之间传输数据.以下是一些关于链路层的基本知识: 对于开发者来说,以下是一些在链路层需要了解的关键概念: MAC地...

Marco Hwong
Marco Hwong

(1)物理层

(1)物理层 1. 基本概念 编码与调制 编码:将数字数据转换为信号的过程.常见的编码方式有非归零编码/曼彻斯特编码等. 调制:将数字信号转换为模拟信号的过程.常见的调制方式有调幅/调频/调...

Marco Hwong
Marco Hwong

(0)计网设备

(0)计网设备 1. 光猫(modem) 光猫是光纤网络的接入设备,它将光信号转换为电信号,或者将电信号转换为光信号,使得家庭或企业用户可以通过光纤接入互联网. 2. 路由器(router) 路由器是网络中的关键设备,它在网络层上...

Marco Hwong
Marco Hwong

错误码和异常处理

错误码和异常处理 程序出错几乎是必然事件,有可能是由于上游任务提供的数据就是错的。也有可能是程序内部实现,出现了bug。 对于程序出错的这种情况,需要有一套机制能够帮忙定位是什么错误,以及出现了错误之后如何处理的。 一般而言错误...

Marco Hwong
Marco Hwong

cpp quiz

cpp quiz 1. grammar 1.1 c++中NULL和nullptr的区别 在C语言中,NULL通常被定义为:#define NULL ((void *)0) 所以NULL实际上是...

Marco Hwong
Marco Hwong

c++编程范式

c++编程范式 1. RAII RAII,全称 Resource Acquisition Is Initialization(资源获取即初始化),是一种在 C++ 中常用的编程技巧和设计原则。 RAII 的主要思想是将资源的生命周...

Marco Hwong
Marco Hwong

内存序

内存序 1. 指令重排 指令重排可以是编译器的行为,也可以是处理器的行为. 编译器重排:为了优化程序性能,编译器在生成机器代码时可能会改变指令的顺序.例如,编译器可能会将两个没有数据依赖关系的指令交换顺序,或者将...

Marco Hwong
Marco Hwong

向量化是什么意思?

向量化是什么意思? 向量化的特性需要编译器和CPU都支持,让我们先来简单的了解一下向量化是如何工作的.假设我们有一个非常大的vector.简单的实现可以写成如下的方式: std::vector<int> v {1, 2...

Marco Hwong
Marco Hwong

性能优化

性能优化 1. 这些是一些常见操作的成本的数量级的概念: 这些操作的精确耗时取决于许多因素,包括硬件/操作系统/网络条件等.以下是一些大致的估计: 一次内存访问:大约在100纳秒级别.这是从CPU访问主内存的时间...

Marco Hwong
Marco Hwong

二进制兼容

二进制兼容 1. 什么是二进制兼容问题? 在升级库文件的时候,不必重新编译使用此库的可执行文件或其他库文件,并且程序的功能不被破坏. 2. 二进制兼容有什么好处? 保持二进制兼容性是为了确保软件的更新和升级过程更加平滑和无缝,...

Marco Hwong
Marco Hwong

c++ 中的省略号

c++ 中的省略号 1. c++ 中的省略号怎么用? 在C++中,省略号(…)有两种主要的用途: 可变参数模板(Variadic Templates):在模板编程中,省略号用于表示一个参数包(Parameter Pack),...

Marco Hwong
Marco Hwong

函数对象(仿函数)

函数对象(仿函数) 1. 什么是函数对象,什么是仿函数 在 C++ 中,函数对象(也称为仿函数)是一个行为类似函数的对象。任何类如果重载了 operator(),那么该类的对象就可以作为函数来使用,这样的对象就被称为函数对象。 函...

Marco Hwong
Marco Hwong

字符和unicode标准

字符和unicode标准 1. 数据类型 在编程语言中,字符的数据类型决定了可以存储哪些字符以及如何存储这些字符。 在 C 和 C++ 中,有两种主要字符类型 char 主要用于ASCII ...

Marco Hwong
Marco Hwong

智能指针

智能指针 1. concepts 为什么要有智能指针? 智能指针(Smart Pointer)是C++中的一种对象,它像原始指针一样可以指向堆上的对象,但是它们有一个额外的特性:当没有任何指针指向一个对象...

Marco Hwong
Marco Hwong

trivial grammar

trivial grammar 1. attribute #include <iostream> [[deprecated("This function is deprecated. Use newFunction()...

Marco Hwong
Marco Hwong

99 # **网络通信部分**

1/socket和epoll的关系区别?(不太懂他意思,反正对epoll的底层进行了阐述) 网络通信部分 网络通信部分,主要有两大块, 第一个是程序启动时,与服务端的交互; 第二个就是文件下载...

Marco Hwong
Marco Hwong

mvp矩阵与矩阵变换

mvp矩阵与矩阵变换 1. 矩阵基础 1.1 什么是齐次坐标 齐次坐标是在计算机图形学中常用的一种坐标表示方法,它在传统的笛卡尔坐标系的基础上增加了一个额外的维度,通常表示为(x, y, z, w)。 齐次坐标的主要优点是可以用来...

Marco Hwong
Marco Hwong

My effective C++

_tags: c++, constructing, reading notes My effective C++ 1. effective C++ 1.1 视C++ 为一个语言联邦 C 面向对象编程 泛型编程 S...

Marco Hwong
Marco Hwong

Socket

_tags: 计算机网络 Socket 1. Socket基础知识 Socket(套接字)是计算机网络中用于实现不同主机之间的通信的一种技术。它提供了一种在网络上发送和接收数据的方式。在TCP/IP网络模型中,Socket是应用层...

Marco Hwong
Marco Hwong

c++和汇编

c++和汇编 编译器会将c++转成汇编语言,学会和明白汇编语言的一些特性,有助于理解C++的设计。 1. 基本概念 1.1 汇编有哪些寄存器? 在 x86 架构的汇编语言中,有一些常用的寄存器,它们各自有不同的用途: E...

Marco Hwong
Marco Hwong

命中率

分布式系统中常用缓存方案 客户端缓存:页面和浏览器缓存,app缓存,h5缓存,localStorage,sessionStorage CDN缓存:内容存储:数据缓存,内容分发:负载均衡 nginx缓存:静态资源 服...

Marco Hwong
Marco Hwong

性能优化现象和判断

系统性能优化 性能优化现象和判断 提出性能优化现象 前台访问很慢,请帮忙分析优化 用户对性能很不满意,再不解决就要投诉 数据库负载很重,请帮忙分析一下 xxx功能打开...

Marco Hwong
Marco Hwong

事件处理模式

事件处理模式 Reactor Reactor是非阻塞同步网络模式 Reactor的组成 Handle(句柄或描述符):本质上表示一种资源,是由操作系统提...

Marco Hwong
Marco Hwong

io复用

io复用 1. 基本概念 1.1 什么是io复用 IO复用(Input/Output Multiplexing,也做io多路复用)是一种可以让单个线程处理多个IO操作的技术。在IO复用模型中,线程可以同时等待多个IO操作(例如,多...

Marco Hwong
Marco Hwong

select

select 1. 代码 #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <a...

Marco Hwong
Marco Hwong