当前位置: 首页 > news >正文

GBase8c aes_encrypt和aes_decrypt函数

在数据库中,aes_encrypt和aes_decrypt函数进行加解密时使用的块加密模式。

GBase8c 与 MySQL 的aes_encrypt和aes_decrypt函数区别:
1、GBase8c 中的初始化向量init_vector不能为空
2、MySQL的加密模块block_encryption_mode 为aes-128-ecb,GBase8c 不支持aes-128-ecb,默认加密模块为aes-128-cbc
3、GBase8c 中该函数仅在MY兼容模式时(即sql_compatibility = ‘B’)有效,其他类型不支持该函数。
4、初始化向量init_vector需要大于16字节

aes_encrypt(str, key_str, init_vector)

描述:基于AES算法,使用密钥字符串key_str和初始化向量init_vector对字符串str进行加密。参数解释:
-- str:需要被加密的字符串。若str为NULL,函数返回NULL。-- key_str:密钥字符串。若key_str为NULL,函数返回NULL。为了安全,对于128bit/192bit/256bit的密钥长度(由块加密模式block_encryption_mode确定,参数介绍请参见安全配置),建议用户使用128bit/192bit/256bit的安全随机数作为密钥字符串。-- init_vector:为需要它的块加密模式提供初始化变量,长度大于等于16字节(大于16的字节会被在自动忽略)。str和key_str均不为NULL时,该参数不可为NULL,否则报错。为了安全,建议用户在OFB模式下,保证每次加密IV值的唯一性;在CBC模式和CFB模式下,保证每次加密的IV值不可被预测。返回值类型:text

aes_decrypt(pass_str, key_str, init_vector)

描述:基于AES算法,使用密钥字符串key_str和初始化向量init_vector对字符串str进行解密。参数解释:
-- pass_str:需要被解密的字符串。若pass_str为NULL,函数返回NULL。-- key_str: 密钥字符串。若key_str为NULL,函数返回NULL。为了安全,对于128bit/192bit/256bit的密钥长度(由块加密模式block_encryption_mode确定,默认参数为 aes-128-cbc ),建议用户使用128bit/192bit/256bit的安全随机数作为密钥字符串。-- init_vector:为需要它的块解密模式提供初始化变量,长度大于等于16字节(大于16的字节会被在自动忽略)。pass_str和key_str均不为NULL时,该参数不可为NULL,否则报错。为了安全,建议用户在OFB模式下,保证每次加密IV值的唯一性;在CBC模式和CFB模式下,保证每次加密的IV值不可被预测。返回值类型:text

aes-128-cbc 加解密对应的java代码

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;/*** 测试 AES-128-CBC 加解密 (base64、hex)* 注意:在java中,加解密的key 需要大于等于16字节*/
public class Aes128CbcEncryptFullUtil {/*** select hex(aes_encrypt('hello,world', '100860147#.qwert','10010963@Axcvbnm')) from dual;* select to_base64(aes_encrypt('hello,world', '100860147#.qwert','10010963@Axcvbnm')) from dual;*/// AES加密密钥private static String KEY = "100860147#.qwert";// AES加密向量private static String IV = "10010963@Axcvbnm";// 使用Base64进行加密public static String encryptToBase64(String data, String key, String iv) throws Exception {try {// 创建AES加密器Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());// 初始化加密器cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);// 执行加密操作byte[] encrypted = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));// 将加密结果转换为Base64字符串并返回return base64Encode(encrypted);} catch (Exception e) {e.printStackTrace();return null;}}// 使用Base64进行解密public static String desEncryptFromBase64(String data, String key, String iv) throws Exception {try {// 将Base64字符串解码为字节数组byte[] encrypted = base64Decode(data);// 创建AES解密器Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());// 初始化解密器cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);// 执行解密操作byte[] original = cipher.doFinal(encrypted);// 将解密结果转换为字符串并返回return new String(original, StandardCharsets.UTF_8).trim();} catch (Exception e) {e.printStackTrace();return null;}}// 使用16进制进行加密public static String encryptToHex(String data, String key, String iv) throws Exception {try {// 创建AES加密器Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());// 初始化加密器cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);// 执行加密操作byte[] encrypted = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));// 将加密结果转换为16进制字符串并返回return bytesToHex(encrypted);} catch (Exception e) {e.printStackTrace();return null;}}// 使用16进制进行解密public static String desEncryptFromHex(String data, String key, String iv) throws Exception {try {// 将16进制字符串转换为字节数组byte[] encrypted = hexStringToByteArray(data);// 创建AES解密器Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());// 初始化解密器cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);// 执行解密操作byte[] original = cipher.doFinal(encrypted);// 将解密结果转换为字符串并返回return new String(original, StandardCharsets.UTF_8).trim();} catch (Exception e) {e.printStackTrace();return null;}}// 将字节数组转换为16进制字符串public static String bytesToHex(byte[] bytes) {StringBuilder sb = new StringBuilder();for (byte b : bytes) {sb.append(String.format("%02X", b));}return sb.toString();}// 将16进制字符串转换为字节数组public static byte[] hexStringToByteArray(String s) {int len = s.length();byte[] data = new byte[len / 2];for (int i = 0; i < len; i += 2) {data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i + 1), 16));}return data;}// 使用Base64进行编码public static String base64Encode(byte[] bytes) {return Base64.getEncoder().encodeToString(bytes);}// 使用Base64进行解码public static byte[] base64Decode(String str) {return Base64.getDecoder().decode(str);}public static void main(String[] args) throws Exception {String data = "hello,world";// 使用Base64进行加密String base64Encrypt = encryptToBase64(data, KEY, IV);System.out.println("加密数据 (Base64): " + base64Encrypt);// 使用Base64进行解密String base64Decrypt = desEncryptFromBase64(base64Encrypt, KEY, IV);System.out.println("解密数据 (Base64): " + base64Decrypt);// 使用16进制进行加密String hexEncrypt = encryptToHex(data, KEY, IV);System.out.println("加密数据 (Hex): " + hexEncrypt);// 使用16进制进行解密String hexDecrypt = desEncryptFromHex(hexEncrypt, KEY, IV);System.out.println("解密数据 (Hex): " + hexDecrypt);}
}

相关文章:

GBase8c aes_encrypt和aes_decrypt函数

在数据库中&#xff0c;aes_encrypt和aes_decrypt函数进行加解密时使用的块加密模式。 GBase8c 与 MySQL 的aes_encrypt和aes_decrypt函数区别&#xff1a; 1、GBase8c 中的初始化向量init_vector不能为空 2、MySQL的加密模块block_encryption_mode 为aes-128-ecb&#xff0c;…...

【Unity】ScrollViewContent适配问题(Contentsizefilter不刷新、ContentSizeFilter失效问题)

最近做了一个项目&#xff0c;菜单栏读取数据后自动生成&#xff0c;结果用到了双重布局 父物体 尝试了很多方式&#xff0c;也看过很多大佬的文章&#xff0c;后来自己琢磨了一下&#xff0c;当子物体组件自动生成之后&#xff0c;使用以下以下代码效果会好一些&#xff1a; …...

第二届国赛铁三wp

第二届国赛 缺东西去我blog找&#x1f447; 第二届长城杯/铁三 | DDLS BLOG web Safe_Proxy 源码题目 from flask import Flask, request, render_template_stringimport socketimport threadingimport htmlapp Flask(__name__)app.route(/, methods"GET"])de…...

对称二叉树(力扣101)

这道题翻译过来就是判断根节点的左右子树是否可以通过翻转&#xff0c;变得完全一样。如果可以&#xff0c;则这棵二叉树为对称二叉树。那么什么样的左右子树可以通过翻转相互变换呢&#xff1f;它们的节点的数值一定对称分布。那么我们就需要同时遍历左右树&#xff0c;不断比…...

postgresql15的停止

PostgreSQL是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统&#xff0c;且因为许可证的灵活&#xff0c;任何人都可以以任何目的免费使用、修改和分发PostgreSQL。介绍过postgresql的启动方法&#xff0c;就很有必要介绍下postgresql的停止方法。 一、停止…...

3.1 Go函数调用过程

在 Go 语言中&#xff0c;函数调用的核心机制依赖于内存的栈区分配和指针操作&#xff0c;理解这一原理有助于掌握函数的执行过程。 1. 内存结构概述 在 Go 程序编译成可执行文件并启动后&#xff0c;操作系统会为其分配进程内存&#xff0c;进程内存主要分为以下区域&#x…...

Java导出通过Word模板导出docx文件并通过QQ邮箱发送

一、创建Word模板 {{company}}{{Date}}服务器运行情况报告一、服务器&#xff1a;总告警次数&#xff1a;{{ServerTotal}} 服务器IP:{{IPA}}&#xff0c;总共告警次数:{{ServerATotal}} 服务器IP:{{IPB}}&#xff0c;总共告警次数:{{ServerBTotal}} 服务器IP:{{IPC}}&#x…...

c++---------------------------模板进阶

1.非类型模板参数 模板参数分类类型形参与非类型形参 。 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在 class 或者 typename 之类的参数类型名称 。 非类型形参&#xff0c;就是用一个常量作为类 ( 函数 ) 模板的一个参数&#xff0c;在类 ( 函数 ) 模板中可…...

FPGA与ASIC:深度解析与职业选择

IC&#xff08;集成电路&#xff09;行业涵盖广泛&#xff0c;涉及数字、模拟等不同研究方向&#xff0c;以及设计、制造、封测等不同产业环节。其中&#xff0c;FPGA&#xff08;现场可编程门阵列&#xff09;和ASIC&#xff08;专用集成电路&#xff09;是两种重要的芯片类型…...

c++面试题,请使用STL的std::remove_if算法删除std::vector<int>容器中大于5的数字

请使用STL的std::remove_if算法删除std::vector容器中大于5的数字 在C 中&#xff0c; std::remove_if 算法并不会真正从容器中删除元素&#xff0c; 而是将满足条件的元素移动到容器末尾&#xff0c;并返回一个指向新的逻辑结束位置的迭代器。 你需要使用容器的 erase 成员函…...

阿里云-银行核心系统转型之业务建模与技术建模

业务领域建模包括业务建模和技术建模&#xff0c;整体建模流程图如下&#xff1a; 业务建模包括业务流程建模和业务对象建模 业务流程建模&#xff1a;通过对业务流程现状分析&#xff0c;结合目标核心系统建设能力要求&#xff0c;参考行业建 模成果&#xff0c;形成结构化的…...

快速搭建深度学习环境(Linux:miniconda+pytorch+jupyter notebook)

本文基于服务器端环境展开&#xff0c;使用的虚拟终端为Xshell。 miniconda miniconda是Anaconda的轻量版&#xff0c;仅包含Conda和Python&#xff0c;如果只做深度学习&#xff0c;可使用miniconda。 [注]&#xff1a;Anaconda、Conda与Miniconda Conda&#xff1a;创建和管…...

智能风控 数据分析 groupby、apply、reset_index组合拳

目录 groupby——分组 本例 apply——对每个分组应用一个函数 等价用法 reset_index——重置索引 使用前​编辑 注意事项 groupby必须配合聚合函数、 关于agglist 一些groupby试验 1. groupby对象之后。sum&#xff08;一个列名&#xff09; 2. groupby对象…...

Linux(Centos 7.6)命令详解:iconv

1.命令作用 将给定文件的编码从一种编码转换为另一种编码(Convert encoding of given files from one encoding to another) 2.命令语法 Usage: iconv [OPTION...] [FILE...] 3.参数详解 OPTION: 输入/输出格式规范: -f, --from-codeNAME&#xff0c;原始文本编码-t, --t…...

MySQL实现批量表分区完全示例

对于单表大数据量大的问题&#xff0c;如果数据支持分片&#xff0c;使用表分区是个不错的选择&#xff0c;那么MySQL是如何实现表分区的&#xff1f; 一、表分区条件 1.数据库存储引擎支持&#xff1a;InnoDB 和 MyISAM引擎 2.数据库版本支持&#xff1a;MySQL 5.1以后&…...

缓存商品、购物车(day07)

缓存菜品 问题说明 问题说明&#xff1a;用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大。 结果&#xff1a; 系统响应慢、用户体验差 实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询…...

开发环境搭建-1:配置 WSL (类 centos 的 oracle linux 官方镜像)

一些 Linux 基本概念 个人理解&#xff0c;并且为了便于理解&#xff0c;可能会存在一些问题&#xff0c;如果有根本上的错误希望大家及时指出 发行版 WSL 的系统是基于特定发行版的特定版本的 Linux 发行版 有固定组织维护的、开箱就能用的 Linux 发行版由固定的团队、社…...

QT 使用QSqlTableModel对数据库进行创建,插入,显示

文章目录 效果图概述功能点代码分析初始数据插入数据数据显示 总结 效果图 概述 本案例用于对数据库中的数据进行显示等其他操作&#xff0c;其他表格筛选&#xff0c;过滤等功能可看此博客 框架&#xff1a;数据模型使用QSqlTableModel&#xff0c;视图使用QTableView&#x…...

26、正则表达式

目录 一. 匹配字符 .&#xff1a;匹配除换行符外的任意单个字符。 二. 位置锚点 ^&#xff1a;匹配输入字符串的开始位置。 $&#xff1a;匹配输入字符串的结束位置。 \b&#xff1a;匹配单词边界。 \B&#xff1a;匹配非单词边界。 三. 重复限定符 *&#xff1a;匹配…...

vue 数据双向绑定无效 明明值修改了 页面却没有变化

在 Vue.js 中&#xff0c;数据双向绑定通常通过 v-model 指令来实现。如果你修改了数据但页面没有更新&#xff0c;可能是因为以下几个原因之一&#xff1a; 1. 检查 data 函数 确保你的数据属性是在 Vue 实例的 data 函数中声明的&#xff0c;并且是响应式的。例如&#xff…...

【深度学习】3.损失函数的作用

损失函数的作用 假设把猫这张图片分成四个像素点&#xff0c;分别为&#xff1a;56、231、24、2&#xff08;实际应该是三维的&#xff0c;因为还有颜色通道的维度&#xff0c;这里简化成二维&#xff09;。 像素点拿到以后&#xff0c;进行三分类&#xff0c;粉红色为第一组W…...

使用 Aryn DocPrep、DocParse 和 Elasticsearch 向量数据库实现高质量 RAG

作者&#xff1a;来自 Elastic Hemant Malik 及 Jonathan Fritz 组织依靠自然语言查询从非结构化数据中获取见解&#xff0c;但要获得高质量的答案&#xff0c;首先要进行有效的数据准备。Aryn DocParse 和 DocPrep通过将复杂文档转换为结构化 JSON 或 markdown 来简化此过程&a…...

Vue3初学之Element Plus Dialog对话框,Message组件,MessageBox组件

Dialog的使用&#xff1a; 控制弹窗的显示和隐藏 <template><div><el-button click"dialogVisible true">打开弹窗</el-button><el-dialogv-model"dialogVisible"title"提示"width"30%":before-close&qu…...

【面试】Java 记录一次面试过程 三年工作经验

2025 个人工作经验与基础概念 工作挑战及解决方式&#xff1a;这需要根据个人实际工作经历来回答&#xff0c;例如在项目中遇到性能瓶颈&#xff0c;通过代码优化、数据库索引调整或引入缓存机制等方式解决。单例模式&#xff1a; 常见的实现方式有饿汉式、懒汉式&#xff08;…...

1/20赛后总结

1/20赛后总结 T1『讨论区管理员』的旅行 - BBC编程训练营 算法&#xff1a;IDA* 分数&#xff1a;0 damn it! Ac_code走丢了~~&#xff08;主要是没有写出来&#xff09;~~ T2华强买瓜 - BBC编程训练营 算法&#xff1a;双向DFS或者DFS剪枝 分数&#xff1a;0 Ac_code…...

Linux 高级路由与流量控制-用 tc qdisc 管理 Linux 网络带宽

大家读完记得觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 此分享内容比较专业&#xff0c;很多与硬件和通讯规则及队列&#xff0c;比较底层需要有技术功底人员深入解读。 Linux 的带宽管理能力 足以媲美许多高端、专用的带宽管理系统。 1 队列&#xff0…...

大模型GUI系列论文阅读 DAY1:《基于大型语言模型的图形用户界面智能体:综述》(6.6W 字长文)

摘要 图形用户界面&#xff08;Graphical User Interfaces, GUIs&#xff09;长期以来一直是人机交互的核心&#xff0c;为用户提供了直观且以视觉为驱动的方式来访问和操作数字系统。传统上&#xff0c;GUI交互的自动化依赖于基于脚本或规则的方法&#xff0c;这些方法在固定…...

【组件库】使用Vue2+AntV X6+ElementUI 实现拖拽配置自定义vue节点

先来看看实现效果&#xff1a; 【组件库】使用 AntV X6 ElementUI 实现拖拽配置自定义 Vue 节点 在现代前端开发中&#xff0c;流程图和可视化编辑器的需求日益增加。AntV X6 是一个强大的图形化框架&#xff0c;支持丰富的图形操作和自定义功能。结合 ElementUI&#xff0c;…...

考研408笔记之数据结构(三)——串

数据结构&#xff08;三&#xff09;——串 1. 串的定义和基本操作 本节内容很少&#xff0c;重点是串的模式匹配&#xff0c;所以对于串的定义和基本操作&#xff0c;我就简单提一些易错点。另外&#xff0c;串也是一种特殊的线性表&#xff0c;只不过线性表是可以存储任何东…...

Java 和 JavaScript 的区别

尽管名字相似&#xff0c;JavaScript 的名字中带有 “Java”&#xff0c;确实让很多人误以为它与 Java 有紧密联系。但实际上&#xff0c;它们是完全不同的语言&#xff0c;只是在 JavaScript 的发展历史中与 Java 有一定的关联。 1. JavaScript 的诞生背景 时间点&#xff1…...

Web3与传统互联网的对比:去中心化的未来路径

随着互联网技术的不断发展&#xff0c;Web3作为去中心化的新兴架构&#xff0c;正在逐步改变我们的网络体验。从传统的Web2到Web3&#xff0c;互联网的演进不仅是技术的革新&#xff0c;更是理念的变革。那么&#xff0c;Web3与传统互联网相比&#xff0c;到底有何不同&#xf…...

C++之初识模版

目录 1.关于模版的介绍 2.函数模版 2.1函数模板概念 2.2函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5模板参数的匹配原则 3.类模版 3.1类模板的定义格式 3.2 类模板的实例化 1.关于模版的介绍 C中的模板是一种通用编程工具&#xff0c;它允许程序员编…...

如何给自己的域名配置免费的HTTPS How to configure free HTTPS for your domain name

今天有小伙伴给我发私信&#xff0c;你的 https 到期啦 并且随手丢给我一个截图。 还真到期了。 javapub.net.cn 这个网站作为一个用爱发电的编程学习网站&#xff0c;用来存编程知识和面试题等&#xff0c;平时我都用业余时间来维护&#xff0c;并且还自费买了服务器和阿里云…...

什么是Memecoin?它如何在加密货币世界崭露头角

在加密货币的世界里&#xff0c;Memecoin已经成为一个越来越受欢迎的词汇。作为一种新兴的加密货币&#xff0c;Memecoin凭借其独特的性质和文化背景吸引了大量投资者和加密爱好者。本文将详细探讨Memecoin是什么、它的起源、以及为什么它在市场中越来越受到关注。 什么是Meme…...

[unity 高阶]使用ASE制作一个cubed的skybox的shader,跟做版本

第一步,导入ASE 此步骤不在此讲解,有时间再补充 第二步,创建shader 需要选择shader的类型,此处选择legacy/Unlit第三步,创建变量 根据默认shader中的变量 _Tint (“Tint Color”, Color) = (.5, .5, .5, .5)[Gamma] _Exposure (“Exposure”, Range(0, 8)) = 1.0_Rotat…...

Java复习第四天

一、代码题 1.相同的树 (1)题目 给你两棵二叉树的根节点p和q&#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1: 输入:p[1,2,3]&#xff0c;q[1,2,3] 输出:true示例 2: 输…...

mysql数据库启动出现Plugin ‘FEEDBACK‘ is disabled.问题解决记录

本人出现该问题的环境是xampp&#xff0c;异常关机&#xff0c;再次在xampp控制面板启动mysql出现该问题。出现问题折腾数据库之前&#xff0c;先备份数据&#xff0c;将mysql目录下的data拷贝到其他地方&#xff0c;这很重要。 然后开始折腾。 查资料&#xff0c;会发现很多…...

Spring 是如何解决循环依赖问题

Spring 框架通过 三级缓存 机制来解决循环依赖问题。循环依赖是指两个或多个 Bean 相互依赖&#xff0c;形成一个闭环&#xff0c;例如 Bean A 依赖 Bean B&#xff0c;而 Bean B 又依赖 Bean A。Spring 通过提前暴露未完全初始化的 Bean 来解决这个问题。 以下是 Spring 解决…...

【论文笔记】TranSplat:深度refine的camera-required可泛化稀疏方法

深度信息在场景重建中是非常重要的先验&#xff0c;有一个精确的深度估计&#xff0c;重建质量起码提升一半&#xff0c;这一篇就是围绕着transformer优化深度来展开工作&#xff0c;进而提升GS的效果&#xff0c;感谢作者大佬们的work&#xff01; 1 Abstract 与之前的3D重建方…...

营销2.0时代的挑战与开源AI智能名片2+1链动模式S2B2C商城小程序源码的解决方案

摘要&#xff1a;本文旨在探讨营销2.0时代企业在客户管理方面的挑战&#xff0c;并提出开源AI智能名片21链动模式S2B2C商城小程序源码作为解决方案。营销2.0虽然强调客户导向&#xff0c;但在实际操作中&#xff0c;企业往往无差别地对待所有客户&#xff0c;导致客户忠诚度下降…...

PHP教育系统小程序

&#x1f310; 教育系统&#xff1a;全方位学习新体验&#xff0c;引领未来教育风尚 &#x1f680; 教育系统&#xff1a;创新平台&#xff0c;智慧启航 &#x1f4f1; 教育系统&#xff0c;一款深度融合科技与教育的创新平台&#xff0c;匠心独运地采用先进的ThinkPHP框架与U…...

开篇:吴恩达《机器学习》课程及免费旁听方法

课程地址&#xff1a; Machine Learning | Coursera 共包含三个子课程 Supervised Machine Learning: Regression and Classification | Coursera Advanced Learning Algorithms | Coursera Unsupervised Learning, Recommenders, Reinforcement Learning | Coursera 免费…...

zookeeper的介绍和简单使用

1 zookerper介绍 zookeeper是一个开源的分布式协调服务&#xff0c;由Apache软件基金会提供&#xff0c;主要用于解决分布式应用中的数据管理、状态同步和集群协调等问题。通过提供一个高性能、高可用的协调服务&#xff0c;帮助构建可靠的分布式系统。 Zookeeper的特点和功能…...

python学opencv|读取图像(三十八 )阈值自适应处理

【1】引言 前序学习了5种阈值处理方法&#xff0c;包括(反)阈值处理、(反)零值处理和截断处理&#xff0c;相关文章链接为&#xff1a; python学opencv|读取图像&#xff08;三十三&#xff09;阈值处理-灰度图像-CSDN博客 python学opencv|读取图像&#xff08;三十四&#…...

C++ 条件变量-生产消费者模型

条件变量是一种线程同步机制,当条件不满足时&#xff0c;相关线程被一直阻塞&#xff0c;直到某种条件出现&#xff0c;这些线程才会被唤醒. C11的条件变量提供了两个类&#xff1a; condition_variable&#xff1a;只支持与普通mutex搭配&#xff0c;效率更高。 condition_…...

Vue - ref( ) 和 reactive( ) 响应式数据的使用

一、ref( ) 在 Vue 3 中&#xff0c;ref() 是一个用于创建响应式引用的函数。它是 Vue 3 Composition API(组合式API) 的一部分&#xff0c;允许在组件中创建响应式数据。 使用对象&#xff1a;基本数据类型&#xff08;String 、Number 、Boolean 、Null 等&#xff09;、对…...

C语言初阶牛客网刷题——HJ73 计算日期到天数转换【难度:简单】

1. 题目描述——HJ73 计算日期到天数转换 牛客网OJ题链接 描述 每一年中都有 12 个月份。其中&#xff0c;1,3,5,7,8,10,12 月每个月有 31 天&#xff1b; 4,6,9,11 月每个月有 30 天&#xff1b;而对于 2 月&#xff0c;闰年时有29 天&#xff0c;平年时有 28 天。 现在&am…...

学到一些小知识关于Maven 与 logback 与 jpa 日志

1.jpa想要输出参数 logging:level:org.hibernate.orm.jdbc.bind: trace #打印SQL参数web: debug #web框架的日志级别就可以了&#xff0c; 2.Slf4j 其实 Slf4j 是一个日志接口规范&#xff0c;没有具体的实现 而 logback 是 Slf4j的一个实现 &#xff0c;也是springboot3 的…...

Springboot3 自动装配流程与核心文件:imports文件

注&#xff1a;本文以spring-boot v3.4.1源码为基础&#xff0c;梳理spring-boot应用启动流程、分析自动装配的原理 如果对spring-boot2自动装配有兴趣&#xff0c;可以看看我另一篇文章&#xff1a; Springboot2 自动装配之spring-autoconfigure-metadata.properties和spring…...

1905电影网中国地区电影数据分析(一) - 数据采集、清洗与存储

文章目录 前言一、数据采集步骤及python库使用版本1. python库使用版本2. 数据采集步骤 二、数据采集网页分析1. 分析采集的字段和URL1.1 分析要爬取的数据字段1.2 分析每部电影的URL1.2 分析每页的URL 2. 字段元素标签定位 三、数据采集代码实现1. 爬取1905电影网分类信息2. 爬…...