CSBasicKnowledge

"Open Source allows people to build on a solid base of previous knowledge, without some silly hiding."

- Linus Torvalds

  欢迎来到这个专注于计算机科学基础知识的仓库。本仓库的目标是补充计算机专业教育中可能缺失的知识点,提供广泛、优质的学习资源。

  我们鼓励并期待有缘人加入我们,共同维护和丰富这个仓库。无论是添加新内容,还是改进现有内容,您的贡献都将使这个仓库变得更好。

CS

  • CS 自学指南: [zh-cn] [en]
  • OI Wiki(ACMer必备): [zh-cn]
  • The Missing Semester of Your CS Education: [en] [zh-cn]
  • CS免费编程书籍:[Github]
  • Crash Course Computer Science(个人觉得值得观看的计算机知识速成科普课程): [Origin_YouTube] [CN_Bilibili] [CN_Source]
  • 在有用和没用之间徘徊的速查网站:[zh-cn]

本章的内容是Programming Language,期待大佬补充内容。

gleam

  • 函数式编程语言,用于编写可维护和可扩展的并发系统,属于BEAM家族,和Erlang和Elixir等基于Actor的并发模型和持久运行时,擅长低延迟、高并发、网络应用程序。
  • 没有图形库不适合GUI程序,也不适合命令行程序。

代码速查表

  • 一个开源的代码规范和基本语法速查工具,包含大部分主流编程语言,而且社区还比较有活力经常更新。直接使用可以访问Page

  • 也可以本地化部署,GitHub开源仓库地址为[Github]。

  • add

Program Synthesis & Automated Reasoning

  • 相关课程:

    • 威斯康辛 CS703:[Github]
    • UCSD CSE291:[Github]
    • MIT Introduction to Program Synthesis:[Page]
    • Automated Reasoning课程:[en]
  • Satisfiability Modulo Theories:[Paper]

  • Z3:最常见的SMT Solver:[Paper] [GitHub] [Tutorial]

    • Z3-rise4fun:[Page]
    • Z3 Playground:[Page]
    • Z3 python API:[Page]
  • PySMT:可与多个SMT求解器进行交互的符号模型检验和约束求解的Python库:[Page]

  • 程序修复:[Paper]

  • 香蕉空间:

Program Analysis

  • 静态分析:
    • 相关课程:
    • 符号执行:A Survey of Symbolic Execution Techniques:[Paper]
    • 指针分析:Pointer Analysis:[Paper]
    • 堆分析:Shape Analysis:[Paper]
    • 参数化分析:[Paper]
  • 动态分析:
    • Fuzzing(这个也可以放在Security):[Paper]
      • CS研究生如何入门模糊测试方向?[Page]
      • Fuzzing技术总结 [Page]
      • Fuzzing Notes [Page]
      • AFL:[GitHub] [Tutorial]
      • Fuzzing-101(练习afl++工具,可作为fuzz入门的十个“小”练习)[GitHub]
  • 程序分析工具:
  • LLVM:[Book]

CG

本章的内容是Computer System,涵盖sys的各个方面,包括arch/os/storage/db等等,期待大佬补充。

HPC

OpenMPI的安装

更多内容可以查看:https://docs.open-mpi.org/en/v5.0.x/installing-open-mpi/quickstart.html

  1. OpenMPI的下载及解压: 在OpenMPI官方主页找到合适版本的OpenMPI下载并解压
    wget https://download.open-mpi.org/release/open-mpi/v5.0/openmpi-5.0.5.tar.gz
    tar xf openmpi-5.0.5.tar.gz
    cd openmpi-5.0.5
    
  2. 配置安装路径,编译并安装,安装路径自定义
    ./configure --prefix=/usr/local/openmpi
    make -j $(nproc) all
    make install
    
  3. 设置环境变量,路径为自己安装的路径
    MPI_HOME=/usr/local/openmpi
    export PATH=$MPI_HOME/bin:$PATH
    export LD_LIBRARY_PATH=$MPI_HOME/lib:$LD_LIBRARY_PATH
    export MANPATH=${MPI_HOME}/share/man:$MANPATH
    

System

Security

  • ctf-wiki: CTF wiki
  • awesome-ctf-resources: A list of Capture The Flag (CTF) frameworks, libraries, resources and software for started/experienced CTF players 🚩

AI这一章节有太多可以津津乐道的内容,期待各位大佬补充。

PyTorch

Installation

根据OS和cuda选择适配的torch版本

https://pytorch.org/get-started/previous-versions/

pip

安装最新版

pip install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple

指定版本(preffered)

创建名为pytorch310的虚拟环境

conda create -n pytorch310 python==3.10

激活环境

conda activate pytorch310

设置清华源,加速安装

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

指定版本安装

pip install torch==2.0.0+cu118 torchvision==0.15.1+cu118 torchaudio==2.0.1+cu118 -f https://download.pytorch.org/whl/torch_stable.html

conda

添加清华镜像源

# 若不含有`~/.condarc`,生成它
ls ~/.condarc || conda config --set show_channel_urls yes

# 之后配置镜像源(南科大提供的额外软件包镜像可以加速安装CUDA版Pytorch)
tee ~/.condarc > /dev/null << EOF
channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  deepmodeling: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  nvidia: https://mirrors.sustech.edu.cn/anaconda-extra/cloud
  
envs_dirs:
  - your-path/anaconda3/envs # 替换为您的路径(另外,若安装的是miniconda3,请自行替换),不设置此项有可能安装在`~/.conda/envs`中
EOF

安装最新版

conda install pytorch torchvision torchaudio cudatoolkit=10.2

指定版本

conda install pytorch==2.4.0 torchvision==0.19.0 torchaudio==2.4 cudatoolkit=10.2

Tutorial

Framework

  • pytorch-lightning: Pretrain, finetune and deploy AI models on multiple GPUs, TPUs with zero code changes.

Visualization

  • wandb: 🔥 A tool for visualizing and tracking your machine learning experiments. This repo contains the CLI and Python API.
  • PyTorch tensorboard: How to use tensorboard in PyTorch.
  • SwanLab: ⚡️SwanLab: track and visualize all the pieces of your machine learning pipeline. 跟踪与可视化你的机器学习全流程

HuggingFace

Dataset下载

NLP(Natural language Processing)

CV(Computer Vision)

object detection

segmentation

Vision-Language Model

  • VLM_survey: Vision-Language Models for Vision Tasks: A Survey
  • LLM-in-Vision: Recent LLM-based CV and related works. Welcome to comment/contribute!

Audio & Speech

  • Speech-Resources: 语音方向实验室/公司/资源/实习等,欢迎推荐或自荐
  • metame-ai/awesome-audio-plaza: Daily tracking of awesome audio papers, including music generation, zero-shot tts, asr, audio generation
  • SpeechTasks: This is a list of speech tasks and datasets, which can provide training data for Generative AI, AIGC, AI model training, intelligent speech tool development, and speech applications.
  • ai-audio-startups: Community list of startups working with AI in audio and music technology
  • speech_rankings: A CSRankings-like index for speech researchers
  • INTERSPEECH-2023-Papers: INTERSPEECH 2023 Papers: A complete collection of influential and exciting research papers from the INTERSPEECH 2023 conference.

SSL

ASR

  • kaldi: Kaldi Speech Recognition Toolkit
  • next-gen kaldi
    • k2-fsa/icefall: The icefall project contains speech-related recipes for various datasets using k2-fsa and lhotse.
    • lhotse-speech/lhotse: Tools for handling speech data in machine learning projects.
  • openai/whisper: Robust Speech Recognition via Large-Scale Weak Supervision
  • awesome-whisper: Awesome list for Whisper — an open-source AI-powered speech recognition system developed by OpenAI

Generation

Audio/Speech LLM

  • QwenLM/Qwen-Audio: The official repo of Qwen-Audio (通义千问-Audio) chat & pretrained large audio language model proposed by Alibaba Cloud.
  • awesome-large-audio-models: Collection of resources on the applications of Large Language Models (LLMs) in Audio AI.
  • Large-Audio-Models: Keep track of big models in audio domain, including speech, singing, music etc.

Dataset

Recommendation System

Large Language Model

  • LLM-action: Github: zh-cn
  • LLMSurvey: Github
  • LLM-Agent-Paper-List (Fdu NLP): Github
  • llamafia.github: [Github] 一个中文前沿 AI / LLM 开源讨论空间
  • Large Language Model Course: [Github]
  • 中文LLaMA&Alpaca大语言模型+本地CPU/GPU训练部署 (Chinese LLaMA & Alpaca LLMs): [Github]

Tutorials

  • 一些国内的广为人知的视频教程,适合边睡边看:
  • 一篇不太专业的如何读论文的小文档:[pdf]
  • paper with code:[page]
  • 算法知识应知应会:[Github]
  • Microsoft AI-EDU: [zh-cn]
  • 机器学习入门指南: [zh-cn]
  • CS229机器学习技巧和秘诀速查表: [zh-cn]
  • 科学空间(苏剑林): [zh-cn]
  • 深度学习500问: [Github: zh-cn]
  • awesome-ai-tools: [Github: en]
  • Learning Research: [Github: zh-cn]
  • Stanford HowToReadpaper: [page] [pdf]
  • 有关迁移学习的一切的资料: [Github]

Prompts

CUDA & Nvidia

  • CUDA C++ Programming Guide: The programming guide to the CUDA model and interface.
  • NVIDIA/CUDALibrarySamples: The CUDA Library Samples are released by NVIDIA Corporation as Open Source software under the 3-clause "New" BSD license.
  • pybind11 documentation
  • Using pybind11
  • Use pybind11 for a detailed but simple example
  • 查看你的显卡的情况:
    • 切换CUDA版本步骤
    • 删除软连接
      cd /usr/local
      ls -l cuda # 查看cuda的软链接
      sudo rm -rf cuda
      sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda # 更换为对应的cuda
      
    • 添加环境变量
      # 如果使用的是z-shell请替换`.bashrc`为`.zshrc`
      tee -a ~/.bashrc > /dev/null << 'EOF'
      # CUDA
      export PATH=${PATH}:/usr/local/cuda/bin
      export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda/lib64
      export CUDA_HOME=/usr/local/cuda # 通过设置软链接`/usr/local/cuda`,可以做到多版本CUDA共存
      EOF
      
      # 或者
      
      # 修改`/etc/profile`以做到多用户、多Shell解释器通用
      sudo tee -a /etc/profile > /dev/null << 'EOF'
      # CUDA
      export PATH=${PATH}:/usr/local/cuda/bin
      export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda/lib64
      export CUDA_HOME=/usr/local/cuda # 通过设置软链接`/usr/local/cuda`,可以做到多版本CUDA共存
      EOF
      
      在完成上述步骤后,你需要source ~/.bashrc(或source /etc/profile)刷新环境变量或者reboot重启

本章节主要讲一些学术相关的知识,包括文献搜索,科研经验、读博体验等,期待大佬补充内容。

Academic常用知识

论文写作

  • learning_research: 科研经验总结
  • English-Writing: Enhance Your English Writing for Science Research 写论文英语素材
  • ML Visuals: 🎨 ML Visuals contains figures and templates which you can reuse and customize to improve your scientific writing.

常用工具

Tenure-Track Asst. Professors and PhD students

  • Awesome Lists for Tenure-Track Asst. Professors and PhD students: [Github: en & zh-cn]
  • 一个博士生在科研大组的生存指南: [pdf]
  • Collection of advice for prospective and current PhD students: [Github: en]
  • A Survival Guide to a PhD: [en]
  • nlp-phd-global-equality: A repo for open resources & information for people to succeed in PhD in CS & career in AI / NLP

(Special Issue)专业代码那些事儿

1. 专业代码是什么?

专业代码是教育部用于标识和管理不同学科专业的一种编码,通常由6位数字组成。专业代码在本科专业设置研究生专业设置上是分离的。需要注意的的一点是⚠️:两者并不相关,需要分情况说明,不可以混为一谈。

1.1 研究生教育学科专业目录(研究生专业代码)

目前研究生教育学科专业目录最新版本为2022版,并从2023年起开始实施。可通过研招网下载附件📎查看:研究生教育学科专业目录(2022年)

其中“研究生教育学科专业目录”中对于专业学位代码非常模糊,具体的专业学位代码请查看:关于电子信息等8种专业学位类别专业领域指导性目录的说明

通过两份文件,我们可以总结出与计算机学科相关的专业代码,如下表:

计算机学科相关专业研究生代码汇总

学位类型专业代码专业名称
学术学位081200计算机科学与技术
学术学位083500软件工程
学术学位083900网络空间安全
学术学位140500智能科学与技术
专业学位085400电子信息
专业学位085404计算机技术
专业学位085405软件工程
专业学位085411大数据技术与工程
专业学位085412网络与信息安全

其中,有几点需要强调:

  1. 专业代码中,第三、四位被划分成了上下两个半区,上半区为01-50,下半区为51-99。上半区对应学术学位,下半区对应专业学位
  2. 专业代码中,第五、六位对应二级学科,对于专业学位而言,需要特别注意,因为 0854(电子信息) 里同时包含计算机、自动化、电子、信息、生医、仪器等方向的专硕,无法表明到底是哪个学科的专硕。

下面是两个计算机类研究生专业代码的示例:

学术学位专业代码示例

drawing

专业学位专业代码示例

drawing

1.2 普通高等学校本科专业目录(本科专业代码)

普通高等学校本科专业目录最新版本为2024版,可通过教育部官方网站下载附件📎查看:普通高等学校本科专业目录(2024年)

其中,与计算机类有关的专业代码如下表:

计算机类相关专业代码汇总

计算机学科相关本科专业代码汇总

序号门类、专业类专业代码专业名称学位授予门类修业年限增设年度
397计算机类080901计算机科学与技术理学、工学四年
398计算机类080902软件工程工学四年
399计算机类080903网络工程工学四年
400计算机类080904K信息安全管理学、理学、工学四年
401计算机类080905物联网工程工学四年
402计算机类080906数字媒体技术工学四年
403计算机类080907T智能科学与技术理学、工学四年
404计算机类080908T空间信息与数字技术工学四年
405计算机类080909T电子与计算机工程工学四年
406计算机类080910T数据科学与大数据技术理学、工学四年2015
407计算机类080911TK网络空间安全工学四年2015
408计算机类080912T新媒体技术工学四年2016
409计算机类080913T电影制作工学四年2016
410计算机类080914TK保密技术工学四年2017
411计算机类080915T服务科学与工程工学四年2019
412计算机类080916T虚拟现实技术工学四年2019
413计算机类080917T区块链工程工学四年2019
414计算机类080918TK密码科学与技术工学四年2020

2. 为什么需要专业代码?

害,还不是有单位会看要求,不然谁会来看这些东西?专业代码会在考公国企招聘等位置不经意的出现。当然,对于打算进入私企就业的同学来说,专业代码就不是那么重要了。

举个例子🌰,以“广东省2024年考试录用公务员”为例,0812相比0835在可报考岗位上有着绝对的优势(1405的同学😭):

0812可报考岗位

drawing

0835可报考岗位

drawing

3. 常见问题

3.1 专硕的专业代码是否可以更改?比如从085400(电子信息)更加细化?

  这个问题通常取决于学校,要符合学校的一些要求,比如只能细化到特定的一两个代码之中。ZJU SE就曾发过这样的公告,供大家参考:软件学院专业学位领域代码调整通知

3.2 0812XY例如(0812Z1)这类专业代码是0812吗?

  以0812Z1为例,这类专业代码一般来说是可以算作0812的,也就是一级学科是“计算机科学与技术——学术学位”,所以大多数情况下依然是0812。

3.3 以后有考公的打算,该怎么在计算机类学专硕的各个专业中选择?

  答案很明确,0812就是神。所以能够拿到计科学硕对于考公是最有利的,0812也的确是认可度最高的万金油专业(卷成这样不是没有道理的)。而对于最近很多学校把AI学硕挪到140500这样的迷惑操作,实在是对于考公过于不友好了,需要谨慎考虑一下。至于其他的专业包括0835(软件学硕)、0839(网安学硕)、085404/5(计/软专硕),最好还是亲自调研一下目标省份的岗位要求。

本章节包含与写作有关的知识,欢迎大佬补充。

CV & Resume

LaTeX & Markdown

LaTex Beamer tutorial

Markdown

Typst

本章节包括了CS中的实用工具和技能,欢迎大佬补充。

Linux

  • 中科大 LUG 基础 Linux 教程: [zh-cn]
  • 南京大学计算机科学与技术系计算机系统基础: Linux入门教程
  • 鳥哥的 Linux 私房菜:[zh]
  • 从 Socket error 丢失网络连接的 Linux SSH 恢复 pts 会话:[zh-cn]

    下次记得运行长时间程序前先使用 screentmux

  • Update GCC

Shell

Vim

  • vimtutor 关于 vim 最基础的教程,安装 vim 之后自带的命令
  • 聪明地学习 vim: [GitHub: en]/[GitHub: zh-cn]
  • Vim命令速查表: 简介:Vim 命令速查表,注释化 vimrc 配置文件,经典 Vim 键盘图,实用 Vim 书籍,Markdown 格式,目录化检索,系统化学习,体系化配置工具集,快速熟悉使用。✨
  • Vim Cheat Sheet
  • vim-galore-zh_cn:Vim 从入门到精通

Git & Github

  • Learn Git Branching(强推): [zh-cn]
  • Pro Git 中文版
  • Git lfs install
  • Gitchat: [zh]
  • Git规范化提交
    • 约定式提交,或许可以规范你的Github提交:[zh-cn]
    • Commit message 和 Change log 编写指南:[zh-cn]
    • commitizen/cz-cli: [Github]
  • 第一次参与开源项目,如何提交pr: [Github: zh-cn] | [mmcv contribution]
  • 给 Github Desktop 设置代理
  • clone远程仓库的指定分支
    git clone -b + 要clone的分支名 + 仓库地址 
    # eg: git clone -b dev git@github.com:CS-BAOYAN/CSBasicKnowledge.git
    
  • SSH key的生成:
    • 检查SSH key是否存在:
      ls -al ~/.ssh
      # Lists the files in your .ssh directory, if they exist
      
    • 生成SSH key, 会在/your_home_path/.ssh/生成id_rsa和id_rsa.pub
      ssh-keygen -t rsa -C "your_email@example.com"
      # Creates a new ssh key using the provided email
      Generating public/private rsa key pair.
      Enter file in which to save the key (/your_home_path/.ssh/id_rsa):
      
  • 下拉/提交远程仓库
    • 查看远程仓库的信息:
    git remote -v
    
    可以看到远程仓库的名字和地址。
    • 查看当前分支名:
    git branch
    
    可以看到当前代码分支的名字
    • 从远程仓库下拉:
    git pull <远程仓库的名字/地址> <代码的分支名>
    
    • 冲突处理(苯人的笨方法)
    git pull <远程仓库的名字/地址> <代码的分支名> --allow-unrelated-histories
    
    然后使用
    git status
    
    查看冲突文件,手动解决冲突。
    • 提交本地代码到远程仓库:
    git push <远程仓库的名字/地址> <代码的分支名>
    
    • 强制推送(苯人的笨方法,高风险,慎用):
    git push -f <远程仓库的名字/地址> <代码的分支名>
    
    • 推送tags到远程仓库:
    git push --tags
    
    • 删除远程分支:
    git push origin --delete <分支名>
    
    • 同步本地分支到远程仓库:
    git push origin <本地分支名>:<远程分支名>
    
    • 同步远程分支到本地仓库:
    git checkout -b <本地分支名> <远程分支名>
    

How to Debug

gdb

  • gdb-dashboard: 使用 Python 在命令行中可视化使用 gdb 的小工具

pdb & ipdb

  • 10分钟教程掌握Python调试器pdb: [zhihu]
  • 使用ipdb在终端调试:[zhihu]

debugpy

  • vscode python设置debug: [zhihu]

vscode debug setting

Conda

  • miniconda环境配置以及jupyter notebook使用指南: [zhihu]
  • micromamba: miniconda 的平替,同时依赖解析等基础操作更快: [GitHub]
  • 清华大学开源镜像站-miniconda的下载
    # 下载安装脚本
    wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh  
    
    # 修改权限
    chmod 777 Miniconda3-latest-Linux-x86_64.sh  
    
    # 执行安装脚本
    bash Miniconda3-latest-Linux-x86_64.sh
    
    # 删除安装脚本
    rm Miniconda3-latest-Linux-x86_64.sh  
    
    # 刷新环境变量
    source ~/.bashrc
    

Docker

  • Docker-从入门到实践: [zh-cn]
  • How to Install PyTorch on the GPU with Docker: [en]
  • Vscode连接远程服务器中的docker容器进行开发: [CSDN]
  • docker权限问题:[CSDN]
  • 如何临时退出一个正在交互的容器的终端,而不终止它? 按 Ctrl-p Ctrl-q。如果按 Ctrl-c 往往会让容器内应用进程终止,进而会终止容器,如果没有在IDE里面没有成功,请去除IDE对应的快捷键。
  • docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
    1. https://github.com/NVIDIA/nvidia-docker/issues/1238
    2. https://github.com/NVIDIA/nvidia-docker/issues/1243
  • Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock:
    sudo chmod 666 /var/run/docker.sock
    

程序员指南

MISC

  • 如何设置代理: [PDF]
  • 耗时很长的程序忘加nohup就运行了怎么办?: [zhihu]
  • linux 多线程下载工具-aria2c: [zhihu.com]
  • 你的指法真的标准吗?打字练习一下:[zh-cn]
  • 利用学生身份可以享受到的相关学生优惠权益: [Github]
  • 论文常用词汇i.e.,e.g.,etc.,viz.,et al.的前世今生: [zhihu]
  • 中国程序员容易发音错误的单词: [Github: zh-cn]
  • 图吧工具箱: [page]
  • 文献管理软件 Zotero:安装设置教程及各插件配置(知网支持、影响因子、被引数): [zh-cn]
  • 阿里巴巴矢量图标库: [page]
  • Paper Picture Writing Code: Github
  • 魔盾安全分析(可疑软件在线分析):[zh-cn]
  • 崔庆才 Python3 网络爬虫学习教程: [zh-cn]
  • youtube下载工具:[Github]
  • 掘金翻译计划:[Github:zh-cn]
  • 桌面管理工具:[Github:zh-cn],推荐1.0.4.1release的免费版!
  • 论文代码查找网站:[page]
  • one-api: OpenAI 接口管理 & 分发系统,支持 Azure、Anthropic Claude、Google PaLM 2 & Gemini、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、360 智脑以及腾讯混元,可用于二次分发管理 key,仅单可执行文件,已打包好 Docker 镜像,一键部署,开箱即用

翻译软件

  1. Pot: 跨平台划词翻译和OCR,支持大模型API,支持windows,mac和linux
  2. Easydict:一个简洁优雅的词典翻译 macOS App。开箱即用,支持离线 OCR 识别,支持有道词典,🍎 苹果系统词典,🍎 苹果系统翻译,OpenAI,Gemini,DeepL,Google,Bing,腾讯,百度,阿里,小牛,彩云和火山翻译。

Front End

  • HTML & CSS [Bibilili]
    • float布局不用学,熟悉flex和grid即可
    • 自测:能完成基本的静态页面
  • JavaScript [Bilibili] [现代JavaScript]
  • Vue [Bilibili-尚硅谷] [Bilibili-小满]
    • 小满的比较难,需要有vue2基础,看自己情况
  • 项目实战 [Bilibili]
    • 到这时候,已经能够承担前端工作了,如果bg比较好的话,可以找到实习

进阶

实际上这些是必需品,如果面试的时候就会这些的话,可以有效提高竞争力。不过虽然大厂一般都需要这些,但也会允许实习生到岗再学习。

  • TypeScript [Bilibili-小满]
    • 实际中用不到这么复杂的ts,一般去掘金上看几篇教程就够用了。不过小满的教程看明白的话,可以和面试官掰扯很久。
  • React [官网] [Bilibili-小满]
    • 抠字眼的话,Vue是前端框架,而React只是JS库。也就是说,React并没有很复杂的语法和API,只是对JavaScrip的熟练程度要求较高。不要在教程上面纠结太长时间,把生命周期看明白之后就去看项目。
  • Node [Bilibili-小满]
    • 前端就是全栈!有的大厂会用Node搭建BFF(Backend For FrontEnd),还会搭配上NestGraphQL等技术。到这里就比较难了,有了解即可。

Front End

  • HTML & CSS [Bibilili]
    • float布局不用学,熟悉flex和grid即可
    • 自测:能完成基本的静态页面
  • JavaScript [Bilibili] [现代JavaScript]
  • Vue [Bilibili-尚硅谷] [Bilibili-小满]
    • 小满的比较难,需要有vue2基础,看自己情况
  • 项目实战 [Bilibili]
    • 到这时候,已经能够承担前端工作了,如果bg比较好的话,可以找到实习

进阶

实际上这些是必需品,如果面试的时候就会这些的话,可以有效提高竞争力。不过虽然大厂一般都需要这些,但也会允许实习生到岗再学习。

  • TypeScript [Bilibili-小满]
    • 实际中用不到这么复杂的ts,一般去掘金上看几篇教程就够用了。不过小满的教程看明白的话,可以和面试官掰扯很久。
  • React [官网] [Bilibili-小满]
    • 抠字眼的话,Vue是前端框架,而React只是JS库。也就是说,React并没有很复杂的语法和API,只是对JavaScrip的熟练程度要求较高。不要在教程上面纠结太长时间,把生命周期看明白之后就去看项目。
  • Node [Bilibili-小满]
    • 前端就是全栈!有的大厂会用Node搭建BFF(Backend For FrontEnd),还会搭配上NestGraphQL等技术。到这里就比较难了,有了解即可。

【重要】For contributers

鸣谢

衷心感谢以下参与者对本指南的贡献。

Made with contrib.rocks.

贡献指南

若希望对CSBasicKnowledge进行贡献,请以SUMMARY.md为大纲,在src文件夹下进行markdown文件的添加即可。

目前,mdbook对数学公式的支持还不完善,如您需要使用数学公式,请参考下面的数学公式支持部分。

(可选) 如果您在部署了mdbook并运行后,可以直接在SUMMARY.md中添加章节,例如:

# CSBasicKnowledge

- [example](./example/example.md)

mdbook会自动创建example文件夹和example.md文件。 当然,mdbook依赖于rust语言开发,如果您不喜欢rust相关内容,可以无视可选项及后续的本地部署部分。

数学公式支持

注意: MathJax 目前仍不能使用 $$ ... $$ 作为分隔符,并且 \[ ... \] 分隔符需要额外的反斜杠才能工作。 希望这个限制很快能解除。

注意: 当您需要在 MathJax 块中使用双反斜杠(例如 \begin{cases} \frac 1 2 \\ \frac 3 4 \end{cases} 等命令中)时,您需要添加两个额外的反斜杠(例如,\begin{cases} \frac 1 2 \\\\ \frac 3 4 \end{cases})。

行内公式

行内公式由 \\(\\)包围。例如,要渲染以下行内方程 \( \int x dx = \frac{x^2}{2} + C \),可以这么写:

\\( \int x dx = \frac{x^2}{2} + C \\)

块公式

块公式由 \\[\\]分隔。 要渲染下面这个块公式

\[ \mu = \frac{1}{N} \sum_{i=0} x_i \]

可以这么写:

\\[ \mu = \frac{1}{N} \sum_{i=0} x_i \\]

本地部署

CSBasicKnowledge的bookfy基于mdbook实现,该工具基于Rust开发,是markdown文件书本化非常值得推荐的工具。Rust的圣经 The Rust Programming Language 便是利用了mdbook生成的。

要安装mdbook请安装Rust相关工具链。随后,通过Rust的包管理器cargo进行mdbook的安装:

cargo install mdbook

通常,mdbook会安装在$HOME/.cargo/bin,请将该目录添加至PATH

mdbook的运行非常简单,只需要:

# For detail, run `mdBook serve -h`
mdbook serve            # default 127.0.0.1:3000
mdbook serve -p 8080    # 127.0.0.1:8080