diff --git a/Go/lib/math/rand.go b/Go/lib/math/rand.go index fda3e64f..f66f8f6f 100644 --- a/Go/lib/math/rand.go +++ b/Go/lib/math/rand.go @@ -29,6 +29,14 @@ rand func (r *Rand) Read(p []byte) (n int, err error) func (r *Rand) Seed(seed int64) func (r *Rand) Shuffle(n int, swap func(i, j int)) + * 洗牌,n 表示元素长度,swap 为元素交换方法 + arr := []int{1, 2, 3, 4} + rand.Shuffle(len(arr), func(i, j int) { + // 交换元素位置 + arr[i], arr[j] = arr[j], arr[i] + }) + fmt.Println(arr) // [4 1 3 2] + func (r *Rand) Uint32() uint32 func (r *Rand) Uint64() uint64 diff --git "a/Go/\347\273\203\344\271\240/\345\237\272\344\272\216Redis\347\232\204\345\217\257\351\235\240MQ.go" "b/Go/\347\273\203\344\271\240/\345\237\272\344\272\216Redis\347\232\204\345\217\257\351\235\240MQ.go" index 14b83910..ebd7f00c 100644 --- "a/Go/\347\273\203\344\271\240/\345\237\272\344\272\216Redis\347\232\204\345\217\257\351\235\240MQ.go" +++ "b/Go/\347\273\203\344\271\240/\345\237\272\344\272\216Redis\347\232\204\345\217\257\351\235\240MQ.go" @@ -81,8 +81,8 @@ func ReQueue(ctx context.Context, count int) (int, error) { return items, nil } -// QueueLen 待消费队列长度 -func QueueLen(ctx context.Context) (int, error) { +// Len 待消费队列长度 +func Len(ctx context.Context) (int, error) { conn := rdb.Conn() size, err := conn.LLen(ctx, keyQueue).Result() return int(size), err diff --git "a/Java/java-\344\272\214\350\277\233\345\210\266.java" "b/Java/java-\344\272\214\350\277\233\345\210\266.java" index 361a80fe..742ed283 100644 --- "a/Java/java-\344\272\214\350\277\233\345\210\266.java" +++ "b/Java/java-\344\272\214\350\277\233\345\210\266.java" @@ -140,6 +140,7 @@ # 给定一个负数的二进制表示,要想知道它的十进制值,可以采用相同的补码运算 10010010 + * 已知是 1 开头,表示的值是一个负数 * 取反:01101101 * 加一:00000001 * 结果:01101110 @@ -147,21 +148,42 @@ 01101110 十进制值为: 110, 所以原值就是 -110 - * 对负数的补码表示做补码运算就可以得到其对应正数的原码,正如十进制运算中负负得正一样。 - * 原因是,只有这种形式,计算机才能实现正确的加减法。计算机其实只能做加法,1 - 1 其实是1+(-1) - - * 1-1 其实是 1 + (-1)。如果用原码表示: - 1 00000001 - -1 10000001 - + ------------------ - -2 10000010 + * 对负数的补码表示做补码运算就可以得到其对应正数的原码,正如十进制运算中负负得正一样。 + * 原因是,只有这种形式,计算机才能实现正确的加减法。计算机其实只能做加法,1 - 1 其实是1+(-1) + + * 1-1 其实是 1 + (-1)。如果用原码表示: + 1 00000001 + -1 10000001 + + ------------------ + -2 10000010 + + * 负数以补码性质,正确 + 1 00000001 + -1 11111111 // + + ------------------ + 0 00000000 - * 负数以补码性质,正确 - 1 00000001 - -1 11111111 // - + ------------------ - 0 00000000 + # 例如:计算 3 - 5 + 3 + * 原码:00000011 + + + + (-5) + * 原码:00000101 + * 取反:11111010 + * 加一:11111011 + + = + 00000011 + 11111011 + -------- + 11111110 + + * 最高位是:1 ,表示结果是负数 + * 取反:00000001 + * 加一:00000010 + * 结果为 2,由于是负数,则结果为 -2 ----------------------- 小数