问题记录
未读
排查Linux根目录文件总占用小,但磁盘空间使用率高的问题
## 摘要
本文介绍如何排查Linux系统中“根目录文件总占用小,但磁盘空间使用率高”的异常问题。
**原因分析**:当文件被删除后,若有相关进程仍在运行,该文件占用的磁盘空间不会自动释放,导致df显示空间不足。
**解决方案**:使用lsof命令查找已删除但未释放的文件,按进程分组统计大小,然后重启相关进程即可回收空间。
作者提供了一个自动化脚本`showNoFreeDeletedFiles.sh`,通过`lsof | grep deleted`定位已删除文件,分析每个PID对应的文件总大小,帮助运维人员快速定位需要重启的进程,从而有效释放被占用的磁盘空间。
问题记录
未读
linux遍历指定目录下log文件内容以查找内容
## 文章摘要
本文介绍两个Linux日志搜索脚本,均用于在多个指定目录下查找.log文件中的特定内容。
**find-log.sh**:遍历10个不同业务模块的日志目录(pms、personal、order、goods、finance、logger、jd、recharge、orange、perform),根据传入的过滤关键词搜索匹配的日志行,并输出文件名及匹配内容。
**find-errlog.sh**:功能与第一个脚本类似,但增加了ERROR级别日志的过滤。搜索时先匹配关键词,再筛选ERROR类型,并额外显示匹配行后的50行上下文,便于定位错误根因。
两个脚本均使用Bash编写,通过数组存储目标目录列表,结合grep、sed等命令实现日志检索,可显著提升排查多服务日志的效率。
问题记录
未读
nginx代理设置允许跨域请求
## 摘要
本文介绍在Nginx代理服务器中配置允许跨域请求的方法。通过在location块中添加特定的响应头配置,实现对跨域访问的支持。主要配置包括:
1. **隐藏原有跨域头**:使用`proxy_hide_header`清除后端可能设置的`Access-Control-Allow-Origin`
2. **添加跨域响应头**:设置允许来源、请求头和HTTP方法均为通配符`*`
3. **优化预检请求**:对OPTIONS请求直接返回204状态码,避免不必要的代理转发
完整配置以api.test.com域名为例,监听80和443端口,反向代理到本地8100端口。配置中同时包含了SSL证书验证目录设置和安全访问限制(如禁止访问.git、.env等敏感文件)。此配置适用于前后端分离架构中API服务的跨域需求。
问题记录
未读
Windows10在启动时自动运行的应用
## 摘要
本文介绍了在Windows 10中设置应用开机自动运行的简便方法。首先,用户需在开始菜单中找到目标应用,右键点击后选择“更多”→“打开文件位置”。若未出现此选项,说明该应用不支持开机自启。接着,按Windows徽标键+R打开运行对话框,输入“shell:startup”进入启动文件夹。最后,将目标应用的快捷方式复制粘贴至该文件夹即可。
此方法适用于大多数应用,设置后每次开机指定应用将自动启动,有效提升工作效率。用户也可随时通过从启动文件夹移除快捷方式来取消自动运行。
问题记录
未读
Docker拉取镜像太慢
本文介绍了三种加速 Docker 镜像拉取的方案。
1. **国内镜像源**:在 `/etc/docker/daemon.json` 中添加阿里云、网易等镜像地址,Docker 会优先从国内节点获取镜像,显著提升下载速度。
2. **配置代理**:在 `daemon.json` 同时加入 `proxies` 项,指定 http/https 代理(如本机 127.0.0.1:7890),适用于需要通过代理访问外网的场景,可进一步优化跨地域拉取。
3. **离线迁移**:若已有镜像,先在源机器使用 `docker save -o image.tar image:tag` 导出为 tar 文件,再通过 scp/rsync 等方式拷贝至目标机器,最后在目标机器执行 `docker load -i image.tar` 加载,绕过网络限制实现快速部署。
三种方法分别从网络、代理和离线三个角度解决拉取慢的问题,可根据实际环境灵活选用或组合使用。
问题记录
未读
反编译Apk资源文件和源码
## 文章摘要
本文介绍了Android APK反编译技术,用于学习优秀APP的开发方式。反编译需要准备JDK环境、apktool(提取资源文件)、dex2jar(转dex为jar)、jd-gui(查看Java源码)及jad工具。
反编译流程分为两部分:一是使用apktool命令提取APK中的图片、布局等资源文件;二是将APK后缀改为zip后解压,获取.dex文件,再用dex2jar转换为.jar文件,最后用jd-gui打开查看源码。此外,还可通过jad将class文件进一步反编译为java源文件。
需注意,部分APP已做代码混淆处理,可能无法获得原始代码。
问题记录
未读
Charles抓包失败
## 文章摘要
本文主要介绍了Charles抓包工具在Android和iOS平台上的配置问题及解决方案。
**Android端**:Android 7及以上版本默认不信任用户安装的证书,导致抓包失败。解决方案是将Charles根证书添加到系统可信证书目录。具体步骤包括:先从Charles导出证书文件,然后计算证书的hash值,将证书重命名为“hash值.0”格式,最后通过adb工具将证书推送到模拟器的`/system/etc/security/cacerts`目录,并设置正确的文件权限。需要注意的是,操作前需确保模拟器已开启Root权限和可写入模式。
**iOS端**:证书安装后,还需在“设置→通用→关于本机→证书信任设置”中手动开启对Charles证书的信任开关,才能正常抓包。
文章提供了详细的环境配置要求和完整的命令操作流程,适合需要进行移动端网络抓包的开发人员参考。
问题记录
未读
Navicat登陆Mysql8.0报“caching_sha_password”错误
## 文章摘要
本文介绍了使用Navicat连接MySQL 8.0时遇到的“caching_sha_password”认证错误问题及其解决方案。
**问题原因**:MySQL 8.0默认采用caching_sha2_password认证插件,而旧版Navicat可能不支持该认证方式。
**解决方案**:通过SQL命令修改用户的认证方式。具体步骤为:使用ALTER USER命令将root用户(localhost和%主机)的认证插件改为mysql_native_password,然后执行FLUSH PRIVILEGES使更改生效,最后可通过查询user表确认plugin字段已更新。
**补充说明**:若提示“mysql_native_password”插件未加载,需在MySQL配置文件my.cnf中添加“mysql_native_password=ON”参数来启用该认证方式,然后使用SHOW PLUGINS命令验证插件状态。
问题记录
未读
排查Java程序CPU占用原因
## 排查Java程序CPU占用原因摘要
本文介绍了排查Java程序CPU占用高的系统方法,涵盖两个主要方面:
**CPU占用排查步骤**:首先使用top命令定位进程ID,然后通过ps命令查找高占用的Java线程ID(若为主线程可能是GC问题)。接着将线程ID转换为16进制格式,最后使用jstack命令配合线程ID获取详细堆栈信息进行深入分析。
**Dump包分析**:文章提供了自动和手动两种dump包导出方式。自动方式通过配置JVM参数`-XX:+HeapDumpOnOutOfMemoryError`实现;手动方式使用jmap命令。分析时启动jhat服务,可通过Web界面查看类实例直方图,定位内存占用最大的对象。
该方法论能帮助开发人员快速定位CPU性能瓶颈,是Java性能调优的基础技能。
问题记录
未读
Windwos启动Docker失败
## 摘要
本文介绍了Windows 10环境下Docker启动失败的解决方案。
**问题现象**:启动Docker时提示WSL命令执行异常,错误代码为Wsl/Service/0x8007273d,WSL本身也无法正常运行。
**解决方案**:
1. **临时方案**:在管理员PowerShell中执行`netsh winsock reset`命令重置网络组件。
2. **重装WSL**:通过设置卸载WSL后,从应用商店重新安装。
3. **彻底修复**:使用NoLsp.exe工具修复LSP协议冲突。具体步骤包括下载NoLsp.exe,获取WindowsApps中WSL安装目录,然后对wsl.exe、wslservice.exe、wslg.exe、wslhost.exe等文件执行NoLsp.exe修复命令。同时提供了PowerShell脚本自动添加注册表项以永久解决该问题。该方案针对安装了代理软件导致的网络协议冲突最为有效。