现在 Java 面试,好像大家都喜欢问 HashMap 的实现原理。有的人可能会问,HashMap 有什么可聊的呢,网上随便找一篇关于 HashMap 博文,看一下不就可以了嘛?能考察出什么来呢?我在我们公司招聘过程中,也会问候选人关于 HashMap 这个问题,这个问题真的是网上找一篇文章看看,就能蒙混过关么?HashMap 到底问的什么呢?它能考察出候选人哪些方面的技能呢?
我来试着从我作为面试官的角度来分析一下这个问题。
coolcao的code点滴
现在 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的安全,其运行原理是怎样的,当我们深入了解下去,其设计的思路对我们其他安全方面的设计也有一定的启发作用。
素数,又称质数,我们在小数数学课上就已经学习到其概念:是指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数。
素数的概念简单至极,但对其的研究,却是数学家们终其一生的目的。当然,本篇文章不是讨论数学中对素数的研究,而是素数在现代密码学中的应用。
本文转载自 如何正确对用户密码进行加密?。由刘志勇翻译自Defuse Security团队的文章Salted Password Hashing - Doing it Right
作为一名Web开发人员,我们经常需要与用户的帐号系统打交道,而这其中最大的挑战就是如何保护用户的密码。经常会看到用户账户数据库频繁被黑,所以我们必须采取一些措施来保护用户密码,以免导致不必要的数据泄露。保护密码的最好办法是使用加盐密码哈希( salted password hashing)。
在对密码进行哈希加密的问题上,人们有很多争论和误解,可能是由于网络上有大量错误信息的原因吧。对密码哈希加密是一件很简单的事,但很多人都犯了错。本文将会重点分享如何进行正确加密用户密码。
重要警告:请放弃编写自己的密码哈希加密代码的念头!因为这件事太容易搞砸了。就算你在大学学过密码学的知识,也应该遵循这个警告。所有人都要谨记这点:不要自己写哈希加密算法! 存储密码的相关问题已经有了成熟的解决方案,就是使用 phpass,或者在 defuse/password-hashing 或 libsodium 上的 PHP 、 C# 、 Java 和 Ruby 的实现。
看到一篇文章,介绍在反爬虫过程中,前端工程师的各种脑洞,文章见这里。
文章里介绍了几个大的网站,在反爬虫过程中,采取的各式各样的策略,无不体现出前端工程师的奇葩脑洞。
还挺有意思的,就简单分析了一下,针对每个方案,看看有没有解决办法,于是整理成博客,记录一下。