薯片忍者的小站

今天的故事 是明天的回忆


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

用 acme.sh 申请通配符证书及 HTTPS 相关配置

发表于 2020-04-16 | 分类于 网络 | 阅读次数:

前言

  最近小站新增了几个二级域名,如果给每个二级域名都单独申请一个 SSL/TLS 证书未免太过麻烦,因此这次希望申请一个通配符证书,使其支持所有二级域名。
  此前我一直用 Certbot 申请 Let’s Encrypt 证书,这也是 Let’s Encrypt 官方推荐的证书管理工具,具体使用方法请见我的另一篇博文 『申请Let’s Encrypt免费SSL证书并在Node.js建立HTTPS服务』。但是后来我发现 Certbot 有些不方便,因为如果用 pip 进行安装很容易遇到 Python2 和 Python3 的兼容性问题,不过后来改用 certbot-auto 脚本解决了大部分问题。
  尝试过 acme.sh 后我彻底抛弃了 Certbot,因为它使用纯 Shell 语言编写,对各大发行版都很友好,也自然不存在 Python 的兼容问题。最重要的是 acme.sh 和 Certbot 都支持申请通配符证书,而且 acme.sh 在安装的时候就自动通过 crontab 配置好了自动更新证书的定时任务,不需要我们自己手动配置。因此 acme.sh 总体给我的感觉就是比 Certbot 省事不少。

阅读全文 »

为什么 memset() 只能将 int 数组初始化为 0 或 -1

发表于 2020-04-12 | 分类于 编程 | 阅读次数:

  C/C++ 标准库提供了很多常用的工具函数,比如在 <string.h> 中的 memset() 函数就常常被用来初始化数组,但它在初始化 int 等类型数组的时候只能初始化为 0 或 -1,如果识图用 memset() 将数组初始化为 1,就会发现每个元素都变成了 16843009。
  造成这种情况的原因很简单,因为 memset() 的作用是将内存块填充为指定的字符,这也是为什么它包含在 string.h 里的原因。因此,memset() 对内存进行赋值是以字节为单位的。
  比如我们调用 memset() 将 int 数组初始化为 1,那么数组的每个字节(不是元素)都会被设置为 00000001,而 int 占 4 个字节,故每个元素的值就是 00000001 00000001 00000001 00000001,该二进制值就是十进制的 16843009,所以 memset() 函数不能把整型数组初始化为 1。
  对于长度大于 1 个字节的变量,只能通过 memset() 设置为各字节相同的值,比如 0(全零)或 -1(全1),不能赋各字节不同的值。

LeetCode 48. 旋转图像

发表于 2020-04-07 | 分类于 编程 | 阅读次数:

给定一个 n × n 的二维矩阵表示一个图像。
将图像顺时针旋转 90 度。

说明:
你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。

阅读全文 »

LeetCode 42. 接雨水

发表于 2020-04-04 | 分类于 编程 | 阅读次数:

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

阅读全文 »

LeetCode 1162. 地图分析

发表于 2020-03-29 | 分类于 编程 | 阅读次数:

你现在手里有一份大小为 N x N 的地图(网格)grid,上面的每个区域(单元格)都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地,请你找出一个海洋区域,这个海洋区域到离它最近的陆地区域的距离是最大的。
我们这里说的距离是「曼哈顿距离」:(x0, y0) 和 (x1, y1) 这两个区域之间的距离是 |x0 - x1| + |y0 - y1| 。
如果我们的地图上只有陆地或者海洋,请返回 -1。

阅读全文 »

123…13
薯片忍者

薯片忍者

想起那些时光
总觉得自己像个傻瓜
64 日志
10 分类
128 标签
RSS
Creative Commons
友情链接
  • 杂毛小鸡杀意已决
  • Zubin`s Site
0%
© 2016 – 2020 薯片忍者
京ICP备20011227号-1
|