# MySQL日常监控及sys库的使用
## 一、统计信息(SQL维度)
1、统计执行次数最多的SQL语句:
```sqlSELECT DIGEST_TEXT, COUNT_STAR, FIRST_SEEN, LAST_SEEN FROM `performance_schema`.events_statements_summary_by_digest ORDER BY COUNT_STAR DESC;```
2、查看平均响应时间最多的sql语句:
```sqlSELECT DIGEST_TEXT, AVG_TIMER_WAIT, COUNT_STAR, FIRST_SEEN, LAST_SEEN FROM `performance_schema`.events_statements_summary_by_digest ORDER BY AVG_TIMER_WAIT DESC;```
3、查看排序记录数最多的sql
```sqlSELECT DIGEST_TEXT,SUM_SORT_ROWS, COUNT_STAR, FIRST_SEEN, LAST_SEEN FROM `performance_schema`.events_statements_summary_by_digest ORDER BY SUM_SORT_ROWS DESC;```
4、扫描记录数最多的sql
```sqlSELECT DIGEST_TEXT, SUM_ROWS_EXAMINED, COUNT_STAR, FIRST_SEEN, LAST_SEEN FROM `performance_schema`.events_statements_summary_by_digest ORDER BY SUM_ROWS_EXAMINED DESC;```
5、查看使用临时表最多的sql
```sqlSELECT DIGEST_TEXT, SUM_CREATED_TMP_TABLES, SUM_CREATED_TMP_DISK_TABLES, COUNT_STAR, FIRST_SEEN, LAST_SEEN FROM `performance_schema`.events_statements_summary_by_digest ORDER BY SUM_CREATED_TMP_TABLES desc,SUM_CREATED_TMP_DISK_TABLES desc;```
6、查看返回结果集最多的SQL
降低node版本的方法:首先全局安装n模块;然后通过“n rm v8.16.0”卸载指定的node版本;接着安装nvm;最后通过“nvm use 10.16.2”安装指定版本即可。
本文操作环境:windows7系统、nodejs10.16.2版,DELL G3电脑。
Node版本的升级和降级
在开发的工程中,我们可能需要经常切换node版本来应对不同的开发环境,所以需要经常使用不同版本的node
一、安装npm插件n ,通过n模块来管理node版本
1、全局安装n模块
npm instlal -g n 2、安装当前稳定版本
n stable或者sudo n stable 3、安装最新版本的
n latest或者sudo n latest 4、安装指定版本的node
n v8.16.0 5、卸载指定的node版本
n rm v8.16.0 【推荐:nodejs视频教程】
二、使用nvm管理node版本
1、安装nvm
brew install nvm 2、使用nvm安装node版本
安装最新版本
nvm isntall node 安装指定版本
nvm install 8.16.0 3、查看所有版本
nvm ls 4、切换node版本
使用最新版本
nvm use node 使用指定版本
nvm use 10.16.2 通常我会使用第二种方式
例如:我在一个项目中使用的是
[email protected],新项目使用的是
[email protected],
先要安装
[email protected],nvm install 8.16.0,
然后,nvm use 8.16.0
下载 https://downloads.mysql.com/archives/community/
编译 tar -xf ~/Downloads/mysql-boost-8.0.28.tar.gz cd mysql-8.0.28/ mkdir build cd build/ cmake .. -DCMAKE_INSTALL_PREFIX=/home/XXX/install/mysql/mysql-8.0.28 -DMYSQL_DATADIR=/home/XXX/install/mysql/data -DSYSCONFDIR=/home/XXX/install/mysql/cfg -DDEFAULT_CHARSET=utf8 -DWITH_BOOST=/home/XXX/workspace/tmp/mysql-8.0.28/boost make -j40 make install 启动 参考 mysql 8.0编译安装
# coding: utf-8 from operator import itemgetter from urllib import parse import requests import datetime as dt # import maya import logging logging.basicConfig(filename='harbor_clean.txt', filemode=w, level=logging.INFO) logger = logging.getLogger(__name__) 清理 Harbor 仓库的老镜像 class HarborCleaner(object): delete_status = { 200: Delete tag successfully., 400: Invalid repo_name., 401: Unauthorized., 403: Forbidden., 404: Repository or tag not found., } def __init__(self, user: str, password: str, hostname: str, port: int, use_https=True): scheme = https if use_https else http api_base = f{scheme}://{hostname}:{port}/api self.
<p><iframe name=ifd src=https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_A/aliyunota.html frameborder=0 scrolling=auto width=100% height=1500></iframe></p>
<iframe frameborder=0 height=1500 name=ifd scrolling=auto src=https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_A/aliyunota.html width=100%></iframe>
前言 这节说明一下如何使用阿里云物联网平台的OTA远程升级STM32程序 用户必须已经学习完了基本控制篇里面的阿里云物联网平台教程和看完了(主要是熟悉下流程)自建物联网平台OTA教程. 阿里云物联网平台是通过MQTT获取升级固件的版本,固件大小和下载地址信息. 升级概述 1,实现升级是使用的基础通信里面的Topic 阿里云介绍文档: https://help.aliyun.com/document_detail/85700.html
/ota/device/inform/a1m7er1nJbQ/${deviceName} 设备通过这个主题上报设备的固件版本号,要求设备在连接上服务器以后第一时间上报. 格式:
/ota/device/upgrade/a1m7er1nJbQ/${deviceName} 设备需要订阅这个主题,服务器会通过这个主题下发固件信息 一般在上传新固件以后,在平台上操作以后,平台才会主动下发. size是固件大小; version是服务器固件版本; url是固件下载地址 提示:url虽然给的是https 但是同样可以使用 http 80 端口进行下载, 这个阿里云平台没有强制SSL
{ code: 1000, data: { size: 432945, version: 2.0.0, isDiff: 1, url: https://iotx-ota-pre.oss-cn-shanghai.aliyuncs.com/nopoll_0.4.4.tar.gz?Expires=1502955804&OSSAccessKeyId=XXXXXXXXXXXXXXXXXXXX&Signature=XfgJu7P6DWWejstKJgXJEH0qAKU%3D&security-token=CAISuQJ1q6Ft5B2yfSjIpK6MGsyN1Jx5jo6mVnfBglIPTvlvt5D50Tz2IHtIf3NpAusdsv03nWxT7v4flqFyTINVAEvYZJOPKGrGR0DzDbDasumZsJbo4f%2FMQBqEaXPS2MvVfJ%2BzLrf0ceusbFbpjzJ6xaCAGxypQ12iN%2B%2Fr6%2F5gdc9FcQSkL0B8ZrFsKxBltdUROFbIKP%2BpKWSKuGfLC1dysQcO1wEP4K%2BkkMqH8Uic3h%2Boy%2BgJt8H2PpHhd9NhXuV2WMzn2%2FdtJOiTknxR7ARasaBqhelc4zqA%2FPPlWgAKvkXba7aIoo01fV4jN5JXQfAU8KLO8tRjofHWmojNzBJAAPpYSSy3Rvr7m5efQrrybY1lLO6iZy%2BVio2VSZDxshI5Z3McKARWct06MWV9ABA2TTXXOi40BOxuq%2B3JGoABXC54TOlo7%2F1wTLTsCUqzzeIiXVOK8CfNOkfTucMGHkeYeCdFkm%2FkADhXAnrnGf5a4FbmKMQph2cKsr8y8UfWLC6IzvJsClXTnbJBMeuWIqo5zIynS1pm7gf%2F9N3hVc6%2BEeIk0xfl2tycsUpbL2FoaGk6BAF8hWSWYUXsv59d5Uk%3D, md5: 93230c3bde425a9d7984a594ac55ea1e, sign: 93230c3bde425a9d7984a594ac55****, signMethod: Md5, module: MCU }, id: 1507707025, message: success } /ota/device/progress/a1m7er1nJbQ/${deviceName} 设备可以使用这个主题上报更新进度, 发布的消息格式看下面 /sys/a1m7er1nJbQ/${deviceName}/thing/ota/firmware/get 设备可以使用这个主题主动请求云端固件信息, 详细说明看下面 模组连接 NB-IOT模块安装到第三排排母!
001、
root@PC1:/home/test2# ls a.txt root@PC1:/home/test2# cat a.txt hello world root@PC1:/home/test2# sed 's/\(hello\) \(world\)/\2 \1/' a.txt ## 第一个小括号中的内容用\1表示,第二个小括号中的内容用\2表示 world hello 002、实现第一列和第二列互换
root@PC1:/home/test2# ls a.txt root@PC1:/home/test2# cat a.txt hello world aaaaa bbbbb xxxxx yyyyy root@PC1:/home/test2# sed 's/\(^.*\) \(.*$\)/\2 \1/' a.txt ## 第一个小括号用\1表示,第二个小括号用\2表示 world hello bbbbb aaaaa yyyyy xxxxx 003、
root@PC1:/home/test2# ls a.txt root@PC1:/home/test2# cat a.txt GMM 201 GMM 202 GMM 203 GMM 204 GMM 205 GMM 206 root@PC1:/home/test2# sed 's/\(^.
一。创建异步对象
CompletableFuture 提供了四个静态方法来创建一个异步操作。
runXxxx 都是没有返回结果的,supplyXxx 都是可以获取返回结果的。
可以传入自定义的线程池,否则就用默认的线程池。
二。计算完成时回调方法
whenComplete 可以处理正常和异常的计算结果,exceptionally 处理异常情况。
whenComplete 和 whenCompleteAsync 的区别:
whenComplete:是执行当前任务的线程执行继续执行 whenComplete 的任务。
whenCompleteAsync:是执行把 whenCompleteAsync 这个任务继续提交给线程池来进行执行。
方法不以 Async 结尾,意味着 Action 使用相同的线程执行,而 Async 可能会使用其他线程执行(如果是使用相同的线程池,也可能会被同一个线程选中执行)。
三。handle 方法
和 complete 一样,可对结果做最后的处理(可处理异常),可改变返回值。
四。线程串行化方法
thenApply 方法:当一个线程依赖另一个线程时,获取上一个任务返回的结果,并返回当前任务的返回值。
thenAccept 方法:消费处理结果。接收任务的处理结果,并消费处理,无返回结果。
thenRun 方法:只要上面的任务执行完成,就开始执行 thenRun,只是处理完任务后,执行thenRun 的后续操作
带有 Async 默认是异步执行的。同之前。
以上都要前置任务成功完成。
Function<? super,?extends U>
T:上一个任务返回结果的类型
ArrayList类常用方法 继承体系结构图 构造方法 public ArrayList() //默认Capacity=10 public ArrayList(int initialCapacity) //提供初始容量 提供的范围在0~Integer.MAX_VALUE = 2147483647 之间 public ArrayList(Collection<? extends E> c) //提供一个集合 ArrayList<Integer> arr1 = new ArrayList<>(); ArrayList<Integer> arr2 = new ArrayList<>(20); List<Integer> list = new ArrayList<>(); ArrayList<Integer> arr3 = new ArrayList<>(list); 扩容:每次扩容为原容量的1.5倍
add()添加一个元素 //在最后添加一个元素 public boolean add(E e) { ensureCapacityInternal(size + 1); //每次添加前会判断是否需要扩容 elementData[size++] = e; return true; } //在指定位置添加元素 public void add(int index, E element) { //检查index是否超过数组的长度 rangeCheckForAdd(index); ensureCapacityInternal(size + 1); //将数组从index位置往后移动 System.
总体介绍 基于Seq2Seq的OCR改进文章,提出两个问题,encoder特征间相似度太高导致注意力不准 & RNN-based的结构需要逐个step跑效率太低:
1、 such methods suffer from attention-drift problem because high similarity among encoded features leads to attention confusion under the RNN-based local attention mechanism. 2、RNN-based methods have low efficiency due to poor parallelization.
三个改进,加了2个自注意力机制 & 改进网络结构增强对空间的分辨能力 & 更有效的缓存机制加速:
(1) not only encodes the input-output attention but also learns self-attention which encodes feature-feature and target-target relationships inside the encoder and decoder
(2) learns a more powerful and robust intermediate representation to spatial distortion
SELECT DISTINCT 表示查询结果中,去掉了重复的行 Distinct表示去掉重复的行 limit offset: 一起使用时,limit表示要取的数量,offset表示跳过的数量
select device_id from user_profile limit 2 offset 0 // 跳过0条,从第一条数据开始取,取两条数据 ---运行效率中
select device_id as user_infors_example from user_profile limit 0,2;这里主要是用到了 起别名关键字 as 以及组合限制查询 limit 索引,个数其中as可以省略,索引为0可以省略
as表头重命名 select count(gender) as male_num
2、计数:count函数
3、保留小数位数:round(列名,位数)
4、求平均数:avg函数
select count(gender) as male_num,round(avg(gpa),1)as avg_gpa from user_profile where gender='male'
完整sql:
select count(male) as male_num, round(avg(gpa),1) as avg_gpa from user_profile where gender='male'
条件查询案列(where)
select device_id,university from user_profile where university='北京大学';更具需求,首先知道要北京大学的学生,条件查询案列(where)所有用条件university='北京大学'
1.between 在列值得某与某之间selectdevice_id,gender,age,universityfrom user_profileWHEREage between 20 and 23