山东大学计算机图形学期末复习12——CG13下
CG13下
BSP树
-
BSP (Binary Space Partition)表示二叉空间分割。
使用这种方法可以使我们在运行时使用一个预先计算好的树来得到多边形从后向前的列表,它的复杂度为O(n)。
它的基本思想是基于这样一个事实:任何平面都可以将空间分割成两个半空间。
所有位于这个平面的一侧的点定义了一个半空间,位于另一侧的点定义了另一个半空间:
-
k-d树(k-dimensional tree),用于近邻搜索(Nearest Neighbor Search, NNS):
- k-d树:
- 一种二叉空间划分树,按坐标轴递归划分空间(通常交替使用x、y轴)。
- 常用于存储点集,支持高效的近邻查询。
- 近邻搜索:
- 给定查询点,找到距离最近的点或k个最近点。
- 应用:碰撞检测、渲染优化(如光子映射)。
- k-d树:
锯齿效应(Aliasing)及其抗锯齿技术
一、锯齿效应的来源与问题本质
1. 什么是锯齿效应(Aliasing)?
- 在图形学中,连续几何体(如直线、边缘、多边形)在映射到离散像素网格时,由于采样不充分,边缘表现为阶梯状,这就是锯齿。
- 原因:
- 光栅化采用“点采样”,例如对每个像素中心采样一次,无法反映线条/边缘实际覆盖的范围。
- 特别是斜线、多边形边缘容易暴露这种“走格子”效果。
2. 锯齿效应的数学解释(频率域理解)
- 在频率域,图像信号含有高频成分(如边缘)。
- 如果采样率不足(违反奈奎斯特定理),高频会“混叠”到低频区,造成视觉误差(aliasing)。
- 显示设备的分辨率越低,混叠越明显。
二、抗锯齿的核心思想:从点采样到区域平均
3. 点采样 vs 区域平均
- 点采样:每个像素只在中心采样一次(默认的 OpenGL 行为),会忽略边缘穿越像素区域的真实比例,产生锯齿。
- 区域平均(Area Averaging):
- 理想情况应计算每个像素区域中被线条/多边形实际覆盖的面积(即 f(x, y) 在该像素内的积分均值)。
- 将这个面积映射为颜色强度(灰度/混合色)。
4. 区域平均实现方法
-
理论方法:将图形函数与一个单位方框滤波器做卷积(模糊),再在像素中心采样。相当于:
像素值 = 1 面积 ∬ 像素区域 f ( x , y ) d x d y \text{像素值} = \frac{1}{\text{面积}} \iint_{\text{像素区域}} f(x, y) dxdy 像素值=面积1∬像素区域f(x,y)dxdy -
实际问题:这种积分通常难以解析求解,因此采用数值近似法 —— 这就引出了“超采样”。
三、抗锯齿技术实现方式
5. 预滤波(Pre-filtering)方法
- 思想:在采样前去除高频分量(低通滤波)。
- 具体实现:
- 将图像信号与模糊核(如方框、Gaussian)做卷积。
- 在像素中心采样卷积结果(相当于区域平均)。
- 效果显著好于点采样,但计算开销大,GPU 不易实现。
6. 超采样(Supersampling)与 MSAA(Multisample Anti-Aliasing)
- 超采样:
- 在每个像素内的多个位置(如4×4子像素)进行采样。
- 对这些样本求平均值,作为最终像素值。
- 模拟区域平均,但是离散近似。
- MSAA:
- 对每个像素仅采样颜色属性的覆盖率(geometry coverage),而不是完整执行着色器。
- 是硬件加速的超采样版本,效率更高。
- 优缺点:
- 优:显著提升图像质量,边缘平滑。
- 缺:成本高,帧缓冲区更大,着色器可能被重复调用。
四、多边形和透明区域的抗锯齿挑战
7. 多边形抗锯齿问题
- 多边形边缘的离散化特别容易造成锯齿,尤其在:
- 多边形小于一个像素时直接丢弃。
- 多边形边缘没有覆盖整个像素导致走样。
- 合成(Compositing)解决方案:
- 一个像素可以被多个多边形部分覆盖。
- 需要根据覆盖率+透明度α来混合颜色。
8. 透明度与混合模型(Alpha Blending)
-
RGBA 中的 A 分量表示不透明度(1为完全不透明,0为完全透明)。
-
混合模型:
C final = C src ⋅ α + C dst ⋅ ( 1 − α ) C_{\text{final}} = C_{\text{src}} \cdot \alpha + C_{\text{dst}} \cdot (1 - \alpha) Cfinal=Csrc⋅α+Cdst⋅(1−α)- 用于实现半透明、抗锯齿边缘、重叠对象的合成。
-
排序问题:
- 半透明对象必须从后向前排序(画家算法),否则颜色混合错误。
五、时域抗锯齿(动态锯齿)
9. 时域锯齿(Temporal Aliasing)
- 发生在动画中:
- 快速移动时的锯齿、抖动、闪烁(如车轮反转效应)。
- 解决方案:
- 运动模糊:模拟像素在运动过程中的颜色平均。
- TAA(Temporal Anti-Aliasing):结合多个时间帧的采样结果,综合平滑图像。
《Field-aligned Quadrangulation for Image Vectorization》
一、研究目标与背景动机
1.1 矢量图形 vs 光栅图形
- 光栅图像:由像素数组组成,放大易失真。
- 矢量图形:由数学几何表示(线、样条等)组成,可无损缩放、易编辑、存储小。
- ➤ 图像矢量化:将光栅图转为矢量图,便于后期图像编辑与高质量显示。
1.2 论文目标
- 利用 交叉场(Cross Field) 提取图像的局部方向信息;
- 基于交叉场构建 场对齐(field-aligned)的四边形网格(quad mesh);
- 生成质量高、特征对齐好的矢量图形。
二、交叉场构建与优化
2.1 交叉场的定义
-
每个像素点的主方向由灰度梯度计算:
θ i , j = arctan ( g i + 1 , j − g i − 1 , j , g i , j + 1 − g i , j − 1 ) \theta_{i,j} = \arctan(g_{i+1,j} - g_{i-1,j},\ g_{i,j+1} - g_{i,j-1}) θi,j=arctan(gi+1,j−gi−1,j, gi,j+1−gi,j−1) -
构成一个**“十字方向”**场: θ , θ + π 2 , θ + π , θ − π 2 \theta, \theta + \frac{\pi}{2}, \theta + \pi, \theta - \frac{\pi}{2} θ,θ+2π,θ+π,θ−2π
2.2 初始交叉场的问题
- 存在:
- 不连续性;
- 奇异点(方向突变处);
- 与图像特征错位。
2.3 优化目标
- 保证交叉场:
- 方向连续(平滑);
- 对齐图像边缘等关键结构;
- 减少奇异点数目。
三、交叉场平滑化方法
3.1 平滑能量函数
优化目标函数:
E smooth = ∑ ( i , j ) w i , j ( θ 邻居 − θ i , j − k ⋅ π 2 ) 2 E_{\text{smooth}} = \sum_{(i,j)} w_{i,j} \left( \theta_{\text{邻居}} - \theta_{i,j} - k\cdot \frac{\pi}{2} \right)^2 Esmooth=(i,j)∑wi,j(θ邻居−θi,j−k⋅2π)2
- 通过旋转因子 p i , j , q i , j ∈ { − 2 , − 1 , 0 , 1 , 2 } p_{i,j}, q_{i,j} \in \{-2, -1, 0, 1, 2\} pi,j,qi,j∈{−2,−1,0,1,2} 处理90度周期对称;
- 加入 权重 w i , j w_{i,j} wi,j 控制局部重要性。
3.2 权重定义(重点)
-
权重依据 图像灰度梯度设定:
w i , j = f ( ∣ ∇ g i , j ∣ ) w_{i,j} = f(|\nabla g_{i,j}|) wi,j=f(∣∇gi,j∣) -
在边缘区域(高梯度)赋予更大权重,增强特征对齐性;
-
在平坦区域(低梯度)赋予小权重以增强平滑性。
四、奇异点检测与优化
4.1 奇异点检测指标
定义局部旋转指数:
I i , j = p i , j − p i + 1 , j − q i , j + q i , j + 1 I_{i,j} = p_{i,j} - p_{i+1,j} - q_{i,j} + q_{i,j+1} Ii,j=pi,j−pi+1,j−qi,j+qi,j+1
- I > 0 I > 0 I>0:正奇异点;
- I < 0 I < 0 I<0:负奇异点;
- I = 0 I = 0 I=0:无奇异点。
4.2 奇异点优化
- 目标:最小化奇异点数量、使其分布规整、远离关键特征线;
- 方法:迭代优化交叉场方向;
- 示意图展示奇异点从杂乱到规整的优化过程。
五、四边形网格构建(Quadrangulation)
5.1 网格顶点位置场优化
-
基本思想:使网格边与交叉场方向一致;
-
位置调整公式:
p i = [ ( p i − v i ) ⋅ e i ] e i + v i p_i = \left[ (p_i - v_i) \cdot e_i \right] e_i + v_i pi=[(pi−vi)⋅ei]ei+vi- e i e_i ei:单位交叉场方向向量;
- v i v_i vi:初始参考点;
- 将当前点投影回交叉方向上,增强特征对齐。
5.2 各向异性四边形网格
- 在特征密集区生成更小网格,在平滑区域生成更大网格;
- 提高网格效率、减少冗余点。
六、实验结果与应用
6.1 矢量化对比实验
- 与 Lai 方法对比(图像矢量化):
- 运行速度快 8 倍;
- 矢量化误差降低一半;
- 展示:输入图像 → 四边形网格 → 矢量图效果。
6.2 图像编辑(颜色)
- 通过网格提供的区域支持:
- 局部渐变编辑;
- 边缘保持平滑;
- 图像区域变得可选、可交互。
6.3 图像编辑(马赛克)
- 与 PicM 和 GlzMOs 方法对比:
- 本方法 更能捕捉图像结构;
- 马赛克块边更自然,视觉上更流畅。
相关文章:
山东大学计算机图形学期末复习12——CG13下
CG13下 BSP树 BSP (Binary Space Partition)表示二叉空间分割。 使用这种方法可以使我们在运行时使用一个预先计算好的树来得到多边形从后向前的列表,它的复杂度为O(n)。 它的基本思想是基于这样一个事实:任何平面都可以将空间分…...
Muduo网络库大总结
Muduo网络库大总结 目录 目的知识储备IO模型 阻塞与非阻塞五种IO模型 epoll原理 select/poll的缺点epoll的优势LT与ET模式 Reactor模型muduo核心模块扩展功能 目的 理解阻塞、非阻塞、同步、异步的概念掌握Unix/Linux五种IO模型深入理解epoll原理及优势掌握Reactor模型设计学…...
LLMs:《POE报告:2025年春季人工智能模型使用趋势》解读
LLMs:《POE报告:2025年春季人工智能模型使用趋势》解读 导读:2025年5月13日,该报告基于 Poe 平台的用户数据,分析了 2025 年春季人工智能模型的使用趋势。报告指出,人工智能格局快速演变,通用文…...
机器学习(13)——LGBM(2)
一、LightGBM算法简介 (一)背景 机器学习中的树模型 在机器学习领域,基于树的模型(如决策树、随机森林、梯度提升树等)是非常重要的算法类别。它们具有很强的可解释性,能够很好地处理非线性关系ÿ…...
翻到了一段2005年写的关于需求的文字
那时的俺还很稚嫩,很多东西都不懂。 另外 hfghfghfg其实是俺的一个马甲,早年间在delphibbs时用的。 来自:hfghfghfg, 时间:2005-01-20 13:16, ID:2971188我到客户那里的情况 一边要和他聊天 一边改报表。 一张报表 …...
MCP - Cline 接入 高德地图 Server
文章目录 一、准备1、注册、认证高德开放平台账号2、创建应用、获取 Key3、用量管理2、Cline 配置模型 二、接入三、测试官方测试 - 出行规划专属地图 四、关于 高德 MCP Server - AI时代的出行服务中台1、产品定位2、技术架构亮点3、核心API能力矩阵4、开发者优势5、典型应用场…...
Linux的MySQL头文件和找不到头文件问题解决
头文件 #include <iostream> #include <mysql_driver.h> #include <mysql_connection.h> #include <cppconn/statement.h> #include <cppconn/resultset.h> #include <cppconn/prepared_statement.h> #include <cppconn/exception.h&g…...
进程和线程的区别和联系
二者概念 进程 运行起来一个程序就会在操作系统产生一个或多个进程 进程属于软件资源。 进程是操作系统中资源分配的基本单位。 每个进程拥有独立的 内存空间、文件描述符、系统资源。 进程之间相互隔离,一个进程崩溃不会直接影响其他进程。 操作系统管理进程…...
SHAP分析图的含义
1. 训练集预测结果对比图 表征含义: 展示模型在训练集上的预测值(红色曲线)与真实值(灰色曲线)的对比。通过曲线重合度可直观判断模型的拟合效果。标题中显示的RMSE(均方根误差)量化了预测值与…...
PointNet++:点云处理的升级版算法
在三维计算机视觉和机器学习领域,点云数据的处理一直是一个关键问题。点云是由一系列三维坐标点组成的集合,这些点可以描述物体的形状和结构。然而,由于点云的无序性和不规则性,传统的处理方法往往难以直接应用。PointNet算法的出…...
PostGIS实现矢量数据转栅格数据【ST_AsRaster】
ST_AsRaster函数应用详解:将矢量数据转换为栅格数据 [文章目录] 一、函数概述 二、函数参数与分组说明 三、核心特性与注意事项 四、示例代码 五、应用场景 六、版本依赖 七、总结 一、函数概述 ST_AsRaster是PostGIS中用于将几何对象(如点、线…...
【PyQt5实战】五大对话框控件详解:从文件选择到消息弹窗
对话框是人机交互的重要组件,PyQt5提供了一系列标准对话框满足不同场景需求。本文将深入解析QDialog及其子类的使用方法,助你快速掌握GUI开发核心交互功能。 对话框基础:QDialog QDialog是所有对话框的基类,支持模态/非模态两种…...
机器学习-人与机器生数据的区分模型测试 - 模型选择与微调
内容继续机器学习-人与机器生数据的区分模型测试 整体模型的准确率 X_train_scaled pd.DataFrame(X_train_scaled,columns X_train.columns ) X_test_scaled pd.DataFrame(X_test_scaled,columns X_test.columns)from ngboost.distns import Bernoulli # 模型训练和评估 m…...
学习黑客Active Directory 入门指南(四)
Active Directory 入门指南(四):组策略的威力与操作主机角色 📜👑 大家好!欢迎来到 “Active Directory 入门指南” 系列的第四篇。在前几篇中,我们已经构建了对AD逻辑结构、物理组件、关键服务…...
十一、STM32入门学习之FREERTOS移植
目录 一、FreeRTOS1、源码下载:2、解压源码 二、移植步骤一:在需要移植的项目中新建myFreeRTOS的文件夹,用于存放FREERTOS的相关源码步骤二:keil中包含相关文件夹和文件引用路径步骤三:修改FreeRTOSConfig.h文件的相关…...
Spring ioc和Aop
IOC 在传统Java当中,我们的对象都需要new关键字来生成,这在面对很多对象的情况产生了不必要的麻烦,因为我不需要在一个项目中一直做重复的事情,那怎么办把,自然而然的一些好的框架就诞生了,避免我们去做这…...
动态内存管理2+柔性数组
一、动态内存经典笔试题分析 分析错误并改正 题目1 void GetMemory(char *p) {p (char *)malloc(100); } void Test(void) {char *str NULL;GetMemory(str);strcpy(str, "hello world");printf(str); } int main() {Test();return 0; }错误的原因: …...
USB传输速率 和 RS-232/RS-485串口协议速率 的倍数关系
一、技术背景 RS-232:传统串口标准,典型速率 115.2 kbps(最高约 1 Mbps)。RS-485:工业串口标准,典型速率 10 Mbps(理论最高可达 50 Mbps)。USB:不同版本差异巨大&#x…...
多线程代码案例-4 线程池
1、引入 池是一个非常重要的概念,我们有常量池,数据库连接池,线程池,进程池,内存池…… 池的作用: 1、提前把要用的对象准备好 2、用完的对象也不立即释放,先留着以备下次使用,提…...
JSON Schema 高效校验 JSON 数据格式
在数据交换和API开发中,JSON 已成为最流行的数据格式之一。但你是否遇到过这些困扰? 接收的JSON字段缺失关键数据?数值类型意外变成了字符串?嵌套结构不符合预期? JSON Schema 正是解决这些问题的利器。本文将带你全…...
机器学习09-正规方程
机器学习笔记:正规方程(Normal Equation) 概述 正规方程是线性回归中求解参数的一种解析方法。它基于最小化损失函数(如最小二乘法)来直接计算出参数的最优值。在机器学习中,这种方法尤其适用于特征数量不…...
Java大师成长计划之第26天:Spring生态与微服务架构之消息驱动的微服务
📢 友情提示: 本文由银河易创AI(https://ai.eaigx.com)平台gpt-4-turbo模型辅助创作完成,旨在提供灵感参考与技术分享,文中关键数据、代码与结论建议通过官方渠道验证。 在现代微服务架构中,服务…...
Linux 文件(1)
1. 文件 1.1 文件是什么 一个文件,是由其文件属性与文件内容构成的。文件属性又称为一个文件的元数据,因此如果一个文件,内容为空,这个文件依然要占据磁盘空间。 1.2 文件在哪里 一个文件,如果没有被打开ÿ…...
程序代码篇---python向http界面发送数据
文章目录 前言 前言 本文简单接受了python向http界面发送数据...
【iOS】探索消息流程
探索消息流程 Runtime介绍OC三大核心动态特性动态类型动态绑定动态语言 方法的本质代码转换objc_msgSendSELIMPMethod 父类方法在子类中的实现 消息查找流程开始查找快速查找流程慢速查找流程二分查找方法列表父类缓存查找 动态方法解析动态方法决议实例方法类方法优化 消息转发…...
院校机试刷题第六天:1134矩阵翻转、1052学生成绩管理、1409对称矩阵
一、1134矩阵翻转 1.题目描述 2.解题思路 很简单的模拟题,甚至只是上下翻转,遍历输出的时候先把最下面那一行输出即可。 3.代码 #include <iostream> #include <vector> using namespace std;int main() {int n;cin >> n;vector&l…...
DeepSeek在简历筛选系统中的深度应用
一、多模态解析引擎的技术突破 1.1 复杂格式的精准解析 针对简历格式多样性挑战,DeepSeek采用三级解析架构: 格式标准化层:基于Transformer的DocParser模型支持200+种文档格式转换视觉特征提取:使用改进的YOLOv8进行证书印章识别(mAP@0.5达93.7%)语义重构模块:通过注意…...
c++多线程debug
debug demo 命令行查看 ps -eLf|grep cam_det //查看当前运行的轻量级进程 ps -aux | grep 执行文件 //查看当前运行的进程 ps -aL | grep 执行文件 //查看当前运行的轻量级进程 pstree -p 主线程ID //查看主线程和新线程的关系 查看线程栈结构 pstack 线程ID 步骤&…...
【回溯 剪支 状态压缩】# P10419 [蓝桥杯 2023 国 A] 01 游戏|普及+
本文涉及知识点 C回溯 位运算、状态压缩、枚举子集汇总 P10419 [蓝桥杯 2023 国 A] 01 游戏 题目描述 小蓝最近玩上了 01 01 01 游戏,这是一款带有二进制思想的棋子游戏,具体来说游戏在一个大小为 N N N\times N NN 的棋盘上进行,棋盘…...
CUDA 纹理入门
一、什么是CUDA纹理 CUDA纹理是NVIDIA GPU提供的一种特殊内存访问机制,它允许高效地访问和过滤结构化数据。纹理内存最初是为图形渲染设计的,但在通用计算(GPGPU)中也很有用。 二、纹理内存的优势 缓存优化:纹理内存有专用的缓存,适合空间局部性好的访问模式 硬件过滤:支…...
大模型微调步骤整理
在对深度学习模型进行微调时,我通常会遵循以下几个通用步骤。 第一步是选择一个合适的预训练模型。PyTorch 的 torchvision.models 模块提供了很多经典的预训练模型,比如 ResNet、VGG、EfficientNet 等。我们可以直接使用它们作为模型的基础结构。例如,加载一个预训练的 Re…...
【GPT入门】第39课 OPENAI官方API调用方法
【GPT入门】第39课 OPENAI官方API调用方法 1. OPENAI 免费API2. openai调用最简单的API3.apiKey提取到环境变量 1. OPENAI 免费API 需要科学上网,可以调用 gpt-4o-mini 的 api, 使用其它旧的GPT,反而可能需要收费,例如 gpt-3.5-turbo 2. op…...
【DeepSeek论文精读】11. 洞察 DeepSeek-V3:扩展挑战和对 AI 架构硬件的思考
欢迎关注[【AIGC论文精读】](https://blog.csdn.net/youcans/category_12321605.html)原创作品 【DeepSeek论文精读】1. 从 DeepSeek LLM 到 DeepSeek R1 【DeepSeek论文精读】7. DeepSeek 的发展历程与关键技术 【DeepSeek论文精读】11. 洞察 DeepSeek-V3ÿ…...
MySQL事务的一些奇奇怪怪知识
Gorm事务有error却不返回会发生什么 Gorm包是大家比较高频使用。正常的用法是,如果有失败返回error,整体rollback,如果不返回error则commit。下面是Transaction的源码: // Transaction start a transaction as a block, return …...
C语言内存函数与数据在内存中的存储
一、c语言内存函数 1、memcpy函数是一个标准库函数,用于内存复制。功能上是用来将一块内存中的内容复制到另一块内存中。用户需要提供目标地址、源地址以及要复制的字节数。例如结构体之间的复制。 memcpy函数的原型是:void* memcpy(void* …...
Power BI Desktop运算符和新建列
1.运算符 运算符 含义 加 - 减 * 乘 / 除 ^ 幂 运算符 含义 等于 > 大于 < 小于 > 大于等于 < 小于等于 <> 不等于 运算符 含义 && 与 || 或 not 非 & 字符串连接 in 包含 not in 不包含 2.新建列 …...
windows 安装gdal实现png转tif,以及栅格拼接
windows 安装gdal实现png转tif,以及栅格拼接 一、安装gdal 网上有很多安装gdal的方法,此处通过osgeo4w安装gdal 1.下载osgeo4w 下载地址 https://trac.osgeo.org/osgeo4w/ 2、安装osgeo4w exe文件安装,前面部分很简单,就不再…...
【嵙大o】C++作业合集
参考: C swap(交换)函数 指针/引用/C自带-CSDN博客 Problem IDTitleCPP指针CPP引用1107 Problem A编写函数:Swap (I) (Append Code)1158 Problem B整型数据的输出格式1163 Problem C时间:24小时制转12小时制1205…...
论信息系统项目的采购管理
论信息系统项目的采购管理 背景一、规划采购管理二、实施采购三、控制采购结语 背景 某市为对扶贫对象实施精确识别、精确帮扶、精确管理,决定由民政部门牵头,建设家庭经济状况分析及市、县(区)、镇(街)三级…...
创建型:单例模式
目录 1、核心思想 2、实现方式 2.1 饿汉式 2.2 懒汉式 2.3 枚举(Enum) 3、关键注意事项 3.1 线程安全 3.2 反射攻击 3.3 序列化与反序列化 3.4 克隆保护 4、适用场景 1、核心思想 目的:确保一个类仅有一个实例 功能:…...
职场方法论总结(4)-如何正确地汇报
一、明确汇报目标 区分类型:是项目进展汇报?数据总结?问题解决方案?还是资源申请?明确目标才能聚焦内容。听众需求: 所有人都希望你用最简短的语言把事情讲清楚,节省时间领导关注结果、风险和资…...
STM32SPI实战-Flash模板
STM32SPI实战-Flash模板 一,常用指令集(部分)二,组件库GD25QXX API 函数解析1,前提条件2,初始化与识别1, void spi_flash_init(void)2, uint32_t spi_flash_read_id(void) 3,擦除操作1, void spi_flash_sector_erase(uint32_t sec…...
CSS- 4.4 固定定位(fixed) 咖啡售卖官网实例
本系列可作为前端学习系列的笔记,代码的运行环境是在HBuilder中,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。 HTML系列文章 已经收录在前端专栏,有需要的宝宝们可以点击前端专栏查看! 点…...
【Retinanet】训练自己的数据集
目录 1.下载源码2.配置环境3.数据集准备4.训练自己的数据5.成功训练! 1.下载源码 Retinanet代码:代码 下载到你的目录中,进行打开。 2.配置环境 这里就是cudapytorch,没有配置过的可以参考博客: 深度学习环境的搭建…...
微软将于 8 月 11 日关闭 Bing Search API 服务
微软宣布将于 2025 年 8 月 11 日正式关闭 Bing Search API 服务。届时,所有使用 Bing Search API 的实例将完全停用,同时不再接受新用户注册。 此次停用决定主要影响 Bing Search F1 及 S1 到 S9 资源的用户,以及 Custom Search F0 与 S1 到…...
探索 Python 的利器:help()、dir() 与 AI 工具的结合应用
引言 在编程世界中,Python 以其简洁的语法、强大的功能和丰富的库生态系统成为众多开发者的首选语言。无论是初学者还是资深工程师,在学习新模块、调试代码或探索未知功能时,常常需要有效的工具来帮助理解和解决问题。Python 提供了内置的 help() 和 dir() 函数,让开发者能…...
MySQL查询优化器底层原理解析:从逻辑优化到物理优化
MySQL查询优化器底层原理解析:从逻辑优化到物理优化 引言 在数据库系统中,SQL语句的执行效率直接影响着整个应用的性能表现。一条普通的SQL执行前会经历五个关键阶段:SQL输入、语法分析、语义检查、SQL优化、SQL执行。其中,SQL优…...
UI架构的历史与基础入门
本笔记的目的是通过一系列连贯的例子来探讨“事物-模型-视图-编辑器”这一隐喻。 这些例子都来自我的规划系统(planning system),用于解释上述四个概念。所有例子都已实现,但并未在本文描述的清晰类结构中实现。 这些隐喻对应于《…...
(三)MMA(KeyCloak身份服务器/OutBox Pattern)
文章目录 项目地址一、KeyCloak二、OutBox Pattern2.1 配置Common模块的OutBox1. OutboxMessage2. 数据库配置OutboxMessageConfiguration3. 创建Save前的EF拦截器4. 创建Quartz后台任务5. 配置后台任务6. 注册服务2.2 创建OutBox的消费者项目地址 教程作者:教程地址:代码仓库…...
【通用智能体】Playwright:跨浏览器自动化工具
Playwright:跨浏览器自动化工具 一、Playwright 是什么?二、应用场景及案例场景 1:端到端(E2E)测试场景 2:UI 自动化(表单批量提交)场景 3:页面截图与 PDF 生成场景 4&am…...