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 cached
Mem: 2054216 1917316 136900 260 40320 125036
-/+ buffers/cache: 1751960 302256
Swap: 0 0 0
#free -h #用合适的单位显示使用情况
total used free shared buffers cached
Mem: 2.0G 1.8G 133M 260K 39M 122M
-/+ buffers/cache: 1.7G 295M
Swap: 0B 0B 0B
复制代码
Mem 一行指的是内存的使用情况
-/+ buffers/cache
-/buffers/cache 的内存数,相当于第一行的 used-buffers-cached
+/buffers/cache 的内存数,相当于第一行的 free+buffers+cached
Swap 行是交换空间的使用情况
total 总内存数
used 已经使用的内存数
free 空闲的内存数
shared 多个进程共享的内存总数
buffers 缓冲内存数
cached 缓存内存数
复制代码
不过在新的内核中,free 命令的输出发生了变化,比如:
#free
total used free shared buff/cache available
Mem: 1016060 542592 102148 29912 371320 240232
Swap: 0 0 0
复制代码
没有了-/+ buffers/cache,并且buff/cache列合并了
Mem 一行指的是内存的使用情况
Swap 行是交换空间的使用情况
total 总内存数
used 已经使用的内存数
free 空闲的内存数
shared 多个进程共享的内存总数
buff/cache 缓冲内存数
available 还可以被应用程序使用的物理内存大小
复制代码
Share
分享最近对的学习,这次分享的是SpringBoot 系列(6)- 测试,可能会有不足之处,之后会根据理解继续修改。
评论