VSCode代码比较功能
问题描述
今天看书的时候,书上讲一段代码改成另一段代码,但是由于注释也改了,代码又比较多,肉眼难以看出来到底修改了哪个地方.
想起来VScode有代码比较的功能,可以帮助我看出到底就该了哪里.
这两段代码如下:
代码段1:
1 | //下面代码编译时有“ [unchecked]未经检査的转换”警告 |
代码段2:
1 | // 下面代码实际上是不允许的 |
使用VSCode代码比较步骤
首先,为了杜绝注释的干扰,先将所有的注释删除掉,然后用VSCode中打开一个文件夹,在该文件夹下,创建两个文件来着分别两段代码.
然后在VSCode中打开这两个文件,在左侧打开的编辑器中按下shift键选择这两个文件,然后鼠标右键选择将已选项进行比较即可:
这样就知道两个文件哪里不同了:
参考资料
Git 恢复某一文件到指定版本
问题描述
今天我查看之前的写的文章的时候我发现'批处理 for命令.md'
这批文章中的大部分内容都丢失了,应该是我写的文件处理程序出bug造成的,不过幸好有版本控制,只要将该文件恢复到文件处理程序
操作之前的状态即可.
查看某个文件的commit记录
格式:
1 | git log --pretty=oneline 文件路径 |
例如:先cd到'批处理 for命令.md'
这个文件所在的目录,然后输入如下命令,查看该文件的提交记录.
1 | git log --pretty=oneline '批处理 for命令.md' |
1 | lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/blog/source/_posts/Windows/CMD 批处理/语法/构建程序相关命令 (master) |
比较两个版本之间文件的不同
1 | git diff commit_id1 commit_id2 -- 文件名 |
注意这两个commit_id的顺序不同显示不同.commit_id1应该为更久远的版本,commit_id2应该为更近的版本.
所以格式简化为:
1 | git diff 旧版本commit_id 新版本commit_id -- 文件名 |
因为我不知道什么时候文件内容丢失的,所以从最久远的版本开始,一级一级的向上比较,看看究竟是哪个版本出现的问题.
先来比较4a7e71d88e版本(倒数第二久远版本),对b8abfe5249(最久远版本)做了哪些修改:
1 | git diff b8abfe5249 4a7e71d88e -- '批处理 for命令.md' |
运行效果:
1 | lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/blog/source/_posts/Windows/CMD 批处理/语法/构建程序相关命令 (master) |
可以看到就是倒数第二久远版本(4a7e71d88e)中,我的文章内容被删除掉了.所以我只要将该文件恢复到最久远版本(b8abfe5249)就可以恢复丢失的文章内容.
取出指定版本的文件
1 | git checkout commitId 文件路径 |
现在取出最久远版本的文件’批处理 for命令.md’:
1 | git checkout b8abfe5249 '批处理 for命令.md' |
然后查看该文件内容:
1 | cat '批处理 for命令.md' |
如果需要修改,那就修改,确认无误后再:
1 | git add . |
添加到版本库中即可.
java中Sources目录Resources目录的区别
什么是Sources目录
Sources目录用来存放java文件.java项目中最常见的Sources目录就是src目录,当打包成jar时,Sources目录下的.java文件会被编译成.class文件.
什么是Resources目录
Resources
目录用来存放程序需要使用的资源文件.当打包成jar
时,会直接复制Resources
目录下的所有文件到jar
包中,也就是说Resources
目录下的.java
文件不会不会被编译成.class
文件.
所以这个目录可以用来存放一些java模板文件,例如将各种排序算法的java文件放在其中,然后写个程序根据命令行参数,输出这里面的java模板文件。
相同点
都会被打包到jar包中.
不同点
Sources
目录下的.java
文件会被编译成.class
文件.Resources
目录下的.java
文件不会被编译.
cmd choice命令
cmd choice命令
帮助文档
1 | C:\Users\lan>choice /? |
choice命令的 选项
/c参数用来指定choice命令的选项
例如:
1 | choice /c:abc |
则有a,b,c三个选项,运行效果如下所示:
1 | G:\Desktop\Vscode测试>choice /c:abc |
隐藏choice命令的 输出
1 | choice /c:abc /n |
虽然输出的信息隐藏了,但是还是要输入选项的,运行效果:
1 | G:\Desktop\Vscode测试>choice /c:abc /n |
choice命令的 提示信息
/m参数用来指定choice命令的提示信息,例如:
1 | choice /c:abc /m 输入你的选择 |
运行效果:
1 | E:\Blog\blog\source\_posts\Windows\CMD 批处理\语法\系统相关命令>choice /c:abc /m 输入你的选择 |
choice命令的 选项 区分大小写
choice命令默认不区分大小写,如果加上/CS参数,则选项区分大小写,并且在输入选项的时候,用户是不可以按shift+字母来输入大写的,只能单独输入小写,例如:
1 | choice /c:abc /m 输入你的选择 /cs |
运行效果如下:
1 | E:\Blog\blog\source\_posts\Windows\CMD 批处理\语法\系统相关命令>choice /c:abc /m 输入你的选择 |
choice命令的 返回值
choice命令的返回值保存在变量errorlevel中,例如如下的choice命令
1 | choice /c:abc |
- 如果选择的是a,则返回1
- 如果选择的是b,则返回2
- 如果选择的是c,则返回3
- 以此类推
控制语句
利用choice命令的返回值我们可以做一些分支程序:
1 | @echo off |
延时
choice命令还可以完成倒计时的功能,这个需要同时使用/c,/t,/d,三个参数,
- /c指定有哪些选项,当然/c参数可以省略,如果省略,则默认的选项是Y和N
- /t参数指定等待的时间
- /d参数指定超时的时候的默认的选项,这个选项必须在/c指定的选项中.如果省略的/c参数,则/d参数只能是Y或者N
多选项延时
1 | choice /c abc /t 2 /d a |
程序 多选项延时分支
1 | @echo off |
刚开始程序的运行效果如下:
1 | G:\Desktop\Vscode测试>Delay.bat |
现在什么都不要输入,程序将会延时五秒,然后程序会自动选择/d指定的选项,也就c选项:
1 | G:\Desktop\Vscode测试>Delay.bat |
默认延时
上面已经说过,如果省略/c则/d后面只能指定y或者n,与上面类似
1 | choice /t 秒数 /d [Y,N] |
例如延时5秒:
1 | choice /t 5 /d y |
程序 两个选项的延时控制
1 | @echo off |
运行结果:
1 | G:\Desktop\Vscode测试>Delay2.bat |
cmd taskkill命令
taskill命令帮助文档
1 | TASKKILL [/S system [/U username [/P [password]]]] |
根据进程名杀进程
例如:
1 | taskkill /im notepad.exe |
根据pid杀死进程
查找pid
例如杀死窗口标题为hexo的cmd进程:
查找进程的pid:
1 | tasklist /v /fo csv | findstr /i "hexo" |
查询结果:
1 | E:\Blog\JavaReadingNotes>tasklist /v /fo csv | findstr /i "hexo" |
然后输入:
1 | taskkill /pid 11952 |
这样就把hexo服务所在的的cmd进程杀死了,效果:
1 | E:\Blog\JavaReadingNotes>taskkill /pid 11952 |
杀死进程树 杀死进程及其后代
1 | G:\dev2\idea_workspace\MyJavaTools\runable>jps -m |
参考资料
https://www.yiibai.com/batch_script/batch_script_process.html
cmd tasklist命令
tasklist命令帮助文档
1 | TASKLIST [/S system [/U username [/P [password]]]] |
csv输出格式
1 | tasklist /v /fo csv |
显示效果:
1 | "映像名称","PID","会话名 ","会话# ","内存使用 ","状态 ","用户名 ","CPU 时间","窗口标题 " |
list输出格式
1 | tasklist /v /fo list |
1 | 映像名称: System Idle Process |
list输出格式会输出很长的内容.
杀死窗口标题为hexo的进程:
1 | E:\Blog\JavaReadingNotes>taskkill /pid 12920 |
参考资料
https://www.yiibai.com/batch_script/batch_script_process.html
解决cmd PowerShell中git log中文乱码
解决cmd下git log中文乱码
问题描述
cmd下输入git log命令出现如下乱码:
1 | E:\Blog\blogRoot>git log -10 --pretty=oneline |
解决方案
在cmd中输入如下命令:
1 | git config --global core.quotepath false |
这样git log就不会乱码了:
1 | E:\Blog\blogRoot>git log -10 --pretty=oneline |
但是,这样只对当前cmd有效,新开的cmd无效,需要再次输入:
1 | set LESSCHARSET=utf-8 |
永久生效
设置添加环境变量LESSCHARSET
,设为utf-8
:
效果
这样CMD,powerShell
中都不会乱码了:Windows Terminal
中的cmd
和PowerShell
也不会乱码:
参考资料
https://blog.csdn.net/sunjinshengli/article/details/81283009
设置在当前目录下打开Windows Terminal到鼠标右键
安装
到Microsoft Store中下载安装即可.
配置
打开配置文件
点击Windows Terminal菜单栏上的下拉箭头,然后选择Settings:
选择默认启动的终端
默认的配置信息如下:
1 | // To view the default settings, hold "alt" while clicking on the "Settings" button. |
“defaultProfile”这个配置项就是打开Terminal时默认启动的程序,可以看到defaultProfile配置的guid是:
1 | "defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}", |
这正是PowerShell的guid:
1 | "profiles": |
所以如果想启动Terminal时打开的是cmd,只需要修改”defaultProfile”的值为cmd的guid即可:
1 | 0caa0dad-35be-5f56-a8ff-afceeeaa6101 |
配置快捷键
快捷键配置项为”keybindings”,我配置如下:
1 | "keybindings": |
- 其中command为功能,例如复制(copy),粘贴(paster)
- keys为对应的快捷键
在鼠标右键打开
下载Terminal图标
图标地址:https://raw.githubusercontent.com/microsoft/terminal/master/res/terminal.ico
下载这个图标后,保存到指定位置,我的是(“F:\软件\图标\terminal.ico”)
添加到鼠标右键
批处理修改注册表
复制下面的批处理代码,然后保存到.bat文件中,以管理员身份运行即可:
1 | @echo off |
手动修改注册表
按下Win+R快捷键打开运行,然后输入regedit
打开注册表编辑器,然后在地址栏中输入:
1 | HKEY_CLASSES_ROOT\Directory\Background\shell |
新建项:wt
然后点击wt,双击右边的默认,在里面输入鼠标右键选项的名称:Windows Terminal here
然后右键wt,选择新建字符串,名为为Icon
,在里面输入下载好的图标的地址:F:\软件\图标\terminal.ico
然后右键wt,选择新建项,输入command
然后点击command,双击右边的默认,输入Terminal的地址"%%LOCALAPPDATA%%\Microsoft\WindowsApps\wt.exe\"
即可
在当前目录打开
在每个终端的配置中添加"startingDirectory" : ".",
这个配置即可:
1 | "profiles": |
完整配置示例
1 | // To view the default settings, hold "alt" while clicking on the "Settings" button. |
效果
在一个目录下按下鼠标右键,选择**Window Terminal Here
**:
此时Terminal
就会在当前目录下打开cmd
:
参考资料
https://printempw.github.io/windows-terminal-setup-guide/
https://github.com/microsoft/terminal/blob/master/doc/user-docs/UsingJsonSettings.md
更新package.json中安装好的程序
安装npm-check-updates
1 | npm install -g npm-check-updates |
查询是否后最新版本
在package.json所在的目录中,打开cmd,注意打开的是cmd,git-bash可能无效,输入:
1 | npm-check-updates |
或者使用该命令的简写:
1 | ncu |
该命令插件会去npm官网查询是否有最新版本,如果有新版本的话,显示效果如下:
1 | E:\Blog\exam>ncu |
更新依赖文件配置
按提示输入:
1 | ncu -u |
更新依赖配置文件即可.
1 | E:\Blog\exam>ncu -u |
更新软件
然后按提示输入:
1 | npm install |
更新软件版本即可
更新其他
1 | E:\Blog\exam>npm install |
注意错误信息:
1 | npm WARN deprecated core-js@1.2.7: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3. |
更新core-js@1.2.7到core-js@3:
1 | npm install --save core-js@^3 |
参考资料
https://www.jianshu.com/p/f192d11b60a2
https://www.jianshu.com/p/ce9a46ae3a03
https://blog.csdn.net/Mweb_demo/article/details/100583577