Javascript Clipper library, v6(介绍目录)
1.老祖宗C#版的Clipper2
Clipper2库可以对简单和复杂的多边形执行交集、并并、差分和异或布尔运算。它还执行多边形偏移
github地址:GitHub - AngusJohnson/Clipper2: Polygon Clipping and Offsetting - C++, C# and Delphi
2.目前的移植版本
基于C#版的移植版本和语言如下
语言 | 版本 | 文档地址 |
JavaScript | Javascript_Clipper_6.4.2.2_fpoint.zip(更新2017-09-08) | https://sourceforge.net/p/jsclipper/wiki/Home%206/ |
---|---|---|
WASM | Clipper2-WASM | GitHub - ErikSom/Clipper2-WASM: WASM port of Clipper 2 for Polygon Clipping and Offsetting |
Java | Clipper2-java | GitHub - micycle1/Clipper2-java: Java port of Clipper2, a Polygon Clipping and Offsetting Library |
Kotlin | clipper2-kotlin | GitHub - urbanistic/clipper2-kotlin |
golang | goclipper2 | GitHub - epit3d/goclipper2 |
3.JavaScript Clipper文档
3.1 使用前须知
操作对象: 多边形 polygons和线条 lines
操作方式:裁剪clipping和偏移offsetting
区别其他库(看点):
(1)处理所有类型多边形,包括自相交多边形
(2)支持多个多边形填充规则(偶奇,非零,正,负)
(3)执行速度快
(4)直线line和多边形polygon的偏移offsetting操作
术语:
(1)Clipping裁剪:一般认为裁剪就是给定的一个多边形(当然可以多个多边形),超出多边形之外的剪切掉,换算的是交集。但在本文档中,它指的是四种布尔操作(交集、并并、差异和异或)中的任何一种。
(2)subject/clip:被裁剪对象叫做subject, clip window等称为clip
(3)segment线段:由相连的两点(point/vertice)表示
(4)Path路径:直线或者多边形有序顶点序列,由一系列segment构成的路径
Open paths是指起点和终点不相连的Paths, 也叫做polylines
Close paths是指起点和终点相连的Paths,通常叫做polygon
subject可能是Open paths, 也可能是closed paths
clip只能是closed paths.
(5)Contour轮廓:同path术语
(6)Line直线:或者polyline折线是包含2个或更多顶点的开放路径。
(7)Polygon多边形:在本文档中,多边形指的是已知闭合的路径。
(8)simple polygons简单多边形: 由一条不自交(self-intersect)的Close Paths构成的图形称为简单多边形(simple polygons)
(9)complex polygons复杂多边形:如果Closed paths自相交,或者由多条Paths组成的polygons, 称为复杂多边形(complex polygons)
(7)Polygon Hole洞:是一个多边形内的封闭区域,它不是多边形的一部分。形成孔外边界的多边形称为孔多边形。 holes通常是由位于outer polygon contour内部的inner polygon contour 组成。
(8)Polygon Filling region 简单多变形(simple polygons)的填充区域是固定的,复杂多变形(complex polygons)的填充区域(Filling region)依赖填充规则(Filling rule),填充规则决定什么是hole, 什么不是hole, hole不填充,不属于填充区域,除掉hole的部分都属于填充区域。
(9)Polygon Filling Rule多边形填充规则:
通过填充,可以表明哪些区域是位于Closed path的内部,哪些区域是位于Closed path的外部。Clipper2支持4种填充规则(Filling rule),分别是:EvenOdd, NonZero, Positive, Negative,其中EvenOdd规则是基于射线法确定,NonZero, Positive, Negative是基于图形的winding number确定。
- EvenOdd: 也称交替填充( alternate filling),从图形的外部一点引一条射线,第一次相交Paths, 相应的区域填充,第二次相交的Paths,相应区域不填充,第三次相交Paths,相应区域填充,依次类推
- NonZero: Winding number不为0的部分填充
- Positive: Winding number 大于0的部分填充
- Negative: Winding number 小于0的部分填充
EvenOdd规则和Paths中edge direction和Winding number无关,其它三个与Paths中edge direction和Winding number相关。
(10)Winding number绕圈数
Winding number可以理解为绕圈数 ,详细解释见后续章节
(11)Touching
在Closed Paths中,segments通常被叫做edge.
- Edge touching是指edge共线(collinear)或重合(overlap)
- Polygon touching是指当两个polygon有Edge touching
(12)Polygon offseting
Polygon offseting就是将polygon变大或者变小。
Clipper2的offseting支持(inflating/deflating),不支持单方向的offseting,比如horizontal or vertical offseting。对于Open paths or Closed paths,Clipper都支持offseting
1. Join type
做Polygon offseting时,edge的连接类型(Join type)可能是Square、Round、Miter,这主要是对连接处非90度的情况进行处理的。它们分别的功能是:
- Square:当edge的join处,角度小于90度时,当inflate/deflate polygon时,会将尖角切掉,并且添加一条线段,添加的线段到join vertex的距离是inflate/deflate的offset。
- Round: 当edge的join处,角度小于90度时,当inflate/deflate polygon时,会将尖角切掉,并且添加一条凸型曲线,添加的曲线到join vertex的距离是inflate/deflate的offset。
- Miter: 当edge的join处,角度小于90度时,当inflate/deflate polygon时,会将尖角切掉,并且添加一条线段,添加的线段到join vertex的距离是inflate/deflate的offset * miter, miter的默认值是2,当miter为无穷大时,这种情况下inflate/deflate将保留原来图形的尖角(spike)。
2. End type
当进行做Polygon offseting时,由于input可能是Open paths or Closed paths,End type将指明如何对待input的ending vertices.
- Polygon: output result path将会被当做polygon(首尾相连,填充内部)
- Join: output result path 将会被当作polyline(首尾相连,内部不填充)–not clear
- Square: ends 延长offset长度,采用Square的方法截短
- Round:ends 延长offset长度,采用Square的方法截短
- Butt: ends不延长,采用Square方法截断
当对Polygons进行inflate/deflate时,EndType必须选择 EndType.Polygon,如果选择别的类型,将会支队polygon的outline进行inflate/deflate
3.2 Clipper2 中注意事项
3.2.1. polygon touching problem
由于subject可能是Open paths,也可能是closed paths,clip只能是closed paths.那么我们有时可能是clip closed paths,有时是clip open paths.
用的最多的是clip closed paths,这种情况下得到的外层contour一般是逆时针的(anti-clockwise/counter-clockwise),内层holes是顺时针的(clockwise),这意味着用EvenOdd填充方法或NonZero填充方法得到的contour是一样的。
clip closed paths最大的一个问题是得到的结果可能还有polygon touching的情况,如果遇到这样的情况,作者的建议是再调用一次union,那么得到的应该是最简(simplest/clean)形式的polygon。
3.2.2 Self-intersection polygon
boolean操作支持self-intersection polygon
offseting操作不支持self-intersection polygon
3.2.3 Rounding
在计算几何中,由于坐标是由离散的实数表示的(不管时整型还是浮点数),那么,从理论上来说,如果我们需要得到确切的坐标(比如两条线的交点),几何计算就不可能是numerically robust的。
Clipper2预期到了坐标的不精确,管理这种不精确性,做到了numerically robust,主要是通过以下几点:
- 用整型表示所有的内部坐标(by using integer variables rather than floats, maximum imprecision is constant. This simplifies differentiating significant from insignificant imprecision)。
- 使用算法来解决由于不精确性带来的坐标不是严格不等的问题
- 内部计算对所有的结果进行round
3.2.4 Self-intersection artefacts
在做union操作时,可能会有自相交的局部图形存在:
源码:有7625行源代码
3.3 将Clipper与SVG和Canvas一起使用示例:
Clipper 6 Info and Examples演示例子和源码
3.4 文档使用目录
- Clipper 6使用文档
- ClipperBase
- ClipperBase方法:
- ClipperBase.AddPath()
- ClipperBase.AddPaths()
- ClipperBase.Clear()
- ClipperBase
- Clipper
- ClipperLib.Clipper.ZFillFunction
- ClipperLib.Clipper.StrictlySimple
- ClipperLib.Clipper.ReverseSolution
- ClipperLib.Clipper.PreserveCollinear
- --- Clipper Properties ---
- ClipperLib.Clipper.SimplifyPolygons()
- ClipperLib.Clipper.SimplifyPolygon()
- ClipperLib.Clipper.ReversePaths()
- ClipperLib.Clipper.ReversePath()
- ClipperLib.Clipper.PolyTreeToPaths()
- ClipperLib.Clipper.PointInPolygon()
- ClipperLib.Clipper.Orientation()
- ClipperLib.Clipper.OpenPathsFromPolyTree()
- ClipperLib.Clipper.OffsetPaths()
- ClipperLib.Clipper.MinkowskiSum()
- ClipperLib.Clipper.MinkowskiDiff()
- ClipperLib.Clipper.GetBounds()
- ClipperLib.Clipper.Execute()
- ClipperLib.Clipper.ClosedPathsFromPolyTree()
- ClipperLib.Clipper.CleanPolygons()
- ClipperLib.Clipper.CleanPolygon()
- ClipperLib.Clipper.Area()
- ClipperLib.Clipper()
- --- Clipper methods ---
- Types
- ClipperLib.ClipType()
- ClipperLib.EndType
- ClipperLib.EndType_
- ClipperLib.ExPolygon()
- ClipperLib.ExPolygons()
- InitOptions
- ClipperLib.IntPoint()
- ClipperLib.IntRect()
- ClipperLib.JoinType
- ClipperLib.Path()
- ClipperLib.Paths()
- ClipperLib.PolyFillType
- ClipperLib.PolyType
- ClipperLib.Clipper.ZFillCallback()
- ClipperLib.ClipType()
- PolyTree
- --- PolyTree methods ---
- ClipperLib.PolyTree()
- ClipperLib.PolyTree.Clear()
- ClipperLib.PolyTree.GetFirst()
- ClipperLib.PolyTree.Total()
- PolyNode
- --- PolyNode methods ---
- ClipperLib.PolyNode()
- ClipperLib.PolyNode.ChildCount()
- ClipperLib.PolyNode.Childs()
- ClipperLib.PolyNode.Contour()
- ClipperLib.PolyNode.GetNext()
- ClipperLib.PolyNode.IsHole()
- ClipperLib.PolyNode.Parent()
- --- PolyNode properties ---
- ClipperLib.PolyNode.IsOpen
- ClipperOffset
- --- ClipperOffset methods ---
- ClipperLib.ClipperOffset()
- ClipperLib.ClipperOffset.AddPath()
- ClipperLib.ClipperOffset.AddPaths()
- ClipperLib.ClipperOffset.Clear()
- ClipperLib.ClipperOffset.Execute()
- --- ClipperOffset properties ---
- ClipperLib.ClipperOffset.ArcTolerance
- ClipperLib.ClipperOffset.MiterLimit
- Rounding
- JS
- --- JS methods ---
- ClipperLib.JS.AreaOfPolygon()
- ClipperLib.JS.AreaOfPolygons()
- ClipperLib.JS.BoundsOfPath()
- ClipperLib.JS.BoundsOfPaths()
- ClipperLib.JS.Clone()
- ClipperLib.JS.Clean()
- ClipperLib.JS.Lighten()
- ClipperLib.JS.PerimeterOfPath()
- ClipperLib.JS.PerimeterOfPaths()
- ClipperLib.JS.ScaleDownPath()
- ClipperLib.JS.ScaleDownPaths()
- ClipperLib.JS.ScaleUpPath()
- ClipperLib.JS.ScaleUpPaths()
- ClipperLib.JS.PolyTreeToExPolygons()
- ClipperLib.JS.ExPolygonsToPaths()
- Copyright
- ClipperLib.Clipper.ZFillFunction
相关文章:
Javascript Clipper library, v6(介绍目录)
1.老祖宗C#版的Clipper2 Clipper2库可以对简单和复杂的多边形执行交集、并并、差分和异或布尔运算。它还执行多边形偏移 github地址:GitHub - AngusJohnson/Clipper2: Polygon Clipping and Offsetting - C, C# and Delphi 2.目前的移植版本 基于C#版的移植版本…...
uniapp+vue3+ts请求接口封装
1.安装luch-request yarn add luch-requestnpm install luch-request2.新建文件src/utils/request.ts 需要自己修改config.baseURL和token(获取存储的token) // import HttpRequest from luch-request; import type { HttpRequestConfig, HttpRespons…...
Spring Boot中的@GetMapping注解可以用于处理HTTP GET请求,并且可以接收对象参数,详细示例
下面内容来自Ai回答,经过亲自验证,正确 Spring Boot中的GetMapping注解可以用于处理HTTP GET请求,并且可以接收对象参数。 接收对象参数的基本方式 在Spring Boot中,可以通过GetMapping注解接收对象参数,这通…...
详解Vue设计模式
详解 vue 设计模式 Vue.js 作为一个流行的前端框架,拥有许多设计模式,这些设计模式帮助开发者更好地组织和管理代码,提升代码的可维护性、可扩展性和可读性。Vue 设计模式主要体现在以下几个方面: 1. 组件化设计模式 (Compon…...
webpack 题目
文章目录 webpack 中 chunkHash 和 contentHash 的区别loader和plugin的区别?webpack 处理 image 是用哪个 loader,限制 image 大小的是...;webpack 如何优化打包速度 webpack 中 chunkHash 和 contentHash 的区别 主要从四方面来讲一下区别&…...
Mysql - 存储引擎
一 MYSQL体系结构简介 MYSQL的体系结构可以分为四个层级,从上往下依次为: 1. 连接层: 最上层为客户端以及一些连接服务,包含连接操作,例如JAVA想要与MYSQL建立连接就需要用到JDBC,PHP语言与Python也可以连接到MYSQL&am…...
【实战教程】使用YOLOv8 OBB进行旋转框目标检测的数据集定义与训练【附源码】
《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...
怎么实现邮件营销自动化?
邮件营销能够出色地帮助我们与客户建立良好关系。无论是新客户还是老客户,都可以通过邮件来达成较为良好的客户关系。然而,从消费者的角度来看,每个人都有自己独特的习惯和特点,没有人希望收到千篇一律、营销意味过重的邮件。因此…...
华为服务器使用U盘重装系统
一、准备工作 下载官方系统(注意服务器CPU的架构是x86-64还是aarch64,不然可能报意想不到的错)制作启动U盘(下载rufus制作工具,注意文件系统选FAT32还是NTFS) 二、安装步骤 将U盘插入USB接口重启服务器…...
空安全编程的典范:Java 8中的安全应用指南
文章目录 一、Base64 编码解码1.1 基本的编码和解码1.2 URL 和文件名安全的编码解码器1.3 MIME Base64编码和解码 二、Optional类三、Nashorn JavaScript 一、Base64 编码解码 1.1 基本的编码和解码 Base64 编码: 使用 Base64.getEncoder().encodeToString(origin…...
深入解析 Loss 减少方式:mean和sum的区别及其在大语言模型中的应用 (中英双语)
深入解析 Loss 减少方式:mean 和 sum 的区别及其在大语言模型中的应用 在训练大语言模型(Large Language Models, LLM)时,损失函数(Loss Function)的处理方式对模型的性能和优化过程有显著影响。本文以 re…...
opencv4.8 ubuntu20.04源码编译 安装报错记录
-- IPPICV: Downloading ippicv_2021.8_lnx_intel64_20230330_general.tgz from https://raw.githubusercontent.com/opencv/opencv_3rdparty/1224f78da6684df04397ac0f40c961ed37f79ccb/ippicv/ippicv_2021.8_lnx_intel64_20230330_general.tgz make -j8 到这咋不动了 代理配…...
16-03、JVM系列之:内存与垃圾回收篇(三)
JVM系列之:内存与垃圾回收篇(三) ##本篇内容概述: 1、执行引擎 2、StringTable 3、垃圾回收一、执行引擎 ##一、执行引擎概述 如果想让一个java程序运行起来,执行引擎的任务就是将字节码指令解释/编译为对应平台上的本地机器指令才可以。 简…...
在 Spring Boot 中使用 JPA(Java Persistence API)进行数据库操作
步骤 1: 添加依赖 在 pom.xml 文件中添加相关依赖: <dependencies><!-- Spring Boot Starter Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><…...
【sqlserver】mssql 批量加载数据文件 bulk copy使用
参考文章: Using bulk copy with the JDBC driver SqlServer数据批量写入 SqlServer批量插入数据方法–SqlBulkCopy sqlserver buld copy需要提供,数据文件的对应表的元数据信息主要的字段的位置、字段的名称、字段的数据类型。 执行bulk load时候不一…...
卷积神经网络(CNN)的层次结构
卷积神经网络(CNN)是一种以其处理图像和视频数据的能力而闻名的深度学习模型,其基本结构通常包括以下几个层次,每个层次都有其特定的功能和作用: 1. 输入层(Input Layer): 卷积神经网…...
使用Excel的COUNTIFS和SUMIFS函数进行高级数据分析
使用Excel的COUNTIFS和SUMIFS函数进行高级数据分析 引言 在处理数据时,Excel 提供了多种内置函数来帮助用户快速获取所需信息。其中,COUNTIFS 和 SUMIFS 是两个非常强大的多条件聚合函数,它们允许你根据一个或多个标准来统计或汇总数据。本…...
上传ssh公钥到目标服务器
创建密钥 ssh-keygen -t rsa -b 4096 -C "xxxx.xx"上传 sudo ssh-copy-id -i /Users/xx/.ssh/id_rsa.pub root127.0.0.1...
在visio2021 中插入MathType公式
首先要确保有着两个软件,且能用。 1、打开visio2021,之后点击“插入”-“对象” 2、打开后,选择MathType,确定 3、确定后就会弹出MathType编辑器...
【计算机视觉】图像的几何变换
最常见的几何变换有仿射变换和单应性变换两种,最常用的仿射变换有缩放、翻转、旋转、平移。 1. 缩放 将图像放大或缩小会得到新的图像,但是多出的像素点如何实现----插值 1.1 插值方法 最近邻插值 双线性插值 cv2.resize() 是 OpenCV 中用于调整图像…...
IS-IS四
目录 点到点中LSP(类似LSA)的同步过程 注意LSP只有(1类LSA和2类LSA) 查看详细信息:display isis lsdb 0000.0000.0001.00-00 verbose 开摸: ISIS的伪节点LSP(类似LSA)没有路由信息 L1路由器的路由计算…...
CODA 离线安装及虚幻镜迁移
1、离线安装 1.1 下载Miniconda安装脚本 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh1.2 添加权限 chmod x Miniconda3-latest-Linux-x86_64.sh1.3 执行安装 ./Miniconda3-latest-Linux-x86_64.sh遇到问题,一路回车即可 1.4 …...
【Rive】混合动画
1 混合动画简介 【Rive】动画 中介绍了 Rive 中动画的基础概念和一般动画的制作流程,本文将介绍混合动画的基础概念和一般制作流程。Unity 中混合动画介绍详见→ 【Unity3D】动画混合。 混合动画是指同一时刻多个动画按照一定比例同时执行,这些动画控制的…...
软件体系结构复习-02 软件体系结构定位及构建
软件体系结构复习-02 软件体系结构定位及构建 原文链接:《软件体系结构复习-02 软件体系结构定位及构建》 目录 软件体系结构复习-02 软件体系结构定位及构建 1 什么是软件体系结构 2 软件生命周期中的软件体系结构 2.1 生命周期 2.2 定位与作用 1 规划和需求…...
MySQL-SQL语句
文章目录 一. SQL语句介绍二. SQL语句分类1. 数据定义语言:简称DDL(Data Definition Language)2. 数据操作语言:简称DML(Data Manipulation Language)3. 数据查询语言:简称DQL(Data Query Language)4. 数据控制语言:简称DCL(Data …...
Windows版Docker上不了网怎么办?
1、判断你的config文件、daemon文件的位置。 docker info命令输入, buildx: Docker Buildx (Docker Inc.) Version: v0.17.1-desktop.1 Path: C:\Users\AAA\.docker\cli-plugins\docker-buildx.exe 这个是你电脑这些文件的位置,修改linu…...
Zabbix监控Oracle 19c数据库完整配置指南
Zabbix监控Oracle 19c数据库完整配置指南 本文将详细介绍如何使用Zabbix配置Oracle 19c数据库监控,包括安装、配置、问题排查等全过程。本指南适合新手独立完成配置。 1. 环境准备 1.1 系统要求 Oracle 19c数据库服务器Zabbix服务器(版本5.0或更高&a…...
解决 Maven 部署中的 Artifact 覆盖问题:实战经验分享20241204
🛠️ 解决 Maven 部署中的 Artifact 覆盖问题:实战经验分享 📌 引言 在软件开发过程中,持续集成和持续部署(CI/CD)是提高开发效率和代码质量的关键手段。Hudson 和 Maven 是两种广泛使用的工具࿰…...
mb108里opengl相关
linux/linuxgdi.cpp里CreateWindowExW的 g_signal_connect(self->m_glArea, "render", G_CALLBACK(onRenderGlTextures), self); 绑定了一个渲染事件回调。 另外有 g_signal_connect(self->m_glArea, "realize", G_CALLBACK(onRealizeGlTextures)…...
使用docker让项目持续开发和部署
大多人选择开发时在本地,部署时文件都在容器里,如果没有容器,那就本地开发,没有映射文件,如果部署环境到容器了,容器内部启动时设置执行命令,再将映射的文件进行编译,这就直接能实现…...
数据结构-查找
数据结构——二叉树先序、中序、后序及层次四种遍历(C语言版)_中序遍历-CSDN博客...
2030. gitLab A仓同步到B仓
文章目录 1 A 仓库备份 到 B 仓库2 B 仓库修改main分支的权限 1 A 仓库备份 到 B 仓库 #!/bin/bash# 定义变量 REPO_DIR"/home/xhome/opt/git_sync/zz_xx_xx" # 替换为你的本地库A的实际路径 REMOTE_ORIGIN"http://192.168.1.66:8181/zzkj_software/zz_xx_xx.…...
Ubuntu防火墙管理(五)——ufw源规则解读与修改
firewalld与nftables 在 /etc/firewalld/firewalld.conf 文件中,FirewallBackend 选项用于指定 Firewalld 使用的防火墙后端实现。具体来说: nftables:这是当前的默认选项,表示 Firewalld 将使用 nftables 作为防火墙后端。nftab…...
Flink+Paimon实时数据湖仓实践分享
随着 Paimon 近两年的推广普及,使用 FlinkPaimon 构建数据湖仓的实践也越来越多。在 Flink 实时数据开发中,对于依赖大量状态 state 的场景,如长周期的累加指标计算、回撤长历史数据并更新等,使用实时数仓作为中间存储来代替 Flin…...
全面解析DApp开发中的智能合约设计
在DApp的开发过程中,智能合约的设计起到了至关重要的作用。智能合约是运行在区块链上的程序,负责处理和执行DApp中的逻辑、交易和数据存储。下面我们将深入探讨智能合约的设计原则、挑战和优化方法,帮助开发者掌握如何设计高效、安全的智能合…...
强化学习新突破:情节记忆与奖励机制引领多智能体协作
简介 本推文介绍了韩国科学技术院发表在人工智能顶会ICLR 2024上的论文《Efficient Episodic Memory Utilization of Cooperative Multi-Agent Reinforcement Learning》。该论文提出创新性高效情节记忆利用(Efficient Episodic Memory Utilization,EMU…...
VUE3学习二
教程视频 【尚硅谷Vue3入门到实战,最新版vue3TypeScript前端开发教程】https://www.bilibili.com/video/BV1Za4y1r7KE?p67&vd_sourcef1bd3b5218c30adf0a002c8c937e0a27 零 环境搭建 学习环境 windows10node 18vue3 创建项目 npm create vuelatest 选项中…...
MySQL Group Replication
参考文档: https://dev.mysql.com/doc/refman/8.4/en/group-replication-configuring-instances.html MySQL版本: mysql> select version(); ----------- | version() | ----------- | 8.4.3 | ----------- 1 row in set (0.00 sec)mysql> …...
设计模式学习思路二
设计模式的学习思路_设计模式必须按顺序进行吗-CSDN博客 以下是一些方法和思路可以帮助你更清晰地识别使用了哪种设计模式。 1. 确定模式时的思考步骤 以下是分析代码时,你可以遵循的一些思路和步骤,帮助你识别可能使用的设计模式: a. 识别…...
MySql 笔记
drop database if exists school; create database school default charset utf8; -- 切换到数据库school use school; -- 创建学生表 drop table if exists tb_student; create table tb_student ( stuid int not null comment 学号, stuname varchar(20) not null comment 姓…...
【Qt】QTableView选中行发生变化时触发的信号
问题 QTableView选中的行发生变化时,使用的信号是QTableView的selectionModel()里的currentChanged信号,界面点击行来回切换,发现怎么也触发不了? 原因 信号槽连接放在了QTableView数据初始化前面,这时候QTableView…...
qt图像合成模式分析
文章目录 定义含义示例分析CompositionMode_ClearCompositionMode_SourceCompositionMode_DestinationCompositionMode_SourceOverCompositionMode_DestinationOverCompositionMode_SourceInCompositionMode_DestinationInCompositionMode_SourceOutCompositionMode_Destinatio…...
http与https的区别
加密方式: 加密技术是对信息进行编码和解码的技术,编码是把原来可读信息(又称明文)译成代码形式(又称密文),其逆过程就是解码(解密),加密技术的要点是加密算…...
Pyside6 --Qt Designer--Qt设计师--了解+运行ui_demo_1.py
目录 一、打开Qt设计师1.1 Terminal终端1.2 打开env,GUI虚拟环境下的scripts文件1.3 不常用文件介绍(Scripts下面) 二、了解Qt设计师的各个控件作用2.1 点击widget看看效果!2.2 点击Main Window看看效果 三、编写一个简易的UI代码…...
11.17【大数据】Hadoop【DEBUG】
列出hdfs文件系统所有的目录和文件 主节点上 子结点 是一样的 *为什么能登进 slave 02 的主机,但是 master 当中依然显示 slave 02 为 DeadNode?* hadoop坏死节点的重启_hadoop3 子节点重启-CSDN博客 注意hadoop-daemon.sh 实际上位于 Hadoop 的 sbin 目录中,而不…...
MQ:kafka-消费者的三种语义
文章目录 前言(一) 创建topic(二) 生产者(三)消费者1. At-most-once Kafka Consumer2. At-least-once kafka consumer3. 使用subscribe实现Exactly-once4. 使用assign实现Exactly-once 前言 本文主要是以kafka 09的client为例子,详解kafka c…...
QT 线程锁
在 Qt 中,线程锁是用来同步多线程访问共享资源的机制,防止数据竞争和线程安全问题。Qt 提供了几种线程锁和同步工具,主要包括以下几种: 1. QMutex 功能:QMutex 是 Qt 中最常用的互斥锁(mutex)…...
C++中protobuf Message与JSON的互相转换
C中protobuf Message与JSON的互相转换 环境: protobuf: v27.3(2024-08-01) abseil: 20240722.0文章目录 C中protobuf Message与JSON的互相转换前言1. 编写通讯录addressbook.proto2. 编译3. C中测试protobuf与json的转换4. 结果 前言 PB转JSON:Protoc…...
Milvus向量数据库03-搜索理论
Milvus向量数据库03-搜索理论 1-ANN搜索 通过 k-最近邻(kNN)搜索可以找到一个查询向量的 k 个最近向量。kNN 算法将查询向量与向量空间中的每个向量进行比较,直到出现 k 个完全匹配的结果。尽管 kNN 搜索可以确保准确性,但十分耗…...
qt QCryptographicHash详解
1、概述 QCryptographicHash是Qt框架中提供的一个类,用于实现加密散列函数,即哈希函数。哈希函数能够将任意长度的数据转换为固定长度的哈希值,也称为散列值或数据指纹。这个哈希值通常用于数据的完整性校验、密码存储等场景。QCryptographi…...