正则表达式和IndexOf函数的效率问题

正则表达式和IndexOf函数的效率问题

事情的起因

事情的起因是一道LeetCode题目,具体如下:

1003. 检查替换后的词是否有效

给定有效字符串 “abc”。

对于任何有效的字符串 V,我们可以将 V 分成两个部分 X 和 Y,使得 X + Y(X 与 Y 连接)等于 V。(X 或 Y 可以为空。)那么,X + “abc” + Y 也同样是有效的。

例如,如果 S = “abc”,则有效字符串的示例是:”abc”,”aabcbc”,”abcabc”,”abcabcababcc”。无效字符串的示例是:”abccba”,”ab”,”cababc”,”bac”。

如果给定字符串 S 有效,则返回 true;否则,返回 false。

在React脚手架中配置使用stylus

在React脚手架中配置使用stylus

创建一个项目

我们此次使用react脚手架工具创建一个空白的项目,具体为:

1
$ create-react-app with-stylus

创建完空白项目后,我们为项目添加一个我们自己的Remote地址(可选)。

1
2
$ git remote add origin GIT_URL
$ git push -u origin master
React源码解读-事件注册

React源码解读-事件注册

本文主要通过OutLine和思维导图的方式展现React中事件注册的流程。

搭建本地React源码调试环境

搭建本地React源码调试环境

一般来说,我们想要去学习 React 的源码的时候,可能会先Build一下,然后使用源码包下的fixtures内的测试样例进行调试,但是,不管是productionbuild还是Developmentbuild,源码都是被打包在一个文件中的,结构混乱,即使代码没有被压缩,也很难看得懂具体那一个方法是属于哪一个模块的。所以,为何不使用源码包直接来调试源代码呢?

本文将会介绍如何直接使用React源码包来调试源码。

相关代码以全部放置在:

https://gitee.com/cyrusky/StudyReact.git

React和Vue中的数据绑定

React和Vue中的数据绑定

数据的单向绑定

我们在做原生页面开发的时候,如果涉及到前端的数据动态展现,是如何做的呢?(这里排除了后端直接返回嵌入数据的HTML页面的模式,比如说PHP中的模式),比如下面的例子:

1
<p></p>
1
2
const data = { value: 'hello' }
document.querySelector('p').innerText = data.value;

通过 JavaScript 原生的DOM操作方式,将数据动态填充到DOM中,就是数据(Data)到模板(DOM)的绑定,这就是数据单向绑定。

JavaScript事件冒泡与事件捕获

JavaScript事件冒泡与事件捕获

事件冒泡与事件捕获

事件冒泡事件捕获分别由微软网景公司提出,这两个概念都是为了解决页面中事件流(事件发生顺序)的问题。

比如说,下面的代码:

1
2
3
<div id="outer">
<p id="inner">Click me!</p>
</div>

上面的代码当中一个div元素当中有一个p子元素,如果两个元素都有一个click的处理函数,如果点击了inner的话,其实outer也算是被点击了的。那么我们怎么才能知道哪一个函数会首先被触发呢?为了解决这个问题微软和网景提出了两种几乎完全相反的概念。

深入理解JavaScript中的EventLoop原理

深入理解JavaScript中的EventLoop原理

浏览器的多进程架构

在浏览器刚被设计出来的时候,那时的网页非常的简单,每个网页的资源占有率是非常低的,因此一个进程处理多个网页时可行的。然后在今天,大量网页变得日益复杂。把所有网页都放进一个进程的浏览器面临在健壮性,响应速度,安全性方面的挑战。

  • 健壮性:现代浏览器大多都是多tab架构,如果所有的tab都存在于一个进程内部的话,如果其中的一个tab崩溃,会影响其他的tab,为每个tab分配一个进程,则会有效避免这个问题。

  • 响应速度:这个不赘述。

  • 安全性:由于同一进程内的线程是共享资源与地址空间的,所以如果把不同的网页放在同一进程内,可能会导致数据泄露等问题。

Babel到底对jsx做了什么?

Babel到底对jsx做了什么?

JSX是个啥?

jsx其实不是个新鲜东西,就是react的一个语法糖。他提供了一种方式,让我们可以在JavaScript代码中编写类似于html标签的内容,并且会在最终编译的过程中自动将这些HTML标签转换为React可以处理的代码。

JavaScript闭包到底解决了什么问题?

JavaScript闭包到底解决了什么问题?

JavaScript中的闭包到底是个什么东西

JavaScript中的闭包其实是一个让函数返回另一个内部函数的过程,我们都知道,JavaScript中,函数其实也是一个变量,或者说是对象,所以,对于上述的过程,我们就能够理解,这种方式是能够被实现的。

闭包的具体实现方式:

JavaScript中对象的生命周期

JavaScript中对象的生命周期

一切皆对象

其实,我们已经了解到了,JavaScript中,所有的东西都是对象,也就是所谓的“Object”类型,但是,在JavaScript中,并没有真正的类的概念,所以,此处的对象并不像是Java或者Python中的那样,是由类实例化而来的,而是由键和值来组成的,对象其实就是以键命名的值的容器。

比如,我们使用typeof来检查一个数组的类型,会发现,其实数组也是一个Object

1
2
3
let a = []
typeof a
// "object"
Agile Angularjs Animation Application Artificial Intelligence BP Babel Bokeh Book C4.5 CART CD CLI CSS CentOS Cinder Clipboardjs Concept Continuous Delivery DeepLearning Department DevOps Develop Development Directive Distribution Django Document ES5 ES6 Echarts Engine Entropy Filter Front End Gallery Git Gradient descent Hexo Horizon ID3 ID3.5 Icarus JavaScript Javascript KVM LaTeX LeetCode LibreOffice Linux MNIST Machine Learning Matrix MiddleWare Module Native Network Nginx NodeJS OOP OpenSSH OpenStack OpenStackApi Operations Oprations PDF PLA Pipline Probability Python React Relational algebra Restful Route SVD SVM Scalar Sigmoid Team Tempest Tensor TensorFlow Testing Time TimeMachine Tips Vector Vmware Vue Vuex WSGI Web Word Cut aliyun auth babel certbot decision tree docker dockerfile eject git homebrew jupyter jwt keystone lab loader mathematics migrate openstack outline pdf2html pm2 python replace singular value decomposition stylus vue-router vue-ssr webpack 事件 事件代理 事件冒泡 事件捕获 低通滤波器 入门 全局变量 全局对象 全栈 公式 决策树 函数 分类器 剪枝 加速 匹配滤波边缘检测 卷积 卷积核 原型链 双向绑定 反向传播 发布 变量类型 基尼指数 官方示例 对偶形式 对象 平移和查分边缘检测 思维导图 感知机模型 拉格朗日乘子法 推导 提交阶段 数据绑定 最大似然估计 最小二乘估计 最小二乘回归树 最小二乘法 本地 朴素贝叶斯 朴素贝叶斯算法 机器学习 条件概率 梯度下降 梯度方向边缘检测 概念 概率 正则 求导 流程 源码 源码阅读 生命周期 矩阵 神经网络 私有对象 算法 算法实现 线性回归 联合概率 脚手架 识别 调试 贝叶斯 贝叶斯判定准则 边缘检测 边际概率 闭包 间隔 高斯分布 高通滤波器
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×