微信搜索『FEX』关注我们的公众号,及时获得最新资讯。
一位前端工程师的成长之路,坎坷中展现出作者的不平凡之处,这份对技术的热忱和探索精神值得学习。
代码的性能优化是一个精细活,如果你要在一个庞大的未经优化的页面上做性能优化,可能会面临一次重构代码。本文从淘宝首页个性化引出的问题出发,从微观到宏观讲述了页面的优化实践,提出了几条可以借鉴的「黄金法则」,希望对你有所启发。
什么是函数式编程思维?
函数式编程是一种编程范式,我们常见的编程范式有命令式编程(Imperative
programming),函数式编程,逻辑式编程,常见的面向对象编程是也是一种命令式编程。命令式编程是面向计算机硬件的抽象,有变量(对应着存储单元),赋值语句(获取,存储指令),表达式(内存引用和算术运算)和控制语句(跳转指令),一句话,命令式程序就是一个冯诺依曼机的指令序列。而函数式编程是面向数学的抽象,将计算描述为一种表达式求值,一句话,函数式程序就是一个表达式。
利用图片传输数据的另类思路
通过具体例子说明如何优化代码
做卧底,如何不动声色的毁掉对手的产品
《人人都是产品经理》作者总过一个话题“如果你到了对手公司做卧底,如何毁掉一个产品”总结了一些产品研发中的反模式,挺值得引以为戒的。
Vivaldi:可高度定制的先进浏览器
大神君山的经验之谈,值得学习。不管你是刚走出校园,还是大咖加入新的环境,前期精力都应该放到具体的小事上。先以事服人,再以德服人。
阿当老师又引发了轩然大波,真不容易。感觉这个观点才是文章的关键:对知识的敬畏是必要的基本态度。兼听则明吧,比怀疑精神更重要的是好奇心、探索精神以及独立思考的能力。
这仅仅是解法之一。如果你没能给出正确答案,也不用太难过,但请你务必闭卷自己再敲一遍。
通过上一节的示例,除了帮助大家巩固所学的For循环的知识,更重要的是想通过该例子提供一种解决问题的思路,即分而治之(divide and conquer )。简言之,就是将一个复杂问题分解为一系列子问题(就上述例子,先分解为打印上下两部分,再将打印上下部分进一步细分为打印出各层),通过解决并整合各子问题最终得到原问题本身的答案。定义好接口(Interface, 就Excel VBA 而言 可理解为 函数签名部分,即定义函数参数以及输出。具体实现再所不问。如此例中的printRow, 在printAsteriods只进行调用)之后,项目的各个部分通过接口进行相互调用,降低子模块之间的耦合度从而最大程度实现代码复用。
编程领域的方法论引申到财务/审计实践之中也具有相当指导意义,譬如面对诸多宽泛的问题,比如怎样制作合并报表,运用分-治的思维,我们可以将母问题分解为两个步骤 1. 得到各子公司准确无误的单独报表 2. 将单独报表作为输入,通过调整、合并、抵消等处理,输出合并报表。同时这两个子问题本身作为下一个分-治过程的母问题进一步细分,如子问题1又可细分到总账 明细账 重复这个过程直至单笔分录。将一个线性的问题转化为庞大的层次分明的体系, 绝对是我从编程中学到的最重要的思维之一。
本期我们的主题是Array(数组) 这种数据结构, 为循环之For each进行一个铺垫。
数组变量的声明与赋值。
' 1. 模式1, 赋值时确定长度
'虽然末尾的括号可以省略,但项目当中推荐使用附加()的形式,与普通变量区别
' 使用Array 函数给未定长数组赋值
' 2. 模式2, 声明时确定长度, Dim arr(数组索引起始值 To 数组索引结束值),数组索引以及长度解释见下方
' 数组长度 = 数组索引结束值 - 数组索引起始值 + 1
' 也可定义多维数组,等我们实际用到再解释
' 通过索引给各元素赋值
' 模式2 中,如果采用变量而非字面量定义 数组索引起始值或结束值,则需运用ReDim 关键字
' 判断某个数组元素是否已经赋值 用 IsEmpty 函数,若未赋值则为 真
'注意,两种模式不能混用。以下代码会报错
要求将 输入两数组相同位置的元素组成的新数组 作为返回数组相应位置元素。如
值得注意,如果对于数组进行只读操作,优先考虑采用ByRef以提高效率(发送链接毕竟比发送超大文件的复制效率高)。
有兴趣可以实现 多数组zip,原理与两数组版本相同。
签名如下,其中ParamArray 关键字表示可变长参数
所谓 可变长参数 可以结合工作表函数SUM函数进行理解,即函数对于所传参数的个数没有限制,在SUM的例子当中,可以对于两个数字进行求和,也可以对于十个数字进行求和。
在单元格中输入以下公式
针对此种情况,上例中 参数 1,2,3,4作为数组元素被依次序封装于一个可变长参数数组当中。
例子2.2.2 递归,函数之巅: 试写出函数将 Array转化为相应 C 系语言通用的表示字符串,注意数组的嵌套。
注意检查数组为空(即Array())的情况下是否输出为 [ ]
可能用到 isArray 来判断元素是否为数组,字符串处理函数 left( 与工作表函数完全一致,详细信息请自己查询API)。
有任何问题请在下方留言。
本专栏所有文章著作权归属本人。未经本人书面许可,除知乎日报外,任何人不得转载。