- 博客(27)
- 收藏
- 关注
原创 直面ES6中的Proxy和Reflect,发现很简单
ES6对于今天来说,已经不算是一个很新的概念。从2015年第一版ES6发版之后,每一年都有新的版本产生,新版本是该年正式版本的语言标准。因此,ES6 既是一个历史名词,也是一个泛指,含义是 5.1 版以后的 JavaScript 的下一代标准,涵盖了 ES2015、ES2016、ES2017 等等。还有一点就是虽然我们现在也会说ES7、ES8这种,但实际上这种说法是不严谨的,因为ES官方自2016年开始,就不再以ES+版本号这种命名了。
2024-04-23 19:41:22
758
原创 直面位运算
所谓位运算,就是对二进制位进行操作的运算方式。例如我们需要对「15」这个10进制整数进行位运算。位运算符首先会将15转换成32位的二进制串,然后再对二进制进行运算。运算后得出结果,会再次转换成标准的十进制数字,然后返回。例: 15 => '0000 0000 0000 0000 0000 0000 0000 1111'1、位运算会将数值会转成32位的二进制。对任何数进行位运算都会转换成一个固定长度为32位的由0和1组成的二进制串。
2024-03-28 17:14:58
563
原创 JavaScript中对象属性的顺序问题
getOwnPropertyNames:用于返回一个由指定对象的所有自身属性(包括不可枚举属性但不包括Symbol值作为名称的属性)的属性名(包括不可枚举属性)组成的数组。对于非数字键或稀疏的数字键(即存在大量未定义的索引),V8可能会采用其他的数据结构或策略来存储和迭代属性,以确保性能和内存使用的平衡。4、继承属性:当一个对象上有自己的属性,并且还继承一些属性的时候。这种机制使得数字属性的迭代变得非常高效,因为引擎可以直接利用数组的连续内存布局来按顺序访问每个元素,而无需进行复杂的查找或排序操作。
2024-03-20 18:02:48
758
原创 React中setState的异步与合并
只有在React18之前版本的class组件中的setTimeout中调用useState,setState是同步的,状态都不合并其他所有情况的setState都是异步,传入对象合并,传入函数不合并。
2024-03-01 18:36:03
1309
原创 promise.then如果返回新的promise会慢两拍的原因
这时候又到promiseA了,发现刚刚决断完的promise是成功的,需要执行成功方法,也就相当于执行一个then。then中返回一个promise实例,相当于多出一个promise实例,也会遵守交替执行(但和直接声明一个promise实例,结果有些差异的)决断这一步也是跟then同理,需要交替执行,因此这一步执行完就又改promiseB执行了【then2, resolve(4)】首先执行第1行,promise直接执行,然后遇到then,挂载到微任务队列;,发现后面没内容了,将后续内容挂载到微任务队列。
2024-02-28 16:54:18
552
2
原创 Ant Design4中Form.List和shouldUpdate一起使用的坑
这会带来的后果就是,假设一行只有一个固定字段,其他都是被关联的字段,当被关联字段超过了一行能容纳的个数的话会整体换行,导致第一行只留下一个字段,样式布局则会很奇怪。正常情况是相互并不干扰的,但是,如果我们使用formList的add或remove方法,则会触发formList的重新渲染,带来的后果则是,重置每一组的表单内容。但是如果在提交前再次回显表单项的时候,还是会回显之前残留的数据,时机太晚。如果采用第一种方案,代码会比较冗余,而且如果表单有多处联动,不太容易区分哪个是联动哪个的,因为是平铺下来的嘛。
2023-07-04 11:28:18
2597
原创 JavaScript原型&原型链到底是什么
JavaScript中的原型链到底是什么东西,其实最关键的就是几个属性。这篇文章带你来了解一下,原型链基础的知识
2022-07-21 18:14:57
327
1
原创 算法:扁平数据结构转tree(JavaScript版)
前两天看了一篇文章,提到了一道算法,扁平数据结构转成tree,然后尝试写了一下。// 源数据let arr = [ {id: 1, name: '部门1', pid: 0}, {id: 2, name: '部门2', pid: 1}, {id: 3, name: '部门3', pid: 1}, {id: 4, name: '部门4', pid: 3}, {id: 5, name: '部门5', pid: 4},]// 输出结果[ ...
2021-11-18 14:45:27
1711
原创 算法:反转链表(JavaScript版)
这道题在力扣(LeetCode)上有两道题不同难度的题,下面由易到难梳理一下逻辑。题一:简单难度。 众所周知,js是没有指针的概念的,但是有引用类型的object,跟指针类似,也是访问的内存地址,所以js里一般用object来模拟指针,为了方便理解,后文统一按指针来讲。这道题如果了解链表的概念的话,思路其实很简单:改变一下每一项的指针指向将第一项的指针指向null...
2021-11-13 13:42:28
1302
原创 算法:三数之和(JavaScript版)
该题目是来自力扣(LeetCode)上的一道算法题。题目描述:给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。方法一:暴力破解 首先拿到题目直观能想到的肯定是暴力破解,虽然感觉可能会超时,不过还是想先试一下(笨方法也是方法,笔者的水平还达不到一上来就能想到最优解的方法),说干就干。var threeSum =...
2021-11-10 18:28:57
1163
原创 Ant Design 日期选择框组件RangePicker约束开始结束时间
场景:只允许选择过去15天之内的时间,并且时间跨度最大为3天使用日期类组件的RangePicker形式,可以限制不可选择的时间和日期,可是棘手的地方在于时间跨度。 根据组件官网提供的示例,官网建议当 RangePicker 无法满足业务需求时,可以使用两个 DatePicker 实现类似的功能。 不过个人认为使用两个组件用户体验并不是太好,因此研究了一下如何使用RangePicker达到期望的效果。 使用官网提供的api,通过设置 d...
2021-11-08 20:20:53
6179
原创 算法:求矩形相交区域的面积
题目描述:给定两个矩形,求这两个矩形相交区域的面积,矩形是通过处于对角线的两个点A(x1,y1)和点B(x2,y2)定义的,点A和点B的关系是下图中的一种:输入:[-3,0],[3,4],[0,-1],[9,2]输出:6说明:分析:首先分析一波,图形相交有什么规律根据所能想象到的情况,如上图所示,不难发现有一个规律,就是两个矩形如果不相交,那么它俩的横纵坐标在坐标系上都是相邻的。图3:矩形A的上边框,矩形A的下边框,矩形B的上边框,矩形B的下边框图...
2021-11-08 17:38:53
5461
1
原创 JavaScript中类型转换Number()和前置 + 操作符之间的关系
js中string转换成number常用的方法有以下几种- 前置 + 操作符 // +"123" === 123- Number() // Number("123") === 123- parseInt() // parseInt("123") === 123- parseFloat() // parseFloat("123") === 123拿我来说,在日常开发过程中如果需要string转换成number的场景,多半是为了适配接口中返回的...
2021-02-26 12:18:09
352
原创 设计模式(简单理解)
说在前头。本文通过对js设计模式的学习,总结出自己一些基本看一遍就能明白的设计模式,基本上不管前端还是后端的设计模式都是这个原理,只是实现方法不一样罢了。还有一些目前没来得及总结,后面再补充。如果想看具体实现,请自行百度,本文只有What,没有How。单例模式:仅有一个实例,调用时若无实例则创建实例,若有实例则重复利用策略模式:将一个个方法通过一个公共方法组合起来,同时可以对这个组合里的方法进行增加和修改,使用时来调用公共方法,由公共方法来调用某个具体方法。代理模式:代理模式...
2020-12-03 19:57:37
152
原创 切图文件中@1px,@2px,@3px三个文件的区别
在平常开发过程中,下载切图会发现,有三个文件,分别是@1px,@2px,@3px,之前可能不明白为什么要有三个文件,要用哪个呢 经过查询资料发现,这里面就设计到dpr的问题了。 在说dpr之前,确保知道两个概念,设备像素和css像素。 设备像素:就是设备屏幕的物理像素,任何设备的物理像素都是固定的,是显示器(手机屏幕)上最小的物理显示单元。 css像素:又称为逻辑像素,也就是我们平常...
2020-11-14 11:48:40
1764
原创 redux入门基础一
初学redux,前前后后看了两三遍,可能是自己太心急了,官方文档很简单的逻辑一直搞不明白,现在静下心来,一行一行慢慢看,总算摸到一点门路,先记录一下防止再忘记了。 刚开始看redux,有三个关键词是要懂得——action、reducer、store。Action 个人认为action就是一个数据模板,如果想要传入一个参数,需要套上这层模板才可以。 redux是什么,是js的状态管理,既然想让人家来管理数据,就得按人家的规矩来。 ...
2020-07-12 22:51:45
129
原创 js事件委托(事件代理)机制
对于这个概念,看一次忘一次,这次把它记下来,看还会不会忘。在讲事件委托之前,先补充两个概念:事件冒泡与时间捕获。事件捕获 当一个事件触发后,从Window对象触发,不断经过下级节点,直到目标节点。在事件到达目标节点之前的过程就是捕获阶段。所有经过的节点,都会触发对应的事件 事件冒泡 当事件到达目标节点后,会沿着捕获阶段的路线原路返回。同样,所有经过的节点,都会触发对应的事件1、什么...
2019-08-13 22:32:09
364
转载 mac下php5.5升级php5.6
最近准备做一个项目,需要php5.6来做,因为电脑比较老,自带的是5.5,所以需要升级成5.6在网上找了一些资料,也挺简单的,打开终端,输入下面命令curl -s http://php-osx.liip.ch/install.sh | bash -s 5.6这个过程会有点长,下载完后应该如下所示:Executing post-install script /tmp/...
2019-05-27 21:38:48
460
原创 数据结构——多项式的创建(链式存储)
和顺序存储结构相比,利用链式存储结构更加灵活,更适合表示一般的多项式,合并过程的空间复杂度为O(1),所以较为常用。本篇文章先来讲解多项式的创建。 多项式的创建方法类似于链表的创建方法,区别在于多项式链表是一个有序表,每项的位置要经过比较才能确定。首先初始化一个空链表用来表示多项式,然后逐个输入各项,通过比较,找到第一个大于该输入项指数的项,将输入项插到此项的前面,这...
2019-03-18 16:54:32
10924
15
转载 Mac OS 如何通过 FTP 工具上传文件+阿里云服务器 centos7 ftp安装+设置阿里云服务器端口号
一、下载安装YummyFTP软件 前几天买了一个阿里云服务器,用的是centos7的系统,想上传本地文件到服务器时,在网上找了一些资料,我采用了第三方工具实现上传。具体步骤如下: 1、下载 YummyFTP 中文版软件,可以点击这里下载。 2、填写 FTP 的服务器IP、用户名和密码;协议选择标准(FTP),端口选择默认21(或更改为其您所...
2019-03-06 22:08:51
2940
原创 java算法-进制转换
学了这么久java,竟然才发现java的Integer类中已经把进制转换的方法写好了,直接用就行了,唉,失败。 一、十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推...
2019-02-15 17:00:19
598
原创 区间k大数查询
这道题是蓝桥网上的一道算法题,略微有些简单,但是可以练练手。 刚看到这道题的时候,知道是要用排序来做,但是想偷个懒,就想用个循环,每次记录下最大的,然后循环k次最后一次就是题目所要求的答案,然而真正写的时候发现比字节排序还麻烦,想了想,还是按部就班的来写吧。问题描述给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。输入格式第一行包含...
2019-01-14 20:09:10
642
原创 eclipse出现Problem Occurred对话框
近期新安装了一个eclipse,然后在使用过程中发现经常弹出下面这个对话框 上网查了一些资料,解决办法如下: 首先打开eclipse,然后选择Preferences这个选项(如果是汉化版的应该是首选项)。 如果是在windows的系统下,这个选项,应该是在菜单栏window下面的最后一个。 如果是mac系统,则如下图所示。打开后如下...
2018-10-10 21:19:46
23495
4
原创 laravel安装
Laravel 使用 Composer 管理依赖,所以,安装之前确保已经在机器上安装了 Composer,(如果尚未安装的话参考这个链接(https://docs.phpcomposer.com/00-intro.html)去安装吧)。ps:若不发生意外直接一路next到最后。安装过程中如果出现问题,大概是php配置问题或者php版本太高,配置文件不同。下载完成后,在cmd窗口输入composer...
2018-07-09 11:32:19
254
原创 windows环境下安装Apache+php+mysql教程
前段时间电脑拉闸了,什么东西都没有了,需要重新下载一些软件,这篇文章来说一下安装php的过程,翻了很多资料,帮助比较大的就是这两个链接了。 https://www.cnblogs.com/timmmmit/archive/2017/10/22/7709483.html。https://www.cnblogs.com/bytebull/p/7927542.html一,安装Apache进入Apache...
2018-07-08 17:49:19
1324
原创 如何安全卸载ubuntu
ubuntu很早以前就让我整坏了,一直想卸载掉它,可是一直不敢卸载,怕把Windows也给整坏,今天终于抽时间把它卸了。(安装方式就不在这里说了)在网上找了好多方法,一般现在网上的方法都比较老,对于新的方法也是找了好久。先说一下老方法,对于“老”一点的计算机也许有用,如果是刚买电脑没多久建议使用方法2。方法1:1、在网上下载一下MbrFix(链接:http://sysint.no/mbrfix/)...
2018-04-17 19:25:16
2650
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人