【c++随笔15】c++常用第三方库
【c++随笔15】c++常用第三方库
- 一、数据库相关:
- HDFS、libpq、SQLite、RocksDB、unixODBC、Nanobdc、Ignite ;
- 二、网络通信相关:
- libcurl、libevent、libssh、mosquitto、nghttp2、libuv;
- 三、加密和安全相关:
- 1、OpenSSL
- 四、序列化和数据格式相关:
- Protobuf、json(nlohmann)、Rapidjson、pugixml、Xlnt、Yamlcpp、Libxl:
- 五、压缩compress
- Minilzo、Snappy、zlib;
- 六、其他:
- log4cxx:、LLVM、Googletest、qt、Boost、Tcmalloc、Thrift、gflags:、Libiconv C++ Library:、Libuuid、Java Native Interface(JNI)、Node.js、OpenLDAP:
原创作者:郑同学的笔记
原创地址:https://zhengjunxue.blog.csdn.net/article/details/131812432
qq技术交流群:921273910
一、数据库相关:
HDFS、libpq、SQLite、RocksDB、unixODBC、Nanobdc、Ignite ;
-
1、HDFS:
- 官网: https://hadoop.apache.org/docs/r3.3.1/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html
- 简介: HDFS (Hadoop Distributed File System) 是 Apache Hadoop 生态系统中的分布式文件系统。它被设计用于存储和处理大规模数据集,并提供高可靠性、高容错性和高吞吐量的数据访问。
- 用途: HDFS通常用于大数据处理和分析任务,如数据存储、数据备份、批处理作业和实时数据处理。
-
2、libpq:
- 官网: https://www.postgresql.org/docs/current/libpq.html
- 简介: libpq是PostgreSQL数据库的C语言客户端库。它提供了与PostgreSQL数据库进行交互的API,使开发人员可以使用C语言编写与数据库的通信代码。
- 用途: libpq可以用于开发基于PostgreSQL数据库的应用程序,包括数据库连接、执行查询、事务管理等。
-
3、SQLite:
- 官网: https://www.sqlite.org/index.html
- 简介: SQLite是一个嵌入式关系型数据库引擎。它是一个零配置、无服务器的数据库,将整个数据库存储在一个单一的文件中。SQLite具有轻量级、快速、可靠和易于使用的特点。
- 用途: SQLite广泛应用于各种应用程序和平台,包括移动应用、桌面应用、嵌入式系统和浏览器。它适用于需要本地存储和管理结构化数据的场景。
-
4、RocksDB:
- 官网: https://rocksdb.org/
- 简介: RocksDB是一个高性能的键值存储库,由Facebook开发并开源。它基于Google的LevelDB,并进行了优化和改进,提供了较高的读写性能和低延迟的数据访问。
- 用途: RocksDB适用于需要高性能和低延迟的键值存储场景,如缓存、日志存储、分布式存储系统和实时数据处理。
-
5、unixODBC:
- 官网: http://www.unixodbc.org/
- 简介: unixODBC是一个开源的ODBC (Open Database Connectivity) 驱动管理器。它提供了一个统一的接口,使应用程序能够通过ODBC与不同的数据库进行交互。
- 用途: unixODBC可用于开发需要与多个数据库进行交互的应用程序,它提供了对ODBC兼容数据库的连接和查询功能,如MySQL、Oracle、SQL Server等。
-
6、Nanobdc
- 网址:https://github.com/nanodbc/nanodbc
- 简介:Nanobdc是一个轻量级的ODBC库,用于在C++程序中与数据库进行交互。
- 用途:用于在C++程序中进行ODBC数据库访问。
-
7、Ignite C++ Library:
- 官网:https://ignite.apache.org/
- 简介:Ignite C++ Library 是 Apache Ignite 的 C++ 版本库,是一个分布式内存计算平台。Ignite 提供了高性能、可伸缩的分布式数据网格和计算功能,以支持大规模数据处理、缓存、机器学习和实时分析等应用场景。它具有灵活的 API 和丰富的功能,可以方便地在 C++ 应用程序中进行分布式计算和数据处理。
- 用途:Ignite C++ Library 主要用于构建分布式应用程序和处理大规模数据。它提供了丰富的数据结构和操作函数,如分布式缓存、分布式数据集、分布式计算等,可以帮助开发者在集群环境中进行高效的并行计算、数据共享和协作。Ignite C++ Library 还提供了与其他编程语言和工具的集成能力,如 Java、Python、JDBC、ODBC 等,方便与现有的数据处理和分析工具进行交互。
二、网络通信相关:
libcurl、libevent、libssh、mosquitto、nghttp2、libuv;
-
1、libcurl:
- 官网:https://curl.se/
- 简介:libcurl是一个用于传输数据的免费、开源、可移植的客户端URL传输库。它支持多种协议,包括HTTP、HTTPS、FTP、FTPS、SCP、SFTP、TFTP、TELNET、DICT、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。libcurl还支持HTTPS证书验证、HTTP POST、HTTP PUT、FTP上传和下载、代理、cookie、用户名+密码身份验证等功能。
- 用途:libcurl常用于开发网络应用程序,如网页抓取、文件传输、API调用等。
-
2、libevent:
- 官网:http://libevent.org/
- 简介:libevent是一个开源的事件通知库,用于网络编程。它提供了一个简单且高效的API,用于注册并触发事件,包括网络I/O、信号和定时器。libevent可以与其他网络库和框架(如libcurl和nginx)集成,使开发者能够编写高性能、可扩展的网络应用程序。
- 用途:libevent常用于开发高性能的服务器程序,如Web服务器、代理服务器、消息队列等。
-
3、libssh:
- 官网:https://www.libssh.org/
- 简介:libssh是一个开源的SSH协议客户端库,用于实现SSH连接和通信。它提供了一组简单、易用的API,用于建立SSH连接、进行身份验证、执行远程命令、传输文件等。libssh支持多种加密算法和认证方式,包括SSH1和SSH2协议。
- 用途:libssh常用于开发SSH客户端程序,如远程服务器管理工具、文件传输工具等。
-
4、mosquitto:
- 官网:https://mosquitto.org/
- 简介:mosquitto是一个开源的MQTT(Message Queuing Telemetry Transport)消息代理服务器。它实现了MQTT协议,提供了发布/订阅模式的消息传递功能。mosquitto支持TLS/SSL加密、身份验证、持久化消息、QoS(Quality of Service)保证等特性。
- 用途:mosquitto常用于开发物联网(IoT)应用程序,如传感器数据采集、远程控制、消息通知等。
-
5、nghttp2:
- 官网:https://nghttp2.org/
- 简介:nghttp2是一个开源的HTTP/2协议库,用于实现HTTP/2协议的客户端和服务器。它提供了一组高性能、可扩展的API,用于构建支持HTTP/2协议的网络应用程序。nghttp2支持多路复用、流量控制、头部压缩、服务器推送等特性。
- 用途:nghttp2常用于开发支持HTTP/2协议的网络应用程序,如Web服务器、代理服务器、CDN等。
-
6、libuv:
- 官网:https://libuv.org/
- 简介:libuv是一个开源的跨平台异步I/O库,用于实现事件驱动的网络编程。它提供了一组简单、高效的API,用于处理文件系统、网络、定时器等事件。libuv支持Windows、Linux、macOS等操作系统,并能与其他网络库和框架(如Node.js)集成。
- 用途:libuv常用于开发高性能、可扩展的网络应用程序,如Web服务器、游戏服务器、分布式系统等。
三、加密和安全相关:
1、OpenSSL
-
官网:https://www.openssl.org/
-
简介:C++ OpenSSL 是一个强大的软件库,由 C++ 编写,提供了广泛的密码学功能和安全相关工具。它支持各种密码算法、密钥管理、数字证书操作等。C++ OpenSSL 已经成为密码学领域的事实标准之一,并广泛应用于网络通信、数据加密、身份验证等安全场景。
-
用途:
安全通信:C++ OpenSSL 可以用于构建安全的客户端和服务器应用程序,通过支持 SSL/TLS 协议进行数据的加密和解密,确保数据传输的机密性和完整性。
数字证书管理:C++ OpenSSL 提供了生成、签发、验证和管理数字证书的功能。这些数字证书可以用于身份验证、数据加密和签名等场景,保护通信的安全性。
密码学功能:C++ OpenSSL 提供了丰富的密码学函数库,包括对称加密算法(如 AES、DES)、非对称加密算法(如 RSA、Diffie-Hellman)、哈希函数(如 SHA-256、MD5)等。开发者可以使用这些功能实现数据加密、解密和签名等操作。
安全增强功能:C++ OpenSSL 提供了随机数生成器、密码学伪随机数生成器、安全哈希函数等功能,可以帮助开发者提高应用程序的安全性,增加密码学强度。
四、序列化和数据格式相关:
Protobuf、json(nlohmann)、Rapidjson、pugixml、Xlnt、Yamlcpp、Libxl:
-
1、Protobuf
- 网址:https://developers.google.com/protocol-buffers
- 简介:Protobuf是Google开发的一种高效的序列化数据格式,用于在不同平台和语言之间传输和存储结构化数据。
- 用途:用于在C++程序中进行数据序列化和反序列化。
-
2、json(nlohmann):
- 官网:https://github.com/nlohmann/json
- 简介:nlohmann/json 是一个简单而强大的 C++ JSON 库,针对现代 C++ 进行了优化。它提供了一组易于使用的 API,用于处理和操作 JSON 数据。
- 用途:nlohmann/json 主要用于解析、生成和操作 JSON 数据。开发者可以使用该库轻松地解析 JSON 字符串,访问和修改 JSON 对象,以及将 C++ 数据结构转换为 JSON 格式。
-
3、Rapidjson
- 网址:https://rapidjson.org/
- 简介:Rapidjson是一个快速的JSON解析和生成库,提供了高性能的JSON处理功能。
- 用途:用于在C++程序中处理JSON数据。
-
4、pugixml:
- 官网:https://pugixml.org/
- 简介:Pugixml是一个轻量级的XML解析库,提供了高性能和易用的XML解析功能。。
- 用途:pugixml 主要用于解析和生成 XML 文档。开发者可以使用 pugixml 轻松地读取、搜索和修改 XML 数据,以及将 C++ 数据结构转换为 XML 格式。
-
5、Xlnt
- 网址:https://github.com/tfussell/xlnt
- 简介:Xlnt是一个C++ Excel库,提供了读取和写入Excel文件的功能。
- 用途:用于在C++程序中进行Excel文件的读写操作。
-
6、Yamlcpp
- 网址:https://github.com/jbeder/yaml-cpp
- 简介:Yamlcpp是一个C++ YAML库,提供了对YAML(Yet Another Markup Language)文件的解析和生成功能。
- 用途:用于在C++程序中处理YAML数据。
-
7、Libxl:
- 官网:https://www.libxl.com/
- 简介:Libxl 是一个跨平台的 C++ 库,用于读取和写入 Excel 文件。它提供了简单易用的 API,可以在 C++ 应用程序中进行 Excel 文件的操作,包括创建、修改、读取和写入 Excel 表格、单元格、格式等内容。
- 用途:Libxl 主要用于处理 Excel 文件,使开发者能够在自己的应用程序中对 Excel 数据进行读取和写入操作。通过 Libxl,你可以在 Excel 文件中创建、修改和获取数据,设置单元格格式、合并单元格、设置公式和函数等。Libxl 支持多种 Excel 文件格式,如 .xls 和 .xlsx,同时具备跨平台特性,可在 Windows、Linux、MacOS 等操作系统上使用。
五、压缩compress
Minilzo、Snappy、zlib;
- 1、Minilzo:
- 官网: https://www.oberhumer.com/opensource/lzo/
- 简介: Minilzo是一个轻量级、高性能的压缩库。它专为嵌入式系统设计,占用较小的内存空间。Minilzo提供快速的压缩和解压缩速度,适用于资源有限的应用程序。
- 用途: Minilzo适用于需要在嵌入式系统中进行数据压缩和解压缩的应用,例如网络传输、存储优化和实时数据处理。
- 2、Snappy:
- 官网: https://github.com/google/snappy
- 简介: Snappy是由谷歌开发的压缩和解压缩库。它旨在提供高速的压缩和解压缩,同时保持合理的压缩比。Snappy针对速度进行了优化,常用于需要快速数据处理的应用,如大数据分析和Web服务。
- 用途: Snappy常用于需要高速压缩和解压缩的场景,包括实时数据传输、网络传输、大数据处理和内存限制的环境。
- 3、zlib:
- 官网: https://www.zlib.net/
- 简介: zlib是一个流行的通用压缩库。它提供了良好的压缩比和相对较快的压缩和解压缩速度。zlib被广泛应用于各种应用程序和格式,包括HTTP、PNG图像文件和gzip文件格式。它是许多编程语言和操作系统的标准库。
- 用途: zlib适用于需要在各种应用程序中进行数据压缩和解压缩的场景,包括文件压缩、网络传输、数据库压缩、备份和存档等。
六、其他:
log4cxx:、LLVM、Googletest、qt、Boost、Tcmalloc、Thrift、gflags:、Libiconv C++ Library:、Libuuid、Java Native Interface(JNI)、Node.js、OpenLDAP:
-
1、log4cxx:
- 官网:https://logging.apache.org/log4cxx/
- 简介:log4cxx 是 Apache Software Foundation 开发的 C++ 版本的日志记录工具,它是 log4j 的一个移植版本。log4cxx 提供了一组灵活的 API 和配置选项,可以在应用程序中实现高性能、可配置的日志记录。
- 用途:log4cxx 可以帮助开发者在 C++ 应用程序中实现全面的日志记录功能。通过 log4cxx,开发者可以按需进行日志级别控制、日志输出格式化、动态配置等操作,从而方便地进行日志的记录和管理。log4cxx 在许多领域都有广泛的应用,例如服务器端应用、嵌入式系统、游戏开发等。
-
2、LLVM:
- 官网:https://llvm.org/
- 简介:LLVM 是一种 modul化和可重用编译器和工具链技术的集合。它最初是为了实现编译优化和代码生成而设计,并在实践中发展成为一个通用的编译器基础设施。LLVM 提供了丰富的库和工具,可用于构建编译器、静态分析工具、性能分析工具等。
- 用途:LLVM 可以用于构建各种类型的编译器和工具链。开发者可以利用 LLVM 提供的模块化架构和强大的优化能力,开发自定义编译器,对代码进行静态分析、转换和优化。此外,LLVM 也为各种编程语言提供了支持,如 C/C++、Rust、Swift 等,可以用于构建这些语言的编译器和工具。
-
3、Googletest
- 网址:https://github.com/google/googletest
- 简介:Googletest是Google的C++单元测试框架,提供了丰富的断言和测试功能。
- 用途:用于编写和执行C++的单元测试。
-
4、qt
- 官网:https://www.qt.io/
- 简介:Qt 是一个跨平台的应用程序和用户界面开发框架,用于使用 C++ 编程语言开发图形界面应用程序。它由 Qt 公司(现在是 Digia 公司)开发和维护,提供了丰富的库和工具,可以帮助开发者轻松构建高质量的应用程序。
- 用途:Qt 被广泛用于开发各种类型的应用程序,包括桌面应用程序、嵌入式应用程序、移动应用程序以及其他图形界面应用程序。Qt 提供了一套全面的工具和组件,包括图形渲染、用户界面控件、网络通信、数据库访问、多线程支持等,使开发者能够快速构建功能强大的应用程序。Qt 的特点包括其跨平台性、可扩展性、易用性和良好的性能。
-
5、Boost
- 官网:https://www.boost.org/
- 简介:Boost 是一个开源的 C++ 库集合,提供了丰富的工具和组件,扩展了 C++ 语言的功能。Boost 的目标是提高 C++ 开发效率和质量,并促进 C++ 标准库的发展。
- 用途:Boost 提供了大量的库和工具,用于解决各种常见的编程问题。它包括但不限于字符串处理、容器与算法、日期与时间、并发编程、网络通信等方面的功能。开发者可以使用 Boost 提供的组件来加速开发、提高性能、增加安全性,并增强现有 C++ 代码的功能。
-
6、Tcmalloc
- 网址:https://github.com/gperftools/gperftools
- 简介:Tcmalloc是Google的内存分配器,提供了高性能和低碎片化的内存分配功能。
- 用途:用于在C++程序中进行内存分配和管理。
-
7、Thrift
- 网址:https://thrift.apache.org/
- 简介:Thrift是一个跨语言的服务框架,用于构建可扩展的分布式系统。
- 用途:用于在C++程序中进行分布式系统开发。
-
8、gflags:
- 官网:https://gflags.github.io/gflags/
- 简介:gflags 是一个跨平台的命令行参数解析库,由 Google 开发和维护。它允许开发者定义和解析命令行参数,包括标志(flags)和非标志参数。gflags 提供了简单易用的 API,可以方便地在 C++ 应用程序中处理命令行参数。
- 用途:gflags 主要用于在 C++ 应用程序中处理命令行参数,使开发者能够轻松定义、解析和访问这些参数。通过 gflags,开发者可以设置标志参数的默认值、类型、描述等信息,并在应用程序中获取用户传入的命令行参数。gflags 还支持高级功能,如命令行帮助、自动生成配置文件等,使命令行参数处理更加便捷和灵活。gflags 在很多 C++ 项目中被广泛应用,包括 Google 的开源项目和其他许多独立开发者的应用程序。
-
9、Libiconv C++ Library:
- 官网:https://www.gnu.org/software/libiconv/
- 简介:Libiconv 是一个开源的字符编码转换库,用于在不同字符编码之间进行转换。它支持超过 150 种字符集和编码方案,包括常见的 ASCII、UTF-8、GBK、ISO-8859 等。Libiconv 提供了简单易用的 API,可以在 C++ 应用程序中进行字符编码的转换和处理。
- 用途:Libiconv 主要用于解决字符编码转换的问题。在现实应用中,经常会遇到不同编码的数据交互和处理,例如读取外部文件、网络通信、国际化等场景。Libiconv 可以帮助开发者将一种字符编码转换为另一种,保证数据在不同编码之间的正确传输和处理。通过 Libiconv,开发者可以方便地实现字符编码的转换、字符串处理、文本解析等功能,提高应用程序的兼容性和可移植性。
-
10、Libuuid
- 网址:https://sourceforge.net/projects/libuuid/
- 简介:Libuuid是一个UUID生成库,用于生成唯一标识符。
- 用途:用于在C++程序中生成和处理UUID。
如果您希望在C++中使用Java的功能,可以考虑使用Java Native Interface(JNI)或Java Native Access(JNA)来实现C++和Java之间的交互。通过JNI或JNA,可以在C++中调用Java代码,并利用JDK提供的功能和类库。
这里提供JDK的官方网站、简介和用途供您参考:
-
11、Java Native Interface(JNI)
- 官网:https://www.oracle.com/java/technologies/javase-jdk11-downloads.html
- 简介:JDK是Java开发者使用的软件开发工具包,包含了编译器、调试器、运行时环境和其他开发工具。它提供了一种完整的Java开发环境,用于创建、编译和执行Java应用程序。
- 用途:JDK用于Java应用程序的开发、编译和运行。它包含了完整的Java标准库和工具,提供了丰富的功能和API,用于开发各种类型的Java应用、Applet和Web应用等。
需要注意的是,使用JNI或JNA调用Java代码需要熟悉JNI规范和技巧,并理解C++和Java之间的交互方式和内存管理。通过这种方式,可以在C++中使用JDK提供的功能和类库,实现跨语言的功能扩展。
-
12、Node.js
- 网址:https://nodejs.org/
- 简介:Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,用于构建高性能的网络应用程序。
- 用途:用于在C++程序中嵌入和执行JavaScript代码。
-
13、OpenLDAP:
- 官网:https://www.openldap.org/
- 简介:OpenLDAP 是一个开源的实现了 Lightweight Directory Access Protocol (LDAP) 的软件套件。LDAP 是一种用于访问和维护分布式目录服务的协议,广泛应用于身份认证、用户管理和网络资源访问控制等方面。OpenLDAP 提供了服务器端和客户端库,用于搭建和访问 LDAP 目录服务。
- 用途:OpenLDAP 主要用于构建和管理 LDAP 目录服务。LDAP 目录服务是一种层次化的、分布式的数据存储系统,类似于数据库,但更注重于轻量级的、高效的读取操作。通过 OpenLDAP,可以搭建一个具有良好性能和可伸缩性的 LDAP 服务器,用于存储和管理组织机构、用户身份、权限信息等。同时,OpenLDAP 还提供了丰富的 API 和工具,用于开发和管理 LDAP 目录服务。
相关文章:

【c++随笔15】c++常用第三方库
【c随笔15】c常用第三方库 一、数据库相关:HDFS、libpq、SQLite、RocksDB、unixODBC、Nanobdc、Ignite ; 二、网络通信相关:libcurl、libevent、libssh、mosquitto、nghttp2、libuv; 三、加密和安全相关:1、OpenSSL 四…...

数据结构 | 查漏补缺之ASL、
目录 ASL 情形之一:二分查找 线索二叉树 哈夫曼树 大根堆 邻接表&邻接矩阵 ASL 参考博文 关于ASL(平均查找长度)的简单总结_平均查找长度asl-CSDN博客 情形之一:二分查找 线索二叉树 参考博文 线索二叉树(线索链表遍历,二叉树…...

泊车功能专题介绍 ———— 汽车全景影像监测系统性能要求及试验方法(国标未公布)
文章目录 术语和定义一般要求功能要求故障指示 性能要求响应时间图像时延单视图视野范围平面拼接视图视野平面拼接效果总体要求行列畸变拼接错位及拼接无效区域 试验方法环境条件仪器和设备车辆条件系统响应时间试验图像时延试验单视图视野范围试验平面拼接视图视野试验平面拼接…...

【Linux】第二十六站:软硬链接
文章目录 一、软链接二、硬链接三、ln命令四、该如何理解硬链接?五、如何理解软链接六、为什么要用软硬链接1.软链接的应用场景2.硬链接的应用场景 一、软链接 如下所示,我们创建一个文件以后,然后执行下面的指令 ln -s file.txt soft-link…...

开源播放器GSYVideoPlayer + ViewPager2 源码解析
开源播放器GSYVideoPlayer ViewPager2 源码解析 前言一、GSYVideoPlayer🔥🔥🔥是什么?二、源码解析1.ViewPager2Activity 总结 前言 本文介绍GSYVideoPlayer源码中关于ViewPager2 GSYVideoPlayer 实现的滑动播放列表的实现原理。…...

重启路由器可以解决N多问题?
为什么重启始终是路由器问题的首要解决方案? 在日常的工作学习工作中,不起眼的路由器是一种相对简单的设备,但这仍然是我们谈论的计算机。 这种廉价的塑料外壳装有 CPU、随机存取存储器 (RAM)、只读存储器 (ROM) 和许多其他组件。 该硬件运行预装的软件(或固件)来管理连接…...

Python WebSocket 客户端教程
WebSocket 是一种在客户端和服务器之间实现双向通信的协议,常用于实时聊天、实时数据更新等场景。Python 提供了许多库来实现 WebSocket 客户端,本教程将介绍如何使用 Python 构建 WebSocket 客户端。 什么是 WebSocket WebSocket 是一种基于 TCP 协议…...

洛谷 P2984 [USACO10FEB] Chocolate Giving S
文章目录 [USACO10FEB] Chocolate Giving S题面翻译题目描述输入格式输出格式 题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 题意解析CODE给点思考 [USACO10FEB] Chocolate Giving S 题面翻译 题目链接:https://www.luogu.com.cn/problem/P2984 题目描…...

【专题】【数列极限】
【整体思路】 【常用不等式】...

oracle基础系统学习文章目录
oracle基础系统学习——点击标题可跳转对应文章 01.CentOS7静默安装oracle11g 02.Oracle的启动过程 03.从简单的sql开始 04.Oracle的体系架构 05.Oracle数据库对象 06.Oracle数据备份与恢复 07.用户和权限管理 08.Oracle的表 09.Oracle表的分区 10.Oracle的同义词与序列 11.Or…...

长度最小的子数组(Java详解)
目录 题目描述 题解 思路分析 暴力枚举代码 滑动窗口代码 题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条…...

计算机组成学习-数据的表示和运算总结
复习本章时,思考以下问题: 1)在计算机中,为什么要采用二进制来表示数据?2)计算机在字长足够的情况下能够精确地表示每个数吗?若不能,请举例说明。3)字长相同的情况下,浮点数和定点数的表示范围…...

目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】机器视觉(基础篇)(八)
目录 前言 知识储备 机器视觉学习路线 视觉算法流程...

【4】基于多设计模式下的同步异步日志系统-框架设计
7. 日志系统框架设计 本项⽬实现的是⼀个多日志器日志系统,主要实现的功能是让程序员能够轻松的将程序运行日志信息落地到指定的位置,且⽀持同步与异步两种方式的日志落地方式。 项目的框架设计将项目分为以下几个模块来实现。 日志等级模块 日志等级模…...

Jupyter Markdown 插入图片
首先截图 注意 这一步是关键的!! 它需要使用电脑自带的截图,用qq啊vx啊美图秀秀那些都不行哦。 截图之后复制: 然后快捷键粘贴到jupyter里面,它会生成一段代码(没有代码就是说截图形式不对)&a…...

web自动化 -- pyppeteer
由于Selenium流行已久,现在稍微有点反爬的网站都会对selenium和webdriver进行识别,网站只需要在前端js添加一下判断脚本,很容易就可以判断出是真人访问还是webdriver。虽然也可以通过中间代理的方式进行js注入屏蔽webdriver检测,但…...

Java 数组另类用法(字符来当数组下标使用)
一、原因 看力扣的时候发现有位大佬使用字符来当数组下标使用。 class Solution {public int lengthOfLongestSubstring(String s) {int result 0;int[] hash new int[130];int i 0;for(int j 0; j < s.length(); j) {while(hash[s.charAt(j)] > 0) {hash[s.charAt…...

error转string
1 概述 在golang中,error类型是非常常见的一种数据类型。在开发过程中,经常会遇到需要将error类型转换成string类型的情况。本文主要介绍几种常见的golang error转string的方法。 2 使用Error()函数 在golang中,Error()函数是error类型的一…...

Android监听用户的截屏、投屏、录屏行为
Android监听用户的截屏、投屏、录屏行为 一.截屏 方案一:使用系统广播监听截屏操作 从Android Q(10.0)开始,Intent.ACTION_SCREEN_CAPTURED_CHANGED字段不再被支持。这是因为Google在安卓10 中引入了一个新的隐私限制&#…...

MATLAB算法实战应用案例精讲-【路径规划】 图搜索算法
目录 前言 几个高频面试题目 运动规划、路径规划、轨迹规划对比 1. 运动规划 2. 路径规划VS轨迹规划...

Elasticsearch-Kibana使用教程
1.索引操作 1.1创建索引 PUT /employee {"settings": {"index": {"refresh_interval": "1s","number_of_shards": 1,"max_result_window": "10000","number_of_replicas": 0}},"mappi…...

mysql(八)docker版Mysql8.x设置大小写忽略
Mysql 5.7设置大小写忽略可以登录到Docker内部,修改/etc/my.cnf添加lower_case_table_names1,并重启docker使之忽略大小写。但MySQL8.0后不允许这样,官方文档记录: lower_case_table_names can only be configured when initializ…...

KALI LINUX攻击与渗透测试
预计更新 第一章 入门 1.1 什么是Kali Linux? 1.2 安装Kali Linux 1.3 Kali Linux桌面环境介绍 1.4 基本命令和工具 第二章 信息收集 1.1 网络扫描 1.2 端口扫描 1.3 漏洞扫描 1.4 社交工程学 第三章 攻击和渗透测试 1.1 密码破解 1.2 暴力破解 1.3 漏洞利用 1.4 …...

vue之mixin混入
vue之mixin混入 mixin是什么? 官方的解释: 混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的…...

[ffmpeg] find 编码器
背景 整理 ffmpeg 中,如何通过名字或者 id 找到对应编码器的。 具体流程 搜索函数 avcodec_find_encoder // 通过 ID 搜索编码器 avcodec_find_encoder_by_name // 通过名字搜索编码器源码分析 ffmpeg 中所有支持的编码器都会注册到 codec_list.c 文件中&…...

Android CardView基础使用
目录 一、CardView 1.1 导入material库 1.2 属性 二、使用(效果) 2.1 圆角卡片效果 2.2 阴影卡片效果 2.3 背景 2.3.1 设置卡片背景(app:cardBackgroundColor) 2.3.2 内嵌布局,给布局设置背景色 2.4 进阶版 2.4.1 带透明度 2.4.2 无透明度 一、CardView 顾名…...

云原生Kubernetes系列 | init container初始化容器的作用
云原生Kubernetes系列 | init container初始化容器的作用 kubernetes 1.3版本引入了init container初始化容器特性。主要用于在启动应用容器(app container)前来启动一个或多个初始化容器,作为应用容器的一个基础。只有init container运行正常后,app container才会正常运行…...

汽车电子芯片介绍之Aurix TC系列
Infineon的AURIX TC系列芯片是专为汽车电子系统设计的,采用了32位TriCore处理器架构。该系列芯片具有高性能、低功耗和丰富的外设接口,适用于广泛的汽车电子应用。以下是AURIX TC系列芯片的主要特性: 1. 高性能处理器 AURIX TC芯片采用了高…...

Linux 设置程序开机自启动的方法
目录 前言开机自启动参考 前言 CentOS Linux release 7.9.2009 (Core) 开机自启动 shell> vim /etc/rc.d/rc.local添加开机后执行的命令 sh /xxx/xxx.sh参考 https://www.cnblogs.com/xlmeng1988/archive/2013/05/22/3092447.html...

java企业财务管理系统springboot+jsp
1、基本内容 (1)搭建基础环境,下载JDK、开发工具eclipse/idea。 (2)通过HTML/CSS/JS搭建前端框架。 (3)下载MySql数据库,设计数据库表,用于存储系统数据。 (4…...