前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第02期 ARTS 打卡计划

第02期 ARTS 打卡计划

作者头像
闻人的技术博客
修改2020-06-03 14:50:38
3550
修改2020-06-03 14:50:38
举报
文章被收录于专栏:程序员闻人程序员闻人

关于 ARTS:一个需要持续地坚持的高效学习项目,每周写一个ARTS:Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。

本周 ARTS:

  • Algorithm: 颠倒二进制位
  • Review: How to Design a Web Application: Software Architecture 101
  • Tip: Redis 缓存使用 Scan 命令快速查找 key
  • Share: Spring Boot 集成热部署

Algorithm: 颠倒二进制位

题目:颠倒二进制位

颠倒给定的 32 位无符号整数的二进制位。

代码语言:javascript
复制
示例 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,循环取最后一位,依次移动到下一位,直至右移完所有位数,退出循环。

代码语言:javascript
复制
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)

Review: How to Design a Web Application: Software Architecture 101

原文来源:medium

https://medium.com/better-programming/how-to-design-a-web-application-software-architecture-101-df568b88da76

阅读评论:设计 Web 应用的架构基础

文章介绍了什么是架构,为什么要重视架构,以及介绍如何做合适的架构设计,介绍了当下流行的几种架构模式,可以算是对架构基础介绍,每一节都更给了进一步深入了解的参考文章,在一些感兴趣的点上更值得深入学习下。

Tip: Redis 缓存使用 Scan 命令快速查找 key

主题:Redis 命令 Scan 的用法

使用 Redis 作为高效缓存,有时遇到缓存相关的问题,需要连接上远端缓存服务端,查看某个 key 对应的缓存数据,而又有时对 key 的名称记忆模糊,常常先使用 keys 命令模糊查询出目标 key,再检查其 value。但是 keys 命令存在很大的安全风险:由于 Redis 单线程,keys 命令是阻塞方式执行,并且以遍历方式查找,一旦 Redis 中 key 数量巨大,就更造成很长的阻塞时间来找到目标 key,期间会导致 Redis 失去对其他命令的响应。所以在生产环境都是要禁用 keys 命令的,取而代之的是使用非阻塞命令 scan 实现 key 值的查找。 命令用法:

代码语言:javascript
复制
SCAN CURSOR [MATCH pattern] [COUNT count]
  • CURSOR 表示开始迭代的游标位置,执行后服务器第一行也会返回的游标,作为下一次迭代的游标值使用,当返回为 0 时表示迭代结束;
  • pattern 表示需要模糊匹配的 key;
  • count 表示需要迭代的个数;

实例演示:

代码语言:javascript
复制
127.0.0.1:6379> SCAN 0 MATCH key* COUNT 10000
1) "0"
2) 1) "key5"
   2) "key2"
   3) "key3"
   4) "key1"
   5) "key4"

Share: Spring Boot 集成热部署

主要内容:Spring Boot 程序集成热部署

介绍了如何在 Spring Boot 程序实现热部署功能,提高开发调试效率。

文章地址

https://www.yuque.com/wenren/system/blog-0531

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 闻人的技术博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Algorithm: 颠倒二进制位
    • 题目:颠倒二进制位
      • 思路:位运算
      • Review: How to Design a Web Application: Software Architecture 101
        • 原文来源:medium
          • 阅读评论:设计 Web 应用的架构基础
          • Tip: Redis 缓存使用 Scan 命令快速查找 key
            • 主题:Redis 命令 Scan 的用法
            • Share: Spring Boot 集成热部署
              • 主要内容:Spring Boot 程序集成热部署
                • 文章地址
                相关产品与服务
                云数据库 Redis
                腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档