自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhabin0607的博客

学习 交流 共同进步

  • 博客(114)
  • 收藏
  • 关注

原创 二极管选型

关键参数的确认VfVr(反向耐压确定)IFav(平均电流)IFpeak(峰值电流)这边给的建议是先优先考虑上面的参数,然后比较下面的参数IR(漏电流)漏电流带来损耗Trr(方向恢复时间)结电容RacRdc二极管的损耗导通损耗开关损耗选型根据确定的参数去平台上选取合适的二极管进行操作,其效率最高...

2021-08-31 11:26:09 302

原创 玖-《函数定义及调用》

玖-《函数定义及调用》makefile 中支持函数的概念make 解释器提供一系列的函数供 makefile 调用在makefile 中支持自定义函数实现,并调用执行通过 define 关键字实现自定义函数自定义函数语法函数定义define func1 @echo "my name is $(0)"endef define func2 @echo "my name is $(0)" @echo "Param => $(1)"endef函数

2020-09-20 23:20:25 154

原创 捌-《条件判断语句》

捌-《条件判断语句》捌-《条件判断语句》makefile 中支持条件判断语句可以根据条件的值来决定 make 的执行可以比较两个不同变量或者变量和常量值ifxxx(arg1,arg2)#for tureelse#for falseendif注意事项条件判断语句只能用于控制 make 实际执行的语句,但是不能控制规则中命令的执行过程条件判断语句的语法说明常用形式ifxxx(arg1,arg2)其它合法形式ifxxx "arg1""arg2"ifxxx 'ar

2020-09-15 23:25:34 700 1

原创 柒-《变量的 高级主题(下)》

柒 - 变量的高级主题(下)环境变量(全局变量)makefile 中能够直接使用环境变量的值定义了同名变量,环境变量将被覆盖运行 make 时指定 ‘-e’ 选项,优先使用环境变量为什么要在 makefile 中使用环境变量优势环境变量可以在所有 makfefile 中使用劣势过多的依赖于环境变量会导致移植性降低变量在不同 makefile 之间的传递方式不同 makefile 之间变量传递的三种方式!!!直接在外部定义环境变量进行传递使用export

2020-08-31 23:38:47 157

原创 陆-《变量的高级主题(上)》

陆 - 变量的高级主题(上)变量值的替换使用指定字符(串)替换变量值中的后缀字符(串)语法格式:$(var:a=b) 或者 $(var:a=b)替换表达式中不能有任何的空格make中支持使用 ${} 对变量进行取值src := a.cc b.cc c.ccobj := $(src:cc=o) // 变量值的替换 a.o b.o c.otest : @echo "obj => $(obj)"变量的模式替换使用 % 保留变量值中的指定字符串,替换

2020-08-26 22:34:23 132

原创 伍-《预定义变量的使用》

伍- 预定义变量的使用在makefile 中存在一些预定义的变量自动变量$@, $^, $<特殊变量$(MAKE), (MAKECMDGOALS),(MAKECMDGOALS),(MAKECMDGOALS),(MAKEFILE_LIST)…自动变量的意义$@当前规则中触发命令被执行的目标$^当前规则中所有依赖$<当前规则中的第一个依赖自动变量的使用示例注意:“”对于makefile有特殊含义输出时需要加一个"” 对于 makefile 有特殊

2020-08-25 22:45:46 148

原创 肆-《变量和不同的赋值方式》

第4课 - 变量和不同的赋值方式makefile 中支持程序设计语言中的变量的概念makefile 中的变量只代表文本数据(字符串)makefile 中的变量名规则变量名可以包含字符,数字,下划线不能包含“:” “#”, “=” 或 “ ”变量名大小写敏感变量的定义和使用makefile 中变量的赋值方式简单赋值(:=)递归赋值(=)条件赋值(?=)追加赋值(+=)不同的赋值方式意义不同简单赋值(:=)程序设计语言中的通用赋值方式只针对当前语句的变量有效

2020-08-17 22:51:55 120

原创 叁-《伪目标的引入》

伪目标的引入思考makefile 中的目标究竟是什么?默认情况下make 认为目标对应着一个文件make 比较目标文件和依赖文件的新旧关系,决定是否执行命令make 以文件处理作为第一优先级默认情况下一个目标对应一个文件下面代码有什么意义?clean : rm *.o hell.outmake clean这里代码意思是不希望 clean 是一个目标,而是当作一个标签使用,make clean 希望执行 下面的命令编程实验1:hello.out all : func.o

2020-08-10 21:33:13 135

原创 贰 -《初识 makefile 的结构》

初识 makefile 的结构makefile 的意义makefile 用于定义源文件建的依赖关系makefile 说明如何编译各个源文件并生成可执行文件依赖的定义:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ve5SrZvw-1596850258615)(F4CC6BF29FB44DB79B769B9A243E2750)]makefile 中的元素含义targets通常是需要生成的目标文件名make 所需要执行的命令名称prerequisi

2020-08-08 09:33:11 121

原创 壹 -《make 和 makefile》

第1课 - make 和 makefile思考什么是 make ?为什么需要 make?make 是一个应用程序解析源码之间的依赖关系根据依赖关系自动维护编译工作执行宿主操作系统中的各种命令makefile 是一个描述文件定义一系列的规则来指定源文件编译的先后顺序拥有特定的语法规则,支持函数定义和函数调用能够直接集成操作系统中的各种命令make 和 makefile 之间的关系makefile 中的描述用于指导 make 程序如何完成工作,make 根据 makefile

2020-08-06 23:28:33 130

原创 【C++】63.C 语言异常处理

异常的概念程序在运行过程中可能产生异常异常(Exception) 与 Bug 的区别异常是程序运行使可预料的执行分支Bug 是程序中的错误,是不被预期的运行方式异常(Exception) 和 Bug 的对比异常运行时产生除 0 的情况需要打开的外部文件不存在数组访问时越界Bug使用野指针堆数组使用结束后未释放选择排序无法处理长度为 0 的数组C 语言经典处理方式: if … else …void func(...){ if(判断是否产生异常)

2020-05-20 23:44:41 234

原创 C++ 对象模型分析(下)

第51课 - C++ 对象模型分析(下)继承对象模型在 C++ 编译器的内部类可以理解为结构体子类是由父类成员函数叠加子类新成员得到的class Derived : public Demo { int mk;};编程实验1 :继承对象模型初探#include <iostream>#include <string>using names...

2020-04-12 15:51:07 181

原创 C++ 对象模型分析(上)

C++ 对象模型分析(上)回归本质class是一种特殊的struct在内存中 class 依旧可以看作变量的集合class 与 struct 遵循相同的内存对齐规则class 中的成员函数与成员变量是分开存放的每个对象有独立的成员变量所有对象共享类中的成员函数成员函数也是函数,只要时函数,编译之后就是放在代码段中的值得思考的问题class A{ int i;...

2020-04-07 22:17:06 179

原创 【C++】5.引用的本质分析

引用的意义引用作为变量的别名而存在,因此在一些场合中可以代替指针 引用相对于指针来说更具有更好的可读性和实用性swap 函数的对比// 指针版本void swap(int *a, int *b){ int t = *a; *a = *b; *b = t}// 引用版本(注意:函数中的引用行参不需要进行初始化!!!)void swap(int&...

2020-02-27 13:28:01 144

原创 第3课 - 调试环境的搭建

问题编写主引导区的代码时,如果发现 bug, 如何调试代码?Bochs(一款优秀的虚拟机软件)专业模拟 X86 架构的虚拟机 开源且高度可移植,有 C++ 编写完成 支持操作系统开发过程中的断点调试 通过简单配置就能够运行绝大数主流操作系统环境搭建解压压缩包tar -xzvf bochs-2.xx.tar.gz进入目录cd bochs-2.4....

2020-02-23 17:51:23 227

原创 第2课 - Hello, DTOS!

问题:主引导程序是软件还是固件?如果是软件,那么有谁开发?如何开发?主引导程序是软件,操心系统人员编写。主引导程序一段存储在主引导区(MBR)中的有效代码 并不固化与硬件,属于操作系统代码中的一部分 启动操作系统内核的桥梁,用汇编完成 代码总量不能超过512个字节(包含0x55aa)主引导程序的开发汇编补充知识mov:赋值操作,将右操作数赋值...

2020-02-17 12:00:13 414

原创 Vmware 打开虚拟机问题(独占方式锁定)

问题虚拟机莫名其妙的会突然死机,黑屏,启动不起来,关也关不带,在任务管理器强行关掉之后,再次打开,提示如下的错误方法一在虚拟机目录下,删除.lck文件,删除.vmdk文件的。但是vmdk文件在删除的时候提示无法删除。该方法并未能够解决问题!!!!方法二命令提示符(cmd),以管理员身份运行输入:netsh winsock reset...

2020-02-13 15:11:05 3622 1

原创 【C++】34.数值操作符的重载

问题:srting 类还具备 C 方式字符串的灵活性吗?还能直接访问单个字符嘛?类似于数组访问操作符 []?string 类最大限度的考虑了 C 字符串的兼容性 可以按照使用 C 字符串的方式使用 string 对象string s = "a1b2c3d4e";int n = 0;for(int i=0; i<s.length; i++){ if( ...

2020-02-09 21:15:02 166

原创 【C++】62.单例类模板

在架构设计时,某些类在整个系统生命期中最多只能有一个对象存在(Single Instance)如何定义一个类,使得这个类最多只创建一个对象?思路要控制类的对象数目,必需对外隐藏构造函数 将构造函数的访问属性设置为 private 定义 instance 并初始化为 NULL 当需要使用对象时,访问 instance 的值 空值:创建对象,并用 in...

2020-02-08 20:46:43 133

原创 【C++】36.经典问题三

问题1:什么时候需要重载赋值操作符?编译器是否提供默认的赋值操作符?class Test{ int* m_pointer; // 类成员里面申请了系统资源public: Test() { m_pointer = NULL; } Test(int i) { m_pointer = new i...

2020-02-08 17:29:57 161

原创 【C++】33.C++中的字符串

历史原因:从C到C++进化中引入 自定义类型在C++中可以通过类完成字符串类型的定义问题C++中的原生类型是否包含字符串类型?C++语言直接支持C语言的所有概念,但是没有原生的字符串类型。C++标准库提供了 string 类型string 直接支持了字符串连接 string 直接支持字符串的大小比较 string 直接支持子串查找和提取 s...

2020-02-06 20:33:48 213

原创 【C++】31.完善的复数类

复数类应该具有的操作利用操作符重载统一实现复数与实数的运算方式 统一实现复数与实数的比较方式 Complex operator + (const Complex& c); Complex operator - (const Complex& c); Complex operator * (const Complex& c)...

2020-02-05 22:57:24 176

原创 【C++】30.操作符重载的概念

讨论复数解决方案是否可行class Complex{public: int a; int b;};int main(){ Complex c1 = {1, 2}; Complex c2 = {3, 4}; Complex c3 = c1 + c2; // ? return 0;}解决方案一友元函数...

2020-02-04 22:20:17 247

原创 【C++】29.类中的函数重载

函数重载回顾函数重载的本质是相互独立的不同函数 C++ 中通过函数名和函数参数确定函数调用 无法直接通过函数名得到函数重载的入口地址 函数重载必然发生在同一个作用域中类中的重载类中的成员函数可以进行重载构造函数的重载 普通成员函数的重载 静态成员函数的的重载问题:全局函数,普通成员函数以及静态成员函数直接是否可以构成重载?万变不离其宗重载...

2020-02-03 21:17:33 204

原创 【C++】28.友元的尴尬能力

什么是友员?友元是C++中的一种关系 友元关系发生在函数与类之间或者类与类之间 友元关系是单项的,不能传递友员的用法在类中以 friend 关键字声明友员 类的友元可以是其它类或者具体函数 友元不是类的一部分 友元不受类中的访问基本的限制 友元可以直接访问具体类的的所有成员使用语法class Point{ double x; doub...

2020-02-02 20:48:22 198

原创 【C++】27.二阶构造模式

二阶构造模式(一种小方法)设计模式就是设计方法(前人总结行之可行的一种方法)构造函数类的构造函数用于对象的初始化 构造函数与类同名并且没有返回值 构造函数在对象定义是自动被调用问题如何判断构造函数的执行结果? 在构造函数中执行 return 语句会发生什么? 构造函数执行结束是否意味着对象构造成功?没有办法判断构造函数的执行结果,可以强行定义一个变量...

2020-02-01 11:31:01 209

原创 【C++】25.类里面的静态成员变量

成员变量回顾通过对象名能够访问public成员变量 每个对象的成员变量都是专属的 成员变量不能在对象直接共享项目要求统计在程序运行期间某个类的对象数目 保证程序的安全性(不用全局变量来实现计数功能) 随时可以获取当前对象的数目静态成员变量静态成员变量属于整个类所有 静态成员变量的生命周期不依赖任何对象 可以通过类名直接访问公有静态成员变量 所有对象共享类...

2020-01-31 11:49:03 365

原创 【C++】46.继承中的构造与析构

问题:如何初始化父类成员?父类构造函数和子类构造函数的有什么关系?子类中可以定义构造函数 子类构造函数必须对继承而来的成员进行初始化 直接通过初始化列表或者赋值的方式进行初始化 调用父类的构造函数进行初始化父类构造函数在子类中的调用方式默认调用适用于无参构造函数和使用默认参数的构造函数显示调用...

2020-01-19 10:15:26 133

原创 【C++】45.不同的继承方式

被忽视的细节class Parent{};class Child_A : public Parent{};问题三连冒号(:)表示继承关系, Parent 表示被继承的类,那 public 的意义是什么?是否可以将 public 换成 protected 或者 private,如果可以与 public 继承有什么区别?实验出真知#include...

2020-01-17 16:50:41 124

原创 【C++】44.继承中的访问级别

问题子类是否可以直接访问父类中的私有成员?面向对象理论根据C++语法example:class Parent{private: int mv;public: Parent() { mv = 100; } int value() { return mv; ...

2020-01-16 21:54:12 1354

原创 【C++】43.继承的概念和意义

类之间是存在直接的关联关系:组合和继承先考虑组合关系(简单),在考虑继承(关系比较复杂)组合关系:整体与部分的关系(最简单的关系)组合的关系特点将其它类的对象作为当前类的成员使用 当前类对象与成员对象的生命周期相同 成员对象在用法上与普通对象完全一致#include <iostream>#include <string>us...

2020-01-14 19:22:12 194

原创 【C++】54.被遗弃的多重继承(下)

接着上一课分析 ......多重继承的问题三多重继承可能产生多个虚函数表示例:class BaseA{public: virtual void funcA() { cout << "BaseA::funcA()" << endl; }};class BaseB{ public...

2020-01-09 23:23:07 207

原创 【C++】53.被遗弃的多重继承(上)

问题:C++ 中是否允许一个类继承多个父类?C++支持编写多重继承的代码一个子类可以拥有多个父类 子类拥有所有父类的成员变量 子类继承所有父类的成员函数 子类对象可以当作任意父类对象使用多重语法规则class Derived : public BaseA, public BaseB, public BaseC{};多重继承的本质与单继承相同示例:...

2020-01-08 22:40:13 177

原创 C10K问题

C10K问题如何在一台物理机上同时服务 10000 个用户?C10K 问题是由一个叫 Dan Kegel 的工程师提出并总结归纳的,可参考如下链接http://www.kegel.com/c10k.htmlC10K 问题解决之道网络编程中,涉及到频繁的用户态-内核态数据拷贝,设计不够好的程序可能在低并发的情况下工作良好,一旦到高并发情形,其性能可能呈现出指数级别的损...

2020-01-05 10:06:41 268

原创 【C++】40.前置操作符和后置操作符

问题:下面的代码有没有区别?为什么?i++; // i 的值作为返回值, i 自增1++i; // i 自增1, i 的值作为返回值在VS2013分析: i++;00950D45 mov eax,dword ptr [i] 00950D48 add eax,1 00950D4B mov dword ptr ...

2020-01-03 17:55:59 160

转载 一文看懂arm架构和x86架构有什么区别

本文主要介绍的是arm架构和x86架构的区别,首先介绍了ARM架构图,其次介绍了x86架构图,最后从性能、扩展能力、操作系统的兼容性、软件开发的方便性及可使用工具的多样性及功耗这五个方面详细的对比了arm架构和x86架构的区别,具体的跟随小编一起来了解一下。 什么叫arm架构  ARM架构过去称作进阶精简指令集机器(AdvancedRISCMachine,更早称作:AcornRI...

2019-12-29 23:10:53 1218

原创 第1课 - 进阶操作系统

操作系统Window,UNIX,Linux ,Max OS, Android, iOS 操作系统是直接运行硬件之上的计算机程序 操作系统用于管理和控制计算机的硬件与软件程序‘ 操作系统为用户软件的开发提供必要的服务和接口现代计算机系统架构编译软件可以认为是用户软件,只不过是编译软件比较特殊,是用于程序开发的,最终可得到用户软件。BIOS(Base Input...

2019-12-28 22:49:10 319

原创 【C】20.链接过程介绍

链接器每个C语言源文件被编译后都生产目标文件,这些文件最终通过链接器生成最终的可执行程序。链接器的主要作用是把各个模块之间相互引用的部分处理好,是得各个模块之间能够正确的衔接。两种链接方式静态链接 动态链接静态链接由链接器在链接时将库的内容直接加入到可执行程序中Linux 下静态库的创建和使用编译静态源码gcc -c lib.c...

2019-12-26 22:41:56 143

原创 【C】46.函数与宏分析

函数与宏宏是由预处理器直接替换展开的,编译器不知道宏的存在 函数是由编译器直接编译的实体,调用行为由编译器决定 多次使用宏会导致最终可执行程序的体积增大 函数是跳转执行的,内存中只有一份函数体存在 宏的效率比函数高,因为是直接展开,无调用开销 函数调用时会创建活动纪录,效率不如宏#include <stdio.h>#define RESET(p, le...

2019-12-25 19:35:53 122

原创 【C】6. 分支语句

if 语句分析if 语句用于根据条件选择执行语句 else 不能独立存在且总是与它最近的 if 相匹配(else 往前看找 if) else 语句后可以接连其它 if 语句if 语句中零值比较的注意点bool 型变量应该出现于条件中,不要进行比较 变量和 0值比较时, 0 值应该出现在比较符号左边 float 型变量不能直接进行0 值比较,需要定义精度bool...

2019-12-21 16:37:09 138

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除