自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 算法学习:Rabin-Karp 算法

RK算法的核心在于边滑动窗口,边更新哈希值,从而把滑动窗口内的匹配算法的时间复杂度降到O(n)。这里需要注意的是,仅用滑动窗口只能针对无序列的查找,因为涉及的计数器只记录了数值,并没有记录顺序。比如在‘sdfghj’中找‘fh’,那么结果会是‘fgh’,因为其中包含了‘f‘和’h’。所以当要求寻找特定目标时,我们需要用到滚动哈希,这样在记录的时候可以确保两者排列是一致的。拿第二题来说,对于样例比较小时,第一种解法是可行的,但一旦样例过大,效率就远不如第三种。

2023-12-10 15:13:51 960

原创 算法学习:田忌赛马思想之优先决策

对于优先决策类型的题目,解决思路如下:1.利用优先队列数据结构来实现二叉堆,这样我们可以把比较对象理想化便于我们进行对比。这里我们需要注意的是,我们将比较对象重新排列,所以我们需要同时存储其对应的原本的索引,否则会出现配对错误。2.其次我们也要将被优化的对象进行一个理想化的排列,通常我们只要进行数值的比较和存储,所以这里可以直接使用sort方法来简化代码。3.最后在比较过程中简单运用双指针,来实现对比和存储。对于二叉堆调用poll()方法即可。

2023-12-03 17:14:22 535

原创 算法学习:双指针进阶之滑动窗口算法

滑动窗口算法基于左右指针和快慢指针的基础上,其主要应用于字符串排列的判断,相较于仅仅使用双指针,效率会更高。其特点在于创造了计数器,再加上窗口移动(指针移动)。在字符串排列判断这一类型上优先选择滑动窗口算法。

2023-11-29 17:28:04 918

原创 Linux-实现mychmod命令

对于类似于mychmod a.txt和mychmod *** a.txt的实际操作中,发现原来的函数无法实现参数的正确传输,也就是说无法识别***是为空,导致可能把a.txt错误得设置为第二个参数。修改/查看文件权限,命令名为mychmod(功能类似命令 chmod *** aa.txt),若输入命令为mychmod aa.txt则显示文件aa.txt的权限,若输入命令为mychmod *** aa.txt,则修改文件aa.txt,其中***表示文件权限。

2023-11-27 23:32:26 441

原创 算法学习:双指针解决数组之左右指针

左右指针的核心思想在于从中心到两端或从两端到中心,对条件进行检索,其特点在于对称性,考虑情况主要从这一点入手,同时要考虑好数组是奇数还是偶数,解决办法是判断两指针是放在一起的还是相邻的。

2023-09-21 18:20:35 82

原创 算法学习:双指针解决数组之快慢指针

快慢指针的运用就在于一前一后,这里需要注意的是第一题和第二题的赋值部分有些差异,一个是在数组中,另一个是在链表中。在数组中,两个所谓的指针从同一起点出发,所以slow的真正赋值是从下标为1的位置开始的,需要先执行slow++;而在链表中,需要以slow.next指向fast当前的位置并赋值,然后再以slow=slow.next指向下一个节点,不像数组,实际这之间是有空缺的,但本文用的是Java,它会自动帮我们回收悬空的节点,所以看起来是有序的数组。

2023-09-19 11:37:18 91

原创 算法学习:差分数组

了解题意,确认运用差分数组后直接套用,再在Solution类中根据题意确认区间和更新数据val,同时也要考虑其他检索条件。diff数组侧重于区间更新,而presum数组侧重于区间的和计算,核心思想差不多,抓住这两点根据题意选择即可。

2023-09-14 09:41:04 223

原创 算法学习:前缀和

一维数组:先算各区间的和,利用区间和算出目标值二维数组:找到一个共同的顶点(从目标矩阵的四个顶点中找到最合适的一个),以顶点向四周矩形状发散,通过大矩形加减内部小矩形的方式算出目标区域的元素和子数组的数量查找:类似于一维数组先进行前缀和的存储,然后根据题意利用已算好的前缀和去找到目标值,其难点在于利用哈希表去存储前缀和并映射出其出现的次数,方便查找。

2023-09-09 11:00:59 89

原创 关于形式化方法的认识

从广义上讲,形式化方法是借助数学的方法来解决软件工程领域的问题,主要包括建立精确的数学模型以及对模型的分析活动。狭义的讲,形式化方法是运用形式化语言,进行形式化的规格描述、模型推理和验证的方法。根据表达能力,形式化方法可以分为五类:基于模型的方法,基于逻辑的方法,代数方法,进程代数方法,基于网络的方法。根据说明目标软件系统的方式,形式化方法可以分为两类:面向模型的形式化方法和面向属性的形式化方法。

2023-05-04 09:03:41 53

原创 关于负载均衡的认识

硬件负载均衡,一般是在定制处理器上运行的独立负载均衡服务器,价格昂贵。软件负载均衡,应用最广泛,无论大公司还是小公司都会使用。软件负载均衡从软件层面实现负载均衡,一般可以在任何标准物理设备上运行。负载均衡是高并发、高可用系统必不可少的关键组件,目标是 尽力将网络流量平均分发到多个服务器上,以提高系统整体的响应速度和可用性。负载均衡算法是负载均衡服务核心中的核心。负载均衡产品多种多样,但是各种负载均衡算法原理是共性的。

2023-05-03 15:21:27 41

原创 列举所了解的测试工具

性能测试工具:loadrunner、jmeter、httperf.测试管理工具:TestDirector、jira、svn.白盒子测试工具:JUnit、cppunit、gtest.网络测试工具:iperf、lxia、tcppium.app自动化工具:appium、Monkey.持续集成工具:jenkins、Hudson.

2023-05-03 15:14:42 85

原创 说说我了解过,使用过的编程工具

目前本人只是用过VSCode,Dev-C++,eclipse。

2023-05-02 15:07:41 45

原创 比较JAVA和C的优势

在开发大型软件应用时,由于 Java语言具有面向对象的特点,所以可以对软件进行模块化、组件化的开发,在程序运行的时候能够并行执行,这样就大大提高了程序运行的效率。C语言虽然代码量较少,但是C语言作为一种静态类型的语言,在程序运行时需要对其进行编译,所以C语言的编译速度比 Java语言慢。C语言作为一种标准的语言,其语法简单易懂,在开发小型软件应用时,C语言的代码量比较少,而且也容易上手。但是C语言作为一种静态类型的语言,其编译速度慢,程序运行速度慢。

2023-05-02 14:58:26 246

原创 信息隐藏和局部化

在删除敏感区域时,我们通常会先将整个图像或视频删除,然后再将其嵌入到另一个区域中。当我们将非敏感区域嵌入到另一个区域中时,我们还可以使用局部化技术来保护非敏感数据的保密性。它是指将敏感信息从敏感区域(如图像或视频中的某个像素)中删除,而将非敏感信息(如文本或符号)嵌入到另一个区域中。由于隐写术将信息从原始数据中删除,因此在隐藏信息的同时也隐藏了原始数据。信息隐藏的基本原理是,通过改变符号的表示形式来改变原始数据的表示形式。信息隐藏是一种安全通信的方法,它通过对符号进行处理来改变其表示形式以使其对人不可见。

2023-05-02 14:53:57 50

原创 衡量模块独立的定性标准

模块独立性是指一个模块不依赖其他模块而独立地执行它自己的功能。例如,如果一个功能需要3个模块来实现,其中一个模块为1,两个模块为2,那么,我们说该模块具有独立性。

2023-05-02 14:48:29 50

原创 关于模块化的认识

在《The Art of Modular Programming》一书中,作者认为模块化是一种可以持续发展的设计方法,它是“设计思维”的一个组成部分。

2023-05-02 14:43:51 45

原创 关于中小学生学习数学软件开发的用户调研对象想法

从最大受众群体出发,应是首先考虑中小学生。其次向四周发散,应要考虑家长的担心,还要考虑老师和专家的学习建议。参考其他学习app的板块,应当还要考虑提高资源利用率,为了让更多优质资源加入到本app中,对有想法进行提供课外资源的人员进行沟通,完善共享资源的模块。

2023-04-10 11:36:13 61

原创 Home Work To Blog

(1)报名:由报名处负责,需要在学员登记表上进行报名登记,需要查询课程表让学员选报课程,学员所报课程将记录到学员选课表。(2)交费:由收费处负责,需要根据学员所报课程的收费标准进行收费,然后在账目表上记账,并打印收款收据给办理交费的学员。(3)就读:由培训处负责,其在验证学员收款收据后,根据学员所报课程将学员安排到合适班级就读。1.某培训机构入学管理系统有报名、交费、就读等多项功能,下面是对其各项功能的说明。请画出入学管理系统顶层图、1层图。

2023-04-10 11:23:37 42

原创 选课-ER图

要求:根据上述语义画出ER图,要求在图中画出实体的属性并注明联系的类型。一个教师可讲授多门课,一门课只有一个教师讲授;一个学生可选修多门课,一门课有若干学生选修;一个学生选修一门课,仅有一个成绩。教师的属性有教师编号,教师姓名;学生的属性有学号、学生姓名;课程的属性有课程号、课程名。

2023-03-28 15:59:57 100

转载 尝试建模电梯的状态图

2023-03-28 15:30:26 525

原创 关于对WBS的认识

WBS是Work Breakdown Structure的英文缩写,是项目管理重要的专业术语之一。WBS是一种在项目全范围内分解和定义各层次工作包的方法。WBS最后构成一份层次清晰的结构,可以具体作为组织项目实施的工作依据。无论在项目管理实践中,还是在 PMP,IPMP考试中,WBS都是最重要的内容之一。WBS总是处于计划过程的中心,也是制定进度计划、资源需求、成本预算、风险管理计划和采购计划等的重要基础。WBS同时也是控制项目变更的重要基础。项目范围是由 WBS定义的,所以WBS也是一个项目的综合工具。

2023-03-26 17:20:06 47

原创 关于“分而治之”的认识

所谓“分而治之” 就是把一个复杂的算法问题按一定的“分解”方法分为等价的规模较小的若干部分,然后逐个解决,分别找出各部分的解,把各部分的解组成整个问题的解,这种朴素的思想来源于人们生活与工作的经验,也完全适合于技术领域。诸如软件的体系结构设计、模块化设计都是分而治之的具体表现。

2023-03-26 17:16:39 52

原创 关于对结对编程的认识

结对编程来自于极端编程XP,是它的十二个最佳实践之一。顾名思义,结对编程就是两个程序员坐在一起,结对进行代码开发。在采用结对编程实践时,不同的团队形式各异。有的是分工明确型,有的是共同合作型。是否使用结对编程,需要具体问题具体分析,不可盲目。任何事手都有它的好与坏,结对编程也不例外,只有知道了好与坏,才能更好的利用它。

2023-03-26 17:00:49 62

原创 关于scrum中的3355的认识

Scrum是用于开发、交付和持续支持复杂产品的一个框架,是一个增量的、迭代的开发过程。所谓Scrum3355指的是:3个核心角色,3个工件,5个关键事件和5个价值观。

2023-03-23 16:30:57 83

原创 关于对DevOps的认识

DevOps,字面意思是Development &Operations的缩写。DevOps 强调开发人员和运维人员的合作,实现软件交付和基础设施变更的自动化。利用DevOps,开发团队和运营团队可以合作,共同提高开发人员的生产力,同时增强运营的可靠性。个人没有太过深度的理解,这里我就不详说,请读者自阅相关材料。了解了DevOps的概念后,也是可以理解DevOps诞生的意义了。DevOps 的三大支柱之中,即人(People)、流程(Process)和平台(Platform)。

2023-03-23 15:35:16 114

原创 软件工程方法论对我们经软件开发有多大用处

软件工程方法论大致有两类。其一,传统方法学将软件开发的整个过程划分为一个个阶段,使每个相邻的阶段产生关联性,层层递进,只有前一阶段顺利完成,才能进入下一阶段,以科学化的管理技术确保了其整体的严谨性。其二,面向对象方法学,是尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界、解决问题的方法与过程。正确地运用面向对象方法学开发软件,有利于降低软件产品的复杂性,提高软件的可理解性,简化软件的开发和维护工作。在实际的应用场景中选择合适的方法论,不论是哪种,都是有其特色点。

2023-03-21 16:03:52 42

原创 关于软件工程是不是教会不怎么会写程序的人开发软件的观点

个人认为并不是如此绝对,对于新手而言,的确是起到了一定的作用。但软件工程刨析了软件开发的整个过程,有可行性研究、需求分析、软件设计、编码、软件测试、软件维护等,它这里更侧重于编码这一环节,所以我认为是太过唯一。从读者角度出发,它面向的群体并非只有一点,它所传播的思想是教会更多的人去理解软件其本身,再传授如何以工程化的体系去处理软件开发的整个过程。

2023-03-21 15:37:17 25

原创 关于对软件工程课程的希望和个人目标

对于一个新手而言,个人希望能在软件工程这门课程上能对软件工程有一个初步的认识和了解,能够总体明确这门课程想要传授的思想,在确立好方向后能进一步阅读其他材料来深入理解或通过实践来挖掘自身的不足之处。至于个人目标,还是希望自己把基础的东西掌握好,懂得如何以工程化的体系去从头至尾地处理好一个软件。

2023-03-21 15:19:59 42

原创 关于软件工程的疑惑

1.需求工程的迭代模型中有一条直线,代表软件配置处于稳定状态,那么怎么判断软件是否已经处于稳定状态?3.软件过程模型众多,各有特点,但也有相似点,具体情况时该如何选择最优方案?2.关键词private和protected有什么区别?4.有软件复用,为什么我们还需要写新的代码?5.高低质量代码的标准一定合理吗?

2023-03-19 18:02:17 30

原创 软件工程新技术的发展

我认为软件工程新技术的发展影响了各个领域和行业,影响力自然是有大有小。其中对信息产业的app开发影响是最大的。软件工程其本质还是软件二字,最具代表性的便是app,随着app的开发,其承载着各种各样的功能,满足了人门各种需求。游戏,短视频,聊天工具等等,软件早已贯穿了我们的生活,在这样一个信息化时代里,数据需要一个载体来进行存储和运行,而软件便是一个选择。总而言之,软件工程的新技术会不断更新,其涉及范围会越来越深。

2023-03-19 17:39:19 184 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除