Zap的使用与漏洞修复
这周POC了几个渗透测试工具,分别是Burp Suite,OWASP Zap。
其中Burp的很多功能都是收费的,免费版基本只是用来做请求拦截的。
所以最后选择Zap对一个Express项目进行了扫描了漏洞修复,这里简单记录一下Zap的使用教程,以及Express的一些安全实践。
这周POC了几个渗透测试工具,分别是Burp Suite,OWASP Zap。
其中Burp的很多功能都是收费的,免费版基本只是用来做请求拦截的。
所以最后选择Zap对一个Express项目进行了扫描了漏洞修复,这里简单记录一下Zap的使用教程,以及Express的一些安全实践。
上周在使用一个elementUI的table是,发现每次点击table的checkbox的时候,页面都会卡顿接近两秒钟,于是就用vue的devtools去记录了下每次的操作时间消耗在哪里,发现主要是因为elementUI的table虽然提供了树形数据和懒加载的功能,虽然子级节点没有展开,但是已经渲染出来了。
所以elementUI的table提供了懒加载的功能,但是这个懒加载的功能是有问题的,因为懒加载函数只会调用一次,以后无论如何变化数据,子节点都不会发生改变。
经过对vue和elementUI的源码分析,找到原因后适当fix了一下,在这里记录一下。
前面的六篇博客已经帮助我们基本搞清楚了,vue的响应式原理,数据驱动,组件化和组件更新等概念和原理,而其中关于组件化和组件更新的部分,我们是在已有render函数的基础上来讲的,也就是说我们已经有了vnode,再去讨论的vnode如何渲染更新的。
这篇博客我们就回过头来看看vue的compiler是如何将template变成render函数的。
了解编译的流程有什么好处呢?我个人觉得可以帮助我们对于一些vue自身的语法糖的原理有个更好的理解。
由于Compiler的细节非常多,所以大概有个结论和印象即可,其中很多关于vue自身的语法处理也不会细讲,只会用slot来做个例子。
数据结构与算法是一个非常大的范围,各种不同的问题需要不同的算法,这些算法或复杂或简单。这篇博客简单通过经典的背包问题介绍四种非常基本且常用的算法思想,分别是贪心,分治,回溯,动规。
这四种是算法思想,不是具体的算法,主要是理解其思路,而不是具体的实现。
这篇文章主要是帮我我把以前略显零散的知识点重新总结一下,所以很多具体内容在以前的其他博客中。
我们平时工作中会经常使用SringA.indexOf(StringB)这种子串查找函数,如果让我们自己实现,我们会怎么实现?
这次就记录下我们常说的四种字符串匹配算法,分别是BF,RK,BM和KMP算法。
前两种容易想到,也很简单,后面两种了解原理即可,这两种算是算法中比较难理解的两种,就算理解也很难写出没有bug的程序。
**对于计算机而言,它只知道利用内存地址去访问内存中的变量,我们人为分出了两种存储形式,一种是连续存储(也就是数组),一种是链式存储(链表),至于其他的数据结构其实都是对这两种存储形式的利用。任何一种数据结构都可以用两种存储形式去实现,只有合适不合适的问题,没有能不能的问题,因为最终都是利用内存地址去访问内存。**队列,栈我们平时都用数组实现,但是用链表也可以,比如树我们大部分情况下用链表实现,但是其实像完全二叉树用数组去实现也完全没问题。
这篇博客主要是**通过一些例子去分析这些情况下我们需要什么数据结构的什么特性,为了更好地满足这些特性,我们需要用数组还是链表去实现。**对于所有的内容都不会去细讲,更不会涉及具体实现,因为都很基础,但真要展开讲也会变成长篇大论,我们更主要的是从一个更高的层面看他们的一些特性。
散列表的英文叫“Hash Table”,我们平时也叫它“哈希表”或者“Hash 表”
散列表用的是数组支持按照下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。可以说,如果没有数组,就没有散列表。
为什么这么说呢?其实所谓的散列表的存储是从要存储的数据中抽取出某些数据,根据某个具体的规则计算出一个数组的下标,然后将这个数据存储到对应下标的位置,抽取出来的数据叫做键(key),或者叫关键字,这个规则就叫做散列函数,计算得到的数组下标就是散列值,或者叫Hash值。
我们具体举个例子,我们要把一个名叫abcd.txt的文档存储在散列表中,我们就以文件名作为key,设计一个散列函数,这个散列函数入参就是文件名,经过一系列的计算,得到数组的下标是3,那么就把这个文档的内容存储在数组下标为3的地方,下次我想看一下是否存储过abcd.txt的文档,可以再次执行散列函数,得到下标3,然后去查询下标为3的地方是否有数据。
我们在上大学的时候会接触很多基本的排序算法,到了工作后其实我们很多时候用的都是语言自带的一些排序方法,所以就会有些生疏,这次重看《数据结构与算法之美》,对这些基本的排序算法又有了一点进一步的理解,索性就重新回顾一遍这些基本的排序算法,并从几个新的角度去理解和使用它们,本文所有的排序都是从小到大排序,并且是从王争老师的课程中提取了一点关于基本排序的知识按照自己的思维方式重新组织并实现了一次,加入了一点自己的联想,比如计数排序与前缀和的关系,从一个新的角度理解归并排序与快速排序的区别,但还是强烈建议大家去购买王争老师的正版课程,真正的由浅入深,这样每个人的知识树不一样,构建起来的知识体系也不同。
Props
作为组件的核心特性之一,也是我们平时开发 Vue 项目中接触最多的特性之一,它可以让组件的功能变得丰富,也是父子组件通讯的一个渠道。
在这里感谢ustbhuangyi大佬的慕课教程。