自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据流图(DFD)这么理解吗?

图的形式来描述系统数据流向,每一层都代表了系统数据流向的一个抽象水平,层次越高,数据流向越抽象,(因为抽象的东西是很难有什么变化的,这也为我们对系统的设计猜想有了更好的辅助)。对于大型的系统,为了控制设计的复杂性,便于理解,更倾向于从抽象到具体,采用自定向下逐层分解的方式,将一个数据流图分解成若干个数据流子图来分别表示。(1) 接受顾客的订单,检验订单,若库存有货,进行供货处理,即修改库存,给仓库开备货单,并且将订单留底;顶层图只有一张,图中的“加工”也只有一个,表示整个系统,不必为其编号。

2023-05-11 15:03:57 9150 1

原创 谈谈你用过的编程语言和编辑工具

Java、 c 和 c++、shell。在编程语言流行程度方面,Java、Python、C++ 等现代编程语言已经取代了C语言的地位;但是C语言已经存在了很长时间,并且到目前仍然被大量使用。C语言失败的一个主要原因是 C++的诞生。C++ 在C语言的基础上进行了扩展,不但保留了几乎所有的C语言特性,还包含了面向对象编程和模板编程等新的思想。对于用户使用的应用程序,人们更喜欢使用 C++,它的开发效率更高,使用更方便。

2023-04-23 00:15:00 505

原创 谈谈我了解的测试工具

1、:基于Java 架构的管理系统,简单好用,开源。jira 是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域,其配置灵活、功能全面、部署简单、扩展丰富。2、:免费开源,是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

2023-04-22 19:32:50 118

原创 软件工程基础三问

这样做的好处是,可以减少UI模块和计算模块具体实现的依赖关系,降低模块之间的耦合度,使得系统更加灵活、可维护和可扩展,即使UI模块和计算模块的具体实现解耦。这样做的好处是,可以使UI模块和计算模块相互独立,减少模块之间的依赖关系,使得系统更容易维护和扩展。这样做的好处是,可以降低模块之间的耦合度,减少模块之间的依赖关系,提高模块的独立性。通过这个例子,我们可以看出,信息隐藏原则可以使不同部分之间的耦合度降低,而局部化原则则使得每个模块之间的依赖关系降低,从而提高系统的可维护性和可复用性。

2023-04-04 18:00:00 510

原创 结对编程可行性理解

结对,顾名思义,就是两个的意思,在此类编程中,同寻常一样两个人势必要扮演不同的角色以及实现相应的、同一的体系架构。作为软件开发的一种方法论,结对编程(Pair Programming),是由两个程序圆共同完成一个代码任务,两者间通过不断的交流和协作,在一定程度上,来提高软件质量、完善软件功能和提升开发效率。总之,结对编程为我们提供了一种适用于软件开发中的方法,在带来它好处和优势的同时又对面临相应的挑战,需要我们不断在实践中克服并加以解决。

2023-04-03 21:00:00 59

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

开发就是将需求转化为代码的过程,拥有一定的理论指导势必在开发过程中事半功倍,软件工程方法论对于软件开发是具有纲领性意义的。它提供了一系列的方法一帮助软件开发项目的顺利完成,从对任务的抽象逻辑分析开始,一个阶段一个阶段地进行开发,每个阶段的开始和结束都有相应的严格标准,对于两个相邻的阶段而言,前一个阶段的结束是后一个阶段的开始,即前一个阶段的结束标准是后一个阶段的开始标准。它包含三要素:方法、工具和过程。软件工程方法论还可以提高软件的质量和效率,降低软件开发和维护的成本,从而为社会和企业创造更大的价值。

2023-03-23 00:00:00 93

原创 什么是DevOps?

~DevOps是Develop与Operations的缩写,它是企业内开发、技术运营和质量保障这三方面工作的融合,用于促进开发、技术运营和质保部门之间的沟通、协作与整合。~~从侧面来说,它更像是一种文化,旨在通过改进沟通、协作和集成来加速软件开发和部署的速度。通过促进软件开发及其运营团队的紧密相连,让整个软件开发生命周期中实现更快、更DevOps的目标是通过自动化和监控软件交付流程,从而使团队能够更快地构建、测试和发布高质量的软件。

2023-03-23 00:00:00 138

原创 软件工程是什么?它是不是教会不会写程序的人开发软件?

它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计件有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。用人话来说,就是用一些功能性、系统性的指导教条,让会写程序的人写出更好的软件,即必须建立在一定的程序设计能力之上。换句话说,软件工程不是教会不怎么会写程序的人开发软件,而是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。

2023-03-22 16:00:00 211

原创 【详解】手撕 一维、二维、三维差分数组原理(附图解,模板,例题分析)

差分是一种处理数据巧妙而简单的方法,可以应用于区间修改和询问问题。例如,将给定的数据集合 A 分成很多区间,并对这些区间进行很多次操作,每次都是对某段区间内的所有元素做相同的加减操作,此时若一个个的遍历修改这段区间内的每个元素,就会非常的耗时,效率不高。为此,我们引入一个叫 “差分数组” B,当修改这段区间时,只需要对这段区间的 端点进行修改,就能将整段区间的元素修改,这个操作是非常平滑的,只需要 O(1) 的复杂度。当我们将所有修改操作进行完毕后,再利用差分数组,即可计算出新的数据集合 A。

2022-11-03 11:58:56 6091 55

原创 线段树详解(附图解,模板及经典例题分析)

线段树是一种常用来维护区间信息的数据结构​ 可以在 O(logn) 的时间复杂度内实现单点修改、区间修改、区间查询(区间求和,求区间的最大值,求区间的最小值)等操作​ 如下图所示,线段树是建立在区间基础上的树,树的每个节点都代表着一段区间【L,R】

2022-10-31 20:43:32 2966 7

原创 “ 食物链 “ 顶端的 《应用层》原理总结

​ 对于传输的货物来说,每次都传输货物,IP + TCP(UDP)的端口号这三个信息,太繁琐易错,不便于管理,为了减少层间传输的信息量,可以采用Socket。就像使用操作系统打开一个文件,OS返回一个文件句柄一样,以后使用这个文件句柄,而不是使用这个文件的目录名,文件名。问题 3: 如何使用传输层提供的服务,实现应用进程之间的报文交换,实现应用(用户使用服务)​ 对于使用无连接服务(UDP)的应用而言,套接字是 2 元组的一个具有本地意义的标识。客户:请求,接收和显示Web对象的浏览器。

2022-10-24 21:19:05 745 21

原创 树状数组详解(附图解,模板及经典例题分析)

顾名思义,就是像树一样的数据结构,与 Trie 树类似,其结构类型为完全二叉树,节点排列非常的有规律,故我们直接可以使用数组来模拟,以达到简洁而高效的目的

2022-10-19 22:16:05 4141 14

原创 Set / Multiset 集合容器 题库日记

​ 在头文件 中声明,使用类似树的结构(基于红黑树的平衡二叉树》) 存储数据并自动将数据 (无重复值)从小到大排列 。​ 构建目的: 为了快速检索 (O(logn))访问元素:通过迭代器进行,类似于指针,可以通过它指向容器中某个元素的地址使用 insert()将元素插入集合set中时,容器默认为从小到大的顺序插入元素,当我们需要其他顺序时,需要自行编写比较函数

2022-10-13 16:53:16 256 1

原创 Sort 排序 题库日记

​ 在头文件 中 声明,采用的是成熟的 ”快速排序“ ,默认从小到大排序,时间复杂度为 O (nlogn)

2022-10-07 17:37:39 391

原创 最长公共子序列问题详解(LCS)

​ 我们的目的是要找出 字符串 X = < x1,x2,···,xm> 和 Y = < y1 , y2,···,yn > 最长公共子序列。由于在过程中,重复的子问题多,效率低下。假设 Z = < z1, z2,···,zk > 是 它们的最长公共子序列。,用数组保存中间状态,方便以后的计算。以上内容尚未完全,随着今后学习的推进,我会继续对其进行补充与完善。的子序列,是一组按从左到右顺序出现的字符,但不一定是连续的。(m) ,求出两个字符串的最长公共子序列的长度。例如 ,我们有一字符串。

2022-10-04 15:54:41 1001

原创 组合数四大相关求法详解(附模板)

Problem A 求组合数Ⅰ​ 给定 n 组询问,每组询问给定两个整数 a , b , 请你输出 $ C^b_a \ \ mod ~~(10^9 + 7)$ 的值思路代码模板乘法递推 – O(nlognnlognnlogn)Problem B 求组合数Ⅱ​ 给定 n 组询问,每组询问给定两个整数 a , b , 请你输出 $ C^b_a \ \ mod ~~(10^9 + 7)$ 的值如果不熟悉逆元求解的,可以点开这里食用 - > 乘法逆元(inverse element)及四大相关求法详解(含证

2022-10-02 11:23:13 833 1

原创 手撕并查集及其优化,三大相关模板实现详解(附图解)

一旦用了路径压缩,会破坏树的形态,因为原来的节点的父节点会直接压缩到祖先上,这样一来我们调用的时候父子关系发生了改变,造成了算法的错误。​ 所谓 ” 路径压缩 “ ,就是一种在执行 ” 查找 “ 过程中,扁平化树的结构的方法,使得在路径上的每一个节点都可以直接连在根节点上,为以后直接或则间接引用节点的操作加速。​ 当树的高度过高,查询元素的个数过多时, BF 做法 的时间效率显得过于吃力,此时我们需要对元素所在集合查询时的路径进行缩短优化,此时均摊的时间复杂度为。的所在集合的祖宗节点的父节点置为。

2022-09-24 20:27:38 325 1

原创 Trie树(字典树)详解及代码实现 -- 查询前缀,字符串出现的次数

是一种高效存储查找字符串集合的数据结构核心思想是利用空间换时间,利用字符串的公共前缀来降低查询时间的开销适用于 全是同类字符的情形

2022-09-18 15:51:00 892 3

原创 数论 -- 欧拉函数求解详解(含推导及证明)

为了使重叠部分不被重复计算,可以先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复设 S 是有穷集,当求某些 1 ~ n 中每一个数的欧拉函数时,若用公式法,那么时间复杂度 为O(n√n),太慢,故此我们需要批量预处理计算欧拉函数,这样就可以直接以 O(1) 查询 欧拉函数了。设 Φ(n) 表示 集合{ 0 , 1, ···,n - 1 }中与 n 互素的数的个数。**| 集合 | 表示集合中元素的个数 **

2022-09-13 11:45:05 1767

原创 数论 -- 欧几里得及其拓展算法详解

① 若 a, b 是整数,且 gcd(a , b) = d,那么对于任意的整数 x , y。ax+by 都一定是 d 的倍数,特别地,一定存在整数x,y,使 ax+by = d成立。首先,只有 m % gcd( a,b) == 0 ,即 当且仅当 m 是 a,b 最大公约数的倍数时,该线性方程才有解。欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。公式 :gcd( a,b ) = gcd( b,a mod b )当 m 为1 时,由裴蜀定理推论可知,只有当 a,b互质才有解。

2022-09-11 11:50:07 352

原创 数论--约数相关知识及代码实现

{ 试除法求约数, 约数个数, 约数之和 } 设 a 和 b 是两个整数,如果 d | a 且 d | b,则称 d 为 a 与 b 的 公约数

2022-09-11 11:18:20 357

原创 数论 -- 质数判定及其筛法求解

对于一个合数 x,假设 pj 是 x 的最小质因子,在 i 枚举到 x 之前一定会枚举到 x / pj,故在循环语句中 x 中的合数一定会被筛掉,又每个数只会被筛一次,所以整个过程是线性的。设 a,b 时两个整数,且 b ≠ 0,如果存在整数c,使得 a = b * c,则称。:如果 x 除了它本身还能被其他数整除,那么它不是素数,反之则是素数。,即 x 的质因子成对存在,故只需枚举每对中较小的那一个就行,即。a,即 a 是 b 的倍数,b 是 a 的因子。每当扫描到一个数时,若它尚未被标记,则它不能被。

2022-09-05 21:30:05 842

原创 Java学习前置准备

冰冻一尺非一日之寒,写博客也是,就如同学习一样,短期内可能看不到效果,但是长期的坚持,对自己的提升却很有帮助。学习做人有时候比学习知识更为重要,不要让自己的圈窄起来。每个牛B的人物背后都有段苦逼的岁月,只要像sb的一样坚持,总将牛B!最好的学习方法不是向大家去传输什么,而是让大家去提出问题思考问题。除了学习,给自己留点喘气的机会,放松自己,不要沉迷学习无法自拔。天赋只占一部分,后天的努力才是提升上限的重要途经。封装的过程是是编程中重要的一部分,挖掘与剖析。从入门到精通中间还是有很长的路要走的。

2022-09-03 12:06:56 190

原创 乘法逆元(inverse element)及四大相关求法详解(含证明)

若整数 a,m 互质,并且对于任意的整数 b,如果满足 a | b ( a 能整除 b ),则存在一个整数 x,使得 b/a ≡ bx ( mod m ) ,则称 x 为 a 模 m 的乘法逆元,记为 a^{−1}( mod m ) 或者 inv( a )。

2022-07-30 21:06:45 9673

原创 二进制枚举以及集合的关系运算

子集:如果集合A的任意一个元素都是集合B的元素,那么集合A称为集合B的子集。子集的个数:含 n 元素的子集的个数为 **$2^n$**

2022-07-25 12:36:42 630

原创 手撕迪杰斯特拉算法(Dijkstra)及代码(附图解)

引言:我们常常纠结一个对路径选择的决策问题,假设我们要从北京到上海,那么如何才能走 花最少的钱,又最节省时间的线路呢?​ 这时候,我们可以把从 北京 到 上海 间的路线站标记,那么 北京 到 各路线站 都会有相应的金钱和时间花费,我们只需要找出一条从北京到上海所经过的路线站的时间和金钱总值消耗最少的即可。​ 显而易见,对应到图中,就是一张带权的图,即 一张 网。我们只需要找出 起点 到 终点 权值之和最少的路径即可。即target=Min(∑beginendweight)itarget=Min{ (\

2022-06-10 16:49:02 3716 1

原创 平衡二叉树(AVL)插入以及相关旋转大法

例如下图思考: 我们知道一般树的相关操作通常 为 O(logn),AVL 也一样,不同的是 AVL 的 插入 操作有些奇特: 插入一个节点可能破坏其特性,那么我们如何来完成对特性的修复呢?方法:旋转大法​ 我们把必须重新平衡的节点称之为 α 。对于任意二叉树的节点来说,每个节点至多有两个孩子,故当插入一个新的节点,高度不平衡的情形为 左右子树高度差 为 2,容易看出分为以下四种情形:可以看出,上述情形 两两呈镜面对称。​ 如图,插入节点后, 节点 k2 的 左子树的深度 比 右子树的深度 多 2 层,为

2022-06-03 16:57:14 582

原创 树与二叉树

文章目录(树)Tree--ADT树相关的定义根(*root*)子树(孩子 | *sub-tree*)兄弟(*sibling*)叶节点( *leaf* )层次( *level* )度( 边数 | *degree* )高度 ( *height* )深度 ( *depth* )树的性质树的遍历先根遍历(preorder traversal)后根遍历(postoder traversal)层序遍历(level traversal)特殊的树及相关性质二叉树严格二叉树满二叉树 与 完全二叉树(树)Tree–ADT树

2022-05-29 20:33:49 1646 1

空空如也

空空如也

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

TA关注的人

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