Skip to content

临时笔记

Vivado 自定义编辑器 VSCode 无法打开

报错内容:vivado unable to launch external text editor

原因:VSCode 默认的执行路径不是 .exe 文件,而是为了方便在 WSL 中使用而包装的脚本文件。查看 Windows Path,可以看到设置在 AppData\Local\Programs\Microsoft VS Code\bin 下,而该目录下只有几个脚本文件:

vivado_texteditor_error

大致内容如下:

@echo off
setlocal
set VSCODE_DEV=
set ELECTRON_RUN_AS_NODE=1
"%~dp0..\Code.exe" "%~dp0..\resources\app\out\cli.js" %*
endlocal

在 PowerShell 中执行 (Get-Command code).Path 也显示为 AppData\Local\Programs\Microsoft VS Code\bin\code.cmd,因此 Vivado 对脚本的调用不成功(推测是 Java 调用外部程序,没有 Shell 环境)。

解决方法:真正的 code.exe 在上层目录,将 Path 末尾的 bin 去掉即可。

应付算法考试的东西

摊还分析

  • 聚合分析很简单,\(\frac{T(n)}{n}\) 即可
  • 核算法:列出操作的实际代价,然后设计一种摊还代价,让快的操作支付所谓信用,用以偿还之后慢的操作的开支。证明你这样记账后,那些慢的操作的开支都能够被支付就行了。
    • 栈,让 push 支付 2,偿还所有 pop
    • 二进制计数器,让置位支付 2,偿还所有复位
  • 势能法:摊还代价为实际代价加上引起势能变化 \(\Phi{D_n} - \Phi{D_0}\)。0 时势函数为 0。势函数应当总是大于零。
    • 栈,push 让势能变高,摊还代价 1+1=2,pop 让势能降低,摊还代价 1-1=0。所有操作代价都是 \(O(1)\),证明了总代价是 \(O(n)\)
    • 数组增长,insert 让势能变高,摊还代价 1+1=2;扩张让势能变低,摊还代价 k-k=0,得证。