Siweipancc

四维胖次

前言

程序的日志记录是必不可少的, 这里做简单的描述与总结. 总体而言, 日志框架分为三部分:

  1. 门面: 类似接口, 也称 门面型日志框架
  2. 桥接: 通常用于🔗连接门面 与 实现, 也适用于重定向, 比如第三方库内部使用了 JUL, 我们使用 jul-to-slf4j 将其日志流重定向到 slf4j 门面上
  3. 实现: 记录型日志框架

在实际引用中, 为了扩展与安全, 我们通常使用上述的三个组合, 不直接使用实现, 另外见 🐛什么是Log4j 漏洞?

阅读全文 »

背景

摘要

文本块是一种多行字符串字面形式,可避免使用大多数转义序列,以可预测的方式自动格式化字符串,并在需要时让开发人员控制格式。

历史

  1. JEP 355 第一次预览(JDK 13) 提出
  2. JEP 368 第二次预览(JDK 14), 两个新的转义序列
  3. JEP 378 正式发布(JDK 15)
    阅读全文 »

    背景

    追踪数据变化在各种审查场景中是一个常见的需求. 在这里我记录一个常见的错误实现, 并提供一个从基础到完整可用的框架实现. 在这里我选用 Hibernate 6.4.Final 作为框架依赖.

    常见的错误实现

    以下摘自 Java实现记录对象修改前后的变化 , 可见该方法明显存在以下问题:

    • 依赖暴力反射
    • 字段存在性能问题
    • 在现代 ORM 框架下会遇到大量常见的运行时错误
    阅读全文 »

    Service

    经典的运行时服务加载, 常见于图像处理, 数据编码中.

    经典使用

    Service 的使用一般分为:

    • 声明一个接口
    • 实现一个接口
    • 配置元文件
    • 调用接口

    声明 Service

    1
    2
    3
    4
    5
    6
    7
    8
    9
    package com.pancc.up.simple.spi;

    /**
    * @author Siweipancc on 2023/12/10
    */
    public interface BackupService {
    boolean backup(Object[] data);
    }

    阅读全文 »

    时区

    获取时区信息 SELECT @@global.time_zone, @@session.time_zone;

    设置服务器时区:

    1
    2
    [mysqld]
    default-time-zone='+08:00'

    设置连接时区信息

    set session time_zone='+08:00'

    jdbc:mysql://localhost:3306?serverTimezone=GMT%2B8

    DATE、DATETIME 和 TIMESTAMP

    阅读全文 »

    简化 Windows 文件链接

    使用命令行方式对文件链接进行操作繁琐又危险, 且极难进行大量的文件对象操作, 当涉及复制移动时候更为地狱.

    ln(可选)

    ln 作为 LinkShellExtension 的命令行扩展, 提供额外的数据分析. 官方网站.
    下边提供 ln 的 ui 操作替代代码

    LinkShellExtension

    Windows-文件链接 中仅使用到了该工具的标记功能, 在此对这个工具的基本功能做简要记述以及对官方一些蛋疼的描述做优化并记录. 官方网站.
    为美观下文将工作称为 LSE.

    语义对照表

    阅读全文 »

    前叙

    本文也可作为在 Unix 系统下软硬链接的一部分指导资料.

    Windows Vista 以上, NTFS 文件系统支持三种类型的文件链接: 硬链接、交汇点(目录链接) 和 符号链接.

    1. 符号链接
      1. 符号链接是指向另一个文件系统对象的文件系统对象
      2. 链接目标为普通文件或目录
      3. 可以跨卷
      4. UNIX 操作系统兼容
    2. 硬链接
      1. 多个路径引用同一卷中的单个文件
      2. 对硬链接文件所做的任何更改具有立即的传播性
    3. 交汇点
      1. 与硬链接相同, 引用的存储对象是单独的目录
      2. 可以跨卷
    阅读全文 »
    0%