Fork me on GitHub

ARTS(5)

ARTS 第五周

每周完成一个ARTS(也就是 Algorithm、Review、Tip、Share 简称ARTS):

  1. 每周至少做一个 leetcode 的算法题
  2. 阅读并点评至少一篇英文技术文章
  3. 学习至少一个技术技巧
  4. 分享一篇有观点和思考的技术文章。

Algorithm

力扣 121. 买卖股票的最佳时机

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。

注意你不能在买入股票前卖出股票。

示例 1:

1
2
3
4
输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。

示例 2:

1
2
3
输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

思路:DP,维护一个数组,记录到 i 为止,利润的最大值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

import org.junit.Test;

public class 买卖股票的最佳时机 {

@Test
public void getResult() {
// int[] prices = {7, 1, 5, 3, 6, 4};
int[] prices = {7, 6, 4, 3, 1};
int result = maxProfit(prices);
System.out.println(result);

}

public int maxProfit(int[] prices) {
if (prices == null || prices.length == 0 || prices.length == 1) {
return 0;
}
int min = prices[0];
int max = Integer.MIN_VALUE;
int n = prices.length;
int[] dp = new int[n];
dp[0] = 0;
for (int i = 1; i < n; ++i) {
if (prices[i] < min) {
min = prices[i];
}
if (prices[i] - min > dp[i - 1]) {
dp[i] = prices[i] - min;
}
max = Math.max(max, dp[i]);
}
return max;
}
}


力扣 195. 第十行

给定一个文本文件 file.txt,请只打印这个文件中的第十行。

示例:

假设 file.txt 有如下内容:

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10

你的脚本应当显示第十行:

Line 10

1
2
3
4

# Read from the file file.txt and output the tenth line to stdout.
sed '10!d' file.txt

Review

英文原文:Creating a Spring Boot Configuration Server Using a Database

总结如下:

  1. 一般可以使用”文件系统”或者 git repository 作为配置信息的存储位置(configuration server),使用数据库存储配置信息也是可行的。使用数据库来配置的特点是:

    1. 更少的安全性问题;
    2. DB 中数据修改容易;
  2. 配置步骤:

    1. 配置pom.xml文件。

      1. 关键是spring-cloud-config-server,然后配置自己的 database driver 依赖。
    2. DB 中的表格

      1
      2
      3
      4
      5
      6
      7
      8
      9
      CREATE TABLE my_properties 
      (
      application VARCHAR(200),
      profile VARCHAR(200),
      label VARCHAR(200),
      KEY VARCHAR(200),
      value VARCHAR(200)
      )

    3. 关键:配置application.yml文件

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      spring:
      cloud:
      config:
      server:
      jdbc:
      sql: SELECT KEY, VALUE from MY_PROPERTIES where APPLICATION=? and PROFILE=? and LABEL=?
      order: 1
      datasource:
      url: <your db url here>
      driver-class-name: <your databases driver class here>
      username: <your user to database>
      password:
      hikari:
      maximum-pool-size: 10
      connection-timeout: 5000
      profiles:
      active:
      - jdbc

##Tip

推荐小程序:offerShow,在线比较校招工资,美滋滋~

Share

本次分享文章在本站另一处: Redis 源码解读(1),Redis 的源码较多,将分多篇博客逐步解析。

-------------The End-------------