linux下安装达梦数据库v8详解
目录
操作系统、数据库
1、下载达梦数据库
2、安装前准备
2.1、建立数据库用户和组
2.2、修改文件打开最大数
2.3、挂载镜像
2.4、新建安装目录
3、数据库安装
4、配置环境变量
5、初始化数据库实例
6、注册服务
7、使用数据库
8、卸载数据库
9、多实例管理
10、windows DM管理工具
10.1、下载安装windows DM管理工具
10.1、下载安装windows DM管理工具
11、文档查看
11.1、在线文档
11.2、安装程序中的本地文档
操作系统、数据库
操作系统:Debian 10
数据库:达梦数据库v8
1、下载达梦数据库
官方下载链接:产品下载 | 达梦数据库
官方安装文档:安装前准备 | 达梦技术文档
文件名:dm8_20230104_x86_rh6_64.zip
2、安装前准备
2.1、建立数据库用户和组
注意
安装前必须创建 dmdba 用户,禁止使用 root 用户安装数据库。
建立数据库用户组、建立数据库用户、设置数据库用户密码
groupadd -g 12349 dinstall
useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba
2.2、修改文件打开最大数
重启服务器后永久生效
使用 vi 编辑器打开 /etc/security/limits.conf 文件,在最后添加四条语句,命令如下:
vi /etc/security/limits.confdmdba hard nofile 65537
dmdba soft nofile 65537
dmdba hard stack 32768
dmdba soft stack 16384
切换到 dmdba 用户,查看是否生效,命令如下:
su - dmdbaulimit -a
2.3、挂载镜像
切换到 root 用户,将 DM 数据库的 iso 安装包挂载在任意位置,例如 /dm 目录下,
新建挂载目录/dm
mkdir /dm
进入iso所在目录,这里的pathToIso修改为实际ISO所在目录。
cd pathToIso/dm8_20230104_x86_rh6_64.iso
执行如下命令挂载镜像:
mount -o loop dm8_20230104_x86_rh6_64.iso /dm
2.4、新建安装目录
在达梦家目录下创建 /dm 文件夹,用来安装 DM 数据库。命令如下:
mkdir /home/dmdba/dm
注意
使用 root 用户建立文件夹,待 dmdba 用户建立完成后
,需将文件所有者更改为 dmdba 用户,否则无法安装到该目录下
修改安装目录权限
将新建的安装路径目录权限的用户修改为 dmdba,用户组修改为 dinstall。命令如下:
chown dmdba:dinstall -R /home/dmdba/dm
给安装路径下的文件设置 755 权限。命令如下:
chmod -R 755 /home/dmdba/dm
3、数据库安装
切换到数据库用户进行安装
su - dmdba
进入达梦iso挂载目录,执行安装命令
cd /dm
./DMInstall.bin -i
由于数据库安装服务非root用户,无法创建服务。
需要以root用户执行下述脚本:建立数据库配置文件,进行数据库服务创建,配置systemd服务管理,配置开机自启动。
4、配置环境变量
切换到 root 用户进入 dmdba 用户的根目录下,配置对应的环境变量。DM_HOME 变量和动态链接库文件的加载路径在程序安装成功后会自动导入。
添加path环境变量,命令如下:
编辑 $DM_HOME/.bash_profile,使其最终效果如下图所示:
cd /home/dmdba/
vim .bash_profile
加入一行
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
然后切换至 dmdba 用户下,执行以下命令,使环境变量生效。
su - dmdba
source .bash_profile
5、初始化数据库实例
命令行初始化数据库实例
使用 dmdba 用户始化数据库实例,进入到 DM 数据库安装目录下的 bin 目录中,使用 dminit 命令初始化实例。
dminit 命令可设置多种参数,可执行如下命令查看可配置参数
./dminit help
关键字 | 说明(默认值) |
INI_FILE | 初始化文件dm.ini存放的路径 |
PATH | 初始数据库存放的路径 |
CTL_PATH | 控制文件路径 |
LOG_PATH | 日志文件路径 |
EXTENT_SIZE | 数据文件使用的簇大小(16),可选值:16, 32, 64,单位:页 |
PAGE_SIZE | 数据页大小(8),可选值:4,8,16,32,单位:K |
LOG_SIZE | 日志文件大小(256),单位为:M,范围为:256M~2G |
CASE_SENSITIVE | 大小敏感(Y),可选值:Y/N,1/0 |
CHARSET/UNICODE_FLAG | 字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR] |
SEC_PRIV_MODE | 权限管理模式(0),可选值:0[TRADITION],1[BMJ],2[EVAL],3[ZB] |
LENGTH_IN_CHAR VARCHAR | 类型长度是否以字符为单位(N),可选值:Y/N,1/0 |
SYSDBA_PWD | 设置SYSDBA密码(SYSDBA) |
SYSAUDITOR_PWD | 设置SYSAUDITOR密码(SYSAUDITOR) |
DB_NAME | 数据库名(DAMENG) |
INSTANCE_NAME | 实例名(DMSERVER) |
PORT_NUM | 监听端口号(5236) |
BUFFER | 系统缓存大小(100),单位M |
TIME_ZONE | 设置时区(+08:00) |
PAGE_CHECK | 页检查模式(1),可选值:0/1/2 |
PAGE_HASH_NAME | 设置页检查HASH算法 |
EXTERNAL_CIPHER_NAME | 设置默认加密算法 |
EXTERNAL_HASH_NAME | 设置默认HASH算法 |
EXTERNAL_CRYPTO_NAME | 设置根密钥加密引擎 |
RLOG_ENCRYPT_NAME | 设置日志文件加密算法,若未设置,则不加密 |
USBKEY_PIN | 设置USBKEY PIN |
PAGE_ENC_SLICE_SIZE | 设置页加密分片大小,可选值:0、512、4096,单位:Byte |
ENCRYPT_NAME | 设置全库加密算法 |
BLANK_PAD_MODE | 设置空格填充模式(0),可选值:0/1 |
SYSTEM_MIRROR_PATH | SYSTEM数据文件镜像路径 |
MAIN_MIRROR_PATH | MAIN数据文件镜像 |
ROLL_MIRROR_PATH | 回滚文件镜像路径 |
MAL_FLAG | 初始化时设置dm.ini中的MAL_INI(0) |
ARCH_FLAG | 初始化时设置dm.ini中的ARCH_INI(0) |
MPP_FLAG | Mpp系统内的库初始化时设置dm.ini中的mpp_ini(0) |
CONTROL | 初始化配置文件(配置文件格式见系统管理员手册) |
AUTO_OVERWRITE | 是否覆盖所有同名文件(0) 0:不覆盖 1:部分覆盖 2:完全覆盖 |
USE_NEW_HASH | 是否使用改进的字符类型HASH算法(1) |
ELOG_PATH | 指定初始化过程中生成的日志文件所在路径 |
AP_PORT_NUM | 分布式环境下协同工作的监听端口 |
DFS_FLAG | 初始化时设置dm.ini中的DFS_INI(0) |
DFS_PATH | 启用dfs时指定数据文件的缺省路径 |
DFS_HOST | 指定连接分布式系统DFS的服务地址(localhost) |
DFS_PORT | 指定连接分布式系统DFS的服务端口号(3332) |
DFS_COPY_NUM | 指定分布式系统的副本数(3) |
DFS_DB_NAME | 指定分布式系统的中数据库名(默认与DB_NAME一致) |
SHARE_FLAG | 指定分布式系统中该数据库的共享属性(0) |
REGION_MODE | 指定分布式系统中该数据库的系统表空间数据文件的区块策略(0) 0:微区策略 1:宏区策略 |
HUGE_WITH_DELTA | 是否仅支持创建事务型HUGE表(1) 1:是 0:否 |
RLOG_GEN_FOR_HUGE | 是否生成HUGE表REDO日志(1) 1:是 0:否 |
PSEG_MGR_FLAG | 是否仅使用管理段记录事务信息(0) 1:是 0:否 |
CHAR_FIX_STORAGE | CHAR是否按定长存储(N),可选值:Y/N,1/0 |
SQL_LOG_FORBID | 是否禁止打开SQL日志(N),可选值:Y/N,1/0 |
DPC_MODE | 指定DPC集群中的实例角色(0) 0:无 1:MP 2:BP 3:SP,取值1/2/3时也可以用MP/BP/SP代替 |
HELP | 打印帮助信息 |
使用如下命令初始化数据库
dmdba@debian:~/dmdbms/bin$ ./dminit path=/home/dmdba/dm/data db_name=DAMENG instance_name=DMSERVER port_num=5236 CASE_SENSITIVE=0 CHARSET=1
数名 | 说明 |
---|---|
path=/home/dmdba/dm/data | 初始数据库存放的路径 |
db_name=DAMENG | 数据库名(DAMENG) |
instance_name=DMSERVER | 实例名(DMSERVER) |
port_num=5236 | 监听端口号(5236) |
下面是官方描述:供参考
需要注意的是页大小 (page_size)、簇大小 (extent_size)、大小写敏感 (case_sensitive)、字符集 (charset) 这四个参数,一旦确定无法修改,需谨慎设置。
extent_size 指数据文件使用的簇大小,即每次分配新的段空间时连续的页数。只能是 16 页或 32 页或 64 页之一,缺省使用 16 页。
page_size 数据文件使用的页大小,可以为 4 KB、8 KB、16 KB 或 32 KB 之一,选择的页大小越大,则 DM 支持的元组长度也越大,但同时空间利用率可能下降,缺省使用 8 KB。
case_sensitive 标识符大小写敏感,默认值为 Y 。当大小写敏感时,小写的标识符应用双引号括起,否则被转换为大写;当大小写不敏感时,系统不自动转换标识符的大小写,在标识符比较时也不区分大小写,只能是 Y、y、N、n、1、0 之一。
charset 字符集选项。0 代表 GB18030;1 代表 UTF-8;2 代表韩文字符集 EUC-KR;取值 0、1 或 2 之一。默认值为 0。
可以使用默认参数初始化实例,需要附加实例存放路径。此处以初始化实例到 /dm/data 目录下为例(执行初始化命令前,需要使用 root 用户授予 /dm/data 目录相应权限,可以参考修改目录权限),初始化命令如下:
./dminit path=/dm/data
dminit 默认参数
也可以自定义初始化实例的参数,参考如下示例:
以下命令设置页大小为 32 KB,簇大小为 32 KB,大小写敏感,字符集为 utf_8,数据库名为 DMDB,实例名为 DBSERVER,端口为 5237。
./dminit path=/dm/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y
CHARSET=1 DB_NAME=DMDB INSTANCE_NAME=DBSERVER PORT_NUM=5237
dminit 设置参数
注意
如果此处自定义了初始化参数,在后面的注册服务和启动数据库等步骤中,请按实际的自定义参数进行操作。
至此完成了DM数据库的命令行安装及初始化
6、注册服务
给刚初始化的数据库创建后台服务
需使用root用户创建
服务名叫做DmServiceDMSERVER
su - rootcd /home/dmdba/dmdbms/script/root./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dm/data/DAMENG/dm.ini -p DMSERVER会自动创建systemd服务
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service → /lib/systemd/system/DmServiceDMSERVER.service.
创建服务(DmServiceDMSERVER)完成
root@debian:/home/dmdba/dmdbms/script/root# 设置服务开机自启动,并开启服务。
systemctl enable DmServiceDMSERVER开启服务
systemctl start DmServiceDMSERVER查看服务
systemctl status DmServiceDMSERVERroot@debian:/home/dmdba/dmdbms/script/root#
● DmServiceDMSERVER.service - DM Instance Service(DmServiceDMSERVER).Loaded: loaded (/lib/systemd/system/DmServiceDMSERVER.service; enabled; vendor preset: enabled)Active: active (running) since Mon 2023-04-03 05:16:08 PDT; 2s agoProcess: 79472 ExecStart=/home/dmdba/dmdbms/bin/DmServiceDMSERVER start (code=exited, status=0/SUCCESS)Main PID: 79495 (dmserver)Tasks: 66Memory: 544.4MCGroup: /system.slice/DmServiceDMSERVER.service└─79495 /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/dm/data/DAMENG/dm.ini -noconsoleApr 03 05:15:53 debian systemd[1]: Starting DM Instance Service(DmServiceDMSERVER)....
Apr 03 05:16:08 debian DmServiceDMSERVER[79472]: [39B blob data]
Apr 03 05:16:08 debian systemd[1]: Started DM Instance Service(DmServiceDMSERVER)..
root@debian:/home/dmdba/dmdbms/script/root#
命令行参数如下:
7、使用数据库
登录数据库
su - dmdba
cd /home/dmdba/dmdbms/bin
./disql SYSDBA/SYSDBA@LOCALHOST:5236
格式:账号/口令@网络地址:端口号
账户:SYSDBA管理员账户
口令:初始化数据库可以指定,如没指定默认SYSDBA
端口号:初始化数据库指定的PORT_NUM
dmdba@debian:~/dmdbms/bin$ ./disql SYSDBA/SYSDBA@LOCALHOST:5236
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.979(ms)
disql V8
SQL> helpHELP
----显示打印信息,键入HELP或者 ? .HELP|? [topic]APPEND 添加文本到当前行的末尾。COLUMN 描述指定列的信息。CONNECT 连接到服务器。CLEAR 重置或清理指定操作的缓存。DISCONNECT 提交所有修改到服务器,但不退出DISQL。要退出DISQL使用exit命令。DESCRIBE 获取表或视图、存储过程、函数、包、记录、类的结构描述。DEFINE 设置变量值,或者显示已定义的变量信息。HOST 在不退出DISQL的情况下执行操作系统命令。EDIT 打开一个文本编辑器,里面包含所有SQL记录。EXIT 提交或者回滚所有修改,退出DISQL。MORE 切换到下一个结果集。LIST 显示最近执行的SQL语句或者PL/SQL块信息,或者使用 ";"命令。不显示DISQL命令。PROMPT 发送指定的消息或者空行到用户的屏幕。QUIT 提交或者回滚所有修改,退出DISQL。SET 设置某个系统环境变量,设置的值会修改当前会话的DISQL系统设置,例如:- 设置数据显示宽度- 制定 HTML 格式- 允许/禁止打印列头- 设置每一页的行数SHOW 显示某个DISQL的系统变量,或者当前DISQL的环境变量。SPOOL 屏幕显示的内容输出到指定文件。WHENEVER 当一个SQL命令,或者PL/SQL块生成一个错误的时候,执行特定的命令(默认是DISQL退出)SQL> quit
dmdba@debian:~/dmdbms/bin$ pwd
/home/dmdba/dmdbms/bin
查看默认的所有用户
select username,user_id,default_tablespace,profile from dba_users:
查看数据库版本号
select * from v$version;
select id_code;
参数 | 说明 |
---|---|
DM Database Server 64 V8 | 达梦数据库管理系统目前最新的版本是8.0版本,简称DM8。 64 版本位数标识,64表示为64位版本,无64则表示为32位版本;V8 是大版本号。 |
B Version: 0x7000c | |
03134283968-20230103-178822-20033 | 03134283968 小版本号,20230103 版本编译时间;178822 代码SVN号;20033 分支代码号;后面如还有字段ENT是版本:ENT 版本标识,ENT表示企业版,还有STD标准版,SEC安全版。(其他标识为非通用的定制版) |
8、卸载数据库
切换到root用户
切换到root用户
su - root停止服务
systemctl stop DmServiceDMSERVER
systemctl stop DmAPService.service 执行卸载程序
切换到dmdba用户
su - dmdba
cd /home/dmdba/dmdbms
./uninstall.sh -idmdba@debian:~/dmdbms$ ./uninstall.sh -i
请确认是否卸载达梦数据库(/home/dmdba/dmdbms/)? (y/Y:是 n/N:否):y是否删除dm_svc.conf配置文件? (y/Y:是 n/N:否):y正在删除所有数据库库服务
删除数据库服务DmAuditMonitorService
删除数据库服务DmInstanceMonitorService
删除数据库服务DmJobMonitorService
删除数据库服务DmAPService
删除数据库服务DmServiceDMSERVER
删除所有数据库库服务完成
正在删除数据库目录
删除bin目录
删除bin目录完成
删除bin2目录
删除bin2目录完成
删除include目录
删除include目录完成
删除desktop目录
删除desktop目录完成
删除doc目录
删除doc目录完成
删除drivers目录
删除drivers目录完成
删除jdk目录
删除jdk目录完成
删除jar目录
删除jar目录完成
删除samples目录
删除samples目录完成
删除script目录
删除script目录完成
删除tool目录
删除tool目录完成
删除web目录
删除web目录完成
删除uninstall目录
删除uninstall目录完成
删除license_en.txt文件
删除license_en.txt文件完成
删除license_zh.txt文件
删除license_zh.txt文件完成
删除uninstall.sh文件
删除uninstall.sh文件完成
删除数据库目录完成使用root用户执行命令:
/home/dmdba/dmdbms/root_uninstaller.sh
dmdba@debian:~/dmdbms$ 使用root用户执行清理命令
切换到root
su - root
/home/dmdba/dmdbms/root_uninstaller.sh
root@debian:/home/dmdba/dmdbms/script/root# /home/dmdba/dmdbms/root_uninstaller.sh
sh: 0: getcwd() failed: No such file or directory
删除DmAPService服务
Removed /etc/systemd/system/multi-user.target.wants/DmAPService.service.
删除DmServiceDMSERVER服务
Removed /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service.
删除/etc/dm_svc.conf文件
root@debian:/home/dmdba/dmdbms/script/root# 此卸载完毕
9、多实例管理
建立端口为5237的数据库实例
命令如下
切换到dmdba用户
su - dmdba
cd /home/dmdba/dmdbms/bin
dminit path=/home/dmdba/dm/data db_name=DAMENG_5237 instance_name=DMSERVER_5237 port_num=5237 CASE_SENSITIVE=0 CHARSET=1dmdba@debian:~/dmdbms/bin$ dminit path=/home/dmdba/dm/data db_name=DAMENG_5237 instance_name=DMSERVER_5237 port_num=5237 CASE_SENSITIVE=0
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2024-01-03
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLLlog file path: /home/dmdba/dm/data/DAMENG_5237/DAMENG_523701.loglog file path: /home/dmdba/dm/data/DAMENG_5237/DAMENG_523702.logwrite to dir [/home/dmdba/dm/data/DAMENG_5237].
create dm database success. 2023-04-06 23:12:23
dmdba@debian:~/dmdbms/bin$ 注册服务
切换到root用户
su - root
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dm/data/DAMENG_5237/dm.ini -p DMSERVER_5237root@debian:/home/dmdba/dmdbms/script/root# ./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dm/data/DAMENG_5237/dm.ini -p DMSERVER_5237
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER_5237.service → /lib/systemd/system/DmServiceDMSERVER_5237.service.
创建服务(DmServiceDMSERVER_5237)完成
root@debian:/home/dmdba/dmdbms/script/root#建立第二个实例前,data目录
root@debian:/home/dmdba/dm/data# ls -l
total 4
drwxr-xr-x 6 dmdba dinstall 4096 Apr 6 21:46 DAMENG
root@debian:/home/dmdba/dm/data# 建立第二个实例后,data目录
root@debian:/home/dmdba/dm/data# ls -l
total 8
drwxr-xr-x 6 dmdba dinstall 4096 Apr 6 21:46 DAMENG
drwxr-xr-x 5 dmdba dinstall 4096 Apr 6 23:12 DAMENG_5237
root@debian:/home/dmdba/dm/data# 数据库名对应data目录下的一个文件夹。查看多实例
ps -elf|grep -v grep|grep dmserverroot@debian:/home/dmdba/dmdbms/script/root# ps -elf|grep -v grep|grep dmserver
0 S dmdba 790 1 0 80 0 - 1003086 - 19:18 ? 00:00:57 /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/dm/data/DAMENG/dm.ini -noconsole
0 S dmdba 46960 1 24 80 0 - 806203 - 23:24 ? 00:00:06 /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/dm/data/DAMENG_5237/dm.ini -noconsole
root@debian:/home/dmdba/dmdbms/script/root#disql连接特定实例(不同端口区分不同数据库实例)
切换到dmdba用户
su - dmdba
cd /home/dmdba/dmdbms/bin
disql SYSDBA/SYSDBA@LOCALHOST:5237dmdba@debian:~/dmdbms/bin$ disql SYSDBA/SYSDBA@LOCALHOST:5237服务器[LOCALHOST:5237]:处于普通打开状态
登录使用时间 : 5.103(ms)
disql V8
SQL> SELECT USER_NAME,CLNT_TYPE,TIME_ZONE,CLNT_IP,CLNT_VER FROM V$SESSIONS;行号 USER_NAME CLNT_TYPE TIME_ZONE CLNT_IP CLNT_VER
---------- --------- --------- --------- --------- ---------
1 SYSDBA SQL3 +08:00 ::1:42982 8.1.2.192已用时间: 4.888(毫秒). 执行号:58900.
SQL> select username,user_id,default_tablespace,profile from dba_users;行号 username user_id default_tablespace PROFILE
---------- ---------- ----------- ------------------ ------------------------------------------
1 SYSAUDITOR 50331650 SYSTEM /home/dmdba/dm/data/DAMENG_5237/SYSTEM.DBF
2 SYSSSO 50331651 SYSTEM /home/dmdba/dm/data/DAMENG_5237/SYSTEM.DBF
3 SYSDBA 50331649 MAIN /home/dmdba/dm/data/DAMENG_5237/MAIN.DBF
4 SYS 50331648 SYSTEM /home/dmdba/dm/data/DAMENG_5237/SYSTEM.DBF已用时间: 110.744(毫秒). 执行号:58901.
SQL> select name,create_time from v$database;行号 name create_time
---------- ----------- -------------------
1 DAMENG_5237 2023-04-06 23:12:22已用时间: 2.853(毫秒). 执行号:58902.
SQL>
10、windows DM管理工具
10.1、下载安装windows DM管理工具
产品下载 | 达梦数据库
选择X86 Win_64 下载
文件名:dm8_20230106_x86_win_64.zip
解压安装
选择客户端安装
10.1、下载安装windows DM管理工具
新建连接
输入数据库主机名(数据库服务器地址)
端口默认是5236
用户名SYSDBA 密码默认是SYSDBA
点确定进行连接
11、文档查看
11.1、在线文档
产品手册 | 达梦技术文档
11.2、安装程序中的本地文档
windows dm数据库系统安装目录下doc文件夹
相关文章:
linux下安装达梦数据库v8详解
目录 操作系统、数据库 1、下载达梦数据库 2、安装前准备 2.1、建立数据库用户和组 2.2、修改文件打开最大数 2.3、挂载镜像 2.4、新建安装目录 3、数据库安装 4、配置环境变量 5、初始化数据库实例 6、注册服务 7、使用数据库 8、卸载数据库 9、多实例管理 10、…...
深入理解 Android 中的 ApplicationInfo
深入理解 Android 中的 ApplicationInfo 在 Android 开发中,ApplicationInfo 是一个非常重要的类,它包含了关于应用程序的元信息。这些信息通常是从 AndroidManifest.xml 文件中提取的,开发者可以通过 ApplicationInfo 类来获取和操作这些信…...
【vLLM】使用PagedAttention 进行大型语言模型的高效内存管理
重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…...
STLG_01_12_程序设计C语言 - 联合体和枚举类型
在C语言中,联合体(Union)和枚举类型(Enum)是两种不同的数据结构,它们各自有特定的用途和特点。 联合体(Union) 联合体是一种数据结构,允许在相同的内存位置存储不同的数…...
ThreadLocal详解:深入探讨导致JVM内存泄露的原因及预防措施
引言 ThreadLocal 是Java提供的一个线程局部变量工具,它使得每个线程都可以拥有自己的变量副本,而这些副本对于其他线程而言是不可见的。这在多线程编程中非常有用,因为它可以避免共享资源带来的同步问题。然而,如果使用不当&…...
【FlutterDart】 拖动改变 widget 的窗口尺寸大小GestureDetector~简单实现(10 /100)
上效果 预期的是通过拖动一条边界线改变窗口大小,类似vscode里拖动效果。这个是简单的拖动实现 上代码: import package:flutter/material.dart;class MyDraggableViewDemo extends StatelessWidget {const MyDraggableViewDemo({super.key});override…...
【FlutterDart】 拖动边界线改变列宽并且有边界高亮和鼠标效果(12 /100)
【Flutter&Dart】 拖动改变 widget 的窗口尺寸大小GestureDetector~简单实现(10 /100) 【Flutter&Dart】 拖动边界线改变列宽类似 vscode 那种拖动改变编辑框窗口大小(11 /100) 上效果 对比一下vscode的效果&…...
鸿蒙应用开发(2)
鸿蒙应用开发启航计划-CSDN博客 鸿蒙应用开发(1)-CSDN博客 没看过前两篇的,建议请先看上面。 如果你学习完了前两篇,那么你学习这篇文章,就很容易理解了。 这一篇文章将介绍声明式UI的 渲染控制。你需要了解的是&…...
js -动态主题色
学习参考来源: 峰华大佬:https://www.bilibili.com/video/BV1E64y1Z79Q/?spm_id_from333.1391.0.0&vd_sourcea0f31140205458776d3a4ef477cd6561 实际效果: http://www.qingkong.zone/laboratory?typetheme-color 前言 本文内容可结合上…...
connect to host github.com port 22: Connection timed out 的解决方法
原因是 Github 被 GFW 屏蔽了。 Windows 系统,打开 C:\Windows\System32\drivers\etc,复制其中的 hosts 文件至桌面,用文本编辑器或者其他工具打开。 复制以下内容进去: 140.82.114.4 github.com 151.101.1.6 github.global.ss…...
AI 角色扮演法的深度剖析与实践
📢📢📢 大家好,我是云楼Yunlord,CSDN博客之星人工智能领域前三名,多年人工智能学习工作经验,一位兴趣稀奇古怪的【人工智能领域博主】!!!😜&#…...
ansible-动态inventory及内置函数
一. 简述: 关于inventory的基本用法可以参考上一篇文章:ansible-inventory定义-CSDN博客 在实际线上环境中,单纯的靠配置文件管理,是一件很麻烦的事情(比如一致性问题),特别是规模较大的场景下,会有大量主…...
【每日学点鸿蒙知识】广告ID、NFC手机充值、CSS支持语法、PC与模拟器交互、SO热更新等
1、HamonyOS 样机获取成功返回Oaid为00000000-0000-0000-0000-000000000000? 请求授权时需要触发动态授权弹窗,看一下是不是没有触发授权弹窗。 可以参考以下代码以及文档: // ets import identifier from ohos.identifier.oaid; import hilog from oh…...
MySQL 【多表查询】
一 . 概述 多表关系: 一对多(多对一) , 多对多 ,一对一 1) 一对一 案例: 用户 与 用户详情的关系 关系: 一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另 一张表…...
第08章 存储管理(二)
一、EXT4文件系统详解 1.1 简介 1.1.1 课程引入 1.1.2 名词解释 1.1.3 类型 索引(index)文件系统 1.1.4 系统限制 1.1.5 图示 1.1.6 名词 1.2 inode(index node 索引节点) 1.3 block(块 文件内容) 二、文件链接 2.1 符号连接(软连接) 2.…...
win10搭建zephyr开发环境
搭建环境基于 zephyr官方文档 基于官方文档一步一步走很快就可以搞定 一、安装chocolatey 打开官网 https://community.chocolatey.org/courses/installation/installing?methodinstall-from-powershell-v3 1、用管理员身份打开PowerShell (1)执行 …...
常见框架漏洞
一:ThinkPhp 1.搭建环境,访问 2.访问路径,进行远程代码执行 二:struts2 1.搭建环境进行 2.使用工具进行检测 三:Spring 1.搭建环境进行访问并进行抓包 2.然后抓取数据包,使用PATCH请求来修改 3.进入容器…...
党员学习交流平台
本文结尾处获取源码。 本文结尾处获取源码。 本文结尾处获取源码。 一、相关技术 后端:Java、JavaWeb / Springboot。前端:Vue、HTML / CSS / Javascript 等。数据库:MySQL 二、相关软件(列出的软件其一均可运行) I…...
公司资产网站
本文结尾处获取源码。 本文结尾处获取源码。 本文结尾处获取源码。 一、相关技术 后端:Java、JavaWeb / Springboot。前端:Vue、HTML / CSS / Javascript 等。数据库:MySQL 二、相关软件(列出的软件其一均可运行) I…...
线上go内存泄漏分析实战
背景 最近经常发现web服务内存占用持续缓慢增高,从图像上看是基本持续递增,但偶尔也有下降趋势(不会下降很明显),对比30天以前没那么高内存占用,最近30天内存占用变化且无明显规律。WEB服务框架是echo框架&…...
UE5AI感知组件
官方解释: AI感知系统为Pawn提供了一种从环境中接收数据的方式,例如噪音的来源、AI是否遭到破坏、或AI是否看到了什么。 AI感知组件(AIPerception Component)是用于实现游戏中的非玩家角色(NPC)对环境和其…...
12306购票如何做到限流的,什么技术方案,mq吗,提示排队过多,请稍微重试,提示库存不足。具体实现细节是怎么样的
12306(中国铁路客户服务中心)的购票系统是一个典型的高并发、高流量的系统。在春运和节假日等高峰期间,购票需求量极大,用户的请求频繁且集中,系统必须通过多种技术手段来进行 限流 和 负载均衡,确保购票服…...
[irisctf 2025] kittycrypt knutsacque
作了俩题还有一个不对。 KittyCrypt 题目给了加密代码,样例和密文。密钥通过样例求出。 package mainimport ("crypto/rand""encoding/hex""encoding/json""fmt""math/big""os""strings"…...
数据结构(1~10)
(1)双栈 #include <iostream> #include <algorithm> using namespace std; // 定义栈元素的类型 typedef int SElemType;// 定义双栈数据结构 typedef struct {int top[2];int bot[2];SElemType *V;int m; } DblStack;// 初始化双栈 void I…...
Solidity合约编写(一)
Solidity IDE地址:Remix - Ethereum IDE 点击进入后在contract文件夹下创建合约 合约代码如下: // SPDX-License-Identifier: MIT pragma solidity ^0.8.26;contract SimpleStorage{bool hasFavorNumtrue;uint256 favorNum5;string favorNums"fiv…...
基于氢氧燃料电池的分布式三相电力系统Simulink建模与仿真
目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于氢氧燃料电池的分布式三相电力系统Simulink建模与仿真,仿真输出燃料电池中氢氧元素含量变化以及生成的H2O变化情况。 2.系统仿真结果 3.核心程序与模型 版本…...
【C/C++】nlohmann::json从文件读取json,并进行解析打印,实例DEMO
使用 json::parse 函数将JSON格式的字符串解析为 nlohmann::json 对象。这个函数支持多种输入源,包括字符串、文件流等。 #include <iostream> #include <nlohmann/json.hpp> #include <fstream>using json nlohmann::json;int main() {// 解析…...
鸿蒙Flutter实战:15-Flutter引擎Impeller鸿蒙化、性能优化与未来
Flutter 技术原理 Flutter 是一个主流的跨平台应用开发框架,基于 Dart 语言开发 UI 界面,它将描述界面的 Dart 代码直接编译成机器码,并使用渲染引擎调用 GPU/CPU 渲染。 渲染引擎的优势 使用自己的渲染引擎,这也是 Flutter 与其…...
华为交换机---自动备份配置到指定ftp/sftp服务器
华为交换机—自动备份配置到指定ftp服务器 需求 交换机配置修改后及时备份相关配置,每次配置变化后需要在1分钟后自动进行保存,并且将配置上传至FTP服务器;每隔30分钟,交换机自动把配置上传到FTP服务器。 1、定时保存新配置的时间间隔为*分钟(1天=1440),默认为30分钟(…...
dns网址和ip是一一对应的吗?
DNS网址和IP地址是一一对应的吗?我们在上网时,为什么总是使用网址而不是一串数字?这些问题其实涉及到互联网的基本运作原理。DNS(域名系统)是我们日常上网过程中一个不可或缺的部分,它帮助我们将人类易于记…...
Couchbase 和数据湖技术的区别、联系和相关性分析
Couchbase 和数据湖技术(如 Delta Lake、Apache Hudi、Apache Iceberg)分别是两类不同的数据存储与管理系统,但它们也可以在特定场景中结合使用,以下是它们的区别、联系和相关性分析: 区别: 1. 核心用途&a…...
微信小程序提示 miniprogram-recycle-view 引入失败
npm i --save miniprogram-recycle-view 安装需要使用的页面的json文件中配置 {"usingComponents": {"recycle-view": "miniprogram-recycle-view/recycle-view","recycle-item": "miniprogram-recycle-view/recycle-item"…...
RAG_Techniques合集
Github 專案RAG_Techniques 列出了所有想得到的RAG最佳實踐和技巧!以下是完整的目錄,內容豐富到不行!💡 Simple RAG 🌱Context Enrichment Techniques 📝Multi-faceted Filtering 🔍Fusion Ret…...
泊松融合 实例2025
目录 例子1: 实现代码: 原作者代码: 本博客直接给出来最好的效果和源代码 参数说明: 效果不好,不推荐的参数:MONOCHROME_TRANSFER,NORMAL_CLONE 例子1: 目标图: 原图: 效果图: 实现代码: 坐标是要目标图上中心点坐标: import cv2if __na...
反直觉导致卡关-迫击炮谜题
这个谜题,在两周目中先后卡了我至少三个小时,先后缓慢装填并发射迫击炮弹尝试了数百次。 一周目卡了很久,稀里糊涂的过了,想不到二周目还会卡那么久。 研究了很多播主的攻略,但还是一头雾水, 直到分析其…...
Vue2
前几篇和大家分享了Vue2基础篇,现在和大家分享一下Vue2的进阶篇 普通组件的注册: 局部组件:只能在注册的组件内使用 1.创建vue文件 三部分组成 2在使用的组件内部导入并且注册 全局组件:所有组件内部都可以用 组件的三大组成部分 结构&…...
PDF文件提示-文档无法打印-的解决办法
背景信息 下载了几个签名的PDF文件,想要打印纸质版,结果打印时 Adobe Acrobat Reader 提示【文档无法打印】: 解决办法 网上的方案是使用老版本的PDF阅读器, 因为无法打印只是一个标识而已。 PDF文件不能打印的五种解决方案-zhihu 这些方…...
C语言进阶(3)--字符函数和字符串函数
本章重点 重点介绍处理字符和字符串的库函数的使用和注意事项 目录 0.前言 1.函数介绍 1.1 strlen - 计算字符串长度 1.2 strcpy - 复制字符串 1.3 strcat - 追加字符串 1.4 strcmp - 字符串比较 1.5 strncpy - 受限制复制 1.6 strncat - 受限制追加 1.7 strncmp - 受限制比…...
英文词汇解析:“Arguably“ 的用法与含义
中文版 英文词汇解析:“Arguably” 的用法与含义 在英语中,“arguably” 是一个常用的副词,用来表达某种观点可能是正确的,尽管它可能存在争议或需要进一步讨论。它通常用于陈述观点或看法时,给出一种有依据但又留有…...
Win 11 拷贝文件失败,错误0x800704C8: 请求的操作无法在使用用户映射区域打开的文件上执行。
手机拷贝照片到电脑,再把电脑的照片拷贝到移动硬盘的过程报错。 一个意外错误使你无法移动该文件。如果你继续收到此错误,可以使用错误代码来搜索有关此问题的帮助。 错误 0x800704C8: 请求的操作无法在使用用户映射区域打开的文件上执行。 解释…...
SpringBoot原理分析-1
SpringBoot原理分析 作为一个javaer,和boot打交道是很常见的吧。熟悉boot的人都会知道,启动一个springboot应用,就是用鼠标点一下启动main方法,然后等着就行了。我们来看看这个main里面。 SpringBootApplication public class E…...
我用Ai学Android Jetpack Compose之Button
答案来自 通义千问,代码同样需要到Android Studio里实践,才能学会。 我要学Button,麻烦介绍一下 当然可以!Button 是 Jetpack Compose 中用于创建可点击按钮的 Composable 函数。它提供了丰富的配置选项来定制按钮的外观和行为。…...
《量子比特:解锁人工智能并行计算加速的密钥》
在科技飞速发展的今天,量子计算与人工智能的融合正成为一股强大的力量,为诸多领域带来变革性的突破。量子比特作为量子计算的核心要素,其独特的叠加和纠缠特性为人工智能算法实现并行计算加速提供了前所未有的机遇。 量子比特的叠加特性&…...
【SpringBoot】当 @PathVariable 遇到 /,如何处理
1. 问题复现 在解析一个 URL 时,我们经常会使用 PathVariable 这个注解。例如我们会经常见到如下风格的代码: RestController Slf4j public class HelloWorldController {RequestMapping(path "/hi1/{name}", method RequestMethod.GET)publ…...
用QT实现 端口扫描工具1
安装在线QT,尽量是完整地自己进行安装,不然会少包 参考【保姆级图文教程】QT下载、安装、入门、配置VS Qt环境-CSDN博客 临时存储空间不够。 Windows系统通常会使用C盘来存储临时文件。 修改临时文件存储位置 打开系统属性: 右键点击“此电…...
基于单片机的肺功能MVV简单测算
肺功能MVV一般是指肺部每分钟的最大通气量。 MVV本身是最大值的英文缩写,在临床上,肺功能MVV表示肺部每分钟最大通气量,用以衡量气道的通畅度,以及肺部和胸廓的弹性、呼吸肌的力量。 肺部每分钟的最大通气量的参考值男性与女性之…...
入手STM32单片机学习指南
目录 引言 一、基础概念 1.1 STM32单片机简介 1.2 ARM Cortex-M系列处理器 1.3 微控制器的基本组成 二、开发环境搭建 2.1 选择开发板 2.2 安装开发软件 2.3 配置开发环境 三、编程入门 3.1 GPIO编程 3.2 UART编程 3.3 ADC编程 引言 STM32单片机是基于ARM Cortex…...
无法定位软件包cuda
无法定位软件包cuda 如果你在使用 sudo apt install cuda 命令安装 CUDA 时遇到“无法定位软件包cuda”的问题,这可能是由于你的系统没有正确配置 CUDA 的安装源。以下是一些可能的解决方案: 更新 Ubuntu 软件源并升级到最新版本的软件包。你可以选择使…...
GWAS数据和软件下载
这部分主要是数据获取,以及软件配置方法。 一、配套数据和代码 数据和代码目前在不断的更新,最新的教程可以私信,我通过后手动发送最新版的pdf和数据代码。发送的压缩包,有电子版的pdf和数据下载链接,里面是最新的百度网盘的地址,下载到本地即可。然后根据pdf教程,结合配套的…...
SpringBoot3-深入理解自动配置类的原理(尚硅谷SpringBoot3-雷神)
文章目录 目录了解自动配置 一、导入对应场景的Mean依赖:1、引入依赖**找到自动配置类的所有配置都存放在哪里** 二、编写主程序:SpringBootApplication观察源码时所需要知道的几个核心注解:1、观察SpringBootApplication源码都做了什么 三、…...