自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [补题记录] StarryCoding 入门教育赛3 E.夜游江滩

宝和桶子晚上吃太饱没事做决定到江边散步减肥,他们在江滩的起始点(位置为。的距离,他们想知道走到尽头一共有多少种走法。对于每组测试样例,一个整数表示结果。),由于他们腿特别长,一步可以走。),要走到江滩的尽头(位置为。每次转移时间复杂度为。

2024-05-10 21:25:58 780

原创 [补题记录] StarryCoding 入门教育赛3 D.电弧陷阱

显然电弧陷阱会将整个矩阵分成好几部分连通区域,我们只需要在遍历矩阵的时候判断一下当前位置,是否可以作为出发点即可开始。和桶子在打派的时候被一个艾许的电弧陷阱控在原地动弹不得,于是他们想办法找出哪些地方是可以去的,哪些地方是不能去的。电弧陷阱会使得它的上下左右四个方向充满电弧,走到这些地方就会被困住,不能再行动。容易出错的地方在于,如果选择将 # 周围的点修改为其他字符做标记,那么一定要在。类似这种给一个矩阵,然后有些位置不能去、被挡住、有传送门之类的,一般都需要用到。此时一个连通部分的答案 =

2024-05-10 21:20:51 331

原创 推荐服务端开发小白练手的三个实战项目

按照下面的项目顺序来进行开发,可以循序渐进的掌握开发流程和技术架构,更有利于小白进行开发技术总结和归纳。

2024-05-03 13:08:54 997 1

原创 [补题记录] Educational Codeforces Round 160 (Rated for Div. 2)(A~C)

我们只需要在处理完第 i 位后,将第 i 位多余的 1,进位到 i + 1 位,这代表着 i + 1 位可以的得到这么多的补充,这样就可以保证,某一位一定是基于最优的情况下去判断的。那么就可以先保证前面的字符相反,当遇到某个字符,没有足够的 0 或 1 可以填补时,就说明最长的 t 就到这了。一个基础的想法是,要满足 w 能求和出来,则 w 的每一位为 1 的位置,集合中必须要有数在这一位为 1。操作后获得字符串 t,问最小的操作代价,能使得 t 的每一位不等于 s 的每一位。

2023-12-19 10:37:04 472

原创 [补题记录] Complete the Permutation(贪心、set)

而就算前后两个区间右端点相同,由于我们在前面的区间里已经选完了可以选择的最小的偶数,因此后面这个区间肯定就是永远无法选到互异的偶数的,比如:[1, 3]、[1, 7]、[3, 7]、[5, 7]。的情况,这意味着:明明这个区间可以选到一个很大的偶数,大到不会影响其他所有区间,而现在却因为先选择了可以选择的最小偶数,导致占用了排在它之后的区间唯一可以选择的偶数。先选择一个区间中最小的偶数,然后在其之后的区间也同样选择区间中还没有被选过的偶数中最小的哪个。给出一个长度为 N 的序列,其中的元素都是奇数。

2023-11-22 21:27:14 251

原创 [补题记录] Coolbits(2019陕西省赛)

给出 N 个区间,可以从每个区间中选择一个数,问选出的 N 个数的按位与的值最大是多少?假设现在是第 i 位,那么是否能在所有区间中都找到一个数 Xi,它的第 i 位为 1。只要能找到这个数 Xi,那么就一定比 i 后面的低位全为带来的收益都要大。那么我们如何找到这个数,并判断是否符合条件呢?

2023-11-21 15:15:33 149

原创 [补题记录] Codeforces Round 906 (Div. 2)(A~D)

考虑到,若当前 i 之前的位置,都已经与对称位置不同,那么在 [i, n - i + 1] 中任意位置插入,都不会对前面的插入有影响,因此我们直接 L、R 双指针判断即可。需要考虑的是:怎么知道用 1 连接完它能连接的城市后,就已经是最大能连接的数量了。你可以将 "01" 插入 S 的任意位置(也可以不插),位置可以从 0 开始。因为每次插入的是 01,因此若一开始 01 数量不相等,直接输出 -1。很容易想到,当我们使用城市 1 去连接其他城市时,更加容易成功。给出 1 个 01 字符串 S。

2023-11-02 15:24:07 148 1

原创 [SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务

既然要运行 java 项目,那么一个 jdk 也是必不可少的。(我个人就是忘了装 jdk,debug 了数小时没有部署成功)Dockerfile 文件构建镜像,那么 docker-compose 文件就是根据镜像构建容器。如上图所示:开启了 10086、8091、8081、8080、8848 端口。考虑到微服务其实会占用很大的内存,所以我。然后部署,服务加载的速度就变得很快了。前文准备虚拟机环境中已有介绍。(1)访问 nacos。

2023-11-01 22:10:16 1182

原创 [SpringCloud] Feign 与 Gateway 简介

Feign 是 Netflix 开发的声明式、模板化的 Http 客户端,Feign 可以帮助我们更快捷、优雅地调用Http API。Feign 是在 Ribbon 的基础上进行了一次改进,是一个使用起来更加方便的 HTTP 客户端。SpringCloud 对 Feign 进行了增强,使 Feign 支持了 Spring MVC 注解,并整合了 Ribbon 和 Eureka,集成了服务发现和负载均衡,从而让 Feign 的使用更加方便。

2023-10-31 11:37:16 1911

原创 [SpringCloud] Nacos 简介

前面说到,service 启动会先读取 Nacos 的配置文件,那么这里就有个问题,service 要怎么知道 Nacos 配置文件的地址呢?实际开发中,会有很多的微服务,当需要修改配置的时候,得一个一个地去修改配置文件,非常麻烦,并且修改完成后还需要重启服务。在企业中,更强调高可用性,Nacos 一定要做成集群的模式,由负载均衡器将请求发送到不同的 Nacos 节点。在实际开发中,通常会有不同的生产环境,对于某个服务,可以为其分配到指定的命名空间,这样。为了解决这个问题,Nacos 参考了现实中的方法,

2023-10-28 19:35:10 372

原创 [补题记录] Codeforces Round 904 (Div. 2)(C)

既然要求方案内区间是相交的,所以我们可以使用优先队列,队列大小就是最大值,出队入队过程中又可以维护 1 或者 m 的大小。现在给出 N 个区间 [l, r],当选择某个区间时,可以让该区间内的数都 + 1。最核心的一点就是:不相交的两个区间,无法为答案带来任何贡献。对于每一种选择方案,其代价为:最大的数 - 最小的数。有一个长度为 M 的序列,初始值都为 0。问如何选择区间,使得代价最大。

2023-10-28 15:53:14 156

原创 [SpringCloud] Eureka 与 Ribbon 简介

Ribbon 默认是采用懒加载,即第一次访问时才会去创建 LoadBalanceClient,请求时间会很长。Ribbon 的负载均衡规则是一个叫做 IRule 的接口来定义的,每一个子接口都是一种规则。(比如获取 UserService 的服务列表,内含 2 个服务),然后在。默认情况下,使用的是 ZoneAvoidanceRule。上,可以复制多几份 User 的运行配置。通过 2 个案例,学习如何实现服务拆分。这一步骤跟前面的是一样的。”,我们来学习服务拉取。服务发现就是服务拉取。

2023-10-25 22:45:57 1517

原创 [补题记录] Atcoder Beginner Contest 325(E、F)

因此,我们可以把 K2 当作 dp 表示的值,维护 K1 不超过限制的情况下,K2 的最少数量。有一个二维矩阵,D[i][j] 表示从 i 到 j 的距离。再想到,如果知道了某个状态下的 K[1]、K[2],其实就能求出这个状态下的价值。通常我们在背包中,dp 表示最大价值,但在这个题中,多了一个 K 需要维护。你可以选择在某个城市 i 换乘火车,但不能再从火车换乘汽车。问是否能保证 N 条传输带都能被完整监控,若能,最小代价是多少。最重要的是理解这句话,然后做两个反向的最短🦌即可。

2023-10-24 11:35:32 144 1

原创 [Spring] SpringBoot2 简介(二)—— 高级配置

需求:自定义 redis-starter,要求当导入 Jedis 依赖时,SpringBoot 自动创建 Jedis 的 Bean。SpringBoot 自带监控功能 Actuator,可以帮助实现对程序内部运行情况监控,比如监控状况、 Bean 加载情况、配置属性、日志信息等。可以通过监控信息来排除故障。

2023-10-23 20:48:33 273

原创 [补题记录] Atcoder Beginner Contest 293(E)

一开始想等比数列求和,但是 m 不保证是质数,所以不能用。假设 dp[x] 表示,前 x 个数求和的值。给出 A、X、M,求。

2023-10-21 20:07:06 219 1

原创 [Spring] SpringBoot2 简介(一)—— 基础配置

(1)配置繁琐Spring 的组件代码是轻量级的,但是它的配置文件是重量级的。在思考 Spring 特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写程序的时间。(2)依赖繁琐自己导入 maven 很可能会导致依赖冲突,还得自行判断版本号。YAML全称是YAML Ain't Markup Language。YAML是一种直观的能够被电脑识别的的数据数据序列化格式;容易被人类阅读,容易和脚本语言交互,可以被支持 YAML 库的不同的编程语言程序导入;

2023-10-21 16:21:53 1188

原创 [SQL | MyBatis] MyBatis 简介

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

2023-10-17 21:48:31 650

原创 [补题记录] Atcoder Beginner Contest 324(E、F)

但是一一匹配肯定是超时的,考虑到遍历过程中我们知道 pre[i] 和 suf[i],就能算出一个值:len(T) - pre[i]。这个值代表着,只要后缀长度大于等于它的,都能作为一次答案。那么对于一个二元组(i,j),只要 pre[i] + suf[j] >= len(T),就能作为一种方案。现在从 N 个字符串中任取 2 个拼接,如果拼接后的字符串的子序列包含 T 字符串,则这是一种合法拼接。假设字符串 S[i] 在 T 中的前缀长度为 pre[i],在 T 中的后缀长度为 suf[i]。

2023-10-17 14:59:23 131

原创 [Spring] SpringMVC 简介(三)

默认情况下,未指定对哪些资源进行拦截,则会拦截所有交给 DispatcherServlet 的请求,比如:对 index 的访问,对 controller 的访问。@RequestBody 可以获取请求体,在控制器方法设置一个形参,使用 @RequestBody 进行标识,当前请求的请求体就会为当前注解所标识的形参赋值。还需要注意,path = " /* ",表示的是,拦截 / 后的一层目录的请求,也就是说 /abc/* 这类请求是无法拦截的。执行另外 2 个方法,是按照配置的逆序来执行。

2023-10-15 21:33:43 731 1

原创 [补题记录] Atcoder Beginner Contest 295(E)

也就是说,如果 0 的数量(设为 zero)zero < need,那么就永远不可能满足 [K, N] 中的数都 >= i,概率为 0;反之,如果 need <= 0,就一定满足 [K, N] 中的数都 >= i,概率为 1;但是我们不知道 A[k] 该怎么取值,所以还需要将 P(A[k] >= i) 转换为:后面 N - K + 1 个数 >= i 的概率,显然 [K, N] 中的数不会都 >= i,而一般的情况就是:[K, N] 中的前一部分的数 < i、后一部分的数 >= i。

2023-10-14 17:11:49 175

原创 [补题记录] Atcoder Beginner Contest 294(E)

给总长度 L,计划 1 有 N 步,计划 2 有 M 步,每一步给出(v,l),意为在接下来的 l 长度中,每一单位的值都为 v。当我们处于某一个状态时,一定是当前两者的总路程中取一个小的,以及上一步计划的总路程里取一个大的,相减就是应该加上的答案。我们可以维护当前走到了计划的第几步、计划的总路程、上一步计划的总路程。问这两个计划,有多少个单位的值是相同的。模拟题,主要是要想清楚每次如何更新答案。我们将其当作一个铺路的过程。

2023-10-14 15:09:48 129

原创 [Spring] SpringMVC 简介(二)

RESTful 是一种设计风格,目前市面上使用较为广泛。ReStateTransfer,表现层资源状态转移。

2023-10-13 16:02:36 629 1

原创 [Spring] SpringMVC 简介(一)

SpringMVC 封装了 Servlet。(1)MVCM:Model,模型层,指工程中的JavaBean,作用是处理数据一类称为实体类Bean:专门存储业务数据的,如 Student、User 等一类称为业务处理 Bean:指 Service 或 Dao 对象,专门用于处理业务逻辑和数据访问。V:View,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据C:Controller,控制层,指工程中的servlet,作用是接收请求和响应浏览器(2)工作流程。

2023-10-11 20:53:27 366

原创 [补题记录] Atcoder Beginner Contest 323(E、F)

如果我们能求出从 X - T[1] + 1 到 X 的每一时刻开始时,恰好播放完上一首歌的概率,那么就可以将这 T[1] 个时刻加起来,再除以 N,就是从 X 开始,播放第一首歌的概率。对于第二句话,我们可以将目标点 C 都换到上半轴,那么 A 只需要移动到 (0, -1)、(-1, 0)、(1, 0) 即可去到推箱子的最佳位置。因此,dp[i] 表示,第 i 秒开始时,上一首歌结束,下一首歌准备开始播放的概率。当 i > T[j] 时,就可以把当前第 j 首歌播放的概率累加到 dp[i] 上。

2023-10-08 18:11:21 141

原创 [补题记录] Atcoder Beginner Contest 297(F)

对于某个最小矩形,构成它的摆放方法有很多种,也就是说,如果我们能算出一个大小为 i * j 的矩形,他有 X 种合法的摆放方案,再用合法方案数乘上该矩形的面积(即 X * i * j),就是对应的贡献。位置数 * 矩形面积(i * j)* 合法方案数,就是一个矩形 i * j 带来的贡献,遍历 H、W,求出每一种(i,j)的贡献,累加,就是最后的总贡献。所以现在的目的就明确了,求出 C1、C2、C3、C4 的并集,得到非法方案数,再用 i * j 的总方案数减去非法方案数,就能算出合法方案数。

2023-10-07 22:54:25 147

原创 [补题记录] Atcoder Beginner Contest 298(E)

现有 N 个点,初始时,A 位于点 a,B 位于点 b。假设 A 或 B 现在在点 X,每投出一个点数 i,则 A 或 B 会走到 min(X + i, N),先走到 N 的获胜。dp[i][j][0] 的前一步是由 B 做出的,并且 A 在点 i 的状态,是由前一步的所有 A 可能到的点的状态转移过来的。这种形式的状态转移方程,意为:我知道了后几个点的期望,可以反推从前面的点出发,然后获胜的期望。,A 投出 [1, P] 点数的概率相等,B投出 [1, Q] 点数的概率相等。:A 在 i,B 在 j,

2023-10-07 10:33:11 81

原创 [Spring] @Bean 修饰方法时如何注入参数

(4-1)@Bean 注解的方法,其返回值就是一个 <bean> 对象,并且注册到了 IOC 容器中。

2023-10-06 15:57:36 3176 2

原创 [Spring] Spring5——事务简介

(1)事务是数据库操作最基本单元:逻辑上对于一组操作,要么都成功,如果有一个失败所有操作都失败。(1)由于异常一般出现在业务逻辑处理,所以一般将事务管理放在 service 层编程式事务管理(一般不用),前面的模拟异常就是使用编程式;(编程式事务管理会造成代码冗余,一定要用编程式的话,可以使用 filter 来全局捕获异常)声明式事务管理(一般使用);基于 xml 配置文件方式;(一般不用)基于注解方式;(一般使用)(4)在 Spring 进行声明式事务管理时,需要使用 AOP 原理。

2023-10-06 09:57:47 133

原创 [补题记录] Atcoder Beginner Contest 322(E)

考虑 K = 5 的情况,就会有 dp[i][A1][A2][A3][A4][A5];再考虑一个参数时,我们是如何得到答案的,显然是通过维护 dp[i][0] ~ dp[i][P] 的最小值来的得到答案 dp[n][P]。那么我们就可以这样做,将参数 [A1][A2][A3] 视作一系列 P + 1 进制的数(因为需要到达 P),如:[0][0][0] ~ [5][5][5] 就是一系列 3 位的 6 进制数。但是现在有 K 个参数,也就是说,我们无法确定 dp 数组的维度。

2023-10-06 08:45:23 243

原创 [Spring] Spring5——JdbcTemplate 简介

Spring 框架对 JDBC 进行封装,形成一个 Spring 风格的模板,使用 JdbcTemplate 方便实现对数据库操作。

2023-10-05 14:15:39 154

原创 [Spring] Spring5——AOP 简介

(1)AOP 就是面向切面编程利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低提高程序的可重用性,同时提高了开发的效率。(2)简单来说,就是不需要修改源代码,但依然可以为原来的代码添加新功能比如在登录功能的基础上,添加一个权限检查的模块。通过某些配置,将这个模块(或部分实现代码)添加到登录功能上。

2023-10-04 22:45:51 858 1

原创 [Spring] Spring5——IOC 简介(二)

手动装配:通过 <property name="" value="">、外部/内部 Bean、等等,来给属性值赋值,就是手动装配。自动装配:根据指定的装配规则(属性名称或者属性类型),Spring 自动将匹配的属性值进行注入。(1)bean 标签属性 autowire,配置自动装配autowire = "byName",表示根据属性名称注入,要求bean 的 id 值和目标属性的属性名一致;

2023-10-01 15:42:41 208

原创 [Spring] Spring5——IOC简介(一)

(1)控制反转(Inversion of Control),把对象创建(new)和对象之间的调用(.function()),交给 Spring 管理;(2)使用 IOC 的目的:降低耦合度;(3)IOC 底层原理:xml 解析、工厂模式、反射;反射:通过获取类的字节码文件(.class),来操作类方法是指两种操作:创建对象、属性注入。(1)Spring 创建对象;xml 配置创建对象(2)Spring 属性注入对于一个类属性(private int num;

2023-09-27 18:10:15 101

原创 [补题记录] Atcoder Beginner Contest 299(E)

这道题的坑点在于,题目没有很清楚地说明,只要有一个黑色点与 p 最短句路为 d 即可。因此很容易误认为所有距离 p 为 d 的点都要染黑。再次 bfs,判断是否有一个距离为 d 的且不为白色的点,有则 return true,否则这个要求不能满足,输出 No。给出 N(1

2023-09-26 10:32:31 149

原创 [补题记录] Atcoder Beginner Contest 321(E)

不断往 X 的父节点考虑,求与 X 对称的点的子树答案,直到 X = 1 或者 K == 0,此时若 K == 0,则说明当前的 X 作为单独一个点的答案。有一颗 N 个节点的完全二叉树,现在给出节点 X,一个整数 K,问举例节点 X 的长度为 K 的点有多少个?首先考虑以节点 X 为根的子树,求出往下 K 层的左端点和右端点,再与 N 比较大小即可求出这颗子树的答案;其次考虑与 X 同一个父亲的节点,按照前面求子树的方法求它的答案;

2023-09-25 15:14:51 141

原创 [Java | Web] JavaWeb——JSON与AJAX简介

客户端和服务器都需要使用 JSON。在客户端中以 JS 为例子使用 JSON。(1)json 的定义json 是由键值对组成,并且由 { } 包围。// json的定义"key5" : {},"key6_1?1" : 14,}, {}]value 可以是:普通类型、数组、json、数组套json、等等。(2)json 的访问json 本身是一个对象,json 中的 key 可以理解为是对象中的一个属性。json 对象属性的访问也是使用点运算符。// json的定义。

2023-09-24 17:42:41 244

原创 [补题记录] Atcoder Beginner Contest 300(E)

给一个 N,然后投色子,筛到每个数(即 1 - 6)的概率均等,把所筛到的数一个个相乘,直到 T = N 的概率是多少。dp[x] 表示,从 x 到 N 的概率是多少。

2023-09-22 21:46:31 123

原创 [Java | Web] JavaWeb——Filter 过滤器

Filter 过滤器是 JavaWeb 的三大组件之一。三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器。Filter 过滤器是 JavaEE 的规范,也就是接口。FilterConfig 类,是 Filter 过滤器的配置文件类。Tomcat 每次创建 Filter 时,也会同时创建一个 FilterConfig 类,包含了 Filter 配置文件的的配置信息。

2023-09-22 18:23:31 254

原创 [补题记录] Atcoder Beginner Contest 309(E)

用 next[i] 表示从 i 出发,还能覆盖多少代保险。假设 x 是 i 的下一个节点,那么 next[x] = Max(next[x], next[i] - 1)。一个家庭有 N 个人,根节点为 1,给出 2 ~ N 的父节点。一共购买 M 次保险,每次给出 Xi Yi,使得 Xi 和它之后的 Yi 代人都有保险。问一共有多少人获得保险?该解法的核心思想就是,当前处理的点,有且仅有一条回到根节点的路线,也因此可以将其当作一维前缀和来处理。只要当前节点的 next >= 0,就能让 ans ++。

2023-09-21 13:01:50 63

原创 [补题记录] Atcoder Beginner Contest 317(E)

有四种箭头 ^、>、<、v 和一种障碍 #,箭头所指向的方向回生成一路障碍直到遇到另一个障碍或者箭头。,随后遍历所有箭头和障碍,根据箭头方向在某行或者某列上,二分查找。显然难点在于如何生成箭头的障碍。我们可以为每一列和每一行都记录上。找到区间后维护一个二维前缀和。问 S 到 G 的最短路径。

2023-09-21 10:05:53 68

空空如也

空空如也

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

TA关注的人

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