设置:
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月29日星期三
2017年3月24日星期五
Java和Scala容器的转换
http://docs.scala-lang.org/zh-cn/overviews/collections/conversions-between-java-
and-scala-collections
import scala.collection.JavaConversions._
and-scala-collections
import scala.collection.JavaConversions._
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();
}
}
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模式依然出错。有时间再看看是什么问题。
我使用了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
数据库的url需要加上编码设置,类似:
jdbc:mysql://localhost:3306/springexample?characterEncoding=utf-8
订阅:
博文 (Atom)