luyuhuang.github.io
luyuhuang.github.io copied to clipboard
My blog
https://luyuhuang.tech/2021/03/31/binary-find.html 二分查找是一个很经典的入门算法, 我们每个人都学过. 然而它往往没有我们没有想象的那么简单, 它有很多容易出错的细节: 用 < 还是
https://luyuhuang.tech/2019/11/28/jekyll-step-by-step-tutorial.html 本文由 Luyu Huang 翻译, 原文地址 https://jekyllrb.com/docs/step-by-step/01-setup/. 欢迎提 issue 来帮助我改进翻译1. 配置欢迎来到 Jekyll 的手把手教学. 这个教程的目标是让你从只有一点点 web 开发经验到能够构建一个 Jekyll ...
https://luyuhuang.tech/2021/02/20/classic-dp.html 我最近温习了一下动态规划, 发现有些问题解法的代码十分相似, 但思路却大相径庭, 非常容易混淆. 这里总结一下. 这涉及到几个经典的动态规划问题: 0-1 背包问题, 完全背包问题和爬楼梯问题. 题目源自 LeetCode 416 题, 518 题, 377 题 和 70 题.我们先来来看问题和它们的解法, 你...
https://luyuhuang.tech/2021/02/05/hotfix-gen.html 游戏服务器使用 Lua 的一个重要原因是 Lua 便于热更. 即使服务器正在运行, 只需让它执行一段代码, 即可重写其中的某些函数, 达到热更新的目的. 例如模块 app 有一个函数 foolocal M = {}function M.foo(a, b) return a + bendreturn M如果我...
https://luyuhuang.tech/2021/01/27/regions-cut-by-slashes.html 一月份 Leetcode 的每日一题几乎都是并查集. 不过个人认为与状态转移方程千变万化的动态规划相比, 并查集还是相对比较简单的. 这道题是我觉得最有趣的两道之一 (另一道是打砖块, 以后有时间的话也写一篇它的题解).题目源自 Leetcode 959 题 在由 1 x 1 方格组成的 N x N 网格 gr...
https://luyuhuang.tech/2019/10/11/pass-fd-over-domain-socket.html Linux 提供了一系列系统调用使我们能在进程间传递文件描述符. 这里的
https://luyuhuang.tech/2021/01/24/reuse-port.html 我们知道, 一般来说, TCP/UDP 的端口只能绑定在一个套接字上. 当我们尝试监听一个已经被其他进程监听的端口时, bind 调用就会失败, errno 置为 98 EADDRINUSE. 也就是所谓的端口占用.int fd1 = socket(AF_INET, SOCK_DGRAM, 0);int fd2 ...
https://luyuhuang.tech/2021/01/01/2020-annual-summary.html At the beginning of 2020, no one anticipated that we would face an unprecedented pandemic that would last a year or more. 2020 is unusual, to me, pandemic, n...
https://luyuhuang.tech/2020/12/01/lua-traceback-with-parameters.html When an error occurs, Lua will print a traceback of the call stack, it helps us to find bugs. In many cases, however, a call stack traceback is not...
https://luyuhuang.tech/2020/10/29/lua-dst.html 我之前的一篇文章介绍了怎样在服务器和客户端之间同步时间和时区. 同步时间相对简单些, 本质就是一个时间差; 而时区相对复杂些. 那篇文章介绍的方法有一个问题: 在客户端的时区启用了夏令时的时候, 客户端得到的本地时间会比实际快一个小时. 原因是求客户端时区的方法不对. 例如, 太平洋时区本为 UTC-0800, ...