自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(163)
  • 问答 (1)
  • 收藏
  • 关注

原创 Image.network加载网络图片报错

3.save保存后重启模拟器即可生效。1.记住原本的ip地址和网关。

2024-04-18 11:19:21 161

原创 vscode的settings配置

【代码】vscode的settings配置。

2023-08-03 15:39:02 598

原创 js实现两个大数的相加

当两个数的值超出int类型最大值时相加就会产生精度丢失 但是如果是字符串是不会丢失精度的 所以可以从个位开始按位想加最后拼起来。

2023-07-16 10:56:42 672

原创 使用rollup打包ts+react缓存组件发布npm

新建一个项目目录比如叫root,下面新建一个rollup的配置文件: rollup.config.ts 因为rollup良好支持ts和esmodule 所以用ts配置文件。

2023-05-05 19:31:50 1376 1

原创 React is not defined解决

【代码】React is not defined解决。

2023-04-09 03:38:42 4157

原创 数组移除头部元素最好的方式splice(0,1) VS shift()

经常在移除数组第一个元素时会不由自主的纠结用哪个方法好 于是深入研究了一下这两种方式的原理。

2023-04-06 19:39:34 1494

原创 js手写PromiseA+规范和六个静态方法

通过Promise构造函数new了一个实例,传入一个函数 函数入参为成功和失败的两个函数resolve和reject分别传入Promise成功的值和失败的拒因(失败的字符串或error对象) 等resolve/reject执行后拿到结果,执行promise.then传入的成功/失败的回调 所以promise.catch===promise.then(null,(reason)=>{})现在then是异步执行的了 如果executor中resolve也是在异步上下文中执行的,那就出问题了。

2023-03-29 16:44:10 392

原创 webpack+nginx开启gzip压缩部署项目

上传后我们去到/etc/nginx/conf.d目录 这个目录是nginx的子配置文件夹 里面的.conf文件会被/etc/nginx/nginx.conf主配置文件include进http节点中 我们只需要在/etc/nginx/conf.d新建子目录文件然后编写server节点即可。2.http://www.xxx.com/web publicPath: '/web/' 尾巴多加个/是因为按需加载的js拼static会少拼一个/ 拼出来就是/webstatic/js/... 导致资源加载不出来。

2023-03-25 00:28:50 1456

原创 hombrew/ubantu安装mysql8及配置

因为mysql8的用户密码认证策略由mysql_native_password变成了caching_sha2_password导致nodejs的mysql模块启动报错 mysql还不支持mysql8的最新认证策略。上述三条命令执行完之后install mysql时如果出现git相关报错就将报错中的提示命令cv执行一遍再重新执行brew install mysql即可。alter user 'root'@’%’ identified with mysql_native_password by '你的密码';

2023-03-16 22:01:07 912

原创 react中使用socketio入门

总结: 客户端接收服务器的消息用socket.on 客户端给服务器推送消息用socket.emit。useEffect初始化建立连接 监听服务器推送的消息。客户端给服务器推送消息。

2023-03-01 21:02:34 802

原创 axios无感刷新token

【代码】axios无感刷新token。

2023-03-01 20:53:33 325

原创 前端react大文件切片上传

像视频这种大文件上传有很多缺点:1.后台可能设置了请求时长限制,太久会上传失败2.NGINX可能设置了文件上传的最大限制导致失败优点:1.文件太大分片上传能加快上传速度,提高用户体验2.能断点续传 如果上次上传失败或者中途离开的话下一次上传过的就不用重头开始了3.已经上传过的文件根据HASH查询直接秒传。

2023-03-01 20:28:35 1016

原创 浏览器缓存之强缓存和协商缓存

浏览器第一次请求一个资源的时候, 服务器返回的header中会加上Last-Modify,Last-modify是一个时间标识该资源的最后修改时间,例如Last-Modify: Thu,31 Dec 2037 23:59:59 GMT。这个时间代表着这个资源的失效时间,也就是说在xx年xx月xx日时间之前都是有效的,即命中缓存。与Last-Modify/If-Modify-Since (最后修改时间)不同的是,Etag/If-None-Match返回的是一个校验码(ETag: entity tag)。

2023-02-24 17:45:03 354

原创 移动端1像素边框问题

在移动端不同设备的dpr(物理像素比)不一样,导致1px的逻辑像素渲染出不同的粗细,比如dpr=3时1个逻辑像素点(1px)=3个物理像素点 这不是我们想要的 我们要在所有不同dpr的设备上显示1px的效果保持一致。

2023-02-17 20:30:22 229

原创 @craco/craco复写cra项目配置

cra内置了HtmlWebpackPlugin插件,直接用cra的getPlugin方法获取插件实例即可。cra默认打包后的产物文件夹名build,我们习惯性的叫dist。

2023-02-04 13:42:06 2999

原创 LeetCode 203 移除链表元素

这道题要删除全部符合val的节点,所以要在循环查找目标节点的同时移除节点。输入:head = [1,2,6,3,4,5,6], val = 6。输入:head = [7,7,7,7], val = 7。输入:head = [], val = 1。删除链表中等于给定值 val 的。输出:[1,2,3,4,5]

2023-01-27 14:44:21 83

原创 LeetCode 59 螺旋矩阵II js

如果n为奇数 我们还要处理中间值 n为偶数时遍历完就填充好了 奇数会漏掉中间的位置 需要手动填充。所有元素(n✖️n的正方形矩阵),且元素按顺时针顺序螺旋排列的。每遍历完一圈,下一圈遍历的起始位置就要+1,结束的边界位置也要-1。上行--->从左到右。右行--->从上到下。下行--->从右到左。左行--->从下到上。

2023-01-16 10:28:09 158

原创 前端基于位运算的权限控制设计

有了权限值之后,我们就可以用位运算来对权限值进行组合,对应位为1则为有权限,0则没有。

2023-01-12 21:34:39 419

原创 LeetCode 20 有效的括号 js

题目:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。以上都是符合题意的。

2023-01-12 18:00:46 135

原创 ts实现简易观察者模式

把每个布告板看做是一个观察者,它由update(更新)和display(展示)两个功能组成,update方法是必备的且统一叫update,由气象站主题状态改变时调用update更新,这个过程就是通知更新。气象站需要设计一个主题(Subject),它包含三个状态:气温,湿度和气压,要求主题的状态发生改变后要通知三个展示状态的布告板进行更新,要求布告板的类型是可扩展的,主题的状态是可扩展的。不同类型的布告板实现观察者接口定义各自的展示行为,必需实现update方法,然后往气象站添加观察者并通知更新。

2023-01-12 17:20:13 473

原创 js字符串按照中文排序

这个方法,它能根据不同语言进行排序,返回值为-1,0,1,配合sort方法即可解题。将其按照surname+name+address进行排序,知识点就是。

2023-01-12 15:49:07 453

原创 js斐波那契数列及递归栈溢出问题

诸如1,1,2,3,5,8,13....这样的序列,除了前两个固定是1(原因见典故)从第三个开始每个数等于前两个数的和也就是n = (n-1)+(n -2) (n>=3)

2023-01-12 15:42:05 233

原创 js数组升维和降维(拍平)

有一组包含type字段的数据,要根据相同type进行归类,比如以type为key数组为value存入map控制台输出: 有一个多维数组,要将里面的元素都拿出来放入一个一维数组里控制台输出:

2023-01-11 21:53:04 296

原创 手写call,apply,bind

本质就是把要执行的方法挂到将要指向的this上执行或者返回调用句柄。

2023-01-11 20:40:15 49

原创 LeetCode 977 有序数组的平方 js

示例 1: 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100],排序后,数组变为 [0,1,9,16,100]给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 2: 输入:nums = [-7,-3,2,3,11] 输出:[4,9,9,49,121]题意为一个升序数组进行平方后返回升序的新数组。

2023-01-11 17:16:13 72

原创 LeetCode 27 移除元素 js

题目:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。

2023-01-11 16:45:09 139

原创 递归遍历json对象所有节点值

思路就是获取对象所有的key然后判断值是否为object对象,如果是就递归查找,不是就存入哈希表。

2023-01-11 15:50:14 1128

原创 js使用小顶堆构建优先级队列

其实是对每个非叶子节点及其子树的一个递归下沉的过程,从下往上从右至左直到根节点,这样所有的叶子节点及其子树都是满足堆性质的二叉树。

2023-01-11 15:44:09 538

原创 LeetCode 704 二分查找 js

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。2.数组元素唯一(否则会出现多个答案的情况)

2023-01-10 16:59:05 104 2

原创 LeetCode 347 前k个高频元素 js

给定一个非空的整数数组,返回其中出现频率前 k 高的元素。父节点: n-1/2。左子节点: 2n+1。右子节点: 2n+2。

2023-01-10 16:24:36 291

原创 LeetCode 1 两数之和 js

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。使用哈希表将值做为key索引做为value存储起来,遍历寻找对应的target-x即可。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

2023-01-09 21:35:38 52

原创 LeetCode 209 长度最小的子数组(滑动窗口) js

给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。时间复杂度不是O(n2),虽然是for套while双从循环,但是滑动窗口移动时元素一进一出实际访问次数是2次,所以是2n,也就是O(n)输入:s = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。

2023-01-09 21:21:44 74

原创 react-router在非组件中使用history对象

然后我们就可以在其它js文件里导入我们自己创建的history对象即可使用。然后在将history对象注入Router组件。

2023-01-05 11:37:39 353

原创 扁平和树形结构的几种互转

又或者从树形结构转成扁平结构相互转换。

2022-12-17 21:32:42 364

原创 前端性能优化:dns-prefetch和preload预加载资源

link指定rel=dns-prefetch后浏览器会在空闲时间预加载好资源但是不会执行,等真正请求的时候才执行,此时已经资源已经加载好了直接执行.和rel=prefetch不一样的是,前者会提前解析好dns,等到请求资源时就会起到提速的作用。

2022-11-11 15:55:23 1271

原创 策略模式+科里化封装表单校验函数生成rules

因为表单的校验的逻辑是可以复用的,所以可以把校验的逻辑都抽取出来,然后用柯里化去调用,传入校验的策略名和校验的错误信息,返回validator给rules的自定义校验函数。

2022-11-03 18:49:27 101

原创 数据结构应用: 栈实现十进制转2~36进制

思路: 利用栈的先进后出特性实现余数的倒序组合,将每一次对2取模的结果压入栈,每一次的商做为下一次的除数,只要除数>0则继续除下去,最后从栈顶将余数一个个弹栈组合起来.十进制转二进制就是将十进制数对2进行取模运算,将每一次运算得到的余数从最后一次开始倒序组合即为这个十进制数的二进制数,详细可以百度辗转相除法。

2022-10-15 12:11:44 984

原创 redux的connect注入props到组件中

【代码】redux的connect注入props到组件中。

2022-08-30 18:23:34 248

原创 Vue.extend封装函数式调用弹窗组件

平时我们使用组件都是import xxx from 'xxx';然后components里面注册,最后template中使用,这样一套流程下来略麻烦,有没有一种方式能像ElementUI的弹窗组件一样代码调用呢?组件目录结构大概就是这样。

2022-08-28 16:53:06 771

原创 js闭包实现缓存函数

总结:利用闭包及纯函数的特性来缓存函数每次调用的结果提高性能,避免重复的计算,使用时要注意一定要是个纯函数!接收一个函数,用闭包将每次函数执行的结果缓存起来。例子2:求斐波那契数列优化。2️⃣缓存函数的应用场景。例子1:求1到n的和优化。1️⃣什么是缓存函数?...

2022-08-26 14:44:17 465

空空如也

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

TA关注的人

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