0%

问题

echarts热力图渲染数据超过2万会感觉明显卡顿

解决办法

后端通过网格将数据聚合,压缩数据量

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// 网格聚合核心方法
public static JSONArray gridAggregate(JSONArray points, int xGridSize, int yGridSize) throws JSONException {

    if(points.size() <= 20000){
        return points;
    }

    // 1. 计算坐标范围
    double minX = 0, maxX = 0, minY = 0, maxY = 0;

    for (int i = 0; i < points.size(); i++) {
        JSONArray point = points.getJSONArray(i);
        double x = point.getDouble(0);
        double y = point.getDouble(1);
        if(i == 0){
            minX = x;
            maxX = x;
            minY = y;
            maxY = y;
        }else{
            minX = Math.min(minX, x);
            maxX = Math.max(maxX, x);
            minY = Math.min(minY, y);
            maxY = Math.max(maxY, y);
        }
    }

    // 2. 初始化网格容器 (使用网格坐标作为Key)
    TreeMap<String, List<Double>> gridMap = new TreeMap<>();
    double gridWidth = (maxX - minX) / xGridSize;
    double gridHeight = (maxY - minY) / yGridSize;

    // 3. 点分配到网格
    for (int i = 0; i < points.size(); i++) {
        JSONArray point = points.getJSONArray(i);
        double x = point.getDouble(0);
        double y = point.getDouble(1);
        double value = point.getDouble(2);

        int gridX = (int) ((x - minX) / gridWidth);
        int gridY = (int) ((y - minY) / gridHeight);
        String gridKey = gridX + "_" + gridY;

        gridMap.computeIfAbsent(gridKey, k -> new ArrayList<>()).add(value);
    }

    // 4. 生成聚合数据 (使用平均值策略)
    JSONArray aggregatedData = new JSONArray();
    for (Map.Entry<String, List<Double>> entry : gridMap.entrySet()) {
        String[] keys = entry.getKey().split("_");
        int gridX = Integer.parseInt(keys[0]);
        int gridY = Integer.parseInt(keys[1]);

        // 计算网格中心坐标
        double centerX = minX + (gridX + 0.5) * gridWidth;
        double centerY = minY + (gridY + 0.5) * gridHeight;

        // 计算平均值
        double avgValue = entry.getValue().stream()
                .mapToDouble(Double::doubleValue)
                .average()
                .orElse(0.0);

        // 构建新数据点 [x, y, value]
        JSONArray newPoint = new JSONArray();
        newPoint.put(new BigDecimal(centerX).setScale(2, RoundingMode.DOWN).intValue());
        newPoint.put(new BigDecimal(centerY).setScale(2, RoundingMode.DOWN).doubleValue());
        newPoint.put(new BigDecimal(avgValue).setScale(6, RoundingMode.DOWN).doubleValue());

        aggregatedData.put(newPoint);
    }

    //System.out.println("原始点数: " + points.size());
    //System.out.println("聚合后点数: " + aggregatedData.size());

    aggregatedData.sort((o1, o2) -> {
        JSONArray points1 = (JSONArray) o1;
        JSONArray points2 = (JSONArray) o2;
        return points1.getInt(0).compareTo(points2.getInt(0));
    });

    return aggregatedData;
}

异常一ddd

dockerd 启动提示:(docker0): networks have same bridge name

原因分析

使用 docker-compose 的方式部署时,默认的网络模式是bridge , 默认网段是172.17.0.1/16,即docker0。自动生成的网桥会依次使用:172.18.x.x ,172.19.x.x…. 这些docker生成的网段可能与内网网段有冲突。

方法一:用官方迁移工具KDTS

同事告知,用KDTS,从mysql迁移到人大金仓数据库没问题。但从人大金仓数据库迁移到mysql会失败,原因未明。 KDTS工具为安装人大金仓数据库自带,没有独立版本。 docker版本的人大金仓数据库没有此公具。

需求

之前一直用 docker logs -f 容器ID 查看日志,遇到一个问题,一旦打印的日志太多,好像是从上一次查看的位置开始输出,导致终端在狂刷日志,而我只想看最新的日志。

需求

在特定场景下,可能只需要修改jar包里的某个配置或替换某个class文件。

jar包解压

1
2
3
4
5
6
# 方法一(推荐)使用 unzip 解压到指定目录
unzip xxx.jar -d 指定解压路径
# 方法二使用 jar 解压(只能解压到当前目录)
mkdir	xxx
cd xxx
jar -xvf xxx.jar

jar包压缩

1
2
# 使用 jar 压缩当前目录(压缩指定目录会把文件夹也一起压缩)
jar -cfM /xxx/xxx.jar	.

使用Dconf Editor

打开Dconf Editor,导航到 org -> gnome -> desktop -> break-reminders,然后选择 eyesight 或 movement(分别对应短时间休息和长时间休息)。在该路径下,可以设置 interval-seconds 来调整休息时间间隔

使用Dconf Editor

打开Dconf Editor,导航到 org -> gnome -> desktop -> break-reminders,然后选择 eyesight 或 movement(分别对应短时间休息和长时间休息)。在该路径下,可以设置 interval-seconds 来调整休息时间间隔

下载 hugo-theme-next-starter

1
2
3
git clone https://github.com/hugo-next/hugo-theme-next-starter
cd hugo-theme-next-starter
git submodule update --init --recursive

配置

编辑hugo.yaml

1
2
3
4
5
6
vim config/_default/hugo.yaml

# 站点域名
baseURL: https://sxqs.fun
# 站点标题
title: Dany 的个人小站

编辑params.yaml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
vim config/_default/params.yaml

# 站点基本信息
# Site Information Settings
author: Dany
subtitle: 上下求索
description: 你的要务不在于达成什么而是待在当下此处只管专注当下就行了这能使你得到解脱免于痛苦免于恐惧免于心智的束缚
keywords: emacs,elisp,java

# 知识共享国际许可 4.0
# 侧边栏显示
sidebar: false
# 文章底部显示
post: false

# 侧边栏头像
# 设置显示头像的相对路径
url: /imgs/head.png

siteState:
# 是否在侧边栏显示文章分类标签信息
basic: false
# 站点访问信息
views:
  enable: false

# 社交链接地址
social0: Github || https://github.com/sxqsfun || fab fa-github
social1: E-Mail || mailto:78528291@qq.com || fa fa-envelope


# 友情链接设置
# 显示标题
# Show title

# 友情链接地址
links:
  #link0: Hugo-NexT || https://gitee.com/hugo-next/hugo-theme-next
  #link1: 凡梦星尘空间站 || https://lisenhui.cn

# 站点开始年份默认为当下时间的年份
since: 2019

# 国内 ICP 备案和公安网备信息
beian:
  enable: false

# 站点支持供应商列表
vendors:
  enable: false

# 文章的在线编辑
postEdit:
  enable: false

# 右上角在 Github 上面关注我的横幅
githubBanner:
  enable: false