自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 手写系列(十)发布订阅模式

上周笔者的面试中,问到了很多设计模式相关的问题,而这部分知识已经学了很久了,于是决定开始拾起,先从一道高频的题目谈起设计模式:发布订阅模式发布订阅模式是描述对象之间一对多的依赖关系的一种模式,可以通俗理解为微信公众号与用户之间的关系,用户能够订阅公众号,注册监听事件,公众号能够通过用户绑定的监听事件发布文章,让用户看到看一下发布订阅模式的基本结构://公众号对象const messageEmitter={}//公众号的调度中心(用来存放每种订阅事件类型及对应函数)messageEmitter.

2021-09-14 11:41:48 472

原创 前端模拟请求的Mock数据方案

https://github.com/typicode/json-serverInstall JSON Servernpm install -g json-serverCreate a db.json file with some data{“posts”: [{ “id”: 1, “title”: “json-server”, “author”: “typicode” }],“comments”: [{ “id”: 1, “body”: “some comment”, “postId”

2021-08-15 20:30:35 177

原创 手写new 操作符

手写new之前,我们要清楚对构造函数使用new操作符的时候会发生什么会返回一个对象新的对象会拥有构造函数中的属性及方法(不包括静态属性及方法)新的对象会拥有构造函数的显式原型对象中的属性那我们的思路基本就有了,首先是创建一个对象,然后是同过apply的方式将调用构造函数并将this指向新的对象,这时,新的对象就有了构造函数中的非静态属性及方法,再将这个对象的隐式原型属性指向构造函数的显式原型对象,最后返回这个对象 const mynew= function () {

2021-08-14 22:22:41 222

原创 手写防抖与防抖Plus

开发中有一些页面的节点绑定的事件会被频繁触发,比如鼠标移动 onmousemove,窗口的resize,scroll,输入框的改变,我们希望他触发时有效果但又不希望被频繁的触发影响性能,这就是我们的初衷先看个小案例:<body> <!-- 一个盒子 用于展示数字 --> <div id='content'></div></body><script> let count=1//计数变量 const dom =do

2021-08-14 10:13:38 275

原创 输入URL按下回车过程超详解…

又一个老生常谈的问题,但的确能引申出很多内容,从这个问题入手能复习或者学到很多知识点,开始分析~(提前说明,默认URL使用HTTPS/HTTP协议)对于这一个过程应该有一个大概的骨架,然后再是回忆里面的具体细节总体流程如下,每一部分细节后面补充~:查找浏览器缓存:如果查找到缓存中有我们URL对应的文件,则判断是否命中强缓存,如果命中直接读取使用即可,如果强缓存没有命中,判断协商缓存是否命中,但协商缓存不论是否命中都会发送请求,所以都会走下面的步骤DNS域名解析:将输入的URL解析成对应的IP

2021-08-07 22:40:56 581 2

原创 浏览器的页面渲染机制

关于浏览器的页面渲染原理,是一个比较基础的问题,但还是很重要的,因为这会引申出一系列性能优化的问题。我们使用的浏览器,主要依靠浏览器中的运行的最核心的程序,也就是我们平时所说的浏览器内核,浏览器内核最主要的两部分:渲染引擎和Js引擎。渲染引擎负责页面的渲染,展示;Js引擎负责解析Javascript语言,执行javascript语言来实现网页的动态效果目前市场主流的浏览器内核是不同的,在这里以一张表格来呈现对于前端来说,最熟悉最友好的肯定是Chrome浏览器,它的渲染引擎是Webkit,JS引擎是V

2021-08-06 18:18:32 305 2

原创 style-component中引入icon-font步骤以及出现方块问题的解决

在style-component中引入icon-font:将下载好的iconfont压缩包,将其中的文件拷贝到项目相关目录下(一般是statics),并将iconfont.css改为iconfont,js点击iconfont.js 文件头引入style-components实现全局样式设置的api createGlobalStyleimport { createGlobalStyle } from 'styled-components'将原来的css代码移到createGlo

2021-06-17 11:21:18 647

原创 LoadRunner安装

安装好loadrunner11后1)退出程序,把下载文件中的lm70.dll和mlr5lprg.dll覆盖掉…\HP\LoadRunner\bin下的这两个文件2)注意,win7的话一定要以管理员身份运行启动程序,启动后,点击 configuration->loadrunner license,此时可能会有两个许可证信息存在,退出程序,点击deletelicense.exe文件,来删除刚才得许可证信息(即时原来没有lisense最好也运行一下)3)再次打开程序, configuration-&g

2021-05-23 10:51:47 239

原创 数组中的重复数字

找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof题解:原地交换的思路(形象比喻给每个坑找自己的萝卜)给定了长度为n的数组,数组中每个数字都在0-n-1(注意此题是默

2021-04-23 16:12:13 120

原创 6-4 快速排序

本题要求实现快速排序的一趟划分函数,待排序列的长度1<=n<=1000。函数接口定义:int Partition ( SqList L,int low, int high );其中L是待排序表,使排序后的数据从小到大排列。类型定义:typedef int KeyType;typedef struct {KeyType *elem; /elem[0]一般作哨兵或...

2019-04-28 17:03:20 9701

原创 6-2 希尔排序的实现

希尔排序的实现函数接口定义:void ShellInsert(SqList L,int dk);其中L是待排序表,使排序后的数据从小到大排列。类型定义:typedef int KeyType;typedef struct {KeyType *elem; /elem[0]一般作哨兵或缓冲区/int Length;}SqList;裁判测试程序样例:#include<stdi...

2019-04-27 17:29:33 5096 1

原创 6-3 有序数组的插入 (20 point(s))

本题要求将任一给定元素插入从大到小排好序的数组中合适的位置,以保持结果依然有序。函数接口定义:bool Insert( List L, ElementType X );其中List结构定义如下:typedef int Position;typedef struct LNode List;struct LNode {ElementType Data[MAXSIZE];Position...

2019-03-30 21:28:41 2763

原创 6-5 先序输出叶结点 (15 point(s))

6-5 先序输出叶结点 (15 point(s))本题要求按照先序遍历的顺序输出给定二叉树的叶结点。函数接口定义:void PreorderPrintLeaves( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ElementType...

2019-03-30 20:53:58 2326

原创 二分查找_详解[原理+题目]

6-1 二分查找 (20 point(s))本题要求实现二分查找算法。函数接口定义:Position BinarySearch( List L, ElementType X );其中List结构定义如下:typedef int Position;typedef struct LNode List;struct LNode {ElementType Data[MAXSIZE];Po...

2019-03-30 19:45:37 592

原创 C++ 类与对象_成员函数实现的简单练习

定义一个CPU类属性变量(私有的 private):1、枚举类型CPU_Rank变量表示cpu的型号(枚举类型CPU_Rank在类外定义,其元素为i3,i5,i7);2、整型变量frequency表示cpu频率3、浮点型变量voltage表示cpu电压功能函数(公有 public):1、CPU_Rank GetRank(),用于返回cpu型号2、GetFrequency()函数,用于...

2019-03-25 20:29:52 1217

原创 C++类与对象_简单练习题

## C++ 类与对象练习题:**在主函数中生成一个时钟对象,并为其设置时间和显示时间**这是一道入门题,主要是为了熟悉类与对象,以及成员函数,数据成员的实现;在此先强调几点与C的区别或者说创建类与对象的注意点:1.C++的类习惯在主函数外定义,在主函数内部用类声明对象,类似C中的结构体,(当然结构体也可以在内部定义,只是习惯外部);2.c++的类内函数声明,...

2019-03-25 17:19:33 8339 2

原创 双向链表的创建及其基本操作

单链表是每一个节点(结构体)通过各自的指针,不断地指向下一个节点从而将它们串成链.而双向链表在保持这一特征之外,最大的区别就是,每一个节点还指向了它的上一个节点,即每个节点的指针域多了一个指向前驱的指针,从而形成了一个反向的链,所以将这种链表称作双向链表.不难看出,其实双向链表由单链表衍生出来,并没有增加很多复杂度,只要能够理解单链表的一些基本操作,双向链表也就很容易掌握拉-<.下面我贴...

2019-03-25 13:09:57 1134 2

原创 链表逆置(三种方法详解)

@Achievk6-1 单链表逆转 (20 point(s))本题要求实现一个函数,将给定的单链表逆转。##函数接口定义:List Reverse( List L );其中List结构定义如下:typedef struct Node PtrToNode;struct Node {ElementType Data; / 存储结点数据 /PtrToNode Next; / 指向下...

2019-03-23 21:58:11 23048 8

空空如也

空空如也

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

TA关注的人

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