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

读软件开发安全之道:概念、设计与实施02经典原则

1. CIA原则

1.1. 软件安全都构建在信息安全的三大基本原则之上,即机密性(confidentiality)、完整性(integrity)和可用性(availability)

1.2. 双方交换的数据

  • 1.2.1. 从技术上看,端点之间的数据交换本身就会削弱交互的机密性

  • 1.2.2. 隐藏通信数据量的一种方法是让端点始终交换恒定数量的数据

  • 1.2.3. 在实际流量较低的时候,则让端点发送虚拟数据包(dummy packet)来维持恒定的数据量

1.3. 授权是CIA各项原则中都固有的元素,它规定数据只能由合法的人员进行访问、修改,数据可用性也只能交由合法人员进行管理

1.4. 机密性和完整性定义为防止未经授权地泄露或篡改信息的行为原则

1.5. 可用性则会受到授权管理员的控制

1.6. 它们只有作为一个整体时才能有效地保护数据资产

2. 机密性

2.1. 不会泄露信息

2.2. 只允许已授权的数据访问

2.3. 维护机密性意味着按照一种仅授权者可读的方式来保护隐私信息

2.4. 必须认真判断哪些信息属于隐私信息

  • 2.4.1. 最安全的做法是把所有从外部收集到的信息都默认为隐私信息,直到有明确的策略来进行界定,并且解释清楚为什么可以对这样的设计方法进行适度的松绑

  • 2.4.2. 一位终端用户可能会理所当然地希望他们的数据是隐私数据(即使这些信息被泄露也无伤大雅)​,除非他们明确告知某些数据并非隐私

  • 2.4.3. 人们可能会把敏感数据输入不同用途的文本字段中

  • 2.4.4. 信息的收集、处理和保存有可能需要满足各类法律法规的要求,而很多人往往对这些法律法规一无所知

  • 2.4.5. 我们不仅应该明确说出访问规则,还应该解释这些规则背后的主观判断。

2.5. 机密性泄露也有一个频谱

  • 2.5.1. 完全的信息泄露是指攻击者获取到了完整的数据集,其中包括元数据

  • 2.5.2. 这个频谱的另一端则是程度相当轻微的信息泄露,比如内部错误消息或者其他不会造成什么后果的信息被泄露了出去

  • 2.5.3. 所有泄露受保护数据详情的行为,在某种程度上都属于机密性遭到破坏的情形

2.6. 去匿名化(denonymization)或者重标识(reidentification)

3. 完整性

3.1. 准确维护数据

3.2. 不允许未经授权的数据修改或者删除

3.3. 完整性就是指数据的真实性和准确性,其宗旨是防止数据被随意删改

3.4. 除了通过技术手段防止数据遭到未经授权的篡改,一份准确的数据来源记录(包括最初数据源,以及之后授权的数据源变更)也是相当重要、强大的完整性保障

3.5. 保存重要数据的版本并且记录它们的来源,这本身就是防止篡改攻击的典型手段

3.6. 执行增量备份是一种理想的攻击预防手段,因为增量数据保存简单,同时又以一系列快照的形式翔实地记录了哪些数据执行过变更,以及它们在何时执行过变更

3.7. 篡改包括很多不同的方式,并不一定是修改存储设备当中的数据

  • 3.7.1. 篡改可能发生在客户端一侧

  • 3.7.2. 可能发生在客户端和服务器之间

  • 3.7.3. 手段包括欺骗其中某一方修改数据,也包括在页面上修改脚本

3.8. 虽然永久丢失的数据也属于不可用的数据,但是这类数据一般会被认为属于完整性受到彻底破坏的情况

4. 可用性

4.1. 保障数据的可用性

4.2. 不允许出现严重延迟或者未经授权的数据访问关闭

4.3. 针对可用性的攻击是网络世界无法回避的现实问题,也是最难防御的攻击方式之一

4.4. 攻击者向服务器发送过量的数据,通过看似合法的手段占用海量服务资源,导致服务资源耗竭

4.5. 匿名的拒绝服务(Denial of Service,DoS)攻击(一般都是为了索取赎金)几乎可以威胁到一切互联网服务,所以防御这类攻击是非常艰巨的挑战

  • 4.5.1. 需要利用有能力承受大量负载的基础设施来承载大规模的服务,同时维护系统的灵活性,确保在事件发生时基础设施能够迅速实现迁移

4.6. 攻击者创建的恶意请求可以触发错误,导致崩溃或者无限循环,最终破坏服务器的服务

4.7. 其他的攻击方式可以导致应用的存储、计算或者通信出现超载,或者使用破坏缓存有效性的模式,这些都可以导致相当严重的问题

5. 黄金标准

5.1. gold standard

5.2. 如果CIA是安全系统的目标,那么黄金标准描述的就是达到这个目标的方式

5.3. Aurum是黄金的意思,因此黄金的化学符号就是Au

5.4. 主体是指一切通过了可靠认证的实体,包括一个人、一家企业或单位、一个政府实体,以及一个应用、服务、设备或者其他有权执行操作的对象

5.5. 认证(authentication)

  • 5.5.1. 用高度可靠的方式来判断主体的身份

  • 5.5.2. 认证的过程,是指通过可靠的方式来建立主体证书可靠性的过程

5.6. 授权(authorization)

  • 5.6.1. 仅允许通过认证的主体执行操作

  • 5.6.2. 认证后的主体在执行数据访问时,也会受到授权结果的限制

    • 5.6.2.1. 授权会根据预先设定的规则允许或拒绝用户的行为
  • 5.6.3. 真正兑现授权决策的唯一方法,是确保使用系统的主体都是正常通过认证的主体

5.7. 审计(auditing)

  • 5.7.1. 为主体所执行的操作维护一份可靠的记录,以便进行监控

  • 5.7.2. 如果一项服务保留了一个安全日志,而这个日志可以准确地记录主体执行的操作(包括那些因为授权失败而没有成功执行的操作)​,那么接下来管理员可以执行审计来对系统的操作进行监控,确保所有操作都是合理的

  • 5.7.3. 如果希望实现强大的安全性,准确的审计日志至关重要,因为它们提供了对真实事件的可靠记录

  • 5.7.4. 详细的日志可以为我们提供一份历史记录,揭示发生异常情况或者可疑事件时的准确情况

  • 5.7.5. 审计则负责提供可靠的日志,记录谁、何时执行了什么操作,再由技术人员定期审查违规行为,并保留追究违规者责任的权利

5.8. 黄金标准充当的是一种实现机制,旨在对CIA提供保护

5.9. 安全设计方案应该明确地把认证和授权这两者分开,因为把认证和授权结合在一起往往会导致混乱

  • 5.9.1. 如果能够把两者明确地分开,审计追踪工作也会变得更加清晰

6. 认证

6.1. 认证的目的是,根据能够证明主体真实身份的证书,测试该主体的真实身份与其所声称的身份是否一致

6.2. 认证服务也可能会使用一种更强形式的证书,譬如数字签名或者挑战码

6.3. 数字签名是一种更加理想的认证形式,因为数字签名可以让主体在不泄露密码的情况下证明自己掌握密钥

6.4. 证书提供的认证信息

  • 6.4.1. 所知之事(something you know):如密码

  • 6.4.2. 所有之物(something you have):如安全令牌

  • 6.4.3. 自身属性(something you are):即生物特征(如指纹、虹膜等)

  • 6.4.4. 所处之地(somewhere you are):经过验证的所在地,如与安全场所中私有网络建立的连接

6.5. 你的所知之事可能泄露,你的所有之物可能失窃,你的所处之地有很多方法可以加以操纵,就连你的自身属性都有可能被伪造(甚至如果遭到盗用,我们连修改都很困难)​

6.6. 用户使用两项认证要素总比使用一项认证要素要好

6.7. 只要条件允许,我们就应该依靠现成、可靠的认证服务,而不应该动辄“自力更生”​

6.8. 认证的过程应该包括对证书进行校验,并给出认证通过或者认证失败的响应消息

  • 6.8.1. 不要采用认证“部分成功”的做法,这样等于在暗示黑客可通过不断试错来破解密码

  • 6.8.2. 如果希望降低暴力破解密码的风险,常见的做法是让认证密码从根本上很难通过计算破解,或者在认证流程中引入一些延迟

  • 6.8.3. 一般来说,认证模块会给主体颁发一个令牌,主体在认证中使用令牌即可,这样就可以避免后续被要求执行完整的认证过程

6.9. 安全绑定认证实体后可以用两种基本方式进行入侵

  • 6.9.1. 攻击者可以盗用受害者的身份

  • 6.9.2. 接受认证的主体也有可能与其他人相勾结,把自己的身份信息泄露给别人,甚至把自己的身份强加给别人

    • 6.9.2.1. 几个人分享同一个付费订阅的节目就属于这种入侵方式

7. 授权

7.1. 各类系统会通过业务逻辑、访问控制列表或者其他正式的访问策略来实现授权功能

7.2. 匿名授权(即不进行认证的授权)适用的场合可以说寥寥无几

  • 7.2.1. 根据时间设置访问限制(比如,仅允许员工在工作时间访问数据库)也是匿名授权的一个示例

7.3. 应该通过一项单一的要素来实施授权,不要让授权代码散布在整个代码库中,否则这会是运维和审计人员的一场噩梦

  • 7.3.1. 应该依靠某一项公共框架来唯一地提供访问授权

7.4. 授权机制远比传统操作系统提供的简单读/写访问控制要细致得多

  • 7.4.1. 人们可以设计更加强大的授权机制,以便在不损失重要功能的前提下对访问进行限制,提升安全性

  • 7.4.2. 基于属性的访问控制(Attribute-based Access Control,ABAC)

  • 7.4.3. 基于策略的访问控制(Policy-based Access Control,PBAC)

  • 7.4.4. 基于角色的访问控制(Role-based Access Control,RBAC)可以在认证和授权之间建立起一座桥梁

    • 7.4.4.1. RBAC会根据分配给认证主体的角色(role)来提供访问授权,这样就可以通过统一的框架简化访问控制

    • 7.4.4.2. RBAC并不会为每个人单独定义访问权限,而会根据每个人的职责指定一个或者多个角色,从而为人们自动分配相关联的唯一权限

    • 7.4.4.3. 在更高级的RBAC模型中,一个人可以拥有多个角色,人们可以为不同的访问主动选择使用不同的角色

7.5. 对于某些数据来说,只读访问的访问级别依然过高,密码就属于这类数据

  • 7.5.1. 认证服务无法从证书数据库中读取明文密码,但是它可以读取摘要值,它会用这个值来与前端服务器提供的值进行比较

  • 7.5.2. 认证服务就可以对证书进行校验了,但认证服务永远无法访问任何密码

  • 7.5.3. 除非界面设计能够提供这类安全方案,否则它们会失去这样一个减少数据泄露可能性的机会

8. 审计

8.1. 为了让组织机构能够对系统的行为进行审计,系统必须基于所有对运维安全至关重要的信息生成一份可靠的日志

  • 8.1.1. 日志中包括认证和授权事件、系统启动与关闭、软件更新、管理访问等

8.2. 审计日志也同样必须能够抗篡改

  • 8.2.1. 最好是连管理员也无法插手修改这些日志,这样可以将其视为绝对可靠的记录信息

8.3. 网络中总是会发生这样或那样的事件,认证和授权策略的漏洞也总是难免的

  • 8.3.1. 审计可以自始至终为人们提供必要的信息

8.4. 在工作中,当授权主体做出与人们信任相悖的行为时,审计信息可以帮助人们规避由此带来的风险

8.5. 如果处理得当,审计日志可以为日常检测、系统性能级别评测、错误和可疑行为检测带来巨大帮助,也可以在事件发生后用于判断攻击实际发生的时间和评估攻击带来的损失

  • 8.5.1. 审计日志只有在人们监控日志内容时才能发挥作用,因此务必认真地分析那些异常事件,然后不断跟进,并且在必要情况下采取合理的行动

8.6. 系统也必须有能力阻止人们通过篡改日志来掩饰那些恶意的操作

  • 8.6.1. 如果攻击者有能力修改日志,他们当然会把自己的操作痕迹清除得干干净净

  • 8.6.2. 对于那些特别敏感的高风险日志,应该由不同管理和操作团队负责的独立系统来管理其审计日志,以防内部肇事者掩盖自己的操作痕迹

  • 8.6.3. 一排高度有限的栅栏和一处位置显眼的视频监控摄像头就可以有效地防御入侵

8.7. 不可抵赖性(non-repudiability)是审计日志的一项重要的属性

  • 8.7.1. 任何尝试规避独立系统的行为都会显得相当可疑,每一项错误的操作都会给攻击者造成严重的影响

  • 8.7.2. 一旦被发现,他们也很难对自己的罪行进行抵赖

8.8. 应该遵循Goldilocks原则,即日志记录的数量和规模应当适宜

  • 8.8.1. 找到一个合理的平衡点会是一项长期且艰巨的任务

9. 隐私

9.1. 安全和隐私的边界很难清晰地界定,它们既紧密相关又大不相同

9.2. 为了尊重人们的数字信息隐私,我们必须考虑其他人为因素

  • 9.2.1. 客户希望人们采用的信息收集与使用方式

  • 9.2.2. 明确界定如何合理使用和披露信息的策略

  • 9.2.3. 与收集和使用各类信息相关的法律法规

  • 9.2.4. 处理个人信息有关的政治、文化和心理等因素

9.3. 保护隐私殊非易事,明智的做法是让使用数据的行为尽可能透明

9.4. 收集信息必须拥有明确的目标,保留信息必须保证信息确有价值

  • 9.4.1. 不要因为信息“将来有可能用到”就随随便便收集,这样做的风险很高,绝不是什么好做法

  • 9.4.2. 如果未来合法使用某些数据的必要性不高,最合理的做法就是安全地删除这些数据

  • 9.4.3. 只要数据泄露的风险超过了保留这些数据的益处,我们就应该删除这些数据

  • 9.4.4. 最好的策略往往就是删除这样的邮件,而不是想着“说不定哪天用得到”​,于是就一直保留着所有的数据

9.5. 人是操作几乎所有数字系统的主体,虽然操作的方式不一而足

  • 9.5.1. 把保护隐私融入软件的设计之中

9.6. 人们必须明确表达出自己对隐私问题的关注

  • 9.6.1. 隐私策略和安全性不同,隐私策略能够在一定程度上权衡信息服务会在多大程度上利用客户的数据

9.7. 当用户的期望和实际的隐私策略相脱节时,或者当用户违反了明确的安全策略时,隐私问题就会暴露出来

  • 9.7.1. 用户违反安全策略则是因为安全策略仍然不够清晰,或者负责人对其熟视无睹,又或者这些安全策略在一场安全事故中遭到了破坏

相关文章:

读软件开发安全之道:概念、设计与实施02经典原则

1. CIA原则 1.1. 软件安全都构建在信息安全的三大基本原则之上,即机密性(confidentiality)、完整性(integrity)和可用性(availability) 1.2. 双方交换的数据 1.2.1. 从技术上看,端点之间的数据交换本身就会削弱交互的机密性 1.2.2. 隐藏通信数据量的一…...

MySQL中处理JSON数据:大数据分析的新方向,详解与示例

文章目录 1. MySQL中的JSON数据类型2. JSON函数和运算符3. 创建JSON列的表4. 插入JSON数据5. 查询JSON数据6. 复杂查询和聚合7. JSON 数据的索引8. 总结 在当今的大数据时代,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式&a…...

【图形学】TA之路-矩阵

在 Unity 中,矩阵广泛用于处理各种图形变换,例如平移、旋转、缩放等。矩阵的使用不仅限于三维空间,还可以应用于二维空间的操作。了解矩阵及其运算对于游戏开发和计算机图形学非常重要。Unity 中使用的是行向量不是列向量,这个要注…...

LAMM: Label Alignment for Multi-Modal Prompt Learning

系列论文研读目录 文章目录 系列论文研读目录文章题目含义AbstractIntroductionRelated WorkVision Language ModelsPrompt Learning MethodologyPreliminaries of CLIPLabel AlignmentHierarchical Loss 分层损失Parameter Space 参数空间Feature Space 特征空间Logits Space …...

mac编译opencv 通用架构库的记录

1,通用架构 (x86_64;arm64)要设置的配置项: CPU_BASELINE CPU_DISPATCH 上面这两个我设置成SSE_3,其他选项未尝试,比如不设置。 CMAKE_OSX_ARCHITECTURES:x86_64;arm64 WITH_IPP:不勾选 2,contrib库的添加: 第一次…...

Python 向IP地址发送字符串

Python 向IP地址发送字符串 在网络编程中,使得不同设备间能够进行数据传输是一项基本任务。Python提供了强大的库,帮助开发者轻松地实现这种通信。本文将介绍如何使用Python通过UDP协议向特定的IP地址发送字符串信息。 UDP协议简介 UDP(用…...

上升响应式Web设计:纯HTML和CSS的实现技巧-1

响应式Web设计(Responsive Web Design, RWD)是一种旨在确保网站在不同设备和屏幕尺寸下都能良好运行的网页设计策略。通过纯HTML和CSS实现响应式设计,主要依赖于媒体查询(Media Queries)、灵活的布局、可伸缩的图片和字…...

利用java结合python实现gis在线绘图,主要技术java+python+matlab+idw+Kriging

主要技术javapythonmatlabidwKriging** GIS中的等值面和等高线绘图主要用于表达连续空间数据的分布情况,特别适用于需要展示三维空间中某个变量随位置变化的应用场景。 具体来说,以下是一些适合使用GIS等值面和等高线绘图的场景: 地形与地貌…...

Android全面解析之context机制(三): 从源码角度分析context创建流程(下)

前言 前面已经讲了什么是context以及从源码角度分析context创建流程(上)。限于篇幅把四大组件中的广播和内容提供器的context获取流程放在了这篇文章。广播和内容提供器并不是context家族里的一员,所以他们本身并不是context,因而…...

执行docker compose命令出现 Additional property include is not allowed

问题背景 在由docker-compose.yml的文件目录下执行命令 docker compose up -d 出现错误 Additional ininoperty include is not allowed 原因 我的docker-compose.yml 文件中出现了include标签旧版本的docker-compose 不支持此标签 解决办法 下载支持的docker-compose 解决…...

STM32通过I2C硬件读写MPU6050

目录 STM32通过I2C硬件读写MPU6050 1. STM32的I2C外设简介 2. STM32的I2C基本框图 3. STIM32硬件I2C主机发送流程 10位地址与7位地址的区别 7位主机发送的时序流程 7位主机接收的时序流程 4. STM32硬件与软件的波形对比 5. STM32配置硬件I2C外设流程 6. STM32的I2C.h…...

ubuntu2204-中文输入法-pycharm-python-django开发环境搭建

文章目录 1.系统常用设置1.1.安装中文输入法1.2.配置输入法1.3.卸载输入法1.4.配置镜像源2.java安装3.pycharm安装与启动4.卸载ubuntu2204默认版本5.安装Anaconda5.1.安装软件依赖包5.2.安装命令5.3.激活安装5.4.常用命令5.5.修改默认启动源6.安装mysql6.1.离线安装mysql6.2.在…...

【学习笔记】Matlab和python双语言的学习(一元线性回归)

文章目录 前言一、一元线性回归回归分析的一般步骤一元线性回归的基本形式回归方程参数的最小二乘法估计对回归方程的各种检验估计标准误差的计算回归直线的拟合优度判定系数显著性检验 二、示例三、代码实现----Matlab四、代码实现----python回归系数的置信区间公式残差的置信…...

LeetCode //C - 316. Remove Duplicate Letters

316. Remove Duplicate Letters Given a string s, remove duplicate letters so that every letter appears once and only once. You must make sure your result is the smallest in lexicographical order among all possible results. Example 1: Input: s “bcabc”…...

【ARM+Codesys 客户案例 】RK3568/A40i/STM32+CODESYS在工厂自动化中的应用:PCB板焊接机

现代化生产中,电子元件通常会使用自动化设备来进行生产,例如像PCB(印刷电路板)的组装。但是生产过程中也会面临一些问题,类似于如何解决在PCB板上牢固、精准地安装各种组件呢?IBL Lttechnik GmbH公司的CM80…...

【二分查找】--- 初阶题目赏析

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 算法Joureny 上篇我们讲解了关于二分的朴素模板和边界模板,本篇博客我们试着运用这些模板。 🏠 搜索插入位置 📌 题目…...

【PostgreSQL003】PostgreSQL数据表空间膨胀,磁盘爆满,应用宕机(经验总结,已更新)

1.一直以来想写下基于PostgreSQL的系列文章,作为较火的数据ETL工具,也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下PostgreSQL数据库相关知识体系。空间膨胀(主键、外键、…...

C语言第20天笔记

文件操作 概述 什么是 文件 文件时保存在外存储器上(一般代指磁盘,也可以是U盘、移动硬盘等)的数据的集合。 文件操作体现在哪几个方面 1. 文件内容的读取 2. 文件内容的写入 数据的读取和写入可被视为针对文件进行输入和输出的操作&a…...

为什么穷大方

为什么有些人明明很穷,却非常的大方呢? 因为他们认知太低,根本不懂钱的重要性,总是想着及时享乐,所以一年到头也存不了什么钱。等到家人孩子需要用钱的时候,什么也拿不出来,还到处去求人。 而真…...

HiveSQL实战——大数据开发面试高频SQL题

查询每个区域的男女用户数 0 问题描述 每个区域内男生、女生分别有多少个 1 数据准备 use wxthive; create table t1_stu_table (id int,name string,class string,sex string ); insert overwrite table t1_stu_table values(4,张文华,二区,男),(3,李思雨,一区,女),(1…...

RabbitMQ集群 - 普通集群搭建、宕机情况

文章目录 RabbitMQ 普通集群概述集群搭建数据准备启动容器宕机情况 RabbitMQ 普通集群 概述 1)普通模式中所有节点没有主从之分,所有节点的元数据(交换机、队列、绑定等)都是一致的. 例如只要有任意一个节点上面 新增交换机&…...

xssDOM型练习

文章目录 例1要求 例2代码解析方法 例3例4例5例6例7例8 例1 本题通过get接收并传递参数,所有参数不经过过滤直接放入h2标签里面。 要求 1.需要页面弹出1337 2.不能与用户交互 官方认为innerHTML中script标签不安全,所以将其禁用,但只禁用了…...

python中的gradio使用麦克风时报错

python中的gradio使用麦克风时报错 当运行至 import gradio as gr with gr.Blocks() as demo:with gr.Tab("microphone transcriber"):gr.Audio(source"microphone", type"numpy", streamingTrue)demo.queue()##访问链接 https://ip:1235/demo…...

Oracle(63)什么是临时表(Temporary Table)?

临时表(Temporary Table)是一种特殊类型的表,用于存储临时数据,这些数据在会话期间或事务期间是短暂的。临时表在不同的数据库系统中都有实现,但功能和特性可能有所不同。临时表通常用于存储中间计算结果、临时数据处理…...

《Techporters架构搭建》-Day06 国际化

什么是国际化? 国际化,也叫i18n,为什么叫i18n呢? "i18n"是国际化(internationalization)的缩写,数字18代表了国际化这个单词中间的字母数量。类似这样的缩写还有k8s(kube…...

Linux ACL 访问控制

今天给伙伴们分享一下Linux ACL 访问控制,希望看了有所收获。 我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步…...

hg transformers pipeline使用

什么是hg transformers pipeline? 在Hugging Face的transformers库中,pipeline是一个高级API,它提供了一种简便的方式来使用预训练模型进行各种NLP任务,比如情感分析、文本生成、翻译、问答等。通过pipeline,你可以在几行代码内…...

高性能内存对象缓存

Memcached概述 一套开源的高性能分布式内存对象缓存系统 所有的数据都存储在内存中 支持任意存储类型的数据 提高网站的访问速度 数据存储方式与数据过期方式 数据存储方式:Slab Allocation 按组分配内存,每次先分配一个Slab,相当于一个大小为1M的页&…...

文件上传-CMS文件上传分析

黑盒思路: 上传点抓包测试 个人用户中心是否存在文件上传功能后台管理系统是否存在文件上传功能字典目录扫描探针文件(eg:upload.php)构造地址字典目录扫描探针编辑器目录构造地址(编辑器目录一般是默认的&#xff09…...

云原生日志Loki

1. Loki简介 1.1 Loki介绍 Loki是 Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统。它的设计非常经济高效且易于操作,因为它不会为日志内容编制索引,而是为每个日志流编制一组标签…...

初阶数据结构之直接选择排序和快速排序

直接选择排序 1.在元素集合 array[i]–array[n-1] 中选择关键码最⼤(⼩)的数据元素 2.若它不是这组元素中的最后⼀个(第⼀个)元素,则将它与这组元素中的最后⼀个(第⼀个)元素 交换 3.在剩余的 array[i]–array[n-2](array[i1]–…...

Java语言程序设计——篇十三(4)

🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳&…...

低代码: 组件库测试之渲染和元素获取,触发事件,更新表单,验证事件以及异步请求

组件库测试步骤 渲染组件(怎样将一个组件渲染到测试用例里面) mount 和 shallowMount传递属性元素是否成功的显示 查找元素的不同写法get, getAllfind, findAllfindComponent 和 getComponent触发事件(是click也好,是input也好,让它触发对应的事件) trigger 方法观察测试界面…...

银河麒麟服务器操作系统Kylin-Server-V10-SP3-2403-Release-20240426-x86_64安装步骤

银河麒麟服务器操作系统 Kylin-Server-V10-SP3-2403-Release-20240426-x86_64安装步骤 一、准备工作1. 下载ISO镜像2. 制作安装介质3. 设置BIOS 二、安装过程1. 启动系统2. 选择安装语言3. 选择安装配置4. 配置root密码与创建用户5. 开始安装6. 重启系统7. 同意许可协议 三、系…...

2024年电赛H题全开源

当题目出来的的那一刻,看到了M0芯片,我们实验室只有一块板子,并且我没有接触过M0,电赛只准备了TI的MSP430f5529。但是我并没有放弃,决然的选择了H题。基本上将四问全做出来,可是测试由于使用了感为科技的寻…...

Docker:宿主机可以ping通外网,docker容器内无法ping通外网之解决方法

问题描述 1、宿主机可以ping外网,docker容器内无法ping外网 ping www.baidu.com 提示:unknown host baidu.com 2、宿主机可以wget下载,docker容器内无法wget下载 wget www.baidu.com 提示:unknown host baidu.com 解决方法 1、…...

bootchart抓Android系统启动各阶段性能数据

最近在做Android系统启动优化,首要任务是找到启动过程中各阶段耗时点,进而有针对性地进行优化。主要用bootchart抓开机数据,本文主要记录下工具的使用方法。 1.抓开机数据 adb root adb shell ‘touch /data/bootchart/enabled’ adb rebo…...

使用 Node.js 和 Express 框架通过网页访问GPIO和嵌入式 Linux 系统中使用 GSM/3G/4G 模块

点击上方"蓝字"关注我们 01、前言 想要快速开发嵌入式 Linux 网络应用,控制硬件 GPIO,从而使得用户能够远程控制和监控系统。 主要目的是向读者展示开发使用文件系统控制 GPIO 的 Node 代码、创建用户有好的界面、以及运行基于 Express 框架使用 AJAX 通客户端进…...

IT 行业的就业情况

当前,IT 行业的就业情况呈现出以下特点: 1. 需求持续增长:随着数字化转型的加速,各个行业对信息技术的依赖程度不断提高,推动了对 IT 人才的持续需求。特别是在云计算、大数据、人工智能、物联网等新兴领域&#xff…...

如何快速获取麒麟操作系统版本信息

如何快速获取麒麟操作系统版本信息 一、桌面版系统1. 使用 /etc/kylin-build 文件2. 使用 /etc/.kyinfo 文件 二、服务器版系统1. 使用 /etc/.productinfo 文件2. 使用 nkvers 命令3. 使用 /etc/kylin-release 文件 三、总结 💖The Begin💖点点关注&…...

git提交规范检查husky

一、Eslint 尤雨溪推荐的 prettierrc 配置,句尾不带分号 单引号。 尤雨溪推荐配置:vue-next/.prettierrc lint lint 是最著名的 C 语言工具之一,是由贝尔实验室 SteveJohnson 于 1979 在 PCC(PortableC Compiler) 基础上开发的静态代码分…...

LeetCode 919. 完全二叉树插入器

完全二叉树是每一层(除最后一层外)都是完全填充(即,节点数达到最大)的,并且所有的节点都尽可能地集中在左侧。 设计一个用完全二叉树初始化的数据结构 CBTInserter,它支持以下几种操作&#xf…...

C++密码管理器

先问一句 最近有几个关注我的原力等级为0或-1,文章全是转载,转载时间基本都在2021年,而且关注了很多人,这些是僵尸粉吗? 文末有投票,麻烦参与一下谢谢 实现功能列表 暂时还没做加密功能 打算用openssl/a…...

算法【Java】 —— 滑动窗口

滑动窗口 在上一篇文章中,我们了解到了双指针算法,在双指针算法中我们知道了前后指针法,这篇文章就要提到前后指针法的一个经典的使用 —— 滑动窗口,在前后指针法中,我们知道一个指针在前,一个指针在后&a…...

Spring Aware接口执行时机

一. 介绍 Spring Aware 接口的执行时机有两处,都在 getBean() 中的 initializeBean() 中; 下面我们分析这两处时机; // ----------------------- AbstractAutowireCapableBeanFactory --------------------- protected Object initializeB…...

android FD_SET_chk问题定位

android FD_SET_chk问题定位 一、FD报错二、问题定位2.1 APM定位2.2 adb定位2.3. 代码获取FD数 三、FD优化 一、FD报错 App在运行中记录报错如下,FD_SET,这个问题大概是文件描述符(File Descriptor,简称FD)超过了最大…...

Chapter 39 Python多线程编程

欢迎大家订阅【Python从入门到精通】专栏,一起探索Python的无限可能! 文章目录 前言一、并行执行二、threading模块 前言 现代操作系统如 macOS、UNIX、Linux 和 Windows 等,均支持多任务处理。本篇文章详细讲解了并行执行的概念以及如何在 …...

STM32(二):GPIO

GPIO(General Purpose Input Output)通用输入输出口 1.可配置为8种输入输出模式,引脚电平:0V~3.3V,部分引脚可容忍5V,输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等,输入模式下…...

一文入门mysql 数据库

一、对数据库的操作 1.展示所有的数据库 show databases; 2.创建数据库 create database 数据库名 charset utf8; 3.删除数据库 drop database 数据库名; 4.查看当前使用的数据库 select database(); 5.使用数据库 use 数据库名; 二、对数据表的操作 1.展示所有表…...

通义千问( 四 ) Function Call 函数调用

4.2.function call 函数调用 大模型在面对实时性问题、私域知识型问题或数学计算等问题时可能效果不佳。 您可以使用function call功能,通过调用外部工具来提升模型的输出效果。您可以在调用大模型时,通过tools参数传入工具的名称、描述、入参等信息。…...