luyuhuang.github.io
luyuhuang.github.io copied to clipboard
My blog
https://luyuhuang.tech/2020/10/23/lua-next.html 熟悉 Lua 的同学都知道, Lua 是允许在 for ... pairs 循环中修改和删除表中元素的. 下面这样的代码是没有任何问题的:local t = {a = 1, b = 2, c = 3}for k, v in pairs(t) do if v ==...
https://luyuhuang.tech/2020/09/05/permutation.html 给定 n 个不同的元素, 问有多少种不同的排列方式. 这就是全排列问题. 我们高中时就学过排列公式 $A_n^m = \frac{n!}{(n-m)!}$, 因此对于 n 个元素, 全排列数等于 $A_n^n = \frac{n!}{(n-n)!} = n!$ . 例如对于序列 [1, 2, 3] 全排列为[1,...
https://luyuhuang.tech/2020/08/28/single-number.html 这里分享三道寻找数组中只出现一次的数字的问题. 这些题使用哈希表都很好做, 但这里我们使用位运算, 可以很巧妙地在常数空间复杂度内解决问题.第一题题目源自 Leetcode 136 题 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应...
https://luyuhuang.tech/2020/08/27/rfc1928.html socks5 是一个常用的代理协议, 它既可以用来代理 TCP, 也可以代理 UDP. socks5 的用途非常广泛, 许多网络软件都支持 socks5, 主流操作系统也支持使用 socks5 作系统代理. RFC 1928 是 socks5 协议的规范文档, 本文是对 RFC 1928 的翻译. 原文见 RFC...
https://luyuhuang.tech/2019/09/17/sqrt.html 1.先说结论$\sqrt{a}$ 可这样求得: 令 $x_0$ 为任意实数, 执行以下迭代式:\[x_i = \frac{x_{i-1}+\frac{a}{x_{i-1}}}{2} \tag{1}\]迭代若干次, 当 $|x_i-x_{i-1}|$ 小于想要的精度时便可停止迭代. 最终的 $x_i$ 便可视为 $...
https://luyuhuang.tech/2017/08/19/avoid-using-unsigned-numbers.html 考察这样一段代码:int a = -1;unsigned int b = 1;if (a < b) printf(
https://luyuhuang.tech/2019/09/12/use-latex-in-jekyll.html 我准备用 Jekyll + Github page 搭建自己的技术博客. 但是有个问题, 技术文章中不可避免地需要使用到数学公式, Jekyll 原生的 Markdown 解释器总是不能很好地使用 Latex. 通过查阅资料, 我最终解决了这个问题. 下面是我的做法: 禁用 Kramdown 自带的公式...
https://luyuhuang.tech/2020/08/08/y-combinator.html 如何实现一个阶乘函数? 最简单的做法是使用递归:'use strict';function factorial(n) { if (n === 0) { return 1; } else { return n * factorial(n - 1); }}很好. 那么如何...
https://luyuhuang.tech/2020/07/16/character-encoding.html 相信我们每个人都被乱码的问题困扰过. 乱码常常令人十分头疼, 这主要是因为没有搞清楚字符编码的问题: 何为 encode 何为 decode, UTF-8 和 Unicode 是什么关系, 它与 UTF-16 和 UTF-32 的区别又是什么, BOM 头又是什么东西等等. 这里我们彻底地捋一遍字符编码问题. 首...
https://luyuhuang.tech/2020/06/24/lpeg.html LPeg 是一个 Lua 的模式匹配库. 笔者刚刚接触到 LPeg 时, 以为它只是另一种形式的正则表达式; 深入了解才发现, 它的功能远远强于正则表达式, 能够轻易匹配正则表达式难以匹配的复杂模式, 乃至解析语法. 事实上, LPeg 即是 Parsing Expression Grammars for Lua...