递归在编程时,是一项非常有用的思想,对分析问题很有帮助。可是在面试聊候选人的时候发现,很多人对递归的认识不是很到位,经常得到的回答就是“递归就是自己调用自己啊”这样的回答。然而在什么情况下用递归,或者递归解决了什么样的问题等,基本就回答不上来了。
递归虽然很简单,但也不至于简单到,“递归就是自己调用自己啊”这种程度。
这篇文章也是自己的一份整理总结吧,对自己知识的巩固。
coolcao的code点滴
递归在编程时,是一项非常有用的思想,对分析问题很有帮助。可是在面试聊候选人的时候发现,很多人对递归的认识不是很到位,经常得到的回答就是“递归就是自己调用自己啊”这样的回答。然而在什么情况下用递归,或者递归解决了什么样的问题等,基本就回答不上来了。
递归虽然很简单,但也不至于简单到,“递归就是自己调用自己啊”这种程度。
这篇文章也是自己的一份整理总结吧,对自己知识的巩固。
一直觉得,程序员应该持续的修炼内功,训练编程思维。最近也是不间断的在做 LeetCode 算法题,来锻炼思维。可是,今天在一道难度为 Easy 的题目上,栽了,受打击了,于是整理成此博文,来记录一下吧。
数学一向是非常严谨的,在生活中,有用到数学的地方也是和我们的直觉相符的。但确实会有一些反直觉的数学现象存在,而且非常有趣,今天我就整理了之前遇到的一些非常有趣的反直觉的数学问题,来聊聊为什么数学在生活中那么有用。
现在 Java 面试,好像大家都喜欢问 HashMap 的实现原理。有的人可能会问,HashMap 有什么可聊的呢,网上随便找一篇关于 HashMap 博文,看一下不就可以了嘛?能考察出什么来呢?我在我们公司招聘过程中,也会问候选人关于 HashMap 这个问题,这个问题真的是网上找一篇文章看看,就能蒙混过关么?HashMap 到底问的什么呢?它能考察出候选人哪些方面的技能呢?
我来试着从我作为面试官的角度来分析一下这个问题。
在做Java项目的时候,我们经常会使用 Sonar Qube来进行代码质量检查工作。查看了一下其文档,sonar qube不仅可以做Java的检查,还支持其他语言,比如js, ts等等。
本文简单记录如何配置sonar服务,如何使用其进行前端项目的代码质量检查工作。
排序算法分为内部排序和外部排序,而我们经常说的基础排序算法,都是内部排序算法。包括冒泡排序,选择排序,插入排序,快速排序,并归排序,希尔排序,堆排序等。
这里总结一下这几种排序算法,以备不时之需。
之前在爬虫攻防之前端策略简析这篇文章中简单分析过目前Web前端对于反爬虫而采取的一些方式,比如使用图片,使用自制字体,还有使用CSS错位等方式,这几种方式中比较流行的自定义字体形式,我在文章中也做了一定的分析,处理得当也可以进行破解。
READ UNCOMMITTED 未提交读
在READ UNCOMMITTED级别,事务中的修改,即使没有提交,对其他事务也都是可见的。事务可以读取未提交的数据,这也被称作脏读。这个级别会导致很多问题,从性能上来说,READ UNCOMMITTED不会比其他的级别好太多,但确缺乏其他级别的很多好处,除非真的有必要的理由,在实际应用中一般很少使用。
READ COMMITED 提交读
大多数数据库系统的默认隔离级别是 READ COMMITED(但mysql不是)。READ COMMITED满足前面提到的隔离性简单定义:一个事务开始时,只能看见已经提交的事务所做的修改。换句话说,一个事务从开始直到提交之前,所做的任何修改对其他事务都是不可见的。这个级别有时候也叫做不可重复读,因为两次执行同样的查询,可能会得到不一样的结果。
这里的原因是,在两次执行同样的查询中间,可能由其他事务修改了影响查询结果的数据。在 Read Commited级别下,会发生这种情况。
REPEATABLE READ 可重复读
MySQL的默认事务隔离级别。
REPEATABLE READ解决了脏读的问题。该级别保证了在同一个事务中多次读取同样的记录的结果是一致的。但是理论上,可重复读隔离级别还是无法解决另一个幻读的问题。所谓幻读,指的是当某个事务在读取某个范围内的记录时,另外一个事务又在该范围内插入了新的记录,当之前的事务再次读取该范围的记录时,会产生幻行。InnoDB存储引擎通过多版本并发控制(MVCC)解决了幻读的问题。
在一个事务未提交前,多次查询相同的查询,都会返回相同的结果。即使在此期间有其他事务已提交了影响该查询的数据。
SERIALIZABLE 可串行化
SERIALIZABLE 是最高的隔离级别。它通过强事务串行执行,避免了前面说的幻读的问题。简单来说,SERIALIZABLE会在曲度的每一行数据都加上锁,所以可能导致大量的超时和锁争用的问题。实际应用中也很少用到这个隔离级别,只有在非常需要确保数据一致性而且可以接受没有并发的情况下,才考虑使用该级别。
HTTPS可以看作是安全的HTTP,你可能听说过关于HTTPS的一些问题,比如什么握手,什么证书,加密之类的等等。
HTTPS为何能保障web的安全,其运行原理是怎样的,当我们深入了解下去,其设计的思路对我们其他安全方面的设计也有一定的启发作用。