caroly 1 个月前

获取 topic 主题的列表:

bin/kafka-topics.sh --list --zookeeper localhost:2181
caroly 1 个月前

Redis 集群最大节点个数是 16384 个。
Redis 单个 key 最大 512M。
Redis 集群间 异步复制。

caroly 1 个月前

使用 Thread 类的 join() 方法来确保所有程序创建的线程在 main() 方法退出前结束。

caroly 1 个月前

Integer 与 int 相比,会占用更多的内存。

原因:Integer 是一个对象,需要存储对象的元数据。
     int 是一个原始类型的数据,所以占用的空间更少。

caroly 1 个月前
System.out.println(3* 0.1== 0.3);    // false

有些浮点数不能完全精确的表示出来。

caroly 1 个月前

Java 中 for 循环 i++ 和 ++i 的区别:
首先是 for 循环的执行过程:

for(A; B; C) {
    D;
}

即:

  • 进入循环执行 A;// 只是进入的时候执行
  • 执行 B;// 条件为真执行 D,为假跳出 for 循环
  • 执行 D;
  • 执行 C;
  • 回到第二步开始执行

为此,在 for 循环中 i++ 和 ++i 的执行结果是相同的,但是在 Java 中 i++ 语句是需要一个临时变量去存储返回自增前的值,而 ++i 不需要。这样就导致使用 i++ 时系统需要先申请一段内存空间,然后将值塞入进去,最后不用了才去释放。

caroly 1 个月前

通过反射调用对象的方法:

import java.lang.reflect.Method;
class MethodInvokeTest {
    public static void main(String[] args) throws Exception {
        String str = "hello";
        Method m = str.getClass().getMethod("toUpperCase");
        System.out.println(m.invoke(str));

//        System.out.println(str.toUpperCase());
    }
}
caroly 1 个月前

编写一个 Scala 应用程序来实现词频统计:

import org.apache.spark.{SparkConf, SparkContext}
object SparkWC {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf()
    conf.setAppName("wordcount")
    conf.setMaster("local")
    val sc = new SparkContext(conf)

    sc.textFile("./data/words").flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).foreach(println)
    sc.stop()
  }
}

注:某些变量在匿名函数内部只用了一次可以用 "_" 将其表示

caroly 1 个月前

将 GB2312 编码的字符串转换为 ISO-8859-1 编码的字符串:

String s1 = "你好";
String s2 = new String(s1.getBytes("GB2312"), "ISO-8859-1");
caroly 3 个月前

Impala 性能优化

  • SQL 优化,使用之前调用执行计划
  • 选择合适的文件格式进行存储
  • 避免产生很多小文件(如果有其他程序产生的小文件,可以使用中间表)
  • 使用合适的分区技术,根据分区粒度测算
  • 使用 compute stats 进行表信息搜集
  • 网络 io 的优化:
    • 避免把整个数据发送到客户端
    • 尽可能的做条件过滤
    • 使用 limit 字句
    • 输出文件时,避免使用美化输出
  • 使用 profile 输出底层信息计划,再做相应环境优化