Other

mysql千万级分页查询SQL优化

场景 某后台的功能列表,页面底部为通用分页:总条数: 16209321 页码:1 2 3 4 5 .... 9819页面默认展示 10 条数据,默认展示条数可选。页面上部分搜索区域部分有多达 20-30 的筛选条件,筛选条件分别来自于不下 10 张数据表。 拿订单列表查询举例,可以使用用户表里的某个特殊字段进行筛选,如性别等,这些字段肯定不会在订单表存储,所以必然会进行联表。使用者常常有疑问: 为何页面只有 10 条数据,查询却如此之慢?老板会质疑你,做的是什么玩意?查询 10 条数据都要 1 分钟以上的时间?(优化前页面需要转 1 分钟才可显示出数据,页面转圈圈~) 这个功能对应的是后台的一个千万级别的大表,未分库分表,目前的数据量为13755695,分页查询使用到了limit,优化之前的查询耗时30 s,按照下文的方式调整SQL后,耗时800 ms; 关于分页的优化 使用limit分页时的MySQL并不是跳过offset行,而是取offset+N行,然后返回放弃前offset行,返回N行,那当offset特别大的时候,效率就非常的低下,要么控制返回的总页数,要么对超过特定阈值的页数进行SQL改写。【阿里巴巴JAVA开发手册】 select * from big_table where data_type in (1,2) limit 1000000,10; ## 耗时:39.23s 分页查询优化方式 1.基于主键ID实现查询优化分页查询优化 select * from big_table where id > (select id from big_table where data_type in (1,2) limit 1000000,1) limit 10; ## 耗时:0.716s 优化缺陷:如果主键不是自增长的(如uuid方式),则此方法失效;如果查询要求中需要针对一些字段进行过滤查询,如big_table中有一个data_type的字段,取值范围1,2,3。现在在查询中我们固定使用1,2进行查询,那么此方法也会失效,因为你根据条件筛选出最大的id后,后面10个数据,不一定都是你想要的,可能包含data_type=3的数据。 2.基于主键ID实现查询优化分页查询优化 select * from big_table a inner join (select id from big_table where data_type in (1,2) limit 1000000,10) b on a.

【C# XML】DOM级别

DOM级别 文章来源:https://www.cnblogs.com/liuyuanfang/p/13893324.html DOM1  DOM1级由两个模块组成:DOM核心(DOM CORE)和DOM HTML。其中,DOM核心规定的是如何映射基于XML的文档结构,以便简化对文档中任意部分的访问和操作。DOM HTML模块则在DOM核心的基础上加以扩展,添加了针对HTML的对象和方法。  总结:DOM1主要定义的是HTML和XML文档的底层结构。  DOM2  DOM2级在原来的DOM基础上又扩充了鼠标和用户界面事件、范围、遍历(迭代DOM文档方法)等细分模块,通过对象接口增加了对CSS的支持。  DOM2核心(DOM Core):在1级核心基础上建设,为节点添加了更多方法和属性。  DOM2HTML(DOM HTML):在1级html基础上,添加了更多属性、方法和新接口。  DOM2新引入模块:  DOM2视图(DOM Views):为文档定义了基础样式信息的不同信息。  DOM2事件(DOM Events):说明了如何使用事件与DOM文档交互,比如addEventListener()和removeListener()。DOM事件流发生在此阶段。  DOM2样式(DOM Style):定义了如何以编程方式来访问和改变CSS样式信息。  DOM2遍历和范围(DOM Traversal and Range):引入遍历DOM文档和选择其特定部分的接口。  DOM3  DOM3引入了以统一方式加载和保存文档的方法,即在DOM加载和保存(DOM Load and Save)模块中进行定义。  新增了验证文档方法,即在DOM验证(DOM Validation)模块中定义。  同时DOM3级也对DOM核心进行了扩展,开始支持XML1.0规范。  注: 1、DOM2和DOM3级的目的在于扩展DOM API。DOM2核心并没有引入新类型,只在DOM1的基础上通过增新方法和新属性来增强已有类型。DOM3核心既增强已有类型,也引入了一些新类型。 2、DOM0级标准是不存在的,所谓DOM0级只是DOM历史坐标中一个参照点而已。具体来说,DOM0级指的是IE4和Netscape Navigator4.0最初支持的DHTML。  C# XmlDocument实现了DOM1级 core、DOM2级 core、DOM3级  

pip换源

记录下换源网站:https://blog.csdn.net/ghost55565/article/details/119322647 还有个官方的源(虽然有点慢也记录下): https://pypi.Python.org/simple/

spring Boot 相关问题以及修复(后续待补充)

1.application.properties文件不起作 原因:因为重构项目,启动的子工程是重新建立的项目。 解决:打开Project Structure 配置,选择启动子工程,加入Spring, 如下:  2.错误异常 springfox.documentation.common.ClassPresentInClassPathCondition :java.lang.ClassNotFoundException  原因:pom文件有冲突  

详解在Linux中同时安装配置并使用 MySQL5.7 和 MySQL8.0

最近需要使用mysql8.0版本,但是原本的mysql5.7版本已经被多个服务依赖,于是想想能不能同一台服务器装多个版本的mysql,一查确实可行,这里做一个记录方便自己后期回忆 阅读本文前请注意!!! 本文是帮助您建立在mysql5.7版本已经安装完成并在运行中,另外安装配置mysql8.0版本 如果需要同时安装两个版本,可以先查阅我之前所写关于mysql5.7版本的安装,完成后再按本文继续操作即可 安装环境 CentOS7 + MySQL8.0 下载安装包 点击进入MySQL Community Server 8.0.29 官网下载地址 点击下拉选择 Linux - Generic,找到名为 mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz 点击下载即可 简化版命令步骤 给我自己的提醒:原来的mysql5.7配置基本没有动,服务也没有关,下面的命令都是关于mysql8.0的,原mysql5.7的配置文件在/etc/my.cnf 解压xz文件为tar文件,注意命令无过程显示需要等待窗口跳至下一行 xz -d /usr/soft/sort/mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz -C /usr/soft/sort/ tar -xvf /usr/soft/sort/mysql-8.0.29-linux-glibc2.12-x86_64.tar -C /usr/soft/install/ 赋予权限 chown -R mysql.mysql /usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64 修改配置文件 vi /usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/my.cnf[client] port=3307 # mysql57 不要这个 mysqlx_port=33070 socket=/tmp/mysql80.sock # mysql57 不要这个 mysqlx_socket=/tmp/mysqlx80.sock [mysqld] # skip-grant-tables # mysql安装目录 basedir=/usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64 # mysql数据库目录 datadir=/usr/soft/install/mysql-8.0.29-linux-glibc2.12-x86_64/data port=3307 innodb_file_per_table=1 character-set-server=utf8 # mysql57 不要这个 mysqlx_port=33070 socket = /tmp/mysql80.

2022DASCTF X SU 三月春季挑战赛 easyre

2022DASCTF X SU 三月春季挑战赛 easyre 前奏 查壳 查壳,asp壳,esp定律脱之,修复可以看我的上一篇文章 main函数 main函数的反汇编代码 int __cdecl main(int argc, const char **argv, const char **envp) { unsigned __int8 Dest[50]; // [esp+1Ch] [ebp-74h] BYREF char Str[50]; // [esp+4Eh] [ebp-42h] BYREF __time32_t Time; // [esp+80h] [ebp-10h] BYREF int v7; // [esp+84h] [ebp-Ch] int v8; // [esp+88h] [ebp-8h] struct tm *v9; // [esp+8Ch] [ebp-4h] sub_40DCF0(); time(&Time); v9 = gmtime(&Time); sub_47C7D0((int)&dword_487F00, Str); if ( strlen(Str) != 42 ) { sub_47BAB0((int)&dword_488140, aWrong); exit(0); } if ( Str[0] !

100-CH32V307(WCH单片机)学习开发-GPIO电平检测,引脚中断

<p><iframe name=ifd src=https://mnifdv.cn/resource/cnblogs/LearnCH32V307VCT6 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/LearnCH32V307VCT6 width=100%></iframe>  在GPIO设置为输出的状态下读取GPIO电平 1,控制PD3 输出高低电平,并打印其引脚状态(把以下程序直接拷贝到自己工程运行) #include debug.h #include ch32v30x.h #define GPIO_PORT (GPIOD) #define GPIO_PIN (GPIO_Pin_3) #define GPIO_SET (GPIO_SetBits(GPIO_PORT, GPIO_PIN)) //输出高电平 #define GPIO_RESET (GPIO_ResetBits(GPIO_PORT, GPIO_PIN)) //输出低电平 #define GPIO_INPUT (GPIO_ReadOutputDataBit(GPIO_PORT, GPIO_PIN)) //获取输入电平 #define GPIO_TOGGLE (GPIO_WriteBit(GPIO_PORT, GPIO_PIN, 1-GPIO_INPUT)) //输出翻转 #define GPIO_RCC_ENADLE (RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE)) //打开时钟线 /** * @brief init * @param * @param None * @param None * @retval None * @example **/ void gpio_init(void) { GPIO_InitTypeDef GPIO_InitStructure; GPIO_RCC_ENADLE; //启动GPIO的时钟线,让时钟进去以驱动其GPIO GPIO_InitStructure.

【LOLHunter】【教程】怎么使用远程监控功能

通过饭碗警告平台可以实现将脚本的一些运行状态实时发送给手机,比如挂机结束,脚本运行出现异常等。并且这是免费的。 饭碗警告官网:https://fwalert.com/ 配置教程: 1. 注册饭碗警告账号以及下载饭碗警告APP  2. 绑定饭碗警告APP(使用饭碗警告APP扫码)  3. 创建转发规则 >>通知正文内填写:{{message}}  4. 获取触发地址并设置到脚本中  5. 都设置完成后可以点击软件中的 发送测试消息,看看饭碗警告APP是否能正常收到。 如果可以收到就代表配置正确,之后脚本运行的信息就可以通过饭碗警告APP通知到手机了! 手机端效果:  

hrsc2016数据集xml格式转换为yolo格式,附下载链接

数据集介绍 数据集背景: HRSC2016数据集 包含27种类型的遥感地物目标 提取自Google Earth 由西北工业大学于2016年发布 采用oriented bounding boxes(OBB)标注格式 HRSC2016 (Liu et al.,2016)是西北工业大学采集的用于轮船的检测的数据,包含4个大类19个小类共2976个船只实例信息。论文中特别指出他们的数据集是高分辨率数据集,分辨率介于0.4m和2m之间。数据集所有图像均来自六个著名的港口,包括海上航行的船只和靠近海岸的船只,船只图像的尺寸范围从300到1500,大多数图像大于1000x600。 数据集类别说明 本数据集中目标为航拍图像下的船只,包括海上船只与近岸船只。作者在对船只模型进行分类时采用 了高度为3的树形结构,L1层次为Class、L2层次为category、L3层次为Type,类似生物学的分类观点,具体表示如下: 样本标注信息 HRSC2016采用OBB(oriented bounding box)的标注方法,提供了三类标注信息,包括bounding box、rotated bounding box和pixel-based segmentation,还包括港口、数据源、拍摄时间等额外信息,部分数据标注展示如下: <HRSC_Image> <Img_CusType>sealand</Img_CusType> <Img_Location>69.040297,33.070036</Img_Location> <Img_SizeWidth>1138</Img_SizeWidth> <Img_SizeHeight>833</Img_SizeHeight> <Img_SizeDepth>3</Img_SizeDepth> <Img_Resolution>1.07</Img_Resolution> <Img_Resolution_Layer>18</Img_Resolution_Layer> <Img_Scale>100</Img_Scale> <segmented>0</segmented> <Img_Havemask>0</Img_Havemask> <Img_Rotation>274d</Img_Rotation> <HRSC_Objects> <HRSC_Object> <Object_ID>100000008</Object_ID> <Class_ID>100000013</Class_ID> <Object_NO>100000008</Object_NO> <truncated>0</truncated> <difficult>0</difficult> <box_xmin>628</box_xmin>//bounding box坐标点 <box_ymin>40</box_ymin> <box_xmax>815</box_xmax> <box_ymax>783</box_ymax> <mbox_cx>719.9324</mbox_cx>//旋转后的左上角坐标 <mbox_cy>413.0048</mbox_cy> <mbox_w>741.8246</mbox_w> <mbox_h>172.6959</mbox_h> <mbox_ang>1.499893</mbox_ang>//旋转角度 <segmented>0</segmented> <seg_color> </seg_color> <header_x>713</header_x>//船头部信息 <header_y>777</header_y> </HRSC_Object> </HRSC_Objects> </HRSC_Image> 数据图像示例 这里先上代码 import xml.etree.ElementTree as ET import pickle import os from os import listdir, getcwd from os.