JiaHe

相遇即是缘

新建bat文件保存,并以管理员模式运行。

Hyper-V.bat
pushd "%~dp0"

dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hv.txt

for /f %%i in ('findstr /i . hv.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"

del hv.txt

Dism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALL

Pause

问题:Windows10虚拟机启动报错:SYSTEM-THREAD-EXCEPTION-NOT-HANDLED

场景:虚拟机从A设备的VMware导出,然后导入B设备的VMware,启动之后发生的。

解决:将处理器设置为 1-2 的配置,即可成功启动

或者将脚本保存为 disable-edge-auto-update.ps1 文件,右键点击 “使用 PowerShell 运行”

disable-edge-auto-update.ps1
if ([Environment]::Is64BitOperatingSystem -eq "True") {
#Write-Host "64-bit OS"
$PF=${env:ProgramFiles(x86)}
}
else {
#Write-Host "32-bit OS"
$PF=$env:ProgramFiles
}

if ($(Test-Path "$PF\Microsoft\Edge\Application\msedge.exe") -eq "True") {
# 结束进程
taskkill /im MicrosoftEdgeUpdate.exe /f
taskkill /im msedge.exe /f
# Microsoft Edge 更新服务 (sysin)
#这里也可以使用 sc.exe stop "service name"
Stop-Service -Name "edgeupdate"
Stop-Service -Name "edgeupdatem"
Stop-Service -Name "MicrosoftEdgeElevationService"
# Windows 10 默认 PS 版本 5.1 没有 Remove-Service 命令
# This cmdlet was added in PS v6. See https://docs.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-core-60?view=powershell-6#cmdlet-updates.
#Remove-Service -Name "edgeupdate"
#Remove-Service -Name "edgeupdatem"
#Remove-Service -Name "MicrosoftEdgeElevationService"
# sc 在 PowerShell 中是 Set-Content 别名,所以要使用 sc.exe 否则执行后无任何效果
sc.exe delete "edgeupdate"
sc.exe delete "edgeupdatem"
sc.exe delete "MicrosoftEdgeElevationService"
# 任务计划企业版
#schtasks.exe /Delete /TN \MicrosoftEdgeUpdateBrowserReplacementTask /F
#schtasks.exe /Delete /TN \MicrosoftEdgeUpdateTaskMachineCore /F
#schtasks.exe /Delete /TN \MicrosoftEdgeUpdateTaskMachineUA /F
Get-ScheduledTask -taskname MicrosoftEdgeUpdate* | Unregister-ScheduledTask -Confirm: $false
# 移除更新程序
Remove-Item "$PF\Microsoft\EdgeUpdate" -Recurse -Force
Write-Output "Disable Microsoft Edge Enterprise Auto Update Successful!"
}
elseif ($(Test-Path "$env:USERPROFILE\AppData\Local\Microsoft\Edge\Application\msedge.exe") -eq "True") {
# 结束进程
taskkill /im MicrosoftEdgeUpdate.exe /f
taskkill /im msedge.exe /f
# 用户版没有创建服务
# 获取SID方法
function Get-CurrentUserSID {
[CmdletBinding()]
param(
)
Add-Type -AssemblyName System.DirectoryServices.AccountManagement
return ([System.DirectoryServices.AccountManagement.UserPrincipal]::Current).SID.Value
}
# 用户版任务计划
schtasks.exe /Delete /TN \MicrosoftEdgeUpdateTaskUser$(Get-CurrentUserSID)Core /F
schtasks.exe /Delete /TN \MicrosoftEdgeUpdateTaskUser$(Get-CurrentUserSID)UA /F
#Get-ScheduledTask -taskname MicrosoftEdgeUpdate* | Unregister-ScheduledTask -Confirm: $false
# 移除更新程序
Remove-Item "$env:USERPROFILE\AppData\Local\Microsoft\EdgeUpdate" -Recurse -Force
Write-Output "Disable Microsoft Edge Users Setup Auto Update Successful!"
}
else {
Write-Output "No Microsoft Edge Installation Detected!"
}

  1. 出现VScode或C++ BuildTools相关问题

下载安装Visual Studio生成工具
勾选其中[使用C++的桌面开发]选项,可选项中的前两项一定勾上,然后安装

  1. node-sass安装失败
指定taobao源
npm install --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/

或者连上墙外
npm install --proxy=<http-proxy>

RequestContextHolder

RequestContextHolder 是 Spring Framework 中用于获取当前请求上下文的 Holder 类,它可以在任何地方(即使是异步线程)获取到当前请求的上下文信息,例如 HttpServletRequest,HttpServletResponse 等。

在 Web 应用程序中,通常需要在处理请求的方法中获取 HttpServletRequest,以便在处理请求时访问请求参数,会话信息等。如果使用 ThreadLocal 存储 HttpServletRequest,则需要在处理请求的方法中传递该 ThreadLocal,这样处理请求的每个方法都需要接收 HttpServletRequest 对象作为参数,这样代码会变得繁琐,因此可以使用 RequestContextHolder 解决这个问题。

使用 RequestContextHolder 可以将当前请求上下文绑定到 ThreadLocal 中,以便在当前线程中的任何位置获取它,而不需要显式地传递 HttpServletRequest 对象。这样,我们就可以在任何需要访问请求上下文信息的地方访问它。

例如,在 Spring MVC 控制器方法中,可以使用 RequestContextHolder 获取 HttpServletRequest 对象,示例如下:

@RequestMapping("/test")
public String test() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
// 处理请求
return "test";
}

当然,在一些特殊的场景中,也可以通过其他方式获取 HttpServletRequest 对象,例如使用 @Autowired 注解注入 HttpServletRequest 对象。但是使用 RequestContextHolder 可以让我们更方便地在任何地方访问当前请求上下文,特别是在异步线程中也可以访问到。