自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 了解二叉树和二叉树快速查询

二叉搜索树是一个天然的二分结构,可以很好的利用二分查找快速查询,但在某些极端场景下,二叉树会退化成链表,为了解决这个问题,就有了自平衡二叉树,他会在插入/删除之后进行自旋转操作以维持树的平衡。而树的高度决定了磁盘I/O的次数,为了降低磁盘I/O和提高查询效率,B树增加了叉数,以降低树的高度,而B+树则是将数据都存放到叶子节点,并将叶子节点连接成链表,以便于范围查询。感兴趣的可以深入了解一下。

2023-10-20 16:25:37 109

原创 读完 重构 之后

不同于技术换型等专门抽出时间对代码进行的大型重构。书中提到的重构是对代码结构的一种调整,在不改变代码外在行为的前提下,对代码做出修改,提高其可理解性。重构的关键在于运用大量微小且保证软件行为的步骤,将重构贯穿在项目的整个迭代开发中。每个单独的重构要么很小,要么由若干小步骤组成。因此代码很少进入不可工作的状态,即使重构未完成,代码也时刻可以运行。这本书相对比较偏向于新人,书中的一些重构技巧大多比较简单,有一些只看名字就能懂了是咋回事。

2023-09-01 16:45:34 77

原创 读react新官方文档,一些 hook 的使用

React 的新官方文档更新了有一段时间了,最近看了下,发现有不少新东西。

2023-06-29 16:29:16 263

原创 Promise 对象池

最近专门出了一个JavaScript专栏,里面是一些和javaScript相关的题目,基本上是问一些日常使用或经典的工具函数的内部实现。感觉挺有意思,所以就刷了一遍,其中,Promise 对象池这个题让我印象比较深刻,平时有遇到过相关场景,但没细琢磨过实现原理,原题大意是给你一个异步函数数组functions,和一个限制数n,要求设计一个函数,用来执行数组functions中的所有异步函数,且最大并行执行数量不能超过n。

2023-06-14 11:27:26 247

原创 要是创建MR/PR后它能自己创建一份预览环境就好了

在正文开始之前,不得不先提一下我们公司的代码合并流程。这段代码写的真完美(不是我)。而一些逻辑不自洽的代码或遗漏的边界问题可能就这么被忽略了过去。我*,我当时为啥这么写?没道理啊…。所以,我们需要一个代码复审者或者代码检查者这么一个角色,在我们把代码合并到master分支之前,帮我们检查一下,排除一些低级bug以及逻辑漏洞。在远程仓库创建一个新分支(分支名称可以因任务而定,一般采用feature/[任务号]或fixbug/[任务号]等),将我们的代码提交到这个新分支上。创建一个并指定复审者。

2023-04-12 10:17:57 210

原创 期待Web Component的未来

Web Component本身不是一个规范,而是一组技术的应用,Web Component现阶段主要分为三部分:`Custom element`、`Shadow DOM`、`Template`。通过它们的搭配使用,可以让我们在不借助第三方框架(react,vue)的情况下,构建独立的,可重用的自定义组件。

2023-03-03 16:56:03 155

原创 Docker初识

不同于虚拟机,容器技术只隔离应用程序的运行环境但容器之间可以共用同一个操作系统,这使它在继承了虚拟机优点的同时还摒弃了其缺点。而docker,则是容器技术的其中一种实现。docker是一个用Go语言实现的开源项目,可以让我们方便的创建和使用容器。docker使用客户端-服务器架构。客户端通过一些命令行与守护进程交互,守护进程管理Docker对象,如镜像、容器、网络和volume。

2023-02-24 17:41:08 75

原创 ahooks中的核心hook-useRequest(下)

useRequest的强大不止于此。它还支持如loading状态延时、请求防抖、节流、依赖刷新等功能。不过其实现方式都是通过内置的插件hook来进行实现的。这样做既可以保证核心代码的简洁,还能更方便的扩展出更高级的功能。并且还支持用户进行自定义插件。

2022-11-28 15:46:03 575

原创 ahooks中的核心hook-useRequest(上)

useRequest是一个异步数据管理的hooks,是ahooks Hooks库的核心hook,因为其通过插件式组织代码,大部分功能都通过插件的形式来实现,所以其核心代码行数较少,简单易懂,还可以支持我们自定义扩展功能。可以说,useRequest能处理React项目绝大多数的网络请求场景。让咱自己写可能写不出来,那就先从模仿开始,通过阅读useRequest的代码,从中学习大佬们的代码逻辑和思维处理。ahooks:文中代码基于3.7.2版本。

2022-11-25 17:42:32 885

原创 React-router升到v6了?

react-router v6悄摸摸的就升级了,要不是公司新开了个项目,还真不知道。。。记录一下react-router v6的基本使用。...

2022-10-13 16:52:12 501

原创 proxy代理与反射

背景上周分享了对象属性的两种类型,vue2通过相关定义实现了数据劫持,但是这个实现方式有一定的缺陷,比如他无法监听数组的变化,在比如他只能劫持对象的属性,因此实现的时候需要对每个对象的每个属性进行遍历。因此vue3的时候就换了实现方式 Proxy和Reflect。正文代理和反射是ES6增加的内容,它为我们提供了拦截并向基本操纵嵌入额外行为的能力。他可以用作目标对象的替身。看概念可能有些抽象,我们可以先实现一个简单的代理。定义一个简单的代理ES6给我们提供了Proxy构造函数让我们来创建代理。这个构

2022-04-11 17:55:08 839

原创 原来js对象属性有两种类型

这段时间再看js高级程序设计这本书,从中学到了很多东西,看了虽然不会提高编写能力啥的,但其中一些概念对我们理解js很有用。正好轮到我分享,跟大家分享一下,可能比较基础啊,知道的可以当巩固一下基础。原来,js中的对象的属性有两种类型:数据属性、访问器属性。这两个属性有不同的内部特征。数据属性我们常用的是数据属性:数据属性包含一个数据值的位置,他有4个描述其行为的特性:[[Configurable]]表示能否通过delete删除属性;默认为true[[Enumerable]]表示能否通过for-i

2022-03-29 15:03:10 1643

原创 前端常用的策略模式和发布订阅模式及应用

开头好久不见;我又来了,下周分享会到我了,提前准备好;绞尽脑汁不知道讲点啥,简单的怕被嫌弃,难的又讲不懂 ????该文的定义/术语等摘抄大量同类文章,掘金上相关文档都翻遍了,这摘点那摘点,我都忘了有哪些了,就不一一放链接了;代码技术栈: react + 少量的antd;什么是设计模式设计模式是一种可复用的解决方案,用于解决软件设计中遇到的常见问题;通俗的讲 设计模式是一套被反复使用,多数人知晓的,经过分类的,代码设计经验的总结。是在开发过程中,针对特殊问题/场景的更优的解决方案怎么用

2021-12-18 19:39:10 795

原创 策略模式和发布订阅模式的使用场景

开头好久不见;我又来了,下周分享会到我了,提前准备好;绞尽脑汁不知道讲点啥,简单的怕被嫌弃,难的又讲不懂 ????该文的定义/术语等摘抄大量同类文章,掘金上相关文档都翻遍了,这摘点那摘点,我都忘了有哪些了,就不一一放链接了;代码技术栈: react + 少少量的antd;什么是设计模式设计模式是一种可复用的解决方案,用于解决软件设计中遇到的常见问题;通俗的讲 设计模式是一套被反复使用,多数人知晓的,经过分类的,代码设计经验的总结。是在开发过程中,针对特殊问题/场景的更优的解决方案怎么用

2021-12-10 16:49:11 1123

原创 TS 函数重载

今天我们项目老大给我们分享了这样一个问题,记录一下。 在实现某个功能的时候, 要写一个时间转换的函数, 大概就是传递一个Moment对象进去, 然后给我返回一个格式为YYYY-MM-DD HH:mm:ss的字符串, 如果参数是undefined, 就不做处理,返回undefined; 然后写了这样一个函数:function handleDateFormat(date?: moment.Moment): string | undefined { if (!date) { return ; }

2021-07-08 15:16:26 10368

原创 js下载文件

下载文件时一般后端会告知你服务器静态目录的文件路径,直接window.location.href下载即可;如果后台服务器没有可供下载的静态资源,返回的是一个文件流,则使用下面的方式;通过URL.createObjectUrl()生成url,创建a标签,href指向这个url,download指向文件名,触发点击事件,进行下载;URL.createObjectUrl()URL.createObjectURL() 静态方法会创建一个 DOMString,其中包含一个表示参数中给出的对象的URL。这个 U

2021-06-17 16:51:17 427

原创 useCallback别乱用! 性能优化也是有成本的.

前言我们在得知useCallback能够优化性能后,恨不得每个函数都要拿useCallback包裹一下;不过我们需要明白: 错误或盲目的使用useCallback会导致性能不升反降;useCallback这种memoized函数也是需要成本的,比如增加了额外的deps变化判断,再比如可能会获得更多的内存分配…; 因此性能优化带来的好处可能抵消不了它的成本; 打个比方就像你开车去10公里以外的小镇 和 你开车去隔壁的邻居家);那么,什么情况下才可以使用useCallback去进行性能优化呢?在你觉得这

2021-05-19 18:59:22 2362 1

原创 react函数组件如何获取上一轮的props和state? 我用hooks这样来获取

hooks中通过useRef和useEffect获取上一轮的props和state看一下官方文档对useRef的描述useRef当ref对象内容发生变化时,是不会引发组件重新渲染的;再看一下useEffect的执行实际他会在浏览器完成布局与绘制之后,在一个延迟时间中被调用.结合useRef和useEffect,我们就能够获取到上一次的props和state;function PrevState() { const [count, setCount] = React.useState(0

2021-05-07 11:20:33 3733 1

原创 js轮播图。拆分来写,其实不难!

js轮播图其实不难html代码css代码重点来了,js原生代码html代码div代码<div id="box"> <img src="img/banner1.jpg" id="pic"> <ul id="list"> <li>1</li> <li>2</li> <li...

2019-08-21 16:22:43 748 1

空空如也

空空如也

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

TA关注的人

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