为什么 C++ 模板只能写在一个文件里?

在一般的 C++ 开发中,习惯将函数声明与实现放在不同的文件中,如声明放在 .h 文件,实现放在 .cpp 文件,并在其它地方引用时只包含 .h 文件。但对于 C++ 的模板,这是一个例外,它只能被写在一个文件中。 普通函数 // test.h int sumInt(int a, int b); //…

Mac mini with Apple Silicon 使用体验

我的 Mac mini 是从官网订购的,因为当时其它平台只有 8GB 版本,而作为开发机并且考虑到 macOS 的内存管理机制果断买了 16GB。也正是因此等了近半个月才拿到机器。硬盘选择的是 512G,不过对于我来说开发机 256G 是完全够用的,…

HomePod 打造音乐闹钟

前言 众所周知,一只独立的 HomePod 只能播放 Apple Music 里面的音乐,并不支持其它 App。如果想用手机或其它设备往上面投歌,它不支持蓝牙,就只能使用基于 Wi-Fi 协议的 AirPlay,这意味着你需要有一台 iPhone 或 Mac 设备,并且忍受它 3…

使用 GitHub Actions 实现博客自动化部署

TL;DR 最近把博客渲染、部署的工作从我很久前自己写的 blog-deploy 迁移到了 Hugo,原因是前者功能太简单了,而又无心再去维护。顺便又优化了下博客样式,加入了近年来流行的暗色元素。 由于我的博客是全权托管在 GitHub 上的,以前 repo 全…

使用 PHP 的 Phar 包实现程序自动更新

前两天有 PHP 的道友问我如何拿 PHP 实现程序自动更新。但是我对自动更新这个功能,说实话是并没有太大兴趣去搞的。我认为我把我写的程序源码放到 GitHub 这种代码托管平台上,然后如果你需要用的话就直接 clone 下来丢到服务器上跑就…

在 JavaScript 中使用 Generator 函数实现异步变同步操作

在 ES6 中提供了一种新的异步编程解决方案,那就是 Generator 函数。这种函数又被称为生成器函数、可暂停函数。在它的方法体内可以使用 yield 关键字,配合 yield 可以实现协程。 本文主要介绍对 Generator 函数的实际应用,不过多介绍 Generator 函数的相关基…

让 Vue-cli 支持 Netlify 的 Redirect

最近有个 Vue 项目,是使用 Vue-cli 构建起来的。Vue-Router 是使用的 HTML5 History 模式。这个模式是使用浏览器提供的 History 接口实现的,所以如果是在页面上通过点击链接往里面 push 一个新地址是没问题的,但是如果直接请求这个地址则…

Golang 协程与通道

这篇文章记录了我学习 Go 语言中的协程与通道的一些笔记,是片断性的。 01. 无缓冲通道 ch := make(chan int) 无缓冲通道只能包含 1 个元素,读和写都是阻塞的。 02. 缓冲通道 ch := make(chan int, 5) 有缓冲的通道可以包含指定个数的元素,读和写都是异步…

Golang 项目目录结构

项目的目录结构会影响整个项目的文件排布甚至是整个项目的文件架构。所以在开始编写代码之前要先明确项目的目录如何去安排。其它语言可能对项目结构没有什么要求,相对更加自由一些,而 Go 语言做了这方面的规定。这样…

Golang 指针的一些零散笔记

最近学习了一下 Go 语言,发现里面很多东西都和其他语言都不太一样。下面是学习过程中对 Go 中的指针部分做的一些片段性的笔记。 01. 数组指针 package main import "fmt" func main() { // 一个 [3]int 型数组 arr := [...]int{1, 2, 3} p := &arr // 一个指向 [3]int 型数组的指针 test(p) // 传…

Next Page Prev Page