当前位置: 首页 > news >正文

MySQL-窗口函数

窗口函数

    • 概念
    • 常用窗口函数
      • 聚合窗口函数
      • 专用窗口函数
    • 语法
      • OVER子句
        • window_spec
        • window_name (命名窗口)
        • partition_clause 分区
        • order_clause 排序
        • frame_clause 范围 (指定窗口大小)
    • 使用限制
    • 练习
      • 准备

概念

窗口函数对一组查询执行类似于聚合的操作。然而,聚合操作将查询行分组为单个结果行,而窗口函数为每个查询行生成一个结果;

查询中的每个窗口操作都通过包含一个OVER子句来表示,该子句指定如何将查询行划分为组以供窗口函数处理:

  • 第一个OVER子句为空,它将整个查询行集视为一个分区。窗口函数因此产生一个全局计算结果,但对每一行都这样做。
  • 第二个OVER子句按对应的分区,生成每个组的计算结果。该函数为每个分组行生成次计算结果

窗口函数只允许在选择列表(类似于需要显示的字段)ORDER BY子句中使用。查询结果行由FROM 子句确定,在WHEREGROUP BYHAVING处理之后,,窗口执行发生在ORDER BYLIMITSELECT DISTINCT之前。

常用窗口函数

聚合窗口函数

  • AVG() – 窗口内平均数
  • COUNT() – 窗口内数据
  • MAX() – 窗口内最大值
  • MIN() – 窗口内最小值
  • SUM() – 窗口内求和

当聚合函数带有OVER()子句是则该函数为聚合窗口函数

专用窗口函数

  • ROW_NUMBER() ---- 行号
  • RANK() · ---- 分区内的排名,有间隙(间隙指同排名会继续往后排)
  • DENSE_RANK() ---- 分区内的排名,没有间隙
  • PERCENT_RANK() ---- 分区内的百分比排名,没有间隙
  • LAG() ---- 分区内向上平移
  • LEAD() ---- 分区内向下平移
  • NTILE() ---- 分区(平均的划分) 得到的当前行是第几桶
  • FIRST_VALUE() ---- 窗口内的第一行
  • LAST_VALUE() ---- 窗口内的最后一行
  • NTH_VALUE() ---- 窗口内第几行的数据

专用窗口函数必须要有OVER()子句

分区与窗口的区别

分区为 partition by 执行过后的所以行 称之为分区 如果没有partition by 则所有行称之为分区

当我们的分区加上了 rows|range 他们指定的范围内的数据称之为窗口

语法

OVER子句

# 有两种形式定义OVER 子句
over_clause:{OVER (window_spec) | OVER window_name}

window_spec

# 以下几个部分都是可选的
window_spec:[window_name] [partition_clause] [order_clause] [frame_clause]

如果OVER() 为空,则分区由所有查询行组成,窗口函数使用所有行计算结果。否则,括号内的子句确认哪些查询行用于计算函数结果以及他们如何分区、窗口和排序:

window_name (命名窗口)

可以定义窗口并为他指定名称,以便在OVER子句中引用它们,使用WINDOW关键字定义,WINDOW子句位于 HAVINGORDER BY之间

WINDOW window_name as(window_spec)[,window_name as (window_spec)]...
SELECTDISTINCT year, country,# 可以继续添加 window_name 中没有的子句FIRST_VALUE(year) OVER (w ORDER BY year ASC) AS first, FIRST_VALUE(year) OVER (w ORDER BY year DESC) AS last
FROM sales
WINDOW w AS (PARTITION BY country);

window_name可以互相引用但是不能循环引用

partition_clause 分区

一个PARTITION BY子句 指示如何将查询行分区。给定行的窗口函数结果基于包含该行的分区的行查询。

如果PARTITION BY忽略,则存在所有查询行组成的单个分区

PARTITION BY 语法
PARTITION BY expr [,expr1] ...

order_clause 排序

order_clause:ORDER BY expr [ASC|DESC] [,expr1 [ASC|DESC]] ...

frame_clause 范围 (指定窗口大小)

frame_clause:frame_units frame_extentframe_units:{ROWS | RANGE}frame_extent:{frame_start | frame_between}frame_between:BETWEEN frame_start AND frame_end
FOLLOWING
frame_start, frame_end: {CURRENT ROW         -- 当前行| UNBOUNDED PRECEDING -- 之前所有含当前行| UNBOUNDED FOLLOWING -- 之后所有含当前行| expr PRECEDING      -- 当前行 之前的expr行 不包含当前行| expr FOLLOWING      -- 当前行 之后的expr行 不包含当前行
}

如果没有 frame_clause 则会取决于order_clause是否存在

  • 存在

    • 则当前分区的开始到当前行 包含当前行

      RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW

  • 不存在

    • 则默认为当前分区的所有行

      RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING

使用限制

  1. 不支持在UPDATE orDELETE中使用
  2. 不允许嵌套窗口

练习

准备

INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (1, '可比克', '食品', 'a', 10, '2022-01-01');
INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (2, '乐事', '食品', 'b', 15, '2022-01-01');
INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (3, '布洛芬', '药品', 'a', 50, '2022-02-11');
INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (4, '999感冒灵', '药品', 'b', 20, '2022-03-01');
INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (5, '连花清瘟胶囊', '药品', 'c', 100, '2022-04-03');
INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (6, '扫把', '日用品', 'b', 10, '2022-05-05');
INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (7, '拖把', '日用品', 'b', 20, '2022-06-01');
INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (8, '口罩', '日用品', 'c', 50, '2022-07-01');
INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (9, '德芙', '食品', 'c', 120, '2022-08-05');
INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (10, '镜子', '日用品', 'c', 55, '2022-09-04');
INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (11, '卫龙', '食品', 'a', 8, '2022-10-01');
INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (12, '方便面', '食品', 'b', 5, '2022-11-01');
INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (13, '阿莫西林', '药品', 'b', 20, '2022-12-11');
INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (14, '青霉素', '药品', 'b', 20, '2022-03-11');
INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (15, '眼药水', '药品', 'c', 15, '2022-04-23');
INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (16, '桌子', '日用品', 'a', 150, '2022-05-15');
INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (17, '凳子', '日用品', 'b', 30, '2022-06-21');
INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (18, '笔', '日用品', 'c', 5, '2022-07-11');
INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (19, '热干面', '食品', 'a', 5, '2022-08-24');
INSERT INTO `test`.`pay_record` (`id`, `goods_name`, `goods_type`, `user_name`, `pay_money`, `pay_time`) VALUES (20, '水壶', '日用品', 'b', 50, '2022-09-27');
+----+--------------------+------------+-----------+-----------+------------+
| id | goods_name         | goods_type | user_name | pay_money | pay_time   |
+----+--------------------+------------+-----------+-----------+------------+
|  1 | 可比克             | 食品       | a         |        10 | 2022-01-01 |
|  2 | 乐事               | 食品       | b         |        15 | 2022-01-01 |
|  3 | 布洛芬             | 药品       | a         |        50 | 2022-02-11 |
|  4 | 999感冒灵          | 药品       | b         |        20 | 2022-03-01 |
|  5 | 连花清瘟胶囊       | 药品       | c         |       100 | 2022-04-03 |
|  6 | 扫把               | 日用品     | b         |        10 | 2022-05-05 |
|  7 | 拖把               | 日用品     | b         |        20 | 2022-06-01 |
|  8 | 口罩               | 日用品     | c         |        50 | 2022-07-01 |
|  9 | 德芙               | 食品       | c         |       120 | 2022-08-05 |
| 10 | 镜子               | 日用品     | c         |        55 | 2022-09-04 |
| 11 | 卫龙               | 食品       | a         |         8 | 2022-10-01 |
| 12 | 方便面             | 食品       | b         |         5 | 2022-11-01 |
| 13 | 阿莫西林           | 药品       | b         |        20 | 2022-12-11 |
| 14 | 青霉素             | 药品       | b         |        20 | 2022-03-11 |
| 15 | 眼药水             | 药品       | c         |        15 | 2022-04-23 |
| 16 | 桌子               | 日用品     | a         |       150 | 2022-05-15 |
| 17 | 凳子               | 日用品     | b         |        30 | 2022-06-21 |
| 18 || 日用品     | c         |         5 | 2022-07-11 |
| 19 | 热干面             | 食品       | a         |         5 | 2022-08-24 |
| 20 | 水壶               | 日用品     | b         |        50 | 2022-09-27 |
+----+--------------------+------------+-----------+-----------+------------+
20 rows in set (0.02 sec)

1.计算每个用户在各类商品的支付金额和所有支付金额

聚合窗口函数我们使用sum()来说明如何使用

SELECT# 利用OVER(partition by) 子句按照用户名分区 计算总金额* , SUM(sum_type_money) over(partition by user_name) as sum_money
FROM# 首先查询出每个用户在各类商品的支付金额 ( SELECT user_name, goods_type, sum( pay_money ) sum_type_money FROM pay_record GROUP BY user_name, goods_type ORDER BY user_name ) a;+-----------+------------+----------------+-----------+
| user_name | goods_type | sum_type_money | sum_money |
+-----------+------------+----------------+-----------+
| a         | 日用品     |            150 |       223 |
| a         | 药品       |             50 |       223 |
| a         | 食品       |             23 |       223 |
| b         | 日用品     |            110 |       190 |
| b         | 药品       |             60 |       190 |
| b         | 食品       |             20 |       190 |
| c         | 日用品     |            110 |       345 |
| c         | 药品       |            115 |       345 |
| c         | 食品       |            120 |       345 |
+-----------+------------+----------------+-----------+
9 rows in set (0.01 sec)

2.计算每个用户购买日用品花费的金额及排名(升序排列)

SELECTuser_name,sum( pay_money ),# 行号ROW_NUMBER() over ( group_goods_type_order_sum_type_money ) AS money_row_number,# 排名 有相同名次的情况 会跳数字RANK() over ( group_goods_type_order_sum_type_money ) AS money_rank,# 排名 有相同名次的情况 不会跳数字DENSE_RANK() over ( group_goods_type_order_sum_type_money ) AS money_dense_rank,# 排名 百分比排名 返回分区内小于当前行值的百分比  (rank - 1) / (rows - 1)PERCENT_RANK() over ( group_goods_type_order_sum_type_money ) AS money_percent_rank 
FROMpay_record 
WHEREgoods_type = '日用品' GROUP BY# WINDOW 定义 命名窗口 上面有重复使用的时候 可以直接引用user_name WINDOW group_goods_type_order_sum_type_money AS (PARTITION BY goods_type ORDER BYsum( pay_money ));+-----------+------------------+------------------+------------+------------------+--------------------+
| user_name | sum( pay_money ) | money_row_number | money_rank | money_dense_rank | money_percent_rank |
+-----------+------------------+------------------+------------+------------------+--------------------+
| b         |              110 |                1 |          1 |                1 |                  0 |
| c         |              110 |                2 |          1 |                1 |                  0 |
| a         |              150 |                3 |          3 |                2 |                  1 |
+-----------+------------------+------------------+------------+------------------+--------------------+
3 rows in set (0.01 sec)

3.查询支付金额排名 占前 30% 的购买记录

SELECT* 
FROM# 把整个分区当做一个组去分成 10 份( SELECT *, NTILE( 10 ) over ( ORDER BY pay_money DESC ) LEVEL FROM pay_record ) a 
WHERELEVEL <= 3+----+--------------------+------------+-----------+-----------+------------+-------+
| id | goods_name         | goods_type | user_name | pay_money | pay_time   | LEVEL |
+----+--------------------+------------+-----------+-----------+------------+-------+
| 16 | 桌子               | 日用品     | a         |       150 | 2022-05-15 |     1 |
|  9 | 德芙               | 食品       | c         |       120 | 2022-08-05 |     1 |
|  5 | 连花清瘟胶囊       | 药品       | c         |       100 | 2022-04-03 |     2 |
| 10 | 镜子               | 日用品     | c         |        55 | 2022-09-04 |     2 |
|  3 | 布洛芬             | 药品       | a         |        50 | 2022-02-11 |     3 |
|  8 | 口罩               | 日用品     | c         |        50 | 2022-07-01 |     3 |
+----+--------------------+------------+-----------+-----------+------------+-------+
6 rows in set (0.00 sec)

4.查询a用户 第二次后面的商品次数、第一次购买商品的时间,及最后一次购买商品的时间

SELECTpay_time,# 窗口内的第2行数据NTH_VALUE( pay_time, 2 ) over ( ORDER BY pay_time rows BETWEEN unbounded preceding AND unbounded following ) twoRow,# 窗口内的第一行数据FIRST_VALUE( pay_time ) over ( ORDER BY pay_time rows BETWEEN unbounded preceding AND unbounded following ) firstRow,# 窗口内的最后一行数据LAST_VALUE( pay_time ) over ( ORDER BY pay_time rows BETWEEN unbounded preceding AND unbounded following ) lastRow 
FROMpay_record 
WHEREuser_name = 'a'+------------+------------+------------+------------+
| pay_time   | twoRow     | firstRow   | lastRow    |
+------------+------------+------------+------------+
| 2022-01-01 | 2022-02-11 | 2022-01-01 | 2022-10-01 |
| 2022-02-11 | 2022-02-11 | 2022-01-01 | 2022-10-01 |
| 2022-05-15 | 2022-02-11 | 2022-01-01 | 2022-10-01 |
| 2022-08-24 | 2022-02-11 | 2022-01-01 | 2022-10-01 |
| 2022-10-01 | 2022-02-11 | 2022-01-01 | 2022-10-01 |
+------------+------------+------------+------------+

# 5.查询两次购买时间间隔最长的天数用户

SELECT*,DATEDIFF( pay_time, following_pay_time ) paytime_diff,RANK() over ( ORDER BY DATEDIFF( pay_time, following_pay_time ) DESC ) paytime_diff_rank
FROM(SELECTuser_name,pay_time,# 分区内当前行的下一行数据lead( pay_time, 1 ) over ( PARTITION BY user_name ORDER BY pay_time desc ) following_pay_time, # 分区内当前行的上一行数据lag( pay_time, 1 ) over ( PARTITION BY user_name ORDER BY pay_time desc)  preceding_pay_time  FROMpay_record ) a limit 1+-----------+------------+--------------------+--------------------+--------------+-------------------+
| user_name | pay_time   | following_pay_time | preceding_pay_time | paytime_diff | paytime_diff_rank |
+-----------+------------+--------------------+--------------------+--------------+-------------------+
| a         | 2022-08-24 | 2022-05-15         | 2022-10-01         |          101 |                 1 |
+-----------+------------+--------------------+--------------------+--------------+-------------------+
1 row in set (0.00 sec)

相关文章:

MySQL-窗口函数

窗口函数概念常用窗口函数聚合窗口函数专用窗口函数语法OVER子句window_specwindow_name (命名窗口)partition_clause 分区order_clause 排序frame_clause 范围 &#xff08;指定窗口大小&#xff09;使用限制练习准备概念 窗口函数对一组查询执行类似于聚合的操作。然而&#…...

【C++设计模式】学习笔记(1):面向对象设计原则

目录 简介面向对象设计原则(1)依赖倒置原则(DIP)(2)开放封闭原则(OCP)(3)单一职责原则(SRP)(4)Liskov替换原则(LSP)(5)接口隔离原则(ISP)(6)优先使用对象组合,而不是类继承(7)封装变化点(8)针对接口编程,而不是针对实现编程结语简介 Hello! 非常感谢您阅读海…...

[测开篇]设计测试用例的方法如何正确描述Bug

​ 文章目录为什么测试人员要写测试用例&#xff1f;怎样设计测试用例&#xff1f;&#xff08;总的方面&#xff09;1.基于需求设计测试用例&#xff08;总的方面&#xff09; 2.页面&#xff08;总的方面&#xff09; 3.非功能性测试&#xff08;具体方面&#xff09; 4.1 等…...

设计模式学习笔记--单例、建造者、适配器、装饰、外观、组合

以下内容根据以下网址及相关视频整理&#xff1a;Android设计模式之单例模式_谬谬清不给我取名字的博客-CSDN博客_android 单例模式 Android设计模式--单例模式的六种实现和单例模式讲解Volatile与Synchronized相关的并发_龙腾腾的博客-CSDN博客_android 单例 volatile java …...

English Learning - Day5 L1考前复习 2023.2.10 周五

English Learning - Day5 L1考前复习 2023.2.10 周五1 单选题&#xff1a;She has the face _________.2 单选题&#xff1a; The goals ________ he fought all his life no longer seemed important to him.3 单选题&#xff1a;Sales director is a position ______ communi…...

C. Prepend and Append

time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Timur initially had a binary string†† s&#xfffd; (possibly of length 00). He performed the following operation several (possibly zero)…...

javassm超市在线配送管理系统

为了解决用户便捷地在网上购物&#xff0c;本文设计和开发了一个超市管理系统。本系统是基于web架构设计&#xff0c;SSM框架 &#xff0c;使用Mysql数据库管理&#xff0c;综合采用JSP模式来完成系统的相关功能。主要实现了管理员与用户的注册与登陆&#xff0c;个人中心、用户…...

Scratch少儿编程案例-多模式贪吃蛇(无尽和计时)

专栏分享 点击跳转=>Unity3D特效百例点击跳转=>案例项目实战源码点击跳转=>游戏脚本-辅助自动化点击跳转=>Android控件全解手册点击跳转=>Scratch编程案例👉关于作者...

谷歌蜘蛛池怎么搭建?Google蜘蛛池可以帮助谷歌排名吗?

本文主要分享关于谷歌蜘蛛池的搭建疑问&#xff0c;以及Google对谷歌排名的影响到底有多大。 本文由光算创作&#xff0c;有可能会被剽窃和修改&#xff0c;我们佛系对待这种行为吧。 谷歌蜘蛛池怎么搭建&#xff1f; 答案是&#xff1a;需要一个内链外链体系复杂的站群系统…...

Kubernetes集群-部署Java项目

Kubernetes集群-部署Java项目&#xff08;SSG&#xff09; k8s部署项目java流程图 第一步 打包制作镜像 打包 java源码&#xff1a; application.properties #在有pom.xml的路径下执行 mvn clean package制作镜像&#xff1a; 将刚才打包后的文件夹传到&#xff0c;装有dock…...

English Learning - Day54 作业打卡 2023.2.8 周三

English Learning - Day54 作业打卡 2023.2.8 周三引言1. 就算你不喜欢喝酒&#xff0c;也请尝一杯吧。2. 便纵有千种风情&#xff0c;更与何人说&#xff1f;——柳永《雨霖铃》 (来&#xff0c;挑战一下古诗词)3. 虽然忙&#xff0c;我也要参加会议。4. 无论发生什么&#xf…...

【Unity题】 1.矩阵旋转,欧拉旋转,四元数旋转各自的优缺点。2.StringBuilder和String的区别

1.矩阵旋转&#xff0c;欧拉旋转&#xff0c;四元数旋转各自的优缺点 矩阵旋转&#xff0c;欧拉旋转&#xff0c;四元数旋转是三种不同的旋转表示方法&#xff0c;下面是它们各自的优缺点&#xff1a; 矩阵旋转&#xff1a; 优点&#xff1a; 1.可以方便地实现复合旋转&…...

【C++面试问答】搞清楚深拷贝与浅拷贝的区别

问题 深拷贝和浅拷贝的区别是面试中的常见问题之一&#xff0c;对于不同的编程语言&#xff0c;这个问题的回答可能稍有差别&#xff0c;下面我们就来探索一下它们之间的异同吧。 先来看看在JavaScript对象的深拷贝与浅拷贝的区别&#xff1a; 浅拷贝&#xff1a;只是复制了…...

day10_面向对象基础

今日内容 零、 复习昨日 一、面向对象的概念 二、面向对象编程 三、内存图 零、 复习昨日 见晨考题 每日一数组题 写一个方法 用于合并两个int类型的数组 合并法则如下 {1,2,5,8,9}{1,3,0}---->{1,2,5,8,9,1,3,0} package com.qf.array;import java.util.Arrays;/*** --- 天…...

电影订票网站的设计与开发

技术&#xff1a;Java、JSP等摘要&#xff1a;随着科技的发展&#xff0c;时代的进步&#xff0c;互联网已经成为了人们生活中不可缺少的一部分&#xff0c;网上购物已然是一种时代的象征。纵观市场&#xff0c;电影行业的发展尤为迅速&#xff0c;电影种类和数量的增多导致客流…...

seata【SAGA模式】代码实践(细节未必完全符合saga的配置,仅参考)

seata SAGA模式&#xff1a; 代码仍然是上一篇AT模式的代码&#xff1a;AT模式 不需要undo_log表 下面开始&#xff1a; 首先&#xff0c;saga模式依靠状态机的json文件来执行整个流程&#xff0c;其中的开始节点的服务即TM&#xff0c;然后状态机需要依靠三张表&#xff0…...

面试题:Java锁机制

java对象包含了三个部分&#xff1a;对象头&#xff0c;实例数据和对齐填充。对象头又存放了&#xff1a;markWord和class point。classpoint &#xff1a;指向方法区&#xff0c;当前对象的类信息数据。markword&#xff1a;存储了很多和当前对象运行时的数据&#xff1a;例如…...

Springboot Web开发

文章目录一. 静态资源访问1. 配置静态资源访问前缀2. 修改默认静态资源存放目录3. Webjars4. 欢迎页支持5. 自定义Favicon二. 请求处理1. 路径变量2. 请求头处理3. 查询字符串处理4. 获取Cookie的值5. 获取请求体的值6. 获取请求域中的数据7. 矩阵变量一. 静态资源访问 只要静…...

分布式事务 | 使用DTM 的Saga 模式

DTM 简介前面章节提及的MassTransit、dotnetcore/CAP都提供了分布式事务的处理能力&#xff0c;但也仅局限于Saga和本地消息表模式的实现。那有没有一个独立的分布式事务解决方案&#xff0c;涵盖多种分布式事务处理模式&#xff0c;如Saga、TCC、XA模式等。有&#xff0c;目前…...

错误代码0xc0000001要怎么解决?如何修复错误

出现错误代码0xc0000001这个要怎么解决&#xff1f;其实这个的蓝屏问题还是非常的简单的&#xff0c;有多种方法可以实现 解决方法一 1、首先使用电脑系统自带的修复功能&#xff0c;首先长按开机键强制电脑关机。 注&#xff1a;如果有重要的资料请先提前备份好&#xff0c;…...

为什么 HTTP PATCH 方法不是幂等的及其延伸

幂等性 首先来看什么是幂等性&#xff0c;根据 rfc2616(Hypertext Transfer Protocol – HTTP/1.1) 文档第 50 页底部对 Idempotent Methods 的定义&#xff1a; Methods can also have the property of “idempotence” in that (aside from error or expiration issues) the…...

13 Day:实现内核线程

前言&#xff1a;我们昨天完成了内核的内存池以及内存管理程序&#xff0c;今天我们要揭开操作系统多任务执行的神秘面纱&#xff0c;来了解并实现一个多任务的操作系统。 一&#xff0c;实现内核线程 在聊线程之间我们先聊聊处理器吧&#xff0c;众所周之现在我们的CPU动不动…...

GPU服务器安装显卡驱动、CUDA和cuDNN

GPU服务器安装cuda和cudnn1. 服务器驱动安装2. cuda安装3. cudNN安装4. 安装docker环境5. 安装nvidia-docker25.1 ubuntu系统安装5.2 centos系统安装6. 测试docker容调用GPU服务1. 服务器驱动安装 显卡驱动下载地址https://www.nvidia.cn/Download/index.aspx?langcn显卡驱动…...

结构体变量

C语言允许用户自己建立由不同类型数据组成的组合型的数据结构&#xff0c;它称为结构体&#xff08;structre&#xff09;。 在程序中建立一个结构体类型&#xff1a; 1.结构体 建立结构体 struct Student { int num; //学号为整型 char name[20]; //姓名为字符串 char se…...

Java 多态

文章目录1、多态的介绍2、多态的格式3、对象的强制类型转换4、instanceof 运算符5、案例&#xff1a;笔记本USB接口1、多态的介绍 多态&#xff08;Polymorphism&#xff09;按字面意思理解就是“多种形态”&#xff0c;即一个对象拥有多种形态。 即同一种方法可以根据发送对…...

九龙证券|一夜暴跌36%,美股走势分化,标普指数创近2月最差周度表现

当地时间2月10日&#xff0c;美股三大指数收盘涨跌纷歧。道指涨0.5%&#xff0c;标普500指数涨0.22%&#xff0c;纳指跌0.61%。 受国际油价明显上升影响&#xff0c;动力板块领涨&#xff0c;埃克森美孚、康菲石油涨超4%。大型科技股走低&#xff0c;特斯拉、英伟达跌约5%。热门…...

【数据库】 mysql用户授权详解

目录 MySQL用户授权 一&#xff0c;密码策略 1&#xff0c;查看临时密码 2&#xff0c;查看数据库当前密码策略&#xff1a; 二&#xff0c; 用户授权和撤销授权 1、创建用户 2&#xff0c;删除用户 3&#xff0c;授权和回收权限 MySQL用户授权 一&#xff0c;密码策略…...

【性能】性能测试理论篇_学习笔记_2023/2/11

性能测试的目的验证系统是否能满足用户提出的性能指标发现性能瓶颈&#xff0c;优化系统整体性能性能测试的分类注&#xff1a;这些测试类型其实是密切相关&#xff0c;甚至无法区别的&#xff0c;例如几乎所有的测试都有并发测试。在实际中不用纠结具体的概念。而是要明确测试…...

C语言(输入printf()函数)

printf()的细节操作很多&#xff0c;对于现阶段的朋友来说&#xff0c;主要还是以理解为主。因为很多的确很难用到。 目录 一.转换说明&#xff08;占位符&#xff09; 二.printf()转换说明修饰符 1.数字 2.%数字1.数字2 3.整型转换字符补充 4.标记 -符号 符号 空格符…...

Zabbix 构建监控告警平台(四)

Zabbix ActionZabbix Macros1.Zabbix Action 1.1动作Action简介 当某个触发器状态发生改变(如Problem、OK)&#xff0c;可以采取相应的动作&#xff0c;如&#xff1a; 执行远程命令 邮件&#xff0c;短信&#xff0c;微信告警,电话 1.2告警实验简介 1. 创建告警media type&…...

网站二级分类/汕头seo快速排名

计算机教学计划信息技术课程是一门特殊比较的学科&#xff0c;操作性较强&#xff0c;大部分学生对此相当感兴趣。 以下是为大家整理的计算机教学计划&#xff0c;希望对你们有所帮助&#xff01;篇一&#xff1a;计算机教学计划本学期我任教11级护理班的计算机应用基础课程教学…...

传销教你做网站/廊坊seo推广公司

1、var 众所周知var用来定义变量 如 undefined,number,string,bool,array,function,object,null。 但有时候为了省事&#xff0c;就会出现一些内存泄露的情况&#xff1a; function fun(){ var ab1;//为了省事直接赋值 }fun(); console.log(a);//undefined; console.log(b);//1…...

开发工具怎么用/吉林seo排名公司

菜鸟到大神的上位历程&#xff0c;即学即用走向人生巅峰&#xff08;参考资料&#xff09; http://www.html5cn.org/article-9447-1.html w3school http://www.w3school.com.cn/html5/index.asp jQuery官网地址 http://jquery.com/ jQuery教程 http://www.runoob.com/jquery/jq…...

wordpress读取图片loading/网络优化工具app手机版

重启网卡 root用户 systemctl restart network非root用户 sudo systemctl restart network...

四川住房和城乡建设厅网站电话/百度指数使用指南

适配器的作用&#xff1a; 计算机是如何连接到局域网上的----通过适配器&#xff08;网卡&#xff09; 适配器上装有处理器和存储器 适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的 而适配器和计算机之间的通信则是通过计算机主板上I/O总线以并行传输方式进行…...

怎样做网站建设/建设网站流程

图片来自WENN/网络卡莉克劳斯 (Karlie Kloss)图片延伸阅读&#xff1a;Karlie Kloss如今都市年轻人群开始关注健康和生活领域&#xff0c;他们积极追求更健康更多彩的生活方式。他们热爱分享健身技巧&#xff0c;关注青年潮流文化&#xff0c;认真选择自己喜欢的城市&#xff0…...