GVKun编程网logo

浅谈UML学习笔记之用例图(用例图 uml)

11

如果您想了解浅谈UML学习笔记之用例图的相关知识,那么本文是一篇不可错过的文章,我们将对用例图uml进行全面详尽的解释,并且为您提供关于HTML学习笔记之类、布局、响应式设计(九)、mysql学习笔记

如果您想了解浅谈UML学习笔记之用例图的相关知识,那么本文是一篇不可错过的文章,我们将对用例图 uml进行全面详尽的解释,并且为您提供关于HTML学习笔记之类、布局、响应式设计(九)、mysql学习笔记之--锁、MySQL学习笔记之一、mysql学习笔记之事务的有价值的信息。

本文目录一览:

浅谈UML学习笔记之用例图(用例图 uml)

浅谈UML学习笔记之用例图(用例图 uml)

最近一直在学习UML的基础知识,再看完视频之后,并没有很好的总结,在画图的过程中发现了很多的问题,下面是看书的过程自己总结的UML用例图的一点知识,与大家分享一下。

          一、概念

        用例图是由参与者、用例以及它们之间的关系构成的用于描述系统功能的动态视图。

用例是系统中的一个功能单元,描述一个系统做什么(what)的信息,并不是怎么(how)做。用例图的作用是描述参与者和用例的关系,表示系统的用户使用了系统中的哪些用例。

        二、组成

        用例图组成的概念,我们通过一张图学习:

       我们重点讲解用例组成中用例之间的关联:

  1. 包含

【表示方式】虚线箭头   +   include;箭头由基础用例指向被包含用例

【作用】提高用例模型的可维护性;简化描述避免多个用例中重复描述同一段行为或对同一段行为描述不一致

【包含图】

  1. 扩展

【表示方式】虚线箭头   +  extend;箭头指向基础用例

【作用】一定条件下,扩展用例为基础用例增加新的行为

【扩展图】

  1. 泛化

【表示方式】实线空三角箭头;箭头指向父用例

【作用】子用例继承父用例所有的结构、行为和关系,是父用例的一种特殊形式

 【泛化图】

   

       扩展关系和包含关系的比较:

       1、扩展关系:基础用例提供一个或多个插入点,扩展用例为插入点提供需要插入的行为

            包含关系中只有一个插入点

       2、扩展关系:基础用例执行,扩展不一定执行

             包含关系:基础用例执行,包含用例必须执行

       3、扩展关系:即使没有扩展用例,基础用例本身是完整的

            包含关系:没有包含用例,基础用例本身不完整

             为大家简单的举一个机房收费系统的小例子:

           

            

9

HTML学习笔记之类、布局、响应式设计(九)

HTML学习笔记之类、布局、响应式设计(九)

@L_301_0@9.类、布局、响应式设计

9.1类

  • 使用style标签设置样式颜色 div块儿级元素
<!--类 -->
<html>
<head>
<style>
.cities {
   background-color:black;
  color:white;
  margin:20px;
  padding:20px;

}

</style>
</head>

<body>
<div>
<h4>中国</h4>
<p>中华人民共和国(the People's Republic of China),简称“中国”,成立于1949年10月1日,位于亚洲东部,太平洋西岸,是工人阶级领导的、以工农联盟为基础的人民民主专政的社会主义国家</p>
</div>

<div>
<h4>俄罗斯</h4>
<p>中华人民共和国(the People's Republic of China),简称“中国”,成立于1949年10月1日,位于亚洲东部,太平洋西岸,是工人阶级领导的、以工农联盟为基础的人民民主专政的社会主义国家</p>
</div>
</body>
</html>

运行效果:

在这里插入图片描述

9.2分类行内元素 (字体不同色)

<!--分类行内元素 不同字体不同色-->
<html>
<head>
<style>
span.red {color:red;}
</style>
</head>
<body>
<h4>我有<span>很重要</span>的事情</h4>
</body>
</html>

运行效果:

在这里插入图片描述

9.3 布局(涉及CSS )–由于初学阶段还不了解CSS 所以先学写个例子放在这里,具体学习放在接下来CSS的学习中

<!--布局 CSS写法-->
<html>
<head>
<!-- 只设置padding不设置float:left;间距不管用 
(2)使用clear:both;清除了前面两个div设置的float: left;(浮动)才能使得bottom位于整个布局下部-->
<style>
#header {
 background-color:#D8B3D8;
 color:white;
 text-align:center;
 padding:5px;
}
#left {
  background-color:#B3B3D8;
  color:black;
  height:500px;
  width:100px;
  padding:10px;
  line-height:30px;
  float:left;
  text-align:center;
}
#right {
 padding:30px;
float:left;
}
#bottom{
 background-color:black;
 text-align:center;
 color:white;
 padding:30px;
 clear:both;

}
</style>
</head>
<body>

<div id="header">
<h1>详情页</h1>
</div>
<div id="left">
种类<br >
价格<br >
配送<br >
</div>

<div id="right">
<h2>London</h2>
<p>
London is the capital city of England. It is the most populous city in the United Kingdom,
with a metropolitan area of over 13 million inhabitants.
</p>
<p>
Standing on the River Thames, London has been a major settlement for two millennia,
its history going back to its founding by the Romans, who named it Londinium.
</p>
</div>

<div id="bottom">
下一页
</div>

</body>
</html>

运行效果:

在这里插入图片描述

9.4 响应式设计 (一) (使用到CSS)

  • 响应式设计:就是能根据你打开网页窗口大小随意变化适合你窗口大小的设计,比如说以前有的网页在pc端上打开刚好但是在手机端上载体变小了,相应字就变的比较小了,而且还只能显示左边一半的页面内容,但是用了响应式设计后,他就能根据你自身载体的大小来变化了
  • 简单的讲,就是说,里面的内容可以根据窗口的大小,自动布局
  • border: 1px solid black;CSS盒模型–边框设置
  • float:left;CSS float 属性
<!--响应式设计一 -->
<!--(1)  float:left;  (2)border:1px solid-->
<html lang="en-US">
<head>
<style>
.cars{
  float:left;
  margin:10px;
  padding:20px;
  width:300px;
  height:300px;

  border: 1px solid black;
}

</style>
</head>
<body>
<h1>响应式布局Demo</h1>
<p>调整此响应页面的大小</p>


<br >
<div>
<h4>London</h4>
<p>伦敦是英国的首都</p>
<p>It is the most populous city in the United Kingdom, 
with a metropolitan area of over 13 million inhabitants.</p>
</div>
<div>
<h4>London</h4>
<p>伦敦是英国的首都</p>
<p>It is the most populous city in the United Kingdom, 
with a metropolitan area of over 13 million inhabitants.</p>
</div>

</body>
</html>

运行效果:
(1)全屏的浏览器

在这里插入图片描述

(2)缩小后的窗口布局

在这里插入图片描述

9.4 响应式设计 (二) 使用 Bootstrap (使用到CSS)

HTML 响应式 Web 设计

mysql学习笔记之--锁

mysql学习笔记之--锁

MySQL锁的设计初衷就是处理并发。根据加锁的范围,MySQL的锁大致可分为:全局锁、表级锁和行锁。

全局锁

    全局锁就是对整个数据库实例加锁。命令: flush tables with read lock(FTWRL)。使用这个命令的时候整个数据库处于只读状态,其它线程会被阻塞:数据更新语句数据的(增删改)、数据的定义(建表,修改表结构)和更新事务的提交语句。

    应用场景:做全库逻辑备份(把整个数据库的所有表都select出来存成文本)。这个状态下如果客户端异常重启,MySQL会自动释放这个全局锁。
    备份还有一个方法就是:在可重复读级别下开启一个事务。在这个事务下读区到的数据可以保持数据一致性。由于MVCC的支持,这个过程数据是可以正常更新的。这个方法的
    前提是引擎要支持这个事务的隔离级别。
    还有一个办法也可以使整个数据库处于只读状态,set global readonly=true;但是一般read only一般会用来做其他逻辑,比如判断一个库是主库还是从库,而且将数据库设置成read only之后,如果客户端发生异常,则数据库就会一直处于readonly状态

表级锁

    表级别锁有两种:表锁原数据锁(meta data lock,MDL)。

    语法:
        锁表 lock  tables T read/write; 该命令会限制其他线程的读写操作,也会限制本线程下面的操作对象。
        解锁 unlock tables T,或者客户端断开的时候释放

    例如:线程A执行 lock tables t1 read, t2 write;  则 其他线程对t1的写,t2的读会被阻塞。同时在unlock tables之前,也只能执行读t1,写t2操作,也不能访问其他表。

 

    元数据锁(MDL)

    MDL不需要显式使用,在访问一个表的时候会自动加上。MDL是在5.5版本中引入的,当对一个表进行增删改查的时候,加MDL读锁;当要对表结构做变更操作的时候,加MDL写锁。

    机制
        读锁之间不互斥,因此你可以有多个线程对表进行增删改操作
        读写锁之间,写锁之间互斥,用来保证变更表结构操作的安全性。因此,如果有两个线程要同时给一个表加字段,其中一个要等另外一个执行完之后才能开始执行。

    所以在修改表结构的时候,最好确定此时这张表没有长事务,或者在alter table语句里设置等待时间;预发是 alter table T wait n add column ...


行锁
    行锁是各个引擎引入的,所以不是所有的引擎都支持行锁。不支持行锁意味着并发的时候只能使用表锁。

    两阶段锁
        在InnoDB事务中,行锁是在需要的时候才加上的,但并不是不需要了就立刻释放,要等要事务执行结束时才释放。

        所以,如果事务中需要锁多个行,要把最可能造成锁冲突,最可能影响并发度的锁尽量放在后面。

    例如:
        session A
            begin;
            update t1 set a = 1 where id = 1;
            update t1 set a = 2 where id = 2;

        session B
            begin;
            update t1 set a = 2 where id = 1;

        在session A 事务结束之前 seaaion B会被阻塞。


    死锁和死锁检测

        死锁:当并发系统中不同线程出现循环资源依赖,涉及的线程都在等待别的线程释放资源的时候,就会导致这几个线程都处于无限等待的状态名称为死锁。

        例如:
            事务 A                                       事务 B
            begin;                                            begin;
            update t set k = k + 1 where id = 1;
                                                            update t set k = K + 1 where id = 2;
            update t set k = k + 1 where id = 2;
                                                            update t set k = k + 1 where id = 1;
            

            此时事务A在等待事务B释放id = 2的行锁,而事务B在等待事务A释放id = 1的行锁就进入了死锁。

        解决方案:    
                1.直接进入等待,直到超时。设置超时的参数 innodb_lock_wait_timeout。
                2.发起死锁检测,发现死锁后,主动回滚死锁链条中的某个事务,参数 innodb_deadlock_detect :on表示开启,这个会很耗cpu

 

MySQL学习笔记之一

MySQL学习笔记之一

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

  • MySQL 是开源的,所以你不需要支付额外的费用。
  • MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
  • MySQL 使用标准的 SQL 数据语言形式。
  • MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。
  • MySQL 对PHP有很好的支持,PHP 是目前最流行的 Web 开发语言。
  • MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。
  • MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 MySQL 系统。

学习的开发环境: Mac, MySQL, Navicat(可视化SQL工具)
Mac 安装MySQL数据库方式
Mac使用brew(Homebrew)安装mysql,附 Mac Nacicat Premium 破解版

注意:Mysql对大小写不敏感, SQL语句末尾加分号“;”

使用MySQL

1.命令行连接MySQL服务器

mysql -u root -p
Enter password:******

2.创建数据库database

mysql> create DATABASE [数据库名称];

3.删除数据库

mysql> drop DATABASE [数据库名称];

4.选择或切换数据库

mysql> use RUNOOB;
Database changed

5.查看当前数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| runoob             |
| sys                |
+--------------------+

6.查看一个数据库中的所有的表

mysql> use runoob;
Database changed
mysql> show tables;
+------------------+
| Tables_in_runoob |
+------------------+
| apps             |
| employee         |
| runoob_tbl       |
| tcount_tbl       |
| websites         |
+------------------+
5 rows in set (0.00 sec)

7. 查看表中所有的列:

mysql>show columns from apps;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(10)     | NO   | PRI | NULL    |       |
| app_name | varchar(20) | NO   |     | NULL    |       |
| url      | varchar(40) | NO   |     | NULL    |       |
| country  | varchar(20) | NO   |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

8. 查看创建表的sql语句:

mysql> show create table apps;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| apps  | CREATE TABLE `apps` (
  `id` int(10) NOT NULL,
  `app_name` varchar(20) NOT NULL,
  `url` varchar(40) NOT NULL,
  `country` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

9. 查询创建数据库的sql语句

mysql> show create database runoob;
+----------+-----------------------------------------------------------------+
| Database | Create Database                                                 |
+----------+-----------------------------------------------------------------+
| runoob   | CREATE DATABASE `runoob` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.00 sec)

我的网站:https://wayne214.github.io

mysql学习笔记之事务

mysql学习笔记之事务

mysql 5.7.22版本之后就不会有级联回滚。没记错的话是这样的

事务其实就是并发控制的基本单位;事务是一个序列操作,其中的操作要么都执行,要么都不执行,它是一个不可分割的工作单位;

show engine innodb status; --查看事务日志

show variables like ''innodb_%''; --查看日志文件设置状态

innodb_log_files_in_group是数据库中设置几组事务日志,默认为2;innodb_log_group_home_dir是事务日志存放目录,不设置;ib_logfile0文件存在数据文件目录下。

Innodb存储引擎可将所有数据存放于ibdata*的共享表空间,也可将每张表存放于独立的.ibd文件的独立表空间

注意:在 MySQL 中对于数据来说, 最为重要的是日志文件
redo log => ib_logfile0 ----这个文件主要是用来持久化事务的操作,用于意外下事务没能及时更新,重启后用这个文件自动进行数据恢复
undo log => ibdata ----这个主要用来回滚
原子性:要么事务一同全部执行成功,要么全部执行失败
回滚日志
想要保证事务的原子性,就需要在异常发生时,对已经执行的操作进行回滚,而在 MySQL 中,恢复机制是通过回滚日志( undo log )实现的,所有事务进行的
修改都会先记录到这个回滚日志中,然后在对数据库中的对应行进行写入。
注意:系统发生崩溃、数据库进程直接被杀死后,当用户再次启动数据库进程时,还能够立刻通过查询回滚日志将之前未完成的事务进行回滚,这也就需要回滚
日志必须先于数据持久化到磁盘上,是我们需要先写日志后写数据库的主要原因。
在日志文件中 : 在事务中使用的每一条 INSERT 都对应了一条 DELETE ,每一条 UPDATE 也都对应一条相反的 UPDATE 语句。

关于浅谈UML学习笔记之用例图用例图 uml的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于HTML学习笔记之类、布局、响应式设计(九)、mysql学习笔记之--锁、MySQL学习笔记之一、mysql学习笔记之事务的相关信息,请在本站寻找。

本文标签: