Summary of Configuring Multiple Data Sources With Spring Boot 2.7.10 + JPA and Troubleshooting

配置 Spring Boot 2.7.10 + JPA 支持多数据源 (使用 PostgreSQL 和 Nacos 配置)

总结Spring Boot 2.7.10 + JPA 多数据源配置与问题解决

Summary of Configuring Multiple Data Sources with Spring Boot 2.7.10 + JPA and Troubleshooting

我有一个项目需要访问多个数据库源,ccdb接口访问服务器ip为:10.10.5.10的ccdb数据库,而tbdb接口需要访问服务器ip为:10.10.5.9的tbdb数据库 ccdb接口和tbdb接口都属于同一个jar包代码,所以需要多数据库解决方案, 但在解决Spring Boot 2.7.10项目中配置多数据源和JPA访问数据库的过程中,遇到了一系列问题。以下是详细问题描述及解决方案:

Read more →

Thingsboard Getway Debug

记一次thingsboard gateway 调试总结

背景

在使用 ThingsBoard 3.6.4 网关thingsboard gateway 3.5.1的过程中,我们需要配置和调试 MQTT 连接器,以便子设备能够正确处理来自网关的 RPC 请求。此次调试过程中,遇到了一些问题,包括 JSON 格式错误、消息未正确替换变量、以及消息处理超时等。 但凡遇到网关问题,官方文档少知又少。github issue 有人遇到同样的问题无人回复,本人折腾了2天终于让子设备通网了

Read more →

Records of Problems Encountered During the Installation and Initialization of Thingsboard 3.6.4

# Records of Problems Encountered During the Installation and Initialization of Thingsboard 3.6.4

记录thingsboard3.6.4在导入 IntelliJ IDEA 2022.2.3 编译报错的一些问题
记录 如何从thingsboard3.6.4弃坑到thingsboard3.6.3最后又回到了thingsboard3.6.4

导入步骤简单说一下,先从github下载thingsboard3.6.4 源码 导入代码前提准备是环境,我的环境如下 windows 10
maven version 3.8.1 给 IntelliJ IDEA 2022.2.3 配置好settings.xml 采用从maven官方仓库拉取依赖
IntelliJ IDEA 2022.2.3
IntelliJ IDEA 只需要安装 protocol buffers 和 lombook 就可以了
JDK17,不是jdk11
在本地安装postgreSQL,创建好数据库名thingsboard364
然后导入到IntelliJ IDEA 2022.2.3。
从复制sql脚本到application的src/main/data/目录下
img.pngIntelliJ IDEA maven 设置跳过skip test,避免测试过程中遇到地域性测试,语言文本测试 导致通测试不过
img_1.png 最后点击 IntelliJ IDEA maven package 进行编译项目
我遇到的问题如下:

Read more →

Smart Air Conditioning Control With ThingsBoard

Automating Climate Control: Leveraging Dual Thermometers for Smart Air Conditioning via ThingsBoard

记录一次在thingsboard中通过同时满足两个温度计的温度条件来控制空调开关机
当然这并不是真实过程对接调式,只是通过模拟的方法来熟练一下thingsboard的ruleChain

第一步,创建一个空的规则链,名称就叫两个温度计控制空调的规则链

img_2.png

第二步,创建一个设备配置,名称就叫两个温度计控制空调的设备配置

img_3.png

第三步,分别添加三个设备温度计1温度计2空调

img_4.png

第四步,给温度计1,温度计2 设备添加关联关系

添加关系的原因是,因为温度计1,温度计2 的温度都满足了条件需要给空调发送rpc控制消息 才需创建关联空调的,这里可以理解是温度计控制空调,所以创建温度计向外的关联from)的关系 同理也可以理解,空调需要接受温度计的控制消息向内的关联to)的关系,这两个关系方向都可以 这里以from关系为例创建,但请注意,这里的关系类型一定要唯一,不能一样我这里建立了两条关系分别是relation1, relation2 img.png

Read more →

Server setup process using Headscale with Docker.

Server setup process using Headscale with Docker.

记录采用headscale & docker 异地组网过程

需求背景

曾经我尝试使用ZeroTier,最初的体验非常不错。然而,随着时间的推移,我发现连接速度变得缓慢和卡顿, 有时甚至需要借助特殊的网络加速技术来提高性能。后来,在X社区中,我看到有人分享了Tailscale的好评, 这促使我安装了Tailscale的官方客户端。相较于ZeroTierTailscale在速度上有显著的提升, 尽管偶尔也会遇到一些延迟。Tailscale依赖于其官方服务器,但它支持用户自建服务器, 这一点非常吸引我。通过结合使用Tailscale客户端和官网,我们可以实现异地组网。 为了达到更理想的连接速度,我决定自建异地组网系统。这样不仅能控制家中的群晖设备,还能优化PT下载等功能。

Read more →

Solving HTTPS Debugging Issues with SSO Integration Using Ngrok on Windows

介绍

在这篇文章中,我们将探讨如何使用ngrok在Windows环境下解决与公司SSO系统对接时的HTTPS调试问题。我们将逐步介绍如何配置ngrok以实现内网穿透,从而允许远程服务器访问您的本地开发环境。

步骤1: 安装ngrok

首先,需要在Windows系统上安装ngrok。请按照以下步骤操作:

  1. 访问ngrok官网

  2. 下载适用于Windows的ngrok安装包。

Read more →

Configure Direct Domain in Clash

In Clash, if you want a specific domain to bypass the proxy and connect directly, you can utilize the mixin and rules settings. Below is an example of how to set up a direct connection for the domain baolei.xxxx.com:

dns:
  enable: true
  enhanced-mode: redir-host # 或者使用 fake-ip,根据你的需求选择
  listen: 0.0.0.0:53
  nameserver:
    - 172.20.128.2 # 你的首选DNS服务器,家庭内网dns,公司内网dns
    - 172.20.128.3 # 你的备用DNS服务器,家庭内网dns,公司内网dns
    # - "8.8.8.8" # 公共DNS,仅在访问互联网时使用
    # - "8.8.4.4" # 公共DNS,仅在访问互联网时使用
  fallback: # 当 nameserver 无法解析才使用以下dns解析
    - "8.8.8.8"
    - "8.8.4.4"
    - "1.1.1.1"
  fallback-filter:
    geoip: true # 使用GeoIP规则过滤掉国内的IP地址
    ipcidr: # 保证以下私有地址范围不使用fallback DNS
      - "0.0.0.0/8"
      - "10.0.0.0/8"
      - "127.0.0.0/8"
      - "169.254.0.0/16"
      - "172.16.0.0/12"
      - "192.168.0.0/16"
      - "::1/128"
      - "fc00::/7"
      - "fe80::/10"

rules:
  - 'DOMAIN-SUFFIX,baolei.xxxx.com,DIRECT' # 确保这条规则在任何可能触发代理的规则之前
  # 其他规则...

mixin: This setting allows you to modify the main configuration dynamically. It is useful when you want to have a base configuration and apply changes without affecting the main configuration.

Read more →

Resolving the Issue of Centos 7 Vm Unable to Ping Its Host Machine

解决因docker网络导致的网络问题,无法ping通局域网ip

背景

在我的办公室网络环境中,我有一个 Windows 10 宿主机,上面安装了 VMware,并在 VMware 中运行了一个 CentOS 7 虚拟机。虽然宿主机和 CentOS 7 虚拟机都可以正常上网并 ping 通外部地址,但 CentOS 7 无法 ping 通宿主机。这让我非常困惑,并最初怀疑可能是公司的网管对我的 MAC 地址进行了某种限制。

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.22.128.1    0.0.0.0         UG    100    0        0 ens33
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-6b8659f8f886
172.19.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-89bc77a42b8a
172.20.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-b4e656893ece
172.22.128.0    0.0.0.0         255.255.240.0   U     100    0        0 ens33
172.26.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-5b7ab2df8a43

虚拟机上有多个 Docker 网络,其中一个网络(br-b4e656893ece)与宿主机的网络冲突。
这意味着, 尝试 ping 宿主机时,数据包可能被发送到了 Docker 网络,而不是真正的物理网络。
这是最关键的问题所在

Read more →

OpenResty Lua Lapis and Redis Cluster Setup Guide

安装模块

下载并安装lua-resty-redis-cluster模块

  • lua-resty-redis-cluster模块的GitHub地址:https://github.com/iresty/lua-resty-redis-cluster

  • 这个模块可以用来连接redis集群。

  • 请将这个模块下载到任意的目录下。

  • 下载完成后,你只需要在包中找到rediscluster.luaredis_slot.c两个文件。

注意:.c文件无法直接在nginx配置文件中引入,所以我们需要将它编译成.so文件。以下是编译命令:

Read more →

Hybrid Encryption With AES 128 Bit and RSA Using Java and Ngx_lua

一种 AES(128位)+RSA混合加密,iv为前16个0字符,使用java和ngx.lua编写的加解密方法

使用 openresty 和 ngx_lua 编写的服务端 HTTP 接口,旨在提供给 Android 设备提交加密数据上报、日志采集等功能。
主要流流程如下 aes+rsa混合常见流程

local enable_padding = true:定义一个布尔变量 enable_padding 并赋值为 true,用于启用填充功能。 local aes_128_cbc_with_padding = aes:new(key, nil, aes.cipher(128,"cbc"), {iv = string.rep('\0', 16)}, nil, nil, enable_padding)aes:new() 是创建 AES 加密算法实例的函数。
key 是用于加密和解密的密钥。
nil 表示没有额外的选项参数。
aes.cipher(128, "cbc") 指定使用AES-128 位密钥和 CBC (Cipher Block Chaining) 模式进行加密。
{iv = string.rep('\0', 16)} 是初始化向量 (IV),其中 string.rep('\0', 16) 创建了一个由 16 个空字符组成的字符串作为 IV
最后一个参数 enable_padding 是用于启用填充功能的布尔变量。

Read more →