线程不安全的原因
- HashMap底层是一个Entry数组,一旦发生Hash冲突的的时候,HashMap采用拉链法解决碰撞冲突.
- put方法也不是同步的
- 扩容的方法也不是同步的
参考:https://www.cnblogs.com/qiumingcheng/p/5259892.html
参考:https://www.cnblogs.com/qiumingcheng/p/5259892.html
http://blog.csdn.net/u014044812/article/details/51004754
http://blog.csdn.net/bitcarmanlee/article/details/51004767 (含流程图)
√:可能会出现
×:为不会出现
name | 名称 | 级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|---|---|
Read uncommitted | 读未提交 | 1 | √ | √ | √ |
Read committed | 读提交 | 2 | × | √ | √ |
Repeatable read | 重复读 | 3 | × | × | √ |
Serializable | 序列化 | 4 | × | × | × |
Oracle 支持的 2 种事务隔离级别:READ COMMITED, SERIALIZABLE.
Oracle 默认的事务隔离级别为: READ COMMITED
Mysql 支持 4 中事务隔离级别.
Mysql 默认的事务隔离级别为: REPEATABLE READ
最多有两棵子树的有序树,称为二叉树。二叉树是一种特殊的树。
这里规定二叉树的根结点的层次为1。
n0 = n2 + 1
https://github.com/hisenyuan/btree
1 | package com.hisen.interview.tiger20171110.btree; |
遍历方式:前序、中序、后序、层次
1 | #删除原有的规则 |
带来的问题就是:
内网的数据库,在启动之后。时不时会自动断开,导致影响正常工作,时不时得重启程序才能测试
在eclipse中有列编辑模式:toggle block selection mode
在idea中也可以,而且还比较高级,哈哈
idea -> 右上角 -> Edit -> Column Selection Mode -> 移动光标到你想要弄的行
完事在重复一次,就可以退出列编辑模式
最小公倍数:
数论中的一种概念,两个整数公有的倍数成为他们的公倍数
其中一个最小的公倍数是他们的最小公倍数
同样地,若干个整数公有的倍数中最小的正整数称为它们的最小公倍数
求最小公倍数算法:
最小公倍数=两整数的乘积÷最大公约数
求最大公约数算法:
有两整数a和b:
例如:求27和15的最大公约数过程为
因此,3即为最大公约数
代码实现:
1 | /** |
早些天不忙的时候看的入门,从有道云笔记搬过来的
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
昨天在群里看到有人问怎么通过sql在oracle中取微秒
以前没有遇到过,就搜索了一下,找了一会给找到了
1 | select to_char(systimestamp, 'yyyy-mm-dd hh24:mi:ss ff') from dual; |
输出:年-月-日 时:分:秒 微秒
1 | 2017-9-24 10:38:27 129368 |
很少问题是搜索引擎找不到的,学会如何描述问题才是关键
布隆过滤器的作用是加快判定一个元素是否在集合中出现的方法。
因为其主要是过滤掉了大部分元素间的精确匹配,故称为过滤器。
其应用场景为需要频繁在一个海量的集合中查找某个元素是否存在。
并且通常,这个值不在集合中。
比如Google chrome用此方法检查一个url是否在恶意url库中。
假设有一些字符串,假设有一个字符串a,要在集合B中查找其是否在集合B中。最笨的方法是遍历集合B中的每个元素bi,精确匹配a是否等于bi。若集合B中有N个元素,则最坏情况下需要执行N次精确匹配。
一个改进的方法是将a和B中每个字符串按照特定规则映射为数字,称为hash值。规则可以任意设置。比如取各字符串的首字母和尾字母的编码之乘积,取奇数个字符的编码执行异或,等。将比较字符串问题变成一个比较数字的问题。比较字符串需要从头到尾比较,而数字的比较会快很多。
需要注意的是,当两个字符串相同时,采用相同的映射规则得到的数字一定相同。但当两个字符串不同时,得到的字符串不一定不同。所以,当我们发现两个字符串的hash值相同时,两个字符串不一定相同,所以需要进一步去精确匹配两个字符串是否相同。但采用hash值方法已经能够过滤掉一部分以前需要精确匹配的计算量。仅当hash值相同(假设hash值通过字符串首尾字母计算得来,则当两个字符串首尾字母相同时hash值相同)时才去比较字符串本身。若选择hash值合理,则性能将大幅提高。
布隆过滤器通过将一个字符串使用多个不同的hash值计算方法,映射为多个不同的hash值,当所有这些hash值完全相同时,才认为两个字符串相同。从而进一步降低了放生hash值相同的可能性,从而进一步提高了过滤的性能。
算法使用了md5值来生成n个不同的hash值