开发EDA工具常用的三方开源
EDA软件是制造芯片重要工具,是现在举国的大难题。这个工具难在哪里,几句话说不清,但它确实也有一些非常通用的功能,这些功能依赖一些成熟的轮子,这些轮子,就是三方的开源项目,下面列举一些常用的开源项目,供大家参考。
首先,我们假定EDA工具使用C++开发技术栈。按用途把用到的开源项目分为以下几类。
- 通用C++框架:boost
- 数据格式:jsoncpp,protobuf,pugixml,spdlog,tabulate,zlib,QXlsx
- GUI 工具:Scintilla,Cairo,fmt
- 并行编程:QtPromise,oneTBB,taskflow
- 安全/加密:openSSL
- 算法/机器学习:LEMON,eigen,TreeLite,flute,cholmod,minisat,z3,opencv
- 解释器:tcl,chaiScript,Verible
- 其它工具:breakpad
通用C++框架
boost
https://github.com/boostorg/boost boost org 社区
【介绍】
这个大家都知道吧,不用过多介绍,实际上后期的C++标准,大都来源于boost社区的这个项目。如果你不想升级到C++最新版本,直接引用boost是最佳选择。
【使用】
BSL-1.0 license 知名的C++开发库,随便用。
GUI界面
对于GUI,一般会采用QT这种跨平台的UI框架,QT我们就不再介绍了。但除了QT,还会用到一些其它特殊的UI处理组件。
Scintilla
Scintilla and SciTE
Neil Hodgson <neilh@scintilla.org> 个人为主,社区维护
【介绍】
提供代码编辑器组件,完成多种编辑器的渲染,从 1999.3 开始,一共发布了超200个版本,社区活跃,支持度超好。对于EDA工具的 Verilog,SystemVerilog,Tcl,VHDL 支持度都很好。
【使用】
HPND(Historical Permission Notice and Disclaimer) License,很友好。可以任意修改,嵌入代码后商用发布,无需开源自已的代码。
Cairo
cairographics.org Carl Worth 个人
【介绍】
跨平台支持:Cairo 是一个跨平台的绘图库,可以在多种操作系统上使用,包括 Windows、Linux、macOS 等。多种绘图表面支持:Cairo 支持多种不同的绘图表面,包括屏幕显示、图像文件、PDF、SVG 等,以满足不同的输出需求。强大的绘图功能:Cairo 提供了丰富的绘图功能,包括直线、曲线、多边形、文本、渐变、阴影等。可以使用这些功能来创建各种复杂的图形和图像效果,很好的将place的放置过程用图像表现出来。简单易用的 API:Cairo 提供了简单易用c++的 API 接口,使得开发者可以快速上手并进行绘图操作。它的设计目标是简洁、直观,同时提供了丰富的功能选项和配置项,以满足不同的需求。
我理解这更多是一种使用的习惯,有一些人会习惯于使用Cario。它是以前非常流行的2D图形渲染。
【使用】
COPYING-LGPL-2.1 可闭源使用,但活跃度一般,可能有点过时了。
fmt
https://github.com/fmtlib/fmt
Victor Zverovich 个人
【介绍】
C++ 格式化输出工具,知名,活跃的开源库(类似强化的 format工具)
【使用】
MIT License,放开了用。
并行编程
QtPromise
https://github.com/simonbrunel/qtpromise
Simon Brunel 个人,社区
【介绍】
很方便在QT的GUI中进行异步运行,很好地支持了GUI中的异步执行模型。优秀的QT开源项目,被广泛使用。比如:我们要为IDE提供flow多任务管理,综合/实现过程的后台任务管理等……
【使用】
MIT License 非常友好的License.
oneTBB
GitHub - uxlfoundation/oneTBB: oneAPI Threading Building Blocks (oneTBB)
Intel 公司
【介绍】
oneTBB是intel发布的一个开源C++模板库,对并行编程提供了适当抽象,提供了并行task和常用并行容器,非常适合做并行化程序。注意:这里更多处理多核。
【使用】
Apache license。大公司背书,稳定项目。是否采用,个人习惯吧。但这个功有是挺强大的。
taskflow
https://github.com/taskflow/taskflow/tree/master
Dr. Tsung-Wei Huang 个人
【介绍】
并行,任务调度。注意,这里处理的是异构计算,和多核有所不同。
【使用】
MIT license。
安全加密
openSSL:
https://github.com/openssl/openssl
Hyunsu Cho, Mu Li 个人
【介绍】
OpenSSL 是一款功能强大的商业级全功能开源工具包,用于传输层安全 (TLS) 协议(以前称为安全套接字层 (SSL) 协议)。该协议的实现基于全功能通用加密库,也可单独使用。主要用途还是在加密方面。对于EDA工具,必须要帮助客户提供安全的加密手段,保证开发者的源码安全的传递。包括位流的加密,源码Ip的加密等。
【使用】
Apache License v2.0,稳定版本。可商用。
算法&AI:
minisat:
https://github.com/agurfinkel/minisat
个人:Niklas Een, Niklas Sorensson
【介绍】
SAT求解器(SAT Solver)是解决 布尔可满足性问题(Boolean Satisfiability Problem, 简称 SAT) 的一种算法工具。SAT 是计算机科学领域中最基本和最重要的决策问题之一,其主要目标是判断一个布尔公式是否可以通过某种变量赋值使其为“真”。
先 判定是否可为真,如果可行,就找出相应的变量值 。
-
逻辑综合: 在逻辑综合过程中,SAT 求解器用于优化和表示电路结构,确保设计的正确性和效率。
-
形式化验证: 通过模型检测和等价性验证,SAT 求解器帮助验证电路是否满足特定属性或两个电路是否等价。
-
电路测试: 在生成测试向量以覆盖潜在的缺陷模型时,SAT 求解器用于确定输入向量,确保电路的可靠性。
minisat是高性能的SAT求解器。
对于一些构建好的布尔表达式,可以求解变量,比如:拥塞路径,需要求解其中变量和constraint。
【稳定性/活跃度】
功能非常稳定,在2010年更新了 2.2.0版本后,就基本没有变化过了。但它确实是计算机科学和工程领域被广泛使用。
【使用方法】
https://github.com/agurfinkel/minisat/blob/master/LICENSE
通过动态库引用,可闭源商用,可修改本版本,但需要保留版权说明,许可说明,免责声明。
Z3:
GitHub - Z3Prover/z3: The Z3 Theorem Prover
【用途】
Z3 是一个由 微软研究院 开发的高效开源 SMT(Satisfiability Modulo Theories)求解器,广泛应用于自动化推理、形式化验证、软件工程、硬件验证等领域。它不仅可以解决传统的 SAT(布尔可满足性) 问题,还可以处理更加复杂的 SMT 问题,即包含多种理论的约束,如整数、实数、数组、位向量等。
SMT:(Satisfiability Modulo Theories)求解器扩展了SAT,可以处理带有整数,实数,数组等类型的约束。
【稳定性和活跃度】
这个活跃度挺高的,最新的版本是:2024.10.11 发布的 v4.13.3 版本。
【使用】
MIT的License,https://github.com/Z3Prover/z3/blob/master/LICENSE.txt
可闭源商用,需要保留版权说明,许可说明,免责声明。
TreeLite:
Treelite — Treelite 4.5.0-dev documentation
Hyunsu Cho, Mu Li 个人
【介绍】
TreeLite 是一个用于决策树和随机森林的高性能、轻量级的 C++ 库。它的设计旨在提供快速的决策树训练和预测能力,同时具有较低的内存占用和计算资源消耗。它同时支持lightGBM、XGBoost和sklearn所训练的决策树模型。配合 XGBoost的标准解法,业内通用。在Placement中可能会有AI估算,会使用到XGBoost。一般用在预测算法上,算是ML算法。
【使用】
Apache License v2.0,可安全的商用。版本相对稳定。
LEMON:
LEMON
Egerváry Research Group on Combinatorial Optimization (EGRES) 组织
【介绍】
图算法,这在EDA的 Place & Route中会使用到,
【使用】
BSL-1.0 license,注意,它只有头文件,无需单独的编译。
eigen
libeigen / eigen · GitLab
eigen.tuxfamily.org 组织
【介绍】
线性代数的模块库,矩阵,向量等运算。
【使用】
BSL-1.0 license,稳定,注意,只有头文件。
flute
FLUTE
Dr. Chris C. N. Chu 朱振宁博士
【介绍】
布线估算。快速且准确,FLUTE是一种非常快速准确的rectilinear Steiner minimal tree(RSMT) 构造。提供一个由用户定义的参数,其可以控制准确性和运行时间的权衡。 对于不超过9层的网络来说,FLUTE是最佳的,速度极快。可以在几分钟内,面对具有数百万个引脚的网络生成准确的 RSMT 。最适用于网络为大多数net的度数为 30 或更低。
【使用】
ATTRIBUTION ASSURANCE LICENSE (adapted from the original BSD license)
可商用发布。
cholmod
https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CHOLMOD
DrTimothyAldenDavis 个人
【介绍】
稀疏矩阵运算包。用于Placement
【使用】
SuiteSparse_config: 从源码的注释头可见开源协议是 SPDX-License-Identifier: BSD-3-clause 这是非常宽松的协永远爱,不需要开源商业软件中的代码。其余适用LGPL模块具有独立性(All CHOLMOD modules are licensed separately),可以通过动态库链接方式使用,不需要开源商业软件的代码。
opencv:
OpenCV - Open Computer Vision Library
Alexander Alekhin opencv 组织
【介绍】
计算机视觉和机器学习软件库。
【使用】
Apache-2.0 license 可商用。知名应用,用就是了。
格式:
tabulate:
https://github.com/p-ranav/tabulate
【用途】
用来在Report模块中输出表格,可以输出 纯文本的表格,Markdown,HTML多种格式。有时候为了兼容性,会输出纯文本表格。
【活跃度】
版本的活跃度一般,功能较稳定。
【使用】
MIT的许可,很宽松。
jsoncpp:
GitHub - open-source-parsers/jsoncpp: A C++ library for interacting with JSON.
Christopher Dunn 个人
【用途】
json的解析器。不用多说。
【使用】
MIT license, or public domain,很稳定的开源项目
protobuf
https://github.com/protocolbuffers/protobuf
Joshua Haberman 组织
【介绍】
高效的数据传输/交换格式,google研发。对于C++,标配必然是 protobuf
【使用】
3-clause BSD License 可商用,最高效的数据传输格式。
pugixml
https://github.com/zeux/pugixml
Arseny Kapoulkine 个人
【介绍】
xml parser。
【使用】
MIT License
spdlog
GitHub - gabime/spdlog: Fast C++ logging library.
Gabi Melman 个人
【介绍】
日志生成工具,很好的处理多线程,文件自动截断等……
【使用】
MIT License
工具:
breakpad:
https://github.com/google/breakpad
【介绍】
Google 公司开发。
Breakpad 是一个开源项目,旨在为应用程序提供 崩溃报告 功能,特别是在 C++ 和 C 语言环境下。它用于捕获崩溃时的堆栈跟踪(stack trace),并将信息转化为易于分析的格式。这对于调试和错误报告至关重要,尤其是在生产环境中出现崩溃的情况下。通过使用 Breakpad,开发人员能够收集详细的崩溃信息,从而加速错误的定位和修复过程。
除了捕获常见的崩溃信息,Breakpad 还能够捕捉 C++ 异常 和 SIGSEGV 等信号引起的崩溃,确保捕获到尽可能多的崩溃信息。这个C++程序非常重要的调试手段。
这是对于C++程序比较重要的工具,特别是对于性能要求较高的程序。
目前win下没有崩溃异常。另外linux下崩溃需要系统开启支持,但是linux下产生的dmp文件比较大,耗时也比较久。
它是一个高效快速小巧的崩溃捕获,从而帮助我们发现程序崩溃问题,提高程序健壮性
【活跃度】
功能较稳定,活跃度不高。
【使用】
https://github.com/google/breakpad/blob/master/LICENSE
可以以源代码方式引用,且可以修改。
正常使用,我们会采用静态链接的方式。
程序启动时,需要有初始化,这对于程序有点影响,当发生崩溃时,需要堆栈跟踪生成和符号化,但这时已经崩溃,你可以认为对程序正常运行无影响。
QXlsx:
https://github.com/QtExcel/QXlsx
【介绍】
QXlsx 是一个用于在 C++ 应用程序中操作 Excel 文件的开源库,它提供了一个方便的接口来读取、写入和修改 Excel 文件,特别是 XLSX 格式(Office Open XML 格式)。该库是基于 Qt 框架开发的,利用了 Qt 的强大功能,能够跨平台运行(支持 Windows、Linux 和 macOS)。QXlsx 是一个轻量级的库,适用于需要在 C++ 中处理 Excel 文件的开发者。
确实存在需要导出为Excel的情况,非常常见。
【使用】
QXlsx/LICENSE at master · QtExcel/QXlsx · GitHub
MIT 的license,非常宽松,随便用。
解释器
ChaiScript:
【介绍】
是一个为 C++ 设计的开源嵌入式脚本语言,它允许你在 C++ 程序中集成脚本语言,从而能够轻松地动态执行 C++ 程序逻辑。与其他嵌入式脚本语言(如 Lua、Python、JavaScript 等)相比,ChaiScript 的最大特点是其完全用 C++ 编写,直接为 C++ 提供脚本支持,从而能更好地与 C++ 环境结合,提供更高的执行性能和灵活性。
Verible:
https://github.com/chipsalliance/verible
CHIPS Alliance<https://chipsalliance.org/>
【介绍】
Verilog & System Verilog语言服务器,用于实现语法检查、Format、符号parser等。
开源特点:常用的Verilog & System Verilog语言服务器。
【使用】
Apache License
tcl:
GitHub - tcltk/tcl: The Tcl Core. (Mirror of core.tcl-lang.org)
Donal Fellows 个人
【介绍】
tcl引擎核心和API
好吧,先列这么多项目,肯定还有不少,后续再补。
相关文章:
开发EDA工具常用的三方开源
EDA软件是制造芯片重要工具,是现在举国的大难题。这个工具难在哪里,几句话说不清,但它确实也有一些非常通用的功能,这些功能依赖一些成熟的轮子,这些轮子,就是三方的开源项目,下面列举一些常用的…...
微信小程序中 crypto-js 加解密全攻略
一、引言 在微信小程序开发中,数据的安全至关重要。加解密技术在保护用户数据和应用程序的安全性方面起着关键作用。小程序在与服务器进行数据交互时,面临着数据泄露、篡改等安全风险。为了确保用户信息的安全,选择合适的加解密算法变得尤为…...
Vue2 - 最新实现将多个文件批量导出为ZIP压缩包格式并下载功能,纯前端下载多个文件打包输出成zip格式,vue2将文件批量下载打包成ZIP下载保存本地(后端二进制文件流/base64图片/url
前言 Vue3 版本,请访问 这篇文章。 在 vue2 | nuxt2 项目开发中,详解实现把多个文件组合成一个ZIP压缩包格式下载到用户本地,将文件批量下载打包成zip格式并自定义压缩包命名名称,vue批量下载文件并导出为压缩包的功能,如何将后端返回的二进制文件流打包成zip格式,支持任…...
The Rise and Potential of Large Language ModelBased Agents:A Survey---摘要、背景、引言
题目 基于大语言模型的Agent的兴起与发展前景 论文地址:https://arxiv.org/pdf/2309.07864.pdf 项目地址:https:/github.com/WooooDyy./LLM-Agent–Paper-List 摘要 长期以来,人类一直在追求等同于或超越人类水平的人工智能(A),…...
【unity】从零开始制作平台跳跃游戏--界面的认识,添加第一个角色!
在上一篇文章中,我们已经完成了unity的环境配置与安装⬇️ 【Unity】环境配置与安装-CSDN博客 接下来,让我们开始新建一个项目吧! 新建项目 首先进入unityHub的项目页面,点击“新项目”: 我们这个系列将会以2D平台…...
Java中的Stream
1. 什么是 Stream? Stream 是 Java 8 引入的一种新方式,目的是帮助我们更简洁、更高效地处理集合(如 List、Set、Map 等)。你可以把 Stream 想象成一条“流水线”,数据就像是流水线上的原材料,经过流水线的…...
ARM学习(36)静态扫描规则学习以及工具使用
笔者来学习了解一下静态扫描以及其规则,并且亲身是实践一下对arm 架构的代码进行扫描。 1、静态扫描认识 静态扫描:对代码源文件按照一定的规则进行扫描,来发现一些潜在的问题或者风险,因为不涉及代码运行,所以其一般只是发现一些规范或则一些质量问题,当然这些可能存在潜…...
前端将base64转pdf页面预览
前端将base64转pdf页面预览 <embed :src"pdfList" width"100%" height"100%" type"application/pdf" />pdfList.value data:application/pdf;base64,${res}//后端传jpg或pdf格式可直接 :src“返回内容”显示...
Java-26 深入浅出 Spring - 实现简易Ioc-02 无IoC与AOP场景下实现业务
点一下关注吧!!!非常感谢!!持续更新!!! 大数据篇正在更新!https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了: MyBatisÿ…...
能不能用一句话或者简洁地凝练深度学习的本质和精髓?
深度学习就是学习输入与输出之间的映射关系。 深度学习模型本质上只是个参数量很大的函数,其中函数的参数可以通过训练样本进行调整。 根据训练样本的不同,进一步可以分为以下几类: 一、给定输入以及对应的输出,其中输出是唯一的…...
我的宝贵经验
在技术的浩瀚海洋中,一份优秀的技术文档宛如精准的航海图。它是知识传承的载体,是团队协作的桥梁,更是产品成功的幕后英雄。然而,打造这样一份出色的技术文档并非易事。你是否在为如何清晰阐释复杂技术而苦恼?是否纠结…...
发现一个对话框中的按钮,全部失效,点击都没有任何反应,已经解决
前端问题,技术vue2,ts。 发现一个对话框中的按钮,全部失效,点击都没有任何反应。 因为我只在template标签中加入下面这个代码,并没有注册。 只要有一个子组件没有注册,就会影响所有的按钮,使当前…...
深度学习中损失函数(loss function)介绍
深度学习中损失函数(loss function)介绍 在深度学习的宏伟城堡中,损失函数扮演着国王的角色,它决定了模型训练的方向和目标。损失函数,也被称为代价函数,是衡量模型预测与实际结果之间差异的函数。在深度学习的训练过程中&…...
【渗透测试】信息收集二
其他信息收集 在渗透测试中,历史漏洞信息收集是一项重要的工作,以下是相关介绍: 历史漏洞信息收集的重要性 提高效率:通过收集目标系统或应用程序的历史漏洞信息,可以快速定位可能存在的安全问题,避免重复…...
前端三大框架 Vue、React 和 Angular 的市场占比分析
一、引言 ?? 随着前端技术的迅速发展,Vue.js、React 和 Angular 已成为全球最受欢迎的三大前端框架。在国内外,不同的框架在市场中的占比和流行程度存在显著差异。本文将从全球和中国市场的角度,对这三大框架的市场占比进行分析࿰…...
Gitlab服务管理和仓库项目权限管理
Gitlab服务管理 gitlab-ctl start # 启动所有 gitlab 组件; gitlab-ctl stop # 停止所有 gitlab 组件; gitlab-ctl restart # 重启所有 gitlab 组件; gitlab-ctl status …...
MySQL ON DUPLICATE KEY UPDATE影响行数
目录 分析为什么Updates返回7 总结 数据库更新日志如下 insertOrUpdateList|> Preparing: INSERT INTO clue_user_tag (vuid, tag_id, tag_type, content) VALUES (?, ?, ?, ?) , (?, ?, ?, ?) , (?, ?, ?, ?) , (?, ?, ?, ?) ON DUPLICATE KEY UPDATE …...
美团2024年秋招第一场笔试【前端移动端】
美团2024年秋招第一场笔试【前端&移动端】 2024/12/12 1.在一个长度为28的数组中删除第5个元素时(元素序号:1~28),需要向前移动(23)个元素。 2.如下图一个树型结构,其结点E在树的中序遍历…...
【EXCEL】 获取多列中 不为空的那一个数据
从多个表格筛选出来的上班时间是下表这样的 我要把他们放在同一列,这样方便后续处理,合并列输入下面这个公式即可 日期不加 TEXT() 函数 转日期格式;将得到是一串数字 TEXT(TEXTJOIN(", ",TRUE,B2:F2),&qu…...
Qt 开发笔记2
1> 样式表加载 一定要在Ui 初始化之前调用, 之后调用会不生效。 2> 设置QlineEdit输入框 具体四周的间距: setTextMargins(m_nLeftTextMargin, m_nTopTextMargin, m_nRightTextMargin, m_nBottomTextMargin);3> 设置背景图(平滑不…...
R学习——数据框
目录 1数据框的合并 2数据框的访问 2.1 通过索引[] 2.2符号$访问 2.3 attach访问 2.4 with访问 1数据框的合并 当每个内容存储为单独的向量,data.frame可以进行这些内容单独数据框合并。 2数据框的访问 2.1 通过索引[] [i]输出对应的列 [i,]输出对应的行 …...
深入详解人工智能机器学习常见算法中的K-means聚类
目录 引言 1. K-means聚类的基本概念 1.1 K-means聚类的定义 1.2 K-means聚类的核心思想 1.3 K-means聚类的目标函数 2. K-means聚类的核心原理 2.1 初始化 2.2 分配 2.3 更新 2.4 迭代 3. K-means聚类的具体实现 3.1 K-means聚类的算法流程 3.2 K-means聚类的Pyt…...
TDengine SpringBoot操作
TDengine与Spring Boot的结合可以为开发者提供一个高性能、分布式的物联网、工业大数据处理平台,同时利用Spring Boot的简化配置和快速开发特性。以下是对TDengine与Spring Boot集成的详细解析: 一、TDengine简介 TDengine是由涛思数据开发的一款高性能…...
【sgFileLink】自定义组件:基于el-link、el-icon标签构建文件超链接组件,支持垃圾桶删除、点击预览视频/音频/图片/PDF格式文件
sgFileLink源代码 <template><div :class"$options.name"><el-link click.stop"clickFile(data)"><img :src"getSrc(data)" /><span>{{ getFileNameAndSize(data) }}</span></el-link><el-linkcl…...
C语言实验 函数一
时间:2024.12.14 6-1 弹球距离 double dist (double h,double p) {double sum = h,height;height = h*p;while(height>=TOL){sum += height * 2; //上行下行都算,所以是两倍的距离。height *=p;}return sum; } 6-2 使用函数输出一个整数的逆序数 错误代码:运行超…...
惠普Laser Jet MFP M437nda复印机成像装置严重不足及更换传输卷故障解决方法
惠普Laser Jet MFP M437nda复印机成像装置严重不足及更换传输卷故障解决方法,记录维修那点事儿,普通维修工的日常维修点滴; 惠普Laser Jet MFP M437nda复印机成像装置严重不足维修方法 如果复印及打印的效果没有问题的情况下我们也可以不更换套鼓及显影剂,那么不更换套鼓及…...
委托(Delegate)和事件(Event)-(下篇)
委托(Delegate)与事件(Event)-(上篇)-CSDN博客 上一篇内容! 一、创建非静态委托 在C#中,使用非静态委托意味着将委托绑定到类的实例方法上,而不是静态方法。这允许你通过委托调用特定对象上的方法&am…...
ios 开发配置蓝牙
如果使用了蓝牙功能, 又没有配置, 会出现以下错误: This app has crashed because it attempted to access privacy-sensitive data without a usage description. The apps Info.plist must contain an NSBluetoothAlwaysUsageDescription key with a string value explaini…...
JVM 栈帧结构详解
在 Java 虚拟机(JVM)中,栈帧(Stack Frame)是用于支持方法调用和方法执行的关键数据结构。每个方法从调用开始到执行完成,都对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。本文将详细介绍 JVM 栈帧的结构及…...
HTML和JavaScript实现商品购物系统
下面是一个更全面的商品购物系统示例,包含新增商品、商品的增加删除以及结算找零的功能。这个系统使用HTML和JavaScript实现。 1.功能说明: 这个应用程序使用纯HTML和JavaScript实现。 包含一个商品列表和一个购物车区域。商品列表中有几个示例商品&a…...
(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验三----学校选址与路径规划(超超超详细!!!)
目录 实验三 学校选址与道路规划 3.1 实验内容及目的 3.1.1 实验内容 3.1.2 实验目的 3.2 实验方案 3.3 操作流程 3.3.1 环境设置 3.3.2 地势分析 (1)提取坡度: (2)重分类: 3.3.3 学校点分析 (1)欧氏距离: (2)重分类: 3.3.4 娱乐场所点分析 (1)欧氏距离…...
ip_done
文章目录 路由结论 IP分片 数据链路层重谈Mac地址MAC帧报头局域网的通信原理MSS,以及MAC帧对上层的影响ARP协议 1.公司是不是这样呢? 类似的要给运营商交钱,构建公司的子网,具有公司级别的入口路由器 2.为什么要这样呢?? IP地…...
Mysql体系架构剖析——岁月云实战笔记
1 体系架构 理论内容阅读了mysql体系架构剖析,其他的根据岁月云的实战进行记录。 1.1 连接层 mysql最上层为连接服务,引入线程池,允许多台客户端连接,主要工作:连接处理、授权认证、安全防护、管理连接等。 连接处理&a…...
【卷积神经网络】AlexNet实践
构建模型 模版搭建 # 定义一个AlexNet模型类def __init__(self):# 调用父类的构造函数(如果继承自nn.Module的话)super(AlexNet, self).__init__()# ReLU激活函数self.ReLU nn.ReLU()# 卷积层1:输入1个通道(灰度图)&a…...
LF CRLF
这个提示的含义是:Git 检测到你当前的 file3.txt 文件中使用了 LF(换行符,Line Feed,\n) 作为换行符,但在你系统的 Git 配置中,指定要将其转换为 CRLF(回车换行,Carriage…...
Python学习(二)—— 基础语法(上)
目录 一,表达式和常量和变量 1.1 表达式 1.2 变量 1.3 动态类型特性 1.4 输入 二,运算符 2.1 算术运算符 2.2 关系运算符 2.3 逻辑运算符 2.4 赋值运算符 2.5 练习 三,语句 3.1 条件语句 3.2 while循环 3.3 for循环 四&#…...
科研绘图系列:R语言绘制网络图和密度分布图(network density plot)
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载图1图2图3图4图5图6图7图8系统信息参考介绍 R语言绘制网络图和密度分布图(network & density plot) 加载R包 library(magrittr) library(dplyr) library(…...
python解题之寻找最大的葫芦
问题描述 问题描述 在一场经典的德州扑克游戏中,有一种牌型叫做“葫芦”。“葫芦”由五张牌组成,其中包括三张相同牌面值的牌 �a 和另外两张相同牌面值的牌 �b。如果两个人同时拥有“葫芦”,我们会优先比较牌 &#…...
openwrt安装tailscale
1. 下载 进入tailscale的github仓库复制最新版本的链接:点击跳转 wget https://github.com/adyanth/openwrt-tailscale-enabler/releases/download/v1.36.1-fb2f6cf-autoupdate/openwrt-tailscale-enabler-v1.36.1-fb2f6cf-autoupdate.tgz2.解压缩 tar x -zvC / …...
基于物联网的智能插座云平台 WIFI云平台MQTT协议
功能介绍 功能描述: STM32单片机为控制核心 LCD1602液晶显示当前时间温度 开启时间 关闭时间 按键设置开启时间/关闭时间,温度报警上限 到开启时间,继电器自动打开,到关闭时间,自动关闭 通过DS18B20温度传感器获…...
MySQL 事务
概念介绍 事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组 DML 语句要么全部成功,要么全部失败,是一个整体。MySQL 提供一种机制,保证我们达到这样的效果。 事务就是要做的或所做的事情,主要用…...
消息中间件面试题-参考回答
消息中间件面试题-参考回答 面试官:RabbitMQ-如何保证消息不丢失 候选人: 嗯!我们当时MYSQL和Redis的数据双写一致性就是采用RabbitMQ实现同步的,这里面就要求了消息的高可用性,我们要保证消息的不丢失。主要从三个层面…...
解决 MyBatis 中空字符串与数字比较引发的条件判断错误
问题复现 假设你在 MyBatis 的 XML 配置中使用了如下代码: <if test"isCollect ! null"><choose><when test"isCollect 1">AND exists(select 1 from file_table imgfile2 where task.IMAGE_SEQimgfile2.IMAGE_SEQ and im…...
【ETCD】【源码阅读】深入解析 etcd 的 `EtcdServer.Start` 函数
深入解析 etcd 的 EtcdServer.Start 函数 在 etcd 的代码中,EtcdServer.Start 是一个关键方法,用于初始化并启动服务器以便处理请求。本文将从源码的角度逐步分析此函数的每一步操作。 函数签名及注释 // Start performs any initialization of the Se…...
嵌入式驱动开发详解16(音频驱动开发)
文章目录 前言WM8960简介I2S协议接口说明 SAI音频接口简介驱动框架简介设备树配置内核使能声卡设置与测试 后续参考文献 前言 该专栏主要是讲解嵌入式相关的驱动开发,但是由于ALSA驱动框架过于复杂,实现音频编解码芯片的驱动不是一个人能完成的…...
【数据结构——查找】二分查找(头歌实践教学平台习题)【合集】
目录😋 任务描述 相关知识 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:实现二分查找的算法。 相关知识 为了完成本关任务,你需要掌握:1.根据键盘输入的一组有序数据建立顺序表,2.顺序表的输…...
探索云原生数据库 PolarDB
引言 在云计算时代,数据库的重要性不言而喻。随着企业数字化转型的加速,对数据库的性能、可靠性和灵活性的要求也越来越高。阿里云推出的云原生数据库 PolarDB,正是为了满足这些需求而设计的一款高性能、兼容性强、弹性灵活的关系型数据库产品。本文将详细介绍 PolarDB 的特…...
OGG FOR MYSQL同步DDL
以下实验测试OGG FOR mysql 同步DDL, OGG 21.3 MYSQL 8.0.27 --创建测试数据 create table oggddl_20241201 (oid int primary key ,oname varchar(10)); create table oggddl_20241202 (oid int primary key ,oname varchar(10)); create table oggddl_20241203…...
【CAN】asc报文格式文件合并(python版)
目录 一、简介二、合并asc格式报文1、准备多个asc文件2、根据时间合并asc文件3、结果 三、总结四、参考 一、简介 CAN通信:CAN(Controller Area Network)是一种多主方式的串行通讯总线。基本设计规范要求有高位速率、高抗电磁干扰性…...
C++之STL的map容器
map map的实现方式 set是一个有序的关联容器,是基于平衡二叉搜索树(红黑树)实现的,元素是有序的 map的用法 #include <iostream> #include <map> using namespace std;const int ADDSIZE 20; int main() {map<int, int> m;cout &…...