2017年3月29日星期三

clion设置代码格式

设置:
Editor -> Code Style:
Default Options中设置right margin为80。

Editor -> Code Style -> C/C++:
右侧的Set from...,选择导入google code style。
设置好后再做一些微调:
Wrapping and Braces标签页中'switch' statement里面去掉Keep simple cases in one line。
Spaces标签页中Others里面勾上After '*' in declarations和After '&' in declarations,去掉Before '*' in declarations和Before '&' in declarations。

2017年3月19日星期日

5. Longest Palindromic Substring 最长回文子串问题

Manacher算法,复杂度O(n),贴一下自己的代码:
public class Solution {
    public String longestPalindrome(String s) {
        List<Character> s2 = new ArrayList<>();
        int size = s.length();
        int[] p = new int[size * 2 + 2];
        s2.add('$');
        s2.add('#');
        for (int i = 0; i < size; ++i) {
            s2.add(s.charAt(i));
            s2.add('#');
        }
        s2.add('@');
        int index = 0;
        int max = 0;
        int len2 = s2.size();
        for (int i = 1; i < len2 - 1; ++i) {
            if (max > i) {
                p[i] = Math.min(max - i, p[2 * index - i]);
            } else {
                p[i] = 1;
            }
            for (; s2.get(i - p[i]) == s2.get(i + p[i]); p[i] += 1);
            if (p[i] + i > max) {
                max = p[i] + i;
                index = i;
            }
        }
        int res = 0;
        int resIndex = 0;
        for (int i = 1; i < len2 - 1; ++i) {
            if (res < p[i]) {
                res = p[i];
                resIndex = i;
            }
        }
        StringBuilder sb = new StringBuilder();
        for (int i = resIndex - res + 1; i < resIndex + res; ++i) {
            if (s2.get(i) != '#') {
                sb.append(s2.get(i));
            }
        }
        return sb.toString();
    }
}

2017年3月2日星期四

传递java option的-D参数给spark-submit

参考http://stackoverflow.com/questions/28166667/how-to-pass-d-parameter-or-environment-variable-to-spark-job

我使用了com.typesafe.config,需要根据生产环境通过java option参数指定不同的config文件,saprk-submit增加如下选项:
--files your/config/file
--conf "spark.driver.extraJavaOptions=-Dconfig.resource=your_config_file.conf"
--conf "spark.executor.extraJavaOptions=-Dconfig.resource=your_config_file.conf"

在yarn-cluster模式下可行。
尝试了把--conf "spark.driver.extraJavaOptions" 换成了--driver-java-options,yarn-client模式依然出错。有时间再看看是什么问题。

spring data jpa中repository.save中文乱码

mysql编码设置正常,自己使用insert语句中文也显示正常,所以问题在spring。

数据库的url需要加上编码设置,类似:
jdbc:mysql://localhost:3306/springexample?characterEncoding=utf-8