ssh远程登录或者使用ssh协议的命令(比如scp)慢时,可以按照如下步骤检查
关闭 服务端 的sshd服务DNS解析配置,在服务端:
sudo vim /etc/ssh/sshd_config
# 修改
UseDNS no
sudo systemctl restart sshd
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>2.0.2</version>
</dependency>
hbase-site.xml
拷贝到src/main/resources/
目录下,如果需要打包然后在其他服务器上跑的话,将该配置文件放置在classpath
下即可。slice 翻译成中文就是切片,它和数组(array)很类似,可以用下标的方式进行访问,如果越界,就会产生 panic。但是它比数组更灵活,可以自动地进行扩容。
// runtime/slice.go
type slice struct {
array unsafe.Pointer // 元素指针
len int // 长度
cap int // 容量
}
slice 共有三个属性:
在Java
程序中,我们经常遇到一大堆单方法接口,即一个接口只定义了一个方法,此时可以以匿名类方式编写。如下是一个排序的例子
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) throws Exception {
String[] array = {"ccc", "aaa", "bbb"};
Arrays.sort(array, new Comparator<String>() {
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
});
System.out.println(Arrays.toString(array));
}
}
Lambda
的方式来编写,可以简化代码如下
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws Exception {
String[] array = {"ccc", "aaa", "bbb"};
Arrays.sort(array, (s1, s2) -> s1.compareTo(s2));
System.out.println(Arrays.toString(array));
}
}
一个线程可以等待另一个线程直到其运行结束。例如,main线程在启动t线程后,可以通过t.join()
等待t线程结束后再继续运行。如果去掉 t.join()
后,main主线程和新创建的子线程就是同步运行的。
守护线程
t.setDaemon(true)
设置线程为守护线程。
public class Main {
public static void main(String[] args) {
Thread t = new MyThread();
t.start();
t.join();
}
}
class MyThread extends Thread {
@Override
public void run() {
System.out.println("start new thread!");
}
}
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
String encoded = URLEncoder.encode("中 文!", StandardCharsets.UTF_8);
System.out.println(encoded);
String decoded = URLDecoder.decode("%E4%B8%AD+%E6%96%87%21", StandardCharsets.UTF_8);
System.out.println(decoded);
Base64编码可以把任意长度的二进制数据变为纯文本,且只包含A~Z、a~z、0~9、+、/、=这些字符。
原理
注意: 使用matches是整个字符串的匹配,find可以提取出部分。
String.matches()
对同一个正则表达式进行多次匹配效率较低,因为每次都会创建出一样的Pattern
对象。
String regex = ".*";
System.out.println("abc".matches(regex));
Pattern
对象,然后反复使用,就可以实现编译一次,多次匹配。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
Pattern p = Pattern.compile(".*");
Matcher m = p.matcher("abc");
System.out.println(m.matches());
Java程序最小的功能单元是方法,因此,对Java程序进行单元测试就是针对单个Java方法的测试。对于高质量的代码来说,测试覆盖率应该在80%以上。
package com;
public class HelloJava {
public int age;
public HelloJava(int age) {
this.age = age;
}
}
# 当前时间 => 时间戳
date +%s
# 指定时间 => 时间戳
date +%s -d '2020-05-18 12:00:00'