首页 > 系统相关 >PowerShell 和 NSSM(Non-Sucking Service Manager)的组合可以用来创建和管理 Windows 上的服务

PowerShell 和 NSSM(Non-Sucking Service Manager)的组合可以用来创建和管理 Windows 上的服务

时间:2024-07-02 17:41:32浏览次数:1  
标签:nssmPath NSSM Non Code 服务 Sucking ServiceName PowerShell

PowerShell 和 NSSM(Non-Sucking Service Manager)的组合可以用来创建和管理 Windows 上的服务。NSSM 是一个开源工具,允许你将任何可执行文件转换为 Windows 服务。下面是一个简单的示例,展示如何使用 PowerShell 和 NSSM 来创建和管理一个服务。

步骤一:下载和安装 NSSM

  1. 下载 NSSM: 前往 NSSM 的官方网站(https://nssm.cc/download)下载最新版本的 NSSM。解压缩下载的 ZIP 文件到一个合适的位置。

  2. 准备可执行文件: 准备一个你想要转换为服务的可执行文件。例如,我们使用 notepad.exe 作为示例。

步骤二:使用 NSSM 创建服务

  1. 打开 PowerShell: 以管理员身份打开 PowerShell。

  2. 导航到 NSSM 所在目录: 使用 cd 命令导航到 NSSM 解压缩的目录。例如:

    Copy Code
    cd C:\path\to\nssm-2.24\win64
  3. 安装服务: 使用 NSSM 将可执行文件安装为服务。例如,安装 Notepad 作为一个服务:

    Copy Code
    .\nssm.exe install NotepadService "C:\Windows\System32\notepad.exe"
    • NotepadService 是服务的名称,可以根据需求修改。
    • "C:\Windows\System32\notepad.exe" 是可执行文件的路径。
  4. 配置服务: NSSM 会提示你配置服务的各种选项,如启动类型、服务名称等。根据需求进行配置。

  5. 启动服务: 使用 NSSM 启动刚刚创建的服务:

    Copy Code
    .\nssm.exe start NotepadService
  6. 验证服务: 可以在 Windows 服务管理器中查看和验证新创建的服务。

步骤三:管理服务

使用 PowerShell 和 NSSM,你可以管理已安装的服务。例如:

  • 停止服务:

    Copy Code
    .\nssm.exe stop NotepadService
  • 重新启动服务:

    Copy Code
    .\nssm.exe restart NotepadService
  • 删除服务:

    Copy Code
    .\nssm.exe remove NotepadService confirm

    确认删除服务。

这些步骤展示了如何使用 PowerShell 和 NSSM 创建、启动、停止和删除 Windows 服务。根据你的实际需求和可执行文件,可以调整路径和服务名称等参数。


步骤四:使用 PowerShell 脚本自动化 NSSM 操作

在实际应用中,你可能希望通过 PowerShell 脚本来自动化 NSSM 的操作,例如批量安装或管理多个服务。以下是一个简单的示例脚本,演示如何使用 PowerShell 和 NSSM 自动创建和管理服务。

powershellCopy Code
# 设置 NSSM 的路径
$nssmPath = "C:\path\to\nssm-2.24\win64\nssm.exe"

# 定义服务列表
$services = @(
    @{ Name = "Service1"; Executable = "C:\path\to\service1.exe"; Description = "Service 1 Description" },
    @{ Name = "Service2"; Executable = "C:\path\to\service2.exe"; Description = "Service 2 Description" }
    # 可以添加更多服务
)

# 循环安装服务
foreach ($service in $services) {
    $serviceName = $service.Name
    $executablePath = $service.Executable
    $description = $service.Description
    
    # 安装服务
    & $nssmPath install $serviceName $executablePath
    
    # 设置服务描述
    & $nssmPath set $serviceName Description "$description"
    
    # 启动服务
    & $nssmPath start $serviceName
}

在上面的示例中,脚本首先设置了 NSSM 的路径,并定义了一个服务列表。每个服务都有名称、可执行文件路径和描述。然后,使用循环安装每个服务,并设置描述,最后启动每个服务。

注意事项和建议

  • 权限问题:确保以管理员身份运行 PowerShell,以便安装和管理服务。
  • 路径问题:根据实际情况调整 NSSM 的路径和服务的可执行文件路径。
  • 配置服务:在安装服务时,NSSM 会提示你配置各种选项,如启动类型、服务名称等,可以根据需求进行调整。
  • 错误处理:在实际应用中,添加适当的错误处理和日志记录以确保服务安装和管理的可靠性和稳定性。

通过结合 PowerShell 和 NSSM,你可以有效地管理 Windows 上的各种自定义服务,这对于需要在后台运行的应用程序或服务特别有用。


步骤五:进一步的管理和维护

除了创建和启动服务之外,还可以使用 PowerShell 和 NSSM 进行更多的管理和维护操作,如停止服务、重新启动服务、检查服务状态等。

停止服务和重新启动服务

可以使用以下命令停止和重新启动已安装的服务:

powershellCopy Code
# 停止服务
& $nssmPath stop ServiceName

# 重新启动服务
& $nssmPath restart ServiceName

其中 ServiceName 是你安装的服务的名称。

检查服务状态

可以使用以下命令检查服务的运行状态:

powershellCopy Code
# 获取服务状态
& $nssmPath status ServiceName

这将显示服务的当前状态,例如 Running(运行中)、Stopped(已停止)等。

删除服务

如果需要删除一个已安装的服务,可以使用以下命令:

powershellCopy Code
# 删除服务
& $nssmPath remove ServiceName confirm

确保在删除服务时确认操作,避免意外删除。

脚本化管理示例

下面是一个综合示例,展示如何创建、启动、停止和删除服务的完整 PowerShell 脚本:

powershellCopy Code
# 设置 NSSM 的路径
$nssmPath = "C:\path\to\nssm-2.24\win64\nssm.exe"

# 定义服务列表
$services = @(
    @{ Name = "Service1"; Executable = "C:\path\to\service1.exe"; Description = "Service 1 Description" },
    @{ Name = "Service2"; Executable = "C:\path\to\service2.exe"; Description = "Service 2 Description" }
    # 可以添加更多服务
)

# 循环安装、启动服务
foreach ($service in $services) {
    $serviceName = $service.Name
    $executablePath = $service.Executable
    $description = $service.Description
    
    # 安装服务
    & $nssmPath install $serviceName $executablePath
    
    # 设置服务描述
    & $nssmPath set $serviceName Description "$description"
    
    # 启动服务
    & $nssmPath start $serviceName
}

# 停止和删除服务示例
foreach ($service in $services) {
    $serviceName = $service.Name
    
    # 停止服务
    & $nssmPath stop $serviceName
    
    # 删除服务
    & $nssmPath remove $serviceName confirm
}

这个示例演示了如何使用循环在批量服务列表上执行安装、启动、停止和删除操作。根据实际需求,可以调整路径、服务名称和其他配置参数。

通过这些步骤和示例,你可以有效地使用 PowerShell 和 NSSM 在 Windows 上创建、管理和维护自定义服务,以支持各种应用程序和后台任务。


扩展:配置更多 NSSM 选项

除了基本的安装、启动、停止和删除操作外,NSSM 还提供了许多高级选项,可以通过 PowerShell 进行配置和管理。以下是一些常用的 NSSM 高级选项示例:

配置服务的启动类型和登录信息

可以使用 NSSM 设置服务的启动类型(如自动、手动或禁用)以及指定服务的登录信息。

powershellCopy Code
# 设置启动类型为自动
& $nssmPath set ServiceName Start SERVICE_AUTO_START

# 设置登录信息(示例中使用本地系统账户)
& $nssmPath set ServiceName ObjectName ".\LocalSystem"

配置服务的环境变量

如果你的服务需要特定的环境变量,可以使用 NSSM 在安装时配置这些变量。

powershellCopy Code
# 设置环境变量
& $nssmPath set ServiceName AppEnvironmentExtra "VAR=value"

配置服务的依赖性

有时候,一个服务可能依赖于其他服务的运行。NSSM 允许配置服务的依赖性。

powershellCopy Code
# 设置服务依赖性(示例中依赖于服务 ServiceDependency)
& $nssmPath set ServiceName DependOnService ServiceDependency

设置服务的工作目录和额外参数

可以指定服务的工作目录和额外的启动参数。

powershellCopy Code
# 设置工作目录
& $nssmPath set ServiceName AppDirectory "C:\path\to\working\directory"

# 设置额外参数
& $nssmPath set ServiceName AppParameters "--parameter value"

日志和错误处理

在实际应用中,确保适当的错误处理和日志记录是非常重要的。可以结合 PowerShell 的异常处理机制来处理 NSSM 命令执行过程中的错误,并记录到日志中。

powershellCopy Code
# 尝试安装服务,添加错误处理
try {
    & $nssmPath install ServiceName "C:\path\to\service.exe"
} catch {
    Write-Host "Failed to install ServiceName: $_" -ForegroundColor Red
    # 记录错误日志或其他操作
}

总结

通过 PowerShell 和 NSSM 结合起来,你可以高效地管理和配置 Windows 上的服务,无论是简单的安装和启动操作,还是复杂的配置和维护任务。确保在操作前对 NSSM 的各种选项和命令有一定的了解,并根据实际需求进行调整和扩展。这样可以帮助你在开发和运维中更加灵活和高效地处理服务管理的各种需求。


深入了解 NSSM 的高级功能和管理

继续探讨 NSSM 的高级功能和管理方法,我们可以进一步学习如何使用 NSSM 来处理更复杂的服务配置和管理任务。

定时任务和定期重启

有时候,服务可能需要定时重启或者定时执行某些任务。你可以结合 Windows 的任务计划程序(Task Scheduler)和 NSSM 来实现这些功能。

powershellCopy Code
# 创建定时重启任务
$taskName = "ServiceRestartTask"
$action = New-ScheduledTaskAction -Execute "$nssmPath" -Argument "restart ServiceName"
$trigger = New-ScheduledTaskTrigger -Daily -At "02:00"
Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger

这段代码创建了一个每天凌晨 2 点执行的定时任务,用于重启名为 ServiceName 的服务。

监控和报警集成

对于关键服务,监控和报警是必不可少的。你可以结合 NSSM 的状态检查和 PowerShell 的监控脚本来实现监控和报警功能。

powershellCopy Code
# 监控服务状态
$status = & $nssmPath status ServiceName
if ($status -ne "SERVICE_RUNNING") {
    # 发送报警通知,例如邮件或其他通知机制
    Send-MailMessage -To "[email protected]" -From "[email protected]" -Subject "ServiceName is not running!" -Body "ServiceName is in state: $status"
}

在这个示例中,如果服务状态不是 SERVICE_RUNNING,则会发送邮件通知管理员。

故障转移和高可用性

在需要高可用性的环境中,可能会配置故障转移策略,确保服务在某台服务器故障时能够自动切换到另一台服务器上。NSSM 结合集群管理工具或者自动化脚本可以实现这一点。

安全和权限管理

确保服务以安全的方式运行,并仅具有必要的权限。可以使用 NSSM 设置服务的安全选项,例如指定服务账号和访问权限。

powershellCopy Code
# 设置服务的账号和权限(示例中使用具有最小权限的服务账号)
& $nssmPath set ServiceName ObjectName "DOMAIN\ServiceAccount" ObjectPassword "Password" Start SERVICE_AUTO_START

日志和审计

最后,对于服务的运行状态和操作进行详细的日志记录和审计是很重要的。NSSM 可以配置服务的输出和日志文件,确保能够记录重要的事件和错误信息。

powershellCopy Code
# 配置服务的输出和日志文件
& $nssmPath set ServiceName AppStdout "C:\path\to\stdout.log"
& $nssmPath set ServiceName AppStderr "C:\path\to\stderr.log"

结论

通过结合 PowerShell 和 NSSM,你可以在 Windows 环境中实现灵活、高效的服务管理和运维。利用这些高级功能,可以定制化服务的配置、监控、安全性和可用性,以满足复杂应用场景的需求。不断深入理解和掌握 NSSM 的各种选项和功能,将有助于提升你在服务管理和运维方面的技能和效率。


高级日志管理和分析

在实际应用中,服务的日志管理和分析是非常重要的一环。NSSM 可以帮助配置服务的日志记录选项,并且可以结合 PowerShell 脚本来分析和处理日志文件。

powershellCopy Code
# 设置服务的日志记录选项
& $nssmPath set ServiceName AppStdout "C:\path\to\stdout.log"
& $nssmPath set ServiceName AppStderr "C:\path\to\stderr.log"

上述代码片段将服务的标准输出和标准错误输出重定向到指定的日志文件,这样可以方便后续的日志分析和故障排查。

灾难恢复和备份策略

为了应对意外事件,例如服务器故障或数据丢失,建立有效的灾难恢复和备份策略至关重要。结合 NSSM 可以设置定期备份任务或者监控服务的健康状态,确保及时采取恢复措施。

性能优化和调整

对于需要高性能的服务,可以通过 NSSM 的配置选项优化服务的资源使用和性能表现。例如,调整服务的启动参数、内存使用设置等。

跨平台适配性考虑

虽然 NSSM 是专为 Windows 平台设计的服务管理工具,但在跨平台部署中,可以考虑使用其他开源工具或者自定义脚本来实现类似的功能,以确保服务在不同操作系统上的一致性和可靠性。

总结

通过结合 NSSM 和 PowerShell 的强大功能,你可以实现高级的服务管理和运维任务,包括定时任务、监控报警、日志管理、灾难恢复、性能优化等方面。不断学习和探索这些工具的各种用法和技巧,将有助于提升你的系统管理技能,确保服务的稳定性和可靠性。


高级安全性和权限管理

在部署服务时,确保服务以安全的方式运行并具有最小必要权限是非常重要的。NSSM 允许你设置服务的安全选项,包括指定服务账号和访问权限。

powershellCopy Code
# 设置服务的账号和权限(示例中使用具有最小权限的服务账号)
& $nssmPath set ServiceName ObjectName "DOMAIN\ServiceAccount" ObjectPassword "Password" Start SERVICE_AUTO_START

通过以上示例,可以指定服务运行时所使用的服务账号和密码,以及服务的启动类型。这有助于确保服务在运行时仅具有必要的权限,并且不会过度暴露系统。

自动化部署和配置管理

使用 NSSM 和 PowerShell 可以实现服务的自动化部署和配置管理。结合脚本编写和版本控制工具,可以快速部署和更新多个服务实例,确保一致性和可维护性。

powershellCopy Code
# 自动化安装和配置服务
Copy-Item "C:\path\to\service.exe" "C:\Program Files\Service"
& $nssmPath install ServiceName "C:\Program Files\Service\service.exe"
& $nssmPath set ServiceName Start SERVICE_AUTO_START
& $nssmPath start ServiceName

通过上述代码,可以自动将服务程序复制到指定路径,并使用 NSSM 安装、配置和启动服务,使得整个部署过程高效而可靠。

多服务管理和集成

在复杂的环境中,可能需要管理多个服务实例并实现它们之间的协调。NSSM 和 PowerShell 的结合可以帮助批量管理和集成多个服务,例如同时启动、停止或者配置多个服务。

powershellCopy Code
# 批量启动多个服务
$services = "Service1", "Service2", "Service3"
foreach ($service in $services) {
    & $nssmPath start $service
}

以上代码示例展示了如何通过循环批量启动多个服务,这在大规模部署和管理中非常有用。

持续优化和故障排查

最后,持续优化和故障排查是服务管理和运维的关键部分。利用 NSSM 和 PowerShell 的功能,可以实现定期的性能优化和故障排查任务,确保服务始终保持最佳状态。

通过不断学习和探索 NSSM 和 PowerShell 的更多用法,你可以成为一个高效的系统管理员,能够应对各种复杂的服务管理挑战。


监控与警报

在运维服务中,监控和实时警报是确保服务稳定性和及时响应问题的关键。NSSM 和 PowerShell 可以结合使用,设置监控和警报机制,以便在服务出现问题时能够及时采取行动。

powershellCopy Code
# 监控服务状态并发送警报
$serviceName = "ServiceName"
$status = & $nssmPath status $serviceName

if ($status -ne "SERVICE_RUNNING") {
    Send-MailMessage -To "[email protected]" -From "[email protected]" -Subject "Service $serviceName is not running" -Body "The service $serviceName is not running. Please investigate and take necessary actions."
}

上述代码示例展示了如何定期检查服务状态,并在服务停止时发送电子邮件警报通知管理员。这种实时监控和警报系统可以帮助提前发现和解决潜在的服务问题。

自动化维护和更新

除了日常运行监控外,定期的维护和更新也是服务管理的一部分。NSSM 结合 PowerShell 可以实现自动化的维护任务,例如定时重启服务或者更新服务程序版本。

powershellCopy Code
# 定时重启服务
$serviceName = "ServiceName"
$restartInterval = New-TimeSpan -Hours 24

while ($true) {
    & $nssmPath restart $serviceName
    Start-Sleep -Seconds $restartInterval.TotalSeconds
}

上述示例演示了如何编写一个 PowerShell 脚本,定时重启指定的服务。这种定期重启服务的方法有助于释放资源和解决内存泄漏等问题。

响应式支持和用户反馈

在服务管理中,用户反馈和响应式支持也非常重要。NSSM 和 PowerShell 可以帮助快速响应用户反馈,调整服务配置或者进行问题排查。

powershellCopy Code
# 处理用户反馈并快速响应
$issueReport = Read-Host "Enter the issue reported by the user"
Invoke-WebRequest -Uri "https://support.example.com/reportissue" -Method Post -Body @{Issue = $issueReport}
Write-Host "Thank you for your feedback. We will investigate and respond shortly."

通过上述代码,可以收集用户反馈并提交到支持系统,以便后续的跟进和解决问题。这种响应式支持方式有助于提升用户满意度和服务质量。

继续学习与扩展

最后,要持续学习和探索新的技术和工具,不断优化和改进服务管理的流程和效率。利用 NSSM 和 PowerShell 的强大功能,结合实际的运维经验,可以成为一个高效的系统管理员,为企业的 IT 基础设施稳定性和可靠性贡献力量。

希望这些信息能够帮助你更好地理解和应用 NSSM 和 PowerShell 在服务管理中的各种实际应用场景。


定制化服务管理

在现代系统管理中,定制化服务管理对于满足特定需求至关重要。NSSM 和 PowerShell 的结合使用可以实现高度定制化的服务管理方案,适应各种复杂的运维场景和特定要求。

动态配置和自动调整

利用 PowerShell,可以编写脚本来动态配置和自动调整服务的运行参数,以确保在不同负载情况下服务表现稳定。

powershellCopy Code
# 动态调整服务配置
$serviceName = "ServiceName"
$currentCPUUsage = Get-Counter -Counter "\Processor(_Total)\% Processor Time" | Select-Object -ExpandProperty CounterSamples | Select-Object -ExpandProperty CookedValue
$maxCPUThreshold = 80

if ($currentCPUUsage -gt $maxCPUThreshold) {
    $newMaxInstances = [Math]::Ceiling($currentCPUUsage / 10) # 增加实例数以减轻负载
    & $nssmPath set $serviceName AppParams "-maxinstances $newMaxInstances"
}

以上示例展示了如何基于当前 CPU 使用率动态调整服务的最大实例数,以优化性能和资源利用率。

多环境支持和迁移

对于涉及多个环境(如开发、测试、生产)的服务,通过 PowerShell 可以轻松实现配置和迁移管理,确保环境一致性和部署效率。

powershellCopy Code
# 多环境支持和迁移
$serviceConfigs = @{
    "dev" = "dev_config.json"
    "prod" = "prod_config.json"
}

$targetEnv = "prod"
$configFile = $serviceConfigs[$targetEnv]

Copy-Item -Path "\\fileserver\configs\$configFile" -Destination "C:\Services\$serviceName\config.json"
Restart-Service -Name $serviceName

通过这段代码,可以根据不同环境选择配置文件进行部署,确保服务在不同环境中的配置正确性和一致性。

安全审计和访问控制

最终,安全审计和访问控制是服务管理不可或缺的一部分。PowerShell 可以帮助实现安全审计策略和访问控制机制,确保服务和系统的安全性。

powershellCopy Code
# 实施安全审计和访问控制
$auditLogPath = "C:\Logs\ServiceAudit.log"
$serviceName = "ServiceName"

# 监控服务启动和停止事件
Register-WmiEvent -Query "SELECT * FROM __InstanceOperationEvent WITHIN 5 WHERE TargetInstance ISA 'Win32_Service' AND TargetInstance.Name='$serviceName'" -Action {
    Add-content -Path $auditLogPath -Value "$(Get-Date): $($event.SourceEventArgs.NewEvent.TargetInstance.Name) service $($event.SourceEventArgs.NewEvent.TargetInstance.State)"
}

以上代码示例展示了如何通过 PowerShell 监控服务的启动和停止事件,并将事件记录到安全审计日志中,以便后续的安全审查和分析。

结语

通过以上实际应用场景的示例,NSSM 和 PowerShell 的结合展示了在现代系统管理中的强大作用。无论是定制化服务管理、动态调整配置、多环境支持还是安全审计,这些工具和技术都为系统管理员提供了实现高效、安全和可靠服务管理的最佳实践。希望这些示例能够对你在服务管理和运维工作中有所帮助!


 

标签:nssmPath,NSSM,Non,Code,服务,Sucking,ServiceName,PowerShell
From: https://www.cnblogs.com/suv789/p/18280280

相关文章

  • 【Effective Python教程】(90个有效方法)笔记——第3章:函数——24:用None和docstring来描
    文章目录第3章:函数第24条用None和docstring来描述默认值会变的参数函数默认值的坑(函数的默认参数值只在定义函数时计算)解决方法:将函数默认参数值设为None,然后再在函数体中判断并初始化函数默认参数值设置为None的其他应用示例“函数默认参数值设置为None”与“函数参数......
  • non_blocking=True 与 torch.cuda.synchronize()
    需要注意的是:GPU和CPU之间是异步执行的,CPU向GPU下达指令以后会立刻执行之后的代码,CPU不会等待GPU执行完成一、non_blocking=True 目的:压缩gpu的效果,避免CPU与GPU设备数据传输时间开销带来的计算效率低下在PyTorch中, non_blocking 是一个布尔类型的参数,用于指定是否启用......
  • Mozilla 收购广告指标公司 Anonym
    在数字广告和隐私保护之间的紧张关系日益加剧的背景下,Mozilla宣布收购广告指标公司Anonym。这一举措不仅标志着Mozilla在广告技术领域的重大进展,也反映了其致力于用户隐私保护的坚定承诺。本文将探讨此次收购的背景、意义以及对未来广告技术和隐私保护的潜在影响。数字广告与......
  • VPC Access Connector 介绍 - 让 Non-VPC product 也可以访问VPC Network内的资源
    什么是VPCproduct和非VPCproduct在GCP上,VPCproduct指的是属于某个制定的vpcsubnet,具有至少1个该subnet的内网ip的产品常见的例如:computeengine/MIG(managedinstancesgroup)某些dataflowjob(指定了可选参数subnet)CloudComposer(基于airflow)......
  • 2024-06-22:用go语言,给定一个起始下标为 0 的长度为3的整数数组 nums,根据这些数字构建
    2024-06-22:用go语言,给定一个起始下标为0的长度为3的整数数组nums,根据这些数字构建三角形。如果无法构成三角形,则返回"none";否则根据三角形的边长关系返回对应类型的字符串:equilateral(等边三角形)、isosceles(等腰三角形)或scalene(不等边三角形)。输入:nums=[3,3,3]。输出:"e......
  • git文件上推失败-(non-fast-forward)
    文章目录一、问题描述二、问题原因三、解决方法3.1合并分支(1)通过图形化界面(2)通过命令行3.2解决文件合并冲突一、问题描述在使用git上推时出现下列错误:![rejected]master->master(non-fast-forward)hint:Updateswererejectedbecausethetipofyourcu......
  • linux docker 删除none的镜像
    在Docker中,通常会有一些无标签(none)的镜像和悬空镜像(即不再任何容器中使用但未被删除的镜像)。这些无标签镜像和悬空镜像可能会占用磁盘空间。要删除这些无标签的镜像,可以使用以下命令:dockerrmi$(dockerimages-f"dangling=true"-q)这条命令会删除所有未被任何......
  • WPF Stretch None,Fill,Uniform,UnformToFill
    None, Thecontentpreservesitsoriginalsize.<ImageSource="/WpfApp169;component/cl.jpg"Stretch="None"/> Fill,Thecontentisresizedtofillthedestinationdimensions.Theaspectratioisnotpreserved.<ImageSource=......
  • ReentrantLock的非公平锁(NonfairSync)深度解析:源码之旅与实战策略
    1.引言在Java并发编程中,ReentrantLock作为一种可重入的互斥锁,提供了比synchronized更强大和灵活的功能。其中,NonfairSync作为ReentrantLock内部非公平锁的实现,其设计理念和源码实现都体现了对性能和公平性的权衡。2.NonfairSync概述非公平锁特性:新到达的线程在......
  • 【Java】 深入解析Java安全异常:Error - trustAnchors parameter must be non-empty
    >>【痕迹】QQ+微信朋友圈和聊天记录分析工具>>(1)纯Python语言实现,使用Flask后端,本地分析,不上传个人数据。>>(2)内含QQ、微信聊天记录保存到本地的方法,真正实现自己数据自己管理。>>(3)数据可视化分析QQ、微信聊天记录,提取某一天的聊天记录与大模型对话。>>下载地......