当前位置: 首页 > news >正文

11-网络安全框架及模型-软件安全能力成熟度模型(SSCMM)

目录

软件安全能力成熟度模型

1 背景概述

2 主要内容

3 成熟度等级定义

4 关键过程和实践

5 评估方法

6 改进建议

7 持续改进

8 主要价值

9 应用场景

10 优势和局限性

备注


软件安全能力成熟度模型

1 背景概述

SSCMM模型是软件安全能力成熟度模型,它描述了一个组织中为确保优质安全工程而必须具备的安全工程过程的基本特性。该模型没有规定具体的过程或顺序,而是汇集了在行业中普遍遵循的实践。

SSCMM模型诞生于一个对软件安全性和质量越来越重视的时代。在软件工程领域,保证软件产品的安全性和质量已经成为一项至关重要的任务。因此,许多组织和研究机构都在努力研究和开发新的方法和技术,以帮助开发人员更好地管理和提高软件的安全性和质量。

SSCMM模型的出现,是为了提供一个框架和指导,帮助组织评估和提高软件安全能力。该模型提供了一个可重复使用的框架,组织可以使用这个框架来评估和改进他们的软件安全流程和实践。此外,SSCMM模型还可以帮助组织更好地了解他们当前的安全状况,识别潜在的安全风险,并采取适当的措施来缓解这些风险。

总之,SSCMM模型的诞生是为了帮助组织评估和提高软件安全能力,以确保软件产品的安全性和质量。

2 主要内容

软件安全能力成熟度模型(SSCMM)的主要内容是围绕软件安全能力的评估和提升而展开的。该模型将软件安全能力划分为不同的成熟度等级,并为每个等级定义了一系列的关键过程和实践。

以下是SSCMM模型的主要内容:

  1. 成熟度等级定义:SSCMM模型定义了多个成熟度等级,每个等级代表了组织在软件安全能力方面的不同阶段和水平。这些等级通常包括初始级、可重复级、定义级、管理级和优化级等。

  2. 关键过程和实践:对于每个成熟度等级,SSCMM模型定义了一系列的关键过程和实践,这些过程和实践是组织在该等级下需要关注和实施的重要活动。这些关键过程和实践涵盖了组织建设、制度流程、技术工具和人员能力等方面。

  3. 评估方法:SSCMM模型提供了一套评估方法,用于评估组织的软件安全能力成熟度等级。这些评估方法通常包括文档审查、访谈、观察和实践验证等,以收集和分析相关数据,确定组织的成熟度等级。

  4. 改进建议:根据评估结果,SSCMM模型提供针对性的改进建议,帮助组织提升其软件安全能力。这些改进建议可能涉及组织结构的调整、流程的优化、技术工具的采用和人员能力的提升等方面。

  5. 持续改进:SSCMM模型强调持续改进的重要性,鼓励组织在达到某个成熟度等级后,继续努力提升软件安全能力,追求更高的成熟度等级。

总之,SSCMM模型的主要内容是帮助组织评估和提升软件安全能力,通过定义成熟度等级、关键过程和实践,以及提供评估方法和改进建议,引导组织逐步提高软件安全性的水平。

3 成熟度等级定义

软件安全能力成熟度模型(SSCMM)的成熟度等级主要分为五级,包括初始级、可重复级、已定义级、已管理级和优化级。

  1. 初始级(Initial):工作无序,项目进行过程中常放弃当初的计划。管理无章法,缺乏健全的管理制度。开发项目成效不稳定,项目成功主要依靠项目负责人的经验和能力,他一但离去,工作秩序面目全非。

  2. 可重复级(Repeatable):管理制度化,建立了基本的管理制度和规程,管理工作有章可循。初步实现标准化,开发工作比较好地按标准实施。变更依法进行,做到基线化,稳定可跟踪,新项目的计划和管理基于过去的实践经验,具有重复以前成功项目的环境和条件。

  3. 已定义级(Defined):已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。

  4. 已管理级(Managed):产品和过程已建立了定量的质量目标。已建立过程数据库。可预测过程和产品质量趋势,如预测偏差,实现及时纠正。

  5. 优化级(Optimizing):过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。

4 关键过程和实践

软件安全能力成熟度模型的关键过程和实践主要包括以下几个方面:

  1. 安全管理:这是确保软件安全性的基础,包括建立安全策略、制定安全规章制度、进行安全培训等。通过安全管理,可以确保所有员工都了解并遵守安全规定,从而减少安全风险。

  2. 风险评估:对软件系统进行全面的风险评估,识别潜在的安全威胁和漏洞。这包括对系统架构、功能模块、数据传输等方面的分析,以及利用漏洞扫描工具进行测试。

  3. 安全编码:在软件开发过程中,采用安全编码实践,避免常见的安全漏洞。这包括输入验证、输出编码、参数化查询等,以防止SQL注入、跨站脚本攻击等常见攻击。

  4. 渗透测试:通过模拟黑客攻击,对软件系统进行渗透测试,以发现潜在的安全漏洞。渗透测试可以帮助开发团队了解系统的脆弱性,并及时修复漏洞。

  5. 安全审计:定期对软件系统进行安全审计,检查系统的安全性是否符合预期。这包括检查安全策略的执行情况、安全漏洞的修复情况等。

  6. 应急响应:建立应急响应机制,当发生安全事件时,能够迅速响应并采取措施防止事件扩大。这包括制定应急预案、建立应急响应团队、进行模拟演练等。

这些关键过程和实践可以帮助组织提高软件的安全性,减少潜在的安全风险。同时,这些过程也需要持续的改进和优化,以适应不断变化的网络安全环境。

5 评估方法

软件安全能力成熟度模型的评估方法主要包括以下几个步骤:

  1. 准备工作:首先,评估团队需要了解被评估组织的软件安全能力成熟度模型的应用情况,包括其组织结构、流程、技术工具和人员能力等方面。

  2. 文档审查:评估团队会对被评估组织的文档进行审查,包括软件开发过程中的各种文档,如需求文档、设计文档、测试文档等。通过文档审查,评估团队可以了解被评估组织的软件开发过程和安全实践。

  3. 员工培训:评估团队会对被评估组织的员工进行培训,让他们了解软件安全能力成熟度模型的相关知识和评估方法。员工培训可以帮助员工更好地理解评估过程和结果,并促进他们在未来的工作中改进软件安全能力。

  4. 问卷调查和统计:评估团队会向被评估组织的员工发放问卷,了解他们对软件安全能力成熟度模型的理解和应用情况。同时,评估团队还会对问卷结果进行统计和分析,以了解被评估组织的整体情况。

  5. 数据分析:评估团队会对收集到的数据进行深入的分析,包括软件开发过程中的各种数据,如缺陷数量、漏洞数量、安全事件数量等。通过数据分析,评估团队可以了解被评估组织的软件安全状况和问题。

  6. 与企业的高层领导讨论:评估团队会与被评估组织的高层领导进行讨论,了解他们对软件安全能力成熟度模型的理解和应用情况,以及他们对未来改进的期望和建议。

  7. 撰写评估报告:最后,评估团队会撰写评估报告,对被评估组织的软件安全能力成熟度模型的应用情况进行总结和分析,并提出改进建议。

通过以上步骤,评估团队可以对被评估组织的软件安全能力成熟度模型进行全面的评估,并为其提供针对性的改进建议,以提升其软件安全能力。

6 改进建议

针对软件安全能力成熟度模型的改进建议,以下是一些详细的建议:

  1. 制定详细的安全计划:组织应制定详细的安全计划,明确安全目标和策略,以及实现这些目标所需的资源和时间。安全计划应包括风险评估、安全设计、安全编码、安全测试、安全部署等各个环节。

  2. 加强安全培训:组织应加强员工的安全培训,提高员工的安全意识和技能。培训内容应包括安全基础知识、安全实践、安全工具使用等,同时还应定期进行培训和更新。

  3. 建立安全管理制度:组织应建立完善的安全管理制度,明确安全责任和权限,规范安全操作流程。管理制度应包括安全策略、安全流程、安全审计、应急响应等方面的内容。

  4. 采用先进的安全技术:组织应采用先进的安全技术,如加密技术、防火墙技术、入侵检测技术等,以提高系统的安全性和可靠性。同时,还应及时更新和升级安全技术,以应对不断变化的网络安全威胁。

  5. 定期进行安全审计:组织应定期进行安全审计,检查系统的安全性是否符合预期。审计内容应包括漏洞扫描、渗透测试、日志分析等,以发现潜在的安全漏洞和问题。

  6. 加强与第三方合作伙伴的沟通和协作:组织应加强与第三方合作伙伴的沟通和协作,共同提升整体的安全能力。合作伙伴之间应建立完善的安全沟通和协作机制,及时分享安全信息和经验,共同应对网络安全威胁。

总之,针对软件安全能力成熟度模型的改进建议涉及多个方面,组织需要从制度、技术、人员等多个角度入手,全面提升软件的安全性和可靠性。同时,还应不断学习和掌握新的安全技术和手段,以应对不断变化的网络安全威胁。

7 持续改进

持续改进是软件安全能力成熟度模型中的重要环节,它强调组织在达到某个成熟度等级后,应继续努力提升软件安全能力,追求更高的成熟度等级。持续改进主要包括以下几个方面:

  1. 定期评估和审查:组织应定期对自身的软件安全能力进行评估和审查,了解当前的安全状况和存在的问题。评估和审查的结果可以为组织提供改进的方向和目标。

  2. 制定改进计划:根据评估和审查的结果,组织应制定具体的改进计划,明确改进的目标、措施、时间表和责任人。改进计划应与组织的业务目标和战略相一致。

  3. 实施改进措施:组织应按照改进计划,积极实施改进措施。这可能包括技术升级、流程优化、人员培训等方面的改进。改进措施的实施应确保与组织的业务目标和战略保持一致。

  4. 监控和评估改进效果:在实施改进措施后,组织应密切监控和评估改进效果。这可以通过收集和分析相关数据、进行用户反馈调查等方式实现。如果发现改进效果不佳,组织应及时调整改进计划和措施。

  5. 持续学习和创新:持续改进需要组织不断学习和创新。组织应关注行业动态和最佳实践,学习新的安全技术和方法,不断优化自身的安全能力。

总之,持续改进是软件安全能力成熟度模型的重要组成部分。通过持续改进,组织可以不断提高自身的软件安全能力,应对不断变化的网络安全威胁,确保业务的稳定和持续发展。

8 主要价值

软件安全能力成熟度模型的主要价值体现在以下几个方面:

  1. 保证软件开发的质量与进度:通过规范软件开发过程,SSCMM能够确保软件的质量和开发进度,减少修改和解决客户抱怨的成本。

  2. 有利于成本控制:由于质量得到保证,浪费在修改、解决客户抱怨方面的成本会降低很多,项目完成后不需要花很多时间修修补补。

  3. 有助于提高软件开发者的职业素养:SSCMM能够促使每一个具体参与其中的员工,无论是项目经理,还是工程师,甚至一些高层管理人的做事方法逐渐变得标准化、规范化。

  4. 能够解决人员流动所带来的问题:公司通过过程改进,建立了财富库以共享经验,而不是单纯依靠某些人员。

  5. 有利于提升公司和员工绩效管理水平:通过度量和分析开发过程和产品,建立公司的效率指标,以持续改进效益。

总的来说,SSCMM的主要价值在于提升软件开发过程的质量和效率,降低成本和风险,并帮助企业和员工提升绩效和管理水平。

9 应用场景

软件安全能力成熟度模型的应用场景非常广泛,可以应用于各种类型的软件企业和组织。以下是一些主要的应用场景:

  1. 软件开发过程评估:软件安全能力成熟度模型可以用于评估软件开发过程中的安全性和可靠性。通过对软件开发过程进行评估,可以发现潜在的安全漏洞和问题,提出改进建议,提高软件的质量和安全性。

  2. 安全管理评估:软件安全能力成熟度模型可以用于评估组织的安全管理能力和水平。通过对组织的安全管理制度、流程、技术工具等方面进行评估,可以发现潜在的安全风险和问题,提出改进建议,提高组织的安全管理能力。

  3. 风险评估和风险管理:软件安全能力成熟度模型可以用于进行风险评估和风险管理。通过对组织面临的网络安全威胁和风险进行评估,可以识别潜在的安全问题和风险,制定相应的风险管理策略和措施,降低组织面临的风险。

  4. 安全培训和意识提升:软件安全能力成熟度模型可以用于组织和个人的安全培训和意识提升。通过对员工进行安全培训和教育,可以提高员工的安全意识和技能,增强组织的安全防御能力。

总之,软件安全能力成熟度模型的应用场景非常广泛,可以应用于各种类型的软件企业和组织,帮助组织提高软件的安全性和可靠性,降低组织面临的风险。

10 优势和局限性

软件安全能力成熟度模型(SSCMM)的优势主要包括以下几个方面:

  1. 全面评估:SSCMM模型可以全面评估软件组织的软件安全能力,包括安全设计、安全编码、安全测试等各个方面。

  2. 指导改进:通过评估,软件组织可以了解自身在软件安全方面的优势和不足,从而指导改进方向,提高软件的安全性和可靠性。

  3. 标准化评估:SSCMM模型提供了一种标准化的评估方法,可以帮助软件组织实现公平、公正的评估,促进行业内的交流和合作。

然而,SSCMM模型也存在一些局限性:

  1. 实施难度:SSCMM模型的实施需要投入大量的人力、物力和时间,对于一些小型软件组织来说可能存在一定的难度。

  2. 主观性:评估过程中可能存在一定的主观性,不同评估师或评估机构可能对评估标准有不同的理解和执行方式。

  3. 适用范围:SSCMM模型主要适用于软件开发过程中的安全能力评估,对于其他领域的安全问题可能存在一定的局限性。

综上所述,SSCMM模型具有全面评估、指导改进和标准化评估等优势,但也存在实施难度、主观性和适用范围等方面的局限性。在实际应用中,需要根据实际情况选择适合的SSCMM模型进行评估和改进。

———————————————————————————————————————————

备注

1、或许有人疑问查阅到的部分材料说,软件安全能力成熟度模型分成五级,各级别的主要过程如下: CMM1级-补丁修补; CMM2级-渗透测试、安全代码评审; CMM3级-漏洞评估、代码分析、安全编码标准; CMM4级-软件安全风险识别、SDLC实施不同安全检查点; CMM5级-改进软件安全风险覆盖率、评估安全差距。

答:这五个成熟度等级是SSCMM模型的一部分。这些等级代表了组织在软件安全能力方面的不同阶段和水平。通过评估组织的软件安全能力,可以确定其成熟度等级,并为其提供针对性的改进建议,以提升软件安全能力。

以下是每个级别的简要概述:

  1. CMM1级 - 补丁修补:这个级别通常是最初级的软件安全能力成熟度,组织可能没有建立任何正式的软件安全流程或实践。当发现安全漏洞时,组织通常会进行补丁修补,但缺乏系统的安全管理和控制。

  2. CMM2级 - 渗透测试、安全代码评审:在这个级别,组织开始意识到软件安全的重要性,并采取一些基本的措施来提高软件的安全性。他们可能会进行渗透测试来评估其系统的安全性,并进行安全代码评审来确保代码的质量和安全性。

  3. CMM3级 - 漏洞评估、代码分析、安全编码标准:在这个级别,组织进一步提高了软件安全能力,进行更全面的漏洞评估,对代码进行深入的分析,并制定安全编码标准。他们可能会采用静态应用程序安全测试(SAST)和动态应用程序安全测试(DAST)等技术来发现和修复潜在的安全漏洞。

  4. CMM4级 - 软件安全风险识别、SDLC实施不同安全检查点:在这个级别,组织更加注重软件安全的全面管理和控制。他们不仅会进行软件安全风险识别,还会实施安全开发周期(SDLC)并设置不同的安全检查点来确保软件开发生命周期中的安全性。

  5. CMM5级 - 改进软件安全风险覆盖率、评估安全差距:这是最高级别的软件安全能力成熟度。在这个级别,组织致力于持续改进和提高软件安全风险覆盖率,并定期评估自身的安全实践与最佳实践之间的差距,以实现持续改进。

这些级别代表了组织在软件安全能力建设方面的渐进式发展。通过评估和改进组织的软件安全能力成熟度等级,可以增强组织的软件安全性,并提高其在应对潜在安全威胁时的准备和能力。

2、或许有人会疑问,SSCMM 既是软件服务能力成熟度模型也是软件安全能力成熟度模型?

答:SSCMM既可以被理解为软件服务能力成熟度模型,也可以被理解为软件安全能力成熟度模型。这取决于模型的应用领域和重点。

在软件服务领域,SSCMM被用来评估软件服务提供者在提供软件服务方面的成熟度,包括服务管理、服务流程、服务交付等方面的能力和水平。在软件安全领域,SSCMM则被用来评估软件组织在软件安全方面的成熟度,包括安全需求、安全设计、安全编码、安全测试等方面的要求和执行情况。

虽然这两个领域有一定的交叉和重叠,但它们强调的方面和重点不同。因此,在具体应用中,需要根据实际情况选择适合的SSCMM模型进行评估和改进。

相关文章:

11-网络安全框架及模型-软件安全能力成熟度模型(SSCMM)

目录 软件安全能力成熟度模型 1 背景概述 2 主要内容 3 成熟度等级定义 4 关键过程和实践 5 评估方法 6 改进建议 7 持续改进 8 主要价值 9 应用场景 10 优势和局限性 备注 软件安全能力成熟度模型 1 背景概述 SSCMM模型是软件安全能力成熟度模型,它描…...

Linux操作系统基础知识点

Linux是一种计算机操作系统,其内核由林纳斯本纳第克特托瓦兹(Linus Benedict Torvalds)于1991年首次发布。Linux操作系统通常与GNU套件一起使用,因此也被称为GNU/Linux。它是一种类UNIX的操作系统,设计为多用户、多任务…...

python 通过opencv及face_recognition识别人脸

效果: 使用Python的cv2库和face_recognition库来进行人脸检测和比对的 0是代表一样 认为是同一人。 代码: pip install opencv-python pip install face_recognition# 导入cv2库,用于图像处理 import cv2 # 导入face_recognition库&#…...

Android开发中常见的Hook技术有哪些?

Hook技术介绍 Hook技术是一种在软件开发中常见的技术,它允许开发者在特定的事件发生时插入自定义的代码逻辑。常见的应用场景包括在函数调用前后执行特定的操作,或者在特定的事件发生时触发自定义的处理逻辑。 在Android开发中,Hook通常是通…...

【linux c多线程】线程的创建,线程信息的获取,获取线程返回值

线程创建 ​专栏内容: 参天引擎内核架构 本专栏一起来聊聊参天引擎内核架构,以及如何实现多机的数据库节点的多读多写,与传统主备,MPP的区别,技术难点的分析,数据元数据同步,多主节点的情况下对…...

MFC或QT中,自绘控件的目的和实现步骤

MFC自绘控件的步骤 自绘控件的目的是为了能够自定义控件的外观、行为和交互方式,以满足特定的需求,同时增强应用程序的用户体验。 实现步骤如下: 1、创建一个继承自MFC控件基类(如CButton、CStatic等)的自定义控件类…...

ceph集群搭建详细教程(ceph-deploy)

ceph-deploy比较适合生产环境,不是用cephadm搭建。相对麻烦一些,但是并不难,细节把握好就行,只是命令多一些而已。 实验环境 服务器主机public网段IP(对外服务)cluster网段IP(集群通信&#x…...

机器视觉系统选型-避免畸变

在定位及高精度测量的系统中,镜头畸变的影响尤其重要 • 使用远心镜头 • 进行系统标定...

机器学习笔记 - 线性判别分析(LDA)的原理和应用

一、LDA简述 线性判别分析(LDA)是监督机器学习中用于解决多类分类问题的一种方法。LDA通过数据降维来分离具有多个特征的多个类。这项技术在数据科学中很重要,因为它有助于优化机器学习模型。 线性判别分析,也称为正态判别分析 (NDA) 或判别函数分析 (DFA),遵循生成模型框…...

基于5G智能网关的智慧塔吊监测方案

塔吊是建筑施工中必不可少的设施,由于塔吊工作重心高、起重载荷大、人工视距/视角受限等因素,也使得塔吊在工作过程中着较多的危险因素。对此,可以部署基于工业5G智能网关搭建智慧塔吊安全监测系统,实现对塔吊运行的全局精细监测感…...

CountDownLatch详解以及用法示例

一、什么是CountDownLatch CountDownLatch中count down是倒数的意思,latch则是门闩的含义。整体含义可以理解为倒数的门栓。 CountDownLatch的作用也是如此,在构造CountDownLatch(int count):的时候需要传入一个整数count,在这个…...

【http】缓存协议

✨ 专栏介绍 在当今互联网时代,计算机网络已经成为了人们生活和工作中不可或缺的一部分。而要实现计算机之间的通信和数据传输,就需要依靠各种网络协议来进行规范和约束。无论是浏览网页、发送电子邮件还是进行在线交流,都离不开各种各样的网…...

vscode中使用GitHub Copilot Chat

文章目录 一、什么是Github Copilot Chat二、安装使用三、如何使用1. 聊天功能2. 内联功能 一、什么是Github Copilot Chat GitHub Copilot Chat 由 OpenAI 的 GPT-4 大型多模态模型提供支持,能带来更准确的代码建议、解释和指导。GitHub Copilot Chat 的内联功能可…...

lvgl 双物理显示器的驱动实现

目录 一、背景 1. 要实现的功能2. lvgl 版本 二、简单粗暴的方式 理论上可以这样实现缺陷: 三、lvgl 自身机制支持 3.1 实现思路3.2 初始化缓冲区和注册显示驱动 3.2.1 复制lv_port_disp → lv_port_disp_23.2.2 修改 lv_port_disp_2 文件3.2.3 在应用层调用显示器…...

论文阅读——X-Decoder

Generalized Decoding for Pixel, Image, and Language Towards a Generalized Multi-Modal Foundation Model 1、概述 X-Decoder没有为视觉和VL任务开发统一的接口,而是建立了一个通用的解码范式,该范式可以通过采用共同的(例如语义&#…...

【Kubernetes】控制器Statefulset

Statefulset控制器 一、概念二、Statefulset资源清单文件编写技巧2.1、查看定义Statefulset资源需要的字段2.2、查看statefulset.spec字段如何定义2.3、查看statefulset的spec.template字段如何定义 三、Statefulset使用案例:部署web站点3.1、编写一个Statefulset资…...

智能优化算法应用:基于鱼鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于鱼鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于鱼鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鱼鹰算法4.实验参数设定5.算法结果6.参考文献7.MA…...

探索 Vue3 (五) 骨架屏

骨架屏是页面的一个空白版本,通常会在页面完全渲染之前,通过一些灰色的区块大致勾勒出轮廓,待数据加载完成后,再替换成真实的内容。 目前主流 UI库 都有骨架屏,如 Element-UI、Antd 可以看到使用起来非常简单&#x…...

java取出list中的某几个属性组成一个新的集合的几种方式

我用了三种方式,1:forEach循环;2:for循环;3:stream方法 package org.springblade.test;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors;public class Test {org.junit.jupiter.api…...

开源自托管导航页配置服务Dashy本地搭建结合内网穿透远程访问

开源自托管导航页配置服务Dashy本地搭建结合内网穿透远程访问 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 简介 Dashy 是一个开源的自托管的导航页配置服务,具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一…...

Cloudstack多个管理服务器节点

https://docs.cloudstack.apache.org/en/4.18.0.0/adminguide/reliability.html 参考翻译: 代理上支持多个管理服务器 在具有多个管理服务器的Cloudstack环境中,可以根据算法配置代理,将其连接到哪个管理服务器。这对于内部负载均衡器或高可…...

31. Ajax

简介 AJAX 是 Asynchronous JavaScript And XML 的简称。直译为,异步的JS和XML。AJAX的实际意义是,不发生页面跳转、异步载入内容并改写页面内容的技术。AJAX也可以简单的理解为通过JS向服务器发送请求。 AJAX这门技术很早就被发明,但是直到…...

ArrayList源码学习笔记(3)

时隔两年&#xff0c;重新读ArrayList源码&#xff0c;轻松了很多&#xff0c;以问题的方式记录一下收获 装饰器模式 注释中提到ArrayList本身不是线程安全的&#xff0c;注释如下&#xff1a; * <p><strong>Note that this implementation is not synchronized.&…...

flutter怎么对ReorderableListView中的用于排序的控制手柄进行显示或隐藏

我在使用ReorderableListView创建可排序列表的时候&#xff0c;需要在编辑的时候才显示右侧的控制排序的手柄。研究了半天&#xff0c;配合搜索引擎&#xff0c;才找到正确的方案。 答案很简单&#xff0c;就是在它的属性当中有一个叫做&#xff1a;buildDefaultDragHandles的…...

python 1200例——【9】斐波那契数列

文章目录 定义求解方法1. 递归方法2. 循环方法3. 动态规划方法4. 矩阵方法总结:定义 斐波那契数列(Fibonacci sequence)是一个在自然世界中经常出现的数学序列。它是由0和1开始,然后的每个数字都是前两个数字的和。因此,斐波那契数列的前几个数字是:0, 1, 1, 2, 3, 5, 8…...

JavaScript读写T5557卡源码

本示例使用发卡器&#xff1a; https://item.taobao.com/item.htm?spma1z10.5-c-s.w4002-21818769070.13.48ce6f89XlQ9Vf&id675212889085 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-t…...

【数据结构】LRU缓存的简单模拟实现(leetcode力扣146LRU缓存)

文章目录 一、定义二、LRU模拟实现二、代码实现 一、定义 LRU是Least Recently Used的缩写&#xff0c;意思是最近最少使用&#xff0c;它是一种Cache替换算法。 Cache的容量有限&#xff0c;因此当Cache的容量用完后&#xff0c;而又有新的内容需要添加进来时&#xff0c; 就…...

基于电商场景的高并发RocketMQ实战-Commitlog基于内存的高并发写入优化、基于JVM offheap的内存读写分离机制

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 【11来了】文章导读地址&#xff1a;点击查看文章导读&#xff01; &#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f3…...

工具系列:TensorFlow决策森林_(3)使用dtreeviz可视化

文章目录 介绍设置安装 TF-DF 和 dtreeviz导入库 可视化分类树加载、清洗和准备数据分割训练/测试集并训练模型训练一个随机森林分类器显示决策树检查叶节点统计信息决策树如何对实例进行分类特征空间划分 可视化回归树加载、清洗和准备数据分割训练/测试集并训练模型训练一个随…...

【算法学习】斐波那契数列模型-动态规划

前言 我在算法学习过程中&#xff0c;针对斐波那契数列模型的动态规划的例题进行了一个整理&#xff0c;并且根据标准且可靠一点的动态规划解题思路进行求解类似的动归问题&#xff0c;来达到学习和今后复习的必要。 所谓的斐波那契数列模型&#xff0c;即当前状态的值等于前两…...

ES的安装和RestClient的操作

目录 初识elasticsearch 什么是elasticsearch elasticsearch的发展 Lucene的优缺点 elasticsearch的优势 倒排索引 es与mysql的概念对比 文档 索引 概念对比 架构 安装es 安装kibana 安装ik分词器 分词器 安装ik分词器 ik分词器的拓展和停用词典 操作索引库…...

访问者模式(Visitor)

访问者模式(Visitor Pattern)是一种将算法与对象结构分离的行为型设计模式。这种模式主要用于对一个由许多不同类型的对象构成的复杂对象结构(如组合结构)进行操作,而不需要对这些对象的类进行修改。 访问者模式涉及以下几个角色: 访问者(Visitor):为每一个具体元素类…...

ATTCK红队评估一

一、环境搭建 主机 ip地址 win7外网服务器&#xff08;两张网卡&#xff09; 外网&#xff1a;192.168.92.135 内网&#xff1a;192.168.52.143 server2003域成员主机 内网&#xff1a;192.168.52.141 server2008域空主机 内网&#xff1a;192.168.52.138 kali攻击机 …...

W5500-EVB-Pico评估版介绍

文章目录 1 概述2 板载资源2.1 硬件规格2.2 硬件规格2.3 工作条件 3 参考资料3.2 原理图3.3 尺寸图 (单位 : mm)3.4 参考例程 4 硬件协议栈优势 1 概述 W5500-EVB-Pico是基于树莓派RP2040和完全硬连线TCP/IP控制器W5500的微控制器开发板-基本上与树莓派Pico板相同&#xff0c;但…...

单聊和群聊

TCP协议单聊 服务端&#xff1a; import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Vec…...

Swift 检测 iCloud状态

Show me the code: func isICloudContainerAvailable() -> Bool {if let _ FileManager.default.ubiquityIdentityToken {return true} else {return false} }推荐一下刚上线的 App 熊猫小账本&#xff0c;里面有用到这篇博客讲的内容 熊猫小账本 一个简洁的记账 App&…...

使用Windi CSS(基于vue-cli)

1、先创建vue项目 利用脚手架vue-cli创建&#xff0c;根据需求设置vue版本、babel等&#xff0c;无特别要求直接用默认的vue2或vue3就行 vue create 项目名 2、运行vue项目&#xff0c;利用vue-cli安装Windi CSS 官网指导&#xff1a;Vue CLI 集成 | Windi CSS 我的经历&a…...

操作无法完成(错误 0x000006ba),Windows 11 PDF打印机无法使用解决办法

操作无法完成(错误 0x000006ba)&#xff0c;Windows 11 PDF打印机无法使用解决办法 解决方式一 先重启一次电脑&#xff0c;看看是否可以解决问题。 解决方式二 重新启动 Printer Spooler 服务...

Settings中电池选项-Android13

Settings中电池选项-Android13 1、设置中界面2、电池计算2.1 充电时间计算2.1.1 BatteryUsageStats获取2.1.2 BatteryStatsImpl计算 2.2 电池剩余使用时间2.2.1 Estimate获取2.2.2 BatteryStatsImpl计算 3、电池信息来源4、命令模拟* 日志 [电池]Android 9.0 电池未充电与充电字…...

解密 Java ForEach 提前终止问题

目录 前言&#xff1a;场景复现分析与解决方案解决方案详解总结 前言&#xff1a; 你是否曾在使用 Java 8 的 forEach 迭代集合时遇到过提前终止循环的问题&#xff1f;在这篇博客中&#xff0c;我们将深入探讨这一问题&#xff0c;并提供多种解决方案。通过场景复现、分析源码…...

7_js_dom编程入门1

Objective&#xff08;本课目标&#xff09; 掌握获取页面元素的常用方法 掌握事件触发案例 能够区分innerText和innerHTML的区别 综合案例训练 1 DOM 介绍 1.1 什么是DOM 文档对象模型&#xff08;Document Object Model&#xff0c;简称DOM&#xff09;&#xff0c;是 …...

使用 Elasticsearch 检测抄袭 (一)

作者&#xff1a;Priscilla Parodi 抄袭可以是直接的&#xff0c;涉及复制部分或全部内容&#xff0c;也可以是释义的&#xff0c;即通过更改一些单词或短语来重新表述作者的作品。 灵感和释义之间是有区别的。 即使你得出类似的结论&#xff0c;也可以阅读内容&#xff0c;获得…...

STM32 cubeMX 直流电机控制风扇转动

本文使用的是 HAL 库。 文章目录 前言一、直流电机介绍二、直流电机原理图三、直流电机控制方法四、STM32CubeMX 配置直流电机五、代码编写总结 前言 实验开发板&#xff1a;STM32F051K8。所需软件&#xff1a;keil5 &#xff0c; cubeMX 。实验目的&#xff1a;了解 直流电机…...

我在 VSCode 插件里接入了 ChatGPT,解决了Bug无法定位的难题

作为一名软件开发者&#xff0c;我时常面临着代码中Bug的定位和解决问题。这个过程往往既费时又充满挑战。然而&#xff0c;最近我在我的VSCode插件中接入了ChatGPT&#xff0c;这个决定彻底改变了我处理Bug的方式。 Bug&#xff1a;开发者的噩梦 在开发过程中&#xff0c;遇…...

学Java的第四天

一、switch语句 switch (表达式) { case 1: 语句体1; break; case 2: 语句体2; break; ... default: 语句体n1; break; } 首先计算表达式的值&#xff0c;然后和case 比较&#xff0c;有对应的值就执行对应的语句&#xff0c;遇到 break 就结束。 最后如果所有的cas…...

[内功修炼]函数栈帧的创建与销毁

文章目录 1:什么是函数栈帧2:理解函数栈帧能解决什么问题呢3:函数栈帧的创建与销毁的解析3.1:什么是栈3.2:认识相关寄存器与汇编指令相关寄存器相关汇编指令 3.3 解析函数栈帧的创建和销毁3.3.1 预备知识3.3.2 详细解析一:调用main函数,为main函数开辟函数栈帧First:push前push…...

【深度学习-目标检测】03 - Faster R-CNN 论文学习与总结

论文地址&#xff1a;Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks 论文学习 1. 摘要与引言 研究背景与挑战&#xff1a;当前最先进的目标检测网络依赖于 区域提议&#xff08;Region Proposals&#xff09;来假设目标的位置&#xff0c…...

oracle11体系结构二-存储结构

数据区&#xff1a; 数据区&#xff08;数据扩展区&#xff09;由一组连续的oracle数据块所构成的存储结构&#xff0c;一个或多个数据块组成一个数据区&#xff0c;一个或多个数据区组成一个段。当段中所有空间被使用完后&#xff0c;oracle系统将自动为该段分配一个新的数据…...

如何通过内网穿透实现远程访问本地Linux SVN服务

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…...

网页乱码问题(edge浏览器)

网页乱码问题&#xff08;edge&#xff09; 文章目录 网页乱码问题&#xff08;edge&#xff09;前言一、网页乱码问题1.是什么&#xff1a;&#xff08;描述&#xff09;2.解决方法&#xff1a;&#xff08;针对edge浏览器&#xff09;&#xff08;1&#xff09;下载charset插…...