概念动态规划(Dynamic programming,简称 DP),是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。若要解一个给定问题,我们需要解其不同部分(即子问题),再根据子问题的解以得出原问题的解。这与递归的思想一致,所以动态规划往往用于优化递归问题,利用动态规划的思想可以减少计算量。
最优子结构最优子结构指...
前言上篇讲的是二叉树的三种遍历方式,前中后序遍历方式,它们都属于深度优先遍历,所谓深度优先就是沿着树的深度遍历树的节点。而广度优先遍历则是从root开始,从左到右从上到下水平遍历树的节点,所以又称为层次遍历。深度优先借助的数据结构为栈,而广度优先借助的则是队列。
正文广度优先遍历由于在LeetCode中并没有找到相应的题目,所以我直...
前言最近在看面试题,基本已经知道算法这块地方是自己的薄弱点,特意复习记录一下。今天写的是二叉树的前中后序遍历,我会分别用递归还有迭代的方法实现。
正文前序遍历来源LeetCode第144题。
递归官方特意在题目中标注递归算法很简单,那么就先来看看递归算法。递归算法就是先得到结点值,然后递归遍历左子树和右子树。python代码如下
1...
前言之前讲过,在自己开发的公众号后台中有一个比较费时的请求操作,由于微信限制5秒内返回,无法立即返回结果,因此我开始寻找解决办法,最终决定使用任务队列来进行实现。
实践有些文章认为任务队列=消息队列,是一种解决方案,但我认为消息队列是任务队列的一部分,任务队列需要消息队列作支持。完整的任务队列不仅需要消息中间件(即消息队列),还需要...
前言这篇文章鸽了好久,拖稿了好几天,趁着有精力的时候多写写文章。Java语言一直被我认为是常见语言中最难的语言,主要是概念繁多,然后就是JVM的知识点复杂,导致尽管有些人会写代码,但是问到某个知识点却不知道为何是这样。今天谈谈Java中的反射机制。什么是反射呢?反射就是在Java编译期以外的时间可以动态的加载一个类。还可以实例化对象...
前言最近开发的公众号后台需要有一个比较费时的检索操作,向某api接口请求数据,但接口返回时间不定,公众号又规定必须在5秒之内返回,不然会重发三次请求,还是无响应则显示公众号故障。由于公众号没有认证,无法主动给用户发送消息,所以我想了两天,想了几种解决方案:1.直接使用requests的timeout,超过4秒的请求直接返回无结果,但...
前言最近在爬取某游戏攻略的时候,发现写入到json的文件中全是重复的字典,但是数据库中的数据却是正常的,在寻找了一段时间的bug后,想起来python中对赋值操作本质上是对象的引用,而不是复制对象,所以将字典”复制”后append到list中,只要这个字典发生变化,整个list中的字典都是一样的值。心血来潮,重新学习一下引用与拷贝。...
前言最近在使用springboot进行开发,也学习了不少spring的知识,记录一下spring中常用的注解,方便自己学习与查找。
正文@Beanbean是一个被实例化,组装,并通过 Spring IoC 容器所管理的对象。该注解主要定义在@Configuration或者@Component注解的类里,声明该方法的返回值是一个bea...
前言最近因为研究了下DNSsec技术突然想起来著名的DNS投毒,就是DNS缓存污染,今天趁着有点时间研究下某知名防火墙对DNS是怎么进行污染的。
原理由于DNS采用UDP协议来进行查询和应答,由于UDP是无连接的,所以当我们发送一个DNS请求时,如果有多个DNS响应包时,操作系统一般是以最先收到的响应包为准,这就使得了如果攻击者在正...
几个月没写文章,谈一谈最近一年都在干些啥事吧。从18年末开始,我就很少参加CTF比赛,不管大的小的,虽然没有参加,但还是有在业余的时候看看一些大型比赛的解题思路和漏洞报告。这一年来,也是学了不少东西,主要是使用python写了两个脚本,一个抢课脚本,一个群体签到软件,主要是感觉挺好玩的。18年末到19年1月左右,主要是深入学习了计算...