2025.3.6 学习记录

一、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的区别

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. 统计美丽子数组数目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈哈笑死哈哈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值