- 博客(51)
- 资源 (7)
- 收藏
- 关注
翻译 FlowNet By University of Munich
CNN 中的 Pooling 有利于提取高层的图片特征,并且减少计算量。但是分辨率大大降低,所以我们需要Refinement。
2022-06-14 22:34:23 211
原创 如何计算CNN的FLOPs
不要把 FLOPS 和 FLOPs 搞混,FLOPS是硬件的计算速度单位,本质是一个速度单位。而 FLOPs 是一个数量单位,描述的是神经网络的计算量。需要注意的是 FLOPs 不区分运算精度,它单纯的统计乘法和加法的次数。而且只包含测试阶段的运算量,不包含训练过程中的反响传播计算量。
2022-05-10 23:31:40 506
原创 如何检测JavaScript函数执行时长
babel-plugin-transform-slow-func-detecter这个插件用于分析js运行过程中是否存在慢方法,仅在开发环境中使用,请勿在线上使用。它的原理是使用一个新的方法包裹原始方法,并在头尾部插入时间。已实现功能目前支持 react-native, web, node 平台分析同步方法运行时长分析 async 方法运行时长设置报警限制最大执行时长限制最大调用次数1. 安装yarn add --save babel-plugin-transform-slo
2021-09-02 20:47:29 958 1
原创 Flutter页面曝光事件埋点框架原理(兼容TabView组件)
埋点数据对于后期的产品调整有重要的意义,我们不仅要求埋点数据具有很高的精度,同时也要确保埋点代码和业务代码的隔离,当然开发不希望埋点的任务占用过多的开发时间,因此埋点框架也必须简单便捷。
2019-12-16 20:48:13 1758
原创 Flutter盒模型布局原理
flutter中布局(layout)和绘制(paint)的控制主要在`RenderObject`类中完成。所有flutter中涉及渲染的组件,都通过`RenderObject`完成最终的绘制。我们想要做一些高度自定义的组件(例如ios中的可折叠通知栏),就必须深入了解Flutter的布局和绘制,也就是要读懂这两个类。在理解他们之后,你就会理解大多数Flutter布局组件的原理,例如`Center`、`Row`、`Stack`。下面我们来具体分析一下这两个宝宝。
2019-10-20 11:04:06 1126
翻译 22-正则高级应用:匹配一行完整的字符串
这一章中我会学习如何根据特定的条件从文件中匹配完整的一行字符串。例如指定包含一组单词,或者指定不包含一组单词。我们会用到正则的预测断言特性。
2019-03-09 19:41:49 12309
翻译 21-正则表达式应用:日期匹配技巧
^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$可以匹配格式为yyyy-mm-dd的日期,并且兼容四种分割符,它匹配的范围是1900-01-01到2099-12-31。这个表达式的前后都使用了位置字符以确保整个字符串仅包含一个完整的日期。年份匹配我们使用(19|20)\d\d来匹配日期中的年份,这个表达使用选择符来...
2019-03-06 22:35:30 3567
翻译 20-正则邮箱匹配技巧
邮箱匹配是非常常用的,历史上邮箱名称的规则发生过很多次变化,所以没有哪一个正则表达式可以100%的匹配所有的邮箱。根据不同的邮箱名称规则我们可以对表达式作出调整,这样我们可以得到一个能匹配绝大多数邮箱的表达式。例如我们可以使用\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b在文本中搜索邮箱地址。注意使用这个表达式的时候需要关闭大小写敏感的模式。这个表达式使用了词...
2019-02-16 07:59:11 1189
翻译 19-正则匹配浮点数?又是一道送命题
在这个例子中,我们将展示正则表达式初学者所常犯的错误,以及避免的方法。下面这个例子我们将匹配一个浮点数,这个表达式也可以匹配整数以及省略整数部分的浮点数。它不会匹配带有指数符号的浮点数例如1.5e8。乍看之下答案可能是:[-+]?[0-9]*\.?[0-9]*。这个表达式中首先定义了一个可选的正数负数符号,接下来是一组可选的整数,一个可选的小数点,最后是另一组可选的整数。这个表达式中的每一个部...
2019-02-01 18:52:43 3475 2
翻译 18-正则匹配数字范围
1. 正则匹配数字范围正则表达式是为了匹配字符而设计的,而并不是为了匹配数字,所以当你使用正则匹配指定范围内的数字的时候你需要额外小心。表达式[0-255]并不能匹配0至255之间的数字。表达式[0-255]是一个字符集,它的含义是匹配 0,1,2,5中任意一个字符,这个表达式等同于[0125]。正则引擎真正处理的是字符,所以数字0对于引擎来说是一个字符,而255对于引擎来说是长度为3的字符。...
2019-02-01 18:50:28 35026 1
翻译 17-应用实例:提取HTML标签 修剪空白字符
1. 正则表达式应用实例下面一系列文章中我会介绍许多正则表达式的使用模式和应用实例,它们在实际工作中非常有用。每一个例子中所使用的正则特性都已经在之前的文章中介绍过。如果你想查看这些特性的具体介绍,你可以点击文章中的链接。对于正则的初学者而言,学习这些应用实例可以让你知道正则表达式能胜任什么样的工作。正则表达式的功能非常强大。虽然学习正则表达式略有难度,但是正则表达式可以高效的完成字符搜索,节...
2019-01-21 09:41:53 221
翻译 16-零宽预测回顾断言-part2
16.7 正对同一段字符串使用多个匹配条件预测回顾断言的功能是非常强大的,但很多正则表达式的初学者不懂得充分发挥它的优势,因为这些概念的理解有些难度。最难理解的部分是预测回顾断言是零宽的,所以如果一个表达式中使用了预测回顾断言,那么那部分字符串将会被匹配两次。我们现在用一个实例在说明这个特性。我们现在要匹配一个长度为6的单词,并且这个单词中包含连续的字符串 cat。实际上即使不用预测回顾断言我...
2019-01-17 11:16:17 152
翻译 16-零宽预测回顾断言
16.1 预测、回顾零宽断言预测零宽断言、回顾零宽断言和位置字符以及词语边界类似,他们都是零宽的。但是预测、回顾零宽断言实际上会匹配字符,他们仅仅返回匹配是否成功,而忽略匹配到的字符。这就是为什么他们被称为“断言”。预测、回顾断言在匹配的过程中不消耗任何字符,它们仅仅断言匹配是可能的还是不可能。预测、回顾断言所提供的功能无法使用其他token替代,或者说如果使用其他方法表达式会变得很复杂。16...
2019-01-13 11:30:13 410 3
翻译 15-具名捕获组
大多数正则都支持以数字为标识的捕获组和回溯引用。如果表达式中使用了许多以数字标识的捕获组和回溯引用,那么这将增加阅读表达式的难度。尤其是当你在这种表达式的中间插入或是删除一个捕获组之后,你需要更新所有回溯引用中的数字。在这种情况下你可以使用具名捕获组,从而避免数字发生改动,同时也增加了代码的可读性。15.1 JavaScript中的语法在不同的引擎中,具名捕获组的语法是不同的。在JavaScr...
2019-01-04 09:42:45 344
翻译 14-回溯引用
14.1 使用回溯引用匹配出现过的字符串回溯引用可以匹配到捕获组曾经匹配过的结果。你可以使用它来匹配HTML的开启标签和闭合标签、以及他们之间的文本。我们可以把启示标签放入一对花括号中(创建捕获组),这样我们在匹配闭合标签的时候可以再次使用捕获组所匹配到的字符。表达式如下<([A-Z][A-Z0-9]*)\b[^>]*>.*?</\1>。这个表达式中只有一对圆括号,...
2018-12-26 15:03:45 845 1
翻译 13-匹配组
13.1 匹配组你可以在表达式中使用圆括号来创建一个匹配组,匹配组中的内容将作为一个整体来看待。我们可以对一个匹配组使用量词,或是使用匹配组来限制选择符所能到达的范围。只有圆括号才能形成匹配组。方括号是定义字符集,花括号是定义量词。13.2 创建捕获组你也可以使用圆括号()创建一个以数字命名的捕获组。捕获组所匹配到的内容将被引擎保存起来。例如表达式Set(Value)?可以匹配 Set ...
2018-12-26 15:01:12 346
翻译 12-量词
12.1 星号*和加号+之前我们已经介绍过问号?这个量词,引擎会把它之前的token匹配一次或者零次,换句话说问号之前的token是可选的。星号的意思是匹配0次或者多次它之前的token,而加号的意思说匹配1次或者多次。例如<[A-Za-z][A-Za-z0-9]*>可以匹配一个不包含属性的HTML标签。其中尖括号是字面量字符。第一个字符集匹配一个字母。第二个字符集匹配一个字母或是...
2018-12-18 16:05:29 322
翻译 11-非必选项
11.1 非必选项我们可以使用?把它之前的token标记为可选的。例如colou?r可以匹配 colour 或者 color。?问号在这里是一种量词。我们可以使用匹配组把多个token标记为非必须的。例如Nov(ember)?可以匹配 Nov 和 November。你可以在一个表达式中使用多个问号,这样可以形成更多种不同的组合。例如Feb(ruary)? 23(rd)?可以匹配Februar...
2018-12-18 16:02:18 672
翻译 10-选择符
10.1 选择符在第五章中,我们已经学习了字符集,它可以匹配多个字符中的一个字符。选择符和字符集很类似,它可以匹配多个表达式中的任意一个字符。如果你想搜索多个文本,例如cat或者dog,你可以使用竖线来分隔这两个文本:cat|dog。如果你想要更多的选项,你可以对上面的例子进行扩展:cat|dog|mouse|fish。选择符的优先级在所有的正则操作符中是最低的。所以引擎会匹配竖线左侧所有的...
2018-12-12 18:42:50 298
翻译 09-词语边界
元字符\b和^$一样也是一个位置字符。它也是一个零宽的匹配字符,它匹配的是词语边界。词语边界可以匹配三种不同的位置:匹配字符串中第一个字符之前的位置,如果第一个字符属于词语字符(word character)匹配字符串中最后一个字符之后的位置,如果最后一个字符是词语字符匹配两个字符之间的位置,如果其中一个是词语字符而另一个不是。我们可以使用\b匹配字符串中的单词,例如\bword\b...
2018-12-08 23:11:44 435
翻译 08-位置字符
8.1 位置字符目前为止我们已经学习了字面量字符,字符集,句号这些元字符。它们可以匹配到单个字符。位置字符的规则和之前学习的元字符有很大的区别。位置字符不匹配任何字符,它匹配的是位置,可能位于字符串的开始、中间、结尾。它可以匹配的结果锚定在字符串的特殊位置。脱字符^可以匹配字符串的开始位置。例如^a可以匹配abc中的a,而^b不能匹配abc中的任何字符,因为b不在字符串的起始位置。下面我们会解...
2018-12-08 12:38:04 406
翻译 07-点操作符
7.1 .可以(几乎)匹配任何字符句点是正则表达式中最常用的字符之一,但是同时它也是最常被用错的元字符之一。句号可以匹配除了行终结符\r\n以外的任何字符。在本教程所涉及的引擎都会默认不匹配行终结符。句号不能匹配行终结符主要是历史原因造成的。因为第一个使用正则表达式的工具是基于行来匹配的,它会把文件按行读取,并用正则匹配每一行。所以每一次匹配中都不包含行终结符,句号也不会去匹配行终结符。现...
2018-12-04 13:48:24 382
翻译 06-字符集的缩写
6.1 字符集的缩写有些字符集使用的频率很高,所以在正则引擎中我们使用缩写的形式来代表这些组合,这样可以提高效率。6.1.1 \d例如\d代表[0-9],在大多数支持Unicode的引擎中,\d代表所有的数字(包含Unicode形式)。但是也有例外在java和javascript中\d只包含ASCII字符的数字。6.1.2 \w\w代表文字字符,也就是[A-Za-z0-9_]。6.1....
2018-12-03 09:31:04 341
翻译 05-字符类(Character Classes)
5.1 字符类(字符集)字符类(也叫字符集),它的作用是匹配一组字符中的一个字符。字符集的语法很简单,只要把字符写到方括号中间就可以了。例如[ae]可以匹配a或者e。你可以用gr[ae]y匹配gray或者grey。gray是美式英语,grey是英式英语。一个字符集只能匹配一个字符。例如gr[ae]y不能匹配graay或者graey。字符集中的字符排序是不分先后的,不同的顺序匹配结果是一样的。...
2018-11-30 10:26:57 606
翻译 04-正则引擎内部初探
理解正则引擎的内部原理将帮助你写出更高效的表达式,并且帮助你快速调试正则表达式中的异常在接下去的章节中每当我们介绍一个新的正则token,我们都会解释正则引擎是如何处理这个token的。虽然理解引擎的原理有些难度,但是它可以帮助我们避免一些常见的错误。4.1 引擎的分类虽然正则引擎有很多种不同的实现,但是大体可以分为两类:文本驱动的引擎(text-directed)和正则驱动的引擎(rege...
2018-11-28 09:19:07 212
翻译 03-非打印字符
你可以在正则表达式的特殊字符匹配非打印字符。\t:匹配制表符\r:匹配回车\n:匹配换行\a:匹配响铃\e:匹配esc键\f:匹配分页符在windows中使用\r\n在结束一行,而UNIX中使用\n3.1 行终结符(Line Breaks)\R是一个特殊的转义符,它将匹配所有的行终结符,也包括Unicode行终结符。相对于\r或者\n,\R比较特殊的一点是它会把CRLF对...
2018-11-28 09:17:55 810
翻译 02-字面量字符与元字符
2.1. 字面量字符(Literal Characters)最基础的正则表达式由一个字面量字符组成,例如a。它将匹配一个字符串中第一个a出现的位置。如果它匹配的是Jack is a boy,那么它将匹配到J后面的a。事实上即使a出现在字符串的中间也不影响这个正则,如果你想控制a是否出现在字符串的开头或者结尾,那么你需要使用文字边界。我们会在后面的章节展开讨论。事实上这个正则同样可以匹配字符串中...
2018-11-28 09:13:16 209
翻译 01-专题目录
我将向你介绍正则表达式的方方面面。下面每一章节的内容都是建立在之前章节之上的,所以你需要按序阅读下面的章节。1. 介绍这一章将介绍本教程的内容范围,以及正则的一些名词解释。2. 字面量字符与元字符最基础的正则表达式是由字面量字符组成的。有些字符具有特殊的含义,在使用的时候需要转义,我们称它们为元字符。而元字符是正则中较为复杂的部分。3. 非打印字符非打印字符是诸如换行符、回车符、制表符...
2018-11-28 09:09:26 242
翻译 专题简介
这个系列的文章是为了向你介绍正则表达式引擎的工作原理,懂得这些原理是写出高效的正则表达式的关键。不仅如此这还将帮助你避免很多常见的错误,减少你花在猜测正则表达式的行为的时间。作者译:文章中很多带有链接的文字没有翻译成中文,这是因为我还没有对链接中的文章进行详细的理解,为了避免翻译出现错误我保留了英文。等到我翻译完成之后我会把标题和链接都替换成中文。笔者邮箱:billl89@126.com欢迎来...
2018-11-28 09:05:47 487
原创 React生命周期学习总结
React生命周期学习总结1. constructor1.1 作用初始化state绑定事件处理函数的this指向1.2 props向state拷贝constructor(props) { this.state = { aa: this.props.aa }}在这种情况下props的变化不会引起stats的变化,容易引起...
2018-09-02 22:13:07 235
原创 如何检查Javascript中的内存泄漏
js内存泄漏通常是由于闭包所引起的,我们在判断是否存在内存泄漏的时候往往会觉得无从下手。通常我们通过codereview去判断是否泄漏,但是这种方法不够客观。我们需要一种客观的方法来证明泄漏的存在。Chrome Devtool其实Devtool已经提供了检查的工具,这就是Memory面板。它大概长这样。我们可以通过这个工具对页面中某一时刻的内存状态做一个快照,这个快照中包含此刻...
2018-06-13 17:45:11 6729 1
原创 如何让webpack打包的速度提升50%?
随着前端应用包含的模块数量日益增长,代码打包的耗时也越来越长。公司很多项目打包耗时超过了10秒,对于一般人来说超过10秒的等待是比较难受的,虽然后续增量编辑的速度很快。于是我想结合实际开发环境提升一下首次打包的速度。1. 实际开发环境我碰到大多数处于维护状态的网站都有一下几个特性:模块数量庞大模块中主要分为js模块和css模块,并且less模块最后使用extract-text-...
2018-05-10 11:30:39 4536
原创 微信小程序全局状态管理,并提供Vuex的开发体验
1. 概要微信小程序的开发体验类似vue和react,但是却没有提供全局状态管理的机制,所以状态的共享只能通过属性传递的方式来实现。这种做法在小规模的应用中尚可以满足开发效率,但是在复杂的应用中组件的嵌套层次很深,属性传递的路径过长。于是我就想利用小程序Page中的data对象来构建一个全局store,这个store满足一下几点需求:store可以被当前页面中任意一个组件访问,并且这...
2018-04-22 12:26:36 18394
原创 如何解决jquery.jsonp请求在并发情况下容易发生异常的bug
知道现在使用jsonp的公司越来越少了,似乎有比jsonp更好的跨域方案。但是我发现腾讯视屏、爱奇艺视频、优酷土豆等大型互联网公司还在使用它时,我决定写一篇文章彻底解决jsonp在并发条件下报错的问题。毕竟jsonp有最好的兼容性。 先附上源码连接 Github1. 为什么会报错你是不是见过以下错误,通常在并发情况下容易出现这个错误,而且是否出错有随机性。Uncaug...
2018-03-31 10:10:55 3079 2
原创 【如何实现backbone组件化开发】 第二篇:优化方案的实现
系列文章 【如何实现backbone组件化开发】 第一篇:无组件所带来的问题在上一篇文章中,我们已经分析了Backbone在组件化开发上的不足,以及如何使用打包手段弥补这些不错。接下来我们来逐步通过一个例子来讲解优化的过程1. 场景假设假设我们需要使用Backbone编写这样一个输入框组件,它有一个input和一个label组成。当用户在input中输入文字,并且触发bl...
2018-02-08 23:20:32 1216
原创 【如何实现backbone组件化开发】 第一篇:无组件所带来的问题
组件化开发优势从2015以来前后端分离的模式被越来越多的公司所使用,随着业务代码复杂度的上升,代码也维护成本也随之上升。对于一个复杂的web应用,我们可以使用分而治之的方式来降低系统的复杂度,也就是标题中所说的组件化开发。组件化开发可以把系统分割多个子模块,每个模块完成单一的功能,不同模块可以相互组合、相互通信,从而构建大型复杂应用。Backbone中的组件化和其他流行的前端框架相比并不是...
2018-02-05 22:02:39 821
原创 Vue源码小问答二:Vue.nextTick的用法
Vue.nextTick官方说明在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。注解Vue的Dom树更新一般是在异步回调中完成的,这里的异步回调可能用promise或者setTimeout。这就导致我们无法以同步的方式获取更新后的Dom结构,因为在数据状态更新完成之后Vue并不是立即更新Dom树,而是在下一个事件循环中更新
2018-01-19 23:02:36 1114
个人理财信息系统课程设计(论文+源码)
2012-11-13
人事管理系统(使用MFC单文档程序,使用TXT文本作为数据库)
2011-01-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人