我们今天要讨论的主题是,大型 JavaScript 应用中一些有效的设计模式。本文基于我最近发布在 LondonJS 上同名演讲,灵感则来自于 Nicholas Zakas 之前的研究成果。
我是谁以及我为什么要撰写这个主题?
我目前是 AOL 的一名 JavaScript 和 UI 开发人员,负责规划和编写下一代面向用户的应用的前端架构。这些应用不仅复杂,而且需要一种可扩展和高复用的架构,我的职责之一就是确保这类应用中的设计模式尽可能是可持续的。
尽管在这个领域有许多比我知识渊博的专家,我也认为自己是设计模式的狂热者。先前,我基于 Creative Commons 许可写了 《Essential JavaScript Des
继续阅读 »
文/Robin
笔者的代步车是小鹏 G3,NEDC 综合工况续航 520 公里,至今总里程 9089 公里。这台车至今跑过 3 次单程超过 500 公里的长途。
今年的国庆节恰逢中秋,假期史上最长,于是决定自驾往返湛江。得益于远程办公的便利性,笔者 29 号出发,4 号返程,基本上完美错开来程和去程的高速高峰。
这次的自驾体验,明显好了很多。第一,提前出行,高速畅通无比,把更多塞在路上的时间留出来陪家人;第二,路径规划比上一次更合理,基本上没走冤枉路;第三,充电桩明显更多了,连部分服务区都配置了快充。
发现几个有趣的现象。粤西的充电桩,基本上被一个叫做「共创智能充」的公司垄断了,即使是很偏僻的地方,也能找到它的踪影。「共
继续阅读 »
链接:Link 耗时:0.028s
一道简单的动态规划,主要思路就是:
用f[i,j]表示到达(i,j)的最长路径的长度。找到每个最高点,从其开始向四周的低处搜索。如果该点已搜过并且f值大于当前长度则退出回溯。直到达到某个最低点为止。
不多说了,直接上代码:
```pascal
const
delta :array [1..4, 1..2] of integer = ((-1, 0), (1, 0), (0, 1), (0, -1)); //四个方向向量
var
_: Integer;
name: string;
n, m, i, j, x: Integer;
ans: longint
继续阅读 »
链接:Link 耗时:1.825s
这道题做的可真够久的:前前后后加起来将近有两个小时,因此当AC的那一刻,自己心中还是挺自豪的。
事实上,这是一道复杂一点的区间型动态规划,之所以说“复杂”,是因为它的状态转移是二维的:切蛋糕既可以横切,也可以纵切。由此我想到了分治算法:
假设一个矩形它所需要切的刀数是f,则f可以由组成该矩形的小矩形的f值决定。
因此,这个问题具有最优子结构。由于每个状态为一个矩形,因此需要4个维度来记录状态(及左上、右下两个顶点)。下面是横切时的状态转移方程,纵切时同理可得:
f(up, down, left, right) = min{f(up, i, left, right) + f(i, dow
继续阅读 »
链接:Link 耗时:0.586s
昨晚做的太急了,没时间写总结,正好下午有空,补上。
这是一道典型的树形动态规划,不是很难,但十分坑语言。思路大致如下:
对于第i个节点,用d(i)表示其上诉所需的最小工人数。若i为叶节点,则d(i)=1;否则,遍历求出i的子节点所对应的d值,并由小到大排序,取出最小的几个相加,即为d(i)。
很容易想到用递归来实现。但对于“子节点的d值的排序”实现起来却十分困难:因为事先不知道有多少个数。当然啦,如果是C++组,用vector可以轻松搞定,可至于P党,实现起来却难上加难。思来想去,决定试试Pascal的动态数组。磕磕碰碰调了近1个小时,终于AC了。
Code:
```pascal
//
继续阅读 »
八爪有一整套的研发管理系统,实现从代码管理到服务器搭建、问题追踪到编写开发文档,从而搭建起一整套开发流程的系统。以下是一些个人现阶段的理解。
1.Jira
JIRA Software是优秀的敏捷项目工具,协助您追踪问题,集成代码,规划,开发,发布高质量的软件产品。
2.Stash
Bitbucket(原名Stash)帮助团队创建和管理代码仓库,通过内联注释和变更讨论来使团队协同处理代码。
3.Confluence
Confluence将团队成员紧密的团结在一起,带领团队同心协力地在线编写文档,使团队成员工作更有效率。
4.Bamboo
Bamboo运行在各种专用服务器或云服务器上的代理实现了构建能力的即时动态扩展。
继续阅读 »
算法:由输入经过一系列的计算步骤得到输出
排序问题:将无序的输入经过处理按照一定的孙徐输出
优秀的算法:
- 正确性(思路清晰)
- 高效(算法分析)
- 易于实现(现成的算法)
算法的用处:
- 生物信息学
- 网络(图论,字符串查找)
- 信息安全(RSA..)
- 优化(调度)
算法问题:
- 图论(最短路径...)
- LCS(动态规划...)
- 拓扑排序
- 凸包
数据结构:
C++ STL 优缺点 效率
难解问题:
并行算法
CPU效率
算法技术
算法的效率
渐近记号
问题规模量 时间T(n)
数组去重
继续阅读 »