Java
文章平均质量分 68
无论您是初学者还是资深开发者,我们以简单易懂的方式分享Java语言基础、常用框架、实用技巧等内容,助您轻松掌握编程精髓。让我们一起在编程世界中畅游,探索Java的乐趣!
墨瑾轩
这个作者很懒,什么都没留下…
展开
-
雪花ID vs UUID:MySQL主键之战,谁更胜一筹?
雪花ID更适合需要高效率插入、且ID有趋势递增要求的数据库场景,但需注意时间同步问题。UUID则适用于对全局唯一性要求极高,且不关心ID是否趋势递增的场景,如分布式日志系统等。选择哪种方案,应根据实际应用场景的需求来决定。原创 2024-05-05 14:17:26 · 129 阅读 · 0 评论 -
超越极限:HikariCP全面优化指南,打造Java应用性能新标杆
HikariCP,被誉为“速度最快的Java连接池”,以其出色的性能、低延迟和资源效率,在现代Java应用中占据了一席之地。本篇将通过代码示例详细解析HikariCP的核心特性、配置选项,并展示如何在项目中集成与优化使用。HikariCP以其轻量级、高性能的特点,成为现代Java应用连接数据库的理想选择。通过精细的配置和监控,可以进一步提升应用的稳定性和响应速度。希望本篇解析能帮助你更好地理解和利用HikariCP,提升系统的整体性能。首先,确保你的项目中添加了HikariCP的依赖。原创 2024-05-03 14:21:59 · 174 阅读 · 2 评论 -
多云安全博弈:5大防护策略,打造无懈可击的云端盾牌?
多云环境下的安全是一场持续的攻防战,需要细腻的风险感知与迅速的应急响应。通过上述最佳实践的实施,企业不仅能够有效识别并管理风险,还能在遭遇威胁时迅速恢复,确保业务连续性。记住,安全不仅是技术部署,更是文化与策略的融合。在这片多云的天空下,让我们的守护如同不灭的星辰,照亮每一段数据旅程。身处多云的蓝天之下,企业享受着灵活性与高效的同时,也面临着安全威胁的乌云密布。本文,我们将深入探讨多云环境下的安全挑战,揭示风险管控的黄金法则,并通过实战代码演示如何构建应急响应机制,让您的云端之旅既安心又高效。原创 2024-05-03 08:04:22 · 590 阅读 · 2 评论 -
API设计三国志:RESTful、GraphQL与gRPC,谁领风骚?
Graphql。原创 2024-05-03 07:07:05 · 250 阅读 · 0 评论 -
Spring Boot 3.0全面进化:五大新特性引领微服务开发未来?
Spring Boot 3.0作为Java微服务开发领域的里程碑,携带着众多革新特性,引领开发者进入了一个更高效、更现代化的开发时代。本文将深入剖析其核心新特性,并提供一份实战导向的升级策略,确保你平稳过渡到这一全新版本。原创 2024-05-02 11:27:28 · 207 阅读 · 2 评论 -
Tomcat安全升级战:6大策略铸就Java Web铁壁防御
通过上述六项核心配置,我们为Tomcat筑起了一道坚固的安全防线。请记得,安全是一个动态过程,定期检查配置、更新软件以及关注安全社区的最新动态,都是维持服务器安全不可或缺的部分。原创 2024-05-01 06:51:37 · 198 阅读 · 0 评论 -
部门新晋小伙伴提问:HashMap能否在遍历的同时自由删除元素?让我一时语塞寻思良久
哈哈,这个问题嘛,就像是在问你:“为啥不能边吃火锅边捞锅底的石头呢?”道理浅显,但值得深挖一番,特别是当你的新同事是个喜欢刨根问底的“好奇宝宝”时。好,让我们一起潜入Java的HashMap大观园,揭秘这场“遍历与删除”的爱恨情仇吧!原创 2024-04-30 13:54:13 · 242 阅读 · 2 评论 -
解锁JetBrains秘籍:5大技巧提速你的编程之旅
在使用JetBrains全家桶(如IntelliJ IDEA、PyCharm等)时,掌握一些高效使用技巧能够极大提升开发效率。下面是一些实用的技巧示例,包括快捷键、代码模板、调试技巧及插件推荐,帮助你更高效地驾驭这些强大的开发工具。原创 2024-04-30 11:57:52 · 226 阅读 · 0 评论 -
从0到1构建安全帝国:零信任架构,真的万无一失了吗?
构建零信任安全架构,就像是编织一张精密的安全网,每一个结点都是对安全的一次加固。从身份认证到最小权限,再到持续的监控与适应性,每一步都在提醒我们,安全没有捷径,只有不断迭代与完善。现在,你手握这些代码与策略,就像拥有了一套数字化时代的防身术,让那些恶意的“旅者”无处遁形。想象一下,即便是站在自家服务器的门槛上,你也得拿出身份证反复验证——这便是零信任的核心理念。本文,我们将踏上一场“不信任任何人”的旅程,从设计到实施,一步步揭开零信任的神秘面纱,并通过实战代码片段,确保每个环节都牢不可破。原创 2024-04-30 06:40:57 · 255 阅读 · 2 评论 -
Java微服务架构从零构建全攻略:深度解析、实战代码与详尽注释
通过上述详细解析与代码示例,我们已从零开始逐步实现了Java微服务架构,并对涉及的关键组件与技术栈进行了深度探讨。实际开发过程中,您可根据具体业务需求与团队技术栈选择合适的工具与框架,遵循微服务原则,持续优化与完善您的微服务生态系统。Spring Cloud Netflix Zuul (或Spring Cloud Gateway)Spring Cloud Sleuth + Zipkin (或OpenTelemetry)Spring Cloud Netflix Eureka (或其他替代品如Consul)原创 2024-04-22 07:16:48 · 596 阅读 · 0 评论 -
Java的N种定时任务:从零开始深度解析与实现
通过以上步骤,我们从零开始深度解析并实现了Java原生、Quartz、Spring TaskScheduler等多种定时任务方案。根据实际需求,您可以选择合适的定时任务实现方式,确保任务按时准确执行。同时,遵循最佳实践,可有效提升定时任务的稳定性和可靠性。定时任务是在特定时间点或按照一定周期自动执行的任务。在Java中,定时任务常用于后台处理、数据同步、定期报告、系统维护等场景。原创 2024-04-21 10:56:31 · 300 阅读 · 0 评论 -
Java API接口设计的安全实践:从零开始深度解析
API(Application Programming Interface)是一组预定义的方法和规则,允许不同的软件组件之间进行交互。在Java中,通常通过定义类、接口和方法来构建API。安全的API设计旨在确保接口在被外部调用时,既能满足功能需求,又能防止潜在的安全威胁。通过以上步骤,我们从零开始构建了一个深度解析的安全Java API框架,涵盖了接口设计、安全逻辑实现、身份验证与授权、输入验证、错误处理等多个关键环节。遵循这些实践,您可以确保所设计的API接口既满足功能需求,又具备良好的安全防护能力。原创 2024-04-21 10:51:09 · 211 阅读 · 0 评论 -
Tomcat从入门到精通:全方位深度解析与实战教程
通过本篇深度解析,读者从零开始学习了Tomcat的安装、配置、使用、优化、故障排查等全过程,掌握了Tomcat作为Java Web服务器的核心功能与应用场景。结合丰富的代码示例与注释,读者应能熟练部署、管理Web应用,进行性能调优与故障排查,从而在实际工作中高效利用Tomcat这一强大工具。Apache Tomcat,简称Tomcat,是一个开源的轻量级应用服务器,专为运行Java Servlet和JavaServer Pages (JSP)技术设计。,如果看到Tomcat的欢迎页面,说明安装和启动成功。原创 2024-04-21 10:45:07 · 559 阅读 · 0 评论 -
从零开始:深度解析JavaLite对接Redis的全流程实现
虽然JavaLite项目本身并不直接包含对接Redis的组件或模块,但作为轻量级Java库集合,其模块化设计使得开发者可以方便地将第三方库(如Jedis或Lettuce等Redis客户端)与JavaLite项目中的其他组件(如ActiveJDBC、ActiveWeb等)结合使用。至此,我们已经完成了从零开始使用JavaLite对接Redis的全过程,包括添加依赖、配置连接参数、创建连接管理类、在JavaLite项目中使用Redis,以及处理异常与资源关闭。编写单元测试或集成测试验证Redis操作的正确性。原创 2024-04-21 10:42:30 · 106 阅读 · 0 评论 -
ava异步编程深度解析:CompletableFuture、RxJava与Project Reactor实战指南
(Reactor库),包括它们的特点、用法以及代码示例。RxJava是一个基于Reactive Extensions(Rx)规范的Java库,它提供了一种反应式编程模型,用于处理异步数据流。通过操作符(operators)可以对这些事件流进行变换、过滤、合并、错误处理等操作。它可以用于创建、组合和处理异步任务,支持链式调用、异常处理、回调函数等功能。(代表0-1个事件的异步序列)。Reactor库提供了丰富的操作符、背压支持、与Spring框架深度集成等特点。包中的一个类,它提供了对异步操作的灵活支持。原创 2024-04-21 10:39:14 · 219 阅读 · 0 评论 -
深入探索JavaLite-ActiveJDBC:轻量级ORM框架的全方位解析与实战指南
与传统的ORM框架如Hibernate、MyBatis等相比,ActiveJDBC更强调简单性和性能,通过减少配置和自动化的映射机制,使开发者能够以接近原生SQL的方式操作数据库,同时保留了对象化编程的便利性。总结来说,JavaLite是一个以轻量、简洁和高性能为核心理念的Java开发框架,而ActiveJDBC则是其在数据持久化领域的重要组成部分,二者共同为开发者提供了高效、易用的数据库操作工具,尤其适合追求开发效率和代码质量的小型至中型项目。在处理关联数据时,注意避免N+1查询问题。原创 2024-04-21 10:32:27 · 694 阅读 · 0 评论 -
LessCssCompiler:在Java环境中轻松编译LESS为CSS
通过简单的API调用,开发者可以轻松地集成LESS编译功能到自己的项目中,享受LESS带来的诸多优点,如变量、嵌套规则、混合、函数等。结合提供的代码示例与注释,读者应能快速掌握LessCssCompiler的使用方法,并将其应用于实际项目中,提升前端样式开发的效率与可维护性。LessCssCompiler是一个轻量级的Java库,旨在将LESS源代码编译成CSS样式表。它实现了LESS语言的核心特性,允许开发者在Java环境中方便地处理LESS文件,适用于构建Web应用、构建工具、IDE插件等场景。原创 2024-04-21 10:23:53 · 210 阅读 · 2 评论 -
JavaLite-DB Migrator:轻松管理数据库迁移的利器
通过编写结构化的迁移文件,开发者可以轻松跟踪和执行数据库 schema 的演变,确保在不同环境间保持一致。结合详尽的代码示例与注释,读者应能快速掌握JavaLite-DB Migrator的使用方法,并将其应用于实际项目中,提升数据库管理的效率与准确性。Migrator负责追踪已应用的迁移,并确保在不同环境中按照正确的顺序执行未应用的迁移。表以确定已应用的迁移,然后在迁移目录中查找未应用的迁移文件,并按照版本号顺序执行它们。当需要进行新的数据库变更时,创建一个新的迁移文件,如。表中会记录新应用的迁移版本。原创 2024-04-21 10:17:03 · 377 阅读 · 0 评论 -
JavaLite-ActiveWeb框架深度解析与实践指南
JavaLite-ActiveWeb凭借其轻量、易用、灵活的特性,为Java Web开发者提供了一个高效且可扩展的开发平台。JavaLite-ActiveWeb是一款轻量级的Java Web框架,它以简化开发流程、提高开发效率为目标,为开发者提供了简洁而强大的Web应用构建工具。本文将对JavaLite-ActiveWeb进行全面深入的解析,涵盖其核心特性和主要组件,并通过丰富的代码实例与详尽的注释,引导读者从入门到精通,实现高效的应用开发。同时,框架集成了SLF4J日志接口,便于进行详细的日志记录。原创 2024-04-21 10:03:03 · 397 阅读 · 0 评论 -
JavaLite-Spec深度解析与实践指南
JavaLite-Spec 是JavaLite库的一部分,它提供了一种简洁、强大的行为驱动开发(Behavior-Driven Development, BDD)测试框架。本文将对JavaLite-Spec进行全面深入的解析,结合丰富的代码实例与详尽的注释,帮助读者快速掌握其特性和用法,实现高效的BDD测试实践。JavaLite-Spec作为一款轻量、易用、灵活的BDD测试框架,为Java开发者带来了自然语言表述的测试用例、类型安全的匹配器以及便捷的集成特性。在此示例中,我们定义了一个简单的。原创 2024-04-21 10:00:26 · 507 阅读 · 0 评论 -
JavaLite-ActiveWeb框架深度解析与实践指南
JavaLite-ActiveWeb凭借其轻量、易用、灵活的特性,为Java Web开发者提供了一个高效且可扩展的开发平台。JavaLite-ActiveWeb是一款轻量级的Java Web框架,它以简化开发流程、提高开发效率为目标,为开发者提供了简洁而强大的Web应用构建工具。本文将对JavaLite-ActiveWeb进行全面深入的解析,涵盖其核心特性和主要组件,并通过丰富的代码实例与详尽的注释,引导读者从入门到精通,实现高效的应用开发。同时,框架集成了SLF4J日志接口,便于进行详细的日志记录。原创 2024-04-21 09:51:36 · 536 阅读 · 4 评论 -
Java巧遇MessagePack:揭秘跨语言、高性能二进制序列化的魅力之旅
MessagePack是一种高效的二进制序列化格式,以其小巧、快速、跨语言的特点,在Java开发中广泛应用,用于在网络传输、数据持久化等场景下高效地序列化和反序列化对象。库、与现有JSON库(如Jackson)集成、利用Kotlin扩展函数,以及启用压缩等功能,可以灵活应对各种应用场景,提高数据交换的效率和性能。首先,通过Maven或Gradle将MessagePack库添加到项目依赖中。总之,Java中使用MessagePack能实现高效、轻量级的对象序列化和反序列化。库实现与Kotlin的互操作。原创 2024-04-20 11:07:36 · 383 阅读 · 0 评论 -
Java二维码与条形码生成库详解:ZXing、QRGen与Barcode4J实战代码示例
总结来说,ZXing库提供了全面的二维码和条形码生成与解析能力,而QRGen库则提供了简洁的API专门用于生成高质量的QR Code。在Java开发中,生成二维码和条形码通常依赖于第三方库,这些库封装了复杂的数据编码算法和图像生成过程,使得开发者只需通过简单易用的API就能快速创建所需条码或二维码。是一个专注于生成高质量QR Code的轻量级Java库,它提供了一种简洁的API,允许用户快速生成二维码,并支持自定义颜色、大小等属性。,并附带详尽的代码示例及注释,以帮助理解如何使用它们来生成二维码和条形码。原创 2024-04-20 10:17:26 · 274 阅读 · 0 评论 -
掌握Java枚举:提升代码质量和可读性的利器
枚举是使用enum关键字定义的。它默认继承了类,因此不能继承其他类。每个枚举都是其自身类的实例。原创 2024-04-20 09:16:22 · 288 阅读 · 0 评论 -
Java Lambda表达式:现代Java编程的简洁之选
Lambda表达式是在Java 8中引入的一个重要特性,它允许你以简洁的语法编写实例化匿名函数。Lambda表达式通常用于实现简单的函数接口,这些接口通常作为参数传递给某些方法,例如在并发编程和集合操作中。原创 2024-04-20 09:07:30 · 268 阅读 · 0 评论 -
Java 8 Stream API深度解读:全方位探索collect()方法及其应用实践
对于更复杂的收集逻辑,可以自定义Collector接口的实现。supplier():提供一个用于存放结果的容器(如空列表或空映射)。:定义如何将流元素添加到容器中。combiner():当流并行处理时,定义如何合并两个部分结果容器。finisher()(可选):对容器进行最终处理,得到最终结果。Java378 // 自定义收集器,收集首字母并保持顺序15 )16 );1720 }21}用于创建自定义收集器,传入SupplierCombiner以及可选的Finisher。原创 2024-04-19 18:20:06 · 275 阅读 · 0 评论 -
全面解读Java微服务模式:六大核心实践详解与代码示例
Java微服务模式是指在Java开发环境中实现微服务架构所采用的设计模式、架构模式和技术手段。微服务架构强调将大型复杂应用拆分成一系列小型、独立、自治的服务,每个服务专注于单一业务功能,通过轻量级通信机制相互协作。原创 2024-04-18 09:20:37 · 272 阅读 · 0 评论 -
Java巧思:模拟扩展方法实现,为已有类增添新功能
综上所述,尽管Java本身不直接支持扩展方法,但通过创建工具类、定义静态方法并以接收者对象作为参数,我们可以实现类似效果。Java语言本身并不直接支持类似于C#中的扩展方法(Extension Method)特性,即在不修改原有类的前提下为其添加新方法。此类通常以被扩展类的名称为基础,并加上“Utils”、“Extensions”等后缀,以表明其用途。:在工具类中定义静态方法,该方法接受被扩展类的对象作为第一个参数(通常称为“接收者对象”),并在此基础上实现所需的新功能。类添加一个计算单词数量的方法。原创 2024-04-17 09:15:57 · 217 阅读 · 0 评论 -
Java处理INI配置文件:探究四种高效读取与解析策略
许多第三方库提供了专门针对INI文件格式的解析器,这些库通常提供了更强大的功能和更好的兼容性。除了通用配置库,还有一些专门针对INI文件的Java库,如ini4j。根据项目需求、现有依赖情况、对INI文件复杂度的预期以及对性能、灵活性的要求,您可以选择最适合您的方法来读取INI文件。:使用第三方库通常意味着增加项目依赖,但换来了更强大的功能、更好的错误处理以及对复杂INI文件格式的良好支持。:专门的INI库如ini4j提供了与INI文件格式更紧密的集成,可以直接访问节和键值对,无需进行字符串拼接。原创 2024-04-16 12:30:44 · 316 阅读 · 0 评论 -
一文详解七大主流消息队列(MQ):特性、应用场景与对比分析
总结来说,选择哪种MQ库取决于您的具体需求,如消息吞吐量、延迟要求、消息可靠性、顺序保证、事务支持、云平台集成、跨平台兼容性、易用性、运维成本等因素。由于MQ(Message Queue,消息队列)种类繁多,且每种MQ都有其独特的特性和应用场景,因此这里将为您提供对几种主流MQ库的详细讲解,从不同角度对比和分析它们的特点。:金融交易、订单处理、支付结算、数据同步、日志采集等对消息顺序和事务性有严格要求的场景。:适用于微服务间的异步通信、任务队列、事件驱动架构、跨系统的数据同步等。原创 2024-04-16 12:27:59 · 1024 阅读 · 0 评论 -
Java应对大容量Excel:借助Apache POI SAX解析实现稳健高效读取
等方法中处理SAX事件,如行开始、行结束、单元格开始、单元格结束以及单元格文本内容等,实现对Excel数据的逐行、逐单元格处理,从而避免一次性加载整个文件到内存中导致的内存溢出问题。同时,务必关闭不再使用的输入流以释放资源。以下是一个使用Apache POI库以SAX解析方式读取大型Excel文件的Java代码示例,旨在避免内存溢出问题。代码中包含了详细的注释,解释了每一步操作的目的和逻辑。类中的方法仅用于演示目的,实际使用时应根据业务需求实现具体的逻辑。注意:上述代码示例中,原创 2024-04-15 19:09:04 · 174 阅读 · 0 评论 -
Manticore Search 高级篇
总结:在使用Java开发与Manticore Search交互的应用时,高级用法往往涉及到自定义分词逻辑、扩展功能、性能调优、深度集成与自动化运维等方面。虽然Manticore Search的插件和部分高级特性需要C++实现,但Java开发者可以通过HTTP API、中间件服务、微服务架构、容器化部署等手段,间接实现类似的高级功能,适应复杂业务需求。虽然Manticore Search提供了多种内置分词器,但在某些特定场景下,可能需要定制符合业务需求的分词逻辑。原创 2024-04-15 18:51:59 · 900 阅读 · 0 评论 -
Manticore Search 中级进阶篇
接下来,我们将深入探讨Manticore Search的一些中级进阶话题,包括高级查询构造、索引优化、分布式部署、监控与调试,以及如何利用Manticore Search实现更复杂的搜索场景与业务需求。通过深入学习Manticore Search的中级进阶知识,您现在具备了构建复杂查询、优化索引性能、管理分布式部署以及应对各类复杂搜索场景的能力。持续关注Manticore Search的官方文档、社区动态与最佳实践,不断提升您的搜索应用开发技能,为您的业务带来更高效、精准的搜索体验。原创 2024-04-15 18:29:19 · 282 阅读 · 0 评论 -
从零开始:Manticore Search入门与Java集成
让我们从零开始逐步讲解如何在Java项目中使用Manticore Search。原创 2024-04-15 18:19:22 · 370 阅读 · 0 评论 -
聊聊国密算法
由于国密算法的实现通常涉及复杂的数学运算和特定的安全要求,直接提供完整的Java代码可能涉及版权和安全问题。国密算法(GM/T)是中国国家密码管理局制定的一系列密码算法标准,旨在提供安全的加密、解密、签名和验证等功能。如果你对某个具体的国密算法有深入的了解需求,我可以为你提供更详细的算法原理和安全性分析。使用官方库:中国国家密码管理局可能会发布官方库或SDK,其中包含了国密算法的实现。适用于商用密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。原创 2024-04-04 12:04:38 · 241 阅读 · 0 评论 -
聊聊Java中的N种锁
Java的java.util.concurrent.locks包提供了显式的锁机制,通过实现Lock接口(如ReentrantLock)来提供比内置锁更灵活的功能。显式锁允许尝试获取锁(tryLock())、定时获取锁(tryLock(long time, TimeUnit unit))、中断获取锁等操作。每种锁都有其适用的场景和优缺点,需要根据具体的应用需求来选择合适的锁机制。虽然Java标准库中没有直接提供互斥锁(Mutex)的实现,但ReentrantLock等显式锁可以视为一种互斥锁。原创 2024-04-04 11:51:22 · 188 阅读 · 0 评论 -
Java中List集合遍历的N种方法
在大多数情况下,使用 for-each循环或Lambda表达式和forEach方法是最简洁和易读的。如果你需要进行更复杂的操作或需要额外的功能(如从集合中移除元素),那么迭代器或Stream API可能是更好的选择。Stream API 是 Java 8 引入的一个功能强大的新特性,它允许你以声明性方式处理数据。从 Java 8 开始,你可以使用 Lambda 表达式和 forEach 方法来遍历列表。虽然这不是一个推荐的方法,因为它有些复杂,但有时你可能需要同时访问元素和索引。使用传统的for循环。原创 2024-04-02 22:32:20 · 275 阅读 · 0 评论 -
国密算法SM4
在实际应用中,你应该使用官方或受信任的第三方库来实现SM4算法,以确保算法的正确性和安全性。国密算法SM4是中国国家密码管理局发布的分组密码算法,它是一种对称加密算法,分组长度为128位,密钥长度为128位。请注意,这不是实际的官方代码,因为实际的国密算法代码需要受到国家密码管理局的监管。另外,需要注意的是,在使用加密算法时,密钥的管理和保护也是非常重要的。// 假设这里有一些SM4算法的常量、S盒、密钥扩展函数等。// 密钥扩展,生成轮密钥。// 密钥扩展,生成轮密钥。// 实现密钥扩展算法。原创 2024-04-05 08:21:52 · 235 阅读 · 0 评论 -
国密算法SM3
然后,我们使用MessageDigest.getInstance("SM3", "BC")来获取一个SM3哈希运算的实例。国密算法SM3是一种密码杂凑算法,适用于商用密码应用中的数字签名和验证,是在SHA-256基础上改进实现的一种算法。请注意,为了使用SM3算法,你需要一个支持国密算法的加密库,比如GMJCE(国密Java加密扩展包)或者Bouncy Castle。另外,如果你在处理敏感数据或需要符合特定的安全标准,请务必确保你的代码符合相关的安全最佳实践,并考虑使用经过认证的加密库和工具。原创 2024-04-05 08:20:51 · 316 阅读 · 0 评论 -
国密算法SM2
具体地,SM2定义了一条椭圆曲线及其上的加法运算、倍加运算等,并且规定了一系列的参数和运算过程,包括密钥对的生成、数字签名的生成与验证等。此外,确保你使用的是最新版本的库,并遵守任何与加密库相关的许可和限制。然而,需要注意的是,SM2算法的具体实现涉及国家密码标准和可能的出口管制,因此在实际开发中,应当使用经过国家密码管理局认证过的库或者工具来实现,而不是自行编写。这里我可以提供一个非常基础的SM2使用示例,但这并不构成完整的实现,只是展示如何调用一个加密库中的SM2功能。// 打印公钥和私钥。原创 2024-04-05 08:20:07 · 319 阅读 · 0 评论