技术周总结 2024.07.29 ~ 08.04周日(MyBatis, 极限编程)
文章目录
- 一、08.01 周四
- 1.1)mybatis的 xml文件中的 ${var} 和 #{var}的区别?
- 二、08.03 周六
- 2.1)极限编程
- 核心价值观
- 核心实践
- 实施极限编程的好处
- 极限编程的挑战
- 适用场景
- 三、08.04 周日
- 3.1)《计算机信息系统安全保护等级划分准则》把计算机信息安全划分为的5个等级要怎么理解?请举例说明
- 1. 用户自主保护级 (第一级)
- 2. 系统审计保护级 (第二级)
- 3. 安全标记保护级 (第三级)
- 4. 结构化保护级 (第四级)
- 5. 访问验证保护级 (第五级)
- 3.2)基于任务的访问控制(TBAC)模型的组成部分
- 1. 工作流 (Workflow)
- 2. 授权结构体 (Authorization Structure)
- 3. 受托人集 (Trustee Set)
- 4. 许可集 (Permission Set)
- 综合理解
- 示例说明
- 3.3) git clone时报错: Permission denied (keyboard-interactive,publickey).fatal: Could not read from remote repository.
- 1. 检查 SSH 密钥
- 2. 使用 HTTPS 协议
- 3. 配置 SSH Agent
- 4. 配置 Git
- 5. 检查远程仓库 URL
- 6. 使用正确的 Git 凭证助手
- 7. 检查防火墙和网络配置
- 8. 重新生成 SSH 密钥
- 9. 检查用户名和仓库名称
- 10. 联系服务提供商
一、08.01 周四
1.1)mybatis的 xml文件中的 ${var} 和 #{var}的区别?
在MyBatis的XML文件中,${}和#{}都用于传递参数给SQL语句,但有一些区别:
${}是直接替换变量的值,相当于拼接字符串,存在SQL注入的风险。在使用${}时,变量值会直接替换SQL语句中的对应位置,不会进行预编译处理,因此不安全。#{}是使用预编译处理,会将传入的参数按照参数类型进行处理,可以防止SQL注入。在使用#{}时,MyBatis会将传入的参数进行预编译处理,将参数值放入占位符中,再执行SQL语句,可以提高性能和安全性。
因此,推荐在MyBatis的XML文件中使用#{}来传递参数,以提高安全性和性能。
二、08.03 周六
2.1)极限编程
极限编程(Extreme Programming,XP)是一种敏捷软件开发方法,旨在提高软件质量并响应不断变化的客户需求。由Kent Beck在1996年提出,极限编程通过强调团队协作、持续反馈、客户参与和快速交付来实现这些目标。
核心价值观
极限编程基于五个核心价值观:
- 沟通:鼓励团队成员之间的频繁和开放的沟通,以确保每个人都在同一页面上。
- 简单:专注于简单的解决方案,避免过度设计和复杂性。
- 反馈:通过客户反馈、测试和持续集成获得快速反馈,以便及时调整和改进。
- 勇气:鼓励团队成员敢于面对和解决问题,敢于重构代码,敢于放弃不合适的方案。
- 尊重:团队成员之间相互尊重,理解并支持彼此的工作和决策。
核心实践
极限编程包含了一系列核心实践,这些实践相互支持和强化,以确保开发过程高效且高质量。以下是极限编程的主要实践:
- 持续集成:频繁地将代码集成到主干中,并进行自动化测试,以确保每次集成都不会破坏现有功能。
- 测试驱动开发(TDD):在编写功能代码之前先编写测试代码,确保每个功能都有对应的测试覆盖。
- 结对编程:两名程序员共同工作在一个工作站上,一人编写代码,另一人进行审查和建议,以提高代码质量和知识共享。
- 简单设计:保持代码设计简单,只实现当前需要的功能,避免未来的扩展性考虑。
- 重构:持续改进代码结构,使其更易于理解和维护。
- 小发布:频繁发布小版本的软件,确保客户可以快速获得新功能和改进。
- 客户在场:客户代表与开发团队一起工作,随时提供需求和反馈,确保产品符合客户期望。
- 40小时工作周:避免加班,保持工作与生活的平衡,确保团队成员的长期生产力和幸福感。
- 编码标准:团队遵循一致的编码标准,使代码更易于理解和维护。
实施极限编程的好处
- 提高软件质量:通过TDD、结对编程和持续集成等实践,极限编程可以显著提高软件的质量。
- 更快的交付:小发布和客户在场等实践确保团队能够快速响应客户需求,并频繁交付功能。
- 减少风险:持续反馈和测试使得问题可以在早期被发现和解决,减少了项目失败的风险。
- 增强团队协作:极限编程强调沟通、结对编程和尊重,促进了团队成员之间的协作和知识共享。
极限编程的挑战
- 需要客户的高参与度:客户需要能够持续参与开发过程,并随时提供反馈和需求,这在某些情况下可能是一个挑战。
- 团队成员的适应性:一些团队成员可能不习惯频繁的沟通和结对编程,需要时间来适应这种工作方式。
- 对实践的严格遵守:极限编程的成功依赖于对其核心实践的严格遵守,任何偏离都可能影响其效果。
适用场景
极限编程适用于那些需求变动频繁、需要快速响应客户需求和高质量交付的软件项目。特别适合小型团队和需要快速迭代开发的项目。
通过实施极限编程,团队可以在不断变化的环境中保持高效和高质量的开发过程,最终交付符合客户需求的高质量软件产品。
三、08.04 周日
3.1)《计算机信息系统安全保护等级划分准则》把计算机信息安全划分为的5个等级要怎么理解?请举例说明
《计算机信息系统安全保护等级划分准则》(GB 17859—1999)是中国国家信息安全标准之一,它将计算机信息系统的安全保护能力划分为五个等级。每个等级都对应着不同级别的保护要求,从低到高依次为:
- 用户自主保护级 (第一级)
- 系统审计保护级 (第二级)
- 安全标记保护级 (第三级)
- 结构化保护级 (第四级)
- 访问验证保护级 (第五级)
下面是对这五个等级的简要解释以及示例:
1. 用户自主保护级 (第一级)
- 定义: 在这个级别,用户对自己的数据和资源具有完全的控制权。系统提供了基本的安全功能,比如用户标识和认证。
- 示例: 家庭电脑安装的操作系统,用户可以设置自己的用户名和密码,但没有更多的安全措施来防止未经授权的访问。
2. 系统审计保护级 (第二级)
- 定义: 在这个级别上,除了基本的用户标识和认证之外,还增加了审计功能,能够记录重要的安全事件。
- 示例: 企业内部使用的服务器系统,管理员可以查看登录失败的日志,以便追踪潜在的安全威胁。
3. 安全标记保护级 (第三级)
- 定义: 这个级别增加了对数据和资源的标记,以确保只有经过授权的用户才能访问特定的数据和资源。
- 示例: 政府部门使用的内部网络,文件可能带有不同的安全级别标签,例如“机密”、“秘密”,只有拥有相应权限的人员才能访问这些文件。
4. 结构化保护级 (第四级)
- 定义: 在这个级别,系统的设计和实施遵循了严格的结构化安全策略模型。系统可以对用户和资源之间的交互进行细粒度的控制。
- 示例: 高安全性的军事或金融系统,其中的访问控制非常严格,确保只有经过认证的实体才能进行特定的操作。
5. 访问验证保护级 (第五级)
- 定义: 这是最高的安全级别,它要求系统实现形式化的安全策略模型和严格的数学证明,确保系统按照安全策略运行。
- 示例: 涉及到国家安全的关键基础设施,如国防系统,其中的数据处理和访问控制经过严密设计和验证,以防止任何形式的未授权访问。
这些等级的划分主要是为了指导不同领域和组织根据其业务需求选择合适的安全保护措施。随着等级的提高,系统的安全性也随之增强,但同时也意味着更高的成本和技术复杂性。因此,在实际应用中,组织通常会根据自身的实际情况和需求选择适当的安全等级。
3.2)基于任务的访问控制(TBAC)模型的组成部分
基于任务的访问控制 (Task-Based Access Control, TBAC) 的另一种描述确实提到了工作流、授权结构体、受托人集、许可集这几个组成部分。这种描述方式是从一个更具体的角度来解释 TBAC 的工作原理。下面是这些组成部分的解释:
1. 工作流 (Workflow)
- 定义:工作流是指一系列按照预定顺序执行的任务集合,它定义了业务过程中的各个步骤以及这些步骤之间的依赖关系。
- 作用:工作流描述了业务流程如何从开始到结束的整个过程,包括任务的执行顺序、条件分支等。
- 示例:在一个审批流程中,工作流可以定义为“提交申请”->“部门经理审批”->“财务审核”->“最终批准”。
2. 授权结构体 (Authorization Structure)
- 定义:授权结构体定义了任务和角色之间的关系,即哪些角色可以执行哪些任务。
- 作用:授权结构体是 TBAC 的核心,它决定了用户根据其角色可以执行哪些任务。
- 示例:在上述审批流程中,“部门经理审批”任务可能仅授权给“部门经理”角色。
3. 受托人集 (Trustee Set)
- 定义:受托人集是指一组被授权执行特定任务的用户或角色。
- 作用:受托人集定义了哪些用户或角色可以执行工作流中的特定任务。
- 示例:对于“财务审核”任务,受托人集可能是财务部门的所有成员。
4. 许可集 (Permission Set)
- 定义:许可集是一组与任务相关的权限,这些权限定义了在执行任务时可以进行的操作。
- 作用:许可集定义了执行特定任务时用户可以访问的资源或执行的操作。
- 示例:对于“最终批准”任务,许可集可能包括“查看所有文档”和“批准/拒绝请求”。
综合理解
综合以上四个组成部分,我们可以这样理解 TBAC:
- 工作流 描述了业务过程的顺序和逻辑,定义了任务的执行顺序。
- 授权结构体 定义了哪些角色可以执行哪些任务。
- 受托人集 指的是实际执行任务的用户或角色集合。
- 许可集 规定了执行特定任务时用户可以执行的操作或访问的资源。
示例说明
假设有一个医院信息系统,其中涉及的工作流、授权结构体、受托人集和许可集如下:
-
工作流:
- 提交处方 -> 医生审批 -> 药房配药 -> 发放药品
-
授权结构体:
- “提交处方”任务授权给“医生”角色。
- “医生审批”任务授权给“医生”角色。
- “药房配药”任务授权给“药剂师”角色。
- “发放药品”任务授权给“药房工作人员”角色。
-
受托人集:
- “医生审批”任务的受托人集是所有具有“医生”角色的用户。
- “药房配药”任务的受托人集是所有具有“药剂师”角色的用户。
-
许可集:
- “医生审批”任务的许可集可能包括“查看处方详情”和“批准/拒绝处方”。
- “药房配药”任务的许可集可能包括“查看处方详情”和“准备药品”。
通过这种方式,TBAC 模型确保了只有适当的用户或角色可以执行特定的任务,并且在执行这些任务时只能进行被许可的操作。这种模型非常适合于需要根据业务流程动态调整权限的场景。
3.3) git clone时报错: Permission denied (keyboard-interactive,publickey).fatal: Could not read from remote repository.
当您尝试使用 git clone 命令克隆仓库时遇到 Permission denied (keyboard-interactive,publickey) 错误,这通常表明您没有足够的权限访问远程仓库。这个问题可以通过几种不同的方法解决:
1. 检查 SSH 密钥
- 确认 SSH 密钥已添加到远程仓库:确保您的 SSH 公钥已添加到目标 Git 仓库的服务提供商(如 GitHub、GitLab 或 Bitbucket)中。
- 生成 SSH 密钥:如果还没有生成 SSH 密钥,可以使用以下命令生成一个新的 SSH 密钥对:
ssh-keygen -t ed25519 -C "your_email@example.com" - 添加 SSH 密钥:将生成的公钥添加到远程仓库的服务提供商中。
2. 使用 HTTPS 协议
- 使用 HTTPS 克隆仓库:如果使用 SSH 方式仍然出现问题,可以考虑使用 HTTPS 协议。使用 HTTPS 需要输入用户名和密码。
git clone https://username@github.com/user/repo.git
3. 配置 SSH Agent
- 启动 SSH Agent:确保 SSH Agent 正在运行,并将私钥添加到 SSH Agent 中。
其中eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519~/.ssh/id_ed25519是您的私钥文件路径。
4. 配置 Git
- 检查 Git 配置:确保 Git 的配置正确。您可以使用以下命令查看当前的 Git 配置:
git config --list
5. 检查远程仓库 URL
- 确认远程仓库 URL 正确:确保您使用的远程仓库 URL 是正确的,并且与您的账户相关联。
6. 使用正确的 Git 凭证助手
- 配置 Git 凭证助手:如果您使用的是 HTTPS 协议,确保您配置了正确的 Git 凭证助手。
git config --global credential.helper store
7. 检查防火墙和网络配置
- 检查防火墙和网络配置:确保防火墙或网络配置没有阻止 SSH 或 HTTPS 连接。
8. 重新生成 SSH 密钥
- 重新生成 SSH 密钥:如果之前的 SSH 密钥有问题,可以尝试删除旧的密钥并重新生成一对新的 SSH 密钥。
9. 检查用户名和仓库名称
- 确认用户名和仓库名称正确:确保您提供的用户名和仓库名称是正确的。
10. 联系服务提供商
- 联系服务提供商:如果以上方法都无法解决问题,可能需要联系 Git 仓库的服务提供商寻求帮助。
根据您的具体情况,您可以尝试上述方法中的一个或几个来解决问题。如果您能提供更多关于您的环境的信息(例如您是在哪个平台上操作,您是否已经设置了 SSH 密钥等),我可以为您提供更具体的指导。
相关文章:
技术周总结 2024.07.29 ~ 08.04周日(MyBatis, 极限编程)
文章目录 一、08.01 周四1.1)mybatis的 xml文件中的 ${var} 和 #{var}的区别? 二、08.03 周六2.1)极限编程核心价值观核心实践实施极限编程的好处极限编程的挑战适用场景 三、08.04 周日3.1)《计算机信息系统安全保护等级划分准则…...
C语言调试宏全面总结(六大板块)
C语言调试宏进阶篇:实用指南与案例解析C语言调试宏高级技巧与最佳实践C语言调试宏的深度探索与性能考量C语言调试宏在嵌入式系统中的应用与挑战C语言调试宏在多线程环境中的应用与策略C语言调试宏在并发编程中的高级应用 C语言调试宏进阶篇:实用指南与案…...
unity万向锁代数法解释
unity的矩阵旋转乘法顺序是yxz 旋转x的90度的矩阵: 1 0 0 0 0 -1 0 1 0旋转y和z的矩阵假设角度为y和z,矩阵略不写了 按顺序乘完yxz之后结果是 cos(y-z) sin(y-z) 0 0 0 -1 -sin(y-z) cos(y-z) 0这个结果和Rx(pi/2) *Rz(某个角度)的结果是一个形式,Rx和…...
stm32入门学习10-I2C和陀螺仪模块
(一)I2C通信 (1)通信方式 I2C是一种同步半双工的通信方式,同步指的是通信双方时钟为一个时钟,半双工指的是在同一时间只能进行接收数据或发送数据,其有一条时钟线(SCL)…...
GDB常用指令
GDB调试:GDB调试的是可执行文件,在gcc编译时加入-g参数,告诉gcc在编译时加入调试信息,这样gdb才能调试这个被编译的文件。此外还会加上-Wall参数尽量显示所有警告信息。 GDB命令格式: 1、start:程序在第一…...
Nginx 高级 扩容与高效
Nginx高级 第一部分:扩容 通过扩容提升整体吞吐量 1.单机垂直扩容:硬件资源增加 云服务资源增加 整机:IBM、浪潮、DELL、HP等 CPU/主板:更新到主流 网卡:10G/40G网卡 磁盘:SAS(SCSI) HDD(机械…...
pythonflaskMYSQL自驾游搜索系统32127-计算机毕业设计项目选题推荐(附源码)
目 录 摘要 1 绪论 1.1研究背景 1.2爬虫技术 1.3flask框架介绍 2 1.4论文结构与章节安排 3 2 自驾游搜索系统分析 4 2.1 可行性分析 4 2.2 系统流程分析 4 2.2.1数据增加流程 5 2.3.2数据修改流程 5 2.3.3数据删除流程 5 2.3 系统功能分析 5 2.3.1 功能性分析 6 2.3.2 非功…...
C++ vector的基本使用(待补全)
std::vector 是C标准模板库(STL)中的一个非常重要的容器类,它提供了一种动态数组的功能。能够存储相同类型的元素序列,并且可以自动管理存储空间的大小,以适应序列大小变化,处理元素集合的时候很灵活 1. vector的定义 构造函数声…...
Java 属性拷贝 三种实现方式
第一种 List<OrederPayCustomer> orederPayCustomerList this.list(queryWrapper); List<CustomerResp>customerRespListnew ArrayList<>();for (OrederPayCustomer orederPayCustomer : orederPayCustomerList) {CustomerResp customerResp new Custome…...
Java-变量,运算符,输入与输出
目录 一,语法基础 1.基本Java程序 2.语法基础 2.1 变量 2.2 常量限制(fiinal)类比C中的const 2.3 类型转化 2.4 运算符 2.5 表达式 2.5 输入与输出 2.5.1 输入 2.5.2 输出 一,语法基础 1.基本Java程序 public class Main{public static void…...
五、一个quad同时支持pcie和sfp两种高速接口的ref时钟配置
项目描述 上位机将截图数据通过 XDMA 写入到 FPGA 侧的 DDR 内存区域 1 中通过 axi_lite 接口给 axi_read_start 信号,通知 AXI_read 模块启动读取数据,然后通过 GTP TX 模块发送出去。经过光纤回环,GTP RX 端接收到数据,送给 AX…...
AI辅助教育:九章大模型的数学辅导功能解析
1.简介 九章大模型是学而思为学习研发的模型,该模型对于数学做了很多专门的训练,在题目推荐方面做得比较好。 同时,这个模型也能支持上传图片,对图片内容进行分析,然后针对内容进行校对,推荐相识题目。 支…...
力扣刷题之3128.直角三角形
题干描述 给你一个二维 boolean 矩阵 grid 。 请你返回使用 grid 中的 3 个元素可以构建的 直角三角形 数目,且满足 3 个元素值 都 为 1 。 注意: 如果 grid 中 3 个元素满足:一个元素与另一个元素在 同一行,同时与第三个元素…...
OD C卷 - 机场航班调度
机场航班调度(100) 航班组成:前两个大写字母代表航空公司缩写,后面4个数字代表航班信息;对输入的航班排序 首先按照航空公司缩写升序排序;同一航空公司的按照航班信息升序排序; 输入描述&…...
uni-app中使用支付宝扫码插件并且在真机调试时使用(详细教程)
前言:uni-app自带的扫码api 识别不灵敏,每次都得扫很长时间且不断调整才能扫出来码,所以决定使用支付宝扫码插件,官方插件地址:https://ext.dcloud.net.cn/plugin?id2636#detail 使用步骤: 1、下载插件到项目中 2、…...
每日学术速递8.5—1
1.SV4D: Dynamic 3D Content Generation with Multi-Frame and Multi-View Consistency 标题: SV4D:具有多帧和多视图一致性的动态 3D 内容生成 作者:Yiming Xie, Chun-Han Yao, Vikram Voleti, Huaizu Jiang, Varun Jampani 文章链接&…...
1、操作系统相关概念
1、操作系统是计算机上的第一层软件,用于管理计算机硬件设备,提高他们的利用率和通吐量,并为用户和应用程序提供一个接口。不同操作系统目标不同,查询设备的操作系统,侧重人机交互性;武器控制操作系统&…...
【ModelSim】仿真问题记录
1、波形出不全: 1、甚至连clk波形都出不来 2、个别波形只有到仿真结束的时候才出现 解决办法: 1、添加波形需要是实例中的net 2、排查是否存在声明与示例的位宽不一致的信号 3、观察是否存在未初始化的变量寄存器 4、缩短整个仿真的步长 2、Instance列…...
如何提高深度学习中数据运行的稳定性
在深度学习中,模型的训练通常会受到随机性因素的影响,如参数初始化、数据加载顺序等。这会导致每次训练得到的结果有所不同。要减少这种不稳定性,可以采取以下措施: 1.固定随机种子 通过设置随机种子,可以使得每次训…...
【连续数组】python刷题记录
R3-前缀和专题 绝对要用字典记录 ben神,前缀和字典 class Solution:def findMaxLength(self, nums: List[int]) -> int:#前缀和字典,key为差值,value为坐标dict{0:-1}#当前1和0的差值counter0ret0for i,num in enumerate(nums):#多1+1if…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
HTML前端开发:JavaScript 获取元素方法详解
作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
