Jinqq's Home

证明自己

作业一

task1

a)将当前目录下所有文件备份并压缩成 tar.gz,如果成功再将备份拷贝到 /backup 目录下。

1
2
tar czf backup.tar.gz *
cp backup.tar.gz /backup

b) 将上述备份压缩后的文件解压到原来的目录。

1
tar xzf /backup/backup.tar.gz ./ 

c) 将当前目录下所有后缀为.html的文件的后缀改为.htm。

1
rename .html .htm *.html

d) 将当前目录下所有子目录下以a开头的.cpp文件改名为以b开头的.c文件。

1
find . -type f -name "a*.cpp" -exec rename "s/^a(.*)\.cpp$/b\$1\.c/" {} \;
阅读全文 »

作业要求

https://jinqiqing-bucket.oss-cn-nanjing.aliyuncs.com/pdf/assignment-3.pdf

https://jinqiqing-bucket.oss-cn-nanjing.aliyuncs.com/pdf/assignment-3-reading-c4.pdf

你需要负责为以下系统设计一个软件体系结构。你应该使用属性驱动设计(Attribute Driven Design,ADD)方法,并以多个视图来记录最终的体系结构。在这个作业中,三到四名学生需要组成一个小组共同完成作业。每个学生在这个作业上的得分将根据小组的表现来确定,包括个人对工作的贡献和反思。

本作业的补充阅读材料是“呼叫中心客户服务(C4)案例研究”,该案例介绍了一个大型电信公司使用的系统的初始(“一级”)架构分解。该系统包括五个主要子系统,如阅读材料中所述。一级架构在阅读材料中的图1中显示。

阅读全文 »

作业要求

https://jinqiqing-bucket.oss-cn-nanjing.aliyuncs.com/pdf/assignment-2.pdf

Task 1: Architecture Pattern Analysis

一 Broker Pattern(代理模式)

1. Availability 可用性

通过将请求路由到多个服务器和服务实例,可以避免单个服务器或服务实例出现故障而导致整个系统不可用的情况。当一个服务器或服务实例不可用时,broker可以将请求转发到其他可用的服务器或服务实例上,从而实现系统的高可用性。

但另一方面,一个broker可能会服务于大量的客户端与服务端,这种情况下broker本身容易出现故障,整个系统也会受到影响。

**举例:**在一个电子商务网站中,订单管理系统和商品管理系统之间需要进行信息的交互。如果采用代理者模式,将交互过程交给broker,当其中一个系统出现故障时,不会影响到另一个系统的正常运行,不过broker如果故障,则都会受到影响。

**候选策略:**实现多个服务节点的负载均衡和自动故障转移,使用可靠的消息传递机制,对异常情况进行监控和处理,确保服务的可用性。采用备用broker,当原来的broker故障时自动投入。

阅读全文 »

作业要求

https://jinqiqing-bucket.oss-cn-nanjing.aliyuncs.com/pdf/assignment-1.pdf

Task1: Quality Attribute Scenarios

Extensibility(可扩展性) vs. Maintainability(可维护性)

1. Extensibility 可扩展性通用方案与具体方案
Portion of Scenario Possible Values
Source 用户、开发者、管理员
Stimulus 需要在现有系统的基础上添加新的功能或改进现有功能,系统需要满足新的需求和环境变化;
Stimulus Artifact 代码、接口、组件、模块
Environment 新的功能需求;新的技术环境;新的操作系统;新的硬件设备
Response 修改/添加现有的代码或新的代码
添加新的组件或模块
对接口进行改进或添加新的接口
Response Measure 所需的时间和人力成本
新的代码和现有代码的兼容性
新的组件或模块的兼容性
新的接口或改进后的接口与现有系统的兼容性
新的代码或接口的可测试性
image-20241215210159138
阅读全文 »

设计原则

  1. 单一职责原则:一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中;或就一个类而言,应该仅有一个引起他变化的原因。是实现高内聚、低耦合的指导方针 。
  2. 开闭原则:一个软件实体应当对扩展开放,对修改关闭。
  3. 里氏替换原则:软件中如果能够使用基类对象,那么一定能够使用其子类对象。
  4. 依赖倒转原则:高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该 依赖于细节,细节应该依赖于抽象;或针对接口或抽象类编程,而不是针对实现或具体类编程。
  5. 接口隔离原则:客户端不应该依赖那些它不需要的接口。一旦一个接口太大,则需要将它分割成一些更细小的接口, 使用该接口的客户端仅需知道与之相关的方法即可。
  6. 合成复用原则:要尽量使用组合/聚合关系,少用继承。
  7. 迪米特法则/最小知识原则:每一个软件单位对其他的单位都只有最少的知识,而 且局限于那些与本单位密切相关的软件单位;一个软件实体应当 尽可能少的与其他实体发生相互作用。
阅读全文 »

人机交互发展历史

  1. 批处理阶段;

  2. 联机终端时代;

  3. 图形用户界面 GUI 时期:相较于命令行的优点是依赖识别而非记忆。

  4. 新的界面变革包含了上一代界面:作为一种特例

  5. 旧的交互方式仍有其存在的必要性:以前的用户从未消失

执行隔阂与评估隔阂

  1. 执行隔阂:用户想要执行的动作和系统允许的动作有差异,比如想要提交找不到提交按钮;

  2. 评估隔阂:(评估阶段中)用户执行一个操作后总是想感知一下自己的操作的情况(是否结束、是否需要修改),但是系统没有给反馈。

阅读全文 »

软件开发四大本质难题

  1. 不可见性(不因项目而异)、复杂性、可变性、一致性

软件发展三大阶段

  1. 软硬件一体化:软件支持硬件完成计算任务、功能单一、复杂度有限、几乎不需要需求变更;measure twice cut once、code and fix;

  2. 软件成为独立的产品:摆脱了硬件的束缚、功能强大、需求多变、兼容性要求、来自市场的压力;形式化方法、结构化程序和瀑布生命周期模型、成熟度模型;

  3. 网络化和服务化:功能更复杂 、规模更大、用户数量急剧增加、快速演化和需求不确定、分发方式的变化、进一步的服务化和网络化、盛行开源和共享文化;迭代式开发、敏捷开发、开源软件开发方式、DevOps;

  4. 管理的三大关键要素:目标、状态、纠偏

  5. 软项目管理的三大目标:成本、质量、工期

阅读全文 »

  1. “Measure twice, cut once” 描述的是下述哪个软件开发场景:

    A. 软件设计;

    ==B. 代码评审;==

    C. 需求开发;

    D. V&V;

  2. 整体来看,我们可以把软件的发展分为三大阶段,以下不属于三大主要阶段的是:

    A. 软硬件一体化; (1950s - 1970s)

    B. 网络化和服务化; (1970s - 1990s)

    ==C. 云计算化和云原生;==

    D.软件成为独立产品;(1990s - )

    阅读全文 »

🎮 外设推荐 —— 樱桃Cherry MX2.0S 白色 有线 🍒

🌟 写在前面

本系列是我推荐的一些 个人喜爱的外设,全凭主观感受,没有任何专业性,仅供参考!

如果你和我一样追求高颜值和高性能,那一定不要错过这个系列!

今天推荐的产品,是我在 2021 年 10 月买的一款键盘——CHERRY MX2.0S 机械键盘。 这张键盘陪了我也有三年了,一直是我的主力键盘,可以说是颜值无敌,声音无敌,手感无敌。

Cherry Mx2.0S键盘
阅读全文 »

嵌入式方向实践 小车实验报告

实验任务

背景

主要学习和考核以ROS为主的机器人相关知识、非常符合目前机器人产业界的人才需求,同时其更高的技术门槛,以及更激烈的对抗性。

为保证线上比赛的公平性,智能车室外光电组线上仿真比赛平台统一用「Gazebo」。赛道模型和无人车三维模型统一提供。线上比赛需要先把赛道模型导入Gazebo,采用ROS中建地图的方式构建赛道地图,通过自主导航算法实现无人车完成从起到到终点的运动。仿真平台的传感器可以使用IMU,激光雷达或摄像头,仿真平台自主导航算法不限。

阅读全文 »
0%