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

Halcon_数据类型_ROI_仿射变换_投影变换

文章目录

  • 算子
  • 快捷键
  • 一、Halcon数据类型
    • Iconic (图标)
    • Control (控制)
    • Tuple (数组)
  • 二、ROI(区域)
    • 1.代码创建ROI
    • 2.手动创建ROI
  • 三、图形预处理
    • 1.图像的变换与矫正
      • 平移 -hom_mat2d_translate
      • 旋转
      • 缩放-HomMat2D:输入的仿射变换矩阵。
      • 切变
      • 相似变换
      • 仿射变换 affine_trans_image
      • 投影变换- projective_trans_image


算子

类似于C++的函数,但参数依次为:输入图形参数、输出图形参数、输入控制参数、输出控制参数

快捷键

  • 多行注释:选中想要注释的代码,然后直接按F4
  • 取消注释:按F3可以取消注释

一、Halcon数据类型

Iconic (图标)

  • Image(图像)
//读取图片的算子
read_image (图片变量名, 图片位置'mreut')
  • Region(区域)
threshold (Mreut, Region, 190, 255)  
//阈值化,输出阈值在190-255的Regions
  • Extended Line Description(XLD)

Control (控制)

  • String (字符)
  • Integer (整形)
  • Real (实型)
  • Handle (句柄)

Tuple (数组)

二、ROI(区域)

1.代码创建ROI

read_image(Image,'claudia.png')
gen_rectangle1(Region,0,10,100,100)-创建矩形ROI
reduce_domain(Image,Region,Image2)-将给定图像的定义域缩小到指定的区域。
dev_display(Image2)-显示图片

在这里插入图片描述
在这里插入图片描述

2.手动创建ROI

read_image(Image,'claudia.png')
get_image_size(Image,Width,Height)-获取图片长宽
dev_open_window(0,0,Width,Height,'black',WindowHandle)-创建图形窗口
draw_rectangle1(WindowHandle,Row1, Column1, Row2, Column2)-获取画的矩形坐标和大小
gen_rectangle1(Rectangle, Row1, Column1, Row2, Column2)-创建矩形region
reduce_domain(Image, Rectangle, ImageReduced)-缩减到创建region
dev_display(ImageReduced)

在这里插入图片描述
按下鼠标右键确认框选
在这里插入图片描述

三、图形预处理

函数:
hom_mat2d_identity( : : : HomMat2DIdentity)
作用:生成变换矩阵
HomMat2DIdentity:生成的变量名

1.图像的变换与矫正

平移 -hom_mat2d_translate

在这里插入图片描述

函数:
hom_mat2d_translate( : : HomMat2D, Tx, Ty : HomMat2DTranslate)
作用:平移矩阵
参数:
HomMat2D:变换矩阵
Tx:沿x轴方向平移的距离。
Ty:沿y轴方向平移的距离。
HomMat2DTranslate:输出变换的矩阵

旋转

在这里插入图片描述
公式:
在这里插入图片描述

函数:
hom_mat2d_rotate( : : HomMat2D, Phi, Px, Py : HomMat2DRotate)
作用:将旋转角度添加到仿射变换矩阵
参数:
HomMat2D:输入的仿射变换矩阵。
Phi:旋转角度(单位为弧度)。
Px:变换的固定点行坐标。固定点是指以该点为支撑进行仿射变换(这里是指围绕这点进行旋转)。
Py:变换的固定点列坐标。
HomMat2DRotate:输出的变换矩阵

缩放-HomMat2D:输入的仿射变换矩阵。

Phi:旋转角度(单位为弧度)。
Px:变换的固定点行坐标。固定点是指以该点为支撑进行仿射变换(这里是指围绕这点进行旋转)。
Py:变换的固定点列坐标。
HomMat2DRotate:输出的变换矩阵
在这里插入图片描述

函数:
hom_mat2d_rotate( : : HomMat2D, Phi, Px, Py : HomMat2DRotate)
作用:将缩放添加到仿射变换矩阵中
HomMat2D:输入的仿射变换矩阵。
Phi:旋转角度(单位为弧度)。
Px:变换的固定点行坐标。固定点是指以该点为支撑进行仿射变换(这里是指围绕这点进行旋转)。
Py:变换的固定点列坐标。
HomMat2DRotate:输出的变换矩阵

切变

在这里插入图片描述
公式:下面介绍切变的其他和看上面

在这里插入图片描述

函数:
hom_mat2d_slant( : : HomMat2D, Theta, Axis, Px, Py : HomMat2DSlant)
作用:添加切变到仿射变换矩阵中
参数:
HomMat2D:输入的仿射变换矩阵。
Theta:斜切角度(单位:弧度)。
Axis:斜切的坐标轴,取值可以是 'x''y'。
Px:变换的固定点x坐标。
Py:变换的固定点y坐标。
HomMat2DSlant:输出的斜切仿射变换矩阵

相似变换

相似变换:由一个平面/立体图形变换到另一个平面/立体图形,在改变的过程中保持形状不变(大小方向和位置可变),任何相似变换都可以分解为等比例缩放、平移、旋转的组合。
在这里插入图片描述

仿射变换 affine_trans_image

仿射变换:由一个平面/立体图形变换到另一个平面/立体图形,在改变的过程中保持直线和平行线不变(平行线映射为平行线),任何仿射变换都可以分解为缩放、平移、旋转、和切变的组合。

函数:
affine_trans_image(Image : ImageAffineTrans : HomMat2D, Interpolation, AdaptImageSize : )
作用:放射变换图片
参数:
Image:需要变换的图片
ImageAffineTrans:变换后的图片
HomMat2D :变换的矩阵
Interpolation:插值算法,一般用‘constant’
AdaptImageSize:是否自适应,true 或者 false

样例代码:

read_image(Image,'claudia.png')
get_image_size(Image, Width, Height)
dev_open_window(0, 0, Width, Height, 'black', WindowHandle)
dev_display(Image)*创建矩阵
*平移
* hom_mat2d_identity(HomMat2DIdentity)
* hom_mat2d_translate(HomMat2DIdentity,Width/2,Height/2,HomMat2DTranslate)
* affine_trans_image(Image, ImageAffineTrans, HomMat2DTranslate, 'constant', 'true')
* dev_clear_window()
* dev_display(ImageAffineTrans)*旋转
* hom_mat2d_identity(HomMat2DIdentity)
* hom_mat2d_rotate(HomMat2DIdentity,3.14/2,Width/2,Height/2,HomMat2DRotate)
* affine_trans_image(Image,ImageRotate,HomMat2DRotate,'constant','false')
* dev_clear_window()
* dev_display(ImageRotate)
*缩放
* hom_mat2d_identity(HomMat2DIdentity)
* hom_mat2d_scale(HomMat2DIdentity, 0.5, 0.5,  Height, Width,HomMat2DScale)
* affine_trans_image(Image, ImageAffineTrans, HomMat2DScale, 'constant', 'false')
* dev_clear_window()
* dev_display(ImageAffineTrans)
*切变
hom_mat2d_identity(HomMat2DIdentity)
hom_mat2d_slant(HomMat2DIdentity, -3.14/4, 'x',  Height,Width, HomMat2DSlant)
affine_trans_image(Image, ImageAffineTrans1, HomMat2DSlant, 'constant', 'false')
dev_clear_window()
dev_display(ImageAffineTrans1)

投影变换- projective_trans_image

仿射变换几乎能校正物体所有可能发生的与位姿相关的变化,但并不能应付所有情况。投影变换包括的情况很多,如对边不再平行,或者发生了透视畸变等,这时可以使用投影变换使其恢复原状。其步骤与仿射变换类似,首先计算投影变换矩阵,然后计算投影变换参数,最后将投影变换矩阵映射到对象上。

函数:
projective_trans_image(Image : TransImage : HomMat2D, Interpolation, AdaptImageSize, TransformDomain : )
作用:应用一个齐次投影变换矩阵(HomMat2D)到输入图像上,生成变换后的输出图像。
参数:
Image (input_object): 输入图像。
TransImage (output_object): 输出图像。
HomMat2D (input_control): 齐次投影变换矩阵。
Interpolation (input_control): 变换的插值方法,默认为 'bilinear',可选值包括 'bilinear', 'nearest_neighbor'AdaptImageSize (input_control): 是否自动调整输出图像的大小,默认为 'false'TransformDomain (input_control): 是否变换输入图像的域,默认为 'false'

样例:

read_image(Image,'4-3.png')
dev_open_window_fit_image(Image, 0, 0, -1, -1, WindowHandle)
dev_set_color('red')
dev_set_line_width(2)
X:=[163,280,362,75]
Y:=[125,120,361,340]
dev_display(Image)
gen_cross_contour_xld(Cross, X, Y, 6, 0.785398)//生成叉叉
dev_display(Cross)
*根据点计算齐次变换矩阵
hom_vector_to_proj_hom_mat2d(X,Y,[1,1,1,1],[75,360,360,75],[110,110,395,395],[1,1,1,1],'normalized_dlt', HomMat2D)
*投影变换
projective_trans_image(Image, TransImage, HomMat2D, 'bilinear', 'false', 'false')

在这里插入图片描述
在这里插入图片描述

相关文章:

Halcon_数据类型_ROI_仿射变换_投影变换

文章目录 算子快捷键一、Halcon数据类型Iconic (图标)Control (控制)Tuple (数组) 二、ROI(区域)1.代码创建ROI2.手动创建ROI 三、图形预处理1.图像的变换与矫正平移 -hom_mat2d_translate旋转缩放-HomMat2D:输入的仿射…...

java+ssm+mysql高校学籍管理系统

项目介绍: 使用javassmmysql开发的高校学籍管理系统,系统包含超级管理员,系统管理员、教师、学生角色,功能如下: 超级管理员:管理员管理(可以新增管理员);专业管理&…...

多表设计-一对多一对多-外键

一.多表设计概述: 二.一对多: 1.需求: 根据 页面原型 及 需求文档,完成部门及员工模块的表结构设计 -->部门和员工就是一对多,因为一个部门下会有多个员工,但一个员工只归属一个部门 2.页面原型&…...

Scala的正则表达式(1)

package hfd //正则表达式的应用场景 //1.查找 findAllin //2.验证 matches //3.替换//验证用户名十分合法 //规则: //1.长度在6-12之间 //2.不能数字开头 //3.只能包含数字,大小写字母,下划线 object Test36 {def main(args: Array[String])…...

uniapp扭蛋机组件

做了一个uniapp的扭蛋机组件,可以前往下载地址下载 仅测试了vue2、3、h5页面微信小程序,理论支持全平台 使用方法简单,具有待机动效、抽奖中动效、掉落奖品动效,可以替换奖品图片,足以满足大部分抽奖页面需求。 示例图…...

并发背后的技术与原理

一个Java Web项目能够同时支持多个用户请求,而不会导致数据混乱,这主要得益于Java平台的多线程处理机制、Web容器的请求处理模型以及良好的编程实践。 Java的多线程处理: Java是一种支持多线程的编程语言。在Java Web应用中,每个用…...

HarmonyOS(63) ArkUI 自定义占位组件NodeContainer

NodeContainer 1、前言2、NodeContainer和NodeController3、示例代码3.1、创建@Builder3.2、 创建NodeController3.3、 使用NodeCtroller4、NodeContainer的作用5、FrameNode简介6、BuilderNode简介7、参考资料1、前言 在HarmonyOS(62) ArkUI @Reusable组件复用原理讲了组件复…...

机器学习实战学习笔记:前言与准备

个人学习介绍 该专栏作为《机器学习实战(原书第三版)》的读书笔记,涉及对书本内容的理解和书本内容原有的示例和部分原文。略懂一点点python语法编程环境选用python 3.12.1 ,IDE为 DataSpell (主要)&#…...

Linux应用开发————多线程的互斥与同步——同步

同步和互斥 互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。 同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。 条件变量机制…...

【人工智能】深度解剖利用人工智能MSA模型

目录 情感分析的应用一、概述二、研究背景三、主要贡献四、模型结构和代码五、数据集介绍六、性能展示七、复现过程 情感分析的应用 近年来社交媒体的空前发展以及配备高质量摄像头的智能手机的出现,我们见证了多模态数据的爆炸性增长,如电影、短视频等…...

Java 环境配置 + IntelliJ IDEA 使用指南

文章目录 一、Java 程序的运行必须经过3 个步骤:编写、编译、运行(1)Java 和 JavaScript 的区别(2)JDK、JRE、JVM 的关系(3)是否需要 Maven? 二、软件下载2.1、JDK下载与安装 —— 是…...

兴业周报|楼市新政效果显著~单周成交破5亿~

香山清琴山庄丙19号(独栋别墅) 稀缺房源:标的物为京城少有的独栋别墅,在连续的 “限墅令” 及相关容积L限制政策下,市场上独栋别墅的新增供应不断减少。 环境优美:香山清琴山庄依山而筑,错落有…...

学习笔记063——通过使用 aspose-words 将 Word 转 PDF 时,遇到的字体改变以及乱码问题

文章目录 1、问题描述:2、解决方法: 1、问题描述: Java项目中,有个需要将word转pdf的需求。本人通过使用aspose-words来转换的。在Windows中,转换是完全正常的。但是当部署到服务器时,会出现转换生成的pdf…...

人工智能导论学习笔记

目录 一、概要 二、人工智能基础知识 智能 人工智能 人工智能三要素 人工智能发展历程 人工智能的三次浪潮 人工智能行业发展现状 人工智能技术水平现状 人工智能技术层级 人工智能应用开发周期 机器学习的流程 一、概要 《人工智能导论(通识版)》张大斌 田恒义 许…...

FCOS: Fully Convolutional One-Stage Object Detection——全卷积一阶段目标检测

FCOS(Fully Convolutional One-Stage Object Detector)是一种全卷积的单阶段目标检测器,旨在通过消除锚点(anchor)的使用,简化目标检测的流程。以下是FCOS的主要特点和组成部分: 1. 无锚点设计…...

《Java核心技术I》映射条目的原子更新

映射条目的原子更新 ConcurrentHashMap只有部分原子更新。 JavaAPI提供了一些新方法,例如:compute方法可以提供一个键和一个计算新值的函数。 map.compute(word,(k,v)->v null ? 1 : v1) 注释:ConcurrentHashMap中不允许有null值。很…...

微信小程序介绍-以及写项目流程(重要)

前言:本篇文章介绍微信小程序以及项目介绍: 文章介绍:介绍了微信小程序常用的指令、组件、api。tips:最好按照官方文档来进行学习,大致可以我的目录来学习,对于写项目是没有问题的 微信小程序官方文档https…...

241207-通过Docker部署Wiki.JS并设置ElasticSearch进行中文搜索

A. 最终效果 B. 配置文件 version: "3" services:wiki:image: ghcr.io/requarks/wiki:2container_name: wikijsports:- "3000:3000"volumes:- /home/lgk/Projects/WikiJS/config:/configenvironment:- DB_TYPEpostgres- DB_HOSTdatabase- DB_PORT5432- DB…...

yum 离线软件安装

适用范围 支持YUM软件管理的操作系统: 银河麒麟 服务器操作系统V10统信服务器操作系统V20CentOS 系列 准备 准备一台可以连接互联网并且与离线安装的操作系统相同版本的操作系统,包括指令集类型相同。 安装下载工具 查询是否已经安装下载工具 yum…...

【jvm】垃圾回收的优点和原理

目录 1. 说明2. 优点3. 原理3.1 发现无用对象3.2 回收无用对象所占用的内存 4. 回收算法4.1 标记-清除算法4.2 复制算法4.3 标记-整理算法4.4 分代收集算法 1. 说明 1.JVM(Java虚拟机)垃圾回收是Java语言的一大特性,它自动管理内存&#xff…...

LeetCode322. 零钱兑换(2024冬季每日一题 28)

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 示…...

LearnOpenGL学习(高级OpenGL --> 帧缓冲,立方体贴图,高级数据)

完整代码见:zaizai77/Cherno-OpenGL: OpenGL 小白学习之路 帧缓冲 帧缓冲(FrameBuffer)是所有屏幕缓冲(包括颜色缓冲,深度缓冲,模板缓冲)的集合。它被存储在GPU内存中,我们可以定义…...

mysql笔记——索引

索引 InnoDB采用了B树索引结构。 相比于二叉树,层级更少,搜索效率高。 B树中叶子节点和非叶节点都会存储数据,导致段页式存储中一页存储的键值减少,指针也会减少,要同样保存大量数据,只能增加树的高度&a…...

React第十五节useReducer使用详解差异

useReducer() 的用法注意事项 1、 概述: useReducer() 常用于管理复杂的状态更新逻辑,特别是在状态更新依赖于多个条件或动作时,useReducer 提供了一种更加结构化和可维护的方式来处理状态。可以将更新函数写在组件外面 它与 useState() 相…...

高效备考 Oracle 19c OCM 的建议

满足报考条件 考生需要先获得 19c OCP(Oracle Certified Professional)认证,并完成 Oracle 官方认可的 OCP 培训课程 制定学习计划 规划学习时间:根据考试时间和自己的日常安排,制定详细的学习计划,合理分配…...

01-Chromedriver下载与配置(mac)

下载地址: 这里我用的最后一个,根据自己chrome浏览器选择相应的版本号即可 ChromeDriver官网下载地址:https://sites.google.com/chromium.org/driver/downloads ChromeDriver官网最新版下载地址:https://googlechromelabs.git…...

网站流量和用户行为深度分析

关于网站流量数据集的探索 import pandas as pd import plotly.express as px import plotly.graph_objects as go import plotly.subplots as sp import matplotlib.pyplot as plt import seaborn as sns file_path /home/mw/input/webs4651/website_wata.csv data pd.rea…...

centOS7如何配置阿里云或者腾讯云yum源

众所周知,CentOS很多版本目前已经不再维护了,原本的在线yum源已经无法使用,所以需要我们配置其他的yum源。目前腾讯云或者阿里云的yum源都可以正常使用,所以本文教大家如何配置阿里云/腾讯云在线yum源。 阿里云yum源配置&#xf…...

洗鞋小程序(源码+文档+部署+讲解)

本文将深入解析“洗鞋小程序”的项目,探究其架构、功能以及技术栈,并分享获取完整源码的途径。 系统概述 为洗鞋提供服务,包含小程序和管理端。 本项目名称为洗鞋小程序,是一个基于小程序的在线洗鞋平台。该系统提供下单、订单管…...

MySQL|通过JSON_UNQUOTE实现MySQL中JSON数据的干净提取

文章目录 语法使用示例注意事项 JSON_UNQUOTE() 是 MySQL 中用于处理 JSON 数据类型的一个函数。它的主要作用是从 JSON 字符串中移除最外层的引号,这对于从 JSON 对象或数组中提取字符串值特别有用。 语法 JSON_UNQUOTE(json_string)json_string: 这是你想要去掉引…...

动态规划part01

文章参考来源代码随想录 理论基础 适用范围: 如果某一问题有很多重叠子问题,使用动态规划是最有效的。 与贪心算法的区别: 动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推…...

生活大爆炸版石头剪刀布(洛谷P1328)

生活大爆炸版石头剪刀布(洛谷P1328) [NOIP2014 提高组] 前言: 由于洛谷发布题解有限制,所以在CSDN上发布洛谷题解。 所有题解均是Java语言, 但是思路是相同的 每篇都是刷题日常,尽量讲清楚算法逻辑。 希望有问题还请大佬们指导! …...

【GOOD】DeGEM

ICLR2025 under review 看到不错的想法,学习一下 Decoupled Graph Energy-based Model for Node Out-of-Distribution Detection on Heterophilic Graphs 🐱🐶图上的OOD检测的工作是比较少的,相比于图像数据,图结构数…...

jenkins邮件的配置详解

Jenkins邮件的配置涉及多个步骤和细节,以下是详细的配置指南: 一、前期准备 确定邮件服务:明确Jenkins将要使用的邮件服务,如QQ邮箱、163邮箱、公司邮箱(基于Microsoft 365或Exchange Server)等。获取SMTP配置信息:根据邮件服务类型,获取相应的SMTP服务器地址、端口号…...

flask-socketio相关总结

flask-socketio是一个为flask应用程序添加的实时双向通信功能的扩展库,有了这个库,就可以在flask应用中应用websocket协议,帮助flask实现低延迟、双向的客户端、服务端通信。客户端通过任何SocketIO官方库,都能与服务器建立长连接…...

每日一题 LCR 097. 不同的子序列

LCR 097. 不同的子序列 使用动态规划就可以解决&#xff0c;重点是知道 动态规划的状态是如何转移的 class Solution { public:int numDistinct(string s, string t) {int ns s.size();int nt t.size();vector<vector<long>> dp(ns1,vector<long>(nt1,0)…...

合并区间C和C++的区别、布尔、整型、浮点、指针类型和0做比较、malloc、calloc、realloc的区别

56. 合并区间 class Solution { public:vector<vector<int>> merge(vector<vector<int>>& intervals) {//先按照每个区间的左元素排序&#xff0c;这样每个区间的左边界就固定了&#xff0c;所以之后考虑相邻的//区间是否是相交的就行 类似与栈的…...

设计模式-外观模式

背景 有一个家庭影院&#xff0c;有DVD播放器&#xff0c;投影仪&#xff0c;屏幕&#xff0c;音响&#xff0c;爆米花机&#xff0c;每一个设备都有一个遥控器。 传统思路&#xff1a; 创建一个客户端类&#xff0c;在这个类中创建所有设备的相关对象&#xff08;遥控器&am…...

嵌入式驱动开发详解14(SPI驱动架构实现)

文章目录 前言SPI简介SPI介绍SPI工作模式SPI特点 驱动开发驱动架构SPI控制器驱动SPI设备驱动SPI 设备和驱动匹配过程SPI其他相关API函数 参考文献 前言 SPI 是很常用的串行通信协议&#xff0c;可以通过 SPI 来连接众多的传感器&#xff0c;相比 I2C 接 口&#xff0c;SPI 接口…...

【保姆级系列:思科模拟器安装下载汉化教程大全】

文章目录 概述Packet Tracer下载Packet Tracer安装Packet Tracer使用EVE-NG下载&#xff1a;EVE-NG安装&#xff1a;EVE-NG使用&#xff1a; 概述 思科在网络界的地位是众所周知的。如果说在中美科技战中&#xff0c;华为代表CHN&#xff0c;那么思科就代表US&#xff0c;依然…...

2024 一带一路暨金砖国家技能发展与技术创新大赛【网络安全防护治理实战技能赛项】样题(中职组)

2024 一带一路暨金砖国家技能发展与技术创新大赛【网络安全防护治理实战技能赛项】样题&#xff08;中职组&#xff09; 1.基础设置和安全强化&#xff08;xxx 分&#xff09;1.3. 任务内容: 2.安全监测和预警&#xff08;xxx 分&#xff09;2.1. 任务一&#xff1a;建立目录安…...

QT 中基于 TCP 的网络通信

基础 基于 TCP 的套接字通信需要用到两个类&#xff1a; 1&#xff09;QTcpServer&#xff1a;服务器类&#xff0c;用于监听客户端连接以及和客户端建立连接。 2&#xff09;QTcpSocket&#xff1a;通信的套接字类&#xff0c;客户端、服务器端都需要使用。 这两个套接字通信类…...

React Native 速度提升 550%

React Native 爱好者们!🌟 您准备好听一些激动人心的消息了吗?React Native 刚刚发布了其最大的更新之一:一种全新的架构,彻底改变了我们构建移动应用程序的方式。如果您想知道这对您的项目和开发体验意味着什么,请继续关注!我们正在深入探讨这个改变游戏规则的事物;您…...

火语言RPA流程组件介绍--键盘按键

&#x1f6a9;【组件功能】&#xff1a;模拟键盘按键 配置预览 配置说明 按键 点击后,在弹出的软键盘上选择需要的按键 执行后等待时间(ms) 默认值300,执行该组件后等待300毫秒后执行下一个组件. 输入输出 输入类型 万能对象类型(System.Object)输出类型 万能对象类型…...

数值分析—数值积分

研究背景 积分的数学解法为牛顿莱布尼兹公式&#xff0c;数学表示为 ∫ a b f ( x ) d x F ( b ) − F ( a ) \int_{a}^{b} f(x)dxF(b)-F(a) ∫ab​f(x)dxF(b)−F(a)&#xff0c;但应用该方法有如下困难&#xff1a; 1&#xff0c; f ( x ) f(x) f(x)的原函数有时不能用初等函…...

Next.js优化教程:优化字体加载

更多有关Next.js教程&#xff0c;请查阅&#xff1a; 【目录】Next.js 独立开发系列教程-CSDN博客 目录 更多有关Next.js教程&#xff0c;请查阅&#xff1a; 前言 1. 字体加载的常见问题 1.1 什么是 FOIT 和 FOUT&#xff1f; 1.2 字体优化的核心目标 2. Next.js 字体优…...

功能篇:springboot中全局异常

在Java应用程序中实现全局异常处理是确保应用健壮性和用户体验良好性的重要一步。通过全局异常处理&#xff0c;你可以集中管理所有未捕获的异常&#xff0c;并以统一的方式响应它们。对于Web应用程序&#xff08;如使用Spring框架的应用&#xff09;&#xff0c;通常会创建一个…...

【go 】 select case 的用法

文章目录 1. 基本使用&#xff1a;监听多个通道&#xff0c;会阻塞2.带默认分支&#xff1a;非阻塞操作3. 永远监听多个通道4. 超时机制5. 关闭通道的处理6. context的关闭判断 相关文章&#xff1a; 【go】select 语句case的随机性 【go】 select case 超时机制(time.After)示…...

出海服务器可以用国内云防护吗

随着企业国际化进程的加速&#xff0c;越来越多的企业选择将业务部署到海外服务器上&#xff0c;以便更贴近国际市场。然而&#xff0c;海外服务器也面临着来自全球各地的安全威胁和网络攻击。当出海服务器遭受攻击时&#xff0c;是否可以借助国内的云服务器来进行有效的防护呢…...

前端权限控制

前端权限控制 一、路由权限&#xff08;控制页面访问&#xff09; vue // router.js const routes [{path: /dashboard,name: Dashboard,component: () > import(/views/Dashboard.vue),meta: { requiresAuth: true, roles: [admin, manager] }},{path: /user,name: Use…...