mysql迁移达梦数据库 Java踩坑合集

达梦数据库踩坑合集

文章目录

  • 安装达梦设置大小写不敏感
  • Spring boot引入达梦驱动(两种方式)
    • 将jar包打入本地maven仓库
    • 使用国内maven仓库(阿里云镜像)
  • 达梦驱动yml配置
  • springboot + mybatis-plus整合达梦,如何避免指定数据库名,设置指定库的指定数据库
    • 错误信息
    • 解决方案
  • 达梦 + mybatis timestamp、datetime 和 MySQL中的datetime数据类型的映射
    • 问题背景
    • 解决方案
  • 达梦TEXT数据类型在Java中不能映射为String类型
    • 错误信息
    • 解决方案
  • 达梦数据库将TEXT类型的字段更改为VARCHAR失败
    • 错误信息
    • 解决方案
  • 达梦数据库查询数据 No serializer found for class dm.jdbc.a.a.a and no properties discovered to create BeanSerializer
    • 错误原因
    • 解决方式
  • Error flushing statements. Cause: dm.jdbc.driver.DMException: 当前连接为只读状态
  • 参考博客

安装达梦设置大小写不敏感

达梦的大小写敏感设置,只能在安装的时候设置好,安装完成之后不可更改。我是用的是docker安装。在环境变量里设置"-e CASE_SENSITIVE=0",命令如下:

docker run -tid -p 5236:5236 --restart=always --name dm8 --privileged=true -e PAGE_SIZE=16 -e LD_LIBRARY_PATH=/opt/dmdbms/bin -e INSTANCE_NAME=dm8 -e CASE_SENSITIVE=0 -v /dm8_docker/data:/opt/dmdbms/data dm8_single:dm8_20230808_rev197096_x86_rh6_64

如果已经安装了,并且是大小写敏感的。需要将容器停止,然后删除容器,并将挂载目录(这里是 /dm8_docker/data)下的文件一起删掉。再重新执行以上命令。

# 进入容器: 
docker exec -it 7ccc57b47de3 /bin/bash
# 进入数据库: 
/opt/dmdbms/bin/disql
# 输入超级管理员账号和密码
# 达梦默认的账号密码是:
# 	username:SYSDBA
# 	password: SYSDBA001

附上官网截图:
在这里插入图片描述

Spring boot引入达梦驱动(两种方式)

将jar包打入本地maven仓库

  1. 从官网下载对应版本的jar包(官网:https://eco.dameng.com/document/dm/zh-cn/app-dev/),选择对应的语言、版本号和技术栈,我这里使用的是mybatis-plus。
    在这里插入图片描述

  2. 下载好之后,解压压缩包,进入压缩包文件夹
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  3. 在地址栏输入cmd,进入命令行,输入打包命令
    在这里插入图片描述

mvn install:install-file -Dfile=DmJdbcDriver18.jar -DgroupId=com.dm -DartifactId=DmJdbcDriver18 -Dversion=1.8 -Dpackaging=jar

出现build success即为成功。
在这里插入图片描述
本地仓库中存在了,即可在pom中直接引用

<dependency><groupId>com.dm</groupId><artifactId>DmJdbcDriver18</artifactId><version>1.8</version>
</dependency>

使用国内maven仓库(阿里云镜像)

maven坐标如下:

<dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.1.193</version>
</dependency>

拉取完成即可配置达梦数据库驱动。

达梦驱动yml配置

起因:
因为当前项目是基于MySQL数据做的,中途需要做信创,所以对达梦做的兼容。本人马大哈,一直启动不起来,报找不到达梦驱动 Caused by: java.lang.ClassNotFoundException: com.dm.jdbc.Driver 。
解决:
找了很多别人的yml配置,才发现自己把驱动的类名写错了。

错误写法:com.dm.jdbc.Driver
正确写法:dm.jdbc.driver.DmDriver

#   达梦数据库连接配置datasource:driver-class-name: dm.jdbc.driver.DmDriverurl: jdbc:dm://111.11.11.111:5236/MYDB?useUnicode=true&characterEncoding=utf8&tinyInt1isBit=false&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghaiusername: MYDBpassword: 123456maxPoolSize: 100minPoolSize: 5

另外,还需要注意的是,url的配置,前缀是jdbc:dm//,因为我直接把mysql的配置C过来了,然后报错ERROR [com.alibaba.druid.pool.DruidDataSource] - create connection SQLException, url: jdbc:mysql://111.11.11.111:5236/MYDB?useUnicode=true&characterEncoding=utf8&tinyInt1isBit=false&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai, errorCode 0, state null 。
啊!我真菜!

springboot + mybatis-plus整合达梦,如何避免指定数据库名,设置指定库的指定数据库

错误信息

无效的表或视图名

### Cause: dm.jdbc.driver.DMException: 第1 行附近出现错误:
无效的表或视图名[t_authentication]
; 第1 行附近出现错误:
无效的表或视图名[t_authentication]; nested exception is dm.jdbc.driver.DMException: 第1 行附近出现错误:
无效的表或视图名[t_authentication]

将SQL放入达梦管理工具查询:
在这里插入图片描述
查询的表无法确认是哪一个模式中的,所以需要指定每一个实体的对应模式。

解决方案

如果在代码中每个去加模式名或视图名,那么代码和数据库的绑定关系过于紧密,不符合开发常识。

达梦数据库中一个数据库用户创建之后会自动生成一个默认的模式,默认模式名与用户名相同。使用默认模式名,可以避免在mybatis中的操作均需要加上模式名。

所以我们需要创建一个和模式名(库名)相同的用户,使用新建的用户登录,来访问对应的模式(库)。

  • 创建用户,在达梦管理工具的【用户】栏下,选择【管理用户】,右键,选择【新建用户】
    在这里插入图片描述
  • 填写好用户名(对应模式名,保持一致)、密码,配置用户角色和系统权限等信息即可。
    在这里插入图片描述
  • 使用新建的用户登录连接,即可看见对应名称的模式(库),然后在改模式下创建我们需要的数据表,完成之后,就可以不用添加模式前缀名,访问默认模式中的数据了。

达梦 + mybatis timestamp、datetime 和 MySQL中的datetime数据类型的映射

问题背景

因为项目原有的数据库为MySQL数据库,里面的create_time和update_time等字段均为datetime数据类型,对应Java的数据类型为Date()。

现在将MySQL的数据通过达梦数据迁移工具,将部分表导入到达梦,达梦中的日期类型就全都变为timestamp类型,导致mybatis在对数据进行新增时,默认日期字段的精度会在时分秒的后面拼接一个.023这类的数字。出现如下错误:

ClassTempItemValueMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: 字符串截断
; 字符串截断; nested exception is java.sql.BatchUpdateException: 字符串截断
org.springframework.dao.DataIntegrityViolationException: com.ccnest.common.core.classtemp.mapper.ClassTempItemValueMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: 字符串截断
; 字符串截断; nested exception is java.sql.BatchUpdateException: 字符串截断

解决方案

将达梦中的timestamp数据类型改为DATETIME
在这里插入图片描述
对象实体中为:

    /*** 创建时间*/@TableField(value = "created_time", fill = FieldFill.INSERT)@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private Date createdTime;/*** 更新时间*/@TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private Date updatedTime;

字符串截断的问题,还有可能是导入的时候,达梦将某些数据的字符串长度识别为1,或者较短的长度,导入达梦之后需要重新校验一下数据表的参数设置

达梦TEXT数据类型在Java中不能映射为String类型

错误信息

### Cause: dm.jdbc.driver.DMException: 第1 行附近出现错误:
数据类型不匹配
; 第1 行附近出现错误:
数据类型不匹配; nested exception is dm.jdbc.driver.DMException: 第1 行附近出现错误:
数据类型不匹配

解决方案

为保持MySQL和达梦对应Java中的数据类型不变,所以我这里采用的是修改达梦的字段数据类型为VARCHAR。
附上Java与达梦数据类型映射表,如下(供参考)
在这里插入图片描述

达梦数据库将TEXT类型的字段更改为VARCHAR失败

错误信息

错误消息: 第1 行附近出现错误:
数据类型的变更无效

在这里插入图片描述

解决方案

1、将字段删除重新加(弊端,非空情况,可能删不掉已存在的数据)
2、将数据备份出来,删除表,重新创建表,并导入数据

  • 将所需表的数据全都查询出来
    在这里插入图片描述
  • ctrl+A 全选,右键选择【导出所有】
    在这里插入图片描述

在这里插入图片描述

  • 将需要删除的表的DDL拷贝出来
    在这里插入图片描述
  • 将需要改为TEXT数据类型的定义改为VARCHAR
    在这里插入图片描述

达梦数据库查询数据 No serializer found for class dm.jdbc.a.a.a and no properties discovered to create BeanSerializer

完整错误信息如下:

Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class dm.jdbc.a.a.a and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.ccnest.base.aop.ResponseResult["data"]->com.baomidou.mybatisplus.extension.plugins.pagination.Page["records"]->java.util.ArrayList[0]->com.ccnest.common.core.flow.entity.vo.FlowNodeInstanceListVO["nodeVOs"]->java.util.HashMap["aafcf027e36c3cbb86e35abf88ee7425"]->java.util.ArrayList[0]->com.ccnest.common.core.flow.entity.vo.FlowNodeInstanceVO["itemValueList"]->java.util.ArrayList[0]->com.ccnest.common.core.flow.entity.vo.ItemValueVO["value"]->dm.jdbc.driver.DmdbNClob["connection"]->dm.jdbc.driver.DmdbConnection["dbAccess"]->dm.jdbc.a.a["b"])at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77)at com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1300)at com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:400)at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:46)at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:29)at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:774)at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:774)at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:774)at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:774)at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119)at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79)at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18)at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:774)at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119)at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79)at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18)at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeFields(MapSerializer.java:808)at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:764)at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:720)at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:35)at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:774)at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119)at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79)at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18)at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:774)at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:774)at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1518)at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:1007)at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:456)

错误原因

因为Jackson在序列化的时候无法对值进行读写了

解决方式

1、修改yml配置

这个方法对于我的项目中无效。

spring:jackson: serialization: FAIL_ON_EMPTY_BEANS: false # 关闭

2、给传递的实体增加getter()和setter()方法,并加上有参构造和无参构造,例如:

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;@Data
@NoArgsConstructor
@AllArgsConstructor
public class User implements Serializable {private String username;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}
}

但是对于我的项目也没有生效。

3、使用自定义的HttpMessageConverter(亲测可用)

@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void extendMessageConverters(List<HttpMessageConverter<?>> converters) {FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();converter.setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_JSON));converters.add(0, converter);}}

Error flushing statements. Cause: dm.jdbc.driver.DMException: 当前连接为只读状态

在使用spring boot + mybatis-plus是,将业务实现类xxxImpl的隔离级别写成了

@Transactional(readOnly = true, propagation = Propagation.REQUIRED)

改成

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)

真是不可思议,这么久都没发现

参考博客

  • JAVA数据类型对应DM数据库类型
  • 达梦数据库表导出的两种方法
  • 达梦数据库将TEXT类型的字段更改为VARCHAR失败
  • No serializer found for class dm.jdbc.a.a.a and no properties discovered to create BeanSerializer 达梦
  • 达梦数据库用户与模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/284870.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法篇】逐步理解动态规划1(斐波那契数列模型)

目录 斐波那契数列模型 1. 第N个泰波那契数 2.使用最小花费爬楼梯 3.解码方法 学过算法的应该知道&#xff0c;动态规划一直都是一个非常难的模块&#xff0c;无论是状态转移方程的定义还是dp表的填表&#xff0c;都非常难找到思路。在这个算法的支线专题中我会结合很多力…

Java设计模式之单例模式(多种实现方式)

虽然写了很多年代码&#xff0c;但是说真的对设计模式不是很熟练&#xff0c;虽然平时也会用到一些&#xff0c;但是都没有深入研究过&#xff0c;所以趁现在有空练下手 这章主要讲单例模式&#xff0c;也是最简单的一种模式&#xff0c;但是因为spring中bean的广泛应用&#…

后端工程师快速使用vue和Element

文章目录 Vue1 Vue概述2 快速入门3 Vue指令3.1 v-bind和v-model3.2 v-on3.3 v-if和v-show3.4 v-for3.5 案例 4 生命周期 Element快速使用1 Element介绍2 快速入门3 当前页面中嵌套另一个页面案例代码案例截图 Vue 1 Vue概述 通过我们学习的htmlcssjs已经能够开发美观的页面了…

使用阿里CICD流水线打包Java项目到阿里的docker镜像私仓,并自动部署到服务器启动服务

文章目录 使用阿里CICD流水线打包Java项目到阿里的docker镜像私仓&#xff0c;并自动部署到服务器启动服务1、功能原理实现2、将自己的Java项目通过Git上传到阿里的代码仓库中&#xff0c;也可以通过绑定Gitee或者GitHub账号进行导入3、创建自己的阿里云镜像私仓3、进入阿里的C…

wayland(xdg_wm_base) + egl + opengles 使用 Assimp 加载材质文件Mtl 中的纹理图片最简实例(十六)

文章目录 前言一、3d 立方体 model 属性相关文件1. cube.obj2. cube.Mtl3. 纹理图片 cordeBouee4.jpg二、代码实例1. 依赖库和头文件1.1 assimp1.2 stb_image.h2. egl_wayland_obj_cube.cpp3. Matrix.h 和 Matrix.cpp4. xdg-shell-client-protocol.h 和 xdg-shell-protocol.c5.…

部署mysql,前端,后端

部署mysql docker pull mysql 从镜像源中拉取镜像。 创建mysql容器 docker run -d \--name mysql_container \-p 3306:3306 \-e TZAsia/Shanghai \-e MYSQL_ROOT_PASSWORD123 \--restartalways \-v /opt/mysql:/var/lib/mysql \mysql -d后台运行&#xff0c;--name指定容器…

ShardingSphere水平分表——开发经验(2)

1. 什么场景下分表&#xff1f; 数据量过大或者数据库表对应的磁盘文件过大。 Q&#xff1a;多少数据分表&#xff1f; A&#xff1a;网上有人说1kw&#xff0c;2kw&#xff1f;不准确。 1、一般看字段的数量&#xff0c;有没有包含text类型的字段。我们的主表里面是不允许有t…

模拟-算法

文章目录 替换所有的问号提莫攻击Z字形变换外观数列数青蛙 替换所有的问号 算法思路&#xff1a; 从前往后遍历整个字符串&#xff0c;找到问号之后&#xff0c;就遍历 a ~ z 去尝试替换即可。 class Solution {public String modifyString(String s) {char[] ss s.toCharA…

谷歌DeepMind推出3D游戏AI代理SIMA,实现自然语言操控游戏新纪元

近日&#xff0c;谷歌DeepMind研究团队推出了一款名为SIMA的创新AI代理&#xff0c;专为3D游戏环境设计。这款代理独树一帜&#xff0c;无需访问游戏源代码或依赖定制API&#xff0c;仅通过输入图像和简单的自然语言文本指令&#xff0c;便能实现与人类玩家相当的游戏操作。 AI…

MATLAB的使用(一)

一&#xff0c;MATLAB的编程特点 a,语法高度简化&#xff1b; b,脚本式解释型语言&#xff1b; c,针对矩阵的高性能运算&#xff1b; d,丰富的函数工具箱支持&#xff1b; e,通过matlab本体构建跨平台&#xff1b; 二&#xff0c;MATLAB的界面 工具栏:提供快捷操作编辑器…

1-Flume中agent的source

Flume&#xff08;1.11.0版本&#xff09; 简介 概述 Flume本身是由Cloudera公司开发的后来贡献给了Apache的一套针对日志数据进行收集(collecting)、汇聚(aggregating)和传输(moving)的机制 Flume本身提供了简单且灵活的结构来完成日志数据的传输 Flume有两大版本&#x…

RIP,EIGRP,OSPF的区别

1.路由协议 能否选择出最优路径 2.路由协议 是否能够完成故障切换/多久能够完成故障切换 3.路由协议 是否会占用过大硬件资源 -- RIP -- 路由信息协议 跳数:一次三层设备的转发算一跳 中间隔的设备数量 不按照链路带宽来算 Rip认为路径一样,这个时候。 下面这个跳数不…

【C语言_数组_复习篇】

目录 一、数组的概念 二、数组的类型 三、一维数组 3.1 一维数组的创建 3.2 一维数组的初始化 3.3 一维数组的访问 3.4 一维数组在内存中的存储 四、二维数组 4.1 二维数组的创建 4.2 二维数组的初始化 4.3 二维数组的访问 4.4 二维数组在内存中的存储 五、变长数组 六、…

kafka面试篇

消息队列的作用&#xff1a;异步、削峰填谷、解耦 高可用&#xff0c;几乎所有相关的开源软件都支持&#xff0c;满足大多数的应用场景&#xff0c;尤其是大数据和流计算领域&#xff0c; kafka高效&#xff0c;可伸缩&#xff0c;消息持久化。支持分区、副本和容错。 对批处理…

ChatGPT论文指南|揭秘8大ChatGPT提示词研究技巧提升写作效率【建议收藏】

点击下方▼▼▼▼链接直达AIPaperPass &#xff01; AIPaperPass - AI论文写作指导平台 公众号原文▼▼▼▼&#xff1a; ChatGPT论文指南|揭秘8大ChatGPT提示词研究技巧提升写作效率【建议收藏】 目录 1.写作方法 2.方法设计 3.研究结果 4.讨论写作 5.总结结论 6.书…

常见技术难点及方案

1. 分布式锁 1.1 难点 1.1.1 锁延期 同一时间内不允许多个客户端同时获得锁&#xff1b; 1.1.2 防止死锁 需要确保在任何故障场景下&#xff0c;都不会出现死锁&#xff1b; 1.2.3 可重入 特殊的锁机制&#xff0c;它允许同一个线程多次获取同一个锁而不会被阻塞。 1.2…

【Linux】HTTP协议 HTTPS协议

jsoncpp库的安装使用 sudo yum install jsoncpp-devel 使用jsoncpp包含头文件<jsoncpp/json/json.h> Makefile要添加链接jsoncpp库的选项-ljsoncpp HTTP协议 应用层&#xff1a;通俗说就是程序员在socket接口之上编写的具体逻辑&#xff0c;其中很多工作都是和文本处理…

蓝桥杯需要掌握的几个案例(C/C++)

文章目录 蓝桥杯C/C组的重点主要包括以下几个方面&#xff1a;以下是一些在蓝桥杯C/C组比赛中可能会涉及到的重要案例类型&#xff1a;1. **排序算法案例**&#xff1a;2. **查找算法案例**&#xff1a;3. **数据结构案例**&#xff1a;4. **动态规划案例**&#xff1a;5. **图…

Linux的一些基本指令

​​​​​​​ 目录 前言&#xff1a; 1.以指令的形式登录 2.ls指令 语法&#xff1a; 功能&#xff1a; 常用选项&#xff1a; 3.pwd指令 4.cd指令 4.1 绝对路径与相对路径 4.2 cd .与cd ..&#xff08;注意cd后先空格&#xff0c;然后两个点是连一起的&#xff0…

选择word中的表格VBA

打开开发工具 选择Visual Basic插入代码 Sub 选择word中的表格() Dim t As Table an MsgBox("即将选择选区内所有表格&#xff0c;若无选区&#xff0c;则选择全文表格。", vbYesNo, "提示") If an - 6 Then Exit Sub Set rg IIf(Selection.Type wdSel…