logo

  • Windows 简单访问 WSL2

    想必很多人在使用 WSL 时都遇到过与 Windows 主机通信的问题。在日常编程中,很常用的场景是在 Windows 中访问部署在 WSL 中的数据库、web 或其它服务等。Windows 本身是会做映射的,比如使用如下命令启动一个 http server:

    1
    2
    ➜ source git:(master) python -m http.server
    Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

    这时在 Windows 上访问 localhost:8000是可以正常打开的。但在某些其它场景(如数据库连接时),该映射又会失效。可能是因为 WSL 默认只映射了 http 服务的端口?(存疑)

    为了解决上述问题,我们需要一种手段来确保 Windows 主机能够轻松访问到 WSL。以下列举三种解决方式,并最后详细描述我的解决方案。

    more…
  • GoLand 的完美 leetcode 刷题体验

    大概从大二开始,我开始陆陆续续地刷一些 leetcode 题,最开始是用 java,之后很长一段时间在用 go。在刷题的过程中,我的刷题方式发生了很大的变化。

    最开始是使用 leetcode 的在线编辑器刷题,题目极其简单还好,稍微复杂一些需要引库,在线编辑器的自动补全能把人逼疯…没多久,我就弃用了这种最原始的刷题方法。

    一个小提示:参加技术招聘时的笔试有很大可能是在网页编辑器中作答的。

    平常不使用在线编辑器刷题主要是为了方便,但也不要因此变成离开 IDE 后就不知所措、标准库方法名都忘记的工具型选手!

    more…
  • jellyfin 基础教程

    jellyfin 是一个出色的本地媒体库管理工具,之前我素有耳闻,不过没有实际使用过。最近尝试用它管理本地 1T 机械硬盘里的资源,才发现自己过去的追番操作有多原始……于是我决定写篇文章记录一下我对 jellyfin 的摸索过程,也希望给刚刚接触这方面的萌新们一些微不足道的帮助。

    more…
  • fish shell 脚本编写指南

    该文章翻译自FISH SHELL SCRIPTING MANUAL,因本人才疏学浅,难免有错误/不通顺的地方,还望读者在评论区不吝赐教。

    通过例子学习如何编写 fish shell 脚本。

    脚本顶部的 shebang 行

    为了在终端中运行 fish 脚本,你需要做如下两件事:

    1. 将以下 shebang 行添加到脚本顶部:#!/usr/bin/env fish
    2. 使用以下命令将文件标记为可执行:chmod +x <你的 fish 脚本文件名>
    more…
  • trilium - 构建你的个人知识库

    最近偶然了解了一款笔记应用:trilium。正如其README中写的那样:

    Build your personal knowledge base with Trilium Notes.

    使用这款软件,可以很方便地构建个人知识库,其独特的设计和极高的拓展性吸引了我。

    more…
  • 记 wslg 导致的 wsl2 高 CPU 占用的解决方法

    自升级 windows 11 以来,我经常在使用 wsl 时遇到电脑风扇狂转,托盘不断闪动的状况,但由于在学校宿舍嘈杂的环境里不是很明显,我一直没有太在意。

    最近放假回到家,自己闲来无事刷了刷剑指 offer,惊觉电脑风扇声音竟然如此巨大,遂尝试搜索解决一下。

    more…
  • Go 泛型初探

    Go 团队于 12 月 14 日发布了 Go 1.18 Beta 1,正式引入了对泛型的支持。详见 The Go Blog。笔者近日也下载尝了个鲜。

    下载安装

    按照官方文档下载安装 beta 版本:

    1
    2
    3
    4
    5
    6
    7
    ❯ go install golang.org/dl/go1.18beta1@latest

    # 注:以下可执行文件位于$GOPATH/bin,如未配置环境变量可手动指定路径
    ❯ go1.18beta1 download

    ❯ go1.18beta1 version
    go version go1.18beta1 linux/amd64

    安装完成!

    more…
  • singleflight的作用、实现及思考

    最近学习实现了 GeeCache 中的singleflight,写篇文章谈谈自己的理解。

    是什么?

    首先介绍一下缓存击穿的概念:

    一个存在的 key,在缓存过期的一刻,同时有大量的请求,这些请求都会击穿到 DB ,造成瞬时 DB 请求量大、压力骤增。

    其实很好理解,将缓存简单理解成map[string]interface{}get(key)主要分为三步:

    1. 检查 key 是否存在于 map 中,如存在则直接返回
    2. key 不存在,调用fn(key)从数据库中获取数据
    3. 调用完成,数据库返回结果,将返回的结果缓存到 map 中并返回
    more…