ARTS 简介
Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。
Algorithm
力扣(LeetCode)67. 二进制求和
给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 和 0。
 示例 1:
输入: a = "11", b = "1"输出: "100"示例 2:
输入: a = "1010", b = "1011"输出: "10101"
   复制代码
 
提示:
每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。 1 <= a.length, b.length <= 10^4 字符串如果不是 “0” ,就都不含前导零。
解题思路: 这道题如果可以直接将数字转化为 10 进制,可以简单获得答案,但是需要注意的是值如果过大,可能会超出 int 或 long 的范围, 也可以通过模拟加法操作来进行
 class Solution {    public String addBinary(String a, String b) {        StringBuilder ans = new StringBuilder();        int loopLen = Math.max(a.length(), b.length());        int carry = 0;//以2为限制        for (int i = 0; i < loopLen; i++) {            int abit;            int bbit;            if (i < a.length()) {                abit = a.charAt(a.length() - 1 - i) - '0';            } else {                abit = 0;            }            if (i < b.length()) {                bbit = b.charAt(b.length() - 1 - i) - '0';            } else {                bbit = 0;            }            int tmp = abit + bbit + carry;            ans.append(tmp & 1);            carry = tmp / 2;        }        if (carry > 0) {            ans.append('1');        }        int tm = '0';        System.out.println(tm);        ans.reverse();        return ans.toString();    }}
   复制代码
 
ps:参考资料
- 《剑指Offer:名企面试官精讲典型编程题(第2版)》
 
 
- labuladong 的算法小抄
 
 
Review
学习-微服务架构模式系列,网站地址是:https://microservices.io 微服务架构-Pattern: Externalized configuration 这篇文章的主要介绍了微服务架构下对横切关注点的处理:外部化配置 背景:使用微服务架构,可能会有很多第三方的组件,不同的环境需要配置不同的参数 问题:在不修改代码的前提下如何在不同的环境中运行
强制条件:
- 使用配置的方式连接第三方服务 
- 支持不同的环境 
- 不同的环境不同的第三方服务 
解决方法,外部化所有程序配置,程序启动时读取配置文件, 比如使用 springboot 的话,可以将配置外部化
好处
- 不重新编译或不修改的前提下,支持多环境 
需要解决的问题
- 如何确保在合适的环境运行合适的配置 
ps:《微服务架构设计模式》
Tips
记录我对于 Linux 的学习,网络管理的命令:
ps:“~” 表示为 home 目录,“.” 则是表示目前所在的目录,“…” 则表示当前目录的上一层目录 -h 用人类可读的格式展示(G(千兆字节),M(兆字节),K(千字节)),大部分命令有这个参数
free
free 用于显示内存状态,包括物理内存、交换内存(swap)和内核缓冲区内存 用法: free [选项] 选项:
- -b  以 Byte 为单位显示内存使用情况。 
- -k  以 KB 为单位显示内存使用情况。 
- -m  以 MB 为单位显示内存使用情况。 
- -h  以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。 
- o  不显示缓冲区调节列。 
- -s<间隔秒数>  持续观察内存使用状况。 
- -t  显示内存总和列。 
- -V  显示版本信息。 
 #free            total       used       free     shared    buffers     cachedMem:       2054216    1917316     136900        260      40320     125036-/+ buffers/cache:    1751960     302256Swap:            0          0          0#free -h #用合适的单位显示使用情况             total       used       free     shared    buffers     cachedMem:          2.0G       1.8G       133M       260K        39M       122M-/+ buffers/cache:       1.7G       295MSwap:           0B         0B         0B
   复制代码
 
 Mem 一行指的是内存的使用情况-/+ buffers/cache    -/buffers/cache 的内存数,相当于第一行的 used-buffers-cached    +/buffers/cache 的内存数,相当于第一行的 free+buffers+cachedSwap 行是交换空间的使用情况
total 总内存数used 已经使用的内存数free 空闲的内存数shared 多个进程共享的内存总数buffers 缓冲内存数cached 缓存内存数
   复制代码
 
不过在新的内核中,free 命令的输出发生了变化,比如:
 #free            total        used        free      shared  buff/cache   availableMem:        1016060      542592      102148       29912      371320      240232Swap:             0           0           0
   复制代码
 
 没有了-/+ buffers/cache,并且buff/cache列合并了Mem 一行指的是内存的使用情况Swap 行是交换空间的使用情况
total 总内存数used 已经使用的内存数free 空闲的内存数shared 多个进程共享的内存总数buff/cache 缓冲内存数available 还可以被应用程序使用的物理内存大小
   复制代码
 
Share
分享最近对的学习,这次分享的是SpringBoot 系列(6)- 测试,可能会有不足之处,之后会根据理解继续修改。
评论