✅ 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)?
- 简化复杂 JOIN 查询
- 限制用户访问敏感列(列级权限控制)
- 提供统一接口,屏蔽底层表结构变化
- 逻辑数据分组(如“活跃用户”、“VIP客户”)
✅ 何时使用物化视图(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;
实践任务
请完成以下操作:
- 创建一个视图
user_orders
,显示用户姓名、邮箱、订单总数、总消费金额 - 查询该视图,筛选消费超过 1000 的用户
- 创建一个物化视图
monthly_sales_report
,按月汇总销售额 - 为物化视图创建唯一索引并执行并发刷新
- 比较直接查询聚合 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…...