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

软工2023个人作业二——软件案例分析

项目内容
这个作业属于哪个课程2023年北航敏捷软件工程
这个作业的要求在哪里个人作业-软件案例分析
我在这个课程的目标是学习并掌握现代软件开发和项目管理技术,体验敏捷开发工作流程
这个作业在哪个具体方面帮助我实现目标从软件工程角度分析比较我们所熟悉的软件,以指导后续的软工项目实践

代码仓库管理系统有很多,他们对于你熟悉的目标用户 (中国高校大学生)有什么缺陷和需要改进的地方,并且该如何改进?

本文上手使用并分析了两个常见的代码仓库:Github 和 Gitee。

第一部分 调研,评测

Github

使用记录

Github 首页:
github6.PNG

在个人主页可以看到自己的所有仓库:
github.PNG

可以在搜索栏使用过滤器语法搜索开源项目:
github2.PNG

可以查看一个仓库:
github3.PNG

可以对某个仓库提 issue(社区版 issue 界面):
github4.PNG

可以回复和 close issue:
github5.PNG

综合评价

优缺点

首先从数据量/界面/功能/准确度多个维度,分析 Github 的优缺点。

优点:

  • 用户基数大!!!
    开发者可以在 Github 平台上搜索到极为丰富的开源项目,单凭这一点就值得国内程序员即使需要通过一些特殊手段上网也更青睐 Github。比如我最近的实习项目需要集成 remesh 功能到我司软件,我在 Github 上搜索 remesh,从成百上千的仓库中找到了正合我需要的几何处理库,而在 Gitee 上搜索该关键词却得到 0 条记录。
  • 搜索功能强大便捷
    搜索是 Github 核心功能之一,而 Github 的搜索栏支持过滤器语法,可按语言、仓库、用户、收藏数等条件过滤,我认为这是一件十分符合程序员直觉的事——我上一份实习就是在谷歌做支持过滤器和自动补全的搜索栏,谷歌自己内部的代码管理平台也有非常完善的搜索功能。
  • UI 设计舒适
    Github 的 UI 设计简洁大方,(熬夜大户程序员喜爱的)深色模式支持良好,能够给与使用者愉悦之感。
  • 丰富的第三方支持
    Github 有着良好的生态,支持丰富的第三方服务。

缺点:

  • 国内访问不稳定
    可能是对国内开发者最不友好的问题。我们一定都体会过明明挂上了 ladder,却还是 pull 不下来代码,骂骂咧咧又打开 host 文件更新的经历。
  • issue 和 pr 功能简单
    社区版 Github 的 issue 不支持分级(P1/2/3…;S1/2/3)(企业版也没支持这个),pr 不能开分支保护(企业版支持这个,对保护的分支合并必须要指定的 reviewer 审核)。WIKI 也是至少团队版才能使用。但对于高校学生团队来说,付费使用团队或企业版是不必要的开销。

改进建议

对于 Github 的改进建议,我作为个体用户希望他们可以在社区版也可以引入更健全的 issue 和 pr 功能。但正如《构建之法》所说,软件企业=软件+商业模式,这也是商业模式的一部分。企业大概率不考虑采纳这样的建议。

综合评价

总体而言,我对于 Github 给出 “e) 非常推荐” 的评价,鉴于它可以几乎完全满足个体开发者和中小型团队的需求。

Gitee

使用记录

进入 Gitee 首页:
gitee7.PNG

可以使用搜索栏搜索开源项目和博客:
gitee3.PNG

在个人主页可以看到自己的所有仓库:
gitee.PNG

Gitee 支持从 Github 导入仓库:
gitee2.PNG

可以进入自己的仓库进行查看和各种操作:
gitee4.PNG

创建一个 pr:
gitee5.PNG

审核并合并 pr:
gitee6.PNG

综合评价

优缺点

首先从数据量/界面/功能/准确度多个维度,分析 Gitee 的优缺点。

优点:

  • 国内访问稳定
    快速稳定的访问,对比 Github,无疑是 Gitee 对国内开发者最大的优势之一。特别是对于主要使用代码管理平台进行小组合作开发的高校大学生,Gitee 能够提供较大便利。
  • 良好的 issue 和 pr 使用体验
    issue 支持分级;pr 支持指派负责人和测试人员;支持 issue 和 pr 关联;区分只读/保护/普通分支。以上功能(还有 WIKI)全部在免费版本就支持使用,与 Github 对比具有优势,大幅提升了用户使用体验。
  • 丰富的第三方支持
    Gitee 也有比较丰富的第三方服务支持,主要来自国内各厂商。并且 Gitee 支持一键导入 Github 和 Gitlab 仓库。

缺点:

  • 用户基数有限
    即使 Gitee 将工作流实现得不错,但用户基数少是现实。能够搜索到心仪的开源项目应该是代码托管平台(面对个人开发者)的杀手功能之一。但我认为这是“面对个人开发者”的,国内中小企业和高校依然可以使用 Gitee 进行高效团队开发。
  • 搜索栏不够便捷
    我不学 CS 的朋友们看到搜索栏可能想不到有什么过滤器语法,但我在一个代码托管平台一定下意识会使用过滤器的。很遗憾我在 Gitee 里并没有体验到这个功能。
  • 不必要的外围功能
    Gitee 支持账号关联博客,在搜索界面可以搜索到博文,并且推荐系统也会推荐博客。本人认为博客和推荐系统对于一个代码管理平台而言或许有些冗余。
  • UI 设计拥挤
    部分源自上一条分析提到的原因,Gitee 的 UI 设计给我感觉有些拥挤。或许从一进首页看到侧边长长的推荐列表开始,我会有一瞬间的恍惚自己打开了 CSDN。
  • CI/CD 收费
    可能不能算“缺点”,但穷学生很遗憾 Gitee 的 CI/CD 服务貌似是收费的。而对比之下, Github 社区版每月也有一定的免费使用时长。

改进建议

对于 Gitee 的改进建议,希望 Gitee 首先优化一下搜索功能和 UI 设计吧。用户基数问题或许不好解决。

综合评价

总体而言,我对于 Gitee 给出 “d) 好,不错” 的评价,鉴于它可以很好地满足中小型团队(包括学生团队)合作开发的需求,但对个人开源爱好者可能略有不足。

用户调研

我采访了一位欧阳老师软工班级的同学。该同学有一定使用 Github 的经验,但从未使用过 Gitee。作为计算机学院大三学生,ta 对于开源代码管理平台的需求主要是和同学进行合作开发,完成作业。我请这位同学用 10 分钟快速体验了一下 Gitee 的基础功能,具体主要是浏览首页及个人主页、pull 一个开源仓库到本地、push 一个个人仓库到远程。下面是同学分享使用感受(应同学要求已匿名):
采访1.PNG
采访2.PNG
采访3.PNG
采访4.PNG
采访5.PNG

Bug 分析和提交

“选择任意一个软件(鼓励大家选择开源软件),找出至少两个功能性 bug…” 有这种事?那自然要选择本人目前实习所在公司的产品 ZENO 了。
ZENO 是泽森科工创造的一个面向高性能物理计算而研发的可视化编程系统和平台,一款全流程 3D 内容生成开源工具。 用户可以从官网或 Github 上下载发行版本或自行构建。
作为开发组实习生我显然是使用自行构建版本,举两个最近发现的 bug。

依赖声明有误

测试环境

Ubuntu 20.04, gcc 9.4, CMake 3.18, CUDA 11.8,开发者自行构建版本。

bug 复现

在上述环境中稳定发生。

bug 具体情况描述

编译选项之一 -DZENO_WITH_CUDA,在满足官网所声明的依赖 gcc 9+,CUDA 11.6 的环境中编译无法通过。(当时在视频会议里展示的,没有保留截图。)

bug 分析

  1. 推测成因:CUDA 优化部分主要只由一个人负责,他自己的电脑应该配置了更高版本环境,无意中使用了新版本特性。
  2. 严重性:一星。(假设五星为致命性系统故障、致命性安全性漏洞、用户体验严重影响;一星为无实际影响)因为使用者以及美术组员工均使用构建好的程序,不会每次从头编译;开发组员工基本也不会开和自己工作部分无关的 CUDA 选项。
  3. 分析原因:没有严格审查修复,主要因为软件面向的用户群体不需要用到这个功能,没有必要。

bug 改进建议

应该调整代码,使其能够在官网声明的依赖要求下正常编译。

bug 反馈

跟大哥 1 on 1 时说了一下,大哥确实不知道,用了一分钟看了一下编译报错然后表示这里需要 gcc 10 ,而他自己的机器确实是 gcc 10,验证了我对于 bug 成因的猜想。
1.jpg

窗口点选崩溃

测试环境

Ubuntu 20.04, gcc 10.2, CMake 3.18, CUDA 11.8,开发者自行构建版本。

bug 复现

在上述环境中偶尔发生。频率为:我每天进行 5 小时左右的开发,在经常进行可引发 bug 的操作前提下,大概每两天遇到一次。

bug 具体情况描述

当节点图较复杂,窗口显示多个物体时,在进行一系列拖拽旋转视角操作后,再点选物体,可能引发程序崩溃。
比如这样的图:
2.jpg

bug 分析

  1. 推测成因:可能是显存泄露。考虑到之前其它同事报过类似 bug,后来查明原因就是显存泄露。
  2. 严重性:二星。目前公司内只有两三个人的环境可能出现该问题,在大多数环境下程序能正常运行,并且发生频率不高。而且即使 Microsoft Word 这种大软件也不时崩溃呢,大家依然都喜欢用。
  3. 分析原因:由于只有特定环境可以复现该 bug,负责该部分的开发者可能并没有意识到存在问题。

bug 改进建议

应该排除代码问题,提高软件稳定性,尽量降低用户使用过程中软件崩溃的概率。

bug 反馈

跟同事们说了一下,得知有一个美术组同事在我之前已经提出了,相应开发组同事正在排除问题做修改。

题外话——欢迎使用 ZENO!

contribute.PNG

第二部分 分析

让我们回到开源代码管理平台的话题上来。

工作量分析

我认为就基础架构以及完善程度而言,两个代码管理平台在常用基础功能上应该是相近的,因此共同分析。
假如我们不考虑后续的第三方服务接入和软件生态建立过程,仅考虑基础功能的开发,并且假设我们拥有充足的资源支持……说个题外话,我觉得大学生的水平差异还是挺大的,我现任职公司的架构师是个双非学校本科大四在读生 geek 老哥,像一部行走的 cpp reference,其他语言也了解不少,能力不知道比我们这种忙忙碌碌卷毕业、去互联网大厂老实写几年并不比培训班出来的强多少的前后端、裁员首当其冲的 985 毕业生强到哪里去了虽说我是搞图形的,并没打算去写前后端。

还是试图以北航比较优秀的同学的水平估算一下时间:

  1. 需求分析和设计(3 个月):目前的需求比较清晰,也有现有的模型和解决方案作为标杆,但考虑到功能繁多,具体的架构设计还是需要一段时间的。

  2. 技术选型和开发(2 年):说实话我难以想象,至少我不相信我可以做到。首先需要和 git 对接,并实现网页端的 git UI;需要实现网页端的编辑器;需要对接 ssh;需要实现 issue 和 pull request 功能;需要实现仓库数据的可视化;需要对接 WIKI;需要实现 fork ,release 功能,watch 和 star 就像是顺手完成的了;需要实现 sponsor 功能;需要实现关注和提示功能;需要实现个人代码仓库统计及可视化;需要实现 CI/CD 功能;需要实现搜索功能——我大二暑假一个搜索功能实习做了三个月啊;还有不同权限用户和不同收费标准版本……我觉得两年是按照线性进度估计的,实际操作起来未必保持效率为常数。

  3. UI 设计和调整(3 个月):鉴于已经有专业 UI 团队进行设计,我们这里只需要调整时间。但考虑到上述功能的复杂程度,我认为即使只是“执行命令”式的调整也需要一段时间。

  4. 测试和优化(6 个月):考虑到上述功能的复杂度,我认为在测试过程中应该会发现很多问题,问题的解决与后续优化(加上解决优化产生的问题)需要一定时间。

综上,我估计 6 个北航本科优秀毕业生全职搞 3 年也许能完成一个基础代码管理平台的开发工作吧。在实际开发中上述四个过程应该不是依次而是循环出现的,以上估计数字大约是一个总数。

软件质量分析

  1. Github 以其完善的软件质量和庞大的生态体系,兼有行业先手优势,无疑稳位居同类产品之首。Gitee 作为中国内地网络情况下诞生的 Github 竞品,也已经拥有较高的产品质量,在国内市场除去 Github 和 Gitlab 外,大概位居第一。

  2. 对 Github 整体给予比较高的评价,如果要提建议大概是可以更加完善一些细节功能,全方位占领绝对行业优势;对 Gitee 的建议是,想要在 Github、Gitlab 已经占据先手优势的市场中占据一席之地,不能仅做到模仿和跟随,更好是要找到自己的独特优势,打造产品亮点。

第三部分 建议和规划

市场概况

  • Github 和 Gitee 等代码管理平台的市场,主要由软件开发行业从业者和计算机及相关专业学生构成。

  • 直接用户:软件开发行业从业者。
    根据 Statista 在 2021 年 1 月发布的统计数据,截至 2020 年底,全球软件开发行业从业人数大约 2.45 千万人,预计该数字到 2024 年底将达到 2.87 千万。
    statista.PNG

  • 间接用户:计算机及相关专业学生。
    对于每年全球毕业生人数没有找到比较可信的数据,但根据一篇印度报道引用的统计数据,印度每年产生最多的计算机专业毕业生(21.5 万),紧随其后的是中国(18.5 万),其他大国还有美国(6.5 万)、俄罗斯(1.7 万)。估计全球每年 CS 专业毕业生至少 50 万人。

市场现状

  • 目前市场上最主流的代码管理平台,大概全球范围内最流行的就是 Github 和 Gitlab,中国国内最流行的就是 Gitee 了。

  • Github 凭借其庞大的生态体系其位居同类平台中的全球第一。除了 Github 以外,还有 Gitlab 同样在全球范围内广受开发者和特别是企业欢迎,企业可使用 Gitlab 搭建自己的私有仓库,保障私有数据安全。但以上两者由于网络问题,在中国国内都会遇到使用上的麻烦。Gitee 在国内大约是除去 Github 和 Gitlab 之外最受欢迎的同类产品,但在国际范围内影响较小。
    Github 注册数超 1 亿:
    github7.PNG
    Gitlab 注册数超 3 千万:
    gitlab.PNG
    Gitee 注册数超 1 千万:
    gitee8.PNG

  • 他们三者部分主要功能重叠,互为竞品。但 Gitlab 一大特色应用场景为公司可独立搭建私有代码仓库。而 Gitee 作为国内产生的竞品,就我作为个人使用者的体验视角,其主要竞争者还是国际领头羊 Github。(Github 的企业版我是使用过的;但Gitee 的企业版没有尝试,不甚了解。)

  • 目前三者均呈上涨趋势,对比往届学长博客中引用的统计数据可以对比得到这一结论。虽然 Github 已经较为成熟完善,难以做出改变适应新潮流,但凭借其强大的功能、庞大的生态,在短时间内其领域领头的位置不会改变。Gitlab 同理。Gitee 的主要赛道为国内市场,其也不断完善着对国内市场的特色支持,用户量上涨,但短期内还很难撼动 Github 在国内市场的地位。

市场与产品生态

  • 核心用户群正如前文分析,由软件开发行业从业者和计算机及相关专业学生构成。
    列举以下几类典型用户(以下人物在本人现实生活中均有原型):

    1. 成锋,30岁,国内 top 2 计算机专业本科毕业,某国际大型互联网公司 dev,爱好周末骑公路车,每月稳定收入 5 万左右,需求是休息时间在开源代码平台上寻找和工作内容相关的优秀的开源项目,吸收借鉴到日常开发工作之中。
    2. 王垒,31岁,国外名校计算机专业博士毕业,某创业公司核心员工,公司主业务为打造一款开源软件,爱好是看 c++ talk 和开发库,收入随公司项目拿奖金,好消息是公司一直都有项目,主要需求是利用企业版开源软件管理平台和同事合作开发,潜在需求是使用完善的 issue 和 pr 机制审核并通过同事代码。
    3. 金众,35岁,国内某 985 计算机专业本科毕业,目前同时从事多份开发工作,爱好却是作为独立开发者贡献开源代码,收入成谜,收入合法性成谜反正从来不缺钱,表面需求是利用开源代码管理平台托管自己的产品,潜在需求是给他人的仓库提 issue 和开 pr,参与开源贡献。
    4. 姜竹,20岁,计算机专业本科在读学生,爱好是读书,月收入只有 4 位数实习工资,表面需求是利用开源代码管理平台和同学合作开发完成软工作业,以及学习他人的优秀软工项目,潜在需求是熟悉合作开发流程和代码管理技术,为大四兼职更高薪实习做铺垫
  • 典型用户 2 和 3 也部分存在着典型用户 1 的需求,典型用户 4 可以成长为典型用户 1 或 2 或 3。

  • 对于同一个开源代码管理平台可能有多个版本,社区版的主要用户可能是典型用户 1 和 3;企业版的主要用户可能是典型用户 2;学生版(如果有)的主要用户可能是典型用户 4。面向学生的子产品可能为企业版或团队版增加用户,因为学生毕业后可能加入企业或创业。

产品规划

  • 我想加入书签功能。即用户可以通过点击某行代码左侧来将其加入用户在该仓库的书签。目前 Github 的浏览功能不是很友好,每切一个文件就要重新加载。但书签功能再结合 Github 新的 code view——代码左侧文件树,可以提高用户浏览代码的使用体验。

    项目内容
    Need目前 Github 的代码浏览用户体验不佳
    Approach加入书签功能,用户可以对重点代码行做标记
    Benefit改善用户的代码阅读体验,无需 clone 也可以快速理解仓库代码
    Competitors大概没有竞争者,相似功能的代替也只能是用户 clone 到本地然后使用编辑器打开并添加书签
    Delivery凭借 Github 本身的流行程度普及这项功能
  • 6 人角色与分工如下

    • 架构师 & 救火员: 1 人
    • 美工 & 前端开发:1 人
    • 前端开发 & 测试:1 人
    • 后端开发 & 测试:2 人
    • 测试 & QA:1 人
  • 周数任务
    1需求分析,工作流确认
    2-3技术栈确认,架构设计
    4-5前后端框架构建
    6-8具体开发,同时进行单元测试和每日构建测试,每个模块加入总架构时进行集成测试
    9alpha 测试,bug 修复
    10beta 测试,bug 修复,总结反馈意见
    11-12根据反馈意见修改产品,过程中做测试
    13beta 测试,bug 修复,总结反馈意见
    14根据反馈意见完善细节
    15部署至生产环境
    16产品上线

相关文章:

软工2023个人作业二——软件案例分析

项目内容这个作业属于哪个课程2023年北航敏捷软件工程这个作业的要求在哪里个人作业-软件案例分析我在这个课程的目标是学习并掌握现代软件开发和项目管理技术,体验敏捷开发工作流程这个作业在哪个具体方面帮助我实现目标从软件工程角度分析比较我们所熟悉的软件&am…...

python数据分析表格文档Excel数据分析器统计源码

wx供重浩:创享软件 对话框发送:python表格 获取完整源码源文件说明文档可执行文件等 在PyCharm中运行《Excel数据分析师》即可进入如图1所示的系统主界面。在该界面中,通过顶部的工具栏可以选择所要进行的操作。 具体的操作步骤如下&#xff…...

Istio Sidecar启动顺序 - 导致的应用容器网络不通

目录一、问题二、Istio 1.7及其之后版本的解决方案2.1 方式1:安装Istio时全局设置2.2 方式2:在应用Deployment通过annotation设置2.3 holdApplicationUntilProxyStarts启用效果三、Istio 1.7之前的解决方案一、问题 线上应用集成了Spring Cloud K8S Con…...

3696. 构造有向无环图

Powered by:NEFU AB-IN Link 文章目录3696. 构造有向无环图题意思路代码3696. 构造有向无环图 题意 Codeforces Round 656 (Div. 3) E 给定一个由 n个点和 m条边构成的图。 不保证给定的图是连通的。 图中的一部分边的方向已经确定,你不能改变它们的方向。 剩下的边…...

RuoYi-Flowable-Plus(代码生成)

RuoYi-Flowable-Plus搭建 若依所有扩展项目的代码生成功能都是一样的&#xff0c;RuoYi-Flowable-Plus为例来演示。 模块创建 1.创建新模块ruoyi-student2.编辑RuoYi-Flowable-Plus\pom.xml <dependency><groupId>com.ruoyi</groupId><artifactId>ruoy…...

训练CV模型常用的方法与技巧

最近参加一个CV比赛&#xff0c;看到有参赛者分享了自己训练图像识别模型时常用到的小技巧&#xff0c;故对其进行记录、整理&#xff0c;方便未来继续学习。整理了很多&#xff0c;它们不一定每次有用&#xff0c;但请记在心中&#xff0c;说不定未来某个任务它们就发挥了作用…...

[Java·算法·中等]LeetCode22. 括号生成

每天一题&#xff0c;防止痴呆题目示例分析思路1题解1分析思路2题解2分析思路3题解3&#x1f449;️ 力扣原文 题目 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 输入&#xff1a;n 3 输出&…...

Git项目合并实践

Git项目合并实践 一、前言 环境 操作系统&#xff1a;Windows 10 专业版 代码托管平台&#xff1a;Gitee 场景 同一个项目&#xff0c;在某一个时间点&#xff0c;被另外一个团队拷贝和修改&#xff0c;并且代码不在同一个仓库&#xff0c;最后需要合并项目 不是同一个项…...

C++实战md5、base64算法实现(附源码)

C++常用功能源码系列 文章目录 C++常用功能源码系列前言一、常用加密算法1. md5是什么二、源码1. md52. base64、decode总结前言 本文是C/C++常用功能代码封装专栏的导航贴。部分来源于实战项目中的部分功能提炼,希望能够达到你在自己的项目中拿来就用的效果,这样更好的服务…...

P6专题:P6 EPPM和PPM基本概念

目录 引言 Oracles Primavera P6 Enterprise Project Portfolio Management&#xff08;P6 EPPM&#xff09; Oracles Primavera P6 Professional Project Management 引言 Oracle Primavera系列软件专注于项目密集型企业&#xff0c;其整个项目生命周期内所有项目的组合管…...

【为什么事务@Transactional会失效】

在Spring框架中&#xff0c;Transactional注解用于声明一个方法需要被包含在事务中&#xff0c;以确保数据库操作的一致性和完整性。Transactional注解通常用于Service层或DAO层的方法上。 Transactional注解失效可能是由以下原因引起的&#xff1a; 注解未被正确声明或配置&a…...

NLP中的对话机器人——模型的评估

引言 本文是七月在线《NLP中的对话机器人》的视频笔记&#xff0c;主要介绍FAQ问答型聊天机器人的实现。 模型的评估 我们如何评估模型的好坏&#xff1f;由于我们的数据集没有提供测试数据&#xff0c;所以我们很难评估模型的好 坏。如果我们要做非常严谨的评估&#xff0c…...

数据挖掘知识规整与心得体会

一.大数据的特点&#xff1a; 数据多&#xff0c;类型多&#xff0c;更新快&#xff0c;更新内容多。 二.分类&#xff08;classification&#xff09;与混淆矩阵&#xff08;confusion matrix&#xff09; 这里的分类说的是二分类问题&#xff0c;比如说把人分为好人和坏人&a…...

修正一些formdesigner的一些bug与操作

之前集成了formdesigner表单设计器&#xff0c;但还是有些问题&#xff0c;所以进行一些bug修复与功能修正 一、之前组件布局的图标不见了 在main.js里增加下面一行 import /components/formdesigner/assets/iconfont/iconfont.js 效果如下&#xff1a; 二、选择列表没有数…...

前端网络安全

什么是同源策略同源指的是&#xff1a;协议、端口号、域名必须一致。他是浏览器的一个用于隔离潜在恶意文件的重要安全机制。限制了从同一个源加载的文档或脚本&#xff0c;与另一个源的资源进行交互。同源策略主要限制了三个方面&#xff1a;当前域下的js脚本不能够访问其他域…...

docker内存统计

在docker里top和在docker外top看内存都是没有变化的&#xff0c;但是用docker stats看mem uasge就一直在涨top命令和docker stats命令采集内存使用的方式不同所致。top命令采集的是当前进程的内存使用情况&#xff0c;而docker stats命令采集的是整个Docker容器的内存使用情况。…...

【IDEA】IDEA使用有道翻译引擎—详细配置步骤

目录 前言 步骤一&#xff1a;下载翻译工具Translate 步骤二&#xff1a;注册登录有道云平台 步骤三&#xff1a;配置有道翻译 前言 2022年10月 谷歌翻译已经不在中国了&#xff0c;所以IDEA配置谷歌翻译会出错。 步骤一&#xff1a;下载翻译工具Translate 打开idea设置set…...

js求解《初级算法》56.最长公共前缀

一、题目描述 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀&#xff0c;返回空字符串 ""。 输入&#xff1a;strs ["flower","flow","flight"] 输出&#xff1a;"fl" 输入&#xff1a;strs ["…...

嵌入式Linux(二十四)系统烧写

将uboot&#xff0c;linux kernel&#xff0c;.dtb&#xff0c;rootfs烧写到板子上的EMMC上&#xff0c;避免断网导致不能运行。 1. MfgTool工具介绍 一路解压之后&#xff0c;得到以下两项&#xff1a; ①Profiles文件夹&#xff1a;后续烧写文件放到这个文件夹。  其中关注…...

【ECNU】3496. 贪吃的 xjj 和贪心的 oxx(C++)

目录 题目 输入格式 输出格式 样例 提示 思路 代码 题目 单点时限: 2.0 sec 内存限制: 256 MB oxx 与 xjj 终于到了 Xiamen&#xff0c;他们第一件事就是去吃当地著名的特产椰子饼。 他们共买了 n 盒礼盒&#xff0c;第 i 盒含 ai 块椰子饼。oxx 与 xjj 约定让 oxx …...

【iOS】设置背景渐变色

drawRect函数 主要负责iOS的绘图操作&#xff0c;程序会自动调用此方法进行绘图。我在这个函数中绘制渐变背景色。 方法定义&#xff1a; -(void)drawRect:(CGRect)rect; 重写此方法&#xff0c;执行重绘任务-(void)setNeedsDisplay; 标记为需要重绘&#xff0c;异步调用dra…...

Scrapy框架(高效爬虫)

文章目录一、环境配置二、创建项目三、scrapy数据解析四、基于终端指令的持久化存储1、基于终端指令2、基于管道3、数据同时保存至本地及数据库4、基于spider爬取某网站各页面数据5、爬取本页和详情页信息&#xff08;请求传参&#xff09;6、图片数据爬取ImagesPipeline五、中…...

程序设计语言-软件设计(二十一)

数据结构与算法&#xff08;二十&#xff09;快速排序、堆排序(四)https://blog.csdn.net/ke1ying/article/details/129269655 这篇主要讲的是 编译与解释、文法、正规式、有限自动机、表达式、传值与传址、多种程序语言特点。 编译的过程 解释型 和 编译型 编译型过程&#…...

【小破站下载工具】Python tkinter 实现网站下载工具,所有数据一键获取

目录前言开发环境本次项目案例步骤先展示下完成品的效果界面导入模块先创建个窗口功能按键主要功能代码编写功能一功能二功能三前言 最近很多同学想问我&#xff0c;怎么把几个代码的功能集合到一起&#xff1f; 很简单&#xff0c;写一个界面就行了&#xff0c;想要哪个代码…...

C51---IO口状态翻转

1.example #include "reg52.h" #include "intrins.h" //main.c(11): error C264: intrinsic _nop_: declaration/activation error,?????????? sbit led1 P3^7;//????,??????? sbit key1 P2^1; sbit key2 P2^0; void Delay50ms()…...

2023年春【移动计算技术】文献精读(一)-1 ||| 附:【Markdow语法】向上取整 向下取整。

沉默着走了有 // 多遥远 // 抬起头 // 蓦然间 // 才发现 // 一直倒退 // 倒退到原点 // 倔强坚持 // 对抗时间 “在光芒万丈之前,我们都要欣然接受眼下的难堪和不易,接受一个人的孤独和偶然无助,认真做好眼前的每件事,你想要的都会有。”——毕淑敏 🎯作者主页:追光者♂…...

Java 包装类的二进制操作

Integer 位翻转 位翻转就是将二进制左边的位与右边的位进行互换&#xff0c;reverse 是按位进行互换&#xff0c; reverseBytes 是按 byte 进行互换。 public static int reverse(int i)public static int reverseBytes(int i)来看个例子&#xff1a; int a 0x12345678; S…...

CSS居中之 { left:50%; top:50%; transform:translate(-50%,-50%); }

CSS居中之 { left:50%; top:50%; transform:translate(-50%,-50%); } left:50%; top:50%; transform:translate(-50%,-50%); left:50%; top:50%; transform:translate(-50%,-50%);也可以写成: left:50%; top:50%; translate: -50% -50%; left:50%; top:50%; translate: -50%…...

AcWing 4868. 数字替换(DFS + 剪枝优化)

AcWing 4868. 数字替换&#xff08;DFS 剪枝优化&#xff09;一、问题二、思路三、代码一、问题 二、思路 题目中要求变换次数最小&#xff0c;其实第一印象应该是贪心&#xff0c;即我们每一次都去成各位中最大的那个数字。但是这个想法很容易推翻。因为你这次乘了一个最大的…...

【教学典型案例】01.redis只管存不管删除让失效时间删除的问题

目录一&#xff1a;背景介绍二&#xff1a;redis1&#xff09;redis数据类型①String&#xff08;字符串&#xff09;②Hash&#xff08;哈希&#xff09;③List&#xff08;列表&#xff09;④Set&#xff08;集合&#xff09;2)缓存同步①设置有效期②同步双写③异步通知3&am…...