本文csdn地址

本文公众号地址

前言

要问对一门技术感兴趣的最好办法是什么,必然不是直接揪着原理、源码一点点读,那很容易只见其木不见其林。不妨从新特性去了解,先俯瞰森林全貌,再细看每一棵树的变化

于是刚旅游回来的我在想,已经这么久没关注技术行情了,那就看看这个月的更新呗,了解一下接触过的技术都有哪些更新

总览: 大数据: hue、starrocks、airflow、presto、jupyter、seatunnel、starrocks;编程语言: golang、c++

大数据

hue

1月19: 4.11
https://docs.gethue.com/releases/release-notes-4.11.0/

hue release

总结: 基本是小改进,界面样式和4.10一致

starrocks

8月25: 3.1.2

starrocks release

3.1 版本相关的新特性(部分)

  • 存算分离: 支持主键模型

  • 存算分离: 抽象 存储卷(Storage Volume) 概念,方便在不重启集群的情况下,对对象存储的配置进行修改

  • Catalog: 支持 ES、Paimon

  • ​物化视图: 可以通过ALTER手动重新激活失效的物化视图(之前在 base 表重建后,物化视图需要重建)

  • 物化视图: 通过 swap 可进行视图替换(目前还不支持直接 alter 视图 sql)

  • 物化视图: 支持随机分桶(Random Bucketing)

  • 物化视图: 支持通过 ORDER BY 指定排序键

  • 建表: 支持自增列属性 AUTO_INCREMENT,提供表内全局唯一 ID

  • 建表: 通过分区表达式自动创建分区,比如 day 表示按天分区

  • 建表: 支持随机分桶(仅支持明细表)

  • 建表: 支持使用 colocate_group、storage_medium(存储介质 如:SSD)、storage_cooldown_time 等属性

  • 建表: 支持生成列(generated column),自动计算表达式结果,提升查询性能

  • 导入数据: 通过 insert into 导入数据的时候支持 files 函数,不需要先建 catalog

总结: starrocks 作为目前比较流行的实时数仓服务,3.0 版本在物化视图的改进还是很足的,非常建议尝试

airflow

8月18: 2.7.0

airflow release

之前版本的dag界面:
airflow

新版本dag界面:
airflow

总结: 基本功能改动不大,有两个主要特性都和安全性相关

presto

8月8: 0.283

0.276 ~ 0.283 的部分改进

jupyter

4.0

快速使用:

1
docker run -it --rm -p 8888:8888 jupyter/datascience-notebook:lab-4.0.5

jupyterlab

  • code editor: 使用新版 codemirror 6,配置更有效和方便,比如只隐藏 markdown 格式的左侧行数

  • extension: 可以直接引用通过 pip 安装的依赖,不再需要本地再把 extension 项目重新 build 的过程

  • 基本操作: 优化搜索功能,支持选中搜索、多行搜索

  • UI: 增加 ctrl + shift + H 快捷键查看热键,在 notebook 底部增加创建新代码块按钮等

add cell

总结: 4.0 版本之后界面样式和 3 差不多,不过还是能看到很明显的一些细节改进,值得尝试

seatunnel

2.3.3

参考: Apache SeaTunnel 2.3.3 版本发布,CDC 支持 Schema Evolution!
Apache SeaTunnel 2.3.3 Released with CDC Support for Schema Evolution!

  • 实时同步: flink cdc 支持表结构同步(DDL)

  • 实时同步: flink cdc 支持对无主键表的唯一索引列进行 split 拆分

  • mongo: 支持 mongo cdc

编程语言

golang

1.21

Go 1.21 is released!(8月8日)

Go1.21 那些事:泛型库、for 语义变更、统一 log/slog、WASI 等新特性,你知道多少?

Is Go 1.21 already on your upgrade list? It should be!

  • 日志: 标准库新增 slog,支持格式化日志输出、自定义 handler 和 日志等级
    reddit 上的讨论: 大部分开发者都很欢迎 go 官方支持了slog

  • 内置函数: 新增 max、min、clear。不再需要通过 math.Max 调用,且通过泛型支持不同基础类型传参

  • 内置函数: cmp 支持泛型

  • 基础类型: map、slice 支持泛型,并提供支持泛型的 mapsslices 工具库
    常用方法: slices.Sort、maps.Equal 等

  • 泛型: 性能提升
    Understanding Go 1.21 generics type inference

  • 基本语法: for 循环变量赋值语义变更,可通过添加 GOEXPERIMENT=loopvar 参数控制让局部变量每次赋予新值,避免在循环内开启协程、使用指针时出现不符预期的结果,参考: Using reference to loop iterator variable

  • 编译: PGO(Profile Guided Optimization) 正式发布,通过在 main 代码目录放置 default.pgo(可通过 /debug/pprof/profile 接口生成的 profile)文件来开启 PGO build,将对程序性能有 2% - 7% 的提升

  • 命令行和工具: go tool 支持向前(旧版本)兼容和向后(新版本)兼容
    向前: 如设置 GODEBUG=http2client=0,http2server=0 可禁用 net/http 库的 http2 功能,参考
    向后: 如通过 GOTOOLCHAIN=go1.21rc3 go test 参数设定 go tool 使用的版本,参考

  • Context: context 新增 WithoutCancel 、WithDeadlineCause 、 WithTimeoutCause、AfterFunc 等方法

  • 其他特性等: 支持 WASI;增加全局的 $GOROOT/go.env 配置解析(优先级: 系统环境变量 > 用户路径下的 go.env,即 $HOME/.config/go/env > $GOROOT/go.env)等

总结: 相比泛型,像日志库、一些内置函数和 context 新增方法反而更让笔者眼前一亮,这些是在旧功能上进行的添彩功能,可能在平时更能用上

c++

10分钟速览 C++20 新增特性

新版 C++ 特性(c++11)

What Is Modern C++ in 2023?

What is new in C++20

官方-C++20

注意: 使用 gcc 编译需要先升级到 10 以上版本 - 参考

总结: 更新虽然很多,但是 coroutine 使用起来需要引入相关的如此多的关键字,着实让我敬而远之。类似的吐槽,其中有人建议使用封装后的库 如 cppcoro,以及对比 Rust 语言的 Async 和 Await 用法: Async/Await for AVR with Rust