自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

沐唐风宋雨

看庭前花开花落,望天上云卷云舒

  • 博客(120)
  • 资源 (3)

原创 浅析快速排序和归并排序

快速排序伪代码框架quickSort(array, low, high) { if(low >= high) return; let mid = partition(array, low, high); // 切分数组,并返回分界点mid quickSort(array, low, mid - 1); // 递归左区间 quickSort(array, mid + 1, high); // 递归右区间}快排和二叉树的前序遍历框架很类似traverse(root){ root.

2020-09-15 11:13:45 8

原创 实现二叉树前序、中序、后序遍历及广度优先遍历、层序遍历

构造一个树的数据结构tree,如下:const tree = { val: "F", left: { val: "B", left: { val: "A", left: null }, right: { val: "D", left: { val: "C" }, right: { val: "E" } } }, right: { .

2020-08-20 15:28:56 79

原创 JSON.stringify的认知历程

初入前端,认识到JSON.stringify可以序列化对象为一个字符串,在开发中提供了许多便利。JSON.stringify({ x: 5, y: 6 });//"{"x":5,"y":6}"然后遇到一个需求是序列化字符串,且带有缩进格式化的方式展示在编辑器中。才认识到,原来这个方法还可以传递3个参数。第3个参数用于指定缩进用的空白字符串,用于美化输出(pretty-print)。JSON.stringify({ x: 5, y: 6, z: {a: 1} }, null, 2);/*"{

2020-08-29 10:22:34 20

原创 N叉树的深度优先遍历、广度优先遍历、层序遍历

接口级联数据到组件数据源的映射接口返回的级联值经常与组件需要的label,value需要做映射转换,递归必不可少const originList = [{ code: '2973', name: '陕西', enums: [{ code: '2974', name: '西安', enums: [ { code: '2975', name: '西安市' }, { code: '2976'

2020-08-20 18:28:08 40

原创 表单组件数据到接口参数的数据结构转换

实际开发过程中,表单数据的数据结构与接口参数需要的数据结构往往存在些许差异,此时就需要一对一进行转化,那么如何做才显得优雅呢?举个例子:{ "select": "jack", "startDate": "2020-07-31T16:00:00.000Z", "endDate": "2020-07-31T16:00:00.000Z", "select": [ "a", "b" ],}{ "select": "jack", "startDate": "2020-07-31 16:

2020-08-06 16:16:38 46

原创 利用css的伪元素before、after实现蒸锅

阅读《CSS3艺术》练习<figure class="steamer"> <div class='lid'></div> <div class='pot'></div></figure>/*设置全局样式*/body { display: flex; align-item: center; justify-content: center; background-color: pink; height

2020-08-02 16:34:04 34

原创 Less基本用法

变量@nice-blue: #5b83ad;@light-blue: @nice-blue + #111;#header { background-color: @nice-blue; color: @light-blue;}结果为:#header { background-color: #5b83ad; color: #6c94be;}Mixins使用类选择器,ID选择器混入.a, #b { color: red;}.mixin-class { .a(

2020-07-28 16:54:47 26

原创 无限滚动组件

借助IntersectionObserver实现LoadMore组件,无限下拉加载数据。边界控制没有处理LoadMore.tsx:import React, { useEffect, useRef } from "react";import "./index.css";/**.load-more { height: 100px; background: #eee; text-align: center; line-height: 100px;}**/function Lo

2020-07-27 18:53:41 27

原创 浏览器唤起钉钉PC端解决办法

需求要实现浏览器页面的分享功能,需点击分享打开钉钉PC端的功能。查看官方文档,只提供了打开对应某个人的协议方式:<a href="dingtalk://dingtalkclient/action/sendmsg?dingtalk_id={id}"></a>,同时需要制定钉钉号。如果只是单纯唤起客户端,则可以考虑如下协议,尝试有效:dingtalk://dingtalkclient/page/link或者dingtalk://dingtalkclient/action

2020-07-14 18:41:07 579

原创 npm全局安装的包到了哪里

npm全局安装的包在哪个目录,可以通过如下命令查看npm root -g在macOS或Linux上,此位置可能是/usr/local/lib/node_modules。 在Windows上,可能是 C:\Users\YOU\AppData\Roaming\npm\node_modules。参阅:npm 将软件包安装到哪里...

2020-07-13 18:21:33 154

原创 推荐两个git相关的VSCode插件

git-commit-plugin

2020-07-08 18:50:07 79

原创 Promise.all与Progress结合实现请求进度监听

要批量发起100,1000或者更多个请求,可以借助于Promise.all,但是如何知道请求过程中接口的调用进度情况呢?/** * 模拟异步请求 */function timeout(time){ return new Promise((resolve)=>{ setTimeout(()=>{ resolve(time); },time); })}function allWithProgress(requests, callback){ le

2020-07-05 16:42:35 199

原创 浅析Promise原理

Promise原型对象在浏览器控制台输入如下代码,可以看到Promise原型对象信息。var p = new Promise(()=>{});console.log(p)Promise原型上有catch、finally、then等方法。同时Promise内部维护了两个属性值status和valuePromise构造方法再看Promise的构造方法,如下图构造函数有all、allSettled、finally、race、reject、resolve等方法。简单实现构造函数实现总结

2020-07-01 11:07:40 62

原创 理解JavaScript中的作用域

执行环境及作用域执行环境定义了变量和函数有权访问的其他数据,决定了它们各自的行为。执行环境,或者叫执行上下文,每个执行环境都有一个与之关联的是 变量对象。存储了所有变量和函数。执行环境分为:全局执行环境、函数执行环境、eval执行环境。在Web浏览器中,全局执行环境被认为是window对象。每个函数都有自己的指定环境。当执行流进入一个函数,函数的环境会被推入一个环境栈(调用栈)调用栈 中存放的就是执行上下文(变量对象)。作用域:就是变量和函数的可访问范围。作用域分为:全局作用域、函数作用域

2020-05-27 19:25:05 45

原创 求两个数组的差异

案例一组CheckBox,每次选中或者取消一个,在onChange中获取到的都是数组值,如何确定变化的那个值呢?体验地址题目如上案例,换一种说法。求解任意两个数组的存在差异的值。注意,有可能第一个数组比第二个数组的值多。也有可能第二个数组的值更多。思路一根据每个值在数组中首次出现和最后一次出现的索引值是否相等进行判断。let arr0 = [1,2,4,5], arr1 = [1,2,3,4,5];let diff = arr0.concat(arr1).filter((value, ind

2020-05-22 16:32:27 247

原创 解决React.forwardRef问题

在使用函数组件时,报错:Function components cannot be given refs. Attempts to access this ref will fail. Did you mean to use React.forwardRef()解决办法:将函数组件通过用forwradRef包装。//子组件function FancyButton(props, ref) ( return <button>Test</button>;);export

2020-05-21 19:14:01 657

原创 formily中基础正则表达式

阅读formily源码时,遇到了平常开发过程中会用到的一些正则表达式,这里做个记录。export default { email: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, ipv6: /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\

2020-05-09 17:26:36 179

原创 ES6中import和export

exportexport function funcA() { console.log('funcA');}function funcB() { console.log('funcB');}//使用大括号指定要输出的一组变量export { funcB };//as关键字将输出的变量重命名export { funcB as func2};export default f...

2020-03-16 16:41:34 47

原创 从ES6代码编译看原型链继承

TS代码class Point { x: number; y: number; constructor(x: number, y: number) { this.x = x; this.y = y; }}class Point3D extends Point { z: number; constructor(x:number, y:number, z...

2020-03-14 18:28:47 229

原创 《JavaScript高级程序设计》读书笔记 之 执行环境及作用域

执行环境定义了变量和函数有权访问的其他数据,决定了它们各自的行为。执行环境,或者叫执行上下文,每个执行环境都有一个与之关联的是 **变量对象。**存储了所有变量和函数。分为:全局执行上下文、函数执行上下文、eval执行上下文。在Web浏览器中,全局执行环境被认为是window对象。每个函数都有自己的指定环境。当执行流进入一个函数,函数的环境会被推入一个环境栈(调用栈)调用栈 中存放的就是执...

2020-03-14 16:07:32 45

原创 Git常用命令

命令说明范例clone从远程仓库克隆git clone git@github.com:xxx.gitinit创建空仓库或重新初始化现有仓库git initadd添加文件到暂存区git add <file>commit保存暂存区的变更记录到工作区git commit -m "日志说明"status查看文件变更状态git s...

2020-02-11 18:44:05 51

原创 JavaScript 枚举

enum Color { RED,GREEN,BLUE}var Color;(function (Color) { Color[Color["RED"] = 0] = "RED"; Color[Color["GREEN"] = 1] = "GREEN"; Color[Color["BLUE"] = 2] = "BLUE";})(Color || (Color...

2019-12-21 10:14:50 143

原创 webpack-bundle-analyzer 使用

安装# NPM npm install --save-dev webpack-bundle-analyzer# Yarn yarn add -D webpack-bundle-analyzer配置const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;const pat...

2019-08-21 23:24:28 1140

原创 530 Please login with USER and PASS.

安装npm install --save hexo-deployer-ftpsync配置deploy: type: ftpsync host: xx.xx.xx.xx user: bxu123123 pass: @xx11123 remote: /htdocs/ port: 21 connections: 1 verbose: false部署hexo ...

2019-07-24 22:49:59 6815

原创 我对this的理解(JavaScript)

注意:this是在函数被调用的时候发生的绑定,它指向什么完全取决于在哪里被调用。在严格和非严格模式下,this的指向有所不同function f1() { return this;}// In a browser:f1() === window; // true // In Node:f1() === global; // true//严格模式如下:function...

2019-06-22 17:47:44 62

原创 Dawn构建的项目中使用React.lazy报错

使用【Dawn】构建工具开发项目过程中,使用到了React.lazy来进行代码分隔处理。遇到如下报错信息:Element type is invalid. Received a promise that resolves to: undefined. Lazy element type must resolve to a class or function.大概意思是:元素类型无效。 接收...

2019-06-04 18:15:22 876 1

原创 ES6 Class 与 ES5 构造函数对比

ClassUser类被编译以后转化为构造函数。被编译后生成了_classCallCheck,_instanceof方法。class User{}const user = new User();console.log(user); // {}//↑↑↑↑↑↑↑↑↑↑↑↑↑ ES6 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑//↓↓↓↓↓↓↓↓↓↓↓↓↓ ES5 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓"us...

2019-05-30 15:51:50 229

原创 JS大坑之17位以后的Number类型数值精度丢失问题

接口返回数据中携带有id字段,如果数值过大,在经过JSON.parse()解析后发现精度丢失。代码如下:var text = '{"id":18014398509481985}';var obj = JSON.parse(text);console.log(obj);//结果: {id: 18014398509481984}解决办法:后端将ID处理成字符串的形式前端通过正则,处...

2019-05-29 14:17:05 3305

原创 响应式编程(学习小结)

定义维基百科:响应式编程或反应式编程(英语:Reactive programming)是一种面向数据流和变化传播的编程范式。对于响应式编程,不同语言都有相应的扩展库。例如RxJava、RxAndroid、RxJS等等。官网:An API for asynchronous programming with observable streams用于使用可观察流进行异步编程的API...

2019-05-27 10:01:06 149

原创 关于版本号讨论

通常情况下,都会采用语义版本号管理方式。如下:语义版本号分为X.Y.Z三位,分别代表主版本号、次版本号和补丁版本号。当代码变更时,版本号按以下原则更新。如果只是修复bug,需要更新Z位。如果是新增了功能,但是向下兼容,需要更新Y位。如果有大变动,向下不兼容,需要更新X位。在目前的开发中,存在着多套环境。对于前端,存在日常和线上两个环境。后端,则存在日常、预发和线上环境。...

2019-01-28 10:59:07 155

原创 抽奖程序(React)

介绍基于Ant Design组件库、Dva开发框架实现的一款抽奖App。动画使用了react-particles-js安装说明cnpm i 或者 npm i (建议前者)npm run startnpm run build使用说明点击主页面最左侧,弹出抽屉层,导入数据,或者修改路径为:http://localhost:8000/#/data返回主页面,点击Enter开始执行...

2019-01-20 12:16:47 696

原创 迟到的2018年终总结

2017年年底,Android需求骤然停止。那段时间,我学习ReactNative,学习Python,购买了Android进阶的书籍,充实自己。我感觉我在Android领域到达了一个瓶颈,突破不了自己。【只是自我感觉】iOS小伙伴已然离职,我还是迷茫手足无措。技术更新迭代之快,无法想象。2017年年底,抱着学习的心态从Android转做前端React。我学习JS,学习相关技术栈,看不同的...

2019-01-03 15:44:50 665

原创 解决Ant Design的样式和CSSModules冲突问题

项目中样式采用CSS Modules的写法,构建之后会被重命名。如果项目中引入了Ant Design的样式,则会导致样式加载不到问题。解决方式有两种:打包后在html中重新引入antd.css文件。但是无法做到按需加载,且打包的css文件中存在多余的内容。项目使用Dawn构建,配置webpack.config.js。代码如下module.exports = function (webp...

2019-01-03 14:46:18 4182

原创 Tapable.plugin is deprecated. Use new API on `.hooks` instead

安装extract-text-webpack-plugin后,使用webpack构建的时候出现如下错误:Tapable.plugin is deprecated. Use new API on `.hooks` instead查阅Extract Text Plugin文档,其中已然说明:Since webpack v4 the extract-text-webpack-plugin s...

2018-12-02 20:56:53 415

原创 roadhog代理无效问题解决

使用Dva初始化项目后,在roadhogrc.mock.js文件中默认配置代理如下:export default { "proxy": { "/api": { "target": "http://jsonplaceholder.typicode.com/", &am

2018-12-02 13:34:14 1881 1

原创 排序算法学习

重拾算法:算法效率分析(一)(空间复杂度和时间复杂度)详解算法的各种复杂度的差别有多大(带图)算法复杂度选择排序简言之:从无序的列表中选择最小(最大)元素依次放到有序列表末尾。每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导...

2018-11-23 14:50:34 330

原创 技术知识整理

MVC, MVP, MVVM不同的开发模式适用不同的场景,在复杂的业务场景下,Activity作为Controller层,显得非常臃肿,代码量大,逻辑复杂。同时View与Model也存在直接的交互关系。随之MVP诞生,Presenter层彻底将View与Model层隔离开来。当然需要编写大量接口来实现解耦。代码逻辑清晰,但代码量也增加不少。MVVM可以算是MVP的升级版,其中的VM是View...

2018-10-30 21:29:16 103

原创 Context与Store结合

借助于context的跨级通信能力,可以将store管理数据的模式应用于每个组件当中。即将store通过context传递到子组件,一方面子组件可以通过store.dispatch()触发store中数据更新,另一方面子组件可以通过store.getState()方法获取最终的更新状态,刷新UI。Redux解读React之Context1.目录结构制作一个更换主题色的App参考【结合 ...

2018-10-28 17:53:21 515

原创 React之Context

组件间通信大致有以下三种情况:父组件向子组件通信子组件向父组件通信跨级组件通信父组件向子组件通信这是最常见的一种通信方式,即父组件通过props向子组件传递需要的信息。子组件向父组件通信利用回调函数可以实现通信,即父组件将一个函数作为 props 传递给子组件,子组件调用该回调函数,便可以向父组件通信。跨级组件通信所谓跨级组件通信,就是父组件向子组件的子组件通信,向更深层的子...

2018-10-28 17:02:26 108

原创 Refs

Refs提供了一种访问DOM节点或在render方法中创建的React元素的方法。refs是React组件中非常特殊的props,可以附加在任何一个组件上。组件被调用时会新建一个该组件的实例,而refs就会指向这个实例。在react\lib\ReactBaseClasses.js文件中,可以看出每个组件都存在refs属性。/** * Base class helpers for the...

2018-10-21 21:21:13 340

Webpack 中文指南

Webpack是当下最热门的前端资源模块化管理和打包工具。它可以将许多松散的模块按照依 赖和规则打包成符合生产环境部署的前端资源。还可以将按需加载的模块进行代码分隔,等到实际需要的时候再异步加载。通过 loader 的转换,任何形式的资源都可以视作模块,比如 CommonJs 模块、 AMD 模块、 ES6 模块、CSS、图片、 SON、Coffeescript、 LESS等。

2017-08-15

Activity启动过程

流程图描述Activity启动过程

2017-08-04

阿里巴巴Java开发手册

阿里巴巴Java开发规约

2017-08-04

空空如也

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