- 博客(37)
- 资源 (8)
- 收藏
- 关注
原创 使用 async/await 优化异步编程
理解 JavaScript 的 async/awaitECMAScript 6 入门 - async 函数ECMAScript 6 入门 - Generator 函数的异步应用回调函数使用回调函数的传统异步编程有可能嵌套多层回调函数,当嵌套真的多到一定程度时,视觉效果和维护难度都是地狱级的灾难,这也就是为什么会把多层回调嵌套叫做回调地狱。多个异步操作形成强耦合,看着不知所云,改起来头晕目眩...
2019-07-05 17:27:29
607
原创 前后端架构发展
你不得不了解的前后端分离原理实现前后端分离的心得我们为什么要尝试前后端分离正确理解前后端分离最小化结构的 web记得以前初接触 web 开发时,为了练手写过一个特别简单的 web 网页通讯录。麻雀虽小,五脏俱全。这个通讯录虽然特别无脑,但是该有的都有:提交登录表单、浏览器展示、点击响应、根据 URL 决定是哪个页面、取数据库数据。这基本上就是一个最最简单的网站了,本质就是响应用户操作...
2019-07-04 16:21:28
815
原创 React + Redux的模块组织方式
React + Redux 是React生态中使用最频繁的技术栈,关于如何组织React+Redux的项目结构有如下几种:按照类型这里的类型指的是一个文件在项目中充当的角色类型,即这个文件是一个component,还是一个container,或者是一个reducer等,充当component、container、action、reducer等不同角色的文件,分别放在不同的文...
2019-06-28 14:32:06
653
原创 Redux 基础概念整理
06/19 14:17相关文章Redux 入门教程(一):基本用法Redux 核心概念三大原则Redux 可以用这三个基本原则来描述:单一数据源整个应用的 state 被储存在一棵 object tree 中,并且这个 object tree 只存在于唯一一个 store 中。State 是只读的唯一改变 state 的方法就是触发 actio...
2019-06-28 14:31:21
198
原创 React 的 props.children
props.children 简介在典型的React数据流模型中,props 是组件对外的接口。props 作为父子组件沟通的桥梁,为组件的通信和传值提供了重要手段。this.props 对象的属性与组件的属性一一对应,但其中有一个比较特殊的参数:this.props.children。它表示组件所有的子节点。在组件内部使用 this.props.children,可以拿到用户在...
2019-06-28 14:30:15
18206
原创 React 事件处理中的 this 绑定
06/19 10:30相关文章React 中文文档 - 事件处理JavaScript Private and Public Class Fields关于React事件回调函数bind(this)函数作为React组件的方法时, 箭头函数和普通函数的区别是什么?事件处理函数的 thisReact 元素的事件处理和 DOM 元素的很相似,但是有一点语法上的不同:使用 JS...
2019-06-28 14:29:10
287
原创 React 组件实例的生命周期
生命周期简单来说,一个 React 组件实例从创建到销毁,会经历创建->挂载->更新(也许重复更新)->销毁的过程。一、创建和挂载React.js 将组件渲染,并且构造 DOM 元素然后插入页面的过程称为组件的挂载。当组件实例被创建并插入 DOM 中时,其生命周期调用顺序如下:constructor() // React 组件的构造函数render...
2019-06-28 14:28:10
251
原创 阅读笔记 - 异常处理及扩展
06/18 10:32相关文章【第1641期】异常处理,"try..catch"【第1643期】自定义错误及扩展错误笔记梳理使用以 JSON.parse 方法为例let json = '{ "age": 30 }'; // 不完整的数据try { let user = JSON.parse(json); // <-- 没有异常 if (...
2019-06-28 14:27:00
146
原创 原型链与 instanceof 运算符
一次面试经历面试官从继承和原型链问到 typeof 运算符,又顺着问到了 instanceof 这个运算符。我:instanceof 运算符用于判断一个对象是否是另一个的实例,比如 A instanceof B 就是判断 A 是不是 B 的实例。面试官:怎么判断的呢?我:就是找原型链吧,找 A 的原型链上有没有 B,有的话 A 就是 B 的实例。面试官:嗯,怎么找原型链的呢?我:...
2019-06-28 14:25:41
188
原创 text-overflow 的使用
text-overflow 是一个很常用的 CSS 属性,该属性设置截断的文本溢出内容如何显示。属性值clip(默认值)在内容区域的极限处截断文本。因此在字符的中间可能会发生截断。ellipsis用一个省略号 ('…') 来表示被截断的文本。这个省略号被添加在内容区域中,因此会减少显示的文本。如果空间太小到连省略号都容纳不下,那么这个省略号也会被截断。生效条件...
2019-06-28 14:24:14
3426
原创 CSS文本:空白与换行的处理
white-spacewhite-space 属性设置如何处理元素中的空白。属性值normal连续的空白符会被合并,换行符会被当作空白符来处理。填充 line 盒子时,必要的话会换行。nowrap和 normal 一样,连续的空白符会被合并。但文本内的换行无效。pre连续的空白符会被保留。在遇到换行符或者<br>元素时才会换行。pre-wrap连续的...
2019-06-28 14:22:40
2319
原创 flex-grow 属性深入探讨
flex-grow 不易理解,难道不是吗?深入理解css3中的flex-grow、flex-shrink、flex-basis写给自己看的display: flex布局教程Flex 布局教程:语法篇一开始学习 flex-grow 时,相信大家都是从这样一个经典例子入门的:如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-g...
2019-06-28 14:20:20
4342
4
原创 DOCTYPE相关知识点
<!DOCTYPE>是什么<!DOCTYPE> 声明不是 HTML 标签;它是用来告知 Web 浏览器页面使用了哪种 HTML 版本的指令,指示 web 浏览器关于页面使用哪个 HTML 版本进行编写。HTML4.01中的<!DOCTYPE>在 HTML 4.01 中,<!DOCTYPE> 声明引用 DTD,因为 HTML 4.01 基于...
2019-03-27 23:01:32
157
原创 【SpringBoot实战】Controller层-请求类与异常类的封装
【请求类】服务端为了更好区分响应的状态,需要自定义错误码与错误信息。而且,直接返回data会使响应格式紊乱,前端不好处理。所以需要将http响应封装为“errCode+errMsg+data”的格式。1. 自定义Resp类:@Data 注解是lombok插件提供的一个注解,可让我们省略getter与setter方法,提供代码简洁度。2. 在RespUtil类中自定义 Resp<T> ...
2018-07-05 17:43:09
4440
原创 【SpringBoot实战】搭建SpringBoot项目阶段-groupId和artifactId的讲究
先上new project时的图直接使用Spring Initializr创建项目,需要填入group与artifact。这两个起名是随便起的吗?有啥名堂?下面讲讲~【含义】groupId和artifactId是maven管理项目包时用作区分的字段,就像是地图上的坐标。groupId:groupId分为几个字段,例如com.piggy,前面的com叫【域】,后面的是你自己起的域名。artifact...
2018-07-04 15:56:30
16661
转载 HTTP协议基础知识
原文链接:https://www.cnblogs.com/ranyonsue/p/5984001.htmlHTTP简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等...
2018-06-29 15:04:29
2237
转载 Spring常用注解
原文链接:https://www.cnblogs.com/xdp-gacl/p/3495887.html使用注解来构造IoC容器用注解来向Spring容器注册Bean。需要在applicationContext.xml中注册<context:component-scan base-package=”pagkage1[,pagkage2,…,pagkageN]”/>。如:在base-pa...
2018-06-26 14:44:56
130
转载 spring boot与spring mvc的区别
Spring 框架就像一个家族,有众多衍生产品例如 boot、security、jpa等等。但他们的基础都是Spring 的 ioc和 aop ioc 提供了依赖注入的容器 aop ,解决了面向横切面的编程,然后在此两者的基础上实现了其他延伸产品的高级功能。Spring MVC是基于 Servlet 的一个 MVC 框架 主要解决 WEB 开发的问题,因为 Spring 的配置非常复杂,各种XML...
2018-04-23 14:54:24
230
转载 HTTP长连接与短连接
HTTP协议与TCP/IP协议的关系HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。如何理解HTTP协议是无状态的HTTP协议是无状态的,
2017-09-18 20:59:49
430
转载 C++实现单例模式
什么是单例模式单件模式(SingletonPattern):确保一个类只有一个实例,并提供一个全局访问点。和全局变量一样方便,又没有全局变量的缺点,即不需要从一开始就创建对象,而是在需要时才创建它。那么要如何保证一个类只能被实例化一次呢?一般情况下,如果存在一个类,我们都是可以多次地实例化它的。那么如果这样呢:1 public MyClass{2 private
2017-05-10 16:57:48
231
转载 C++ 解析Json——jsoncpp
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml类似,本文主要对VS2008中使用Jsoncpp解析json的方法做一下记录。Jsoncpp是个跨平台的开源库,下载地址:http://sourceforge.net/projects/jsoncpp/,我下载的是v0.5.0,压缩包大约104K。方法一:使用Jsoncpp生成的lib
2017-05-10 11:09:46
310
转载 实体类、边界类和控制类
实体类: 实体类是用于对必须存储的信息和相关行为建模的类。实体对象(实体类的实例)用于保存和更新一些现象的有关信息,例如:事件、人员或者一些现实生活中的对象。实体类通常都是永久性的,它们所具有的属性和关系是长期需要的,有时甚至在系统的整个生存期都需要。 实体类的找寻相对简单点,这里就不再做具体的叙述了。 边界类: 边界类是系统内部与系统
2017-05-04 16:12:07
51583
2
转载 UML类图与类的关系详解
在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition)。下面我们结合实例理解这些关系。基本概念类图(Class Diagram): 类图是面向对象系统建模中最
2017-05-04 12:21:47
271
原创 【北邮OJ】100. 二叉树的层数
题目描述 老师有一个问题想考考mabo,但是mabo不会,所以想请你来帮帮忙。问题如下:给一个二叉树请把这个棵二叉树按层来打印。如果为相同层,需要从左到右打印。一个节点是先添加左节点后添加右节点,即添加顺序与输入顺序一致。输入格式 首先输入一个整数T,表示一共有T组数据 0 < T<=10再输入两个整数N,M(0<=N,M<=100)表示下面有N行,这个树有M个节点(1号节点是这棵树的根节点)每
2017-03-23 16:38:48
449
原创 【北邮OJ】97. 二叉排序树
题目描述 二叉排序树,也称为二叉查找树。可以是一颗空树,也可以是一颗具有如下特性的非空二叉树: 若左子树非空,则左子树上所有节点关键字值均不大于根节点的关键字值; 若右子树非空,则右子树上所有节点关键字值均不小于根节点的关键字值; 左、右子树本身也是一颗二叉排序树。现在给你N个关键字值各不相同的节点,要求你按顺序插入一个初始为空树的二叉排序树中,每次插入后成功后,求相应的父亲节点
2017-03-22 22:51:02
902
原创 【北邮OJ】277. 内存分配-网研14-计算机二14
总结: 1。自定义cmp函数 适用于: ①结构体多重排序 ②改变排序规则(如倒序) 2。注意可用位的设置#include <stdio.h>#include <iostream>#include <algorithm>using namespace std;struct memblock{ int mem; int avail;};boo
2017-03-22 21:36:07
418
原创 【北邮OJ】95. 二进制数
题目描述 大家都知道,数据在计算机里中存储是以二进制的形式存储的。有一天,小明学了C语言之后,他想知道一个类型为unsigned int 类型的数字,存储在计算机中的二进制串是什么样子的。你能帮帮小明吗?并且,小明不想要二进制串中前面的没有意义的0串,即要去掉前导0。输入格式 第一行,一个数字T(T<=1000),表示下面要求的数字的个数。接下来有T行,每行有一个数字n(0<=n<=10^8),
2017-03-22 15:00:05
643
原创 【北邮OJ】266. 分数加法-网研14
总结: 1。注意int数据溢出,此题2^a有可能非常大,干脆用long long int 2。gcd()递归#include <stdio.h>#include <iostream>#include <math.h>using namespace std;long long int gcd(long long int a,long long int b){ if(b == 0)
2017-03-22 14:20:18
564
原创 【北邮OJ】99. 打印字符串
题目描述 老师有一个问题想考考mabo,但是mabo不会,所以想请你来帮帮忙。 问题如下: 给一串字符串,统计其中某个字符的个数。输入格式 首先输入一个整数T,表示一共有T组数据 0 < T<=10。 接下来每行一个字母x(x为’a’-‘z’或者‘A’-‘Z’)。 然后下面一行输入一个字符串s(0 < s的长度<1000)。输出格式 统计这个字母在这个字符串中出现的次数#include
2017-03-22 10:31:33
396
原创 【北邮OJ】88. 最值问题
题目描述 给出N个数,求出这N个数中最大值和次大值。注意这里的次大值必须严格小于最大值。输入保证N个数中至少存在两个不同的数。 输入格式 第一行为测试数据的组数T(T≤20)。请注意,任意两组测试数据之间是相互独立的。 每组数据包括两行: 第一行为一个整数N(1≤N≤1000)。 第二行为N个正整数,每个整数均不大于106。输出格式 每组数据输出两个数,即N个数的最大值和次大值,中间用
2017-03-22 10:25:27
730
原创 【北邮OJ】89.统计时间间隔
总结: 1。处理字符串:一次性读入char数组,然后单个字符处理 2。默认最后一个数据输出也有回车 3。纯数字字符串转为数字的方法 4。超过时间限制(why?),考虑用计数法#include <stdio.h>#include <iostream>using namespace std;char str1[100],str2[100];int total[50000];int mai
2017-03-21 21:46:48
543
原创 【lintcode笔记】在二叉查找树中插入节点
给定一棵二叉查找树和一个新的树节点,将节点插入到树中。你需要保证该树仍然是一棵二叉查找树。注意事项You can assume there is no duplicate values in this tree + node.#include <stdio.h>using namespace std;/** * Definition of TreeNode: * class TreeNode
2017-02-23 20:38:12
353
原创 【lintcode笔记】搜索插入位置
给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。你可以假设在数组中无重复元素。样例 [1,3,5,6],5 → 2[1,3,5,6],2 → 1[1,3,5,6], 7 → 4[1,3,5,6],0 → 0//复杂度O(n)#include <stdio.h>#include <vector>using namespace std;
2017-02-21 15:11:37
333
原创 【lintcode笔记】经典二分查找问题
在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回-1样例 给出数组 [1, 2, 2, 4, 5, 5].对于 target = 2, 返回 1 或者 2. 对于 target = 5, 返回 4 或者 5. 对于 target = 6, 返回 -1.//最基础的二分查找算法#include <stdio.h>#include <vector>#include
2017-02-21 14:31:26
742
原创 【lintcode笔记】两数组的交 II
计算两个数组的交注意事项 每个元素出现次数得和在数组里一样 答案可以以任意顺序给出 样例 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].//不必去重#include <stdio.h>#include <vector>#include <algorithm>using namespace std;class Solution {p
2017-02-20 23:32:55
317
原创 【lintcode笔记】合并排序数组
合并两个排序的整数数组A和B变成一个新的数组。样例 给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]//简单的合并算法,时间复杂度O(max(m,n)) 空间复杂度O(m+n)#include <stdio.h>#include <vector>using namespace std;class Solution {public: /*
2017-02-20 23:22:28
302
原创 【lintcode笔记】两数组的交
返回两个数组的交注意事项 Each element in the result must be unique. The result can be in any order. 样例 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2].熟悉hash解法尝试 负值失败 尝试OFFSET?#include <stdio.h>#include <vector
2017-02-20 23:15:44
290
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人