• tofuwine

    获取数据库表的 MetaData:

    java
     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
    
    import org.springframework.jdbc.core.ConnectionCallback;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.stereotype.Service;
    
    import java.sql.DatabaseMetaData;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.util.*;
    
    
    @Service
    public class DynamicMetadataService {
        
        private final JdbcTemplate jdbcTemplate;
        
        public DynamicMetadataService(JdbcTemplate jdbcTemplate) {
            this.jdbcTemplate = jdbcTemplate;
        }
    
        /**
         * 获取表的元数据信息
         * 
         * @param tableName 数据库表名
         * @return 表的元数据信息
         */
        public List<Map<String, Object>> getTableMetadata(String tableName) {
            return jdbcTemplate.execute((ConnectionCallback<List<Map<String, Object>>>) conn -> {
                DatabaseMetaData metaData = conn.getMetaData();
                try (ResultSet columns = metaData.getColumns(
                        conn.getCatalog(),
                        conn.getSchema(),
                        tableName,
                        "%"
                )) {
                    return extractColumnMetadata(columns);
                }
            });
        }
        
        private List<Map<String, Object>> extractColumnMetadata(ResultSet columns) throws SQLException {
            List<Map<String, Object>> metadataList = new ArrayList<>();
            ResultSetMetaData rsMeta = columns.getMetaData();
            int columnCount = rsMeta.getColumnCount();
            
            Map<String, String> columnNameMap = new HashMap<>();
            for (int i = 0; i < columnCount; i++) {
                columnNameMap.put(rsMeta.getColumnName(i).toLowerCase(), rsMeta.getColumnLabel(i));
            }
            
            while (columns.next()) {
                Map<String, Object> columnInfo = new LinkedHashMap<>();
                // 添加所有可用元数据
                for (Map.Entry<String, String> entry : columnNameMap.entrySet()) {
                    String colName = entry.getKey();
                    String displayName = entry.getValue();
                    columnInfo.put(displayName, columns.getObject(colName));
                }
                metadataList.add(columnInfo);
            }
            return metadataList;
        }
    }
    2025-07-08 10:16
  • tofuwine

    Oracle 查询某个表的字段及其属性:

    sql
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    
    SELECT
        column_id AS "列序号",
        column_name AS "字段名",
        data_type AS "数据类型",
        data_length AS "长度",
        data_precision AS "精度(数字类型)",
        data_scale AS "小数位数",
        nullable AS "是否允许为空",
        data_default AS "默认值"
    FROM user_tab_columns
    WHERE table_name = 'YOUR_TABLE_NAME'
    ORDER BY column_id;
    2025-07-06 13:39
  • tofuwine

    黑猴火出了圈,发现有一些人刚发售就全成就了。因此了解到了一款软件 Steam++ (已更名为 Watt Toolkit),而且这还是一个开源项目。

    BeyondDimension/SteamTools

    软件内置了部分网络加速,而且是免费的,还是蛮有用的,特此记录。

    2024-08-21 19:14
  • tofuwine

    ::-webkit-scrollbar CSS 伪类元素会影响设置了 overflow:scroll; 的元素的滚动条样式。

    ::-webkit-scrollbar 仅在基于 BlinkWebKit 的浏览器 (例如,Chrome、Edge、Opera、Safari、iOS 上所有的浏览器,以及其他基于 WebKit 的浏览器) 上可用。滚动条样式的标准方法可用于 scrollbar-colorscrollbar-width

    CSS 滚动条选择器 你可以使用以下伪元素选择器去修改基于 webkit 的浏览器的滚动条样式:

    • ::-webkit-scrollbar:整个滚动条。
    • ::-webkit-scrollbar-button:滚动条上的按钮(上下箭头)。
    • ::-webkit-scrollbar-thumb:滚动条上的滚动滑块。
    • ::-webkit-scrollbar-track:滚动条轨道。
    • ::-webkit-scrollbar-track-piece:滚动条没有滑块的轨道部分。
    • ::-webkit-scrollbar-corner:当同时有垂直滚动条和水平滚动条时交汇的部分。通常是浏览器窗口的右下角。
    • ::-webkit-resizer:出现在某些元素底角的可拖动调整大小的滑块。
    2024-06-04 11:04
  • tofuwine

    Maven 镜像仓库(阿里云):

    text
    1
    
    https://maven.aliyun.com/repository/public

    gradle plugin 镜像仓库(阿里云):

    text
    1
    
    https://maven.aliyun.com/repository/gradle-plugin

    配置指南:阿里云云效 Maven

    2024-05-31 14:03
  • tofuwine

    Chrome 恐龙小游戏:

    text
    1
    
    chrome://dino/
    2024-05-28 13:08
  • tofuwine

    在将顶部导航栏设置为 position: fixed 后,页面锚点跳转会导致锚点内容被导航栏遮挡。

    可通过如下方式进行修正:

    css
    1
    2
    3
    4
    
    /* 假设你的导航栏高度是 60px */
    html {
        scroll-padding-top: 60px;
    }
    Powered by ChatGPT
    2024-05-25 13:38
  • tofuwine

    当反射赋值 private 修饰的属性时,需先设置 accessibletrue

    java
    1
    
    fieldName.setAccessible(true);

    当反射赋值静态属性,将第一个参数设置为 null

    java
    1
    
    fieldName.set(null, newValue);
    2024-04-01 10:00
  • tofuwine

    广告屏蔽大师 Plus+ 订阅链接:

    text
    1
    2
    3
    4
    5
    
    // ad-pc.txt:[推荐桌面端]合并自乘风视频广告过滤规则、Easylist、EasylistChina、EasyPrivacy、CJX'sAnnoyance,以及补充的一些规则;
    https://raw.githubusercontent.com/o0HalfLife0o/list/master/ad.txt
    
    // ad.txt:【推荐】合并自乘风视频广告过滤规则、EasylistChina、EasylistLite、CJX'sAnnoyance,以及补充的一些规则;
    https://raw.githubusercontent.com/o0HalfLife0o/list/master/ad-pc.txt
    2024-03-26 09:20
  • tofuwine

    Windows 11 家庭中文版 转 专业版密钥:

    text
    1
    
    BTY9C-JXQ4W-YFHCH-6RF4V-VC2RY
    2024-03-22 14:12