ClickHouse

ClickHouse 官网:clickhouse.com 学习资料:谷粒 核心要点: MergeTree引擎 OrderBy是主键 分布式 Explain 参数配置 语法规则 多表联查(join) 面试题 1.不支持真正的delete/update操作,不支持transactions(事物) OLAP引擎一般都不支持事物,ClickHouse的定位也是分析性数据库,而不是严格的关系型数据库,加入对于事物的支持, 必然会有锁,同时分布式事物的支持,会带来更复杂的实现,其中诸多因素,都会影响写入和查询的性能。 2.不支持高并发查询,官方建议100 QPS ClickHouse是并行计算,单个查询就可以跑满多个CPU核心,而不像MySQL单个查询单线程执行。 3.需要批量写入,频繁的单条写入会带来写入问题 ClickHouse存储结构有点类LSM,每次的insert基本都会生成一个文件目录,后台线程Merge目录文件,如果频繁写入, 后台线程就会Merge不过来,产生`Too many parts`异常。建议每秒不超过一次写入,并且是Batch写入。 4.有限的SQL语法支持,JOIN语法也比较另类,暂时不支持窗口函数 5.稀疏索引的设计使得ClickHouse不适合做单行点查询

October 2, 2022

雪花算法

1. 历史 snowflake是由 twitter 开源的分布式 id 生成算法,采 用 Scala 语言实现,是把一个 64 位的 long 型的 id,1 个 bit 是不用的,用其中的 41 bits 作为毫秒数,用 10 bits 作为工作机器 id,12 bits 作为序列号。 小插曲:世界上没有两片相同的雪花,所以使用雪花来表示唯一 2. 算法内容 1:第一位不使用:为什么这里第一位不使用,因为对于long类型,如果第一位是1 则说明是负数 2~42:表示时间戳,最多可以表示2^41-1次方的数值,可以是毫秒级。 43~52:表示工作机器ID,最多支持2^10机器,也就是1024的机器。可以自己定义前几位为机房ID。 53~64:表示自增ID,同一毫秒如果超过2^12次方的增长量,应该算非常大的了 3. 代码实现 public class SnowFlake { private final long workerId; private final long datacenterId; private long sequence; public SnowFlake(long workerId, long datacenterId, long sequence) { // sanity check for workerId // 这儿不就检查了一下,要求就是你传递进来的机房id和机器id不能超过32,不能小于0 // 这个是二进制运算,就是 5 bit最多只能有31个数字,也就是说机器id最多只能是32以内 // 这个是一个意思,就是 5 bit最多只能有31个数字,机房id最多只能是32以内 long maxWorkerId = ~(-1L << workerIdBits); if (workerId > maxWorkerId || workerId < 0) { throw new IllegalArgumentException( String....

June 29, 2022

阿里云盘mac本地挂在

主要参考文档:https://blog.51cto.com/xuedingmaojun/4815572 采用方式: https://github.com/zxbu/webdav-aliyundriver#jar包运行 挂在地址代码 cd /Users/xxx/Workspaces/WebRoot/logs/webdav;nohup java -jar /Users/xxx/Workspaces/Env/WebDAV/PATH/bin/webdav-aliyundriver-2.4.2.jar --aliyundrive.refresh-token="aaa" --server.port=aaa --aliyundrive.work-dir=/usr/local/etc/webdav/aliyundriver --aliyundrive.auth.user-name=aaa --aliyundrive.auth.password=aaa > /Users/aaa/Workspaces/WebRoot/logs/webdav/webdav.log 2>&1 &; # nohup切换前台停止 fg

March 19, 2022

黑苹果未完善问题点

前置耳机无声音 https://github.com/acidanthera/AppleALC/blob/master/README_CN.md 型号为alc222 alcid=11

March 19, 2022

Hugo项目部署

安装 我喜欢安装直接下载下来,放在bin目录下,所以在 git 的release下载对应的版本 检查安装hugo version查看是否已经安装成功 一般执行的时候,会出现告警,只要进入系统偏好设置->安全性与隐私->通用中仍然允许后,再执行一次就可以了 使用 现在自己的目录(按照自己的习惯,我习惯~/Workspaces/WebRoot)下,执行hugo new site xxx 找到自己喜欢的皮肤,个人喜欢 even 皮肤,该皮肤从hexo-theme-even移植而来,个人感觉还不错。到新建的项目下,进入 themes 目录,执行 git clone https://github.com/olOwOlo/hugo-theme-even.git even 把exampleSite下的config.toml复制到xxx项目下,并根据自己的方式进行修改 在 xxx->content 目录下,克隆你要维护的blog的markdown文档,文件夹名字命名为 post ,因为该theme使用的是post,而不是posts 在xxx 目录夹运行hugo -D,建议先删除下public目录下的内容 命令如下 cd ~/Workspaces/WebRoot hugo new site xxx cd themes git clone https://github.com/olOwOlo/hugo-theme-even.git even cd ../ mv config.toml default.config.toml cp themes/even/exampleSite/config.toml ./ # 修改自己的信息 vi config.toml cd content # clone 你blog的markdown地址 git clone xxx post cd .. rm -rf public/* hugo -D web搭建 刚才我们安装的路径是 ~/Workspaces/WebRoot/xxx 而hugo生成的具体内容为~/Workspaces/WebRoot/xxx/public/ 下,所以我们需要对nginx配置地址为相应的地址...

March 13, 2022