几款Java源码扫描工具(FindBugs、PMD、SonarQube、Fortify、WebInspect)
说明
有几个常用的Java源码扫描工具可以帮助您进行源代码分析和检查。以下是其中一些工具:
- FindBugs:FindBugs是一个静态分析工具,用于查找Java代码中的潜在缺陷和错误。它可以检测出空指针引用、资源未关闭、不良的代码实践等问题。FindBugs已经停止维护,但仍然是一个常用的工具。
- PMD:PMD是另一个流行的静态代码分析工具,用于检测Java代码中的潜在问题和不良实践。它可以检查代码中的重复代码、未使用的变量、低效的代码等。
- Checkstyle:Checkstyle是一个用于强制执行编码规范的工具,它可以确保代码符合一致的样式和规范。它可以检查代码缩进、命名约定、注释规范等。
- SonarQube:SonarQube是一个功能强大的代码质量管理平台,可以对Java代码进行静态分析,并提供详细的代码质量指标和报告。它整合了多个静态分析工具,包括FindBugs、PMD和Checkstyle等。
这些工具可以作为独立的命令行工具使用,也可以与集成开发环境(IDE)或持续集成(CI)工具集成,以便在开发过程中自动执行代码扫描和检查。
请注意,这些工具都有自己的配置和规则集,您可以根据项目的需求进行自定义配置。此外,这些工具只能检测到一部分潜在问题,仍然需要开发人员进行代码审查和测试来确保代码质量。
建议您根据项目的具体需求选择适合的工具,并根据项目的要求进行配置和使用。
FindBugs
命令行使用
安装和使用FindBugs,您可以按照以下步骤进行操作:
-
下载FindBugs:您可以从FindBugs的官方网站(https://findbugs.sourceforge.io/downloads.html)下载最新版本的FindBugs。
-
解压缩下载的文件:将下载的文件解压缩到您选择的目录中。
-
设置FindBugs的环境变量(可选):将FindBugs的安装目录添加到系统的PATH环境变量中,以便您可以从任何位置运行FindBugs命令。
-
运行FindBugs:使用以下命令运行FindBugs:
findbugs -textui <your_java_file.class>请将
<your_java_file.class>替换为您要分析的Java类文件的路径。如果您没有将FindBugs的安装目录添加到系统的PATH环境变量中,您可以使用完整的FindBugs路径来运行命令,例如:
/path/to/findbugs/bin/findbugs -textui <your_java_file.class>这将以文本界面的形式显示FindBugs的分析结果。
-
查看FindBugs报告:FindBugs将分析您的Java类文件并生成一个报告,其中包含潜在的缺陷和错误。您可以在命令行界面中查看报告,也可以将报告保存到文件中以供后续分析。
如果您希望将报告保存到文件中,可以使用以下命令:
findbugs -textui -output <output_file.xml> <your_java_file.class>将
<output_file.xml>替换为您希望保存报告的文件路径和名称。
此外,您还可以使用FindBugs的图形用户界面(GUI)工具来更方便地运行和查看FindBugs的结果。FindBugs GUI提供了更直观的界面,可以帮助您分析和解释FindBugs的报告。
希望这些步骤可以帮助您安装和使用FindBugs进行Java源代码的静态分析。
提示:FindBugs已经停止维护,因此可能存在一些限制和局限性。如果您需要更先进的静态代码分析工具,可以考虑使用SonarQube等其他替代方案。
图形用户界面
FindBugs提供了一个图形用户界面(GUI)工具,可以更方便地运行和查看FindBugs的结果。以下是使用FindBugs GUI的简要步骤:
-
下载FindBugs:您可以从FindBugs的官方网站(https://findbugs.sourceforge.io/downloads.html)下载最新版本的FindBugs。
-
解压缩下载的文件:将下载的文件解压缩到您选择的目录中。
-
运行FindBugs GUI:进入FindBugs的安装目录,并找到
findbugs-gui.jar文件。然后,使用以下命令运行FindBugs GUI:java -jar findbugs-gui.jar如果您没有将Java的可执行文件路径添加到系统的PATH环境变量中,您可能需要使用完整的Java可执行文件路径来运行命令。
-
导入Java项目:在FindBugs GUI中,使用菜单栏的"File"选项,选择"Open Project"或"Open File"来导入您的Java项目或单个Java文件。
-
运行FindBugs分析:在FindBugs GUI中,使用菜单栏的"Analysis"选项,选择"Start Analysis"或类似的选项来运行FindBugs的分析。FindBugs将会对您的代码进行静态分析,并生成相应的报告。
-
查看FindBugs报告:在FindBugs GUI中,您可以查看生成的FindBugs报告。报告将显示潜在的缺陷和错误,以及建议的修复措施。您可以通过报告中的各种过滤和排序选项来浏览和筛选报告内容。
另外,您还可以导出报告为HTML、XML等格式,以便与团队成员共享或进行进一步的分析。
PMD安装和使用
简介
PMD(Programming Mistake Detector)是一个用于检测编程错误的工具。它可以扫描您的代码并检测出潜在的问题和错误。您可以通过访问PMD的官方网站(https://pmd.github.io/)来了解更多关于PMD的信息。
基本使用步骤
1、访问PMD的官方网站(https://pmd.github.io/)。
2、在网站上找到适合您编程语言的PMD版本,并下载安装包。
3、安装PMD到您的开发环境中。
4、配置PMD,以便它可以检查您的代码。您可以参考PMD官方文档或相关教程来了解如何配置。
5、运行PMD,它将扫描您的代码并检测出潜在的编程错误。
6、根据PMD的检测结果,修复代码中的错误和问题。
命令行
要安装和使用PMD(Programming Mistake Detector),您可以按照以下步骤进行操作:
-
下载PMD:您可以从PMD的官方网站(https://pmd.github.io/)下载最新版本的PMD。
-
解压缩下载的文件:将下载的文件解压缩到您选择的目录中。
-
运行PMD:使用以下命令运行PMD:
pmd.bat -d <your_source_directory> -R <ruleset_file> -f text将
<your_source_directory>替换为您要分析的源代码文件所在的目录。将<ruleset_file>替换为您选择的规则集文件。-f text参数指定以文本格式输出分析结果。如果您使用的是类Unix系统(如Linux或Mac),请使用
pmd.sh脚本而不是pmd.bat。 -
查看PMD报告:PMD将分析您的源代码,并生成一个报告,其中包含潜在的代码问题和建议的修复措施。您可以在命令行界面中查看报告。
如果您希望将报告保存到文件中,可以使用重定向操作符将输出写入文件,例如:
pmd.bat -d <your_source_directory> -R <ruleset_file> -f text > report.txt这将将报告保存到名为
report.txt的文件中。
除了命令行界面,PMD还提供了其他输出格式和图形用户界面(GUI)工具,以便更方便地查看和分析PMD的结果。您可以在PMD的官方网站上找到有关这些选项的更多信息。
希望这些步骤可以帮助您安装和使用PMD进行静态代码分析。PMD是一个功能强大的工具,可以帮助您发现和纠正潜在的编程错误和不良实践。
图形界面
PMD提供了一个名为"PMD Designer"的图形用户界面(GUI)工具,它可以更方便地运行和查看PMD的结果。以下是使用PMD Designer的简要步骤:
-
下载PMD:您可以从PMD的官方网站(https://pmd.github.io/)下载最新版本的PMD。
-
解压缩下载的文件:将下载的文件解压缩到您选择的目录中。
-
运行PMD Designer:进入PMD的安装目录,并找到
pmd-designer.jar文件。然后,使用以下命令运行PMD Designer:java -jar pmd-designer.jar如果您没有将Java的可执行文件路径添加到系统的PATH环境变量中,您可能需要使用完整的Java可执行文件路径来运行命令。
-
导入Java项目:在PMD Designer中,使用菜单栏的"File"选项,选择"Open Project"或"Open File"来导入您的Java项目或单个Java文件。
-
运行PMD分析:在PMD Designer中,您可以选择要运行的PMD规则集和分析选项。然后,点击工具栏上的"Run"按钮来运行PMD的分析。PMD Designer将会对您的代码进行静态分析,并生成相应的报告。
-
查看PMD报告:在PMD Designer中,您可以查看生成的PMD报告。报告将显示潜在的缺陷和错误,以及建议的修复措施。您可以通过报告中的各种过滤和排序选项来浏览和筛选报告内容。
另外,PMD Designer还提供了代码视图和问题视图,使您可以更方便地查看和分析代码中的问题。
请注意,PMD Designer是一个相对较新的工具,提供了更直观和交互性的界面,方便您查看和分析PMD的结果。然而,PMD Designer可能仍处于开发中,可能存在一些限制和局限性。如果您需要更先进的静态代码分析工具,可以考虑使用SonarQube等其他替代方案。
Checkstyle
Checkstyle是一个用于静态代码分析和代码风格检查的工具,它可以帮助开发人员遵循一致的编码规范和最佳实践。以下是使用Checkstyle的基本步骤:
-
下载Checkstyle:您可以从Checkstyle的官方网站(https://checkstyle.sourceforge.io/)下载最新版本的Checkstyle。
-
配置Checkstyle:Checkstyle使用XML格式的配置文件来定义代码规范和检查规则。您可以根据自己的需求创建一个配置文件,或者使用现有的配置文件。Checkstyle提供了一些常见的配置文件,如Google Java Style、Sun Checks等。
-
运行Checkstyle:使用以下命令运行Checkstyle:
java -jar checkstyle-<version>.jar -c <config_file.xml> <source_file(s)>将
<version>替换为您下载的Checkstyle的版本号。将<config_file.xml>替换为您选择的配置文件。<source_file(s)>是您要检查的源代码文件或目录。例如,如果您要检查名为
MyClass.java的Java源代码文件,可以运行以下命令:java -jar checkstyle-<version>.jar -c <config_file.xml> MyClass.java -
查看Checkstyle报告:Checkstyle将对您的代码进行分析,并生成一个报告,其中包含不符合规范的代码和建议的修复措施。报告通常以HTML或XML格式生成。您可以在浏览器中打开HTML报告,或使用文本编辑器查看XML报告。
有时,您可以将Checkstyle与集成开发环境(IDE)或构建工具(如Maven、Gradle)集成,以便在开发过程中自动运行Checkstyle并显示问题。
Checkstyle提供了丰富的配置选项,您可以根据自己的需求定义自定义规则和检查。您可以在Checkstyle的官方网站上找到更详细的文档和示例配置文件,以帮助您开始使用Checkstyle进行代码风格检查和静态代码分析。
Fortify
-
Fortify SCA简介:
-
Fortify SCA 是一个静态的、白盒的软件源代码安全测试工具。它通过内置的五大主要分析引擎:数据流、语义、结构、控制流、配置流等对应用软件的源代码进行静态的分析,分析的过程中与它特有的软件安全漏洞规则集进行全面地匹配、查找,从而将源代码中存在的安全漏洞扫描出来,并给予整理报告。扫描的结果中不但包括详细的安全漏洞的信息,还会有相关的安全知识的说明,以及修复意见的提供。
-
Fortify SCA 产品组件介绍
-
Fortify SCA是一个产品的套件,它是由内置的分析引擎、安全编码规则包、审查工作台、规则自定义编辑器和向导、IDE 插件五部分组件,五个组件配合工作完成对源代码安全漏洞的扫描,分析,查看,审计等工作。简单介绍这五个部分如下:
-
分析引擎:内置五大分析引擎与规则包配合工作,从五个侧面全面地分析程序源代码中的安全漏洞。
-
安全编码规则包:由多位顶级的软件安全专家,多年研究出来的数十万条软件安全漏洞特征的集合。目前能查找出来约350多种安全漏洞,内置在SCA中与分析引擎配合工作。
-
审计工作台:一个用来查看,审计SCA分析出来的漏洞结果的综合平台,它包含大量丰富的软件漏洞信息,如下图2 所示,它包括了漏洞的分级,漏洞产生的全过程,漏洞所在的源代码行数定位,以及漏洞的解释说明和推荐的修复建议等内容,大大提高了用户对SCA的查看,审计等工作的便携性,从而提高工作效率。
-
规则自定义向导/编辑器:Fortify SCA的规则支持自定义功能,方便用户来扩展SCA对漏洞的分析能力,所以SCA提供了一个用户自定义的向导和编辑器。
-
IDE插件:为了方便用户使用SCA对程序源代码进行安全扫描,它提供了多种IDE工具的插件,如Eclipse, Visual Studio,RAD, WSAD等。
Fortify SCA 扫描引擎介绍
- Foritfy SCA主要包含的五大分析引擎:
- 数据流引擎:跟踪、记录并分析程序中的数据传递过程所产生的安全问题。
- 语义引擎:分析程序中不安全的函数,方法的使用的安全问题。
- 结构引擎:分析程序上下文环境,结构中的安全问题。
- 控制流引擎:分析程序特定时间,状态下执行操作指令的安全问题。
- 配置引擎:分析项目配置文件中的敏感信息和配置缺失的安全问题。
- 特有的X-Tier™跟踪器:跨跃项目的上下层次,贯穿程序来综合分析问题
Fortify SCA 的工作原理
-
Foritfy SCA 首先通过调用语言的编译器或者解释器把前端的语言代码(如JAVA,C/C++源代码)转换成一种中间媒体文件NST(Normal Syntax Tree)将其源代码之间的调用关系,执行环境,上下文等分析清楚。然后再通过上述的五大分析引擎从五个切面来分析这个NST,匹配所有规则库中的漏洞特征,一旦发现漏洞就抓取出来。形成包含详细漏洞信息的FPR结果文件,用AWB打开查看。
-
Fortify SCA 的结果文件为.FPR文件,包括详细的漏洞信息:漏洞分类,漏洞产生的全路径,漏洞所在的源代码行,漏洞的详细说明及修复建议等。
-
目前Fortify SCA可以扫描出约350种漏洞,Fortify将所有安全漏洞整理分类,根据开发语言分项目,再细分为8个大类,约350个子类。
SonarQube
SonarQube是一个开源平台,用于管理Java源代码的质量。它通过插件机制集成不同的测试工具、代码分析工具和持续集成工具,例如PMD-CPD、CheckStyle、FindBugs和Jenkins。SonarQube可以对不同规模和种类的工程进行代码质量管理,同时对持续集成工具提供接口支持,并可以方便地在持续集成中使用SonarQube。此外,SonarQube的插件还可以对Java以外的其他编程语言提供支持,并对国际化和报告文档化也有良好的支持。
SonarQube还可以提供以下功能:
- 代码质量检测:SonarQube可以对代码进行静态分析,检测代码中的漏洞、代码冗余、代码复杂度、重复代码等问题,并给出相应的建议和修复方案。
- 代码规范检测:SonarQube可以集成CheckStyle等工具,对Java代码进行规范性检测,例如类设计、方法设计、命名规范等,帮助开发者遵守代码规范。
- 测试覆盖率分析:SonarQube可以集成JaCoCo等工具,对Java代码的测试覆盖率进行分析,帮助开发者了解测试用例的覆盖情况,提高测试的质量。
- 集成持续集成:SonarQube可以与Jenkins等持续集成工具集成,将代码质量检测和测试覆盖率分析等任务集成到持续集成流程中,方便开发者进行自动化构建和测试。
- 报告文档化:SonarQube可以将检测结果和数据分析结果生成报告,方便开发者和管理者了解代码质量和测试情况,为项目管理和决策提供数据支持。
总之,SonarQube是一个功能强大的代码质量管理平台,可以帮助团队提高代码质量和可维护性,提高开发效率和产品质量。
WebInspect
- WebInspect是一种自动化动态应用安全测试(DAST)工具,可模拟真实的黑客技术和攻击,支持全面动态地分析错综复杂的Web应用和服务。WebInspect提供了Web应用程序和Web服务漏洞评估解决方案,使安全专业人员和规范审计人员可以在自己的环境中快速而轻松地分析众多的Web应用和Web服务。
功能特点
- 动态和运行时分析:测试运行网络应用和服务的动态行为,识别和优先处理安全漏洞。超越黑盒测试:集成了动态和运行时分析,可更加快速地找到并修复更多漏洞。
- 简化了技术:优化测试资源。同步爬网等先进技术支持初级安全测试员执行专业级测试。
- 合规性管理:管理部门可轻松了解有关漏洞、趋势、合规性管理和投资回报的信息。可清楚地向开发部门传达每个漏洞的详细信息及优先顺序。


一步一步实战入门者Java学习课程《从游戏中学习Java编程》
https://edu.csdn.net/learn/25125/292197?spm=3001.4143
相关文章:
几款Java源码扫描工具(FindBugs、PMD、SonarQube、Fortify、WebInspect)
说明 有几个常用的Java源码扫描工具可以帮助您进行源代码分析和检查。以下是其中一些工具: FindBugs:FindBugs是一个静态分析工具,用于查找Java代码中的潜在缺陷和错误。它可以检测出空指针引用、资源未关闭、不良的代码实践等问题。FindBu…...
java springboot测试类鉴定虚拟MVC请求 返回内容与预期值是否相同
上文 java springboot测试类鉴定虚拟MVC运行值与预期值是否相同 中 我们验证了它HTTP的返回状态 简单说 校验了他 是否成功的状态 这次 我们来不对得到的内容 我们 直接改写测试类代码如下 package com.example.webdom;import org.junit.jupiter.api.Test; import org.springf…...
MongoDB随记
MongoDB 1、简单介绍2、基本术语3、shard分片概述背景架构路由功能chunk(数据分片)shard key(分片键值) 4、常用命令 1、简单介绍 MongoDB是一个分布式文件存储的数据库,介于关系数据库和非关系数据库之间,…...
839 - Not so Mobile (UVA)
题目链接如下: Online Judge 这道题刘汝佳的解法极其简洁,用了20来行就解决了问题。膜拜…… 他的解法如下:天平(UVa839紫书p157)_天平 uva 839_falldeep的博客-CSDN博客 我写了两个(都很冗长ÿ…...
php字符串处理函数的使用
php字符串处理函数的使用 trim() trim()函数的功能用于去除字符串首尾的空白字符(包括空格、制表符、换行符等)。它可以用于清理用户输入的数据或去除字符串中的多余空格。 <?php $char" holle world! ";echo trim($char) ?>str_repl…...
UEC++ day8
伤害系统 给敌人创建血条 首先添加一个UI界面用来显示敌人血条设置背景图像为黑色半透明 填充颜色 给敌人类添加两种状态表示血量与最大血量,添加一个UWidegtComponet组件与UProgressBar组件 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category "Enemy …...
学习记录——ipv4、ipv6与ip、DNS、网络协议
文章目录 前情提要:网络协议和域名DNS协议、DNS污染Ipv4、Ipv6NAT协议,IP:端口,环节IP地址枯竭NAT-PT协议,加速Ipv6应用 前情提要: 本文仅做个人的学习记录以及理解,可能存在一些错误。 网络协…...
cefsharp119.4.30(cef119.4.3,Chromium119.0.6045.159)版本升级体验支持H264及其他多个H264版本
Cefsharp119.4.30,cef119.4.3,Chromium119.0.6045.159 此更新包括一个高优先级安全更新 This update includes a high priority security update. 说明:此版本119.4.3支持H264视频播放(需要联系我),其他版本。.NETFramework 4.6.2 NuGet Gallery | CefSharp.WinForms 119.…...
“index“ should always be multi-word
vue报错:Component name “index” should always be multi-word 分析:组件名要以驼峰格式命名,自定义的要以loginIndex.vue等这种方式命名,防止和html标签冲突,所以命名index.vue 会报错 解决:在.eslint…...
服务器64GB内存、8核CPU的MySQL 8配置参数
服务器64GB内存、8核CPU的MySQL 8配置参数可以按照以下步骤进行调优: 调整缓冲区相关参数: 增加innodb_buffer_pool_size的值,将其设置为4GB或更大,以加速频繁读取的操作。 – 2147483648 增加key_buffer_size的值,将…...
Python+Qt虹膜检测识别
程序示例精选 PythonQt虹膜检测识别 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《PythonQt虹膜检测识别》编写代码,代码整洁,规则,易读。 学习与应用推…...
我的创作纪念日——365天
机缘 最开始我写博客没有什么特别的原因,主要是因为以下几点: 练习自己的语言组织能力 记录自己学习生活中学到的知识 主要还是想找一个好的保存 Markdown 笔记的平台。 最终我选择了 CSDN,一来是因为 CSDN 对 Markdown 语法的支持较为全面…...
安卓手机便签APP用哪个,手机上好用的便签APP是什么
在日常生活及工作方面,总是有许多做不完的事情需要大家来处理,当多项任务堆叠交叉在一起时,很容易漏掉一些项目,这时候大家会借助经常携带的手机来记录容易忘记的事情,如手机上的闹钟、定时提醒软件都可以用来记录待办…...
前端Date对象的使用锦集
Date 对象用于处理日期与时间。 创造对象 var d new Date(); var d new Date(milliseconds); // 参数为毫秒 var d new Date(dateString); var d new Date(year, month, day, hours, minutes, seconds, milliseconds);方法 getDate() 获取当前日期对象是几日(1-31) cons…...
如何将ONLYOFFICE与Python应用程序集成
ONLYOFFICE是一项功能强大的开源文档编辑器,可以将文本文档、电子表格和演示文稿、电子表单编辑功能集成至任何编程语言编写的 Web 应用程序中。最新的7.5版本编辑器可以支持编辑PDF文件(批注、绘图等)。在本文中,我们会带你了解如…...
vector的简单模拟实现_C++
目录 一、vector的数据结构 二、vector的构造 三、vector的增删查改及空间管理 四、全部代码 一、vector的数据结构 vector以线性连续空间为基础来定义数据结构以及扩展功能。vector的两个迭代器,分别是start和finish,分别指向配置得来的已被使用的空…...
合并两个有序链表,剑指offer,力扣
目录 力扣题目地址: 原题题目: 我们直接看题解吧: 解题方法: 审题目事例提示: 解题思路: 具体流程如下: 代码实现: 知识补充: 力扣题目地址: 21. 合并两个有序…...
Delphi 12 Athens 发布了!
官方安装包 ☞ https://altd.embarcadero.com/download/radstudio/12.0/RADStudio_12_0_4915718.iso 安装辅助工具、控件可以戳这里 :Delphi 12 资源 RAD Stuido 12 Athens ,这次更新的细节还是比较多的,但主要还是多端(iOS、An…...
基于Haclon的Blob分析
任务要求: 请用BLOB分析的方法计算图中所有灰度值在120和255之间的像素构成的8连通区域的面积与中心点坐标。 Blob基础: 分析过程:首先获取图像,然后根据特征对原始图像进行阈值分割(区分背景像素和前景像素…...
安卓手机好用的清单软件有哪些?
生活中每个人都有丢三落四的习惯,伴随着生活节奏的加快,人们常忘事的情况会更加频繁的出现,这时候很多人就开始选择手机上记录清单类的软件,安卓手机在手机市场中占有很大的分量,在安卓手机上好用的记录清单的软件有哪…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
