一、jupyter notebook修改打开的文件夹
jupyter notebook --notebook-dir="文件的路径"
二、cmd和powershell的区别
1. CMD(命令提示符)
CMD(Command Prompt,全称 cmd.exe)是 Windows 早期的命令行界面,类似于 MS-DOS,主要用于执行批处理命令(如 dir、cd、copy 等)。
特点:
✅ 语法简单:基于 DOS 传统命令,易学易用。
✅ 轻量级:适合执行简单的文件操作、进程管理等。
✅ 兼容性强:很多旧的 Windows 程序仍然依赖 CMD。
❌ 功能有限:不支持复杂的脚本编程,变量处理能力弱。
❌ 不支持对象:CMD 只能处理文本,无法像 PowerShell 那样操作对象。
2. PowerShell
PowerShell 是 Microsoft 开发的一种高级命令行工具,它比 CMD 强大得多。
不仅支持 CMD 命令,还基于 .NET 框架,能执行复杂的脚本、对象处理、自动化任务。
特点:
✅ 支持面向对象编程:可以直接操作 .NET 对象,而不是仅仅处理文本。
✅ 功能强大:可以进行系统管理、网络管理、远程操作等。
✅ 脚本能力强:支持逻辑判断、循环、函数等,适合编写自动化脚本。
✅ 跨平台:最新的 PowerShell Core 甚至可以在 Linux 和 macOS 运行。
❌ 语法较复杂:比 CMD 需要更多学习成本。
3. CMD 和 PowerShell 的主要区别
CMD 适合基础操作,而 PowerShell 是 Windows 下的强大自动化工具!
三、修改jre版本的快速方法
powershell里面下载scoop
使用scoop来切换java version
安装scoop:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex
添加Java软件源
scoop bucket add java
安装JRE版本
安装jre1.8
scoop insta;; oraclejre8```
切换版本
scoop reset openjdk21
scoop reset openjdk8
四、Maven
Maven 是一个用于 Java 项目的构建(build)、依赖管理(dependency management) 和项目管理(project management) 的工具。它由 Apache 组织开发,主要用于 Java 生态系统中的项目,但也可以用于其他语言。
1. 依赖管理(自动下载和管理第三方库 📦)
你不需要手动下载 .jar 文件,把它们放到 lib/ 目录,或者担心版本冲突。
只需在 pom.xml 里添加依赖,Maven 会自动从中央仓库下载并管理它们。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.20</version>
</dependency>
2. 标准化构建流程(编译、测试、打包、部署 💡)
Maven 定义了一整套标准化的 构建生命周期,比如:
compile(编译代码)
test(运行测试)
package(生成 .jar 或 .war)
install(安装到本地)
deploy(发布到远程仓库)
你可以用一行命令完成整个构建流程:
mvn clean package
mvn clean package
这会清理旧文件,编译代码,运行测试,最后打包项目。
3. 适用于团队协作(一致的项目结构 📂)
Maven 规定了 标准项目结构,所有人看到项目目录就知道代码放在哪:
my-project/
├── src/
│ ├── main/java/ # 业务代码
│ ├── main/resources/ # 配置文件
│ ├── test/java/ # 测试代码
│ ├── test/resources/ # 测试配置
├── pom.xml # Maven 配置文件
├── target/ # 构建后的文件(如 .jar/.war)
四、前缀异或(Prefix XOR)
- definition:
前缀异或(Prefix XOR)是一种 前缀和 的变种,它是用 异或(XOR,^)运算 代替 加法(+) 计算的前缀和。 - 代码定义:
nums = [4, 3, 1, 2, 4]
n = len(nums)
prefix_xor = [0] * (n + 1) # 初始化前缀异或数组
for i in range(n):
prefix_xor[i + 1] = prefix_xor[i] ^ nums[i]
print(prefix_xor) # 输出 [0, 4, 7, 6, 4, 0]
prefix_xor[i] 存储的是 nums[0] 到 nums[i-1] 的异或结果。
我们用 prefix_xor[i+1] = prefix_xor[i] ^ nums[i] 递推计算。
-
应用:
- 查找异或和为 0 的子数组(本题用法)。
- 计算两个区间的异或值:可以快速求 nums[L:R] 的异或值。
- Trie 树优化最大异或对(Leetcode 421)。
-
计算:
假设有数组:
nums = [4, 3, 1, 2, 4]
[图片]
整数之间的异或操作(^)在 Python 中是自动处理位数的。Python 会根据两个操作数的位数自动进行补齐,而不需要显式地补充零。
prefix = [4, 7, 6, 4, 0] -
如何用前缀异或快速求子数组的异或和?
如果你想求 子数组 nums[i+1:j] 的异或和,可以使用:
nums[i+1] ^ nums[i+2] ^ … ^ nums[j] = prefix[j] ^ prefix[i]
如果 prefix[j] == prefix[i],则 nums[i+1:j] 的异或和就是 0。
用于leetcode 2588. 统计美丽子数组数目