数据资产管理实践白皮书(6.0版)

链接: https://pan.baidu.com/s/1avU2Ri6k7iVgcz-5L62RQA?pwd=emrt
提取码: emrt

《数据资产管理实践白皮书》是大数据技术标准推进委员会在数据资产管理领域的系列研究报告,从2017年开始已连续6年发布,成为了国内数据资产管理的“风向标”。

《数据资产管理实践白皮书(6.0版)》在《数据资产管理实践白皮书(5.0版)》的基础上,结合2022年数据资产管理领域政策和行业动向,持续跟踪各行业典型方法和实践案例,更新了数据资产管理的理念和方法,对数据资产管理领域的发展现状和趋势进行了总结,有助于企业了解自身所处的发展阶段,更好的拟定下一步建设思路。

目前,数据是资产已成为共识,数据资产管理理论框架日趋成熟,越来越多的企业开展数据资产管理工作,推动企业数字化转型。但是与此同时,我们也应认识到多数企业仍停留在数据资产管理发展初期,仍然面临数据资产管理内驱力不足、数据资产管理与业务发展存在割裂、数据资产难于持续运营等问题。

为指导企业解决以上问题,本白皮书总结了数据资产管理活动职能的核心理念与实践要点,提出了战略规划、组织架构、制度体系、平台工具、长效机制五大数据资产管理保障措施,提倡企业体系化开展数据资产管理工作,提升数据资源化效率,创新数据资产化模式,引导企业充分融入数据要素市场发展,加速数据资产价值释放。

未来,数据资产管理将朝着统一化、专业化、敏捷化的方向发展,提高数据资产管理效率,主动赋能业务,推动数据资产安全有序流通,持续运营数据资产,充分发挥数据资产的经济价值和社会价值。

来源:https://mp.weixin.qq.com/s/N9hjG7Ht3Ko4zs85NtLO6Q

修改windows默认字体:noMeiryoUI

看惯了苹方字体,不喜欢windows默认的微软雅黑,找到一个noMeiryoUI,可以很方便的修改windows默认字体。

https://github.com/Tatsu-syo/noMeiryoUI

软件介绍:

This program sets the system font setting on Windows 8.1/10/11.
On Windows 8.1/10/11, Microsoft removes the way to change system font settings.
Microsoft’s system font setting choice is very ugly, especially in Japanese. This is why, I created this tool.

用chatGPT翻译:

这个程序可以在Windows 8.1/10/11上设置系统字体设置。
在Windows 8.1/10/11上,微软移除了改变系统字体设置的方式。
微软的系统字体设置选择非常丑陋,尤其是在日语环境下。这就是为什么我创建了这个工具的原因。

使用chatGPT写jquery插件,实现正文自动生成目录

1. 前言

想给我的博客网站中的正文内容,增加一个自动生成目录的功能,当页面中有标题元素(h1\h2\h3)时,自动创建目录,然后固定在网页的左侧,方便导航和阅读。

2. 生成插件

2.1 js代码

我想基于jquery写一个插件,在web网页的正文中,读取h1、h2、h3标签的标题内容,自动生成目录,固定呈现于网页的左侧,点击目录中的节点,可以跳转到对应的标题

chatGPT:

(function($) {
  $.fn.generateTableOfContents = function() {
    var $this = $(this);
    var $tocContainer = $('<div class="toc-container"></div>');
    var $tocList = $('<ul class="toc-list"></ul>');

    $this.find('h1, h2, h3').each(function() {
      var $heading = $(this);
      var tagName = $heading.prop('tagName').toLowerCase();
      var title = $heading.text();
      var $tocItem = $('<li></li>');
      var $tocLink = $('<a></a>');

      $tocLink.text(title);
      $tocLink.attr('href', '#' + $heading.attr('id'));
      $tocLink.on('click', function(event) {
        event.preventDefault();
        $('html, body').animate({ scrollTop: $heading.offset().top }, 'slow');
      });

      $tocItem.addClass('toc-' + tagName);
      $tocItem.append($tocLink);
      $tocList.append($tocItem);
    });

    $tocContainer.append($tocList);
    $this.prepend($tocContainer);
  };
})(jQuery);
$(document).ready(function() {
  $('.content').generateTableOfContents();
});
继续阅读

宜宾三江中心法务区智慧法务平台

有幸参加 宜宾三江中心法务区智慧法务平台 建设

“智慧法务”平台是宜宾三江中心法务区建设的重要配套,既是推动宜宾高质量发展的重要平台,也是服务成渝双城经济圈建设的窗口。

关键词:宜宾,三江法务区,三江中心法务区,宜宾市三江中心法务区,智慧法务,宜宾三江中心法务区,三江新区,三江法务

地址:https://fwq.yblg.gov.cn

今天最幸福的事情

今天最幸福的事情大概就是睡了2个多小时的午觉,爽。

平时工作日工作量大,睡眠时间少。昨天周六也加了一天班。

Java实现AES加解密

引用 https://blog.csdn.net/qq_33204709/article/details/12693072

可在http://tool.chacuo.net/cryptaes上进行验证。

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;

/**
 * 
 * 参考:https://blog.csdn.net/qq_33204709/article/details/126930720
 * 
 * 将原文的org.slf4j.Logger替换成了System.out.println
 * 将原文引用spring的Base64Util改成了commons-lang3的Base64
 * 
 * @author wali
 */
public class AESUtil {
    /**
     * 编码
     */
    private static final String ENCODING = "UTF-8";
    /**
     * 算法定义
     */
    private static final String AES_ALGORITHM = "AES";
    /**
     * 指定填充方式
     */
    private static final String CIPHER_PADDING = "AES/ECB/PKCS5Padding";
    private static final String CIPHER_CBC_PADDING = "AES/CBC/PKCS5Padding";
    /**
     * 偏移量(CBC中使用,增强加密算法强度)
     */
    private static final String IV_SEED = "1234567812345678";

    /**
     * AES加密
     * 
     * @param content 待加密内容
     * @param aesKey  密码
     * @return
     */
    public static String encrypt(String content, String aesKey) {
        if (StringUtils.isBlank(content)) {
            System.out.println("AES encrypt: the content is null!");
            return null;
        }
        // 判断秘钥是否为16位
        if (StringUtils.isNotBlank(aesKey) && aesKey.length() == 16) {
            try {
                // 对密码进行编码
                byte[] bytes = aesKey.getBytes(ENCODING);
                // 设置加密算法,生成秘钥
                SecretKeySpec skeySpec = new SecretKeySpec(bytes, AES_ALGORITHM);
                // "算法/模式/补码方式"
                Cipher cipher = Cipher.getInstance(CIPHER_PADDING);
                // 选择加密
                cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
                // 根据待加密内容生成字节数组
                byte[] encrypted = cipher.doFinal(content.getBytes(ENCODING));
                // 返回base64字符串
                return Base64.encodeBase64String(encrypted);
            } catch (Exception e) {
                System.out.println("AES encrypt exception:" + e.getMessage());
                throw new RuntimeException(e);
            }

        } else {
            System.out.println("AES encrypt: the aesKey is null or error!");
            return null;
        }
    }

    /**
     * 解密
     * 
     * @param content 待解密内容
     * @param aesKey  密码
     * @return
     */
    public static String decrypt(String content, String aesKey) {
        if (StringUtils.isBlank(content)) {
            System.out.println("AES decrypt: the content is null!");
            return null;
        }
        // 判断秘钥是否为16位
        if (StringUtils.isNotBlank(aesKey) && aesKey.length() == 16) {
            try {
                // 对密码进行编码
                byte[] bytes = aesKey.getBytes(ENCODING);
                // 设置解密算法,生成秘钥
                SecretKeySpec skeySpec = new SecretKeySpec(bytes, AES_ALGORITHM);
                // "算法/模式/补码方式"
                Cipher cipher = Cipher.getInstance(CIPHER_PADDING);
                // 选择解密
                cipher.init(Cipher.DECRYPT_MODE, skeySpec);

                // 先进行Base64解码
                byte[] decodeBase64 = Base64.decodeBase64(content);

                // 根据待解密内容进行解密
                byte[] decrypted = cipher.doFinal(decodeBase64);
                // 将字节数组转成字符串
                return new String(decrypted, ENCODING);
            } catch (Exception e) {
                System.out.println("AES decrypt exception:" + e.getMessage());
                throw new RuntimeException(e);
            }

        } else {
            System.out.println("AES decrypt: the aesKey is null or error!");
            return null;
        }
    }

    /**
     * AES_CBC加密
     * 
     * @param content 待加密内容
     * @param aesKey  密码
     * @return
     */
    public static String encryptCBC(String content, String aesKey) {
        if (StringUtils.isBlank(content)) {
            System.out.println("AES_CBC encrypt: the content is null!");
            return null;
        }
        // 判断秘钥是否为16位
        if (StringUtils.isNotBlank(aesKey) && aesKey.length() == 16) {
            try {
                // 对密码进行编码
                byte[] bytes = aesKey.getBytes(ENCODING);
                // 设置加密算法,生成秘钥
                SecretKeySpec skeySpec = new SecretKeySpec(bytes, AES_ALGORITHM);
                // "算法/模式/补码方式"
                Cipher cipher = Cipher.getInstance(CIPHER_CBC_PADDING);
                // 偏移
                IvParameterSpec iv = new IvParameterSpec(IV_SEED.getBytes(ENCODING));
                // 选择加密
                cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
                // 根据待加密内容生成字节数组
                byte[] encrypted = cipher.doFinal(content.getBytes(ENCODING));
                // 返回base64字符串
                return Base64.encodeBase64String(encrypted);
            } catch (Exception e) {
                System.out.println("AES_CBC encrypt exception:" + e.getMessage());
                throw new RuntimeException(e);
            }

        } else {
            System.out.println("AES_CBC encrypt: the aesKey is null or error!");
            return null;
        }
    }

    /**
     * AES_CBC解密
     * 
     * @param content 待解密内容
     * @param aesKey  密码
     * @return
     */
    public static String decryptCBC(String content, String aesKey) {
        if (StringUtils.isBlank(content)) {
            System.out.println("AES_CBC decrypt: the content is null!");
            return null;
        }
        // 判断秘钥是否为16位
        if (StringUtils.isNotBlank(aesKey) && aesKey.length() == 16) {
            try {
                // 对密码进行编码
                byte[] bytes = aesKey.getBytes(ENCODING);
                // 设置解密算法,生成秘钥
                SecretKeySpec skeySpec = new SecretKeySpec(bytes, AES_ALGORITHM);
                // 偏移
                IvParameterSpec iv = new IvParameterSpec(IV_SEED.getBytes(ENCODING));
                // "算法/模式/补码方式"
                Cipher cipher = Cipher.getInstance(CIPHER_CBC_PADDING);
                // 选择解密
                cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);

                // 先进行Base64解码
                byte[] decodeBase64 = Base64.decodeBase64(content);

                // 根据待解密内容进行解密
                byte[] decrypted = cipher.doFinal(decodeBase64);
                // 将字节数组转成字符串
                return new String(decrypted, ENCODING);
            } catch (Exception e) {
                System.out.println("AES_CBC decrypt exception:" + e.getMessage());
                throw new RuntimeException(e);
            }

        } else {
            System.out.println("AES_CBC decrypt: the aesKey is null or error!");
            return null;
        }
    }

    public static void main(String[] args) {
        // AES支持三种长度的密钥:128位、192位、256位。
        // 代码中这种就是128位的加密密钥,16字节 * 8位/字节 = 128位。
        String random = RandomStringUtils.random(16, "abcdefghijklmnopqrstuvwxyz1234567890");
        System.out.println("随机key:" + random);
        System.out.println();

        System.out.println("---------加密---------");
        String aesResult = encrypt("测试AES加密12", random);
        System.out.println("aes加密结果:" + aesResult);
        System.out.println();

        System.out.println("---------解密---------");
        String decrypt = decrypt(aesResult, random);
        System.out.println("aes解密结果:" + decrypt);
        System.out.println();

        System.out.println("--------AES_CBC加密解密---------");
        String cbcResult = encryptCBC("测试AES加密12456", random);
        System.out.println("aes_cbc加密结果:" + cbcResult);
        System.out.println();

        System.out.println("---------解密CBC---------");
        String cbcDecrypt = decryptCBC(cbcResult, random);
        System.out.println("aes解密结果:" + cbcDecrypt);
        System.out.println();
    }
}

新华三NX54路由器:局域网无法访问公网IP

问题

家里是电信宽带,有公网IP。之前一直用的是华为路由器,通过端口映射,可以实现在外使用公网IP访问家里设备。同时,在家里局域网也能使用公网IP访问家里设备。双11换了新华三NX54路由器,5G频段信号非常好,做了端口映射后也可以实现在外使用公网IP访问家里设备,但是在局域网内无法正常使用公网IP。

外网PC通过公网IP可以正常访问内网的PC_A,然而内网的PC_B却不能通过公网IP访问PC_A!

原因

NX54不支持Nat回流!参考:https://zhiliao.h3c.com/questions/dispcont/170630

绑定固定IP的操作很糟糕

界面丑就不说了,如果要给内网的某台电脑或设置绑定固定IP,只能绑定已分配的IP,而不能指定IP!这操作很让人困惑!