BrowserGuard - 智能浏览器监控工具,助力家长控制与学习管理

为家庭电脑学习管理设计的智能浏览器监控工具。基于 Electron + React + TypeScript 技术栈开发,支持 macOS 和 Windows 双平台,通过实时监控浏览器访问行为,帮助家长和孩子建立健康的上网习惯。
Read more →

APISIX 3.9 + APM 整合全链路追踪日志

从零部署 Apache APISIX 3.9 并编写 W3C TraceContext 插件,实现在 APM 中按 trace ID 检索完整链路;记录全过程的坑点与排错。
Read more →

Controlling Internet Access with OpenWRT Firewall: Blocking Websites and Disabling Internet

Learn how to control internet access for devices on your network using OpenWRT’s firewall capabilities, including blocking specific websites, managing access to NAS resources, and scheduling internet availability.
Read more →

Export Command Data from PhpMyAdmin

在使用 PhpMyAdmin 时,您可能会遇到一个问题:当某些字段内容较长时,界面无法完整显示这些字段内容,只能看到部分数据。这种情况下,PhpMyAdmin 默认的导出功能可能无法满足需求,因为网页导出的数据也会被截断,手动复制粘贴又非常耗时且容易出错。

因此,我们可以通过编写 Python 脚本直接调用 PhpMyAdmin 的接口,自动化获取完整数据并保存为 Excel 文件。这样做的主要原因包括:

Read more →

Headscale Migration from CentOS 7 to Ubuntu 24

This guide covers the process of migrating a Headscale setup from a CentOS 7 system to Ubuntu 24, including steps for exporting configurations, database, and Docker images, as well as importing them on the new system.

1. Export Data and Image on CentOS 7

Export Configuration and Database

To begin, export the configuration and database files from the headscale container:

docker cp headscale:/etc/headscale/config.yaml ./config.yaml
docker cp headscale:/etc/headscale/db.sqlite ./db.sqlite

Export Docker Image

Use docker save to export the headscale Docker image:

docker save -o headscale_image_backup.tar headscale/headscale:0.23.0-beta1

2. Transfer Files to Ubuntu 24

Transfer the configuration, database, and image files to the Ubuntu 24 system using scp, rsync, or another file transfer tool:

scp config.yaml db.sqlite headscale_image_backup.tar user@ubuntu-server:/path/to/backup/

3. Import Data on Ubuntu 24

Load Docker Image

On the Ubuntu system, use docker load to import the Docker image:

docker load -i /path/to/backup/headscale_image_backup.tar

Create Headscale Container

Move the configuration and database files to /etc/headscale/ and create the container:

Read more →

Enable Public Network IPv6 Access for Home Routers

记录如何为家庭路由器开启公网IPv6访问,实现远程访问NAS、照片同步等需求,适用于广东移动+OpenWrt环境,包含光猫与路由器详细设置步骤。
Read more →

Smartdns+adguardhome

Read more →

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 →

Vmware and Ubuntu

在Vmware安装Ubuntu 20.04 LTS 版本与windows 10 共享文件,环境搭建

我的虚拟机设置情况
img_1.png

要在 VMware 上安装 Ubuntu 20.04.6 LTS (64-bit) 版本以便编译 ThingsBoard 源码,以下是详细的步骤指南:

下载 Ubuntu 20.04.6 LTS ISO 文件

  1. 访问 Ubuntu 官方下载页面:

  2. 选择下载合适的 ISO 文件:

    • 找到 ubuntu-20.04.6-live-server-amd64.iso,这是没有桌面环境的服务器版本。

创建新的虚拟机

  1. 打开 VMware Workstation 或 VMware Player:

Read more →

SecureCRT

解决 SecureCRT 报错的问题

img.png 在windows 10 环境下通过cmd登录ssh,能成功,但是通过SecureCRT报一些错误解决的方法

能通过 Windows CMD 使用 SSH 成功登录到你的 Ubuntu 虚拟机,这说明你的 SSH 服务器配置是正确的。SecureCRT 报错很可能是因为它使用的密钥交换算法或加密算法与 SSH 服务器不兼容。

解决 SecureCRT 报错的问题

以下是调整 SecureCRT 设置以解决密钥交换失败问题的详细步骤:

Read more →

Upgrading a 2013 MacBook Air to a Specific MacOS Version for Microsof RDP Client Installation

Upgrading a 2013 MacBook Air to a Specific macOS Version for Microsoft RDP Client Installation

由于2013年的MacBook Air配置相对较低,直接升级到最新的macOS版本会导致系统卡顿。因此,我选择将系统升级到可以支持安装Microsoft RDP Client的指定版本。这样既能利用macOS的轻量特性,又能通过RDP客户端远程登录到Windows 10进行办公。macOS自带的功能有限,而通过RDP客户端,可以充分利用Windows的办公环境。

Read more →

Resolving Verdaccio Permissions and Proxy Issues in Docker

Resolving Verdaccio Permissions and Proxy Issues in Docker

问题 1:无法在 Docker 容器中创建目录

问题描述:

在构建 Verdaccio 的 Docker 镜像时,尝试创建 /usr/rn-plugin/storage 和 /usr/rn-plugin/plugins 目录时,出现了权限不足的错误。

解决方案:

通过在 Dockerfile 中切换到 root 用户来创建目录,并设置适当的权限。然后切换回 verdaccio 用户

# verdaccio.Dockerfile

FROM harbor.example.com/cc_iot/verdaccio:latest

# 设置 Verdaccio 配置
COPY ./verdaccio/config.yaml /verdaccio/conf/config.yaml
COPY ./verdaccio/htpasswd /usr/rn-plugin/htpasswd

# 创建存储和插件目录并设置权限
USER root
RUN mkdir -p /usr/rn-plugin/storage /usr/rn-plugin/plugins && \
    chown -R 10001:10001 /usr/rn-plugin/storage /usr/rn-plugin/plugins && \
    chown 10001:10001 /usr/rn-plugin/htpasswd
USER verdaccio

# 设置存储和插件目录为卷
VOLUME ["/usr/rn-plugin/storage", "/usr/rn-plugin/plugins"]

# 暴露 Verdaccio 端口
EXPOSE 4873

# 设置 Verdaccio 环境变量
ENV VERDACCIO_APPDIR /verdaccio
ENV VERDACCIO_USER verdaccio
ENV VERDACCIO_PORT 4873
ENV VERDACCIO_PROTOCOL http
ENV VERDACCIO_STORAGE /usr/rn-plugin/storage
ENV VERDACCIO_PLUGINS /usr/rn-plugin/plugins
ENV VERDACCIO_LOG_FORMAT pretty
ENV VERDACCIO_LOG_LEVEL trace
ENV VERDACCIO_PUBLIC_URL https://www.example.com/verdaccio

ENTRYPOINT ["/usr/local/bin/verdaccio", "--config", "/verdaccio/conf/config.yaml", "--listen", "0.0.0.0:4873"]

问题 2:本地宿主机目录权限不足

问题描述:

在容器中无法写入挂载的本地目录 /root/dd/storage 和 /root/dd/plugins。

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 →

Record an Error During Node RED Deployment

记一次在docker 打包部署node red 启动报错

报错如下:

---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.

If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.

You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------

22 Feb 20:47:25 - [warn] Encrypted credentials not found
22 Feb 20:47:25 - [info] Server now running at http://127.0.0.1:3002/
22 Feb 20:47:25 - [info] Starting flows
22 Feb 20:47:25 - [info] Started flows

22 Feb 20:47:35 - [warn] Flushing file /data/nodes to disk failed : Error: EISDIR: illegal operation on a directory, rename '/data/nodes.$$$' -> '/data/nodes'
22 Feb 20:47:35 - [warn] Error saving flows: EISDIR: illegal operation on a directory, rename '/data/nodes.$$$' -> '/data/nodes'
22 Feb 20:47:35 - [warn] Error: EISDIR: illegal operation on a directory, rename '/data/nodes.$$$' -> '/data/nodes'

PM2启动信息

使用如下PM2配置文件启动Node-RED实例:

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 →

Managing Multiple Git Accounts on Windows 10

在 Windows 10 下管理多个 Git 账号

问题背景描述 在开发过程中,开发者经常需要在多个代码托管平台(例如 GitHub、GitLab 或公司私有的代码托管平台)之间切换。这样做可能会引发一系列问题,尤其是当你需要使用不同的 Git 账号进行代码提交时。 本文将指导你如何在 Windows 10 下管理多个 Git 账号,并确保你的用户名和电子邮件地址不被泄露。
为什么要采用ssh提交git代码,而不是用http协议提交代码
个人认为主要是ssh提供更好的安全,而用http提交的话,一但会话失效需要重登录,甚至还要用浏览器登录一下非常不便

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 →

How to Install Apache Spark on Windows Setup PySpark

为什么要在Windows 10上运行Scala Spark程序

开发环境设置简单:

对于许多开发者来说,Windows是他们最熟悉的操作系统, 因此在Windows上进行开发可以节省大量的环境设置和配置时间。 此外,Windows上有IntelliJ IDEA可以方便Scala和Spark的开发。

本地测试方便:

在本地Windows环境中进行开发, 可以方便快速的进行代码的单元测试和调试。 虽然Spark在集群中运行时的行为可能与在单个机器上有所不同, 但对于许多常见的任务, 本地测试通常可以提供足够的保证。

Read more →

Calculations Are Automatically Generated

Read more →

How to Download Videos From WeChat

how to downlaod videos from wechat

(如何下载微信里的视频)堂姐发来微信消息,需要帮她把过去上传到微信的视频号某视频下载下来急用 开始以为可以用浏览器打开F12下载抓包,原来还是too young,不得不又从网上捣鼓一下 偶然发现Charles这个抓包工具,中文名花瓶,于是有了以下步骤,特记录一下step 普通的下载本来可以通过浏览器打开然后我们可以对其右键另存为的 总的是来说,下载视频,无非分为两步第一步,找真实下载链接,第二步用下载工具下载
不过有个终极方法就是手机录屏可以搞定视频复制下载,但是效果极差不推荐

Read more →

How to Get Started With Developing Kodi Plugins

how to get started with developing kodi plugins

开发kodi插件如何入门,通过学习kodi插件开发,你可以实现自己的想要自动化播放音影服务 主要是实现基于kodi实现开机自动播放影片或者音乐或者iptv等,记忆播放等能力 学习kodi插件开发除了需要一些编程经验外,还需要了解kodi系统插件运行环境,开发环境等 今天特记录一下如何搭建kodi开发环境, 搭建开发环境需要准备以下步骤,以windows 10+ python2.7+ vmware 操作环境为例

Read more →

How to Disk Partition Formatted in Openwrt System

How to Disk Partition Formatted in Openwrt System and Improve network performance

如何在openwrt系统下给磁盘分区,并且是给固态硬盘分区nvme标识 最近在在淘宝买回一台小主机2.5g 4个网口的 cpu N5105 intel 赛扬,主要帮提升一下网络性能 升级wifi6,升级家庭网络结构,提升局域网络复制文件速度,同时解决了4k视频播放本地播放传输慢卡顿问题 店主省事帮我安装一openwrt x86系统,(不是arm,不是/dev/sda磁盘标识),没有把128G固态磁盘剩余的空间分区并格式化 导致我收到主机后,登录openwrt系统查看不到剩余空间,开始怀疑是否发错错了,不是128G的,还是64G的??? 询问店主后得知没有分区剩下的磁盘空间,所以需要买家自己行解决,如果不是it出生的用户怎么办,想想也是,不是it人员不用这部分空间也 也无所谓

Read more →

Front End Learning Vue Typescript 1

前端学习【vue-typescript-1】

基于模板代码学习编写最前沿技术框架vue-typescript-admin-template , 这里直接省略环境搭建npm node vue 请自行安装, vue 以最新版本为准 vue3.x 首先确定一个本次学习目标需求,通过web前端页面把后台的一个接口内容显示输出在页面上即可,实现点击按钮弹窗的效果

我的后台接口地址是http://www.hell.com/iplocation/ipuu/getInfo?ip=111.44.1.3

Read more →

How to solve SpringBoot Mysql CLIENT_PLUGIN_AUTH Is Required error

一次上线遇到的问mysql版本使用问题CLIENT_PLUGIN_AUTH

当在项目做好即将上线时,突然发现线上数据库版本太低而报如题错误,导致程序上线启动失败,现有数据库己被很多老的项目在使用着,不可能让dba去更新数据库版本,或另开服务器。

找了一下原因,是因为使用spring boot 2.x版本,相对比较新,而默认使用的数据库版本为mysql-connect 库 8.x,而需要手动给mysql connect jar包库版本降级,从8.x降到5.1.48

Read more →

Enumeration Class Used in Java

枚举类在java中使用方法之一

在后数据中台中,有些数据不需要放在数据库当中,只需要一个枚举类即可,比如web ui select 选择器下拉数据, 这种,还比如省市 下拉数据,而这些数据可以不需要数据库来保存,也不需要用配置文件来保存,只需要一个枚举类即可,使用方法如下


public enum AppCmdEnum {

   APP_INSTALL(1, "安装命令"),
   APP_UNINSTALL(2, "卸载命令"),
   APP_UPGRADE(3, "升级命令");

   Integer code;
   String name;

   private static Map<Integer, String> KEYS_MAP = new HashMap<>();
   private static Map<String, String> KEYS_MAP_SS = new HashMap<>();

   //初始化枚举类资源类型数据返回,
   static {
      for (AppCmdEnum item : AppCmdEnum.values()) {
         KEYS_MAP.put(item.code, item.name);
         KEYS_MAP_SS.put(item.code.toString(), item.name);
      }
   }

   public static Map<Integer, String> getKeysMap() {
      return KEYS_MAP;
   }

   public static Map<String, String> getKeysMapSS() {
      return KEYS_MAP_SS;
   }

   //增加一个构造函数,丰富描述该枚举类的作用,和功能,字段含义
   //根据业务需求可以,可以增加很多的属性字段,扩展非常灵活
   AppCmdEnum(Integer code, String name) {
      this.code = code;
      this.name = name;
   }

   public Integer getCode() {
      return this.code;
   }

   public String getName() {
      return this.name;
   }
}

在spring boot项目调用方法

Read more →

Mybaits Plus Comes With Paging VS Com.github.pagehelper Paging Plug In

mybatis-plus 自带分页 和 com.github.pagehelper工具使用对比

对经常写中台列表数据管理接口的同学来说,需要经常使用到分页插件来提升自己的工作效率,通常我用过最多的两款插件如标题所示,这两款插件在写文章之前,我一直搞不清,浮躁,混为一谈,需要总结整理

今抽空花些时间来比较一下他们在返回response body 时内容, 观察到pagehelper不愧是术业有专攻啊,个人认为pagehelper 作为专业分页插件不得不说,其功能特点比mybatis-plus 完善多了,考虑到人性化,由期在前后端对接方面,大大提升了效率,少写很多代码,不过有时还是看需求场景,对于不需要web端展示的,我推荐mybatis-plus 自带的page分页 ,它相比pagehelper插件提供的能力还是比较简单,比如没有提供页码位置前一页后一页

Read more →

Date and LocalDatetime in Java 8

Java 8中的 Date和LocalDateTime类在工作中遇到的问题

java 8 中的 LocalDateTime 比 date 速度快很多,而且在处理时间方法比较灵活,在日期计算方面,日期比较简单易用,而Date 要繁琐很多

我在工作中遇到一个实体类创建时间字段原来为Date类型, 在mybatis 时间创建数据库记录时,需要用到自动填充当前时间为创建时间,

@TableField(fill = FieldFill.INSERT_UPDATE)
private Date lastUpdateTime;

发现报错如下具体原因是因为Date在转换 LocalDateTime.now()出问题了,报错误不匹配

Read more →

Activemq Artemis Learning 3

验证activemq Artemis 源代码完整性

工作项目可能需要使用activemq artemis ,将使用在生产环境上部署,为了方便后面二次开发的需求可能,对其进行源代码完整性验证,主要工作是,把最新源代码下载到本地进行源码编译,一开始使用的windows死活编译不成功,报com.sum.sw jar 包错误。

然后还有一些jar 包无法下载,即使你换了国内的maven 阿里镜像也无法下载, 需要有一个彻底扶墙的网络环境才有可能全部编译通过。然后我在windows折腾几天没有成功,就是反复执行 mvn -Prealse install 命令,安装编译测试等环境,错误一大堆。项目复杂,庞大,不得不说apache 开源的项目,还是很强,功能很完善。这个项目目录结构也是十分复杂的。为了达 到目的,需要时间折腾的,后来我换了苹果电脑上面,也开起了扶墙网络模式。经过几次的人工重复执行 mvn -Prealse install 最终才编译成功的

Read more →

Mount Network Share on LibrEelec or on CoreElec

如何在coreelec 系统挂在nas共享目录,支持自动开机播放,播放内容安排

背景需求是打造家庭定时定点播放内容,内容包含音视频,现有环境闲置的n1盒子一台,音响一套,小米智能插座一个,nas ds218群晖一台,设定每天定时,定点播放不同内容,内容来自群晖硬盘,或者网络离线内容。需要解决以下关键问题如下

1,如何在coreelec mount 群晖共享目录

Read more →

Artemis Origin Null Is Not Allowed to Call This Agent

Artemis Origin Null Is Not Allowed to Call This Agent

解决不能访问jolokia http interface 接口的问题,访问报403 状态错误

工作项目中需要使用到mq的消息管理api,如需要查询在线连接数,需要查看某一个clientId是否在线,需要整合到自身业务当中去,

对于artemis 就是一个黑盒,虽然是开源的,而且是完全开放的源代码,没有必须去改里面源码达到需求,其实artemis 后台提供了

Read more →

How to Enable Activemq Artemis Rest Api

如何启用activemq artemis rest api 特性

在一次项目中需要使用activemq artemis mqtt 协议通信特性,需要借助rest api 功能按clientId 查询是否在线,也就是如何通过client id 查询 设备是否在线需要借助rest api 特性,默认情况artemis 不提供rest api 特性,在网搜索了一了,再借助官网的文档,需要build 一个war包 放 到web目录下即可,然后 重启程序

Read more →

Activemq Artemis Learning 2

activemq artmis 项目所依赖模块说明整理

artemis-boot :项目主要的程序入口,man函数在此

artemis-cdi-client : cdi 集成 它既可以使用嵌入代理,也可以连接到远程代理。通过实现 artemis clientconfiguration 接口提供配置

artemis-cli: 提供命令工具使用,可以通过命令窗口运行东西,如创建用户,创建address

artemis-commons: 为整个项目提供 api 的统一异常库,网络连接心跳逻辑,日志打印库,连接池,集合库,线程原子锁,uuid生成工具库,时间工具类库

Read more →

Activemq Artemis Learning 1

Activemq Artemis learning 1

activemq 有两个版本,过去很多人使用的activemq 经典版。 对该版本性能上面评价不是很满意,但今天官方又提供基于netty版的

activemq artemis 这个消息中件间,将提供异步消息处理。在使用activemq好处是在于,对大多数据中小企业来说没有经历去造轮子,那么完全可以采用开源方案来完成需求,采用activemq artemis 这个消息中间件,他不仅继承原来的多协议,还大大提升了性能,着实很香的,activemq 本来就和rabbitmq, kafka,rocketmq 等三大mq不一样,还是有区别,适用不同场景。比如过去们常常使用mq kafka, rabbitmq大多数是在云服务器内网通信使用的,做服务消息解耦使用,但它只是普通的tcp 传输协议,不支持webscket 直连,http, udp 直连等特点,而activemq artemis 相反,他可以支的寺ws直连,tcp,udp直连,加上公司团队java技术栈的优势,采用先使用,熟悉如何使用activemq artemis 然后对其二次开发,也不是不错技术选型路线

Read more →

Mathematical Generation for the Third Grade of Elementary School

生成小学三年级四笔算式题及答案代码

由于小学三年级,数学书本未有负数,小数点,难度还是相对初级,要求3位数*2位数,除式算题不能有小数点, 减法不能用负数

下面就简单写了一下,思路比较简单,还没有包括括号,没有复杂的计算顺序的问题,基本上是 a*b + d/c 这种 a*b - d/c

生成有答案和无答案两种,方便后续家长或老师改题需要计算器,哈哈,打算后面有时间再搞智能点

Read more →

Main Route and Soft Route Use Configuration

软路由配置使用方法

为什么需要使用软路由,是为了不影响原来主路由上网配置,网络环境,增加一个软路由来专门来解析404网站,及特殊的网络连接

满足上网需求,下图就是今天要介绍软路由其中一种设置方法,不影响原来的网络环境下,给增加一台软路由方法,ip设置方法

image-20210811160444222

当电视或者手机需要打开404网站,则需要单独配置 dns 和网关ip,即可正常扶梯

Read more →

Tensorflow Dll Solutions for Missing Files

TensorFlow DLL Solutions for missing files:cudnn64_8.dll not found&cusolver64_10.dll not found

解决tensorflow在安装最新版本(2.5.0) 时,运行时报错找不到各种dll文件方法。网上有很多的原因,说有因版本太高了,不兼容

还给了什么版本对应安装包,反正是折腾了很久,作为tensorflow使用新手,主要是想用用最新版本如何。正好换了台新的笔记本联想工作本本

Read more →

My Python2.7 Notes

python 日常笔记

记录工作要用的python 使用工具,或者常用的代码片段。 Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 »> 后直接执行代码。Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

Read more →

Mathematical Concepts Ai Learing Section 2

Read more →

Anaconda Modify the Domestic Mirror Ai Learning Section 1

我的AI学习第一课 Anaconda 修改镜像源

为什么要修改镜像源,因为初次使用anaconda 发现下载太慢了,都是从官网服务器拉取模块,需要 等很漫长时间,

因此网上找了一上镜像源和修改源的方法,就用清华大学的源

[https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/](https://link.jianshu.com/?t=https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/)

大概分为三步

1、首先找到conda安装目录

这里我安装在D:\anaconda3 然后找到condabin目录

在地址输入 cmd 命令并回车执行,在弹窗的cmd 窗口输入以下两条命令

Read more →

Phicomm Router Upgrade System to Openwrt

OpenWrt Lede 系统 刷入 k2p 路由器

记录一下,过去经常用的k2p 刷入老毛子系统【padavan】 不用选闪存布局,分分钟成功刷入。但这次刷入OpenWrt 时发现死活进去路由器登录界面。经过在恩山发贴求助终于解决,感谢恩山大神们,真的很厉害! 我刷入步骤是都先复位的,长按复位键 8到10秒,松开, 然后上传openwrt-ramips-mt7621-phicomm_k2p-initramfs-kernel.binn 文件, 然后点击更新,重启,就是不能进入openwrt 系统路由系统,关键是openwrt wifi ssid 搜索不到,没看到, 说明刷入不成功,我用网线链接电脑 ,电脑网线插上都不能有正常的ip 获取到

Read more →

Solve the Startup Problem of Nano Disk Manager Zerotier

解决[贝壳云]小刚炮系统(Nano Disk Manager) zerotier 开机启动问题

在网上找了很多的教程,有很相关做开机启动 zerotier 客户端,我都没有成功,好几次由于停电导致的 盒子启动后并没有启动zerotier 客户端。出门在外没有远程服务真的很不方便。经过折腾好一阵子找到一个解决方法如下

找到原来开机启动脚本,没有的话添加即可 /etc/init.d/S50zerotier.sh
把如下代码,新建startup_zerotier.sh文件,写入如下代码内容,保存在/root目录下
 
#!/bin/sh
program=zerotier
sn=`ps -ef | grep program | grep -v grep |awk '{print $2}'`
if [ "${sn}" = "" ]
then
  sh /etc/init.d/S50zerotier.sh
  echo start ok !
else
  echo running
fi
在小刚炮系统后台,打开任务执行菜单栏,添加 计划任务为每隔2分钟启动该脚本即可

image-20210702145944040

Read more →

How to Set Kodi to Start Playing Content

我是如何在coreelec系统设置开机自动播放视频列表的

手里空闲N1盒子一台,刷了coreelec 系统,本质为kodi播放器,起初想配合小米智能插座 + n1盒子+显示器+音箱

打造一台家用融媒体diy宣传广告机,设置定时开关机,定时播放指定内容,比如每天早上播放《三字经》《刷牙》,每天中午播放《交通安全》,晚上播放《护眼宣导片》

等三个.mp4文件。于是翻了一下kodi技术开发论坛,就有了以下成果

Read more →

Abacus Mental Arithmetic Problem Generation

珠心算二笔、三笔、五笔、十笔一位加减混合计算题自动生成

珠算是以算盘为工具,数学理论为基础,运用手指拨珠,进行运算的一门计算技术,它是我国古代劳动人民重要的发明创造之一,千百年来这一技术不断扩散,传播到世界各国,推进着人类文明的发展历程。

珠心算只有三个符号即1、5和0;数学有10个符号,即0、1、2、3、4、5、6、7、8、9。可见珠心算运算的简捷性。珠心算的直观模型作用能培养小孩子的数学概念能力,珠心算的分析模型作用能帮助小孩子理解应用题的结构关系和数量关系,提高解题能力。

Read more →

Application Based on lua-resty-balancer

基于openresty lua-resty-balancer 模块实现自定义分流功能

该模块为提供分流算法,抽离了hash算法, roundrobin轮询等,好处使业务灵活调用算法而分配对像。该对像不一定指服务器,也可以是数据对像或文件对像等等

1,下载https://github.com/openresty/lua-resty-balancer

编译安装balancer

Read more →

How to Customize Load Balancing Logic Based on Openresty

基于openresty 自定义tcp 请求流量转发到不同消息处理服务器

有个消息推荐项目,netty 框架技术架构,客户端采用netty client 封装的私有tcp 协议 请求消息服务器。需要一套tcp 分流处理网关来分发请求流量到不同的tcp 消息处理器,现采用openresty 基本可以满足,主要是是用到openresy balancer

[]: https://github.com/openresty/lua-resty-balancer#name

模块技术实现,具体请参考官方文档说明

Read more →

How to Run Spring Boot Program on Windows Server

spring boot程序如何正确运行在Windows服务器上面

一次项目开发中,要求服务器是windows环境,一般我们都是用java sprint boot 开发的程序运行在linux 环境中,通过supervisor程序来守护,设置开机启动之类的操作命令, 很少有人用windows server, 这次机会遇到这个问题需要解决,好在记的我在几年前用过java service wapper(简称jsw)这个程序 ,对jsw 有一些了解,于是找一相当资料看一下

Read more →

How to Do Not Release Resources After Uploading the Zip Package in Java

在windows系统中检验一个上传文件程序是否有bug另一种姿势

某一天在公司对一个文件上传项目进行bug修改,不料查到另一个bug 也顺带解决,在此记录一下解决过程

在windows系统调试一个文件上传程序,手贱想重新删除原文件,重新上传,结果这一删除发现windows 弹窗,报窗

文件正常使用 错误提示。

这个程序需求就是把一个zip包上传到ftp当中,流程是先上传到服务器本地,然后同步到ftp当中

Read more →

A Bug That Displays Abnormally After Uploading an Image

记一次解决图片上传后在浏览器不能正常显示的问题

原来这个项目是比较老,采用的是spirng mvc +ftp 技术搭建的上传功能,通过把一个静态资源h5页,打包成一个zip上传到后台

后台再对其zip包进行解压上传到cdn服务器,以域名访问该静态资源页面,其静态资源包含html,js, jpg。 然后设计师大部分以图片形式排版,组成的html5 幻灯显示页面,难后在上传过程有偶发性的遇到图片打不开,显示不正常等问题,bug是随机复现。于是找了很久才找到这个问题根源,下面对其记录一下

Read more →

Reverse Proxy to Websocket Service Set Based on Apisix2

基于apisix2.4网关反向代理到websocket服务集节点

问题背景,主要是解决远程控制通信服务端单点问题,借助openresty强劲的性能,可定制化的负载均衡设计特点

apisix就是基于openresty开发分布式网关集群平台,优势现阶段轻量,易维护等

本为搭建环境,模拟集群环境,在我windows 电脑 采用docker 模拟


整体的环境说明:如下图

image-20210511150518389

  • 搭建环境

    docker pull django
    
  • 运行python 容器

Read more →

Lua Language Parsing Private Protocol Package

使用lua语言解析tcp私有协议包示例

为什么需要lua来解析tcp 私有协议包?

因为lua语言生态内,有强大的openresty 技术可使用,而openresty可以提供强劲的web 并发性能,能提供tcp 长链接通道 技术

首先需要lapck包对其解析

git clone  https://github.com/Kong/lua-pack 
或
git clone https://github.com/lilien1010/lpack

安装lapck包需要编译

image-20210508175332849

在编译时遇到 lua.h No such file or directory #include " lua.h" ? 问题时,需要遇增加如下参数

-DLUA_INCLUDE_DIR=/usr/local/openresty/luajit/include/luajit-2.1/ 

最终编译命令如下:

#DLUA_INCLUDE_DIR 表示lua.h 存放的位置 LUA_LIBRARY指定luajit库,so文件,
cmake ./  -DLUA_INCLUDE_DIR=/usr/local/openresty/luajit/include/luajit-2.1/  -DLUA_LIBRARY=/usr/local/lib/libluajit-5.1.so
make  #编译成so文件,得到pack.so

详细解析tcp私有代码如下

require("pack")
local mypack    = string.pack
local myunpack    = string.unpack
local sock = ngx.req.socket(true)
if sock then
    ngx.say("got the request socket")
else
    ngx.say("failed to get the request socket: ", err)
    return
end
while true do
    --先尝试读取固定头 6个字节
    local data, err = sock:receive(6)
    --如果遇到timeout,或者close的情况,则break 本次循环读取,继续下一条读取
    if err=='timeout' or err =='close' then
        break
    end
    --按pmtp协议读取返回的参数,type1为消息类型,ver2为pmtp协议版本号,time待命时间,len4为消息体的长度,不包含头的长度
    --默认字节顺序为 大端,>ccHH
    local succ,succLen,type1,Ver2,Time3,Len4 = pcall(myunpack,data,">ccHH")
    --读取剩余的消息体长度内容
    local body, err = sock:receive(Len4)
    --如果读取body为空,则退出
    if body == nil then
        break
    end
    --打印body消息内容
    ngx.log(ngx.ERR, "------bdy ", body)
end

通过客户端链接后发送tcp私有协议包的一模拟效果

Read more →

Solve the Problem of Maven Packaging Static Resource Coding

解决maven生成jar包时字体不能正常显示

由于前端人手不够,今天做了一个小项目,这个项目是用spring boot + layui 构建的后台管理系统。就没有用到前后端分离的方式去开发

项目做完后在打包时运行时发现浏览器显示字体损坏,导致网站icon图标不能正常显示

解决方法:

在pom.xml 里找到build 区块用下面代码替换它

    <build>
        <finalName>ivy-admin</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <excludes>
                    <exclude>static/layui/font/**</exclude>
                    <exclude>static/admin/font/**</exclude>
                    <exclude>static/admin/fonts/**</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>false</filtering>
                <includes>
                    <include>static/layui/font/**</include>
                    <include>static/admin/font/**</include>
                    <include>static/admin/fonts/**</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <executable>true</executable>
                </configuration>
            </plugin>
        </plugins>
    </build>

问题原因:

经过发现在不加上面打包代码时,不排除font 字体目录时,发现maven在打包复制时,对其font字体文件编译,导致文件被改写,编码和原来的字体文件不一样,导致打包前,打包前文件md5不一样,font 字体损坏,最终浏览器显示字体损坏

Read more →