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

技术周总结 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语句,但有一些区别:

  1. ${}是直接替换变量的值,相当于拼接字符串,存在SQL注入的风险。在使用${}时,变量值会直接替换SQL语句中的对应位置,不会进行预编译处理,因此不安全。
  2. #{}是使用预编译处理,会将传入的参数按照参数类型进行处理,可以防止SQL注入。在使用#{}时,MyBatis会将传入的参数进行预编译处理,将参数值放入占位符中,再执行SQL语句,可以提高性能和安全性。

因此,推荐在MyBatis的XML文件中使用#{}来传递参数,以提高安全性和性能。

二、08.03 周六

2.1)极限编程

极限编程(Extreme Programming,XP)是一种敏捷软件开发方法,旨在提高软件质量并响应不断变化的客户需求。由Kent Beck在1996年提出,极限编程通过强调团队协作、持续反馈、客户参与和快速交付来实现这些目标。

核心价值观

极限编程基于五个核心价值观:

  1. 沟通:鼓励团队成员之间的频繁和开放的沟通,以确保每个人都在同一页面上。
  2. 简单:专注于简单的解决方案,避免过度设计和复杂性。
  3. 反馈:通过客户反馈、测试和持续集成获得快速反馈,以便及时调整和改进。
  4. 勇气:鼓励团队成员敢于面对和解决问题,敢于重构代码,敢于放弃不合适的方案。
  5. 尊重:团队成员之间相互尊重,理解并支持彼此的工作和决策。

核心实践

极限编程包含了一系列核心实践,这些实践相互支持和强化,以确保开发过程高效且高质量。以下是极限编程的主要实践:

  1. 持续集成:频繁地将代码集成到主干中,并进行自动化测试,以确保每次集成都不会破坏现有功能。
  2. 测试驱动开发(TDD):在编写功能代码之前先编写测试代码,确保每个功能都有对应的测试覆盖。
  3. 结对编程:两名程序员共同工作在一个工作站上,一人编写代码,另一人进行审查和建议,以提高代码质量和知识共享。
  4. 简单设计:保持代码设计简单,只实现当前需要的功能,避免未来的扩展性考虑。
  5. 重构:持续改进代码结构,使其更易于理解和维护。
  6. 小发布:频繁发布小版本的软件,确保客户可以快速获得新功能和改进。
  7. 客户在场:客户代表与开发团队一起工作,随时提供需求和反馈,确保产品符合客户期望。
  8. 40小时工作周:避免加班,保持工作与生活的平衡,确保团队成员的长期生产力和幸福感。
  9. 编码标准:团队遵循一致的编码标准,使代码更易于理解和维护。

实施极限编程的好处

  1. 提高软件质量:通过TDD、结对编程和持续集成等实践,极限编程可以显著提高软件的质量。
  2. 更快的交付:小发布和客户在场等实践确保团队能够快速响应客户需求,并频繁交付功能。
  3. 减少风险:持续反馈和测试使得问题可以在早期被发现和解决,减少了项目失败的风险。
  4. 增强团队协作:极限编程强调沟通、结对编程和尊重,促进了团队成员之间的协作和知识共享。

极限编程的挑战

  1. 需要客户的高参与度:客户需要能够持续参与开发过程,并随时提供反馈和需求,这在某些情况下可能是一个挑战。
  2. 团队成员的适应性:一些团队成员可能不习惯频繁的沟通和结对编程,需要时间来适应这种工作方式。
  3. 对实践的严格遵守:极限编程的成功依赖于对其核心实践的严格遵守,任何偏离都可能影响其效果。

适用场景

极限编程适用于那些需求变动频繁、需要快速响应客户需求和高质量交付的软件项目。特别适合小型团队和需要快速迭代开发的项目。

通过实施极限编程,团队可以在不断变化的环境中保持高效和高质量的开发过程,最终交付符合客户需求的高质量软件产品。

三、08.04 周日

3.1)《计算机信息系统安全保护等级划分准则》把计算机信息安全划分为的5个等级要怎么理解?请举例说明

《计算机信息系统安全保护等级划分准则》(GB 17859—1999)是中国国家信息安全标准之一,它将计算机信息系统的安全保护能力划分为五个等级。每个等级都对应着不同级别的保护要求,从低到高依次为:

  1. 用户自主保护级 (第一级)
  2. 系统审计保护级 (第二级)
  3. 安全标记保护级 (第三级)
  4. 结构化保护级 (第四级)
  5. 访问验证保护级 (第五级)

下面是对这五个等级的简要解释以及示例:

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-变量,运算符,输入与输出

目录 一&#xff0c;语法基础 1.基本Java程序 2.语法基础 2.1 变量 2.2 常量限制(fiinal)类比C中的const 2.3 类型转化 2.4 运算符 2.5 表达式 2.5 输入与输出 2.5.1 输入 2.5.2 输出 一&#xff0c;语法基础 1.基本Java程序 public class Main{public static void…...

五、一个quad同时支持pcie和sfp两种高速接口的ref时钟配置

项目描述 上位机将截图数据通过 XDMA 写入到 FPGA 侧的 DDR 内存区域 1 中通过 axi_lite 接口给 axi_read_start 信号&#xff0c;通知 AXI_read 模块启动读取数据&#xff0c;然后通过 GTP TX 模块发送出去。经过光纤回环&#xff0c;GTP RX 端接收到数据&#xff0c;送给 AX…...

AI辅助教育:九章大模型的数学辅导功能解析

1.简介 九章大模型是学而思为学习研发的模型&#xff0c;该模型对于数学做了很多专门的训练&#xff0c;在题目推荐方面做得比较好。 同时&#xff0c;这个模型也能支持上传图片&#xff0c;对图片内容进行分析&#xff0c;然后针对内容进行校对&#xff0c;推荐相识题目。 支…...

力扣刷题之3128.直角三角形

题干描述 给你一个二维 boolean 矩阵 grid 。 请你返回使用 grid 中的 3 个元素可以构建的 直角三角形 数目&#xff0c;且满足 3 个元素值 都 为 1 。 注意&#xff1a; 如果 grid 中 3 个元素满足&#xff1a;一个元素与另一个元素在 同一行&#xff0c;同时与第三个元素…...

OD C卷 - 机场航班调度

机场航班调度&#xff08;100&#xff09; 航班组成&#xff1a;前两个大写字母代表航空公司缩写&#xff0c;后面4个数字代表航班信息&#xff1b;对输入的航班排序 首先按照航空公司缩写升序排序&#xff1b;同一航空公司的按照航班信息升序排序&#xff1b; 输入描述&…...

uni-app中使用支付宝扫码插件并且在真机调试时使用(详细教程)

前言&#xff1a;uni-app自带的扫码api 识别不灵敏&#xff0c;每次都得扫很长时间且不断调整才能扫出来码&#xff0c;所以决定使用支付宝扫码插件&#xff0c;官方插件地址&#xff1a;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 标题&#xff1a; SV4D&#xff1a;具有多帧和多视图一致性的动态 3D 内容生成 作者&#xff1a;Yiming Xie, Chun-Han Yao, Vikram Voleti, Huaizu Jiang, Varun Jampani 文章链接&…...

1、操作系统相关概念

1、操作系统是计算机上的第一层软件&#xff0c;用于管理计算机硬件设备&#xff0c;提高他们的利用率和通吐量&#xff0c;并为用户和应用程序提供一个接口。不同操作系统目标不同&#xff0c;查询设备的操作系统&#xff0c;侧重人机交互性&#xff1b;武器控制操作系统&…...

【ModelSim】仿真问题记录

1、波形出不全&#xff1a; 1、甚至连clk波形都出不来 2、个别波形只有到仿真结束的时候才出现 解决办法&#xff1a; 1、添加波形需要是实例中的net 2、排查是否存在声明与示例的位宽不一致的信号 3、观察是否存在未初始化的变量寄存器 4、缩短整个仿真的步长 2、Instance列…...

如何提高深度学习中数据运行的稳定性

在深度学习中&#xff0c;模型的训练通常会受到随机性因素的影响&#xff0c;如参数初始化、数据加载顺序等。这会导致每次训练得到的结果有所不同。要减少这种不稳定性&#xff0c;可以采取以下措施&#xff1a; 1.固定随机种子 通过设置随机种子&#xff0c;可以使得每次训…...

【连续数组】python刷题记录

R3-前缀和专题 绝对要用字典记录 ben神&#xff0c;前缀和字典 class Solution:def findMaxLength(self, nums: List[int]) -> int:#前缀和字典,key为差值&#xff0c;value为坐标dict{0:-1}#当前1和0的差值counter0ret0for i,num in enumerate(nums):#多1&#xff0b;1if…...

JavaScript青少年简明教程:DOM和CSS简介

JavaScript青少年简明教程&#xff1a;DOM和CSS简介 DOM简介 DOM&#xff08;Document Object Model&#xff09;将文档表示为一个树形结构&#xff0c;其中每个节点都是一个对象&#xff0c;每个对象都有其自身的属性和方法。 通过对DOM的操作&#xff0c;开发者可以使用编…...

架构师知识梳理(一):计算机硬件

目录 计算机硬件组成 CPU CPU的组成 CPU的功能 校验码 奇偶校验 CRC CRC计算案例 指令 指令指行过程 指令系统 指令系统分类 指令流水线技术 流水线技术相关计算公式 存储 计算机存储系统设计 高速缓存Cache 缓存的局部性原理 地址映射 替换算法 关于命中…...

从根儿上学习spring 四 之run方法启动第一段

图1 由上图我们可以看到&#xff0c;我把run方法分成了5个小段&#xff0c;每小段使用红框圈了起来&#xff0c;这一篇我们先开始讲第一段。大家需要关注下行号&#xff0c;我讲的时候可能会使用行号对应具体某行代码。 图1-289-290行&#xff1a; 没啥好说的定义了两个变量&…...

智能闹钟如何判断用户已经醒了?

智能闹钟判断用户是否已经醒来的方式主要依赖于其内置的传感器和算法系统。以下是一些常见的判断方法&#xff1a; 一、传感器监测 体动传感器&#xff1a;智能闹钟通常配备有体动传感器&#xff0c;用于监测用户的身体运动。当用户从睡眠状态转变为清醒状态&#xff0c;并开始…...

【算法】动态规划解决背包问题

应用场景——01背包问题 有一个背包&#xff0c;背包的容量为 4&#xff0c;现有如下物品 要求 1.目标为装入背包的总价值最大&#xff0c;并且重量不超出 2.要求装入的物品不能重复 动态规划算法介绍 1.动态规划算法的核心是&#xff1a;将大问题划分为小问题进行解决&…...

day09 工作日报表

日期 30日07月2024年 任务安排 今天主要就是讲了security类工作的原理&#xff0c;然后就是让我们自己做项目 工作中的问题 今天做项目的时候发现有时候用postman测试返回20001&#xff0c;说错误见控制台&#xff0c;但是控制台一片祥和&#xff0c;于是就尝试用tr…...

C++学习之路(1)— 第一个HelloWorld程序

C学习之路&#xff08;1&#xff09;— 第一个HelloWorld程序 一、前言 C在C语言的基础上添加了对面向对象编程和泛型编程的支持&#xff0c;在 20世纪90年代便是最重要的编程语言之一&#xff0c;并在21世纪仍保持强劲势头。C继承了C语言高效、简洁、快速和可移植性的传统。 …...

python3 pyside6图形库学习笔记及实践(三)

目录 前言菜单栏相关控件使用QtDesigner快速构建菜单栏结构语法 上下文菜单概念为窗体添加上下文菜单为控件添加上下文菜单 折叠菜单资源的加载内置图标Rcc的使用创建资源文件加载资源文件 前言 本系列文章为b站PySide6教程以及官方文档的学习笔记 原视频传送门&#xff1a;【…...

03 库的操作

目录 创建查看修改删除备份和恢复查看连接情况 1. 创建 语法 CRATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] …] create_specification:  CHARACTER SET charset_name  CPLLATE collation_name 说明&#xff1a; 大写的标识关键…...

嵌入式人工智能(44-基于树莓派4B的扩展板-LED按键数码管TM1638)

树莓派性能非常强悍&#xff0c;但是对于某些复杂的项目来说&#xff0c;会出现心有余而口不足的情况&#xff0c;为了解决这类问题&#xff0c;可以在树莓派上使用扩展板&#xff0c;我们介绍几款常见的扩展板&#xff0c;不仅可以扩展到树莓派&#xff0c;其他单片机或嵌入式…...