Japanese Word Series - Countries


Countries Hiragana 漢字 English にほん 日本 Japan ちゅうごく 中国 China かんこく 韓国 Korea アメリカ America イギリス United Kingdom インド India インドネシア Indonesia タイ Tailand ドイツ Germany フランス France ブラジル Brazil …
Read more ⟶

Japanese Word Series - Vegetables & Meat


Vegetables 単語 中文 トマト 西红柿 ししとう 青椒 唐辛子(とうがらし) 辣椒 きゆうに 黄瓜 かぼちゃ 南瓜 冬瓜(とうがん) 冬瓜 ゴーヤ 苦瓜 オクラ 秋葵 なす 茄子 ジャガイモ 土豆 山芋(やまいも) 山药 蓮根(レンコン) 莲藕 人参(にんじん) 胡萝卜 大根(だいこん) 白萝卜 サマネギ 洋葱 さつまいも 红薯 レタス 生菜 ほうれん草 菠菜 ネギ 大葱 ニラ 韭菜 ブロッコリー 西兰花 Meat(にく) 単語 中文 牛肉(ぎゅうにく) 牛肉 豚肉(ぶたにく) 猪肉 鶏肉(とりにく) 鸡肉 魚(さかな) 鱼 References 野菜の図鑑 …
Read more ⟶

Janpanese Word Series - Fruits


Fruits 単語 中文 バナナ 香蕉 ぃんご 苹果 梨(なし) 梨 桃(もも) 桃 オレンジ 橙子 金柑 金桔 ぶどう 葡萄 いちご 草莓 ライチ 荔枝 レモン 柠檬 ラズベリー 树莓 ヤマモモ 杨梅 ゆず 柚子 マンゴスチン 山竹 マンゴ 芒果 マルーベリー 蓝莓 桑の実(くわのじつ) 桑葚 キウイ 猕猴桃 柘榴(ざくろ) 石榴 スイカ 西瓜 References https://ryoko-club.com/food/sub-fruit.html …
Read more ⟶

技术图谱


以下是我根据个人经验整理的技术图谱,主要是为了做技术梳理,同时希望能够给予别人一点帮助,后续会不定期更新。…
Read more ⟶

MacOS 环境批量安装软件


最近工作使用的电脑新换到 MacBook Pro M1 13寸,平时工作使用的各种工具 & 软件都需要重新安装 & 配置,耗时耗力而且没有太多成就感,所以一直在思索如何将其自动化掉,避免每次换电脑都要做重复的劳动。自己平时安装各种软件比较依赖 HomeBrew,印象中它有提供 Brewfile 可以批量安装软件,只是自己一直没有使用起来。刚好趁这次机会拿来练练手,一来总结经验以备下次复用,二来分享出来希望可以帮助到他人。下面分享下我是如何使用 Brewfile 批量安装工作必备软件的。 1. 前提 使用 Brewfile 进行批量安装前,需要安装: git HomeBrew 另外若在 Brewfile 中指定 mas 从 AppleStore 安装软件,请保证 AppleID 已登录。 2. 列出所需软件清单,形成 Brewfile 在批量安装前,列出自己平时工作所需的软件,在任意目录下创建名为 Brewfile 的文件,文件内容及格式可以参考我目前使用的 Brewfile 来声明: # taps tap "homebrew/bundle" tap "homebrew/cask" tap "homebrew/core" # packages brew 'vim' brew 'git' brew 'zsh' brew 'tmux' brew 'ripgrep' brew 'bat' brew 'helix' brew 'jq' brew 'mas' # tools cask 'emacs' cask 'google-chrome' cask 'notion' cask 'alfred' cask 'warp' cask 'intellij-idea-ce' cask 'sequel-pro' cask 'clashx' cask 'tunnelblick' # language # cask 'java' brew 'go' brew 'cmake' brew 'maven' brew 'yarn' # install apps from apple store: 1.…
Read more ⟶

域名是如何解析的?


基本概念

我们生活在互联网时代,每天的工作生活几乎都在与互联网打交道,比如使用 Google 查找工作学习所需资料,使用 Youtube、抖音、网易云音乐等进行娱乐活动,通过 Twitter、微博、微信等获取新闻资讯及社交,使用京东、天猫、拼多多等购物,使用微信支付、支付宝支付进行付款等,这些都离不开网络。那么作为构成网络基础设施核心之一的域名(Domain)你知道是如何工作的吗?下面我们简单展开介绍下。

所有的信息都存储在服务器上,可通过 IP 地址访问获取,但通常 IP 地址难以记住,于是乎产生了域名概念。起初网络仅有少数服务器构成,域名到 IP 的映射信息可存储在单个文件(eg: /etc/hosts),随着网络的蓬勃发展,单文件难以容纳所有的域名IP 映射关系,同时映射关系变更时,难以及时同步至各服务器,于是 DNS(Domain Name System) 协议诞生,映射关系通过 DNS 服务器集中存储,用户根据所需向 DNS 服务器查询。那么 DNS 服务器是如何来存储域名映射关系的呢?这个映射关系是谁来负责写入的呢?下面来揭晓。

Read more ⟶

Emacs 常用基本操作


Emacs 作为 Programmer 熟知的两大 Editor 之一流行了很多年了,据说学习曲线陡峭,一直处于劝退状态。但作为喜欢折腾各种工具的自己来说,内心一直有跃跃欲试的想法,终于最近两个月得闲,开始研究学习上了。通过学习官网Tutorials 熟悉其基本操作 & 配置,同时 Google 了解 Emacs 使用频次最高的一些插件,在使用过程中不断优化配置,打造成自己趁手的工具。目前,我主要有三种使用场景: 1. 文本编辑 2. 代码阅读 3. 写业余代码。以下是我在学习过程中整理的常用基本操作,分享出来一方面是当作学习笔记输出,以便后续遗忘时快速查找,另一方面也希望能带给他人一些帮助。

目前的常用操作有:

  • 单文件操作
  • 光标移动
  • 复制(copy) & 粘贴(paste)
  • 插入(insert) & 删除(delete)
  • 撤销(undo) & 重做(redo)
  • 窗口操作
  • 阅读代码常用操作
  • 查看帮助文档

在使用 Emacs 时,有几个关键概念:

  • Buffer
  • Window
  • Frame
  • Mode

请自行查阅文档了解。

注:C-h 表示按住 Ctrl 键的同时按 h 键;M-x 表示按住 Alt/Meta 键的同时按 x 键; S-p f 表示按住 Windows 键,再依次按 p f 键。

Read more ⟶

MySQL 数据库优化


MySQL 数据库优化可从以下方面着手: SQL 语句优化 索引优化 锁优化 缓存优化 InnoDB 存储引擎优化 1. SQL 语句优化 检查 select 的 where 条件是否走索引,可用 explain 查看。 最小化全表扫描次数。 定期使用 ANALYZE TABLE 以保持表的统计信息是最新的。 更多,请参考: https://dev.mysql.com/doc/refman/8.0/en/select-optimization.html 2. 索引优化 参考: https://dev.mysql.com/doc/refman/8.0/en/optimization-indexes.html 3. 锁优化 参考: https://dev.mysql.com/doc/refman/5.7/en/locking-issues.html 4. 缓存优化 参考: https://dev.mysql.com/doc/refman/5.7/en/buffering-caching.html 5. InnoDB 存储引擎优化 5.1 InnoDB 存储磁盘 I/O 优化 5.1.1 参数 innodb_buffer_pool_size innodb_buffer_pool_size 一般调为系统内存的 50%~75%。 5.1.2 参数 innodb_flush_method InnoDB 默认为 fsync,但在一些 GNU/Linux 或 Unix 发行版下,fsync 刷新缓存文件至磁盘非常慢,可将 innodb_flush_method 调整为 O_DSYNC。 5.1.3 参数 innodb-fsync-threshold InnoDB 默认为 0,可调整 innodb 缓存阈值,避免单次大文件缓存刷盘。…
Read more ⟶

2021 专业技能学习计划


时常觉得自己看过的东西不少,但却没有很好地沉淀,主要有两方面弊端:1. 自我怀疑 花了不少时间学习了解,长时间不用,缺少实战经验,最终慢慢遗忘,最后会疑惑自己的时间花的到底值不值?为何要浪费时间在没有任何产出上?2. 没有形成知识面 最近两年很少系统地去学习知识,大部分时间花费在了碎片式学习上,东边一榔头,西边一棒槌,都是分散的知识点,很少总结回顾,沉淀成文字/视频等,导致后面用到时,重复浪费时间在资料查询搜集上,不能很好地缩短自己重拾知识时间,也未能很好地帮助他人。为此,这里特梳理下自己 2021 年的学习计划,形成知识索引,方面后续知识快速定位,也希望能给予他人一点点帮助。

  • 操作系统: 重点是Linux 进程管理 & 调度、进程间通信、内存管理、I/O 模型
  • 网络: TCP/IP 协议、HTTP 协议、DNS 协议、容器网络
  • 中间件: Redis, RabbitMQ/Kafka/RocketMQ, Nginx, Zookeeper/Etcd, ElasticSearch, MySQL
  • 设计原则 & 设计模式: SOLID, 24 种设计模式
  • 系统架构: Client/Server, MVC, Layer, Broker 等
  • 语言: Java/Go/Rust
  • 工具: 效率提升类, 问题定位分析类, 知识变现类
  • 其他: Google Analysis, 百度统计、SEO 相关
Read more ⟶

什么是文件系统?


文件系统是什么? 文件系统组成 如何写一个简单的文件系统 文件系统是什么? 软件 记录文件元信息(文件大小,所属用户,包含块等) 文件系统组成 inode inode 记录着文件的元信息,包含以下部分: 文件大小 组件文件的块(block) 属主(owner) 访问权限 访问时间 创建时间 修改时间 inode table 为了管理 inode 信息,需要有个数据数据结构存储 inode 信息, 称之为 inode table, 会占一部分磁盘空间,若 inode 大小为 256 bytes, 一个 4k 大小的 block 可存储 16 个 inodes。 allocation list 为了管理 block 是否已分配,需要有个数据结构存储,通常可以用位图(bitmap) 算法进行存储, 用 1bit 表示该 block 是否已使用,一个 4k 大小的 block 可存储 32k 个 block 使用情况。 superblock superblock 用于存储文件系统元信息,包括 inodes 数量、文件系统中数据块(data block)数量、inode table 起始块位置、用于标识文件系统类型的魔数(magic number)等。操作系统挂载文件系统时,会首先读取 superblock 信息。…
Read more ⟶