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

深入解析:PostgreSQL 视图与物化视图(View / Materialized View)详解

PostgreSQL 视图与物化视图(View / Materialized View)详解

视图(View)和物化视图(Materialized View)是 PostgreSQL 中非常重要的逻辑表抽象机制,用于简化复杂查询、提升安全性、提高性能。


一、核心概念对比

特性视图(View)物化视图(Materialized View)
数据存储❌ 不存储数据,是“虚拟表”✅ 存储查询结果(物理数据)
查询性能每次查询都执行原始 SQL(实时)查询快(直接查缓存数据),但数据可能过期
数据实时性✅ 实时(总是最新)❌ 需手动或自动刷新(REFRESH)
创建语句CREATE VIEW ... AS SELECT ...CREATE MATERIALIZED VIEW ... AS SELECT ...
刷新机制无需刷新REFRESH MATERIALIZED VIEW [CONCURRENTLY]
是否支持索引❌(不能直接建索引)✅(可建索引加速查询)
是否可更新(可写)✅ 简单视图支持 INSERT/UPDATE/DELETE❌ 不可直接更新(需刷新)
占用存储空间❌ 几乎不占✅ 占用(等于结果集大小)
适用场景简化查询、权限控制、逻辑抽象性能优化、报表、聚合缓存、大数据查询

简单理解:

  • 视图 = 保存的 SELECT 语句(实时执行)
  • 物化视图 = 保存的 SELECT 结果(快照缓存)

一、视图(View)详解


✅ 1. 创建视图

CREATE [OR REPLACE] VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
[WHERE ...]
[GROUP BY ...];

示例:创建员工基本信息视图

CREATE VIEW employee_info AS
SELECT
e.id,
e.name,
e.email,
d.department_name,
e.salary
FROM employees e
JOIN departments d ON e.dept_id = d.id;

✅ 2. 查询视图(和查表一样)

SELECT * FROM employee_info WHERE salary >
8000;

→ PostgreSQL 会自动将此查询“展开”为原始 SELECT 语句执行。


✅ 3. 可更新视图(Updatable View)

如果视图满足以下条件,可直接进行 INSERT/UPDATE/DELETE:

  • 基于单表
  • 不包含 DISTINCT, GROUP BY, HAVING, 聚合函数, 窗口函数, 子查询等
  • SELECT 列表包含主键或唯一键

示例:可更新视图

CREATE VIEW active_employees AS
SELECT id, name, email, salary
FROM employees
WHERE is_active = true;
-- 可直接更新
UPDATE active_employees SET salary = 9000 WHERE id = 1;
-- 实际更新的是 employees 表

✅ 4. 使用 INSTEAD OF 触发器实现复杂视图更新

对于不可自动更新的视图,可通过触发器自定义行为:

CREATE VIEW employee_summary AS
SELECT
d.department_name,
COUNT(*) as employee_count,
AVG(e.salary) as avg_salary
FROM employees e
JOIN departments d ON e.dept_id = d.id
GROUP BY d.department_name;
-- 创建触发器函数
CREATE OR REPLACE FUNCTION update_employee_summary()
RETURNS TRIGGER AS $$
BEGIN
RAISE EXCEPTION '不能直接更新汇总视图';
END;
$$ LANGUAGE plpgsql;
-- 创建 INSTEAD OF 触发器
CREATE TRIGGER tr_employee_summary_update
INSTEAD OF UPDATE OR INSERT OR DELETE ON employee_summary
FOR EACH ROW EXECUTE FUNCTION update_employee_summary();

✅ 5. 删除视图

DROP VIEW IF EXISTS view_name;
-- 示例:
DROP VIEW IF EXISTS employee_info;

✅ 6. 查看视图定义

-- psql 中
\d+ view_name
-- 或 SQL 查询
SELECT definition FROM pg_views WHERE viewname = 'view_name';
-- 或使用系统函数
SELECT pg_get_viewdef('view_name');

二、物化视图(Materialized View)详解

✅ PostgreSQL 9.3+ 支持物化视图


✅ 1. 创建物化视图

CREATE MATERIALIZED VIEW mv_name AS
SELECT ...
[WITH DATA];
-- 默认包含数据,WITH NO DATA 可选(创建空结构)

示例:创建销售汇总物化视图

CREATE MATERIALIZED VIEW sales_summary AS
SELECT
product_id,
product_name,
SUM(quantity) as total_sold,
SUM(amount) as total_revenue
FROM sales
JOIN products USING (product_id)
GROUP BY product_id, product_name
ORDER BY total_revenue DESC;

→ 创建时即执行查询并存储结果


✅ 2. 查询物化视图

SELECT * FROM sales_summary WHERE total_revenue >
10000;

→ 直接读取缓存数据,速度极快


✅ 3. 刷新物化视图

数据不会自动更新,必须手动刷新:

-- 完全刷新(锁表,阻塞查询)
REFRESH MATERIALIZED VIEW sales_summary;
-- 并发刷新(PostgreSQL 9.4+,不阻塞查询,但需有唯一索引)
REFRESH MATERIALIZED VIEW CONCURRENTLY sales_summary;

⚠️ CONCURRENTLY 要求物化视图上至少有一个 UNIQUE 索引(不含 nullable 列)。


✅ 4. 为物化视图创建索引(强烈推荐!)

-- 为并发刷新创建唯一索引
CREATE UNIQUE INDEX idx_sales_summary_product ON sales_summary (product_id);
-- 为常用查询字段创建索引
CREATE INDEX idx_sales_summary_revenue ON sales_summary (total_revenue);

✅ 5. 自动刷新策略(通过定时任务)

物化视图本身不支持自动刷新,但可通过以下方式实现:

方法一:pg_cron 扩展(推荐)

-- 安装扩展(需先启用)
CREATE EXTENSION pg_cron;
-- 每天凌晨2点刷新
SELECT cron.schedule('0 2 * * *', $$REFRESH MATERIALIZED VIEW CONCURRENTLY sales_summary$$);

方法二:操作系统定时任务(crontab / Windows Task Scheduler)

# Linux crontab 示例
0 2 * * * psql -U user -d db -c "REFRESH MATERIALIZED VIEW CONCURRENTLY sales_summary"

✅ 6. 删除物化视图

DROP MATERIALIZED VIEW IF EXISTS mv_name;
-- 示例:
DROP MATERIALIZED VIEW IF EXISTS sales_summary;

✅ 7. 查看物化视图

-- psql 中
\dM -- 列出所有物化视图
\dM+ mv_name
-- SQL 查询
SELECT matviewname, matviewowner FROM pg_matviews;

三、性能对比示例

假设有一个包含百万行销售记录的表:

-- 原始查询(每次执行都要聚合)
SELECT product_id, SUM(amount) FROM sales GROUP BY product_id;
-- 耗时 2.5 秒
-- 创建物化视图后
CREATE MATERIALIZED VIEW mv_sales_agg AS
SELECT product_id, SUM(amount) as total FROM sales GROUP BY product_id;
-- 查询物化视图
SELECT * FROM mv_sales_agg;
-- 耗时 0.01 秒!
-- 刷新(每天一次)
REFRESH MATERIALIZED VIEW CONCURRENTLY mv_sales_agg;
-- 耗时 2.6 秒(后台执行)

查询性能提升 250 倍!


四、使用场景推荐

✅ 何时使用视图(View)?

✅ 何时使用物化视图(Materialized View)?

  • 报表系统(每日/每周汇总)
  • 大数据聚合查询(COUNT, SUM, AVG 等)
  • 数据仓库/BI 场景
  • 高频查询 + 低频更新的数据
  • 需要索引加速的复杂查询结果

五、高级技巧


✅ 1. 增量刷新物化视图(手动实现)

通过记录上次刷新时间,只处理新增数据:

-- 添加 last_refreshed 字段
ALTER TABLE sales ADD COLUMN last_updated TIMESTAMP DEFAULT NOW();
-- 创建增量物化视图(伪代码思路)
CREATE MATERIALIZED VIEW sales_daily_agg AS
SELECT
DATE(sale_date) as sale_day,
SUM(amount) as daily_total
FROM sales
WHERE sale_date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY DATE(sale_date);
-- 刷新时只处理最近一天数据(需自定义函数)

✅ 2. 结合分区表使用

物化视图可基于分区表创建,刷新时只处理最新分区,效率更高。


✅ 3. 监控物化视图状态

-- 查看物化视图是否已加载数据
SELECT matviewname, ispopulated FROM pg_matviews;
-- 查看大小
SELECT schemaname, matviewname, pg_size_pretty(pg_total_relation_size(C.oid)) as size
FROM pg_class C
JOIN pg_matviews M ON C.relname = M.matviewname;

实践任务

请完成以下操作:

  1. 创建一个视图 user_orders,显示用户姓名、邮箱、订单总数、总消费金额
  2. 查询该视图,筛选消费超过 1000 的用户
  3. 创建一个物化视图 monthly_sales_report,按月汇总销售额
  4. 为物化视图创建唯一索引并执行并发刷新
  5. 比较直接查询聚合 SQL 与查询物化视图的性能差异(使用 \timing

✅ 总结对比表

特性视图(View)物化视图(Materialized View)
数据存储❌ 虚拟✅ 物理存储
查询速度⚠️ 取决于原查询复杂度✅ 极快(查缓存)
数据实时性✅ 实时❌ 需刷新
占用空间❌ 几乎无✅ 占用(等于结果集)
可建索引
可更新✅(简单视图)
适用场景逻辑抽象、权限控制性能优化、报表、缓存

相关文章:

深入解析:PostgreSQL 视图与物化视图(View / Materialized View)详解

深入解析:PostgreSQL 视图与物化视图(View / Materialized View)详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier…...

Win11纯净版D盘出现黄色感叹号的问题

有一位雨林木风官网的用户,特别着急的在群里@小编说自己的电脑安装的Win11纯净版系统,发现D盘中有个黄色感叹号,是不是硬盘出问题了。其实这可能是系统中的加密功能BitLocker驱动器加密造成的,接下来,看看ylmf系统小编如何解决这个问题的吧,一起来看看参考一下。 Win11纯…...

nuxt3中useCookie()轻松实现数据存储与安全优化

什么是 Nuxt 3 中的 Cookies 在 Nuxt 3 中,Cookies 可以在服务端和客户端操作。通过 useCookie 组合式函数,Nuxt 提供了一个统一的 API,适用于页面和组件的双端操作 如何设置 Cookies 操作 在 Nuxt 3 中,你无需额外配置或导入即可使用 Cookies。useCookie 是内置的,并且会…...

win11专业版如何设置窗口不叠加的问题

有深度官网win11专业版系统用户,说他的电脑桌面任务栏窗口是叠加状态,多界面的情况下转换也比较麻烦,那如何设置为不叠加状态呢?接下来,就看看深度技术小编分享的处理方法吧。 在 Windows 11 专业版中,可以通过以下方法设置窗口不叠加: 最大化窗口:点击窗口右上角的最大…...

Windows下查看主板序列号命令

wmic baseboard get serialnumber...

范围 for 循环

范围 for 循环(Range-based for loop) 是 C++11 引入的一种简化容器/数组遍历的方式。它通过自动调用容器的 begin() 和 end() 方法,实现对每个元素的遍历,无需手动管理索引或迭代器。在C++中,范围for循环(也称为基于范围的for循环)是一种简洁的方法来遍历容器(如数组、…...

Java开发者无需Python!JBoltAI让AI应用开发像搭积木一样简单

Java开发者无需Python!JBoltAI让AI应用开发像搭积木一样简单在ChatGPT引发的AI浪潮中,全球2000万Java开发者正面临技术代际跃迁的挑战。传统的MVC架构与微服务体系,在自然语言交互、多模态处理等AI原生场景下显得力不从心。作为一名Java老兵,我最初也陷入了深深的焦虑:是否…...

JBoltAI:解锁企业AI应用开发新范式,驱动数智化升级核心引擎

JBoltAI:解锁企业AI应用开发新范式,驱动数智化升级核心引擎在人工智能浪潮席卷全球的今天,企业数智化转型已不再是选择题,而是生存题。据埃森哲全球调研显示,86%的企业高管计划加大在AI或生成式AI领域的投入。然而,技术门槛高、数据安全顾虑、与现有系统融合难等问题,成…...

kmp

模板题:洛谷P3375 code: 前缀函数解法 #include<bits/stdc++.h> using namespace std; const int N=2e6+10; string s,t; int n,m; int pi[N]; int main(){cin>>s>>t;n=s.size();m=t.size();s= +t+#+s;for(int i=2;i<=n+m+1;i++){int j=pi[i-1];while(j…...

黑窗

1.win+R->cmd 2.ipconfig 3.Administrator...

深入解析:机器学习算法之Boosting

深入解析:机器学习算法之Boostingpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; f…...

GW1NSR-4C硬核MCU的硬件SPI问题

在官方库的基础上使用硬件spi时发现,在发送和接收数据时,片选线无法正常拉高拉低。但在测试时发现下面这段代码在地址为0x01时片选线一直为低电平,在0x00或者其他值的时候一直为高电平。SPI_Select_Slave(0x00); //Select SPI slave于是将这段代码作为片选线的控制语句,…...

NKOJ全TJ计划——NP11793

题目内容 33DAI 进入了一个\(n\)行\(n\)列的二维数组。数组中每个位置都有一只羊,第\(i\)行第\(j\)列的羊的重量是\(a_{i,j}\)。 33DAI 一开始在\(a_{1,1}\)的位置,每次可以往右一步或者往下一步。即可以从\(a_{x,y}\)走到\(a_{x+1,y}\)或者\(a_{x,y+1}\)。但是不能走出这个数…...

Python天猫订单数据与日化商品销售数据RFM模型应用可视化分析

全文链接:https://tecdat.cn/?p=43860原文出处:拓端抖音号@拓端tecdat分析师:Jiaxin Yao在电商行业快速发展的背景下,订单数据与商品销售数据已成为企业优化运营、提升效益的核心资产。通过对这些数据的深度分析,不仅能挖掘销售趋势、地区消费差异,还能精准识别客户价值…...

JBoltAI重塑智能检索:问题重写与混合检索如何破解企业RAG应用瓶颈

JBoltAI重塑智能检索:问题重写与混合检索如何破解企业RAG应用瓶颈当前,生成式AI技术正在席卷全球各行业。然而,传统RAG系统在实际部署中面临两大核心痛点:查询意图理解偏差和检索召回率低下。这直接导致企业AI应用效果不尽如人意——要么找不到正确答案,要么生成的内容与实…...

Springcloud Alibaba从入门到入土(一)

一、什么是微服务微服务是一种架构风格,代表一种通过将应用程序拆分为一个个小型的、独立的功能模块(服务)的开发方式。 每个模块(服务)实现独立的业务功能(不限制开发语言),服务之间通过轻量化的通信机制(HTTP、REST、消息队列)进行交互 微服务架构的核心思想是解耦…...

JBoltAI函数调用技术:自然语言即可查询数据库,重构企业数据交互方式

JBoltAI函数调用技术:自然语言即可查询数据库,重构企业数据交互方式AI正在重构企业数据交互方式在当今数据驱动的商业环境中,企业数据库里沉淀着大量宝贵信息:客户行为、销售趋势、运营效率等关键洞察。然而,这些数据的获取却长期依赖技术团队编写SQL查询,形成了业务与数…...

JBoltAI文档提取技术:企业智能升级的数据解锁之道

JBoltAI文档提取技术:企业智能升级的数据解锁之道企业数字化转型的下一站:从“数据沉淀”到“价值提取”当前,全球企业正从“数字化转型”迈入“智能化升级”的关键阶段。据《中国企业智能化升级报告2025》显示,83%的中大型企业表示,数字化后的“数据孤岛”、“流程割裂”…...

题解:CF645B Mischievous Mess Makers

Solution 为了让逆序对数量尽量多,每次要交换 \(i\) 和 \(n - i + 1\),然后把每一次的结果累加起来,答案就是 \(\sum_{i=1}^{\min\left(\lfloor{\frac{n}{2}}\rfloor,k\right)}\left(2 \times \left(n - i + 1\right) + 1\right)\)。 Code 完整代码如下 #include <bits/st…...

题解:CF1076C Meme Problem

Solution 由韦达定理得,因为 \(a + b = d\) 且 \(a \times b = d\),所以 \(a\),\(b\) 就是方程 \(x^2 - d \times x + d = 0\) 的实数根,只要判断方程有无实根就可以了。 Code 完整代码如下 #include <bits/stdc++.h> using namespace std; double d; int main() {in…...

视频讲解|Python用ResNet残差神经网络在大脑出血CT图像描数据预测应用

全文链接:https://tecdat.cn/?p=43843原文出处:拓端抖音号@拓端tecdat分析师:Zikun Zhang视频讲解Python用ResNet残差神经网络在大脑出血CT图像描数据预测在临床医疗影像诊断中,大脑出血的快速准确识别直接关系到患者的救治效率——CT影像作为常用检查手段,传统人工阅片不…...

题解:CF1188A1 Add on a Tree

Solution 我们可以先计算每个节点的度。 若 \(deg_i = 1\),只有一条边,可以变成任意值。 若 \(deg_i = 2\),两条边会同时加上一个任意实数,但如果要求这两条边不相等,就无法做到。 若 \(deg_i \ge 3\),以 \(deg_i = 3\) 为例,可以先把这三条边的边权变为 \(0\),然后就可…...

CSP-S 9.9

赛时: 6:00:发题,一眼不会 BCD 6:03:一眼秒了 A,快速写了一个线段树,然后发现可以用树状数组,最后发现直接记录最大值和次大值就可以了。 6:10:写完了,发现恶心大样例: 1 999999胡:你就说满不满足子任务 2 吧。 好吧完全不拍,直接写 T3。 8:30:想到了一个伪正解:…...

250913 课堂笔记

0 1 CF1147E 2 CF1007C 3 CF750F 4 CF1129E 5 P9601 6 P5208 7 CF1292E 8 CF1924F 9 P13535 10 CF1991I本文来自博客园,作者:cwkapn,转载请注明原文链接:https://www.cnblogs.com/cwkapn/p/19088845...

NKOJ全TJ计划——NP11792

题目内容 33DAI 最近喜欢玩《骑马与砍杀 2》,他正领导着一支\(n\)人的小队(保证\(n\)是偶数),小队成员编号\(1\backsim n\)。他们中编号为 \(i\)的成员(\(1\le i\le \frac{n}{2}\) )与编号为\(i+\frac{n}{2}\)的成员互为朋友关系。 为了掩护主力撤退,他决定选择其中\(k\…...

求加小红书

一定回关 因为现在小白实力较小,没那么多粉丝,希望可以成为一名大主播,希望大家支持,谢谢!这个家伙很懒,什么也没有留下 🐾...

Ubuntu 修改 Git 的编辑器为 Vim

使用命令行 git config --global core.editor vim 可以为所有仓库全局指定 Git 的编辑器为 Vim。 修改之前:修改之后:...

完整教程:Photo Lab PRO 图片编辑器 功能解锁版

完整教程:Photo Lab PRO 图片编辑器 功能解锁版pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace …...

编辑功能查询问题解决

问题点: 报错:“System.InvalidCastException”类型的异常在 System.Data.dll 中发生,但未在用户代码中进行处理 其他信息: 指定的转换无效。解决方法: 修改前的代码示例public AccessoryInfo GetInfo(Int32 accessoryId){AccessoryInfo entity = null;SqlParameter[] parm…...

Ubuntu 18.04 虚拟机 VScode无法正常输入中文解决办法

小问题,咱们速战速决问题描述或者其实就是安装的Ubuntu版本太旧了,依赖包的版本不支持VScode安装。如果不想升级Ubuntu,那找一个旧版本VScode安装包就行。这里是旧版本VScode,旧版本合集 推荐在Ubuntu的浏览器中打开并下载,如图点击.deb当然,也可以用Windows系统下载,能…...

manacher算法

模板题:洛谷p3805 code: #include<iostream> #include<algorithm> using namespace std; const int N=2.2e7+10; string t,s; int m,n; int d[N]; int main(){cin>>t;m=t.size();s+= ;for(auto ch: t){s+=#;s+=ch;}s+="##";n=s.size()-2;d[1]=1;i…...

[能源化工] 面向锂电池RUL预测的开源项目全景速览

锂离子电池是新能源汽车、储能系统及便携式电子设备的核心能源部件,其剩余使用寿命(Remaining Useful Life,RUL)的准确预测直接关系到设备运行安全、维护成本优化和能源效率提升。RUL预测算法能够提前量化电池剩余可用时间,是保障新能源汽车与储能系统安全稳定运行、降低突…...

源码app陪玩,React技巧之发出http请求 - 云豹科技

源码app陪玩,React技巧之发出http请求总览在React中,通过点击事件发出http请求:1、在元素上设置onClick属性。2、每当元素被点击时,发出http请求。3、更新state变量,并重新渲染数据。如果你使用axios,请向下滚动到下一个代码片段。import {useState} from react;const Ap…...

qoj1847 Elephants

题意 有一个长度为 \(n\) 的 \(01\) 数组 \(a\)。 给出 \(q\) 组限制条件,第 \(i\) 组给出大小为 \(k_i\) 的集合 \(C_i=\{x_{i,1},x_{i,2},\cdots,x_{i,k_i}\}\)。若 \(cnt_0\) 为 \(\{x|x\in C_i,a_x=0\}\) 的集合大小,\(cnt_1\) 为 \(\{x|x\in C_i,a_x=1\}\) 的集合大小,…...

p4085

洛谷p4085 题目链接 首先想怎么计算一个区间的风味和辣度;风味是区间内的风味总和,可以用前缀和处理;辣度是区间最大值,可以用ST表处理; 处理完ST表和前缀和之后考虑怎么求答案,可以考虑二分查找前缀和满足风味要求的最小值,然后列举后面的所有情况求最小; 代码: #inc…...

Excel甘特图 - 教程

Excel甘特图 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: 14px…...

基于ArcGIS的通用界址点导入导出工具设计与实现

# 基于ArcGIS的通用界址点导入导出工具设计与实现最近在开发一个兼容 **ArcGIS Desktop** 和 **ArcGIS Pro** 的通用界址点数据导入导出工具。在实际项目中,界址点虽然有国家标准规范,但各地的实际应用需求差异较大,导致格式五花八门:- 有的地方要求包含 **9个属性字段**;…...

python 函数作用域

对于 python 中的全局变量,在函数体内只能访问,不可修改。若想修改则需要用 global 关键字声明。 eg:c = 1 def f():print(c)f() # 可执行c = 1 def g():global c # 在函数体内修改全局变量,需要声明c += 1print(c)g()定义在函数体内的函数,称为“闭包”。与全局变量原理一…...

基于Python+Vue开发的鲜花商城管理系统源码+运行

项目简介该项目是基于Python+Vue开发的鲜花商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的鲜花商城管理系统项目,大学生可以在实践中学习和…...

Idea win 快捷键大全

转载自:https://www.cnblogs.com/chuangzhijian/p/8477220.html Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[ OR ],可以跑到大括号的开头与结尾Ctrl+F12,可以显示…...

文献阅读 | AutoCodeBench

AutoCodeBench:大型语言模型是自动代码基准生成器 - AI论文精选 解决大模型标注困难的问题,可自动生成高难度多语言代码生成数据集TRANSLATE with xEnglishArabic Hebrew PolishBulgarian Hindi PortugueseCatalan Hmong Daw RomanianChinese Simplified Hungarian RussianC…...

【ARM Cache 及 MMU 系列文章 6.5 -- 如何进行 Cache miss 统计?】

ARM Cache Miss 统计 在ARMv8/v9架构中,缓存未命中(Cache Miss)的统计对于性能调优和系统分析至关重要。缓存未命中意味着处理器尝试从缓存中读取数据时没有找到,因此不得不从更低速的存储(如L2缓存或主内存)中加载数据,这会导致延迟增加和性能下降。理解和分析缓存未命…...

VSCode+neovim工作环境快速构建

环境系统:Windows 代码编辑器:VSCode 插件:vscode-neovim、clangd目的 为了减少右手趴鼠标上的时间,所以根据以下目标给出一份最简洁的配置方案:窗口跳转:<C-w>+ h j k l 标签页跳转:H L 终端打开\关闭: <C-`> 相对行号 引用跳转(Go to Define): gd 模式切…...

25.9.12随笔联考总结

考试 通读题面,感觉只能顺序开题。T1 做了 40 多分钟,感觉这个题比之前的要难一点;T2 很快找到一些性质,但是最后一个东西似乎不太能做,于是就花了好一会去想,但是还是没想出来。最后只写了暴力。T3 看着就很不可做,想了一会没找到啥性质。T4 是串串计数题,因为计数做少…...

macos

调节鼠标熟读 defaults write -g com.apple.mouse.scaling 6...

0912模拟赛总结

这次比赛T1没有注意 DP 初始化少了 30 分,T4把 \(m\) 写成 \(n\) RE 了,少了85分,所以一定要自己造极限数据,同时要把题目里面的变量改成自己的习惯。后面在对拍的时候一直在改T1,忽略了 -inf 和 0 是有区别的,后者可以转移出不存在的状态。这几次考试都反映出大样例是很…...

Java基础程序设计

Java基础程序设计Day02 关键字和保留字的含义: 关键字被Java语言赋予了特殊含义,用做专门用途的字符串(单词)(关键字特点字母都为小写),保留字不能被用作标识符来使用goto、const,保留字不能作为标识符来命名。 标识符:凡是需要起名字的地方都叫标识符 定义标准:标识符的命名规…...

CF482C Game with Strings

比较具有启发意义的题目。 首先看到 \(m \le 20\),我们第一个想到的就是状压 DP,设 \(f_i\) 为选取位置集合为 \(i\) 时期望多少步确定,显然转移是简单的,比较困难的地方在当 \(i\) 唯一确定一个串(这个串需要你枚举出来)时,\(f_i = 0\),而这一步需要 \(O(nm2^m)\) 的复…...

相机标定

为保证单目相机在全站仪融合定位中的精度,需要进行相机标定以获得准确的内参和畸变参数。 内参矩阵 (K):描述了相机自身的几何属性,与相机的位置和姿态无关。f_x, f_y: 以像素为单位的焦距,与物理焦距和图像传感器密度有关。c_x, c_y: 主点坐标,通常是图像的中心(或附近)…...

深度学习隐私测试框架PrivacyRaven全面解析

PrivacyRaven是专为深度学习系统设计的隐私攻击测试套件,支持模型提取、成员推理和模型反演三大攻击类型,通过模块化设计实现高效隐私测试,帮助研究人员评估系统安全性。PrivacyRaven Has Left the Nest - The Trail of Bits Blog Suha S. Hussain, Georgia Tech October 08…...