DM8主备集群中主备库的拆分与合并

  • 环境准备
    • 添加数据
      • 新建表空间及用户并赋权
      • 创建表 STUDENT 和 COURSE
      • 插入数据并提交
      • 查询验证数据
  • 对主库进行在线备份
  • 停止集群
    • 停止守护进程
    • 停止数据库服务
  • 将主库改成单机做测试
    • 启动主库,修改为单机模式
    • 创建测试表
    • 插入数据并提交
    • 查询验证数据
  • 测试完成后将主库还原
    • 首先停库
    • 利用步骤3生成的备份集将主库还原
  • 启动集群
    • 启动数据库服务
    • 启动守护进程
    • 利用监视器查看集群状态
    • 查看数据是否为原始数据
  • 再次在主库进行在线备份
  • 再次停止集群
    • 停止守护进程
    • 停止数据库服务
  • 将其中一备库改为单机做测试
    • 启动备库,修改为单机模式
    • 创建测试表
    • 插入数据并提交
    • 查询验证数据
  • 测试完成后,利用主库备份将备库还原
    • 将步骤8生成的备份集从主库scp到备库
    • 在备库上进行还原恢复
  • 启动集群
    • 启动数据库服务
    • 将还原的备库状态由PRIMARY修改为STANDBY
    • 启动守护进程
    • 利用监视器查看集群状态
    • 查看数据是否为原始数据

环境准备

搭建一主两备数据库集群[三台服务器分别为dmdb1,dmdb2,dmdb3]
部分集群配置如下:
数据库软件安装目录:/opt/dmdbms
实例数据文件目录:/dmdata
归档日志文件目录:/dmarch
备份路径:/dmbak
数据库名:DMDB
服务名分别为:DMSERVER01,DMSERVER02,DMSERVER03

监视器查看状态

[dmdba@dmdb3 ~]$ /opt/dmdbms/bin/dmmonitor /dmdata/DMDB/dmmonitor_noc.ini
[monitor]         2023-03-27 12:50:38: DMMONITOR[4.0] V8
[monitor]         2023-03-27 12:50:38: DMMONITOR[4.0] IS READY.[monitor]         2023-03-27 12:50:38: Received message from(DMSERVER03)WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            2023-03-27 12:50:38  OPEN           OK        DMSERVER03       OPEN        STANDBY   NULL     2        43953           43953           [monitor]         2023-03-27 12:50:38: Received message from(DMSERVER01)WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            2023-03-27 12:50:38  OPEN           OK        DMSERVER01       OPEN        PRIMARY   VALID    2        43954           43954           [monitor]         2023-03-27 12:50:38: Received message from(DMSERVER02)WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            2023-03-27 12:50:38  OPEN           OK        DMSERVER02       OPEN        STANDBY   VALID    2        43952           43952  

添加数据

新建表空间及用户并赋权

CREATE TABLESPACE "TEST" DATAFILE '/dmdata/DMDB/TEST.DBF' SIZE 128 AUTOEXTEND ON NEXT 1 MAXSIZE 10240;CREATE USER "TEST" IDENTIFIED BY "TEST123456" DEFAULT TABLESPACE TEST;GRANT "RESOURCE","PUBLIC","SOI" TO TEST;

创建表 STUDENT 和 COURSE

CREATE TABLE TEST.STUDENT(SNO INT NOT NULL PRIMARY KEY, SNAME VARCHAR(20));CREATE TABLE TEST.COURSE(CNO INT NOT NULL PRIMARY KEY, CNAME VARCHAR(30));

插入数据并提交

STUDENT 表

BEGIN
FOR I IN 1 .. 600 LOOP
INSERT INTO TEST.STUDENT(SNO,SNAME) VALUES (I, '学生'||I);
END LOOP;
END;

COURSE 表

BEGIN
FOR I IN 1 .. 100 LOOP
INSERT INTO TEST.COURSE(CNO,CNAME) VALUES (I, '课程'||I);
END LOOP;
END;

查询验证数据

SELECT COUNT(*) FROM TEST.STUDENT;
SELECT COUNT(*) FROM TEST.COURSE;

对主库进行在线备份

[dmdba@dmdb1 ~]$ disql
disql V8
username:
password:Server[LOCALHOST:5236]:mode is primary, state is open
login used time : 2.247(ms)
SQL> BACKUP DATABASE FULL TO BAKFILE;
executed successfully
used time: 00:00:03.715. Execute id is 1300.
SQL> EXIT
[dmdba@dmdb1 ~]$ ll /dmdata/DMDB/bak/
total 4
drwxr-xr-x 2 dmdba dinstall 4096 Mar 27 13:14 DB_DMDB_FULL_20230327_131454_179902

DB_DMDB_FULL_20230327_131454_179902为生成的备份集目录

停止集群

停止守护进程

备库守护

[dmdba@dmdb3 ~]$ DmWatcherServiceDMSERVER03 stop
Stopping DmWatcherServiceDMSERVER03:                       [ OK ][dmdba@dmdb2 ~]$ DmWatcherServiceDMSERVER02 stop
Stopping DmWatcherServiceDMSERVER02:                       [ OK ]

主库守护

[dmdba@dmdb1 ~]$ DmWatcherServiceDMSERVER01 stop
Stopping DmWatcherServiceDMSERVER01:                       [ OK ]

停止数据库服务

主库

[dmdba@dmdb1 ~]$ DmServiceDMSERVER01 stop
Stopping DmServiceDMSERVER01:                              [ OK ]

备库

[dmdba@dmdb2 ~]$ DmServiceDMSERVER02 stop
Stopping DmServiceDMSERVER02:                              [ OK ]
[dmdba@dmdb3 ~]$ DmServiceDMSERVER03 stop
Stopping DmServiceDMSERVER03:                              [ OK ]

将主库改成单机做测试

启动主库,修改为单机模式

[dmdba@dmdb1 ~]$ DmServiceDMSERVER01 start
Starting DmServiceDMSERVER01:                              [ OK ]
[dmdba@dmdb1 ~]$ disql
disql V8
username:
password:Server[LOCALHOST:5236]:mode is primary, state is mount
login used time : 4.265(ms)
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
DMSQL executed successfully
used time: 7.552(ms). Execute id is 0.
SQL> ALTER DATABASE NORMAL;
executed successfully
used time: 3.715(ms). Execute id is 0.
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
DMSQL executed successfully
used time: 5.655(ms). Execute id is 1.
SQL> ALTER DATABASE OPEN;
executed successfully
used time: 62.477(ms). Execute id is 0.

创建测试表

CREATE TABLE TEST.SC(SNO INT PRIMARY KEY, CNO INT);

插入数据并提交

BEGIN
FOR I IN 1 .. 600 LOOP
INSERT INTO TEST.SC(SNO,CNO) VALUES (I, DBMS_RANDOM.VALUE(1,100));
END LOOP;
COMMIT;
END;
/

查询验证数据

SELECT COUNT(*) FROM TEST.SC;

测试完成后将主库还原

首先停库

[dmdba@dmdb1 ~]$ DmServiceDMSERVER01 stop
Stopping DmServiceDMSERVER01:                              [ OK ]

利用步骤3生成的备份集将主库还原

[dmdba@dmdb1 ~]$ dmrman
dmrman V8
RMAN>
RMAN> RESTORE DATABASE '/dmdata/DMDB/dm.ini' FROM BACKUPSET '/dmdata/DMDB/bak/DB_DMDB_FULL_20230327_131454_179902'
RESTORE DATABASE '/dmdata/DMDB/dm.ini' FROM BACKUPSET '/dmdata/DMDB/bak/DB_DMDB_FULL_20230327_131454_179902'
file dm.key not found, use default license!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:03.038
RMAN> RECOVER DATABASE '/dmdata/DMDB/dm.ini' FROM BACKUPSET '/dmdata/DMDB/bak/DB_DMDB_FULL_20230327_131454_179902'
RECOVER DATABASE '/dmdata/DMDB/dm.ini' FROM BACKUPSET '/dmdata/DMDB/bak/DB_DMDB_FULL_20230327_131454_179902'
Database mode = 1, oguid = 26180
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[45756], file_lsn[45756]
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 00:00:02.409
RMAN> RECOVER DATABASE '/dmdata/DMDB/dm.ini' UPDATE DB_MAGIC
RECOVER DATABASE '/dmdata/DMDB/dm.ini' UPDATE DB_MAGIC
Database mode = 1, oguid = 26180
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[49668], file_lsn[49668]
recover successfully!
time used: 00:00:01.018
RMAN>

启动集群

启动数据库服务

[dmdba@dmdb1 ~]$ DmServiceDMSERVER01 start
Starting DmServiceDMSERVER01:                              [ OK ]
[dmdba@dmdb2 ~]$ DmServiceDMSERVER02 start
Starting DmServiceDMSERVER02:                              [ OK ]
[dmdba@dmdb3 ~]$ DmServiceDMSERVER03 start
Starting DmServiceDMSERVER03:                              [ OK ]

启动守护进程

[dmdba@dmdb1 ~]$ DmWatcherServiceDMSERVER01 start
Starting DmWatcherServiceDMSERVER01:                       [ OK ]
[dmdba@dmdb2 ~]$ DmWatcherServiceDMSERVER02 start
Starting DmWatcherServiceDMSERVER02:                       [ OK ]
[dmdba@dmdb3 ~]$ DmWatcherServiceDMSERVER03 start
Starting DmWatcherServiceDMSERVER03:                       [ OK ]

利用监视器查看集群状态

[dmdba@dmdb3 ~]$ /opt/dmdbms/bin/dmmonitor /dmdata/DMDB/dmmonitor_noc.ini
[monitor]         2023-03-27 13:52:44: DMMONITOR[4.0] V8
[monitor]         2023-03-27 13:52:44: DMMONITOR[4.0] IS READY.[monitor]         2023-03-27 13:52:44: Received message from(DMSERVER03)WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            2023-03-27 13:52:44  OPEN           OK        DMSERVER03       OPEN        STANDBY   NULL     4        55557           55557           [monitor]         2023-03-27 13:52:44: Received message from(DMSERVER01)WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            2023-03-27 13:52:44  OPEN           OK        DMSERVER01       OPEN        PRIMARY   VALID    4        55558           55558           [monitor]         2023-03-27 13:52:44: Received message from(DMSERVER02)WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            2023-03-27 13:52:44  OPEN           OK        DMSERVER02       OPEN        STANDBY   VALID    4        55557           55557

查看数据是否为原始数据

SELECT COUNT(*) FROM TEST.STUDENT;
SELECT COUNT(*) FROM TEST.COURSE;
SELECT * FROM TEST.SC;

注意:此时应只有 STUDENT 表和 COURSE 表,而不会有 SC 表。
以上即 主备集群中将主库的拆分与合并,接下来是备库的拆分与合并。

再次在主库进行在线备份

[dmdba@dmdb1 ~]$ disql
disql V8
username:
password:Server[LOCALHOST:5236]:mode is primary, state is open
login used time : 2.239(ms)
SQL>
SQL>
SQL> exit
[dmdba@dmdb1 ~]$ disql
disql V8
username:
password:Server[LOCALHOST:5236]:mode is primary, state is open
login used time : 2.288(ms)
SQL> BACKUP DATABASE FULL TO BAKFILE2;
executed successfully
used time: 00:00:03.998. Execute id is 800.
SQL> EXIT
[dmdba@dmdb1 ~]$ ll /dmdata/DMDB/bak/
total 8
drwxr-xr-x 2 dmdba dinstall 4096 Mar 27 13:43 DB_DMDB_FULL_20230327_131454_179902
drwxr-xr-x 2 dmdba dinstall 4096 Mar 27 14:08 DB_DMDB_FULL_20230327_140811_181960

DB_DMDB_FULL_20230327_140811_181960为生成的备份集目录

再次停止集群

停止守护进程

[dmdba@dmdb3 ~]$ DmWatcherServiceDMSERVER03 stop
Stopping DmWatcherServiceDMSERVER03:                       [ OK ]
[dmdba@dmdb2 ~]$ DmWatcherServiceDMSERVER02 stop
Stopping DmWatcherServiceDMSERVER02:                       [ OK ]
[dmdba@dmdb1 ~]$ DmWatcherServiceDMSERVER01 stop
Stopping DmWatcherServiceDMSERVER01:                       [ OK ]

停止数据库服务

主库

[dmdba@dmdb1 ~]$ DmServiceDMSERVER01 stop
Stopping DmServiceDMSERVER01:                              [ OK ]

备库

[dmdba@dmdb2 ~]$ DmServiceDMSERVER02 stop
Stopping DmServiceDMSERVER02:                              [ OK ]
[dmdba@dmdb3 ~]$ DmServiceDMSERVER03 stop
Stopping DmServiceDMSERVER03:                              [ OK ]

将其中一备库改为单机做测试

启动备库,修改为单机模式

[dmdba@dmdb3 ~]$ DmServiceDMSERVER03 start
Starting DmServiceDMSERVER03:                              [ OK ]
[dmdba@dmdb3 ~]$ disql
disql V8
username:
password:Server[LOCALHOST:5236]:mode is standby, state is mount
login used time : 4.088(ms)
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
DMSQL executed successfully
used time: 7.701(ms). Execute id is 0.
SQL> ALTER DATABASE NORMAL;
executed successfully
used time: 11.530(ms). Execute id is 0.
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
DMSQL executed successfully
used time: 5.639(ms). Execute id is 1.
SQL> ALTER DATABASE OPEN;
executed successfully
used time: 62.479(ms). Execute id is 0.

创建测试表

CREATE TABLE TEST.SC(SNO INT PRIMARY KEY, CNO INT);

插入数据并提交

BEGIN
FOR I IN 1 .. 600 LOOP
INSERT INTO TEST.SC(SNO,CNO) VALUES (I, DBMS_RANDOM.VALUE(1,100));
END LOOP;
COMMIT;
END;
/

查询验证数据

SELECT COUNT(*) FROM TEST.SC;

测试完成后,利用主库备份将备库还原

将步骤8生成的备份集从主库scp到备库

[dmdba@dmdb1 ~]$ scp -r /dmdata/DMDB/bak/DB_DMDB_FULL_20230327_140811_181960/ dmdba@dmdb3:/dmdata/DMDB/bak/

在备库上进行还原恢复

[dmdba@dmdb3 ~]$ dmrman
dmrman V8
RMAN> RESTORE DATABASE '/dmdata/DMDB/dm.ini' FROM BACKUPSET '/dmdata/DMDB/bak/DB_DMDB_FULL_20230327_140811_181960'
RESTORE DATABASE '/dmdata/DMDB/dm.ini' FROM BACKUPSET '/dmdata/DMDB/bak/DB_DMDB_FULL_20230327_140811_181960'
file dm.key not found, use default license!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:03.021
RMAN> RECOVER DATABASE '/dmdata/DMDB/dm.ini' FROM BACKUPSET '/dmdata/DMDB/bak/DB_DMDB_FULL_20230327_140811_181960'
RECOVER DATABASE '/dmdata/DMDB/dm.ini' FROM BACKUPSET '/dmdata/DMDB/bak/DB_DMDB_FULL_20230327_140811_181960'
Database mode = 1, oguid = 26180
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[55871], file_lsn[55871]
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 00:00:02.395
RMAN> RECOVER DATABASE '/dmdata/DMDB/dm.ini' UPDATE DB_MAGIC;
RECOVER DATABASE '/dmdata/DMDB/dm.ini' UPDATE DB_MAGIC;
Database mode = 1, oguid = 26180
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[55887], file_lsn[55887]
recover successfully!
time used: 00:00:01.017

启动集群

启动数据库服务

[dmdba@dmdb1 ~]$ DmServiceDMSERVER01 start
Starting DmServiceDMSERVER01:                              [ OK ]
[dmdba@dmdb2 ~]$ DmServiceDMSERVER02 start
Starting DmServiceDMSERVER02:                              [ OK ]
[dmdba@dmdb3 ~]$ DmServiceDMSERVER03 start
Starting DmServiceDMSERVER03:                              [ OK ]

将还原的备库状态由PRIMARY修改为STANDBY

[dmdba@dmdb3 ~]$ disql
disql V8
username:
password:Server[LOCALHOST:5236]:mode is primary, state is mount
login used time : 4.057(ms)
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
DMSQL executed successfully
used time: 7.500(ms). Execute id is 0.
SQL> ALTER DATABASE STANDBY;
executed successfully
used time: 4.071(ms). Execute id is 0.
SQL> EXIT

启动守护进程

[dmdba@dmdb1 ~]$ DmWatcherServiceDMSERVER01 start
Starting DmWatcherServiceDMSERVER01:                       [ OK ]
[dmdba@dmdb2 ~]$ DmWatcherServiceDMSERVER02 start
Starting DmWatcherServiceDMSERVER02:                       [ OK ]
[dmdba@dmdb3 ~]$ DmWatcherServiceDMSERVER03 start
Starting DmWatcherServiceDMSERVER03:                       [ OK ]

利用监视器查看集群状态

[dmdba@dmdb3 ~]$ /opt/dmdbms/bin/dmmonitor /dmdata/DMDB/dmmonitor_noc.ini
[monitor]         2023-03-27 14:32:01: DMMONITOR[4.0] V8
[monitor]         2023-03-27 14:32:01: DMMONITOR[4.0] IS READY.[monitor]         2023-03-27 14:32:01: Received message from(DMSERVER03)WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            2023-03-27 14:32:01  OPEN           OK        DMSERVER03       OPEN        STANDBY   NULL     5        58829           58829           [monitor]         2023-03-27 14:32:01: Received message from(DMSERVER01)WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            2023-03-27 14:32:01  OPEN           OK        DMSERVER01       OPEN        PRIMARY   VALID    5        58830           58830           [monitor]         2023-03-27 14:32:01: Received message from(DMSERVER02)WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            2023-03-27 14:32:01  OPEN           OK        DMSERVER02       OPEN        STANDBY   VALID    5        58829           58829

查看数据是否为原始数据

SELECT COUNT(*) FROM TEST.STUDENT;
SELECT COUNT(*) FROM TEST.COURSE;
SELECT * FROM TEST.SC;

DM8主备集群中主备库 的拆分与合并相关推荐

  1. 达梦数据库实时主备集群的同步机制和切换机制

    DM数据守护介绍 1. DM 数据守护(Data Watch) 是一种集成化的高可用.高性能数据库解决方案,是数据库异地容灾的首选方案.通过部署 DM 数据守护,可以在硬件故障(如磁盘损坏).自然灾害 ...

  2. GBase 8s灾备集群HAC (一) 概述

    GBase 8s灾备集群HAC(High Availability Cluster)是被广泛使用的典型的高可用解决方 案.当主节点发生故障时可迅速切换至辅节点,企业的业务不受影响. 1. 同步方式:基 ...

  3. GBase 8s灾备集群HAC介绍

    GBase8s灾备集群HAC(High Availability Cluster)是被广泛使用的典型的高可用解决方案.当主节点发生故障时可迅速切换至辅节点,企业的业务不受影响. 同步方式:基于逻辑日志 ...

  4. DM8守护集群(主备)数据库补丁升级操作

    概述 本文介绍在测试环境对DM8守护集群数据库补丁升级操作相关内容. 一.升级集群介绍 1.1升级集群架构说明 本次升级守护集群架构如下图,有A.B.C三台机器,分别是主库.备库和监视器. 1.2集群 ...

  5. java应用系统正确的连接DM主备集群

    jdbc连接DM主备集群 一句话 为保证集群在出故障时能够正常切换,应用连接时采用服务名方式进行连接,将连接串中的ip改成服务名如下面配置的DM在应用服务器配置dm_svc.conf文件: 应用服务器 ...

  6. 部署DM MPP主备集群

    DM8的DEM上在部署MPP集群时无法和DM7.6的DEM一样可以同时部署DataWatch,所以这里采用手动部署.后面有补充DM7.6部署MPP主备集群步骤截图. 使用两种方式部署MPP主备集群(交 ...

  7. ODPS主备集群双向数据复制导致主备中心网络打爆问题

    简介:ODPS主备集群双向数据复制导致主备中心网络打爆问题 1. 故障问题描述 客户现场发生了ODPS主备机房相互数据全量复制导致的主备中心网络被打爆的问题,严重影响了日常运行的ODPS任务.在ODP ...

  8. keepalived高可用lvs集群,主/备和主/主模型

    利用keepalived高可用lvs集群,主/备和主/主: vrrp_script高可用双主nginx: keepalived主备:lvs-dr工作模型 网络搭建: 在前端2台调度器: DR1:172 ...

  9. HDFS High Availability(HA)高可用、单点故障、主备集群、脑裂问题、数据同步问题、HDFS HA解决方案—QJM

    HDFS High Availability(HA)高可用 1.1 High Availability背景知识 1.1.1 单点故障.高可用 单点故障(英语:single point of failu ...

最新文章

  1. 【英文文本分类实战】之二——数据集挑选与划分
  2. 亚马逊资深首席科学家李沐:工作这五年
  3. Oracle Statspack分析报告详解(一)
  4. 如何在Mac上的Pages文稿中设置对开页?
  5. epel源mysql版本_centos网络yum源和epel源(2017可用首选)
  6. kepware odata 接口访问地址
  7. js 字符串去除空格
  8. linux查看perl进程,如何找到挂起perl脚本(linux进程)的位置
  9. Html网页设计-动漫网站设计
  10. 分享软件测试计划模板
  11. ubuntu修改配置IP地址和DNS的方法总结(4种)
  12. Bin格式文件结构及其查看工具
  13. 史上最详细的MYSQL安装步骤
  14. httpd三种MPM的原理剖析
  15. 流媒体直播协议与比较
  16. 工作中遇到的印象深刻的Bug(APP端)
  17. 阿里云的服务器、腾讯云的域名,域名解析失败的解决方案
  18. 计算机不显示磁盘阵列,识别不到硬盘?bios中怎么改raid为ahci硬盘模式。
  19. ews java api maven_通过 EWS JAVA API读取exchange邮件
  20. 前几天在头条上收到一条私信,内容大致是这样的:“我学校比较垃圾,想自学 Java 可以吗?自学 Java 难吗?毕业后能找到一份 6k左右的工作吗?”

热门文章

  1. 关于JVM(基本常识)
  2. 普惠AI时代,AI能力不足的云服务商是否还有生存空间?
  3. Windows权限提升—令牌窃取、UAC提权、进程注入等提权
  4. layui弹窗自适应变大_layui怎么调整弹框大小?
  5. 使用css3属性做一个循环旋转的动画
  6. The GridView 'GridViewID' fired event PageIndexChanging which wasn't handled.
  7. 28合1智能积木,56种玩法,让孩子循序渐进“玩”出新知识
  8. Why use Servlets JSPs: an introduction(Head First Servlets and JSP)
  9. 在python中、x=x+1是合法语句吗_Python x=x+1和x+=1之间的差异
  10. 01-什么是渲染引擎