JiaHe

相遇即是缘

问题: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 可以让我们更方便地在任何地方访问当前请求上下文,特别是在异步线程中也可以访问到。

基础命令

命令含义
help查看命令帮助信息
cls清空当前屏幕区域
session查看当前会话的信息
reset重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端关闭时会重置所有增强过的类
version输出当前目标 Java 进程所加载的 Arthas 版本号
history打印命令历史
quit退出当前 Arthas 客户端,其他 Arthas 客户端不受影响
stop和shutdown命令一致
shutdown关闭 Arthas 服务端,所有 Arthas 客户端全部退出
keymapArthas快捷键列表及自定义快捷键
options查看或设置Arthas全局开关
阅读全文 »