GitHub 上导出 patch

在 Pull Request 的 URL 结尾加上 .patch 即可重定向到 PATCH

例如 https://github.com/hubenchang0515/SmartQQ/pull/3 添加 .patch 变为 https://github.com/hubenchang0515/SmartQQ/pull/3.patch 即可重定向到 https://patch-diff.githubusercontent.com/raw/hubenchang0515/SmartQQ/pull/3.patch

查看全文

Golang JSON 序列化时动态忽略字段

在使用 JSON 时经常遇到需要忽略字段的情况,例如返回用户信息时不能返回密码,通常将注解 TAG 设为 json:"-" 即可:

1type User struct {
2	Account  string `json:"account"`
3	Password string `json:"-"`
4	Nickname string `json:"nickname"`
5}
查看全文

Kafka 部分常用配置

Kafka 有两种使用方式:基于 zookeeper 和基于 kraft.

  • 基于 zookeeper

启动:

1./bin/zookeeper-server-start.sh ./config/zookeeper.properties
2./bin/kafka-server-start.sh ./config/server.properties
查看全文

OpenGL 选择使用独立显卡

OpenGL 没有手动选择显卡的 API,在同时具备核心显卡和独立显卡的设备上常常会在核显上运行。

Windows 上可以添加如下代码选择使用独显:

1#ifdef __cplusplus
2extern "C" {
3#endif
查看全文
查看全文

nginx 常用命令与基础配置

常用命令

  1. 启动: nginx
  2. 使用指定配置文件启动: nginx -c /path/to/file
  3. 正常停止: nginx -s quit
  4. 快速停止: nginx -s stop
  5. 重新加载配置: nginx -s reload 或 systemctl reload nginx
  6. 重启: systemctl restart nginx
查看全文

FreeRTOS 协同程序

协同程序是一种特殊的多任务编程方式,多个协同程序之间共用调用栈,且正在运行的协同程序不会被其他协程抢占(可以被任务和中断抢占),正在运行的协同程序只能自己主动让出CPU的使用权。要使用协同程序,需要将FreeRTOSConfig.h中的configUSE_CO_ROUTINES设为1。

FreeRTOS的协同程序采用switch-case实现,函数定义方式如下:

1void CoRoutineTask(CoRoutineHandle_t handle,UBaseType_t uxIndex)
2{
3    //协同程序中变量如果要保证值在下一次运行时仍有效,则必须为static
4    static const TickType_t delay = 1000 / portTICK_PERIOD_MS;
5 
查看全文

FreeRTOS 中断处理和中断安全API

FreeRTOS的任务优先级是数值越大,优先级越高,0是最低优先级;而Cortex-M的中断优先级是数值越大,优先级越低,0是最高优先级。

FreeRTOSConfig.h中的宏configLIBRARY_LOWEST_INTERRUPT_PRIORITY表示最低中断优先级,从FreeRTOS的demo中复制出来的这个头文件中这个宏的值是15,即从0到15一共16个优先级。Cortex-M的中断优先级有抢占优先级和子优先级两个,但FreeRTOS中没有提供处理子优先级的功能,只使用抢占优先级。因此需要将STM32的中断优先级组设置为16个抢占优先级、1个子优先级,即第四组中断优先级组。

1//优先级组是STM32中优先级分配方式的选择,"组"这个翻译可能不太合适
2//使用第四组中断优先级组
3NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
4//STM32有0到4共五组优先级组
查看全文