职场人际
职场人际前言:   本人在职场摸爬滚打多年,从开始的小白到独挑项目的技术达人,再到带领团队的领头羊。年龄渐涨,阅历上岗。再次将宝贵的经历写入。
放在前面的话  在职场里什么最难?作为一个程序员,每天都要和计算机打交道,计算机是毫无情绪的按部就班处理事物,多年的经验告诉我,即使程序出现了预料之外的Bug,只要按照特定的方法和步骤终究有办法解决这些技术问题。在职场当中技术问题往往容易解决和把控,难处理的的是和人打交道的部分,公司也会一个小社会,你的同事、客户、产品经理、领导、老板都会有情绪,
第一章——计算机系统基础
第一章——计算机系统基础前言:   计算机第一章节主要知识点。
1 知识点介绍
数值转换;
数的表示;
计算机的组成;
流水线;
多级存储结构;
I/O控制方式;
可靠性、校验码;
2 数值转换  进位计数制系统基本概念:数制、基数、数码、数位、位权。
特点/数制
十进制
二进制
八进制
十六进制
基本数码
0-9
0, 1
0-7
0-9, A-F
基数
10
2
8
16
位权
$10^n$
$2^n$
$8^n$
$16^n$
2.1 BCD码  是一种二进制的数字编码形式,用4位二进制数来表示1位十进制数。
2.2 8421码  8421码是BCD码的一种,它表达的意思是每一个二进制位上的数据对应一个固定的值,只需要把对应的1位置的数据值相加,即可得到该二进制对应的十进制值。
$$0b1010100 = 64 + 16 + 4 = 84$$
$$100 = 0b ...
c进阶篇(十二)——深入理解宏定义
c进阶篇(十二)——深入理解宏定义前言:   c的语法中,最灵活的是宏使用,本篇文章将详细探讨宏的几种用法。
1 概念  在c/c++中,宏定义将一个标识符定义为一个字符串,源程序中的该标识符均以指定的字符串来替代。因此理解宏定义用法的核心是“替换”。宏定义是在预处理阶段处理的,也即在编译前就完成了宏的替换。宏的使用可以使得编程者编辑的代码得到简化,也可提高代码的运行效率。
2 规则  宏定义的语法规则如下。
1#define <宏名><(参数列表)> <宏体>
  宏可以带参数列表也可以不带,参数列表同样也是进行替换。处理定义处在代码中所有宏名字符串都会替换为宏体。
3 不带参宏定义  此种宏用法发简单,但却大有用处。不带参宏是没有参数列表的宏定义。
3.1 空宏用作条件编译  条件编译离不开宏,而空宏更是常用于条件编译的条 ...
Git基础篇(二十四)——clean指令
Git基础篇(二十四)——clean指令前言:   要对git仓库进行清理,需要使用clean指令,本篇文章详细介绍其用法。
1 简介  对Git仓库进行清洁管理,其指令形式如下。
1git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <path>
  谨慎使用 git clean 指令清理,因为删除后很可能是不能回复的。
2 常用指令介绍
-f 或 --force : 删除未track未被.gitignore记录的文件;
-n : 删除演示,会将要删除的内容列出来,但不会真的删除;
-d : 删除未track未被.gitignore记录的文件夹,需要和 -f 搭配使用;
-x : 删除未track的文件,也包括被.gitignore记录的文件和文件夹,需要和 -f 搭配使用;
  以下是用法示例。
2.1 删除未track未被.git ...
TortoiseGit使用教程
TortoiseGit使用教程前言:  TortoiseGit工具可以帮助我们可视化的操作Git,不必记忆繁琐的指令。
1 TortoiseGit简介  TortoiseGit(中文发音:涛特斯),中文名为海龟Git,它是免费的Git版本控制系统的客户端,将Git的操作从纯指令简化为UI的鼠标操作。
2 下载安装  在 TortoiseGit官网 下载最新版本并安装。登录官网界面,点击 Download 可看到如下界面。
TortoiseGit使用教程前言:  TortoiseGit工具可以帮助我们可视化的操作Git,不必记忆繁琐的指令。
1 TortoiseGit简介  TortoiseGit(中文发音:涛特斯),中文名为海龟Git,它是免费的Git版本控制系统的客户端,将Git的操作从纯指令简化为UI的鼠标操作。
2 下载安装  在 TortoiseGit官网 下载最新 ...
HHKB键盘使用
HHKB键盘使用前言:  HHKB键盘使用快三年了,一把放公司一把放家里,并且我可以是说是重度使用者,几乎每天都会较长时间的使用,以至于除了HHKB以外的键盘使用不利索了
1 什么是HHKB键盘  百度百科上有专门的解释。HHKB(Happy Hacking Keyboard),直译中文名是快乐的黑客键盘,是专业的静电容键盘,产品所属公司为日本富士通。和田英一是HHKB键盘的设计师,为了打造一款对软件开发者或高频打字者友好的键盘,和田英一设计了HHKB键盘。所以这款键盘从一开始就是转为软件开发者设计的。和田英一还是日本计算机的先驱,东京大学的名誉教授。  目前HHKB已经推出了以下几代产品。
HHKBProfessional2标准版
HHKBProfessional2Type-S静音版
HHKBProfessionalBT蓝牙版
HHKBProfessionalClassic经典版
HHKBProfessionalHYBRID双模版
HHKBProfessionalHYBRI ...
Git基础篇(二十三)——amend指令
Git基础篇(二十三)——amend指令前言:   amend指令是常用指令,用于对最近一次提交记录进行修改,但指令的使用应该小心,本篇文章详细介绍amend的用法。
1 amend指令介绍  该指令用于对最近一次 commit 记录进行再次修改提交,不会生成新的提交记录,但会更新git的Commit ID。原提交记录可通过 git reflog 查看。
Git基础篇(二十三)——amend指令前言:   amend指令是常用指令,用于对最近一次提交记录进行修改,但指令的使用应该小心,本篇文章详细介绍amend的用法。
1 amend指令介绍  该指令用于对最近一次 commit 记录进行再次修改提交,不会生成新的提交记录,但会更新git的Commit ID。原提交记录可通过 git reflog 查看。
  什么情况下应该应该对最近一次提交记录进行修改?比如忘记添加或多添加了一些文件,对文件内容需要重新修 ...
c进阶篇(十一)——变量初始化详解
c进阶篇(十一)——变量初始化详解前言:   定义变量时对数据类型进行初始化是十分有必要的,但变量的初始化也许还有你不知道的细节,本篇文章带你深入探讨。
1 静态、局部和全局变量初始化  我们把变量按照作用域和生存期进行分类,可以分为静态变量、局部变量、全局变量三类。定义变量时从语法上将可以对变量初始值进行初始化,也可以选择不初始化,以下进行未初始化时初值探究。
1.1 未初始化时的初值  未初始化时,由于全局变量和静态变量由编译器自动初始化为0(仍然建议代码上写明初始值赋值0),而局部变量存储在栈空间里,未初始化时初值是不确定的。这里以byte类型(uint8_t)举例,其他数据类型也一样(指整形、浮点型、字符型、指针型、数组、结构体、联合体、枚举)。
12345678910111213141516byte g_byTmp; //全局变量。byte Fun(void){ static byte s_byTmp; //静态变量。 byte byTmp; ...
c进阶篇(十)——weak用法详解
c进阶篇(十)——weak用法详解前言:  weak用于修饰弱函数或变量,以实现类似c++语言中函数重载的功能,本篇文章详细探讨weak的运用。
1 什么是weak函数   weak 不是c语言的关键字,而是一些编译器的扩展属性,MDK-ARM中在函数定义和声明前加 __attribute__((weak)) 表示将该函数定义为弱函数,而在变量定义或声明前加 __attribute__((weak)) 表示将该变量定义为弱变量。弱函数或变量允许多次定义,编译器不会报重复定义的错误,但是调用时只能有一个有效。编译器会根据强弱程度决定调用哪个定义,简单来说就是支持重定义。普通定义的优先级大于弱定义,具体的调用规则如下。
一次或多次弱定义,一次普通定义。编译器忽略所有弱定义,调用普通定义;
一次或多次弱定义,无普通定义。编译器会发出警告,会调用其中一个弱定义,具体调用哪一个不确定;
普通定义不能有多次,否则报错重复定义;
  注意,weak不能与static搭配,因此不存在静态 ...
c进阶篇(九)——inline函数用法详解
c进阶篇(九)——inline函数用法详解前言:  内敛函数可有效降低调用函数的资源开销,堆栈开销和时间开销都能得到降低,但会增加Flash的消耗。本篇文章详细讲解内敛函数在c语言中的运用。
1 什么是内敛函数  在c/c++中,为了消除一些小函数(处理任务少,运算时间较短的函数),特别是一些调用频次很高的函数调用时带来的大量堆栈空间和进退栈时间的消耗,特别的引入 inline 修饰符在函数定义时放置在返回值关键字之前,请求编译器将其作为内敛函数处理,它对编译器只是提出一种建议,编译器将最终决定是否将其作为内敛函数或普通函数。被作为内敛的函数,编译器在调用处直接将其展开,嵌入到调用处,这样就省去了参数传递、对栈的操作和释放,从而节省了栈和时间开销。由于在每个调用处都会展开和嵌入内敛函数的代码,因此掉调用的地方越多Flash开销越大,对于多处调用的函数作为内敛将会快速消耗Flash空间,这一点与宏函数有些类似。   inline 是c99标准时加入的关键字。
2 内敛函数 ...