[
2025/09/19 11:05 | by 孤城浪子 ]

把下面内容保存为 apksign.bat 文件:
@echo off
setlocal enabledelayedexpansion:: 设置 build-tools 路径
set "BUILD_TOOLS_DIR=.\33.0.2"
:: 检查是否传入了参数
if "%~1" equ "" (
echo.
echo 错误:请提供一个文件名作为参数,可以不输入扩展名,处理时自动添加.apk。
echo.
echo 示例: %~n0 appname 或 %~n0 appname.apk
goto :end
)
:: 获取原始文件名(不含路径)
set "original_filename=%~nx1"
:: 获取文件扩展名
set "file_ext=%~x1"
:: 判断文件扩展名是否为空,如果为空,则添加.apk
if "%file_ext%" equ "" (
set "original_filename=%original_filename%.apk"
)
:: 获取文件名(不包含路径和后缀)
for %%f in ("%original_filename%") do set "input_file=%%~nf"
:: 定义处理过程中的临时和最终文件名称
set "v1_signed_apk=%input_file%_v1.apk"
set "v1_signed_v2_aligned_apk=%input_file%_align.apk"
set "final_signed_apk=%input_file%_signed.apk"
del "%v1_signed_apk%"
del "%v1_signed_v2_aligned_apk%"
echo.
echo =========================================================
echo 开始对文件 "%original_filename%" 进行 APK 签名和对齐
echo =========================================================
echo.
:: 步骤1:V1 签名
:: 将原始APK进行V1签名,并输出到v1_signed_apk文件
echo 正在执行 V1 签名...
jarsigner -verbose -keystore key.keystore -storepass 123456 -signedjar "%v1_signed_apk%" "%original_filename%" key >nul
if errorlevel 1 goto :error_handler
echo.
echo V1 签名完成。生成文件: "%v1_signed_apk%"
echo.
:: 步骤2:zipalign 对齐
:: 对V1签名后的文件进行对齐操作,并输出到v1_signed_v2_aligned_apk文件
echo 正在执行 zipalign 对齐...
zipalign 4 "%v1_signed_apk%" "%v1_signed_v2_aligned_apk%"
if errorlevel 1 goto :error_handler
echo.
echo 对齐完成。生成文件: "%v1_signed_v2_aligned_apk%"
echo.
:: 步骤3:V2 签名
:: 对齐后的文件进行V2签名,并输出到final_signed_apk文件
echo 正在执行 V2 签名...
call "%BUILD_TOOLS_DIR%\apksigner.bat" sign --ks key.keystore --ks-key-alias key --ks-pass pass:123456 --out "%final_signed_apk%" "%v1_signed_v2_aligned_apk%"
if errorlevel 1 goto :error_handler
echo.
echo V2 签名完成。最终文件: "%final_signed_apk%"
echo.
:: 步骤4:验证最终文件的 zipalign 对齐
echo 正在验证最终文件的对齐...
zipalign -c -v 4 "%final_signed_apk%" >nul
call "%BUILD_TOOLS_DIR%\apksigner.bat" verify -v --print-certs "%final_signed_apk%"
echo.
echo 签名和对齐流程全部完成!
echo 最终文件: "%final_signed_apk%"
:: 清理中间文件
echo 正在清理中间文件...
del "%v1_signed_apk%"
del "%v1_signed_v2_aligned_apk%"
goto :end
:error_handler
echo.
echo 错误:签名或对齐过程中出现问题。请检查命令和文件。
echo.
:end
endlocal
[
2025/04/08 19:01 | by 孤城浪子 ]

编辑配置文件
%localappdata%\Logitech\Logitech Gaming Software\settings.json
在最后一个括号前添加
, "notification" : { "showDpiChangeToastNotify" : false, "showProfileChangeToastNotify" : false }
保存退出,然后把settings.json设置成只读
如图:
To anyone that stumbles with this you can disable the notifications by editing the file located at: `%localappdata%\Logitech\Logitech Gaming Software\settings.json`
and adding this before the last }:
, "notification" : { "showDpiChangeToastNotify" : false, "showProfileChangeToastNotify" : false }Set the file to read-only!
[
2025/04/06 18:25 | by 孤城浪子 ]

Windows Server 2025 和 Win11不能直接拖放文件到任务栏软件上打开,解决方法:
Win+R,输入secpol.msc 打开本地安全策略,
本地策略--安全选项--用户账户控制:用于内置管理员账户的管理员批准模式,
双击,已启用,重启电脑,OK
适用于24H2版本
[
2024/09/15 21:21 | by 孤城浪子 ]

原因:微软在 24H2 更新中强制使用 SMB 签名、禁用访客回退等措施
解决方法:组策略---Microsoft 网络客户端: 对通信进行数字签名(始终) 改成禁用
[
2024/06/08 10:35 | by 孤城浪子 ]

在 Kubernetes 中,您可能需要重置节点并将其重新加入集群,原因有很多,例如:
- 节点出现故障需要重建
- 节点操作系统需要升级
- 节点配置需要更改
- 节点需要从集群中永久移除
以下是一些关于如何重置 Kubernetes 节点并将其重新加入集群的步骤:
步骤 1: 驱逐节点(可选)
如果可能,最好先从集群中安全地驱逐节点。这将确保在节点不可用时,工作负载能够平稳地迁移到其他节点上。您可以使用以下命令驱逐节点:
kubectl drain <node-name> --ignore-daemonsets --delete-local-data
步骤 2: 从集群中删除节点
使用以下命令从集群中删除节点:
kubectl delete node <node-name>
步骤 3: 清理节点
在节点本身上,您需要清理所有 Kubernetes 组件和数据。这可以通过以下步骤完成:
-
停止 kubelet 服务:
systemctl stop kubelet
-
禁用 kubelet 服务:
systemctl disable kubelet
-
清除所有 Kubernetes 相关文件和目录,包括:
- /var/lib/kubelet/*
- /etc/cni/net.d/*
- /var/lib/cni/*
- /etc/kubernetes/*
您可以使用以下命令删除这些文件和目录:
rm -rf /var/lib/kubelet/* /etc/cni/net.d/* /var/lib/cni/* /etc/kubernetes/*
步骤 4: 重置网络配置(如果需要)
如果您的节点使用 CNI 网络插件,您可能还需要重置网络配置。这可以通过删除 CNI 配置文件并重启网络服务来完成。
步骤 5: 重新加入节点
清理节点后,您可以使用与最初添加节点时相同的步骤将其重新添加到集群中。这通常涉及运行由 kubeadm join 命令生成的加入脚本。
注意事项:
- 在执行这些步骤之前,请备份您的 Kubernetes 集群和节点。
- 这些步骤可能会导致数据丢失,因此请谨慎操作。
- 在某些情况下,您可能需要执行其他步骤来重置和重新加入节点,具体取决于您的环境。