background picture of the home page

Java炒饭

nacos部署

本文介绍了Nacos服务中心的部署步骤。首先在Docker中启动MySQL,并在远程数据库执行Nacos提供的SQL文件以初始化表结构。随后,配置Nacos环境变量文件`custom.env`,设置数据库连接信息,包括IP、端口、用户名、密码及参数。通过`docker run`命令拉取并运行Nacos镜像,挂载配置文件并开放必要端口(8848、9849、9848)。部署后需检查容器日志,确保无数据库连接错误,注意虚拟机重启后需重新启动Docker服务和数据库。最后,访问`http://yourip:8848/nacos`,使用默认账号密码(nacos/nacos)登录,确认页面正常显示即完成部署。

thumbnail of the cover of the post

P47 全排列Ⅱ

该题要求生成给定数组的全排列,但数组中可能包含重复元素,因此需要避免产生重复的排列。解决方案是先对数组进行排序,使相同元素相邻,然后在深度优先搜索(DFS)过程中进行剪枝:当当前元素与前一个元素相同,且前一个元素尚未被使用时,跳过当前元素,以确保相同元素的相对顺序固定,从而避免重复排列。使用一个标记数组 `st` 记录每个元素是否已被选入当前路径。通过回溯法枚举所有不重复的排列,最终返回所有唯一排列结果。算法时间复杂度为 O(n! / ∏(k_i!)),其中 k_i 是各重复元素的重复次数。

thumbnail of the cover of the post

P46 全排列

本文介绍了一道关于全排列的算法题,使用深度优先搜索(DFS)解决。给定一个无重复数字的数组,要求返回所有可能的排列组合。作者通过递归实现DFS,利用标记数组`st`记录每个元素是否已被选入当前路径,避免重复选择。每次递归到达叶子节点时,将当前排列加入结果集。代码结构清晰,核心在于状态的回溯:每层递归尝试未使用的元素,递归返回后恢复状态。作者提到在LeetCode上不推荐使用全局变量,因此所有状态均通过参数传递,与竞赛编程习惯略有不同,初时稍感不适应。该解法时间复杂度为O(n!),适用于输入规模较小的情况。

thumbnail of the cover of the post