自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 收藏
  • 关注

原创 现代操作系统 - 虚拟化和云

本章主要讲了虚拟机, 包括第一类虚拟机和第二类虚拟机, VMware就属于第二类虚拟机. 虚拟机除了对CPU虚拟化之外, 也需要对内存和IO设备虚拟化, 其中内存虚拟化有硬件上的支持, IO设备的虚拟化有很多种形式. 这里还讲了VMware的架构

2023-07-02 05:57:37 311

原创 现代操作系统 - IO

IO是一个比较杂的话题, 这里主要总结了最基本的IO的点. IO组织分为4个层次, 中断服务程序, 设备驱动程序, 与设备无关的OS软件和用户IO, 设备驱动程序处理运行设备的细节并向OS其余部分提供统一的接口

2023-07-02 05:22:54 167

原创 现代操作系统 - 文件系统

从外部看, 文件系统就是文件和目录, 以及对文件和目录的操作, 内部看, 设计需要考虑如何分区, 比如使用i节点; 如果管理空闲块, 比如位图; 通过增量转储备份可以提高文件的可靠性; 通过高速缓存, 预读取可以尽可能将文件中的块放在一起, 提升性能

2023-07-01 06:20:47 202

原创 现代操作系统 -内存管理

内存管理最简单的就是根本没有交换和分页的, 接下来就是带交换技术的内存管理, 如果一个进程没有空间可以用, 它将会被交换到磁盘上. 现代计算机用的是虚拟内存, 每一个进程地地址空间被划分为同等大小的page, page可以被放入内存任何可以使用的page frame内, 有多种页面置换的算法, 其中比较好的是老化算法和工作集时钟算法

2023-06-19 04:42:53 250

原创 现代操作系统 - 进程与线程

进程是对CPU运行程序的抽象, 是的CPU可以不断切换进程, 然后看起来像是同时处理多个程序. 线程是轻量级的进程, 每个线程都可以共享内存资源, 实现线程可以在用户空间实现, 也可以在内核上实现, 不过内核上实现开销会比较大进程之间通信会涉及到锁, 保证共享的资源在同一个时间, 只有一个进程使用还讲了调度的算法, 常见的有轮转调度, 优先调度

2023-06-17 05:53:41 388

原创 现代操作系统 - 导论

操作系统有效管理系统的各个部分, 提供给用户比实际机器更便于运用的抽象, 比如进程, 地址空间, 文件. 它的核心是可处理的系统调用集, 包括读写文件, 进程创建和终止, 目录管理等

2023-06-15 05:25:46 344

原创 计算机网络 - 移动网络

讲了CDMA的一个传输方式, 在移动网中常用. 然后讲了wifi的技术, 包括CSMA/CA的通信, wifi的信道以及接入的方法, 也讲了wifi的点到点传输, 以及mobility的实现, 也讲到了蓝牙提供个人网络. 讲了4G/5G的移动通信, 重点讲了indirect和direct的mobility management

2023-06-05 05:28:51 768

原创 计算机网络 - 链路层

这章讲了链路层的功能, 对于多点访问的需要做冲突避免, 技术包括了channel partition, random access (CSMA/CD), taking turns. 然后讲了局域网, 使用了交换机的技术就变成了点到点的传输, 不需要做冲突避免, ARP (Address Resolution Protocol) 可以让client通过ip地址找到mac地址, 然后具体讲了局域网怎么传数据的, 要记住的是mac地址不是src的mac地址, 而是子网subneet路由的mac地址. 之后介绍了局

2023-06-02 05:27:30 309

原创 计算机网络 - 网络层的控制平面

这章讲了控制平面, 设计到了路由选择算法, 还有路由的层次(AS), 讲了SDN的架构以及怎么做控制, 包括OpenFlow协议, 讲了ICMP协议, 还有网络管理

2023-05-28 05:35:52 607

原创 计算机网络 - 网络层的数据平面

这里主要讲了Network Layout的数据平面, 包括数据的input → switch → output, 然后因为数据会拥堵, 所以需要input和output都需要cache, cache的大小大概是RTT * C / sqrt(N), 对于swtich, 有基于内存的交换, 基于bus的交换, 还有基于crossbar的交换, 基于crossbar的交换速度最好. 然后, 还将到了IP协议, 包括ip的报文, 以及IPv4, 怎么分地址, 包括classic A/B/C 还有无类域间路由, 等等

2023-05-27 13:54:38 945

原创 计算机网络 - 传输层

传输层是process to process的链接, 其中TCP能够保证数据的可靠性, 实现这种可靠性需要ACK, 编号, 超时重发的机制, 而流水线协议, GBN或者是SR提高的通道的利用率. TCP同样也支持流量控制以及拥塞控制, 其中拥塞控制是端到端的控制, 通过检测重传以及重复的ACK控制流量, 方法包括了SS(slow start)以及CA(congestion avodidance)实现的

2023-05-20 19:01:48 531

原创 计算机网络 - 应用层

总的来说, 应用层的服务是比较多的, 这里介绍了HTTP, STMP, DNS 以及 CDN。

2023-05-20 06:18:33 537

原创 计算机网络

计算机网络概览

2023-05-14 13:17:13 327

原创 Coursera Algorithm Ⅱ week5 Burrows Wheeler

Burrows–Wheeler data compression algorithm

2022-09-26 07:39:53 134

原创 Coursera Algorithm Ⅱ week3 baseball

baseball

2022-09-25 18:25:49 220

原创 Coursera Algorithm Ⅱ week2 Seam

Coursera Algorithm Ⅱ week2 Seam

2022-09-25 15:30:23 257

原创 Coursera Algorithm Ⅱ week1 WordNet

Coursera Algorithm Ⅱ week1 WordNet 作业

2022-08-23 19:30:47 129

原创 CSS 栅格

CSS 栅格

2022-01-26 19:43:50 1014

原创 CSS - Flexbox总结

CSS总结

2022-01-11 19:15:46 202

原创 CSS 的基本渲染逻辑 1

前言本文主要总结最近学习css的内容,浏览器default CSS如果我们在html文件中不设置任何css, 那么在chrome, a tag的css如下a { color: -webkit-link; cursor: pointer; text-decoration: underline;}Chrome default CSS rule 参考这里CSS中的继承一部分的css属性是可以继承, 它们大多数跟排版相关, 比如color,font-size, text-shadow

2021-12-13 20:36:41 552

原创 理解JS原型

JS原型定义原型 prototype, 是第一函数由JS自动分配给函数的一个可以被所有构造函数实力对象变量共享的对象变量为什么需要原型TLDR 节省内存! 原型是一个共享的内存空间, 让可以共享的方法和属性共享举个例子function Student(name, grade) { this.name = name this.grade = grade this.course = ['sport', 'science', 'arts']}this.course是每个o

2021-08-10 20:05:11 79

原创 React的测试 - react hook的测试

目录前言一、 background1.1 原始方法1.2 测试二、改进2.1 直接测试hook2.2 fake component三、使用Library3.1 react-hooks总结前言测试除了可以让我们对线上代码更有信心,更重要的是当需要重构代码时,有测试用例的代码才叫重构,没有测试用例的代码叫重写所以,测试对于软件工程来说是非常重要的,本文讲讲react hook的测试如果对React测试不熟悉的话可以参考我之前的React的测试 - 基本的HTML测试一、 background

2021-02-21 14:37:11 350

原创 React的测试 - context组件的测试

前言测试除了可以让我们对线上代码更有信心,更重要的是当需要重构代码时,有测试用例的代码才叫重构,没有测试用例的代码叫重写所以,测试对于软件工程来说是非常重要的,本文主要解决context全局组件的测试如果对React测试不熟悉的话可以参考我之前的React的测试 - 基本的HTML测试一、background1.1问题对于全局组件,其实每一个子组件都应该被该组件包裹,如果每次都用context.provider包裹测试组件,将会比较冗余,我们需要一个render方法已发,这个render

2021-02-21 13:41:44 294

原创 React的测试 - 模拟http请求

前言测试除了可以让我们对线上代码更有信心,更重要的是当需要重构代码时,有测试用例的代码才叫重构,没有测试用例的代码叫重写所以,测试对于软件工程来说是非常重要的,本文将模拟http的请求如果对React测试不熟悉的话可以参考我之前的React的测试 - 基本的HTML测试一、 background1.1 mocking data很多时候前端需要请求后端数据,mocking data做测试使用就很有必要了1.2 API这里使用的是MSW,其中mocking的方法如下const serv

2021-02-21 12:53:52 452

原创 React的测试 - Form表单测试

前言测试除了可以让我们对线上代码更有信心,更重要的是当需要重构代码时,有测试用例的代码才叫重构,没有测试用例的代码叫重写所以,测试对于软件工程来说是非常重要的,本文讲讲表单中的测试如果对React测试不熟悉的话可以参考我之前的React的测试 - 基本的HTML测试一、example1.1 测试的组件我们需要测试一个表单,用户输入username以及password就可以点击提交,需要测试点击submit后提交的内容与用户输入的一致1.2 render组件首先需要render测试的

2021-02-21 11:39:37 731

原创 React的测试 - 基本的HTML测试

目录前言一、example1.1 测试的组件1.2 create div element1.3 获取需要测试的元素1.4 模拟用户的事件1.5 清理DOM二、使用React Testing Library2.1 新的React组件包裹API2.2 获取元素2.3 模拟用户事件三、避免实现细节3.1 background3.2 借助screen3.3 Chrome插件总结前言测试除了可以让我们对线上代码更有信心,更重要的是当需要重构代码时,有测试用例的代码才叫重构,没有测试用例的代码叫重写所以,测

2021-02-21 08:48:55 473

原创 React的性能调优 - state切片及其HOC高级组件的应用

目录前言一、background1.1 实际问题1.2 example二、 提出方法2.1 方案12.2 方案22.3 使用state切片三、HOC总结前言最近开始学习React,跟着Kent学,有很多干货,这里分享通过state切片以提高性能以及通过HOC抽象逻辑一、background1.1 实际问题有时候,即便使用了memo,但是由于太多components跟新了,导致其它components的联动跟新,于是出现了性能问题1.2 example不妨假设我们有两个组件,一个是Grid,另

2021-02-20 14:18:42 345

原创 React的性能调优 - 通过memo避免组件重载

目录前言一、背景1.1 React lifecycle二、example2.1 用法2.2 react-dev-tool2.3 使用memo2.4 memo的第二个参数2.5 最佳实践总结前言最近开始学习React,跟着Kent学,有很多干货,这里分享memo的使用方法一、背景1.1 React lifecycleReact的lifecycle如下→ render → reconciliation → commit ↖ ↙

2021-02-20 11:06:31 320

原创 React中的useCallback跟useMeno的区别

目录前言一、example1.1 useCallback1.2 useMeno总结前言这里主要讲讲React中两个类似的hook,useCallback以及useMeno的区别,简单来讲就是useMeno是内部返回的一个值useCallback是内部返回的一个当前函数–一、example1.1 useCallback正常来说,当处理sideEffect的时候,useEffect的第二个参数会传一个dependence list,只有当list中地参数变化时候,这个effect才会被重新触

2021-02-20 08:29:11 470

原创 React的性能调优 - 通过Chrome工具正确打开useMeno的使用方法

目录前言一、background1.1 performance bottleneck1.2 performance check二、使用Chrome的调试工具2.1 example2.2 使用Chrome调试工具2.3 re-test总结前言最近开始学习React,跟着Kent学,有很多干货,这里分享一个检测性能的方法,并且利用此方法介绍useMeno的使用方法一、background1.1 performance bottleneckReact可以让我们把所有的逻辑以及state managem

2021-02-20 07:14:02 394

原创 React中的设计模式 - 受控属性Control Props

目录前言一、background1.1 需求1.2 example二、实现2.1 example2.2 useToggle实现2.3 设计新的dispatch2.4 调用user的onChange逻辑2.5 final veriosn总结前言最近开始学习React,跟着Kent学,有很多干货,这里分享Rect中的一个设计模式Control Props,这个设计方法跟React中的Control Component文章中完整的示例代码可以查看 这里一、background1.1 需求有时候用户希

2021-02-19 08:56:31 409

原创 React中的设计模式 - 方法重写

目录前言一、background前言最近开始学习React,跟着Kent学,有很多干货,这里分享Rect中的一个设计模式方法重写或者是控制反转IoC,就是用户可以根据API提供的方法重写某些方法以满足设计需求,这样也满足了对修改封闭,对扩展开放原则一、background用户的需求是时刻变化的,之前提供的API可能不完全cover用户的需求,这时候就需要给API做扩展;具体的例子比如是reducer给接受的action中的方法需要改变...

2021-02-19 05:54:37 820

原创 React中的设计模式 - Prop Getters

目录前言一、background二、原型2.1 example2.2 实现2.3 改进总结前言最近开始学习React,跟着Kent学,有很多干货,这里分享Rect中的控制反转Inversion of Control这里还是讨论props传递的问题,之前React中的设计模式 - 组合组件(上) 以及React中的设计模式 - 组合组件(下) 已经讨论过很多模式,本文讨论利用控制反转,让组件使用者调用props, 而不是被动从父组件接受props文章中完整的示例代码可以查看 这里一、back

2021-02-18 04:51:00 344

原创 React中的设计模式 - 组合组件(下)

目录前言一、background二、解决办法2.1 初始方案2.2 使用hook2.3 子组件获取属性总结前言最近开始学习React,跟着Kent学,有很多干货,这里分享Compound Components组合组件的第二种模式文中完整的示例代码可以查看 这里一、background之前在React中的设计模式 - 组合组件(上)中,我们提到可以通过cloneElement的方法修改给子组件加属性,从而不需要通过props向下传递,但是如果遇组件跟DOM元素嵌套之后,这个方法就不能用了,情况如

2021-02-17 18:12:07 177

原创 React中的设计模式 - 组合组件(上)

目录前言一、background1.1 example1.2 需求二、React的组合模式2.1 需求2.2 设计2.3 新的设计2.4 支持DOM元素总结前言最近开始学习React,跟着Kent学,有很多干货,这里分享Compound Components组合组件文中完整的示例代码可以查看 这里一、background1.1 example组合模式是backend的一个概念,但是frontend其实也是有类似的设计模式的,比如select跟options的组合<select>

2021-02-17 09:22:54 402

原创 React中的设计模式 - Context Module Functions

目录前言一、background1.1 一般context的使用1.2 提出问题1.3 提出解决方案1.4 最佳实践总结前言最近开始学习React,跟着Kent学,有很多干货,这里分享Context API一、background1.1 一般context的使用如果大家使用过Reducer,那么以下的场景不会陌生/ src/context/counter.jsconst UserContext = React.createContext()function UserProvider({

2021-02-16 18:26:59 220

原创 React中Context的使用方法

目录前言一、background1.1 设计初衷1.2 example1.3 useContext三大件总结前言最近开始学习React,跟着Kent学,有很多干货,这里分享React Hook中的useContext一、background1.1 设计初衷useContext设计的初衷是给全局共享state的,这样就不需要每个state都通过prop传递了;这里举一个简单的例子学习一下useContext的用法1.2 example设计一个counter,组件如下;其中,CountDispl

2021-02-16 06:31:04 550

原创 React Hook中useCallback及http封装及其最佳实践

目录前言一、background前言最近开始学习React,跟着Kent学,有很多干货,这里分享React Hook中的useCallback一、background正常来说,当处理sideEffect的时候,useEffect的第二个参数会传一个dependence list,只有当list中地参数变化时候,这个effect才会被重新触发,比如React.useEffect(() => { window.localStorage.setItem('count', count)}, [

2021-02-15 19:32:00 1042

原创 React Hook中useReducer的演进及其最佳实践

目录前言一、useReducer1.0 useReducer的API1.1 传递object1.2 useReducer的最佳实践总结前言最近开始学习React,跟着Kent学,有很多干货,这里分享React Hook中的useReducer很多时候并不需要useReducer,因为useReducer增加了代码的复杂度,但是如果计算逻辑比较复杂涉及到多个state的互动,useReducer就可以比较好的解决这类问题一、useReducer1.0 useReducer的APIuseReduc

2021-02-14 14:37:52 375

原创 Rect Hook通过useEffect处理http请求的演进

目录前言一、实现1.0 基本方法1.1 添加错误处理1.2 添加status1.3 使用object统一管理多个states二、进阶 - 使用ErrorBoundary总结前言最近开始学习React,跟着Kent学,有很多干货,这里具体分享一个通过useEffect处理异步http请求的方法,及其改进我把代码放在了codesandbox上, 里面是一个fetch pokemon的场景,接下来会通过这个场景一步步介绍异步请求在React的使用一、实现1.0 基本方法简单的处理方式就是如果需要发送

2021-02-14 13:20:15 300

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除