全排列问题给定 n 个不同的元素, 问有多少种不同的排列方式. 这就是全排列问题. 我们高中时就学过排列公式 \(A_n^m = \frac{n!}{(n-m)!}\), 因此对于 n 个元素, 全排列数等于 \(A_n^n = \frac{n!}{(n-n)!} = n!\) . 例如对于序列 [1, 2, 3] 全排列为 123456[1, 2, 3][1, 3, 2][2, 1, 3][2, 3, 1 September 5, 2020 #algorithms #leetcode
只出现一次的数字这里分享三道寻找数组中只出现一次的数字的问题. 这些题使用哈希表都很好做, 但这里我们使用位运算, 可以很巧妙地在常数空间复杂度内解决问题. 第一题 题目源自 Leetcode 136 题 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 12输入: [2, August 28, 2020 #algorithms #leetcode
[翻译] RFC 1928: SOCKS 协议第 5 版socks5 是一个常用的代理协议, 它既可以用来代理 TCP, 也可以代理 UDP. socks5 的用途非常广泛, 许多网络软件都支持 socks5, 主流操作系统也支持使用 socks5 作系统代理. RFC 1928 是 socks5 协议的规范文档, 本文是对 RFC 1928 的翻译. 原文见 RFC 1928 - SOCKS Protocol Version 5. 以下是翻译正文: August 27, 2020 #translations
Y-Combinator: 如何在匿名函数中递归调用自身如何实现一个阶乘函数? 最简单的做法是使用递归: 123456789'use strict';function factorial(n) { if (n === 0) { return 1; } else { return n * factorial(n - 1); }} August 8, 2020 #math
搞清楚令人头疼的乱码问题相信我们每个人都被乱码的问题困扰过. 乱码常常令人十分头疼, 这主要是因为没有搞清楚字符编码的问题: 何为 encode 何为 decode, UTF-8 和 Unicode 是什么关系, 它与 UTF-16 和 UTF-32 的区别又是什么, BOM 头又是什么东西等等. 这里我们彻底地捋一遍字符编码问题. 首先搞清楚几个概念: 基本概念 字符 字符指语言中的书写原子, 是不可再分的最小单元, July 16, 2020 #problems
使用 LPeg 解析语法LPeg 是一个 Lua 的模式匹配库. 笔者刚刚接触到 LPeg 时, 以为它只是另一种形式的正则表达式; 深入了解才发现, 它的功能远远强于正则表达式, 能够轻易匹配正则表达式难以匹配的复杂模式, 乃至解析语法. 事实上, LPeg 即是 Parsing Expression Grammars for Lua, 它设计出来就是用来解析语法的. 使用 LPeg 能够轻松地解析各种语法, 比如用四 June 24, 2020 #tools #lua
使用 Cloudflare 免费搭建 HTTPS 服务细心的朋友可能发现博客的域名变了. 笔者最近买了一个域名, 让它映射到我的 Github Pages 上. 然后我还在搬瓦工买了一个廉价 VPS 用于搭建一些服务, 比如 RSSHub 和 TTRSS, 同样把域名映射到这上面. 为什么要用域名而不直接使用 IP 地址呢? 一是域名要比 IP 地址好记, 可以使用主机名区分不同的服务 (而不是端口); 二是可以使用 HTTPS. SSL 证书通常很 June 3, 2020 #practice
[翻译] Nginx 入门指南本文由 Luyu Huang 翻译, 原文地址 http://nginx.org/en/docs/beginners_guide.html. 欢迎提 issue 来帮助我改进翻译 本文给出一个 nginx 的基本介绍并展示一些能用 nginx 实现的简单例子. 这里假设你的机器上已经安装好了 nginx, 如果没有, 请先参见 nginx 安装. 本文介绍如何启动和停止 nginx, 如何重新 May 22, 2020 #tools #translations
Synchronize time and time zone between client and serverThe time in online games is generally based on the server time, which include the time used by the client for calculation and display, since the time in the client may be incorrect. In addition, my ga May 8, 2020 #experience #lua #english
Gzip 格式和 DEFLATE 压缩算法1. 引言 当你键入 tar -zcf src.tar.gz src, 就可以将 src 下的所有文件打包成一个 tar.gz 格式的压缩包. 这里的 “tar” 是归档格式, 将多个文件组合成一个文件; 而 “gz” 指的就是 gzip 压缩格式, 使用 DEFLATE 算法压缩得到. 作为使用最广泛的无损压缩算法, DEFLATE 是怎样工作的, 背后的原理是什么? 这篇文章我们来讨论下这个问 April 28, 2020 #algorithms #featured