批处理杂记

1. exitexit命令用于退出当前的批处理脚本,并返回一个退出代码ExitCode(即返回值)。退出代码通常是一个整数,用于指示脚本执行的状态,例如成功(0)或失败(非零值)。 exit命令的语法为: 1exit [/b] [exitCode] 其中 /b 选项表示仅退出当前批处理脚本的执行,而不会影响调用脚本的父进程。如果不使用 /b 选项,则 exit 命令会终止当前整个的命令处理器进程(CMD.EXE),并返回退出代码给调用者。 exitCode 是一个可选参数,用于指定退出代码。如果未指定退出代码,则默认返回上一个命令的退出代码。

Windows批处理

基于Qt的无边框窗体实现

Qt虽然提供了诸如 Qt::FramelessWindowHint 之类的属性可以移除窗体的边框,但是移除边框之后,窗体的一些默认行为同时也被移除了,如鼠标拖动改变大小、双击标题栏最大化等,这些行为需要开发者自己来实现。 本文主要介绍实现无边框窗体的几种方案,并在最后分享了作者实现的方案。 笔者认为,一个完美的无边框窗体解决方案需要支持如下功能: 支持通过使用鼠标拖拽来改变窗体位置和大小; 支持双击标题栏最大化窗体和还原窗体; 支持 Windows Areo Snap 特性; 支持系统阴影; 支持跨不同 DPI 的屏幕拖拽; 适应分辨率和 DPI 改变;

Qt

基于Hexo搭建静态博客

Hexo是一个快速、简洁且高效的博客框架,使用Hexo可以快速地生成静态博客框架。在框架生成完成后,可以使用任意文本编辑器语法书写博客。我们可以使用Markdown语法书写博客,Hexo在生成博客时会自动将Markdown解析成Html静态页面。 Hexo官网:https://hexo.io/zh-cn/Hexo中文文档:https://hexo.io/zh-cn/docs/ 一、玩法说明使用Hexo写博客的大致流程如下: 生成博客框架 配置博客 选择自己喜欢的主题 配置博客和主题 写文章 生成博客 发布博客到服务器 其中,第1~4步为前置操作,只需要执行一次。 Hexo只负责生成静态的HTML文件,不提供服务器。如需对外发布博客,我们还需将HTML文件部署到服务器上,可以选择如下的方式: Github Pages、GitLab Pages,免费,访问速度较慢。 Gitee Pages,收费。 对象存储服务,如阿里云OSS、腾讯云COS、七牛云OSS等。当访问量大时,需搭配CDN使用,避免因数据回源产生巨额流量费用。 自己购买服务器使用Nginx搭建Web服务器。当访问量大时,服务器出口带宽要求较高,此时仍然需要搭配对象存储服务和CDN使用。

爱折腾

Redis慢日志与BigKey

1. 慢日志设置1234# 当命令耗时超过5毫秒时,记录慢日志CONFIG SET slowlog-log-slower-than 5000# 只保留最近500条慢日志CONFIG SET slowlog-max-len 500 2. 查看慢日志123456789101112131415127.0.0.1:6379> SLOWLOG get 51) 1) (integer) 32693 # 慢日志ID 2) (integer) 1593763337 # 执行时间戳 3) (integer) 5299 # 执行耗时(微秒) 4) 1) "LRANGE" # 具体执行的命令和参数 2) "user_list:2000" 3) "0" 4) "-1"2) 1) (integer) 32692 2) (integer) 1593763337 3) (integer) 5044 4) 1) "GET" 2) "user_info:1000"...

服务端开发

使用Watchtower自动更新Docker

Watch­tower 官网: https://github.com/containrrr/watchtower Watch­tower 可以用于自动更新 Docker 镜像与容器。Watch­tower 会监视正在运行的容器以及相关的镜像,当检测到 Reg­istry 中的镜像与本地的镜像有差异时,会拉取最新镜像并使用最初部署时相同的参数重新启动相应的容器。

服务端开发

Redis常见异常及处理方案

1. 缓存雪崩在短时间内本应交由 Redis 处理的大量请求,都发送到了数据库进行处理,从而导致对数据库的压力迅速增大,严重时数据库可能崩溃,从而导致整个系统崩溃,就像雪崩一样,引发连锁效应,所以叫缓存雪崩。 出现上述情况的常见原因主要有以下两点: 大量缓存数据同时过期,导致本应请求到缓存的需重新从数据库中获取数据。 redis 本身出现故障,无法处理请求,那自然会再请求到数据库那里。 针对大量缓存数据同时过期的情况: 实际设置过期时间时,应当尽量避免大量 key 同时过期的场景,如果真的有,那就通过随机、微调、均匀设置等方式设置过期时间,从而避免同一时间过期。 添加互斥锁,使得构建缓存的操作不会在同一时间进行。 双 key 策略,主 key 是原始缓存,备 key 为拷贝缓存,主 key 失效时,可以访问备 key,主 key 缓存失效时间设置为短期,备 key 设置为长期。 后台更新缓存策略,采用定时任务或者消息队列的方式进行 redis 缓存更新或移除等。 针对 Redis 本身出现故障的情况: 在预防层面,可以通过主从节点的方式构建高可用的集群,也就是实现主 Redis 实例挂掉后,能有其他从库快速切换为主库,继续提供服务。 如果事情已经发生了,那就要为了防止数据库被大量的请求搞崩溃,可以采用服务熔断或者请求限流的方法。当然服务熔断相对粗暴一些,停止服务直到 redis 服务恢复,请求限流相对温和一些,保证一些请求可以处理,不是一刀切,不过还是看具体业务情况选择合适的处理方案。

服务端开发

Windows平台文件自签名

本文使用的工具都是 Windows SDK 自带的,可以采用单独安装 Windows SDK的方式,也可以通过安装 Visual Studio 来附带安装 Windows SDK。 123456# 在弹出界面设置密码123456makecert.ex...

Windows编程

Windows音频环回录制

所谓音频环回录制就是录制扬声器播放的声音。播放到扬声器的声音已经过混合,Windows 提供了 WASAPI 来获取这种混合的音频信号。 本文将录制到原始音频样本数据写入到文件,可以使用Audacity导入原始数据试听。

Windows编程
15678923