- 博客(179)
- 资源 (1)
- 收藏
- 关注
原创 React源码浅见1 fiber的了解
伴随着React 16的发布,一个全新的名词出现在了人们的眼前——Fiber,当我们复制这个单词到谷歌翻译上,可以看到它的中文解释:纤维,那么究竟什么是Fiber,而且React团队又为何大费周章地来重写React架构?这里在正式阅读源码前,总结两个问题:1、什么是Fiber?2、Fiber带来了哪些益处 OR 为什么要创造fiber?先来看一张GIF图,Stack Example 是不感觉不够丝滑流畅,甚至卡顿现象很明显,造成这种现象的原因是什么呢?那就要从React 15的架构来说了,React
2021-11-18 16:51:01 481 1
原创 使用nvm更换node版本
背景是这样的:今天在下载whistle的时候,无论使用哪种方式,都无法成功下载,表现为执行w2命令时,报bash: w2: command not found错误,经过leader指导,更换node版本解决。之前写过一篇博客简单快速更换node,现在觉得利用nvm可以更快地做到,当然我的笔记本时win10,具体步骤如下:1、在github上下载nvm,nvm下载地址,建议下载nvm-setup.zip,下载后直接点击运行exe文件即可。2、安装之后输入nvm查看是否安装成功,当然这里也会给出nvm操作
2021-07-01 20:09:08 1380
原创 解决报错ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)
之前连接数据库,都是直接运行下面的命令,然后输入密码即可,无论是笔记本是之前的状态是睡眠还是关机:mysql -h localhost -u root -p但是昨天笔记本更新了一下系统,一般都会遇到这种情况,提示重启并更新或者关机并更新,之后我再向之前那样连接数据库就出现了问题:这里疑似服务未启动,查看任务管理器,果然没有MySQL在运行,执行以下命令解决:mysqld --installnet start mysqlmysql -h localhost -u root -p...
2021-04-26 16:43:46 396
原创 css设置背景颜色透明度
使用 opacity属性,参数从0到1.0,完全透明是 0.0,完全不透明是 1.0,参数越小越透明,举个简单的例子:<!DOCTYPE html><html lang="en"><head> <title>Document</title></head><style> .test { background-color: red; opacity: 0.2; .
2021-03-31 09:37:50 1597
原创 简单快速更换node版本
我是win10的笔记本,最近接到的需求是依赖于低版本的node,但是我的node版本太高,需要卸载后重新安装低版本,网上搜了很多教程,不过大多数对我帮助不大,不过最后还是成功了,直接进入正题:点击左下角开始栏,输入node并查找(这应该是windows比较友好的一点了),右键查看文件位置,会看到:然后点击uninstall node.js卸载node;这种方式卸载还是比较干净的,不同担心残留问题;进入node官网,node下载,划到底部,选择以往版本下载:进入之后,可以看到之前所有的node版
2021-03-30 09:41:19 1832
原创 解决H5中同页面跳转数据不更新
前段时间接到这么一个需求,大体实现为同页面进行跳转:即相同的页面结构,但是所请求的数据不同,所以渲染出来的具体页面也不同,在RN端完成之后,进行RN转H5,测试时发现触发跳转事件之后,虽然url已经改变了,但是页面数据也没有变,抓包查看也没有发现新的请求,于是请教组里的大佬后,先通过对reder进行打断点的方式排查问题,发现页面并没有进行重新渲染,于是进行强制页面刷新,伪代码如下:componentWillReceiveProps(nextProps) { if (nextProps.pr
2021-03-02 09:09:13 759
原创 VScode如何在终端运行js文件
之前一直使用webstorm,运行单调的js文件shift+F10即可,后来因为发现做项目还是VScode更好用,于是又转用了VScode,今天在学习TS的时候发现自己居然不会运行js文件,查找了一下成功运行,在这里做下记录:查找安装Code Runner插件,安装完毕之后会在右上角出现三角形符号的按钮,打开指定的js文件,点击该按钮即可运行,并在终端输出结果...
2021-02-25 17:07:12 6254
原创 简单上手TypeScript
新建文件夹,使用VScode打开,安装TypeScript,执行以下命令:npm install -g typescript,当然不想通过npm来下载,也可以去直接下载安装点击下载;构建第一个TypeScript文件,新建文件greeter.ts:class Student { fullName: string; constructor(public firstName, public middleInitial, public lastName) { this.fu.
2021-02-25 09:06:23 89
原创 神奇的&&与||运算符
学习RN的过程中发现了一段很有意思的代码: <Text style={{padding: 10, fontSize: 42}}> {text.split(' ').map((word) => word && '????').join(' ')} </Text>大意是将text中的元素全部转为????,但是其中的&&转换方式还是第一次见,于是自己尝试着试验一下,发现还是之前接触到的一个零碎知识点,在红宝书也有过说明,简单来引入一
2021-02-24 09:04:03 344
原创 RN布局实现楼层分割线
思路:实现父容器与子容器,子容器指定边设置颜色,父元素贴顶(底)包含子容器。css代码如下:fater_container_recommend: { paddingHorizontal: pt(15), backgroundColor: '#fff', marginHorizontal: pt(8), borderBottomRightRadius: pt(12), borderBottomLeftRadius: pt(12
2021-02-01 17:36:01 652
原创 如何在Html中显示‘<‘和‘>‘
html超文本标记语言,由于底层的编译器依照尖括号(< >)来识别标签,因此直接在html中显示尖括号可能会报错的,解决方式是使用“&”开头,“;”结尾,中间加上字符对应的编码拼接的字符串即可: <!-- 显示为小于号(<) --> <div><</div> <!-- 显示为大于号(>) --> <div>></div>...
2020-12-31 16:41:52 6224
原创 以时间戳的形式进行加一天操作
最近接到一个需求,在需求里面有个小任务是获取当天日期和次日日期+1两个时间点,当天日期可以从后端接口获取,时间戳格式,但是次日日期是需要前端来计算的,要求也是时间戳格式返回后端。初始的思路是将时间戳转换为Date格式,然后通过getDate加一,再转换为时间戳格式,但这种方式过于繁琐。后来找到一种方法,将当天时间戳+86400,注意要是Number格式,因为经过一天的时间,时间戳的变化是606024,这样就可以简单快捷地得到次日的时间戳。同样的思路计算下一个月,下一年的时间戳也是可以的。...
2020-12-31 16:01:35 6903
原创 windows系统笔记本连接外部显示器进行分屏
之前一直没有用过外部显示器,都是在自己笔记本或者实验室台式机上进行操作,实习后发现大家人手一台显示器,最近强哥也给我安排了一台,用起来还是很舒服的, 想象一下,一边显示器上是效果展示,一边的笔记本屏幕上是代码编辑,这样的工作效率是很高的。记录下操作步骤:首先,需要一台外部显示器,连接好电源和笔记本,此时应该是默认的屏幕同步,笔记本上win+p选择“仅电脑屏幕”,只会在笔记本上显示;选择“仅第二屏幕”,只会在外部显示器上显示;选择“复制”,笔记本和外部显示器会同步内容;选择“扩展”,就可以实现分屏操作,
2020-12-16 09:51:33 17372 3
原创 使用whistle进行API代理
在项目中,前后端通过API进行数据传输,这样就造成了很多很多需求很依赖后端提供的API,如果API数据提供得不及时,对于前端同学来说,无疑是非常难受的,那么如果暂时脱离后端进行本地模拟开发呢?第一种方法是构造伪数据,比如前端使用get请求某项数据,必然会申请一个空间来存放请求到的数据,来看这样一个例子:c_get('请求数据的functionId', data).then(res => {let Arr = res.body ? res.body : []; this.setState(
2020-11-30 10:16:05 1968
原创 关于手机代理的走坑记录
开始的时候使用手机连接上笔记本热点,运行项目没有问题,但是因为笔记本是公司配置的,热点名称和密码很麻烦,于是我进行了下个性化修改,完成之后再次使用手机连接,结果无法项目运行,如下报错:很是崩溃,即使重启也没有解决问题,后来博哥给我指出,我的手机未设置代理,于是我设置了一下,因为最开始的时候我是已经设置好了,但是并不知道修改热点账号和密码会导致代理恢复默认,设置如下图所示:需要注意的是,服务器主机名和端口要和自己的笔记本设置一致,最后重启项目,运行成功。...
2020-11-19 10:54:16 262
原创 简单快速安装并使用whistle
首先确保本地已安装node.js,可以通过win+r或者git打命令窗口,输入命令node -v,查看node.js版本。输入命令npm install whistle,下载whistle。下载成功之后,输入命令行w2 start -p 8899启动whistle,一般来说whistle的默认端口是8899,如果端口被占用,可以在启动时通过 -p 来指定新的端口。如果输入端口号不存在或者已被占用,whistle会开启默认的8899端口。启动成功之后,可以根据提示进入展现的三个网..
2020-11-18 17:09:22 978
原创 笔记本按键操作
对于笔记本上自带的一些按键,是不同于外部键盘的,例如F1、F2、F3,如果直接按的话会进行静音、减小声音、放大声音的操作,如果一些快捷键需要到F系列的按键,使用笔记本自带的键盘肯定是无法达到想要的结果,那么就需要借助Fn来实现,例如webstorm上运行单个JS文件,常规快捷键是Ctrl+F10,那么在笔记本自带的键盘上则是Ctrl+Fn+F10。...
2020-11-16 09:12:38 260
原创 祝程序员们节日快乐
var date = new Date();var yearThis = date.getFullYear();var dateProgramer = Math.pow(2, 10);var result = yearThis - dateProgramer;console.log(result);节日快乐啊,为构建信息化时代而奋斗的程序员们;祝各位同行BUG越少,头发越多,早日实现财富自由。...
2020-10-24 21:45:56 266
原创 扩展运算符转Map结构为数组形式
前面提过,只要是具有遍历器的类数组对象,都可以利用扩展运算符转为真正的数组,同样Map也可以,来看这样一个例子:let map = new Map([ [1, 'one'], [2, 'two'], [3, 'three'],]);let arr = [...map.keys()];let arr1 = [...map.values()];console.log(arr);//[ 1, 2, 3 ]console.log(arr1);//[ 'one', 'two', '
2020-10-23 22:05:26 189
原创 利用扩展运算符转数组
阮一峰的ES6指出任何定义了遍历器接口的对象,都可以用扩展运算符转为真正的数组。以遍历到DOM节点为例:let nodeList = document.querySelectorAll('div');let array = [...nodeList];但是对于没有部署遍历器Iterator的对象,扩展运算符则束手无策:let arrayLike = { '0': 'a', '1': 'b', '2': 'c', length: 3};let arr = [..
2020-10-22 22:26:08 525
原创 第2章 黑盒测试在线测试
一、单项选择题当被测程序开发采用强类型语言,界面设计大多采用选择类型控件,且测试进度较为紧张的情况下,为了提高测试效率并且保证测试效果,可选择 A 等价类划分方法。D 强健壮B 弱健壮C 强一般A 弱一般在有限的时间和资源条件下,穷举测试是无法完成的任务。在黑盒测试技术中,可以减少测试用例绝对数量和提高测试效率的最有效方法是 A 。A 等价类划分D 判定表驱动C 因果图分析B 边界值分析下图所示的界面中,"联系方式"字段要求"Email地址"和"手机号码"
2020-10-21 22:20:05 3069
原创 手写一发深拷贝
var deepCopy = function (obj) { if(typeof obj !== 'objedct'){ return ; } var newObj = (obj instanceof Array) ? {} : []; for(var key in obj){ if(obj.hasOwnProperty(key)){ newObj[key] = (obj[key] instanceof Object)
2020-10-19 21:54:29 85
原创 JS中两种定时器
JS中的的定时器setTimeout()在指定的毫秒后调用函数或者计算表达式传入三个参数code 必需 要调用的函数后要执行的JS代码串millisec 必需 在执行代码前需等待的毫秒数lang 可选一般不写, 选择脚本语言类型setInterval()按照指定周期来调用函数或者计算表达式。方法会不停地调用函数,直到clearInterval调用或者窗口关闭传入三个参数code 必需 要调用的函数或者执行的代码串millisec 必需 周期性执行或者调用code之间的时间间隔lang 可
2020-10-18 22:11:10 595
原创 React中两种类组件的最大区别
传送门:React中创建简单的类最大的区别:class关键字创建的组件是有状态组件,而function创建的组件时无状态组件
2020-10-17 22:07:51 176
原创 viscode折叠语法
用过viscode和webstorm的同学们可能知道,viscode并不像webstorm那样可以进行代码片段的折叠,但是我们可以为它设置一下://#region//折叠代码内容//#endregion这样就可以方便地进行代码折叠了。
2020-10-16 21:39:05 363
原创 采用闭包的思想手写一发防抖和节流
防抖function f(fn, delay){ let timer; return function () { let context = this; let args = arguments; clearTimeout(timer); timer = setTimeout(function () { fn.apply(context, args); } ,delay); }
2020-10-15 21:42:00 175
原创 简述css盒模型
css盒模型就是用来装页面上的元素的矩形区域。CSS中的盒子模型包括标准的W3C盒子模型和IE盒子模型(别称 怪异盒模型)。弹性盒模型是CSS3新增的属性,不要和这两个搞混了。总体来说,盒模型如下如所示,别骂了别骂了,绘画能力有限:这两种盒子模型最主要的区别就是width的包含范围:在标准的盒子模型中,width指content部分的宽度;在IE盒子模型中,width表示content+padding+border这三个部分的宽度。当然height也有所区别,在标准的盒子模型中,height指con
2020-10-14 22:21:11 580
原创 HTML元素的分类
关于HTML元素的分类可以说是前端里面一个比较重要的知识点了,面试中,我至少四次被问到了这部分的内容,这里做一下简单的总结。第一种分类是分为块级元素和行内元素:块级元素常见的块级元素:<h1><h6> <p> <div> <ul> <ol> <li>特点:(1)块级元素会独占一行(2)宽度、行高、外边距和内边距都可以单独设置(3)宽度默认是容器的100%(4)可以容纳内联元素和其他的块级元素行内元素
2020-10-13 21:55:33 207
原创 JS求树的深度
学无止境const root = { val: 4, left: { val: 2, left: { val: 1 }, right: { val: 3 } }, right: { val: 5, right: { val: 6, righ
2020-10-12 21:30:53 930
原创 笔试合集8
这真的是最最最后一场笔试了。。。。。最后AC的感觉真的很有成就感话不多说,上题:给定一个数组,求出该数组所有奇数长度的子数组的总和,大体就是这样,JS实现代码如下:arr = '[1,4,2,5,3]';arr = arr.substring(1, arr.length-1);arr = arr.split(',');var array = [];for(var i=0;i<arr.length;i++){ array[i] = Number(arr[i]);}var sum
2020-10-11 20:32:50 91
原创 JS函数的几种声明方式
函数声明function sum(a, b) { return a + b;}console.log(sum(1, 2));函数表达式var sum = function (a, b) { return a + b;};console.log(sum(1, 2));构造函数var sum = new Function("a", "b", "return a+b");console.log(sum(1, 2));需要注意的是,第三种构造函数的写法是不常用的,.
2020-10-10 22:06:27 1625
原创 使用viscode编写前端代码的快捷方式
由于之前一直偏向于webstorm,最近一段时间才逐渐上手使用vscode,所以并不知道一些提高编码效率的方法,在这里进行总结一下:初始化,新建一个html文件,敲出一个感叹号(!)然后回车,编辑器就会自动为该文件补全代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=devic
2020-10-09 22:13:15 1098
原创 简单的代码生成程序
通过三地址代码序列生成计算机的目标代码,在生成算法中,对寄存器的使用顺序为:寄存器中存有 > 空寄存器 > 内存中存有 > 以后不再使用 > 最远距离使用Input单组输入,给定输出的三地址代码的个数和寄存器的个数.所有的变量为大写字母,寄存器的数量不超过9Output参照示例格式输出,不需要将最后的寄存器中的值写回内存不再使用变量不用写回内存Sample Input4 2T:=A-BU:=A-CV:=T+UW:=V+USample OutputLD R0
2020-10-08 22:13:22 361
原创 DAG优化
大家都学过了代码优化,其中有一个DAG优化,这次我们就练习这个操作。Input输入第一行为一个整数n(n < 100),表示该组输入的表达式的个数之后n行为表达式,每个变量为一个字母,表达式仅包括二元运算 + - * /例如:A=B+COutput通过构造DAG图,进行代码优化,只需要保留AB,删除无用变量,删除变量时,尽量保留最早出现的变量。PS:保证AB的值不同Sample Input3A=B+CB=B+BA=C+CSample OutputB=B+BA=C+C
2020-10-07 21:51:18 704
原创 翻译布尔表达式
大家都学过了布尔表达式的翻译,其中有一个拉链-回填技术,这次我们就练习这个技术。Input输入为一行字符串,例如: a < b or c < d and e < f每个符号都用空格间隔。其中逻辑运算符包含 and 和 or , 关系运算符包含 < 、> 、<= 、 >= 、== 、 != 。Output假链跳到0,真链跳到1,表达式序号从100开始排。Sample Inputa < b or c < d and e < fSam
2020-10-06 22:24:33 219
原创 表达式语法分析——递归子程序法
递归子程序法是一种确定的自顶向下语法分析方法,要求文法是LL(1)文法。它的实现思想是对应文法中每个非终结符编写一个递归过程,每个过程的功能是识别由该非终结符推出的串,当某非终结符的产生式有多个候选式时能够按LL(1)形式唯一地确定选择某个候选式进行推导。请根据下面的表达式LL(1)文法,构造递归子程序,完成对表达式的语法分析。表达式文法如下:E→TGG→+TG | εT→FSS→*FS | εF→(E) | i对于给定的输入串(长度不超过50个符号),请输出分析过程中用到的所有产生
2020-10-05 20:54:38 747
原创 小C语言--词法分析程序
本栏目声明:为阿宁和学弟们以及正在学习编译原理的同学们总结的编译原理上机题,同时也攒一波人品。PS:本栏目代码更新于去年这个时间段,如果进行数据更新导致代码未能AC,还请见谅。小C语言文法<程序>→<main关键字>(){<声明序列><语句序列>}<声明序列>→<声明序列><声明语句>|<声明语句>|<空><声明语句>→<标识符表>;<标识符表
2020-10-05 20:52:30 175
原创 第1章 软件测试概述在线测试
回报社会?攒人品?都有吧单选1、经验表明,在程序设计中,某模块与其他模块相比,若该模块已发现并改正的错误数目较多,则该模块中残留的错误与其他模块相比,通常应该 B 。B 较多A 较少D 不确定C 相近2、以下对测试需求的描述中,错误的是 D 。A 测试需求项必须有可观测的输出结果B 测试需求必须指明正常和异常的输入条件D 为了确保测试的顺利进行,测试需求一经团队评审,在测试期间不允许发生任何变更C 测试需求描述为一般规则,不涉及具体的测试数据3、以下测试工具中,使用
2020-10-04 21:52:44 2948
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人