关于 ARTS:一个需要持续地坚持的高效学习项目,每周写一个ARTS:Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。
本周 ARTS:
颠倒给定的 32 位无符号整数的二进制位。
示例 1:
输入: 00000010100101000001111010011100
输出: 00111001011110000010100101000000
解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,
因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。
示例 2:
输入:11111111111111111111111111111101
输出:10111111111111111111111111111111
解释:输入的二进制串 11111111111111111111111111111101 表示无符号整数 4294967293,
因此返回 3221225471 其二进制表示形式为 10111111111111111111111111111111 。
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-bits 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
用 n&1 取数的最后一位,并且移动到第31位,然后将数整体右移一位覆盖: n=n>>>1,循环取最后一位,依次移动到下一位,直至右移完所有位数,退出循环。
public class Solution2 {
public int reverseBits(int n) {
int result = 0;
for (int size = 31; n != 0; n = n >>> 1, size--) {
result += (n & 1) << size;
}
return result;
}
}
时间复杂度:O(1)
https://medium.com/better-programming/how-to-design-a-web-application-software-architecture-101-df568b88da76
文章介绍了什么是架构,为什么要重视架构,以及介绍如何做合适的架构设计,介绍了当下流行的几种架构模式,可以算是对架构基础介绍,每一节都更给了进一步深入了解的参考文章,在一些感兴趣的点上更值得深入学习下。
使用 Redis 作为高效缓存,有时遇到缓存相关的问题,需要连接上远端缓存服务端,查看某个 key 对应的缓存数据,而又有时对 key 的名称记忆模糊,常常先使用 keys 命令模糊查询出目标 key,再检查其 value。但是 keys 命令存在很大的安全风险:由于 Redis 单线程,keys 命令是阻塞方式执行,并且以遍历方式查找,一旦 Redis 中 key 数量巨大,就更造成很长的阻塞时间来找到目标 key,期间会导致 Redis 失去对其他命令的响应。所以在生产环境都是要禁用 keys 命令的,取而代之的是使用非阻塞命令 scan 实现 key 值的查找。 命令用法:
SCAN CURSOR [MATCH pattern] [COUNT count]
实例演示:
127.0.0.1:6379> SCAN 0 MATCH key* COUNT 10000
1) "0"
2) 1) "key5"
2) "key2"
3) "key3"
4) "key1"
5) "key4"
介绍了如何在 Spring Boot 程序实现热部署功能,提高开发调试效率。
https://www.yuque.com/wenren/system/blog-0531