达梦(DM)数据库安装


达梦(DM)数据库作为国产数据库的代表,在金融、央企、政府项目中有着广泛的应用,达梦在线服务平台地址:https://eco.dameng.com/ ,那么在使用达梦数据库时,为了更方便的认识和操作达梦数据库,最好的就是在自己的本地电脑安装达梦数据库,那么本文将带你轻松安装达梦数据库。

下载DM

在安装达梦数据库之前,首先需要下载达梦数据库文件,点击达梦在线服务平台右上角的【下载】
在这里插入图片描述
选择需要下载的DM8数据库平台版本,下载完成后你会得到一个文件名为 dm8_20200930_x86_rh7_64_ent_8.1.1.134.iso 的iso文件,其中

dm8: 数据库大版本为 dm8

20200930: 数据库版本发布日期

x86: 安装包匹配的 CPU 架构

rh7: 安装包匹配的系统版本 (redhat 7)

ent: 数据库为企业版

8.1.1.134: 数据库详细版本号

DM数据库安装

DM数据库支持多种环境的安装,包括Windows 安装、Linux 安装、Docker安装,这里主要简述Windows安装操作步骤

安装前准备

在安装之前首先需要打开你本地电脑的 cmd 命令行窗口工具,输入 systeminfo 查看系统信息,确认DM 数据库安装程序与当前操作系统匹配
在这里插入图片描述

检查系统内存

为了保证 DM 数据库的正确安装和运行,要尽量保证操作系统至少 1 GB 以上的可用内存 (RAM),打开任务管理器
在这里插入图片描述

检查存储空间

DM 完全安装需要至少 1 GB 以上的存储空间,需要提前规划好安装目录,预留足够的存储空间。

数据库安装

双击运行【setup.exe】安装程序,请根据系统配置选择相应语言与时区,点击【确定】按钮继续安装。
在这里插入图片描述

点击【下一步】按钮继续安装

在这里插入图片描述

在安装和使用 DM 数据库之前,需要用户阅读并接受许可证协议

在这里插入图片描述

点击【接受】进入验证 Key 文件环节,验证 Key 文件环节可跳过,如果没有 Key 文件,点击【下一步】即可。如有则点击【浏览】按钮,选取 Key 文件,安装程序将自动验证 Key 文件合法性,点击【下一步】继续安装

在这里插入图片描述

DM 安装程序提供四种安装方式:“典型安装”、“服务器安装”、“客户端安装”和“自定义安装”,此处建议选择【典型安装】

在这里插入图片描述

说明:

典型安装包括:服务器、客户端、驱动、用户手册、数据库服务。

服务器安装包括:服务器、驱动、用户手册、数据库服务。

客户端安装包括:客户端、驱动、用户手册。

自定义安装包括:用户根据需求勾选组件,可以是服务器、客户端、驱动、用户手册、数据库服务中的任意组合。

DM 默认安装在 C:\dmdbms 目录下,不建议使用默认目录,改为其他任意盘符即可,比如 E:\dmdbs

在这里插入图片描述
这里需要说明

安装路径里的目录名由英文字母、数字和下划线等组成,不建议使用包含空格和中文字符的路径等

选择快捷方式在开始菜单中的文件夹名称,默认为【达梦数据库】,点击【下一步】

在这里插入图片描述

进入安装前小结,小结显示用户即将进行的数据库安装信息,例如产品名称、版本信息、安装类型、安装目录、可用空间、可用内存等信息,用户检查无误后点击【安装】按钮进行 DM 数据库的安装

在这里插入图片描述

安装过程需耐心等待 1~2 分钟

在这里插入图片描述
数据库安装完成后,选择【初始化】数据库

在这里插入图片描述

配置实例

进入初始化此处建议选择【创建数据库实例】,点击【开始】进入下一步骤
在这里插入图片描述
创建数据库模板,此处建议选择【一般用途】即可

在这里插入图片描述
指定数据库目录,本例中数据库安装路径为 E:\dmdbs

在这里插入图片描述
数据库标识,这里输入数据库名称、实例名、端口号等参数

在这里插入图片描述
数据库文件所在位置,此处选择默认配置即可

在这里插入图片描述
你也可以通过选择或输入确定数据库控制、数据库日志等文件的所在位置,并可通过右侧功能按钮,对文件进行添加或删除。
初始化数据库参数,此处选择默认配置即可

在这里插入图片描述

相关参数说明

EXTENT_SIZE 数据文件使用的簇大小 (16),可选值: 16、 32、 64,单位:页

PAGE_SIZE 数据页大小 (8),可选值: 4、 8、 16、 32,单位: KB

LOG_SIZE 日志文件大小 (256),单位为: MB,范围为: 64 MB~2 GB

CASE_SENSITIVE 大小敏感 (Y),可选值: Y/N, 1/0

CHARSET/UNICODE_FLAG 字符集 (0),可选值: 0[GB18030], 1[UTF-8], 2[EUC-KR]

口令管理,此处选择默认配置即可,默认口令与登录名一致

在这里插入图片描述
你也可以输入 SYSDBA,SYSAUDITOR 的密码,对默认口令进行更改。
选择创建示例库,此处建议勾选创建示例库 BOOKSHOP 或 DMHR,作为测试环境

在这里插入图片描述
在安装数据库之前,将显示你通过数据库配置工具设置的相关参数。点击【完成】进行数据库实例的初始化工作,

在这里插入图片描述
安装完成后将弹出数据库相关参数及文件位置。点击【完成】即可

在这里插入图片描述

启动、停止数据库

安装完成之后选择【DM服务查看器】
在这里插入图片描述
可以看到DM数据库实例服务

在这里插入图片描述
鼠标右键可以停止或重启数据库实例服务
在这里插入图片描述
到这里,整个DM数据库的下载、安装、启动步骤就算完成了。
本文参考达梦数据库官方文档:https://eco.dameng.com/document/dm/zh-cn/start/,官方文档写的很全,感兴趣的可以自行查阅。

<think>好的,我现在需要帮助用户了解Java中的构造函数,并展示具体的例子说明用法。首先,我得回顾用户之前的问题和之前的回答,确保内容连贯。 用户之前询问了构造函数的基本定义,现在转向Java的具体示例。之前的回答中,用户提供了C++的例子,所以现在需要转换到Java,同时保持结构清晰。用户提供的引用中有几个关键点:默认构造函数、带参数构造函数、构造函数链(使用this)、以及一些注意事项,比如构造函数的命名、关键字限制等。 首先,我需要明确Java构造函数的基本概念,与C++的不同之处。例如,Java的构造函数必须与类同名,没有返回类型,可以重载。根据引用[1],用户提到默认构造函数、带参数的构造函数和构造函数链,这些都需要涵盖。 接下来,需要组织内容结构。用户希望看到具体的例子,所以每个部分都应该有代码示例。例如,默认构造函数和带参数的构造函数,可以分别举例,并展示它们的调用和效果。引用[3]中的例子已经有一个Person类,可以借用并扩展,或者创建新的例子以增加多样性。 然后,构造函数链的部分,即在一个构造函数中调用另一个构造函数,使用this关键字。需要展示如何通过this()实现,减少代码重复,确保参数的正确传递。例如,可以设计一个Employee类,其中有一个构造函数接受姓名和年龄,另一个只接受姓名,默认年龄为0,通过this调用前者。 另外,用户提供的引用[2]中有选择题,其中提到构造方法上不能使用的关键字,比如final、static等。需要解释为什么这些关键字不能用于构造函数,可能的话在注意事项中提到。 还要注意用户提到的“每个类都有一个默认构造函数”,但实际上只有当没有定义任何构造函数时,编译器才会自动生成默认构造函数。如果用户定义了带参数的构造函数,就必须显式定义默认构造函数,否则无法使用无参构造。这一点需要澄清,避免误解。 然后,实际应用示例部分,可以设计一个DatabaseConnector类,类似于之前的C++例子,但用Java实现,展示带参数的构造函数和默认参数的效果。不过Java不支持默认参数,但可以通过方法重载来模拟,比如定义多个构造函数,其中一个调用另一个并提供默认值。 注意事项部分需要包括初始化顺序、this和super的使用限制、访问修饰符的影响等。例如,构造函数可以是public、protected或private,不同的修饰符影响对象的创建方式,单例模式常用private构造函数。 最后,相关问题部分需要根据内容生成,可能涉及构造函数的重载、私有构造函数的作用、构造函数与静态工厂方法的区别等。 现在需要确保所有代码示例语法正确,符合Java规范。例如,在构造函数链中使用this()必须在第一行,成员变量初始化与构造函数体内的赋值区别,以及使用this区分成员变量和参数。 可能还需要指出Java中的构造函数没有返回类型,包括void,这与普通方法不同。同时,不能在构造函数上使用final,因为构造函数不能被继承或覆盖,static也不适用,因为构造函数用于实例化对象。 总结结构: 1. 基本概念:定义、特点 2. 核心用法:默认、带参、构造函数链 3. 示例代码:每个用法对应示例 4. 注意事项:关键字限制、初始化顺序、访问控制 5. 相关问题 需要确保每个部分都有明确的示例和解释,引用提供的资料,但根据用户当前需求调整,突出Java的特性。检查是否有遗漏点,如构造函数与类同名、没有返回类型、自动调用等,确保覆盖所有用户可能关心的问题。</think>### Java构造函数详解与示例 #### 一、构造函数基本概念 **构造函数**是Java中用于初始化对象的特殊方法,具有以下核心特性: 1. **与类同名**:例如类名为`Person`,构造函数名称也为`Person` 2. **无返回类型**(包括`void`) 3. **自动调用**:对象通过`new`创建时自动执行 4. **初始化控制**:为成员变量赋初值,确保对象合法状态[^1] #### 二、核心用法与示例 ##### 1. 默认构造函数(无参构造) 当未定义任何构造函数时,编译器自动生成空实现的默认构造函数。若已定义其他构造函数,需显式声明默认构造: ```java public class Book { private String title; // 显式定义的默认构造函数 public Book() { this.title = "Untitled"; // 初始化默认值 System.out.println("默认构造函数调用"); } } ``` ##### 2. 带参数构造函数 通过参数传递实现灵活初始化: ```java public class Student { private String name; private int score; // 带参数的构造函数 public Student(String name, int score) { this.name = name; // 使用this区分成员变量与参数 this.score = score; System.out.println("带参构造调用:" + name); } } ``` ##### 3. 构造函数链(Constructor Chaining) 使用`this()`调用同类其他构造函数,减少代码重复: ```java public class Employee { private String id; private String department; // 三参数构造函数(完整初始化) public Employee(String id, String name, String dept) { this.id = id; this.name = name; this.department = dept; } // 两参数构造函数(默认部门为"General") public Employee(String id, String name) { this(id, name, "General"); // 调用三参构造 } // 单参数构造函数(默认部门+自动生成ID) public Employee(String name) { this(generateID(), name); // 调用两参构造 } private static String generateID() { return "EMP" + System.currentTimeMillis(); } } ``` #### 三、实际应用示例 ```java public class BankAccount { private String accountNumber; private double balance; // 默认构造函数(生成随机账号) public BankAccount() { this.accountNumber = generateAccountNumber(); this.balance = 0.0; } // 带初始余额的构造函数 public BankAccount(double initialBalance) { this(); // 调用默认构造生成账号 this.balance = initialBalance; } private String generateAccountNumber() { return "ACC-" + UUID.randomUUID().toString().substring(0, 8); } public void display() { System.out.println("Account: " + accountNumber + ", Balance: $" + balance); } public static void main(String[] args) { BankAccount acc1 = new BankAccount(); // 使用默认构造 acc1.display(); // 输出示例:Account: ACC-3f4a1b, Balance: $0.0 BankAccount acc2 = new BankAccount(500.0); acc2.display(); // 输出示例:Account: ACC-7c82d9, Balance: $500.0 } } ``` #### 四、关键注意事项 1. **初始化顺序** - 静态初始化块 → 实例初始化块 → 构造函数 - 成员变量初始化优先于构造函数体执行[^3] 2. **关键字限制** - 构造函数**不能**使用`final`、`static`、`abstract`等修饰符 - `synchronized`和`native`虽然语法允许,但实际极少使用[^2] 3. **访问控制** - `private`构造函数用于单例模式: ```java public class Singleton { private static Singleton instance; private Singleton() {} // 禁止外部实例化 public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } ``` 4. **继承关系** - 子类构造函数默认调用父类无参构造(`super()`) - 需显式调用父类构造时,`super(...)`必须是子类构造的第一条语句: ```java public class Manager extends Employee { private int teamSize; public Manager(String name, int teamSize) { super(name, "Management"); // 先调用父类构造 this.teamSize = teamSize; } } ``` #### 五、常见错误示例 ```java // 错误1:尝试返回类型 public class ErrorExample1 { public void ErrorExample1() { // 实际是普通方法,非构造函数! System.out.println("这不是构造函数"); } } // 错误2:误用static public class ErrorExample2 { public static ErrorExample2() { // 编译错误:构造函数不能是static } } // 错误3:构造函数递归调用 public class ErrorExample3 { public ErrorExample3() { this(); // 编译错误:递归调用自身 } } ``` --相关问题-- 1. 如何在子类构造函数中正确调用父类构造函数? 2. 单例模式为什么要用private构造函数? 3. 构造函数与实例初始化块有何区别? 4. 为什么Java不允许构造函数定义返回类型?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csdn565973850

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值