摘抄自鲜枣课堂

基本信息

“通信工程”属于二级学科,归属于“信息与通信工程”一级学科之下。
通信工程的研究方向,就是通信。
通信的本质,就是信息的互通。也就是说,通信工程主要研究信号的产生、发送和接收,信息的传输、交换和处理。

在国外(例如美国)的学科分类中,通信工程被认为是电子工程的重要分支。
电子工程,也就是大家经常听说的EE,和通信、电信、电子、光电、集成电路等相关。
和EE相对应的,就是CS,Computer Science(计算机科学)。

CS的研究方向包括计算机系统、算法、人工智能、数据存储技术、软件工程、人机交互等。

简单来说,EE偏硬件、偏底层实现,而CS偏软件、偏上层应用。

课程及对应方向

从方向来看,就是五大类:软件类、硬件类、无线类、网络类、光类。

软件类:就是编程,写代码。重点课程是数据结构、软件工程概论、软件项目管理,还有C/C++、java、python等程序语言开发。

硬件类:主要是数电、模电、高频电子线路、信号与系统、数字信号处理、嵌入式开发,单片机等。再往前就是微电子、半导体、集成电路。现在没什么纯硬件,都是软件驱动硬件,搞软硬结合。所以说,硬件专业=硬件+软件。

无线类:这块其实是正宗的“通信工程”,专门研究通信中最大的瓶颈环节——无线空口(空中接口)。简单来说,无线空口就是研究如何通过无线电磁波更快更好地传输数据。它的重点课程是信号与系统、数字信号处理、电磁场与电磁波、通信原理、信息论与编码等。无线类的难度不亚于硬件类,都是掉头发的课程。

网络类:网络工程,主要是研究路由交换,和路由器、交换机、防火墙等数通设备打交道比较多。除了数据网络之外,网络类实际上还包括了系统类知识,就是和操作系统、数据库打交道,进一步来说,就是搞云计算和大数据的方向。这块和软件类一样,偏IT应用,好处是不需要什么数电模电信号处理方面的知识。

最后一类,就是光。国内有很多光电相关的专业,例如光电信息工程等。除了研究光学(镜片、透镜、激光)之外,就有很多从事光通信领域的研究,说白了,就是光纤通信。这块是通信传输网的重要领域。主要课程是物理光学、应用光学、信息光学、光电检测、激光原理等。

项目管理、工程规范、项目概预算等,在实际工作中很实用,却在教学计划中被忽视。

如果大家不想被带偏的话,在大一的时候就要自我评估一下,自己喜欢哪个方向,适合哪个方向,然后朝这个方向努力。除非考研,不然的话,该放弃的就要学会放弃。

就业

通信行业,简而言之,就是围绕用户通信需求,提供通信产品和服务的行业。
除了面向大众的公共通信服务(移动通信、宽带接入、固定电话、IPTV等)之外,
通信服务还包括很多面向行业企业的专网通信服务(例如电网通信、铁路通信、港口通信、应急通信等)。
以云计算、大数据、程序开发、人工智能为代表的信息技术(也就是大家更为熟知的IT)已经超过通信技术,变成了年轻人更为热衷的就业方向。

单位

  • 通信运营商
    像中国移动、中国电信、中国联通这样的,负责建设和运营电信通信网络,并提供通信服务的企业,就是基础电信服务运营商,也简称为运营商。

    中国广电(中国广播电视网络有限公司),也属于电信运营商,大家往往会忽视这一点。而中国铁塔反而不是运营商,它是基础设施服务提供商,专门为运营商提供铁塔、站房之类的基础设施服务。

  • 通信设备商
    通信设备商,就是负责研发制造通信设备的厂商。像华为、中兴、爱立信、诺基亚,就是目前世界上最大的四家通信设备商。
    上述四家设备商,产品线最多,种类最齐全,覆盖最广,所以也称为通信综合解决方案提供商。其它一些设备商,可能只专注于通信的某个领域,例如基站或传输设备等。

  • 分包商、供应商、集成商、代理商
    通信设备的复杂度比较高,专业度也比较高,因此,安装、调试和维护的过程非常复杂,通常会以项目化的方式来运作。
    这些项目如果仅靠设备商、运营商自己来做,是不可能的。所以,会有很多公司加入进来,出人出力,共同参与。这类公司,就是分包商(或者叫合作方)

    有的公司是整包,就是独自承包一个项目的工程。有的公司是分包,就是承包其中一部分。还有的公司,是承包项目之后,将一部分交由其它公司去做,就叫做转包(有时候是不允许的)。
    通信行业的产业链很庞大,从原材料到元器件,再到单板、设备,会有一系列的链条。上游对下游来说,就叫供应商。做产品集成,提供整体打包解决方案的,叫集成商
    再有就是代理商,大家应该都知道,就是负责产品代理销售的公司。

产业链

其他单位

通信行业还包括政府部门(工信部、通管局)、研究院所(信通院、设计院、中电下属院所)、高校等

职称

无线通信

移动终端产品

包括手机、平板电脑(Pad)等消费电子产品,刚才说了,一般归为IT类.还有无线通讯模块,例如GPRS模块,物联网模块等,这些还是属于通信类。研发、制造、维修这类通讯终端的,都叫终端工程师

无线接入网

什么是接入网?负责把终端(例如手机)“接入”到通信网络里面来的,就是“接入网”。
什么东西能把手机连到通信网络里? 对了,就是基站。负责基站安装调测的工程师,就是 基站工程师

如果需要把一个区域用无线信号覆盖好(不留死角,不留盲区),那么,基站的位置、数量、天线的朝向等都需要精密计算,这个工作有一群专门的人来负责,叫 “网络规划优化工程师”(简称 网规网优工程师)。

移动核心网

电信机房里面,那些负责通信数据的处理和交换的设备,就是核心网设备。负责开通维护核心网设备的人,就是 “核心网工程师”

承载网

如下图所示,基站与核心网之间,核心网与核心网之间,都要传输数据。所有这之间的数据传输,都是通过承载网设备。负责承载网设备的人,叫 “承载网工程师”,也经常叫做 “传输工程师”

业务产品

在核心网里面,还有很多功能性的产品,为了实现某一特定功能业务而存在,例如短信、彩铃、智能网(预付费电话用的)。这些产品就叫做业务产品。它们有时候算核心网产品,有时候单独就叫业务产品。
负责开通调测这些产品的人,叫做 业务产品工程师

有线通信

有线(固网)终端部分

大家都知道的是固定电话。除此之外,还有行业终端(银行的ATM机、视频会议电话系统的视频电话机),还有某种具体业务的终端(IPTV的机顶盒)。
固网终端现在主要是指行业专用终端,大企业用,所以算通信多一点,不算IT。

接入网

有线的接入网,主要是指从骨干网络到用户终端的所有设备。

补充

通信项目,尤其是海外通信项目,一般都是 Turn-Key项目(交钥匙项目)。设备商要从零开始,从一个空房子到最后完成所有工作,直接把建好的机房和网络交给客户运营商。所以,会涉及到基础建设(土建)。

  • 工程督导
    就是负责通信工程的建设实施,指导和监督工程队按照设计图纸完成施工。有点类似于“高级监工”吧,工程施工的工作还是很辛苦的。
  • 运维
    设备调试交付之后,处于运行阶段,就需要人进行维护,查看运行状态,及时处理隐患,解决问题。这类看似简单的工作,就是 “运维工程师” 来做。相比于企业级的运维,电信级运维责任更巨大,压力也就更大,工作非常辛苦。
  • 能源工程师
    基站和机房的设备,都是用电的,所以要有电源。机房为了应对停电,还需要配备电池。负责电源电池设备的工程师

笔记主要包含实现自动部署的工作流。

参考

结合了第二、三个博文中的 workflow 文件,最终实现自动化部署。Obsidian 一键上传用到了 envelope

我的 workflow 文件

name: Generate Hexo Blog

on:
push:
branches:
- main # default branch

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
submodules: true
- name: Use Node.js 16.x #配置node环境
uses: actions/setup-node@v2
with:
node-version: '20.11.1'
- name: Setup Hexo environment
run: |
npm install -g hexo-cli
npm ci
- name: Generate pages
run: |
hexo generate
ls -R public/
# - name: Cache NPM dependencies
# uses: actions/cache@v2
# with:
# path: node_modules
# key: ${{ runner.OS }}-npm-cache
# restore-keys: |
# ${{ runner.OS }}-npm-cache
# - name: Install Dependencies
# run: npm install
# - name: Build
# run: npm run build
# - name: Upload Pages artifact
# uses: actions/upload-pages-artifact@v2
# with:
# path: ./public

# deploy:
# needs: build
# permissions:
# pages: write
# id-token: write
# environment:
# name: github-pages
# url: ${{ steps.deployment.outputs.page_url }}
# runs-on: ubuntu-latest
# steps:
# - name: Deploy to GitHub Pages
# id: deployment
# uses: actions/deploy-pages@v2
- name: Deploy
uses: JamesIves/github-pages-deploy-action@releases/v3
with:
REPOSITORY_NAME: yohakuo/yohakuo.github.io
BRANCH: html
FOLDER: public

基本操作

  • 切换分支
git checkout main
  • 从远程仓库拉取最新的更改并合并到本地仓库
git pull origin main
  • 保存更改并推送到 GitHub:
git add .  
git commit -m "main workflow configure"  
git commit -m "Vault backup"
git push -u origin main
  • 暂存更改(将它们暂存起来,然后在合并分支后再恢复)
git stash
git stash apply
  • 删除这些更改
git stash drop
  • 删除远程分支
git push origin --delete
  • 关联分支
git branch -u origin/main
  • 文件和文件夹的删除
git rm <name>
git rm -r <name>

主题

我当时配置这个主题出现了一点问题,最后是把它作为子模块工作流才能运行成<submodules: true>

问题解决

You have unmerged paths.

  • 查看下暂存区修改后的文件状态。
git status
  • 来到标红的文件进行修改,再次 push **MERGING** 就没有了

git push -u origin --> fatal: unable to access

  • 远程仓库和本地不一致,比如远程有的文件本地没有
  • 查询并取消代理
git config --global http.proxy

git config --global --unset http.proxy
  • 修改dns
git pull origin <name>

方案选择

  • Netlify 
    一个静态网页生成器,可以快速地构建和发布个人或团队的网站

  • hexo
    Hexo 是一个快速、简洁且高效的静态博客框架,它基于 Node.js 运行,可以将我们撰写的 Markdown 文档解析渲染成静态的 HTML 网页

  • GitHub Pages
    GitHub Pages 是由 GitHub 官方提供的一种免费的静态站点托管服务,让我们可以在 GitHub 仓库里托管和发布自己的静态网站页面

  • Hexo + GitHub 文章发布原理
    在本地撰写 Markdown 格式文章后,通过 Hexo 解析文档,渲染生成具有主题样式的 HTML 静态网页,再推送到 GitHub 上完成博文的发布。

  • Ruby
    一种面向对象、指令式、函数式、动态的通用编程语言

  • Gem
    Gem 是 Ruby 中的包,其中包含包信息,以及用于安装的文件

  • Gemfile
    一种描述 Ruby 程序的 gem 依赖关系的格式

  • 最后采用了 hexo+github pages 的方案

第一次尝试

[!note] 熟悉了基本流程,但是觉得生成部署有点麻烦,后面发现有 github action 可以自动部署(2.0),折腾了两天,暂时没问题

参考教程

本地配置

  • 安装hexo
    • 创建一个文件夹 MyBlog,用来存放自己的博客文件,然后 cd 到这个文件夹下(或者在这个文件夹下直接右键 git bash 打开)。
    • 定位到该目录下,输入 npm install -g hexo-cli 安装 Hexo。可能会有几个报错,无视它就行。
    • 安装完 hexo -v 验证安装成功没
  • 初始化
    • 在主题根目录 hexo init
    • 安装必备组件 npm install
  • 预览
hexo g (hexo generate)
hexo server(或者简写:hexo s))

连接 github 到本地

  • 在 MyBlog 中右键打开 git bash,第一次使用 git 后需要将用户名和邮箱进行初始化
git config --global user.name "yohakuo"
git config --global user.email "【邮箱】"
  • 检查
git config user.name
git config user.email
  • SSH
    简单来讲,就是一个秘钥,其中,id_rsa 是你这台电脑的私人秘钥。id_rsa. pub 是公共秘钥,可以随便给别人看。把这个公钥放在 GitHub 上,这样当你链接 GitHub 自己的账户时,它就会根据公钥匹配你的私钥,当能够相互匹配时,才能够顺利的通过 git 上传你的文件到 GitHub 上。
  • 创建 SSH
ssh-keygen -t rsa -C "【邮箱】"
  • 检验是否创建成功
ssh -T git@github.com

将 hexo 部署到 github

打开博客根目录下的_config. yml 文件,这是博客的配置文件。修改最后一行:

# Deployment 
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
  type: 'git'
  repository: https://github.com/yohakuo/yohakuo.github.io.git
  branch: main
  • 注意空格

  • repository 修改为你自己的 github 项目地址。

  • 安装部署工具

npm install hexo-deployer-git --save
  • 部署
hexo clean //缩写成 hexo cl
hexo generate // 缩写 hexo g
hexo deploy // hexo deploy
0%