1、使用位运算乘法。

把一个乘数变为2进制后,使用位运算完成乘数的乘法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/* 
* 输入:正整数k 和 正整数m
* 输出:k*m
*/
__int64 km(__int64 k, __int64 m){
__int64 x = k;
int w = (int)floor(log(m) / log(2)) -1;
__int64 e = 1 << w;
for(int i=0; i<=w; i++){
x <<= 1;
if(m & e)
x += k;
e >>= 1;
}
return x;
}

2、使用位运算的乘方运算

指数变为2进制后,使用位运算完成乘方运算。

Read More

题目描述

一种杯子,若在第N层被摔破,则在任何比N高的楼层均会破,若在第M层不破,则在任何比M低的楼层均不会破,给你两个这样的杯子,让你在100层高的楼层中测试,要求用最少的测试次数找出恰巧会使杯子破碎的楼层。

Read More

事务ACID

原子性(Atomicity):要么全部执行,要么不执行。
一致性(Consistency):不改变数据库中数据的一致性。
独立性(Isolation):两个以上的事务不会出现交错执行的状态。
持久性(Durability):对数据库所作的更改是持久的保存。

Isolation并发可能引起的问题

1.脏读

允许读取到未提交的脏数据。

Read More