图片 8

Vue在页面右上角实现可悬浮,中使用正则表达式

先来看看架构,如下图:

这是个大多数网站很常见的功能,点击页面右上角头像显示一个悬浮菜单,点击页面其他位置或再次点击头像则菜单隐藏。

Oracle使用正则表达式离不开这4个函数:

图片 1

图片 2

1。regexp_like

图片 3

作为一个jQuery前端攻城狮实现这个功能可以说是很easy了,但是对只刚粗看了一遍vue文档的菜鸟来说,坑还是要亲自踩过才算圆满。

2。regexp_substr

部署

知识点

3。regexp_instr

1.修改hosts

  • 组件及组件间通信
  • 计算属性

4。regexp_replace

在所有的服务器中执行相同的操作。

正文

看函数名称大概就能猜到有什么用了。

vim /etc/hosts

1. 父组件

 

192.168.137.10 master
192.168.137.20 backup
192.168.137.30 slave
192.168.137.40 monitor

这里暂时只涉及系统菜单这一个功能,因此路由暂未涉及。

regexp_like 只能用于条件表达式,和 like
类似,但是使用的正则表达式进行匹配,语法很简单:

2.添加mysql用户

基本思路是:通过props将showCancel这个Boolean值传递到子组件,对父子组件分别绑定事件,来控制这个系统菜单的显示状态。其中在父组件的绑定click事件中,将传入子组件的showCancel值重置。

图片 4

只需要在所有的数据库端执行即可,监控端不需要。

这里就涉及第一个小知识点——子组件调用:

regexp_substr 函数,和 substr
类似,用于拾取合符正则表达式描述的字符子串,语法如下:

GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'192.168.137.%' IDENTIFIED BY 'mmm_monitor'; 
GRANT SUPER,REPLICATION CLIENT, PROCESS ON *.* TO 'mmm_agent'@'192.168.137.%' IDENTIFIED BY 'mmm_agent';
flush privileges;

首先写好等待被子组件渲染的自定义元素:

图片 5
regexp_instr 函数,和 instr
类似,用于标定符合正则表达式的字符子串的开始位置,语法如下:

图片 6

<t-header :showCancel=showCancel></t-header>

图片 7

注意:repl用户在搭建主从服务的时候已经创建好了。

接着import写好的子组件:

regexp_replace 函数,和 replace
类似,用于替换符合正则表达式的字符串,语法如下:

 3.安装监控软件

import THeader from "./components/t-header/t-header";

图片 8

注意:监控端全部安装,但是监控端只需要用到mysql-mmm-monitor,mysql-mmm-agent不需要启动。

然后在组件中注册子组件:

这里解析一下几个参数的含义:

数据库端只需要安装mysql-mmm-agent

components: {
 THeader
}

1。source_char,输入的字符串,可以是列名或者字符串常量、变量。

1.在监控服务器执行

到这里,新入坑的同学可能会比较疑惑这几行代码是怎样把子组件对应到<t-header>标签的,官方文档是这样说的:

2。pattern,正则表达式。

wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm –ivh epel-release-6-8.noarch.rpm
yum –y install mysql-mmm*

当注册组件 (或者 prop) 时,可以使用 kebab-case
(短横线分隔命名)、camelCase (驼峰式命名) 或 PascalCase
(单词首字母大写命名);

3。match_parameter,匹配选项。

2.在数据库服务器上执行,每个数据库服务器上都要执行

在 HTML 模板中,请使用 kebab-case;

        取值范围: i:大小写不敏感; c:大小写敏感;n:点号 .
不匹配换行符号;m:多行模式;x:扩展模式,忽略正则表达式中的空白字符。

wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm –ivh epel-release-6-8.noarch.rpm
yum -y install mysql-mmm-agent

我的理解是(举例),当自定义元素为<t-header>时,注册组件名可以有三种写法:t-header、tHeader和THeader,在这种情况下注册的组件会自动识别并渲染到<t-header>。

4。position,标识从第几个字符开始正则表达式匹配。

路径说明:

需要注意的是,以上使用的是HTML
模板,是在单文件组件里用<template><template/>指定的模板;另外存在一种字符串模板,是用在组件选项里用template:
“”
指定的模板。当使用字符串模板时,自定义标签可以用三种写法,具体情况请移步官方文档
组件命名约定。

5。occurrence,标识第几个匹配组。

图片 9

这样父组件的雏形就诞生了:

6。replace_string,替换的字符串。

4.配置文件

<template>
 <div id="app" @click="hideCancel">
 <t-header :showCancel=showCancel></t-header>
 <!-- <router-view/> -->
 </div>
</template>
<script>
 import THeader from "./components/t-header/t-header";
 export default {
 name: "app",
 components: {
  THeader
 },
 data() {
  return {
  showCancel: false
  };
 },
 methods: {
  hideCancel() {
  this.showCancel = false;
  }
 }
 };
</script>

 

db服务器配置文件:mmm_agent.conf,mmm_common.conf

2. 子组件

说了一堆文绉绉的,现在开始实例演练了,在此之前先建好一个表。

监控服务器的配置文件:mmm_mon.conf,mmm_common.conf(该文件所有服务器一样)

子组件中.cancel为打开系统菜单的按钮,.cancel-div为系统菜单,最开始是这个样子:

create table tmp as   with data as (    select 'like' as id ,'a9999' as str from dual union all    select 'like'       ,'a9c'          from dual union all    select 'like'       ,'A7007'        from dual union all    select 'like'       ,'123a34cc'     from dual union all     select 'substr'     ,'123,234,345'  from dual union all    select 'substr'     ,'12,34.56:78'  from dual union all    select 'substr'     ,'123456789'    from dual union all    select 'instr'      ,'192.168.0.1'  from dual union all    select 'replace'    ,'(020)12345678' from dual union all    select 'replace'    ,'001517729C28' from dual    )  select * from data ;    select * from tmp ;  ID      STR  ------- -------------  like    a9999  like    a9c  like    A7007  like    123a34cc  substr  123,234,345  substr  12,34.56:78  substr  123456789  instr   192.168.0.1  replace (020)12345678  replace 001517729C28  

配置db服务器

<template>
 <div class="header-wrapper">
 /*这里是logo和title*/
 ...
 /*这里是用户名和按钮*/
 <div class="info-wrapper">
  你好,管理员!

  <div class="cancel-div" v-show="showCancel">
   <ul>
   <li @click.stop="doSomething" title="用户设置">设置 </li>
   <li @click.stop="doSomething" title="退出登录">退出 </li>
   </ul>
  </div>

 </div>
 </div>
</template>

regexp_like 例子:

1.修改master服务器

按照踩坑之前的思路,在子组件接到showCancel值后用v-show控制显示隐藏,那么在父子组件的绑定click事件中只需要根据情况更改showCancel值就可以了,只要注意对系统菜单内几个选项的绑定事件不要触发父子组件上的绑定事件——总不能一点菜单它就没了,所以在绑定事件中用到了.stop,即
@click.stop="doSomething"

select str from tmp where id='like' and regexp_like(str,'A\d+','i'); -- 'i' 忽略大小写  STR  -------------  a9999  a9c  A7007  123a34cc    select str from tmp where id='like' and regexp_like(str, 'a\d+');  STR  -------------  a9999  a9c  123a34cc    select str from tmp where id='like' and regexp_like(str,'^a\d+');  STR  -------------  a9999  a9c    select str from tmp where id='like' and regexp_like(str,'^a\d+$');  STR  -------------  a9999
vim /etc/mysql-mmm/mmm_common.conf


active_master_role  writer  ###积极的master角色的标示,所有的db服务器都需要开启read_only参数,对于writer服务器监控代理会自动将read_only属性关闭。

<host default>
 cluster_interface  eth0  #####群集的网络接口
 pid_path    /var/run/mysql-mmm/mmm_agentd.pid ####pid路径
 bin_path    /usr/libexec/mysql-mmm/    #####可执行文件路径 
 replication_user  repl   #######复制用户
 replication_password repl   #######复制用户密码
 agent_user    mmm_agent  #######代理用户,用于更改只读操作
 agent_password   mmm_agent  #######代理用户密码
</host>

<host master>   ##########master1的host名
 ip  192.168.137.10 #####master1的ip
 mode master  ########角色属性,master代表是主
 peer backup  ########与master1对等的服务器的host名,也就是master2的服务器host名
</host>

<host backup>  ####和master的概念一样
 ip  192.168.137.20
 mode master
 peer master
</host>

<host slave>  #####从库的host名,如果存在多个从库可以重复一样的配置
 ip  192.168.137.30 ####从的ip
 mode slave #####slave的角色属性代表当前host是从
</host>

<role writer> ####writer角色配置
 hosts master,backup ####能进行写操作的服务器的host名,如果不想切换写操作这里可以只配置master,这样也可以避免因为网络延时而进行write的切换,但是一旦master出现故障那么当前的MMM就没有writer了只有对外的read操作。
 ips  192.168.137.100 #####对外提供的写操作的虚拟IP
 mode exclusive #####exclusive代表只允许存在一个主,也就是只能提供一个写的IP
</role>

<role reader> #####read角色配置
 hosts backup,slave ######对外提供读操作的服务器的host名,当然这里也可以把master加进来
 ips  192.168.137.120,192.168.137.130,192.168.137.140 ###对外提供读操作的虚拟ip,这两个ip和host不是一一对应的,并且ips也hosts的数目也可以不相同,如果这样配置的话其中一个hosts会分配两个ip
 mode balanced ###balanced代表负载均衡
</role>

于是万事大吉,也就是像这样:

regexp_substr 例子:

同时将这个文件拷贝到其它的服务器包括监控服务器,配置不变

<script>
 export default {
 props: {
  showCancel: {
  type: Boolean
  }
 },
 methods: {
  doSomething() {},
  switchCancelBoard() {
  this.showCancel = !this.showCancel;
  }
 },
 computed: {
  ifShowCancel() {
  return this.showCancel;
  }
 }
 };
</script>
col str format a15;  select     str,    regexp_substr(str,'[^,]+')     str,    regexp_substr(str,'[^,]+',1,1) str,    regexp_substr(str,'[^,]+',1,2) str,  -- occurrence 第几个匹配组    regexp_substr(str,'[^,]+',2,1) str   -- position 从第几个字符开始匹配  from tmp  where id='substr';  STR             STR             STR             STR             STR  --------------- --------------- --------------- --------------- ---------------  123,234,345     123             123             234             23  12,34.56:78     12              12              34.56:78        2  123456789       123456789       123456789                       23456789    select     str,     regexp_substr(str,'\d')        str,    regexp_substr(str,'\d+'  ,1,1) str,    regexp_substr(str,'\d{2}',1,2) str,    regexp_substr(str,'\d{3}',2,1) str   from tmp        where id='substr';  STR             STR             STR             STR             STR  --------------- --------------- --------------- --------------- ---------------  123,234,345     1               123             23              234  12,34.56:78     1               12              34  123456789       1               123456789       34              234      select regexp_substr('123456789','\d',1,level) str  --取出每位数字,有时这也是行转列的方式  from dual  connect by level<=9  STR  ---------------  1  2  3  4  5  6  7  8  9
scp /etc/mysql-mmm/mmm_common.conf slave:/etc/mysql-mmm/
scp /etc/mysql-mmm/mmm_common.conf backup:/etc/mysql-mmm/
scp /etc/mysql-mmm/mmm_common.conf monitor:/etc/mysql-mmm/

然而第一波踩坑之后一起表明显然我还是太年轻。下面是一些不好的示范:

regex_instr 例子:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:
网站地图xml地图