Skip to content

IceHe/lib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Mar 11, 2025
9e235b4 · Mar 11, 2025
Jul 21, 2022
Aug 27, 2022
Feb 6, 2023
Jun 20, 2024
Dec 12, 2020
Dec 29, 2023
Jun 11, 2024
Nov 11, 2023
Sep 7, 2023
Feb 4, 2024
Dec 23, 2023
Sep 21, 2023
Feb 20, 2024
Aug 6, 2022
Mar 11, 2025
Jan 30, 2022
Nov 30, 2021
Jul 21, 2022
Dec 12, 2020
Jul 21, 2022
Sep 23, 2018
Feb 6, 2024
Dec 29, 2023
Dec 29, 2023
Jul 21, 2022
Aug 7, 2022

Repository files navigation

Notes

Welcome to IceHe's web notes!


好记性不如烂博客

Technology

Reading

IceHe's Reading List @douban.com

短期太急躁,總想走捷徑快速見效; 長期沒耐心,小覷長期堅持的成長。

Coding

Designing Data Intensive Applications - TOC

JVM - Java Virtual Machine - TOC

Fundamentals of Software Architecture - TOC

Snippet

巨大的建築,總是由一木一石疊起來的,我們何妨做做這一木一石呢?我時常做些零碎事,就是為此。

—— 鲁迅《致赖少麟》

Algorithm & Data Structure

Terminology

Message Queue

Storage

  • MySQL: lessons p1 / p2 / p3 / commands

    • robust SQL database server
  • PostgreSQL: notes

  • Elasticsearch: usage

    • for search and analysis
  • Redis: basics / notes / key notes

    • in-memory data structure store as a database, cache and message broker
  • LSM Tree: intro

    • basic data structure of LevelDB & RocksDB
  • Cache Patterns

    • cache aside / read through / write through / write behind caching

Markdown

Web

Programming Languages - at a glance

Others

Efficiency

磨刀不誤砍柴工。

macOS

Git

Command

Manual

  • ab: Apache HTTP server benchmarking tool
  • ag: The Silver Searcher. Like ack, but faster.
  • awk: pattern-directed scanning and processing language
    • gawk: pattern scanning and processing language
  • bash: GNU Bourne-Again SHell
  • brew: the missing package manager for macOS
  • bzip2: block-sorting file compressor
  • cat: concatenate files & print on the standard output
  • cd: change the current directory
  • chgrp: change group ownership
  • chmod: change file mode bits
  • chown: change file owner & group
  • column: columnate lists
  • comm: compare two sorted files line by line
  • cp: copy files & directories
  • cpu: show cpu info - not a command
  • crontab: time-based job scheduler
  • curl: transfer data from or to a server
  • cut: remove sections from each line of files
    • common combo: column | cut
  • date: print or set the system date & time
  • df: report file system disk space usage - display free space
  • diff: compare files line by line
    • better choice: comm
  • dig: DNS lookup utility
  • docker: base command for the Docker CLI
  • dstat: versatile tool for generating system resource statistics
    • iftop: display bandwidth usage on an interface by host
    • iostat: statistics of CPU & IO for devices & partitions
    • vmstat: report virtual memory statistics
  • du: estimate file space usage - disk usage
  • env: run a program in a modified environment
  • expect: interact with programs
  • expr: evaluate expressions
  • file: determine file type
  • find: search for files in a directory hierarchy
  • git: the stupid content tracker
  • gpg: OpenPGP encryption and signing tool
  • grep: print lines matching a pattern
    • zgrep: search possibly compressed files for a regular expression
  • head: output the first part of files
  • htop: interactive process viewer
  • ifconfig: configure a network interface
  • ip: show / manipulate routing, devices, policy routing & tunnels
  • jobs, bg, fg, disown, wait, …
    • stop (suspend) the execution of processes & continue (resume) their execution at a later point
  • join: join lines of two files on a common field
  • jq: command-line JSON processor
  • kill: terminate or signal a process
  • last: show listing of last logged in users
  • less: provides `more` emulation plus extensive enhancements
    • more: file perusal filter for paging through text one screenful at a time
  • ln: make links between files
  • locale: get locale-specific information
  • ls: list directory contents
  • lsof: list open files
  • man: an interface to the on-line reference manuals
  • mailx: send mails on CentOS
  • msmtp: send mails on macOS - sth wrong?
  • mkdir: make directories
  • mount: mount a filesystem
    • umount: un-mount a filesystem
  • mv: move (rename) files
  • mvn: a tool for building & managing any Java-based project
  • mysql: MySQL CLI tool - not only a command
  • nc: TCP / UDP connect & listen
  • netstat: show network status
  • nl: number lines of files
  • nginx: HTTP and reverse proxy server
  • nohup: invoke a utility immune to hangups
  • nslookup: query Internet name servers interactively
  • os: show os info - not a command
  • output: redirect output - not a command
  • passwd: modify a user's password
  • paste: merge lines of files
  • perf: performance analysis tools for Linux
  • php: PHP Command Line Interface
  • pidstat: report statistics for Linux tasks
  • ping: send ICMP ECHO_REQUEST to network hosts
  • python: Python Command Line Interface
  • ps: process status
  • realpath: print the resolved path
  • redis-cli: Redis client
  • redis-server & redis-sentinel: Redis server
  • redis-dump & redis-load: Backup & restore Redis data to and from JSON
  • rm: remove files or directories
  • rsync: transfer files
  • scp: secure copy - remote file copy program
  • sed: stream editor for filtering & transforming text
  • seq: print a sequence of numbers
  • service: run a System V init script
  • sleep: delay for a specified amount of time
  • sort: sort lines of text files
  • ssh: OpenSSH Client - remote login program
  • stat: display file or file system status
  • su: run a command with substitute user & group ID
  • sudo: execute a command as another user
  • sysctl: configure kernel parameters at runtime
  • systemctl: control systemd & service manager
  • tac: concatenate and print files in reverse
  • tail: output the last part of files
  • tar: pack & compress
  • tee: write to standard output & files
  • terminal-notifier: send macOS User Notifications
  • time: time command execution
  • timeout: run a command with a time limit
  • tmux: terminal multiplexer
  • touch: change file access & modification times
  • tr: translate or delete characters
  • ulimit: system resource limit to shell
  • uname: print system information
  • uniq: report or omit repeated lines
  • uptime: show how long system has been running
  • vim: terminal text editor
  • visudo: edit the sudoers file
  • w: show who is logged on & what they are doing
  • watch: execute a program periodically, showing output fullscreen
  • wc: print newline, word, & byte counts for each file
  • wget: network downloader
  • whereis & which & whatis: locate, show path & description
  • whoami: print effective userid
  • xargs: build and execute command lines from standard input
  • xxd: make a hexdump or do the reverse
  • yes: be repetitively affirmative
  • zsh: one of shells
  • Linux Abbreviations
  • CLI Notes - todo some day

Scene

  • automate: expect, yes
  • connect: curl, nc, ssh, telnet
  • directory: cp, find, ln, ls, mv
  • disk: df, du, duf
  • monitor status: dstat, htop, lsof, netstat, pidstat, ps, stat, top
  • network detect: dig, ifconfig, ip, netstat, nslookup, ping
  • string display: cat, head, less, tac, tail
  • string process:
    • awk, column, comm, cut, grep,
    • join, jq, paste, sed, sort,
    • tr, uniq, wc, …
  • transfer data: ftp, nc, rsync, scp
  • write file: tee, >, 2>&1
  • notify: terminal-notifier
  • http benchmark: ab, watch
  • differ output: comm, diff, vimdiff, watch
  • run in background: ^z, bg, fg, nohup [CMD] &
  • ……

Shell

Batch 批处理

Java

Basics

Package Manager

  • Maven: a software project management and comprehension tool
    • Based on the concept of a project object model (POM), Maven can:
      • manage a project's build,
      • reporting and
      • documentation from a central piece of information.
  • Gradle
    • From mobile apps to microservices, from small startups to big enterprises,
    • Gradle helps teams build, automate and deliver better software, faster.

Benchmark, Stress Testing & Unit Testing

  • Benchmark & Stress Testing: JMH - Java Microbenchmark Harness
  • Unit testing & Integration testing: Spock or JUnit
    • Groovy: a multi-faceted language for the Java platform

Code Snippet

Command Line Tool

  • jar: archive tool
  • java: application launcher
  • javac: compiler
  • javap: class file disassembler
  • jps: JVM process status - list the instrumented JVMs on the target system
  • jcmd: send diagnostic command requests to a running JVM
  • jhsdb: HotSpot Debugger
    • attach to a Java process or launch a postmortem debugger to analyze the content of a core dump from a crashed JVM
    • available after JDK 9
  • Seldom-used and deprecated
    • javadoc: API documentation generator
    • jstat: monitor JVM statistics
    • jinfo: configuration info - generate configuration info for a specified Java process
    • jmap: memory map - print details of a specified process
    • jhat: Heap Analysis Tool - only available in JDK 8 !
    • jstack: stack trace - print Java stack traces of Java threads for a specified Java process

JavaScript

Basics

Code Snippet

  • Base Encoding: encode, decode
  • Environment: running under Node or browser-like environments
  • Jest: for unit tests
  • *.d.ts declaration files that functions as an interface to the components compiled in JavaScript
  • debugger statement invokes any available debugging functionality, such as setting a breakpoint.

Package Management

  • npm: share and borrow packages
  • yarn: a package manager that doubles down as project manager
  • pnpm: fast, disk space efficient package manager

NPM: the world's largest software registry

TypeScript

Package

ASM & CPP

Assembly

Prepare on Windows 7

  1. register / cs / ip / CPU / memory
  2. endian / register / ds / [addr] / stack
  3. pseudo instruction / compile / link / debug / [bx] / loop / seg prefix / mem space
  4. stack / data / code / 栈的段 / 多段程序 / 大小写转换 / addressing / si / di
  5. bx / si / di / bp / addressing / division / dd / dup / Structural Data
  6. jump / offset / jmp / jcxz / loop / dec / bounds checking
  7. call / ret / mul / show str (pos, color) / division overflow / show value
  8. course design: 公司数据以指定格式在屏幕上显示
  9. flag register / adc / sbb / cmp 检测比较结果的条件转移指令,DF 标识和串传送指令 / Tests
  10. internal interrupt / interrupt routine / install 中断向量表 / 设置中断向量
  11. int instruction / Interrupt Routine / tests
  12. port IO / in / out / shl / shr / visit CMOS RAM
  13. external interrupt / 接口芯片和端口,可屏蔽|不可屏蔽中断,PC 机键盘的处理过程 / tests
  14. 直接定址表 / data / 地址标号 / 在其它段中,计算 sin(x) / tests
  15. 用 BIOS 进行键盘输入和磁盘读写 / tests
  16. Appendix: 汇编编译器对 jmp 的处理,地址计数器(AC),处理伪操作指令,栈传递参数,无溢出除法…

C++

Auth*

Life

Living

Past

如果你要拥有你从未有过的东西,那么你必须去做你从未做过的事。

Bio: Backend Experience & Education

  • Silverhand: Founding Team - Node.js
  • YFD: Zebra - Supply Chain - Java
  • Alibaba Local Life: 蜂鸟跑腿前台 - Java
  • Alibaba Local Life: 众包物流运营 & 数据组后台 - Java
  • Weibo: Video Platform - Java
  • Weibo: Mobile API - PHP
  • Huawei: Telecom Software Customization - Java Intern.
  • SCUT: Software Engineering - Bachelor

Timeline

愚蠢,懒惰,贫穷,没有梦想。越活越畏畏缩缩,生怕别人发现自己尚未泯灭的野心,还有无能。

Practice

博弈论:理性就是对你的各种东西设定一个优先级,并且能够贯彻执行这个优先级。

  • How to Ask: Prepare before asking
    • Avoid the stupid ways
    • JFGI: Just Fucking Google It
    • RTFM: Read The Fucking Manual
    • Trade-off: Ask for help if stuck over 15 | 30 min.
  • How to Work: Working Standards
    • 请示工作说方案
    • 布置工作说标准
    • 汇报工作说结果
    • 总结工作说流程
    • 回顾工作说感受
  • GTD Flow: Get Thing Done
  • PDCA Cycle: Plan → Do → Check → Act or Adjust
  • SMART principle: Specific / Measurable / Achievable / Relevant / Time-based
  • STAR principle: Situation → Target → Action → Result
  • Deployment Checklist: avoid low-level mistakes
  • How to Leave:《解除劳动合同告知书》

Read

写一部小说就像在黑夜里开车,你只能看到车灯照亮的部分,但是你却可以走完整个旅程。

—— E.L. Doctorow

好文共赏

  • Bookmarks
  • Cruel Reality - ZH ver. - digest
    • Nice guy? I never give a shit.
  • Life Meaning - digest
    • 因为活着,才去寻找意义。
  • Happiness Course - digest
    • 如果你只有一个选择,它让你满意吗?
  • Why Unhappy - digest
    • 我,并不特别。
  • Poet: 诗和远方 - digest
    • 眼前的苟且,也正是诗和远方。
  • Teacher Said - digest
    • 我们用「我能做到什么」来判断和定位自己,而别人用「你已经做过什么」来判断和定位你。
    • 做正确的选择,而不是可以接受的选择。
  • Pessimist - digest
    • It's the hardest part when memories remain.
  • Anti-Fragile - book
    • 一只火鸡被屠夫喂养了 1000 天,每天都向其分析师证实,屠夫对火鸡的爱的「统计置信度与日俱增」。
  • VicodinXYZ's Life Beliefs
    • 决策的第一要务是给自己创造足够多的好选项。大多数决策失败来源于在几个都不够好的选择中反复纠结。
    • 对于日常小决策,决策速度大于决策质量,不要拖;对于重大而难逆转的大决策,要收集足够多信息尽量保证做对。
    • 不是生活中的每一个问题都要解决,和问题共处是人生常态。把精力用在重要的事情上
  • Sspai Time Management
    • 更大的效率来自于重要事情上做得好,而不是在处处做得好,管理精力比管理时间更重要。
    • 在考虑如何提高精力之前,我们得先解决导致精力被浪费的主要原因:精力错位,也就是把最好的时间和状态,浪费在了低产出的任务上。
    • 「不做事」一定是最节省时间、最高效的做事方式,学会「做重要的事」才是掌控时间的终极法门。
    • 提高自控力的一个小窍门是尽量避免在无谓的小事情上做决定。
    • 何谓「真正的休息」呢?不少人习惯将阅读网站和新闻当作一种休息,事实上研究表明, 认知活动(阅读文字、视频等)加重了工作需求产生消极情绪,另一项研究则表明, 对于减少疲惫感,而且通过智能手机应用休息的效果差于与朋友或同事社交。
  • The Tyranny of Merit
    • 《“绩点”的暴政》 成功者會認為他們的成功是靠自己的才能和努力,而與社會無關,既然成功是我自己的事,那失敗就是輸家自己的錯,這會製造出「才德的驕傲」(meritocratic hubris),對階梯下的人缺乏同理心,甚至不屑和輕蔑,因此更不會有對於共同體內同胞的相互責任。
  • How to Be an Imperfectionist
    • The New Way to Self-Acceptance, Fearless Living, and Freedom from Perfectionism
    • 《如何成为不完美主义者》
      • 不那么在意问题本身,更在意在有问题存在的情况下能取得的进展。
      • 不那么在意行动正确与否,更在意是否在行动。
      • 不那么在意所谓时机,更在意任务本身。
    • 个人感受:很棒的书,解决了很多自己对于工作和生活的困惑以及心态问题;但说实话,不能应用到完美主义的职场中。
  • The Complete Guide to Effective Reading
  • Just-In-Case vs. Just-In-Time Learning

Friend

To be a better me.

  • Jan Fan: Pythonist / Tencent / Applied Mathematics PhD @ Sweden
  • Johnson Zhang: Sina Mobile / Didi / Meituan / … @ Beijing
  • SF Zhou: ACMer / Microsoft / SenseTime / Weixin / High-Flyer Quant @Hangzhou
  • Shiwey Yan: Game Engine Developer / Tencent - Timi @ Shenzhen
  • Toxic Johann: Frontend / 360 / UC / Tencent / Tubi @ Beijing
  • ME: Backend / Weibo / Alibaba / YFD / Silverhand / What's next? @ Beijing

靡不有初,鮮克有終。