当前位置: 首页 > 编程日记 > 正文

MySQL Cluster 日常维护

在前面几篇文章已经详细介绍了MySQL Cluster的搭建,配置讲解。而且相信大家都掌握了基本用法。现在我们来看看Cluster的日常维护。熟悉日常维护,将有助于工作中更好的管理和使用Cluster。

一. 数据备份

相信大家都熟悉mysql的日常备份工具,比如mysqldump对数据库进行逻辑备份。这个方法同样适用MySQL Cluster,备份方法和其他存储引擎一样,唯一的区别是在任意的SQL节点备份数据。我们来看一个例子。

我这里在SQL节点192.168.0.70上面使用mysqldump备份test库:

[root@192.168.0.70 ~]# mysqldump  --single-transaction --skip-comments test > /data/bak.sql
DROP TABLE IF EXISTS `t1`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `t1` (`name` varchar(20) DEFAULT NULL
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;LOCK TABLES `t1` WRITE;
/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
INSERT INTO `t1` VALUES ('yayun'),('atlas');
/*!40000 ALTER TABLE `t1` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

可以看见导出的SQL和其他引擎没有区别,这里就不详细介绍了。我们重点介绍cluster的物理备份方法。还是以前面搭建的cluster环境为例子。当集群全部启动以后,进入管理节点执行start backup命令启动备份。输入?可以查看各种帮助选项。

ndb_mgm> ?
---------------------------------------------------------------------------NDB Cluster -- Management Client -- Help
---------------------------------------------------------------------------
HELP                                   Print help text
HELP COMMAND                           Print detailed help for COMMAND(e.g. SHOW)
SHOW                                   Print information about cluster
CREATE NODEGROUP <id>,<id>...          Add a Nodegroup containing nodes
DROP NODEGROUP <NG>                    Drop nodegroup with id NG
START BACKUP [NOWAIT | WAIT STARTED | WAIT COMPLETED]
START BACKUP [<backup id>] [NOWAIT | WAIT STARTED | WAIT COMPLETED]
START BACKUP [<backup id>] [SNAPSHOTSTART | SNAPSHOTEND] [NOWAIT | WAIT STARTED | WAIT COMPLETED]Start backup (default WAIT COMPLETED,SNAPSHOTEND)
ABORT BACKUP <backup id>               Abort backup
SHUTDOWN                               Shutdown all processes in cluster
CLUSTERLOG ON [<severity>] ...         Enable Cluster logging
CLUSTERLOG OFF [<severity>] ...        Disable Cluster logging
CLUSTERLOG TOGGLE [<severity>] ...     Toggle severity filter on/off
CLUSTERLOG INFO                        Print cluster log information
<id> START                             Start data node (started with -n)
<id> RESTART [-n] [-i] [-a] [-f]       Restart data or management server node
<id> STOP [-a] [-f]                    Stop data or management server node
ENTER SINGLE USER MODE <id>            Enter single user mode
EXIT SINGLE USER MODE                  Exit single user mode
<id> STATUS                            Print status
<id> CLUSTERLOG {<category>=<level>}+  Set log level for cluster log
PURGE STALE SESSIONS                   Reset reserved nodeid's in the mgmt server
CONNECT [<connectstring>]              Connect to management server (reconnect if already connected)
<id> REPORT <report-type>              Display report for <report-type>
QUIT                                   Quit management client<severity> = ALERT | CRITICAL | ERROR | WARNING | INFO | DEBUG
<category> = STARTUP | SHUTDOWN | STATISTICS | CHECKPOINT | NODERESTART | CONNECTION | INFO | ERROR | CONGESTION | DEBUG | BACKUP | SCHEMA
<level>    = 0 - 15
<id>       = ALL | Any database node idFor detailed help on COMMAND, use HELP COMMAND.
ndb_mgm> 

输入start backup启动备份,如下:

ndb_mgm> START BACKUP
Waiting for completed, this may take several minutes
Node 2: Backup 1 started from node 1
Node 2: Backup 1 started from node 1 completedStartGCP: 1232 StopGCP: 1235#Records: 2061 #LogRecords: 0Data: 51864 bytes Log: 0 bytes
ndb_mgm> 

在备份日志中,需要注意"Backup 1",它表示该备份的唯一ID,如果做第二次备份,备份ID会变成"Backup 2"。当日志中显示"Node 2: Backup 1 started from node 1 completed"时,本次备份结束。备份的数据保存在每个NDB(数据节点)下,具体的备份路径是$MYSQL_HOME/data/BACKUP/BACKUP-ID。这是默认的,我的数据放在/data/mysql-cluster/data/,所以备份也在该目录下面。上面的备份可以在两个数据节点都可以看到:

[root@192.168.0.40 BACKUP-1]# pwd
/data/mysql-cluster/data/BACKUP/BACKUP-1
[root@192.168.0.40 BACKUP-1]# ll
total 48
-rw-r--r-- 1 root root 25660 Apr 16 22:24 BACKUP-1-0.3.Data
-rw-r--r-- 1 root root 14096 Apr 16 22:24 BACKUP-1.3.ctl
-rw-r--r-- 1 root root    52 Apr 16 22:24 BACKUP-1.3.log
[root@192.168.0.40 BACKUP-1]# 
[root@192.168.0.50 BACKUP-1]# pwd
/data/mysql-cluster/data/BACKUP/BACKUP-1
[root@192.168.0.50 BACKUP-1]# ll
total 48
-rw-r--r-- 1 root root 26748 Apr 16 22:24 BACKUP-1-0.2.Data
-rw-r--r-- 1 root root 14096 Apr 16 22:24 BACKUP-1.2.ctl
-rw-r--r-- 1 root root    52 Apr 16 22:24 BACKUP-1.2.log
[root@192.168.0.50 BACKUP-1]# 

大家或许发现了以上两个节点的备份文件名不一样,一个包含".2",另外一个包含".3",这个数字表明了此备份是哪个数据节点上的数据。下面清楚的显示了ID号。

[ndbd(NDB)]     2 node(s)
id=2    @192.168.0.50  (mysql-5.5.19 ndb-7.2.4, Nodegroup: 0, Master)
id=3    @192.168.0.40  (mysql-5.5.19 ndb-7.2.4, Nodegroup: 0)

对于大数据量的备份,MySQL Cluster还提供了几个备份的参数可供调整,这些参数需要写在config.ini的[NDBD DEFAULT]或者[NDBD]组中,对各参数的具体说明如下:

(1)BackupDataBufferSize:将数据写入磁盘之前用于对数据进行缓冲处理的内存量。

(2)BackupLogBufferSzie: 将日志记录写入磁盘之前用于对其进行缓冲处理的内存量。

(3)BackupMemory:          在数据库节点中为备份分配的总内存。它应是分配给备份数据缓冲的内存和分配给日志缓冲的内存之和。

(4)BackupWriteSize:        每次写入磁盘的块大小,适用于备份数据缓冲和备份日志缓冲。

二. 数据恢复

对于用"start backup" 进行备份的cluster,必须使用ndb_restore工具进行数据恢复。ndb_restore是mysql cluster带的管理工具,在shell中执行,而不是ndb_mgm工具中的一个命令。

我们上面已经备份数据了,我们人为删除test库下面的表t1,然后恢复数据:

mysql> drop table test.t1;
Query OK, 1 row affected (0.64 sec)
mysql
>

(1)在数据节点2(192.168.0.50)的shell命令中执行如下命令:

[root@192.168.0.50 ~]# ndb_restore -b 1 -n 2 -c host=192.168.0.30:1186 -m -r /data/mysql-cluster/data/BACKUP/BACKUP-1/
Backup Id = 1
Nodeid = 2
backup path = /data/mysql-cluster/data/BACKUP/BACKUP-1/
Opening file '/data/mysql-cluster/data/BACKUP/BACKUP-1/BACKUP-1.2.ctl'
File size 14096 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.5.19 ndb-7.2.4
Stop GCP of Backup: 1234
Connected to ndb!!
Successfully restored table `test/def/t1`
Successfully restored table event REPL$test/t1
Opening file '/data/mysql-cluster/data/BACKUP/BACKUP-1/BACKUP-1-0.2.Data'
File size 26748 bytes
_____________________________________________________
Processing data in table: mysql/def/NDB$BLOB_7_3(8) fragment 0
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_sample(5) fragment 0
_____________________________________________________
Processing data in table: sys/def/NDB$EVENTS_0(3) fragment 0
_____________________________________________________
Processing data in table: mysql/def/ndb_apply_status(9) fragment 0
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_head(4) fragment 0
_____________________________________________________
Processing data in table: test/def/t1(10) fragment 0
_____________________________________________________
Processing data in table: sys/def/SYSTAB_0(2) fragment 0
_____________________________________________________
Processing data in table: mysql/def/ndb_schema(7) fragment 0
Opening file '/data/mysql-cluster/data/BACKUP/BACKUP-1/BACKUP-1.2.log'
File size 52 bytes
Restored 1 tuples and 0 log entriesNDBT_ProgramExit: 0 - OK[root@192.168.0.50 ~]# 

其中命令行中的各参数意义如下:

参数                    说明
-b                      备份id
-n                      NDB节点id
-m                      恢复表定义
-r                      备份路径
-c                      cluster管理节点连接

因为是第一个节点恢复,所以需要加参数-m来恢复表定义,这样在其他节点恢复时就不需要再加该参数,否则会报如下错误:

Unable to find table: `t1`
Restore: Failed to restore table: `test/def/t1` ... Exiting 

(2)在节点3(192.168.0.40)再进行恢复:

[root@192.168.0.40 ~]# ndb_restore -b 1 -n 3 -c host=192.168.0.30:1186 -r /data/mysql-cluster/data/BACKUP/BACKUP-1/    
Backup Id = 1
Nodeid = 3
backup path = /data/mysql-cluster/data/BACKUP/BACKUP-1/
Opening file '/data/mysql-cluster/data/BACKUP/BACKUP-1/BACKUP-1.3.ctl'
File size 14096 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.5.19 ndb-7.2.4
Stop GCP of Backup: 1234
Connected to ndb!!
Opening file '/data/mysql-cluster/data/BACKUP/BACKUP-1/BACKUP-1-0.3.Data'
File size 25660 bytes
_____________________________________________________
Processing data in table: mysql/def/NDB$BLOB_7_3(8) fragment 1
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_sample(5) fragment 1
_____________________________________________________
Processing data in table: sys/def/NDB$EVENTS_0(3) fragment 1
_____________________________________________________
Processing data in table: mysql/def/ndb_apply_status(9) fragment 1
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_head(4) fragment 1
_____________________________________________________
Processing data in table: test/def/t1(10) fragment 1
_____________________________________________________
Processing data in table: sys/def/SYSTAB_0(2) fragment 1
_____________________________________________________
Processing data in table: mysql/def/ndb_schema(7) fragment 1
Opening file '/data/mysql-cluster/data/BACKUP/BACKUP-1/BACKUP-1.3.log'
File size 52 bytes
Restored 1 tuples and 0 log entriesNDBT_ProgramExit: 0 - OK[root@192.168.0.40 ~]# 

(4)查看数据是否恢复(任意SQL节点,这里选择192.168.0.70):

mysql> select * from t1;
+-------+
| name  |
+-------+
| yayun |
| atlas |
+-------+
2 rows in set (0.05 sec)mysql> 

此时数据已经恢复正常。

三 .日志管理

MySQL Cluster提供了两种日志,分别是集群日志(cluster log)和节点日志(node log)。前者记录了所有Cluster节点生成的日志,后者仅仅记录了数据节点的本地事件。在大多数情况下,一般推荐使用集群日志,因为它在一个地方记录了所有节点的数据,更方便进行管理。节点日志一般在开发过程中使用,或者用来调试程序代码。

clusterlog一般记录在配置文件(config.ini)所在的目录下,文件名格式为ndb_<nodeid>_cluster.log,其中nodeid为管理节点号。

下面是测试环境中的一段clusterlog:

[root@192.168.0.30 mysql-cluster]# tail -n 10 ndb_1_cluster.log #Tablespaces: 0 #Logfilegroups: 0 #datafiles: 0 #undofiles: 0
2014-04-16 23:21:48 [MgmtSrvr] INFO     -- Node 6: Restore data: backup 3 from node 3 #Records: 3201 Data: 44814 bytes
2014-04-16 23:21:48 [MgmtSrvr] INFO     -- Node 6: Restore log: backup 3 from node 3 #Records: 0 Data: 0 bytes
2014-04-16 23:21:48 [MgmtSrvr] INFO     -- Node 6: Restore completed: backup 3 from node 3
2014-04-16 23:21:48 [MgmtSrvr] ALERT    -- Node 2: Node 6 Disconnected
2014-04-16 23:21:48 [MgmtSrvr] INFO     -- Node 2: Communication to Node 6 closed
2014-04-16 23:21:48 [MgmtSrvr] INFO     -- Node 3: Communication to Node 6 closed
2014-04-16 23:21:48 [MgmtSrvr] ALERT    -- Node 3: Node 6 Disconnected
2014-04-16 23:21:51 [MgmtSrvr] INFO     -- Node 3: Communication to Node 6 opened
2014-04-16 23:21:52 [MgmtSrvr] INFO     -- Node 2: Communication to Node 6 opened
[root@192.168.0.30 mysql-cluster]# 

可以使用ndb_mgm客户端管理工具打开或者关闭日志,具体操作如下:

[root@192.168.0.30 ~]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> clusterlog info
Connected to Management Server at: localhost:1186
Severities enabled: INFO WARNING ERROR CRITICAL ALERT 
ndb_mgm> 

当前日志是打开的,可以用clusterlog off命令关闭日志:

ndb_mgm> clusterlog off
Cluster logging is disabled
ndb_mgm> 

查看日志状态发现已关闭:

ndb_mgm> clusterlog info
Cluster logging is disabled.
ndb_mgm> 

执行命令clusterlog on将日志打开:

ndb_mgm> clusterlog on
Cluster logging is enabled.
ndb_mgm> clusterlog info
Severities enabled: INFO WARNING ERROR CRITICAL ALERT 
ndb_mgm> 

cluster中的日志有很多类型,可以按照如下类别进行过滤,使得日志只记录我们关心的信息。

(1)Category(类别):可以是STARTUP,SHUTDOWN,STATISTICS,CHECKPOINT,NODERESTART,CONNECTION,ERROR或者INFO中的任意值。具体的信息大家可以查阅mysql相关文档。

(2)Priority(优先级):由从1-15的数字表示,1表示最重要,而15表示最不重要。每种Category都有一个 默认的优先级阀值,如下面所示,优先级阀值以下的日志将被记录,反之,优先级阀值以上的日志将不会被记录。

类别            默认阀值(所有数据节点)
STARTUP                 7
SHUTDOWN                7
STATISTICS              7
CHECKPOINT              7
NODERESTART             7
CONNECTION              7
ERROR                   15
INFO                    7

(3)Severity Level(严重级别):可以是下面的值之一,ALERT,CRITICAL,ERROR,WARNING,INFO或DEBUG。这些值的含义如下:

严重级别                        事件定义
ALERT                   应立刻更正的情况,如损坏的系统数据库
CRITICAL                临界状况,如设备错误或资源不足
ERROR                   应予以更正的状况,如配置错误
WARNING                 不能称为错误的情况,但仍需要特别处理
INFO                    通报性信息
DEBUG                   调试信息,用于NDB Cluster开发

这3种分类可以让我们从3个不同的角度来对日志进行过滤。过滤的方法可以用ndb_mgm工具来完成,具体设置方法如下。

(1)node_id CLUSTERLOG category=threshold:用于小于等于threshold的优先级将category事件记录到cluster日志。node_id可以为ALL(所有节点)。或者只指定某个节点。

(2)CLUSTERLOG TOGGLE severity_level:使得指定的severity_level打开或者关闭。

例如,要将测试环境中的节点2的STARTUP事件只记录级别为3以下的日志,可以进入ndb_mgm后执行命令:

ndb_mgm> 2 clusterlog startup=3
Executing CLUSTERLOG STARTUP=3 on node 2 OK!ndb_mgm> 

如果要在cluster中过滤掉DEBUG和INFO信息,可以执行如下命令:

ndb_mgm> clusterlog toggle debug info
DEBUG enabled
INFO disabled
ndb_mgm> 

然后查看日志状态,发现DEBUG和INFO信息已经不存在了。

ndb_mgm> clusterlog info
Severities enabled: DEBUG WARNING ERROR CRITICAL ALERT 
ndb_mgm> 

总结:

通过几天学习,对mysql cluster有了初步了解,后续还会进一步的学习,虽然目前企业应用的并不多。我相信在将来一定会完善。功能会越来越强大。详细的参考还请大家阅读mysql的官方文档。

相关文章:

20165219王彦博《基于Cortex-M4的虚拟机制作与测试》课程设计个人报告

20165219王彦博《基于Cortex-M4的虚拟机制作与测试》课程设计个人报告 一、个人贡献 参与课设题目讨论及完成全过程&#xff1b; 资料收集&#xff1b; 负责环境搭建&#xff0c;代码运行下载&#xff1b; 撰写小组结题报告。 二、设计中遇到的问题及解决方法 1 实验六以太网服…

extern数组与extern指针

数组名代表了存放该数组的那块内存&#xff0c;它是这块内存的首地址。这就说明了数组名 是一个地址&#xff0c;而且&#xff0c;还是一个不可修改的常量&#xff0c;完整地说&#xff0c;就是一个地址常量。数组名 跟枚举常量一样&#xff0c;都属于符号常量。数组名 这个符号…

Java项目:医院管理系统(java+javaweb+jdbc+Mysql+lw)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 功能介绍&#xff1a; 登录、注册、用户/管理员(角色)、用户信息管理、科系信息管理、查看所有科系、新增科系信息、删除指定科系、修改科系信息、病房信息管理、病人信息管理、医生类型管理、病人手术管理…

Mongodb地理空间索引

1、索引&#xff1a; 建立索引既耗时也费力&#xff0c;还需要消耗很多资源。使用{"bakckground":true}选项可以使这个过程在后台完成&#xff0c;同时正常处理请求。如果不包括background 这个选项&#xff0c;数据库会阻塞建立索引期间的所有请求。阻塞的做法会让索…

Juniper的路由器、防火墙、交换机如何恢复出厂配置

Juniper的路由器、防火墙、交换机如何恢复出厂配置有些时候&#xff0c;在正常的业务使用中&#xff0c;逐条删除配置的内容很繁琐&#xff0c;我们可以使用恢复出厂配置&#xff0c;清空设备中的配置&#xff1b;还有的时候&#xff0c;由于设备配置异常&#xff0c;可以使用恢…

【转载】标准输入输出、错误输出、重定向标准输出

【转载】标准输入输出、错误输出、重定向标准输出 原文&#xff1a;标准输入输出、错误输出、重定向标准输出 再来看看 >& 操作符&#xff1a; 重定向操作符描述 > 将命令输出写入到文件或设备&#xff08;如打印机&#xff09;&#xff0c;而不是命令提示符窗口或…

(Interrupt Latency) 中断延迟

中断延迟 (Interrupt Latency) 中断延迟 是指从硬件中断发生到开始执行中断处理程序第一条指令之间的这段时间。 也就是&#xff1a; 计算机接收到中断信号到操作系统作出响应&#xff0c;并完成换到转入中断服务程序的时间。 不严格地&#xff0c;也可以表述为&#xff1a…

Java项目:干活管理系统(java+SSM+Jsp+Mysql)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 前台用户和后台管理员两种角色&#xff1a; 前台用户功能有&#xff1a;发布兼职、发布帖子、查看公告、个人中心、投诉等。 后台管理员功能有&#xff1a;用户管理、兼职管理、帖子管理、聊天管理、广告管…

20135234mqy 实验四

北京电子科技学院&#xff08;BESTI&#xff09; 实 验 报 告 课程&#xff1a;java程序设计 班级&#xff1a;1352 姓名&#xff1a;mqy 学号&#xff1a;20135234 成绩&#xff1a; 指导教师&#xff1a;娄嘉鹏 实验日期&#xff1a;2015.6…

我的第一张地图报表

一直以来对于地图都很陌生&#xff0c;感觉好强大&#xff0c;可以根据地理位置去分析数据&#xff0c;下面我简单的做了一张地图展示数据的报表。 接下来就简单的说一下设计过程和应该注意的地方 效果&#xff1a;&#xff08;鼠标放在省份区域上&#xff0c;显示该省的数据&a…

SpringBoot第十篇:thymeleaf详解

作者&#xff1a;追梦1819 原文&#xff1a;https://www.cnblogs.com/yanfei1819/p/10931435.html 版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请附上博文链接&#xff01; 引言 SpringBoot 对 Web 的支持&#xff0c;官方推荐的是模板引擎 thymelaf。本章中&…

嵌入式系统开发过程中遇到的——volatile

嵌入式 系统开发过程中遇到的—— volatile 对于不同的计算机体系结构&#xff0c;设备可能是端口映射&#xff0c;也可能是内存映射的 。如果系统结构支持独立的 I/O 地址空间&#xff0c;并且是端口映射&#xff0c;就必须使用汇编语言完成实际对设备的控制&#xff…

薏米红豆粥的功效和实践演示

熬薏米红豆粥有很多技巧和讲究。薏米很硬&#xff0c;红豆也很硬&#xff0c;假设已经煮在锅里&#xff0c;大概熬一个多小时不坏&#xff0c;这是一种浪费火灾或电力&#xff0c;它甚至可以把水烧开&#xff0c;原因症结。我建议的方法有两种&#xff1a;第一种方法是在锅里加…

Java项目:财务预算管理系统(java+SSM+Jsp+Mysql+Layui+Maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 功能包括&#xff1a;实现公司对项目的管理。 二、项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 mysql Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09; …

POJ 3080 多个串最长公共子序列

求多个串最长公共子序列&#xff0c;字典序最小输出。枚举剪枝kmp.比较简单&#xff0c;我用find直接查找16ms #include<iostream> #include<string> #include<algorithm> using namespace std; string s[61]; int main() {int ta;cin>>ta;int n;while…

HDU 2561 第二小整数

2019-05-27 18:07:06 加油&#xff0c;坚持&#xff01;&#xff01;&#xff01; 水题 #include <bits/stdc.h> using namespace std; int a[100]; int main() {int t;scanf("%d", &t);while(t--){int n;scanf("%d", &n);for (int i 0; i …

Java项目:在线高中考试系统(java+SSM+Jsp+Mysql+Maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 项目分为前台和后台&#xff0c;前台主要为学生角色、后台主要为管理员角色。 管理员添加试题和发布试卷&#xff0c;学生负责在线考试、在线查看成绩和错题记录列表等。 管理员功能有&#xff1a;年级管理…

asp.net mvc 学习

Routing讲解&#xff1a; http://www.cnblogs.com/wangiqngpei557/p/3379095.html Filter讲解&#xff1a; http://www.cnblogs.com/ymnets/p/3452407.html ASP.NET MVC 支持以下类型的操作筛选器&#xff1a; 授权筛选器。 这些筛选器用于实现 IAuthorizationFilter 和做出关于…

Linux数据库性能优化--文件系统相关优化

实际也中也用到下文中所说的内存文件系统1、ramfs 记得是32位文件系统安装oracle 为oracle分配SGA突破1.7G大小限制2、mmap 的文件可以放在tmpfs挂载的文件系统中http://www.ibm.com/developerworks/cn/linux/management/tune/index.html1&#xff0e; 引言实践证明Lin…

jQuery Mobile的学习时间bottonbutton的事件学习

版权声明&#xff1a;本文为博主原创文章。未经博主同意不得转载。https://blog.csdn.net/xmt1139057136/article/details/27700521 程序猿都非常懒&#xff0c;你懂的&#xff01; 生命的绝唱来机仅仅争朝夕&#xff0c;如诗的年华更需惜时如金。不要让今天的懈怠成为一生的痛…

C++中 public,protected, private 访问标号小结

第一&#xff1a;private, public, protected 访问标号的访问范围。 private&#xff1a; 只能由1.该类中的函数、2.其友元函数访问。 不能被任何其他访问&#xff0c;该类的对象也不能访问。 protected&#xff1a; 可以被1.该类中的函数、2.子类的函数、以及3.其友元函数…

Java项目:学生管理系统(java+Springboot+Maven+mybatis+Vue+Mysql)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 本系统功能包括&#xff1a; 学生管理&#xff0c;教师管理&#xff0c;课程管理&#xff0c;成绩管理&#xff0c;系统管理等等。 二、项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 M…

UVA 11752 超级幂

UVA 11752 超级幂 Z - The Super PowersTime Limit:1000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Practice UVA 11752Description 题意&#xff1a;定义一个数为超级幂&#xff0c;当这个数能表示成至少两个不同数字的幂时。如162^4&#x…

Awstats

c是一个非常简洁而且强大的统计工具。它可以统计您站点的如下信息&#xff1a;一&#xff1a;访问量&#xff0c;访问次数&#xff0c;页面浏览量&#xff0c;点击数&#xff0c;数据流量等精确到每月、每日、每小时的数据二&#xff1a;访问者国家、访问者IP、操作系统、浏览器…

fixture详细介绍-作为参数传入,error和failed区别

前言 fixture是pytest的核心功能&#xff0c;也是亮点功能&#xff0c;熟练掌握fixture的使用方法&#xff0c;pytest用起来才会得心应手&#xff01; fixture简介 fixture的目的是提供一个固定基线&#xff0c;在该基线上测试可以可靠地和重复地执行。fixture提供了区别于传统…

哈佛结构和冯诺依曼结构区别。

哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。中央处理器首先到程序指令存储器中读取程序指令内容&#xff0c;解码后得到数据地址&#xff0c;再到相应的数据存储 器中读取数据&#xff0c;并进行下一步的操作&#xff08;通常是执行&#xff09;。程序指令存储和…

js 数据函数

//shift&#xff1a;删除原数组第一项&#xff0c;并返回删除元素的值&#xff1b;如果数组为空则返回undefined var a [1,2,3,4,5]; var b a.shift(); //a&#xff1a;[2,3,4,5] b&#xff1a;1 //unshift&#xff1a;将参数添加到原数组开头&#xff0c;并返回数组的长度…

Java项目:平行志愿管理系统(java+Springboot+Maven+mybatis+Vue+Mysql)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述本系统功能包括&#xff1a; 系统管理&#xff0c;招生计划&#xff0c;学生管理&#xff0c;录取结果&#xff0c;自动分配&#xff0c;调剂管理等等。 二、项目运行 环境配置&#xff1a; J…

冒泡 MS Azure 不便宜。。。

一直在等 MS Azure 中国开卖&#xff0c; 最近有消息说正式商用了。。。 看看去&#xff0c;ok 发现官方网站 很奇葩。没有购买的地方 说毛线 啊 卧槽 欺骗感情还是吊人胃口&#xff1f; 好看了一下VM的价格&#xff0c;卧槽真不便宜。 即使是 768 MB的也要 0.22RMB 小时。本来…

数据库的概念以及MYSQL的安装和卸载

一、数据库的基本概念&#xff1a; 1、什么是数据库&#xff1f; DataBase&#xff0c;简称DB。是用来存储和管理数据的仓库。 2、数据库的特点&#xff1a; 持久化存储数据的。其实数据库就是一个文件系统。方便存储和管理数据使用了统一的方式操作数据库——SQL  3、最热门…