自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(669)
  • 资源 (45)
  • 问答 (13)
  • 收藏
  • 关注

原创 SpringBoot整合多数据源

我们在调用任何持久层的框架,都是基于JDBC进行操作的,只要集成了Spring框架就一定会注入配置的DataSource获取连接。既然是我们配置的,我们可以实现一个自定义的DataSource,然后动态提供数据源。说干就干那我们实现DataSource这个接口,实现方法即可,会返回一个Connection对象。我们在这个方法中根据业务需求动态提供不同数据源的Connection对象即可。实现逻辑如下:我们可以通过一个静态的标识去判断,比如如果是Write,那就返回,如果是Read,就返回。

2024-01-24 15:58:37 311

原创 JUC高并发容器-CopyOnWriteArrayList

JUC高并发容器是基于非阻塞算法(或者无锁编程算法)实现的容器类,无锁编程算法主要通过组合实现,通过CAS保障操作的原子性,通过volatile保障变量内存的可见性。开销较小:不需要在内核态和用户态之间切换进程。读写不互斥:只有写操作需要使用基于CAS机制的乐观锁,读读操作之间可以不用互斥。1.ListJUC包中的高并发List主要有,对应的基础容器为ArrayList。相当于线程安全的ArrayList,它实现了List接口。在读多写少的场景中,其性能远远高于ArrayList的同步包装容器。

2023-10-22 10:55:39 314

原创 CompletableFuture异步回调

在进行传统的RPC(远程调用)时,同步调用RPC是一段耗时的过程。该方法是对runAfterBoth()方法和thenCombine()方法的特点进行了折中,调用thenAcceptBoth()方法,第三个任务可以接收其合并过来的第一个任务、第二个任务的处理结果,但是第三个任务(合并任务)却不能返回结果。从方法的声明可以看出,thenRun()方法同thenApply()方法类似,不同的是前一个任务处理完成后,thenRun()并不会把计算的结果传给后一个任务,而且后一个任务也没有结果输出。

2023-10-04 20:44:17 1133

原创 浅谈泛型擦除

getFirst擦除类型后的返回类型是Object。在编码阶段使用泛型时加上的类型参数,会被编译器在编译阶段去掉,这个过程叫做泛型擦除。编写一个泛型方法调用时,如果擦出了返回类型,编译器会插入强制类型转换。注意,类型参数T已经被擦出了,只留下了限定类型Comparable。(erased),并替换为其限定类型(或者,对于无限定的变量则替换为。这个原始类型的名字就是去掉类型参数后的泛型类型名。无论何时定义一个泛型类型,都会自动提供一个相应的。不过擦除类型后,它们都会编程原始的Pair类型。

2023-10-04 00:20:09 401

原创 设计模式-观察者模式

观察者(Observer)模式指在被观察者的状态发生变化时,系统基于事件驱动理论将其状态通知到订阅模式的观察者对象中,以完成状态的修改和事件的传播。这种模式有时又叫做发布-订阅模式或者模型-视图模式。观察者模式是一种对象行为型模式,观察者和被观察者之间的关系属于抽象耦合关系,主要优点是在观察者与被观察者之间建立了一套事件出发机制,以降低二者之间的耦合度。抽象主题(Subject):持有订阅了该主题的观察者对象的集合,同时提供了增加、删除观察者对象的方法和主题状态发生变化后的通知方法。

2023-06-25 00:03:41 1193

原创 设计模式-适配器模式

我们常常在开发过程中遇到各个系统之间的对接问题,然而每个系统的数据模式或多或少存在区别,因此可能存在改变现有对象模型的情况,这将影响到系统的稳定。如果想在不改变原有代码结构(类的结构)的情况下完成友好对接,就需要用到适配器模式(Adapter Pattern)。适配器模式通过定一一个适配器类作为两个不兼容的接口之间的桥梁,将一个类的接口转换成用户期望的另一个接口,使得两个或多个原本不兼容的接口可以基于适配器类一起工作。

2023-06-24 23:57:08 1180

原创 设计模式-单例模式

单例模式是保证系统实例唯一性的重要手段。单例模式首先通过将类的实例化方法私有化来防止程序通过其他方式创建该类的实例,然后通过提供一个全局唯一获取该类实例的方法帮助用户获取类的实例,用户只需要也只能通过调用该方法获取类的实例。单例模式的设计保证了一个类在整个系统中同一时刻只有一个实例存在,主要被用于一个全局类的对象在多个地方被使用并且对象的状态是全局变化的场景下。

2023-06-24 22:26:01 1436

原创 设计模式-抽象工厂模式

抽象工厂模式(Abstract Factory Pattern)在工厂模式尚添加了一个创建不同工厂的抽象接口(抽象类或接口实现),该接口可叫做超级工厂。在使用过程中,我们首先通过抽象接口创建不同的工厂对象,然后根据不同的工厂对象创建不同的对象。我们可以将工厂模式理解为针对一个产品维度进行分类,比如上述工厂模式下的苹果手机和华为手机;而抽象工厂模式针对的是多个产品维度的分类,比如苹果公司既制造苹果手机又制造苹果笔记本电脑,同样,华为公司既制造华为手机也制造华为笔记本电脑。

2023-06-24 19:20:12 1329

原创 设计模式-工厂模式

工厂模式(Factory Pattern)是最常见的设计模式,该模式属于创建型模式,它提供了一种简单、快速、高效且安全创建对象的方式。工厂模式在接口中定义了创建对象的方法,而将创建对象的具体过程在子类中实现,用户只需通过接口创建需要的对象即可,不用关注对象的具体创建过程。同时,不同的子类可可根据需求灵活实现创建对象的不同方法。通俗地讲,工厂模式的本质就是用工厂方法代替new操作创建一个实例化对象的方式,以提供一种可方便地创建有同种类型接口的产品的复杂对象的方式。

2023-06-24 19:18:09 1559

原创 RabbitMQ应用场景和集群搭建复习

虽然并行已经提高的处理时间,但是,前面说过,邮件和短信对我正常的使用网站没有任何影响,客户端没有必要等着其发送完成才显示注册成功,应该是写入数据库后就返回.由此可以看出,引入消息队列后,用户的响应时间就等于写入数据库的时间+写入消息队列的时间(可以忽略不计),引入消息队列后处理后,响应时间是串行的3倍,是并行的2倍。1.用户的请求,服务器收到之后,首先写入消息队列,加入消息队列长度超过最大值,则直接抛弃用户请求或跳转到错误页面.用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功。

2023-06-23 10:56:58 1239

原创 RabbitMQ基础与实操复习

MQ(Message Quene) : 翻译为消息队列,通过典型的生产者和消费者模型,生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,轻松的实现系统间解耦。别名为消息中间件通过利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。

2023-06-23 10:36:38 1428

原创 迷宫-BFS

由于传送门的存在, 从 (1,1) 出发到终点 (2,2) 只需要一步;, 那么小明既可以花费1的步数向上下左右四个方向之一走一格 (不能越过边界), 也可以花费1的步数通过传送门走到格子去。迷宫中除了可以向上下左右四个方向移动一格以外, 还有m个双向传送门可以使用, 传送门可以连接两个任意格子。n个格子中均匀随机的 (当然运气好可以直接随机到终点), 他想知道从初始格子走到终点的最短步数的期望值是多少。以终点为起点跑遍整个地图,每次到一个新的位置时,此时到达的步数就是从终点到该点的最短步数(

2023-06-01 21:39:56 1145

原创 出差(Bellman-Ford算法)

从题意可知,这道题目考察的是最短路径的算法,碰到这种问题最容易想到的就是Floyd算法,三个for循环就写出来了,但是由于Floyd的时间复杂度是。由于存在隔离时间,所以我们每条边的权值需要有所调整,假设城市A到城市B有一条权值为w的双向边,那么我们从城市A到城市B的权值需要修改为。由于上级要求, 小明希望能够尽快赶到城市 N, 因此他求助于你, 希望你 能帮他规划一条路线, 能够在最短时间内到达城市。算法是对边进行枚举,所以我们只需要在初始化的时候设置好边的权值即可,另外不需要考虑起点和终点的隔离时间。

2023-05-31 22:55:25 1202

原创 第十届蓝桥杯研究生组国赛-大胖子走迷宫(BFS问题)

小明在时刻 0 出发,每单位时间可以向当前位置的上、下、左、右移动单 位 1 的距离,也可以停留在原地不动。小明走迷宫走得很辛苦,如果他在迷宫里面待的时间很长,则由于消耗了很多脂肪,他会在时刻。n个方阵组成的方阵,正常人每次占用方阵中1×1的区域,而小明要占用 5×5的区域。走迷宫是计划中的重要环节。:先将初始点放入队列,然后只要队列非空我们就让队头节点出队,判断是否已经到达了终点,如果是,输出花费的时间。小明是个大胖子,或者说是个大大胖子,如果说正常人占用1×1 的面积,小明要占用 5×5 的面积。

2023-05-08 21:43:55 1560 2

原创 路径之谜(DFS)-2016年蓝桥杯国赛

骑士从左上角起点出发,没走一步,往左边和上边对应位置射一箭,题目在方格的左边和上边给出了骑士从起点到终点射箭的数量,现在让我们求骑士行走的路线。但不必走完所有的方格。如果走到终点且箭靶上的箭还没有被拔完,那我们就要济宁回溯操作(标记当前点未访问,左边箭靶数量+1,上边箭靶数量+1)。数组中记录的是经过的每个方格的编号,最后将这些编号输出即为骑士从起点到终点走过的路径。如果该点是终点,且箭靶上箭的数量为0,则说明走过的路线就是骑士经过的路线,算法结束。个整数,空格分开,表示北边的箭靶上的数字(自西向东)

2023-05-05 21:01:11 1431

原创 十一届蓝桥杯研究生组国赛-循环小数(数论)

例如 0.3333⋯0.3333⋯ 等于 1331 ,0.1666⋯0.1666⋯ 等于 1661。其实纯循环小数和混合循环小数最后的推导结果是可以合并的,这里为了区分就不合并了,看起来思路还清晰一点。,循环体为142857,该循环体有6位,有。再计算出142857与999999的最大公约数位142857,则对分数。输出两个整数,用一个空格分隔,分别表示答案的分子和分母。此时p=1,q=6,循环体位142857。是一个小于 11 的循环小数,请计算与。相等的最简真分数是多少。此时,p=3,q=7。

2023-05-05 10:12:03 1063

原创 十三届蓝桥杯研究生组国赛-最大公约数(线段树+二分)

由于要求的是最少次数,所以在没有1的情况下,我们要使用最少的操作次数获得1,其实就是我们在数组中找到最短的子数组,使得它们的gcd结果为1,涉及到了查询区间gcd整个操作。我们首先应该考虑数组中是否存在1,如果数组中存在1,那直接让整个1和其他数字都进行gcd,假设1的个数为。因为如果存在一个数组的gcd为1,那么整个数组无论再加上任何正整数,gcd也永远是1,因为。,如果整个数组的gcd都不为1,那么任何子数组的gcd也不可能为1,此时无解。,对于数组中的每个数我们都可以固定为区间的左端点。

2023-04-29 17:27:15 1351 1

原创 线段树入门

基于arr数组构建线段树,我们根节点存储的是区间[0-5]的和,再往下面分叉,左边表示[0-2]的和,右边表示[3-5]的和,以此类推,最后所有的叶子节点就是数组中的所有数字。线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。我们判断要修改的点是位于线段树的左子树还是右子树,若是左子树,递归左子树,修改对应节点的值,若是右子树那就递归右子树,修改对应节点的值。:我们使用一个数组保存,先标记上各个节点的下标,根节点下标为0,根节点的左孩子下表为。

2023-04-29 00:06:24 1446

原创 十三届蓝桥杯研究生组国赛-斐波那契数组

这里我们还需要确定斐波那契梳理的初始值,因为题目中并没有说初始值就是1,这个我们可以通过遍历的方式求解,我们将初始值从1取到1000000,然后根据这个初始值生成斐波那契数列,, 你可以执行任意次修改, 每次修改将数组中的某 个位置的元素修改为一个大于 0 的整数。将原数组修改为 (1,1,2,3,5)(1,1,2,3,5), 最少修改三个元素变成了一个斐波那契数组。然后我们比较控制台输入的数组和我们生成的正确斐波那契数组匹配的个数,取匹配个数最大的那一个即可。会变成一个斐波那契数组。

2023-04-28 16:10:56 2111

原创 布隆过滤器

布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。主要用于判断一个元素是否在一个集合中,0代表不存在某个数据,1代表存在某个数据。总结:一个元素一定不存在 或者 可能存在!存在一定的误判率{通过代码调节}

2023-04-19 23:31:37 1575

原创 CompletableFuture异步编排

Future是Java 5添加的类,用来描述一个异步计算的结果。你可以使用isDone方法检查计算是否完成,或者使用get阻塞住调用线程,直到计算完成返回结果,你也可以使用cancel方法停止任务的执行。在Java 8中, 新增加了一个包含50个方法左右的类:,提供了非常强大的Future的扩展功能,可以帮助我们简化异步编程的复杂性,提供了函数式编程的能力,可以通过回调的方式处理计算结果,并且提供了转换和组合的方法。类实现了Future接口,所以你还是可以像以前一样通过get。

2023-04-19 22:56:15 1353 1

原创 分布式锁+AOP实现缓存

*** 元注解:简单理解就是修饰注解的注解* @Target:用于描述注解的使用范围,简单理解就是当前注解可以用在什么地方* @Retention:表示注解的生命周期* SOURCE:只存在类文件中,在class字节码不存在* CLASS:存在到字节码文件中* RUNTIME:运行时* @Inherited:表示被GmallCache修饰的类的子类会不会继承GmallCache* @Documented:表明这个注解应该被javadoc工具记录,因此可悲javadoc类的工具文档化。

2023-04-19 22:47:45 1696

原创 分布式锁-Redisson

如果负责储存这个分布式锁的Redisson节点宕机以后,而且这个锁正好处于锁住的状态时,这个锁会出现锁死的状态。为了避免这种情况的发生,Redisson内部提供了一个监控锁的看门狗,它的作用是在Redisson实例被关闭前,不断的延长锁的有效期。随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的Java API并不能提供分布式锁的能力。超过这个时间后锁便自动解开了。

2023-04-19 00:12:41 1904

原创 Bellman-Ford算法--解决负权边问题

前阵子备考蓝桥杯的时候碰到了这个算法,感觉还挺有意思的,实现起来也非常简单。贝尔曼-福特算法(Bellman-Ford)是由理查德·贝尔曼(Richard Bellman) 和 莱斯特·福特 创立的,求解单源最短路径问题的一种算法。有时候这种算法也被称为 Moore-Bellman-Ford 算法,因为 Edward F. Moore 也为这个算法的发展做出了贡献。它的原理是对图进行V-1次松弛操作,得到所有可能的最短路径。其优于迪科斯彻算法。

2023-04-14 23:00:27 1487 1

原创 RSA解密-第十届Java研究生组E题

互质(互质的意思是最大公约数是1),这里我用暴力遍历出p和q,由于是填空题,n的数字很大,这个遍历求p和q花费了几秒钟的时间。=212353,同时你截获了别人发送的密文 C=20190324,请问,原文是多少?),Java中的BigInteger类型提供了求乘法逆元的API,我们直接调用就行。然后根据p和q的值求e,这个直接调用惩罚逆元的API即可。现在C、e、n都是已知的,我们直接利用公式。求解出原文,但是想求出e就得先求出p和q。组成了私钥,n,d 组成了公钥。=3 时,n=55,e=27。

2023-04-01 21:23:13 1031

原创 蓝桥杯-修改数组(并查集)

然后执行5和(5+1=6)的合并就行,到这里已经结束了,就不再画出5和6的合并结果了。没输入一个数字,我们就去查找它的根节点,把他根节点的值当作这个位置的最终结果。如果新的A_i仍在之前出现过,小明会持续给 加。也经过上述修改之后,显然A数组中就没有重复的整数了。的时候,直接把2的根节点值3当作本次的最终结果。,然后执行3和(3+1=4)的合并,结果如下右图。为例,初始的时候,我们让每个节点都指向自己。这样做的目的是,在下一次还输入。,数组中有可能有重复出现的整数。数组保存每个节点的父节点,使用。

2023-03-31 21:55:16 936

原创 十三届蓝桥杯研究生组J题-推导部分和(带权并查集)

对于本题来说,我们需要将区间的左端点从0开始,在计算部分和的时候我们不包括左端点的值,如果求1到2位置上的部分和时,若并查集结构为(1->2),此时1到2之间就只能有一个权值,即只能指导1或者2位置上的值,所以并查集的结构应改为(0->1->2)。查找节点x的根节点的时候,压缩x节点到根节点的路径,这样我们下一次查找x的根节点时候,至于要一步操作就能;的部分和,现在要将节点1所在的连通图与节点3所在的连通图合并,现在给出。的边权值表示的是2位置上的值,此时求1到2位置上的部分和时,即。

2023-03-31 18:58:02 816

原创 蓝桥杯-全球变暖(BFS/DFS)

由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。还有,如果初始的时候,一个陆地的周围都是海洋,这个陆地也是可以构成岛屿的,这个很关键,刚开始不知道这个,走了很多弯路,不过这个条件感觉有点歧义。统计不会被淹没的岛屿个数,每次搜索的时候,判断上下左右是不是都是陆地,若是,则这个岛屿不会被淹没,最后我们用岛屿总数-不会被淹没的岛屿个数即可。这里注意一下,被海洋覆盖之后,不会被淹淹没的岛屿数量可能会增加。记录该岛屿是否会被淹没,如果不会被淹没,设置。最后会被淹没的岛屿数量。

2023-03-30 23:36:42 629

原创 蓝桥杯-卡片换位(BFS)

我们首先获取开始时候A、B和空格的位置,我们从空格所在的位置开始向四个方向扩展,这里由于给定了2行3列共6个位置,其实扩展的次数也不是特别多,不过每次扩展的时候都需要判断扩展节点是否越界。每扩展到一个位置,我们需要将当前的空格节点与扩展节点所在位置上的数据进行互换,然后我们标记当前的地图,这里我用一个Node类存储当前的地图:包括当前空格所在位置。这里我们将两行拼接在一起,当作一个字符串就行,至于怎样从现在的字符串还原出原来二维数组的坐标,那也很简单,假设当前的空格位置为。这是个类似的,但更简单的游戏。

2023-03-29 23:33:31 743

原创 蓝桥杯-密码脱落(动态规划问题)

原因估计是你从左边补上和从右边补上可能对后面的结果也是有影响的,现在暂时还不清楚,不想看这个那就直接用下面的动态规划做吧。题目中问的是脱落了几个种子,也就是说从原来的回文串到现在剩下的串是少了几个字符变过来的。我们只需要在现在的字符串中找到最长回文子串,剩下的字符个数就等于已经脱落的字符个数,那么我们怎么求当前字符串的最大回文子串呢?你的任务是:给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子。快1点了,有点困了,上面的思路可能在细节方面有点欠缺,以后补上吧。

2023-03-29 00:49:27 891

原创 蓝桥杯-统计子矩阵(前缀和+双指针)

由于数组没有辅助,在R指针右移的过程中,L也一定会右移(否则求和会超出k的范围),这样我们将问题转化成了一个一维数组的子数组和。知道了上面这些基础知识,我们很容易的想到我们只需要枚举矩阵的左上角坐标和右下角的两个坐标就能计算出子矩阵的和了。上面的代码中前两重循环确定左上角坐标,后两重循环确定右下角坐标,然后用我们计算前缀和的公式去算就行。,如果求和结果大于K,那么L指针右移,统计当前R作为右边界的符合条件的数量为。看到这个矩阵求和的题目,我们要马上想到二维数组的前缀和。

2023-03-29 00:19:14 1454

原创 MinIO对象存储

MinIO是一个基于开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似NodeJSRedis或者MySQL。

2023-03-27 12:25:17 1057

原创 蓝桥杯-本质上升序列(动态规划问题)

在一个字符串中,如果取出若干个字符,将这些字符按照在字符串中的顺序排列后是单调递增的,则成为这个字符串中的一个单调递增子序列。小蓝发现,有些子序列虽然位置不同,但是字符序列是一样的,例如取第二个字符和最后一个字符可以取到。对于一个字符串,小蓝想知道,本质不同的递增子序列有多少个?的递增序列是重复的,我们应当减去这一部分,下面会给个实例。,本质不同的递增子序列有 21 个。结尾的本质不同递增子序列的个数,我们考虑。本质不同的递增子序列有多少个?结尾的递增子序列个数,又因为。,这是倒序,不满足条件。

2023-03-23 17:28:35 673

原创 跳跃-动态规划问题

例如,如果当前小蓝在第 3 行第 5 列,他下一步可以走到第 3 行第 6 列、第 3 行第 7 列、第 3 行第 8 列、第 4 行第 5 列、第 4 行第 6 列、第 4 行第 7 列、第 5 行第 5 列、第 55 行第 6 列、第 6 行第 5 列之一。在图中,有的位置有奖励,走上去即可获得,有的位置有惩罚,走上去就要接受惩罚。那我们可以由此建立一个搜索的坐标数组,每次从当前位置搜的时候我们就扩展坐标即可。开始时,小蓝站在方格图的左上角,即第 11 行第 11 列。输出一个整数,表示最大权值和。

2023-03-21 23:03:17 708

原创 重新排序-研究生组G题

我们的目的是计算出每个位置上的查询次数,也就是被加的次数,最后我们尽可能让数值比较大的数字被查询的次数最多就能满足最后的和最大。贪心思想:我们的目的是查询之和最大,那么我们直接将原数组a和前缀和数组s都进行排序,然后对应位置相乘求和,这样就保证了较大的数字被查询的次数多一点,和也就最大了。题目想要重新排列之后的数组,使得每个查询结果尽可能大,最终的结果为重新排列之后的最大和减去重新排列之前的最大和。原来的和为6+14=20, 重新排列为(1,4,5,2,3) 后和为10+14=24, 增 加了4。

2023-03-21 18:02:09 322

原创 蓝桥杯-染色时间(优先级队列)

实现,我们依次将染色的点加入队列中,每次取出染色耗时最短的点,然后依次将其上下左右四个位置的节点入队,节点的值加上出队的这个节点的染色时间,之后将上下左右这。后面的节点入队和出队类似,这样我们使用优先级队列,每次耗时最短的节点先出队,最后出队的节点就是耗时最久的,他的时间就是最终的输出结果。给定每个方格的染色时间, 在时刻 0 触发第一行第一列的方格染色, 请问 多长时间后整个棋盘完成染色。所以,我们其实每次都取得是染色时间最小的,然后再更新它周围没有被染色的节点的染色时间。, 分别表示棋盘的行数和列数。

2023-03-19 12:17:32 448

原创 简单0-1背包问题求解

这里f(0,w)表示不拿物品,价值肯定为0,f(k,0)表示被包装量为0,肯定装不下,所以第一行和第一列都是0,这里算几个关键的。我们有4件物品,背包容量为8,我们的目标是求在背包容量为8的前提下能装物品的最大价值。小明想知道再购买的物品总体积不超过V的情况下所能获得的最大价值为多少,请你帮他算算。输入第1行包含两个正整数N,V,表示商场物品的数量和小明的背包容量。,因为没拿第4件,所以背包容量没变,也不用再加第4件物品的价值。为:当背包容量为w,现在有k件物品可以偷,所能偷到的最大价值。

2023-03-15 00:04:08 505

原创 Dijkstra-单源最短路径算法

Dijkstra算法用来计算一个点到其他所有点的最短路径的算法,是一种单源最短路径算法。也就是说,只能计算起点只有一个的情况。算法的时间复杂度是On3O(n^3)On3,它不能处理存在负边权的情况。算法描述:设起点为s,dis[v]表示从s到v的最短路径长度disv∞v≠s;i

2023-03-14 20:52:35 1407

原创 Floyd算法求解最短路径

Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德。核心思路:通过一个图的权值矩阵求出它的每两点间的最短路径矩阵。算法过程:从任意一条单边路径开始。左右两点之间的距离是边的权,如果两点之间没有边相连,则权为无穷大。对于每一对顶点u和v,看是否存在一个顶点w使得从u到w再到v比已知的路径更短,如果更短,则更新它。上述概念来源于百度百科。

2023-03-13 21:49:48 8215 12

原创 DFS深度优先搜索解决迷宫问题

上一篇博客讲解了BFS广度优先搜索求解迷宫问题,今天试试DFS深度优先搜索。

2023-03-13 13:37:11 965

ebusiness.zip

技术:springboot+Thymeleaf+MyBatis 1.后台管理子系统 后台管理子系统要求管理员登录成功后,才能对商品进行管理,包括添加商品、查询商品、修改商品以及删除商品。除商品管理外,管理员还需要对商品类型、注册用户以及用户的订单等进行管理。 2.电子商务子系统 1)非注册用户 非注册用户或未登录用户具有的功能如下:浏览首页、查看商品详情以及搜索商品的功能。 2)用户 成功登录的用户除具有未登录用户具有的功能外,还具有购买商品、查看购物车、收藏商品、查看订单、查看收藏以及查看用户个人信息的功能。

2021-04-28

pdman2.2.0.zip

PDMan是PowerDesigner的一个优秀的替代方案.特点如下: 免费使用 功能简洁,去除晦涩难懂的设置,化繁为简,实用为上,上手非常容易。 Windows,Mac,Linux三个平台均可以使用(敲黑板,重点)。 自带参考案例,学习容易。新建一个项目,完全不需要做任何配置。 对开发极其友好,可生成各种数据库以及编程语言的模型类。 目前系统默认实现了MySQL,Oracle,Java的代码自动生成,并且带注释。其他类型的数据库或语言,只需要添加相应的“数据库”并设置好相应的doT模板就可以了。 一键自动生成数据表结构文档,方便客户交付。 数据库 版本管理 以及 数据库同步 功能,解决数据库版本管理的一大痛点。 生成数据库脚本以及提供导出功能。

2021-04-18

js实现MD5加密算法.zip

前端md5加密算法,附带调用方式

2021-04-14

PotPlayerSetup64 (1).exe

potplayer视频播放器,可播放avi格式视频

2021-04-10

Postman-win64-8.1.0-Setup.exe

在我们平时开发中,特别是需要与接口打交道时,无论是写接口还是用接口,拿到接口后肯定都得提前测试一下,这样的话就非常需要有一个比较给力的Http请求模拟工具,现在流行的这种工具也挺多的,像火狐浏览器插件-RESTClient,Chrome浏览器插件-Postman等等。这里主要介绍一下Postman。

2021-04-08

otp_win64_23.2.6.exe

Erlang是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。Erlang问世于1987年,经过十年的发展,于1998年发布开源版本。Erlang是运行于虚拟机的解释性语言,但是现在也包含有乌普萨拉大学高性能Erlang计划(HiPE)开发的本地代码编译器,自R11B-4版本开始,Erlang也开始支持脚本式解释器。在编程范型上,Erlang属于多重范型编程语言,涵盖函数式、并发式及分布式。顺序执行的Erlang是一个及早求值,单次赋值和动态类型的函数式编程语言。

2021-04-08

rabbitmq-server-3.8.9.zip

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。

2021-04-08

ActiveMQ.zip

Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。

2021-04-08

summernote.zip

Summernote 是一个简单灵活的所见即所得的 HTML 在线编辑器,基于 jQuery 和 Bootstrap 构建,支持快捷键操作,提供大量可定制的选项。

2021-04-08

mongodb-compass-1.26.0-win32-x64.zip

MongoDB的图形管理界面工具MongoDB Compass

2021-04-01

RedisClient.zip

一款用Java开发的Redis客户端Redis Client

2021-04-01

rest-client.zip

Wisdom RESTClient 一款自动化测试REST API的工具,它可以自动化测试RESTful API并生成精美的测试报告,同时基于测试过的历史API,可以生成精美的RESTful API文档。 使用前请安装jdk

2021-03-31

echarts.zip

ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求。 ECharts 遵循 Apache-2.0 开源协议,免费商用。 ECharts 兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等)及兼容多种设备,可随时随地任性展示。

2021-03-31

zTree_v3.zip

zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。

2021-03-21

百度文件上传插件.zip

百度文件上传插件

2021-03-17

printThis.zip

printThis前端打印插件

2021-03-16

bootstrap-table.zip

bootstrap-table表格插件

2021-03-16

bootstrap-table-examples.zip

bootstrap-table插件的示例代码

2021-03-16

bootstrap-fileinput文件上传插件.zip

bootstrap-fileinput是一款非常优秀的HTML5文件上传插件,支持文件预览、多选等一系列特性。一款非常优秀的HTML5文件上传插件,支持bootstrap 3.x 和4.x版本,具有非常多的特性:多文件选择。这个插件能最简单的帮你完成文件上传功能,且使用bootstrap样式。还支持多种文件的预览,images, text, html, video, audio, flash。另外还支持ajax方式上传文件,可以看到上传进度。支持拖拽的方式添加和删除文件。

2021-03-16

bootstrap-suggest-plugin.zip

这是一个基于 bootstrap 按钮式下拉菜单组件的搜索建议插件,必须使用于按钮式下拉菜单组件上

2021-03-16

自编码器实战(基于FashionMNIST数据集)

自编码器算法非常简单,实现方便,训练也较为稳定,相对于PCA算法,神经网络的强大表达能力可以学习输入的高层抽象的隐藏特征向量z,同时也能够基于z重建出输入。这里基于FashionMNIST数据集进行图片重建实战。 说明文档:https://blog.csdn.net/qq_43753724/article/details/125862444?spm=1001.2014.3001.5501

2022-07-18

数码产品类电商小程序项目

微信小程序案例,仅供学习使用。页面如下: [1]数码商城首页:数码商城包含顶部的轮播图、中间商品列表部分和底部tabBar菜单。 [2]商品分类页:当用户点击左边的分类区域后,在右侧按照分类显示对应的商品。 [3]商品详情页:通过商城首页和分类页的点击事件跳转而来,根据商城首页和分类页传递过来的{{index}}字段来调用正确的商品信息,用户在此界面可将商品添加进购物车。 [4]购物车界面:商品数量的修改、删除某件商品、清空购物车等操作。 [5]支付页:显示购买的商品数量、设置配送时间、备注以及付款总额。 [6]个人主页:查看个人信息。

2022-03-31

cifar10数据集.zip

cifar10数据集

2021-11-14

阿里云服务端上传SDK下载

阿里云服务端上传SDK

2021-11-08

wiznote-desktop-0.1.38-win-x64.exe

为知笔记windows安装包

2021-10-25

Mycat分库分表+springcloud微服务小案例源码.zip

模拟电商项目中的商品管理、订单管理、基础信息管理、日志管理模块,对整个系统中的数据表进行分片操作,将根据不同的业务需求,采用不同的分片方式 。 技术选型: - SpringBoot - SpringCloud - SpringMVC - Mybatis - SpringDataRedis - MySQL - Redis - Lombok

2021-10-20

Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz

mycat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。

2021-10-04

jmeter压力测试工具.zip

apache-jmeter-5.2.tgz

2021-09-08

sentinel dashboard.zip

sentinel-dashboard-1.7.2.jar Sentinel Dashboard一个简单的仪表板应用程序,您可以在该应用程序上实时监控客户端并配置规则。

2021-09-08

libiconv.zip

iconv命令可以将一种已知的字符集文件转换成另一种已知的字符集文件。 它的作用是在多种国际编码格式之间进行文本内码的转换。

2021-09-02

texstudio-3.1.2-win-qt5.zip

TeXstudio 是一个用于创建 LaTeX 文档的集成书写环境。我们的目标是让编写 LaTeX 尽可能简单和舒适。因此,TeXstudio 具有许多功能,例如语法突出显示、集成查看器、参考检查和各种助手。

2021-08-21

consul_1.10.1_windows(exe)

Consul是HashiCorp公司退出的开源工具,用于实现分布式系统的服务发现与配置。

2021-08-19

前后端分离博客项目.zip

一个前后端分离的博客小项目,为了适合后续的拓展和微服务化体系等,选择SpringBoot作为后端开发框架。然后数据层,我们常用的是Mybatis,易上手,方便维护。但是单表操作比较困难,特别是添加字段或减少字段的时候,比较繁琐,所以这里我推荐使用Mybatis Plus(mp.baomidou.com/),为简化开发而生,只… CRUD 操作,从而节省大量时间。 作为一个项目骨架,权限也是我们不能忽略的,Shiro配置简单,使用也简单,所以使用Shiro作为我们的的权限。 然后因为前后端分离,所以我们使用jwt作为我们用户身份凭证。 技术栈: SpringBoot mybatis plus shiro lombok hibernate validatior jwt vue element-ui axios mavon-editor markdown-it github-markdown-css

2021-08-11

前后端分离小项目(员工管理).zip

1、技术选型: 前端: vue + axios 后端: springboot + mybatis + mysql + tomcat + Redis 2、需求分析: 用户模块 a.用户登录 b.用户注册 c.验证码实现 d.欢迎xx用户展示 e.安全退出 f.员工列表展示 员工模块 g.员工添加 h.员工删除 i.员工修改 j.员工列表加入redis缓存实现 只能当作前后端分离的基础入门项目,因为这里并没有使用组件,只是演示下前后端分离项目的开发过程。

2021-08-04

springboot_thymeleaf_shiro.zip

shiro整合springboot之thymeleaf权限控制

2021-07-05

springboot_jsp_shiro.zip

shiro整合springboot项目实战

2021-07-05

谷歌浏览器(google).rar

Google Chrome是一款由Google公司开发的网页浏览器,该浏览器基于其他开源软件撰写,包括WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

2021-05-23

BANDIZIP-SETUP-STD-X64.EXE

Bandizip 是一款压缩软件,它支持WinZip、7-Zip 和 WinRAR 以及其它压缩格式。它拥有非常快速的压缩和解压缩的算法,适用于多核心压缩、快速拖放、高速压缩等功能。软件授权: 免费软件(家庭和办公室 100% 免费)。

2021-05-23

OfficeFileAPI.chm

Office文件API是一个非可视化的跨平台的。用于文档处理的NET库。您可以使用富文本文档、电子表格或报告,绘制条形码,创建新的或编辑现有的PDF文档,转换不同的单元并直接从代码压缩数据,而不涉及任何UI组件,如富编辑控件或电子表格。该程序集可以用于针对各种平台的应用程序(ASP。净值,asp。网络MVC,WinForms和WPF)。

2021-05-17

傲梅分区助手(磁盘分区、系统迁移等等).zip

分区助手是一款免费、专业级的无损分区工具。不仅提供简单、易用的磁盘分区管理操作。它也能迁移系统到固态硬盘、实现硬盘克隆,是一个不可多得的硬盘分区工具软件。

2021-05-01

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

TA关注的人

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