C++笔记(《C++新经典》)

2023-05-16

C++新经典

  • 第1章 C/C++
    • 1.1 C和C++语言的起源、特点、关系与讲解范畴
    • 1.2 C/C++语言市场需求与就业需求分析
    • 1.3 再谈C/C++就业
    • 1.4 搭建开发语言环境
  • 第2章 数据类型、运算符与表达式
    • 2.1 常量、变量、整形、实型和字符型
      • 2.1.1 创建最基本的C程序
      • 2.1.2 C语言的数据类型
      • 2.1.3常量和变量
      • 2.1.4 整型数据
      • 2.1.5 实型数据
      • 2.1.6 字符型数据
      • 2.1.7 字符串常量
      • 2.1.8 变量赋初值
      • 2.1.9 数值型数据之间的混合运算
    • 2.2 算数运算符和表达式
      • 2.2.1 C语言的运算符
      • 2.2.2 算术运算符和算数表达式
      • 2.2.3 运算符优先级问题
      • 2.2.4 强制类型转换运算符
      • 2.25 自增和自减运算符
    • 2.3 复制运算符和逗号运算符
      • 2.3.1 赋值运算符和赋值表达式
  • 第3章 程序的基本结构和语句
  • 第4章 程序的基本结构和语句
  • 第5章 循环控制
  • 第6章 数组
  • 第7章 函数
  • 第8章 编译预处理
  • 第9章 指针
  • 第10章 结构体与公用体
  • 第11章 位运算
  • 第12章 文件
  • 第13章 C++基本语言
    • 13.6函数新特性、inline内联函数与const详解
      • 13.6.1 函数回顾与后置返回类型
      • 13.6.2 inline内联函数
      • 13.6.3 函数特殊写法总结
      • 13.6.4 关于const char * 、char const *、char * const
      • 13.6.5 函数形参中带const和&
    • 13.7 string 类型
    • 13.8 vector类型
    • 13.9 迭代器精彩演绎、失效分析及弥补、实战
    • 13.10 类型转换:static_cast 、reinterpret_cast
      • 13.10.1 隐式类型转换
      • 13.10.2 显式类型转换(强制类型转换)
  • 第14章 类
  • 第15章 模板与泛型
  • 第16章 智能指针
  • 第17章 并发与多线程
    • 17.1 基本概念和实现
      • 17.1.1 并发、进程、线程的基本概念
      • 17.1.2 并发的实现方法
      • 17.1.3 C++11新标准线程库
    • 17.2 线程启动、结束与创建线程的方法
      • 17.2.1 范例演示线程运行的开始和结束
      • 17.2.2 其他创建线程的写法
    • 17.3 线程传参详解、detach坑与成员函数作为线程函数
      • 17.3.1 传递临时参数对象作为参数
      • 17.3.2 临时对象作为线程参数继续讲
  • 第18章 内存高级话题
  • 第19章 STL标准模板库大局观
  • 第20章 高级话题与新标准
  • 后记 IT职业发展的未来之路

第1章 C/C++

1.1 C和C++语言的起源、特点、关系与讲解范畴

1.2 C/C++语言市场需求与就业需求分析

1.3 再谈C/C++就业

1.4 搭建开发语言环境

第2章 数据类型、运算符与表达式

2.1 常量、变量、整形、实型和字符型

2.1.1 创建最基本的C程序


2.1.2 C语言的数据类型

在这里插入图片描述
1.每种数据类型所占内存大小

2.每种数据的取值范围

2.1.3常量和变量

常量:字面值。
变量:值可以改变的量。
变量定义:类型名 变量名 [ = 变量初始值 ];
标识符:变量等等的取名。
保留字:系统保留的特殊用途的字。

2.1.4 整型数据

整数,包含所有进制。

2.1.5 实型数据

小数。

2.1.6 字符型数据

1.字符常量
‘a’ , ‘b’ ,‘1’
2.转义字符
‘\n’ ‘\’ ‘’’ …
3.字符变量
char c = ‘a’ ;

printf("c1=%c, c2=%c\n",c1,c2);
printf("c1=%d, c2=%d\n",c1,c2);

printf("%f",num);

知识点: ASCII

2.1.7 字符串常量

printf("hello world!");

/*
*	区分'a'   "a"
*	字符串结尾多出来一个转义字符'\0',作为结束符
*
*/

注:Ctrl+F5 调试
Ctrl+F9 断点
Ctrl+F10下一断点
Shift +F9 添加监视
Ctrl Alt M +1 调用内存1(调试-窗口-内存-内存1)

2.1.8 变量赋初值

定义变量之后才能使用,一般是要赋初值的,否则会出错。

2.1.9 数值型数据之间的混合运算

不同数值类型的数据一起运算的的时候,系统尝试将变量类型统一。
类型转换从:
char , short ---->int ----> unsigned ----> long ----> double <-----double <----float
范围:由小变大。(隐式转换)

2.2 算数运算符和表达式

2.2.1 C语言的运算符

算数运算符 + - * 、 %(取余)
关系运算 <, <=, ==,>, >=,!=
逻辑运算符 !, &&, ||
位运算符 <<, >>, ~, |, ^, &
赋值运算符 =
条件运算符 ? :
逗号运算符 ,
指针运算符 * , &
求占字节运算符 sizeof()
强制类型转换符 (类型名)
成员变量运算符 . , ->
下标运算符 []
其他 …

2.2.2 算术运算符和算数表达式

2.2.3 运算符优先级问题

在这里插入图片描述
P29

2.2.4 强制类型转换运算符

一般形式: (类型名)(表达式)

int a=1;
double b=(int) a;

总结:两种数据类型转换

  • 自动类型转换,类型范围由小到大。
  • 强制类型转换

都有精度损失或者溢出的风险。

2.25 自增和自减运算符

前++
后++
只适用于整型变量。

2.3 复制运算符和逗号运算符

2.3.1 赋值运算符和赋值表达式

第3章 程序的基本结构和语句

第4章 程序的基本结构和语句

第5章 循环控制

第6章 数组

第7章 函数

第8章 编译预处理

第9章 指针

第10章 结构体与公用体

第11章 位运算

第12章 文件

第13章 C++基本语言

13.6函数新特性、inline内联函数与const详解

13.6.1 函数回顾与后置返回类型

前置返回类型

int func( int a , int b);
int func( int a , int b)
{
	return a+b;
}

后置返回类型

auto func( int a, int b)->int ;
auto func( int a, int b)->int 
{
	return a+b;
}

提示:一般一个函数写个几十到几百行就行,别太多,难以阅读。

13.6.2 inline内联函数

将简短且常用的函数定义为内联函数,代码在编译时被编译器会自动替换函数为函数体。

  • 循环、分支、递归调用就不要使用内联修饰符。
  • 内联函数类似 宏展开 #define 和 constexpr
inline int myfunc()
{
	return 1;
}

13.6.3 函数特殊写法总结

  • 返回空
void func(int a, int b){
	a+b;
}
  • 返回 值
int func(int a, int b){
	return a+b;

-返回指针

int * func(int b)
{
	int a=b;
	return &a;//函数一结束a就被释放,巨大隐患。
}
  • 返回引用
int & func()
{
	int a=0;
	return a;//函数一结束a就被释放,巨大隐患。
}
  1. 采用形参返回
void func(int &a ,int &b)
{
	int temp=a;
	a=b;
	b=temp;
}

13.6.4 关于const char * 、char const *、char * const

关于修饰符:修饰符是从变量的旁边从右向左阅读
因此:

  1. const char * p ,* 先声明 p是指针,char 声明 指针指向的数据类型, const声明 不能通过指针p去修改p指的内容。
  2. char const * p,* 先声明 p是指针,const 声明不能通过指针p修改p指向的内容,声明 指针指向的数据类型。
  3. char * const p,const p p是一个常量, *声明这个常量是一个指向常量的指针,char常量指针指向的数据类型。

太难解释了,总之就是

  1. 指针常量,不能用指针求修改,指向的可以是常量,也可以是变量。(1,2)
    -常量指针, 指针指向的是一个常量,不能指向非常量。(3)

13.6.5 函数形参中带const和&

先导:
形参的三种传值方式:

  1. 值传递
int add(int a, int b)
{
	cout<<"a的地址:"<<&a<<std::endl;
	cout<<"b的地址:"<<&b<<std::endl;

}
int main()
{
	int c=1,d=2;
	cout<<"c的地址:"<<&c<<std::endl;
	cout<<"d的地址:"<<&d<<std::endl;
	add(c,d);
}
  1. 指针传递
int add(int *a, int *b)
{
	cout<<"a指向的地址:"<<a<<std::endl;
	cout<<"a的地址:"<<&a<<std::endl;
	cout<<"b指向的地址:"<<b<<std::endl;
	cout<<"b的地址:"<<&b<<std::endl;

}
int main()
{
	int e=1,f=2;
	int *c=&e,*d=&f;
	cout<<"c的地址:"<<&c<<std::endl;
	cout<<"d的地址:"<<&d<<std::endl;
	add(c,d);
}
  1. 引用传递
int add(int &a, int &b)
{
	cout<<"a的地址:"<<&a<<std::endl;
	cout<<"b的地址:"<<&b<<std::endl;

}
int main()
{
	int c=1,d=2;
	cout<<"c的地址:"<<&c<<std::endl;
	cout<<"d的地址:"<<&d<<std::endl;
	add(c,d);
}

综上,值传递需要消耗时间去复制实参到形参。
指针传递和引用传递是直接调用实参,效率更高。

函数参数带const

  • 防止无意中修改形参值导致实参被修改
  • 实参类型可以更加灵活
void func(const int & a)
{
	a=1;//不能通过a修改实参的值,报错。
		//引用传递,速度更快。
}


13.7 string 类型

13.8 vector类型

13.9 迭代器精彩演绎、失效分析及弥补、实战

迭代器仅仅是用来遍历容器的,若在遍历容器时,对容器进行修改,例如删除、添加的操作,会导致迭代器失效。
禁止迭代器使用时修改容器容量!

13.10 类型转换:static_cast 、reinterpret_cast

13.10.1 隐式类型转换

13.10.2 显式类型转换(强制类型转换)

C语言风格:

double b=10.1;
int  a =(int) b;

C++四种强制类型转换
通用形式:

//强制类型转换名<type> (express);
  1. static_cast :静态转换,即编译时检查。
  • 相关类型转换,如整型和浮点型之间的转换。
double f=10.2;
int a= static_cast<int> (f);
//类似
int b=(int ) f;
  • 子类到父类的转换
class A{};
class B :public A{};
B b;
A a= static_cast<A> (b);
  • void * 与其他类型指针之间的转换
    void * 的指针可以指向任何指针类型。我感觉这个功能很鸡肋,懒得记载了。
    不过,指针类型不可以进行强制类型转换,否则会出错。
  1. dynamic_cast :运行时类型识别和检查

  2. const_cast :用于去除指针或者引用的const属性,编译时检查。

在这里插入代码片
  1. reinterpret_cast

第14章 类

第15章 模板与泛型

第16章 智能指针

第17章 并发与多线程

17.1 基本概念和实现

17.1.1 并发、进程、线程的基本概念

1.并发
多个任务同时进行。(边听音乐边写作业,听音乐和写作是两不同的活动,但是同事进行。)
早期计算机只有一个CPU,为了同时间执行多个任务,我们规定在一定的时间间隔内执行程序,这样就可以在宏观上达到并行执行程序,但实际微观上是隔很短的时间不停的切换执行程序,这样看起来就像很多程序同时执行一样。
2.可执行程序
盘上的一个文件,window上是 .exe 结尾的文佳 ,Linux上面是 文件权限为 -rwxrw-r–的文件。
3.进程
可执行程序运行起来就是一个进程,总之就是一个运行的程序的过程就是进程。
4.线程
请先记住两件事:

  • 每个进程都有一个主线程,这个主线程是唯一的。
  • 当运行一个可执行程序,产生一个进程后,这个主线程也随之默默启动起来了。

总结:

  • 线程是用来执行代码的
  • 把线程理解成一条代码执行的通路,一个新的线程就代表一条新的道路。
  • 一个进程自动办好了一个主线程,主线程随着进程的默默启动并运行,并可以包括多个其他线程(非主线程,是需要用代码来创建其他线程),但创建线程的数量最大一般不建议超过200~300个,具体还要针对实际程序。
  • 因为主线程是自动启动的,所以一个进程中最少也是有一个线程的。
  • 多线程可以同时做多件事情,所以运行效率更高,但是并不容易评估和量化,仍旧需要在实际编程和实际项目中体会和调整。

5.学习心得
戒骄戒躁,慢慢来。

17.1.2 并发的实现方法

1.多进程并发
多个程序同时运行。进程通讯三种方式:管道通讯、消息通讯和共享内存。
2.多线程并发
单个进程创建多个线程。线程通信代价更小,同一个进程的线程是共享地址空间,因此多线程并发开销更小。但是由于共享地址空间,数据一致性问题凸显。
3.总结
多线程并发的优缺点:
优点:线程启动速度更快,更轻量级,系统资源开销更少,执行速度更快。
缺点:使用起来有难度,要小心处理数据一致性问题。

17.1.3 C++11新标准线程库

C++11的线程库可以跨平台,使用起来更加方便。

17.2 线程启动、结束与创建线程的方法

17.2.1 范例演示线程运行的开始和结束

#include <iostream>
#include <thread>
using std::cout;
using std::endl;
void myprint()
{
    cout << "我的线程开始执行了!" << endl;
    //.......
    cout << "我的线程执行结束了。" << endl;
    return;


}
int main()
{
    std::thread mytobj(myprint);//myprint作为构造函数参数
    mytobj.join();//main主线程等待子线执行
    //mytobj.detach();
    //主线程不会等待子线程
    cout << "main主函数执行结束了!" << endl;
    return 1;
}

(1)thread
一个类。构造函数的参数是一个可调用对象(此处可调用对象就是函数myprint)作为thread构造函数的实参来构造这个thread对象。
(2)join
阻塞函数,让main主线程等待子线程执行。(主线程结束,子线程会被强制结束)
(3)detach
分离函数,让main主线程不等待子线程执行。
(4)joinable
bool res=mytobj.joinable();//true为调用过。
判断某个线程是否调用过join或者detach函数。

17.2.2 其他创建线程的写法

1.用类来创建线程

#include <iostream>
#include <thread>
using std::cout;
using std::endl;

class TA {
public:
    //重载“()”运算符
    void operator ()() {
        cout << "TA::operator()开始执行了" << endl;
        //...
        cout << "TA::operator()执行结束了" << endl;
    }
};

int main()
{
    TA ta;

    std::thread myTObj(ta);
    myTObj.join();
    cout << "main主函数执行结束了!" << endl;
    return 1;
}

一些危险的操作:


/*
*使用detach后,当main函数执行结束后,
*很可能子线程还在访问主线程里面的*my_i,
*这个时候my_i早已被释放,子线程仍
*旧使用被销毁的ny_i,产生不可预料的
*后果。
*/
#include <iostream>
#include <thread>
using std::cout;
using std::endl;

class TA {
public:
    int& m_i;
    TA(int& i):m_i(i){}
    void operator ()() {
        cout << "mi1的值为:" << m_i << endl;
        cout << "mi2的值为:" << m_i << endl;
        cout << "mi3的值为:" << m_i << endl;
        cout << "mi4的值为:" << m_i << endl;
        cout << "mi5的值为:" << m_i << endl;
        cout << "mi6的值为:" << m_i << endl;
        cout << "mi7的值为:" << m_i << endl;
        cout << "mi8的值为:" << m_i << endl;
        cout << "mi9的值为:" << m_i << endl;
    }
};

int main()
{
    int my_i = 6;
    TA ta(my_i);
    std::thread myTObj(ta);
    myTObj.detach();
    //main函数执行太快,延缓main,让线程函数执行
    for (int i = 0; i < 1000000; ++i) {
        int q;
        q = 1;
    }

    cout << "main主函数执行结束了!" << endl;
    return 1;
}

2.用lambda表达式来创建线程

#include <iostream>
#include <thread>
using std::cout;
using std::endl;

auto myLamThread = [] {
    cout << "我的线程开始执行了" << endl;
    //...
    cout << "我的线程执行结束了" << endl;
};

int main()
{
    std::thread myTObj(myLamThread);
    myTObj.join();
    cout << "main主函数执行结束了!" << endl;
    return 1;
}

17.3 线程传参详解、detach坑与成员函数作为线程函数

17.3.1 传递临时参数对象作为参数

1.要避免的陷阱1
主线程已经运行结束,资源已经释放,但是子线程仍然在调用主线程资源。

#include <iostream>
#include <thread>
using std::cout;
using std::endl;
using std::thread;
void myPrint(const int& i, char* pmyBuf)
{
    cout << i << endl;
    cout << pmyBuf << endl;
    return;
}


int main()
{
    cout << "main主线程开始执行" << endl;
    int mvar = 1;
    int& mvary = mvar;
    char myBuf[] = "this is a test!";
    thread myTObj(myPrint, mvar,myBuf);
    myTObj.detach();
    cout << "main主函数执行结束了!" << endl;
    return 1;
}



2.要避免的陷阱2
传递的参数隐式转换时,还未来的及转换转换,资源就被释放。

#include <iostream>
#include <thread>
#include <string>
using std::cout;
using std::endl;
using std::thread;
using std::string;
void myPrint(const int& i, const &string pmyBuf)
{
    cout << i << endl;
    cout << pmyBuf << endl;
    return;
}


int main()
{
    cout << "main主线程开始执行" << endl;
    int mvar = 1;
    int& mvary = mvar;
    char myBuf[] = "this is a test!";
    thread myTObj(myPrint, mvar,myBuf);
    myTObj.detach();
    cout << "main主函数执行结束了!" << endl;
    return 1;
}


总结:

  • 若传递int这种简单类型参数,建议都使用值传递,不用用引用类型,避免节外生枝。
  • 若传递类对象作为参数,则避免隐式转换(例如把一个char * 转换成string,一个int转成类A对象),全部都在创建线程这一行就构造出临时对象来,然后仙城入口函数的形参位置使用引用来作为形参(如果不使用引用可能在某种情况下导致多构造一次临时对象,不单浪费,且会造成新的潜在问题)。
  • 总计结论:使用join就没有这个问题了。

17.3.2 临时对象作为线程参数继续讲

1.线程id概念
每个线程对应这不同的id。
使用:std::this _thread::get_id()、
2.临时对象构造时机抓捕

第18章 内存高级话题

第19章 STL标准模板库大局观

第20章 高级话题与新标准

后记 IT职业发展的未来之路

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++笔记(《C++新经典》) 的相关文章

  • stm32——4、中断exti

    这里是基于正点原子开发板的学习记录 首先你要加入固件库 stm32f10x exti h 和 stm32f10x exti c 1 STM32中每个io口都可以作为外部中断的中断输入口 2 STM32F103的中断控制器支持19个外部中断
  • Android Q 获取设备唯一ID(UDID\GUID\UUID\SSAID\GAID)

    Android Q获取设备唯一ID xff08 UDID GUID UUID SSAID GAID xff09 一 简介1 1 问题背景1 2 关键技术 二 解决方案2 1 谷歌官方推荐方案 4种 2 2 实现方案1 GUID方案2 3 实
  • @RunWith(SpringRunner.class)测试SpringRunner.class找不到报红的解决办法

    SpringRunner报红无法添加类 上pom xml文件中去掉scope标签内容即可 如下图所示 问题解决
  • 搭建Hadoop分布式集群的详细教程

    目录 写在前面 一 创建虚拟机 xff0c 安装Centos 二 VMware VMnet8模式共享主机网络配置 三 克隆集群节点HadoopSlave1与HadoopSlave2 四 Linux系统配置 五 Hadoop的部署配置 六 H
  • PTA基础编程题 7-26单词长度 (15 分)

    题目 xff1a 你的程序要读入一行文本 xff0c 其中以空格分隔为若干个单词 xff0c 以 结束 你要输出每个单词的长度 这里的单词与语言无关 xff0c 可以包括各种符号 xff0c 比如it 39 s算一个单词 xff0c 长度为
  • 单链表逆置(头插法图解)

    算法思想 xff1a 首先将头结点摘下 xff0c 重新构造链表 xff0c 然后原链表中的结点依次头插到新链表中 xff0c 如此循环 xff0c 直到链表为空 xff0c 即可逆置链表 代码 xff1a 链表逆置 include lt
  • Java-如何理解new A();

    在leetcode 541 反转字符串中有这样一种解法 xff1a public class reverse string public static String reverseStr String s int k char ch 61
  • C++中main函数如何调用类内函数

    C 43 43 中main函数调用类内函数的方法 以力扣209题为例 include lt iostream gt include lt vector gt using namespace std class minimum size su
  • 堆排序——手工模拟+程序实现

    堆排序的算法思想 xff1a 将待排序列构造成一个大顶堆 xff0c 此时 xff0c 整个序列的最大值就是堆顶元素 输出堆顶元素 xff0c 将堆顶元素与堆底最后一个元素进行交换 xff0c 然后 xff0c 将剩余n 1个元素重新构造成
  • 设计模式详解:原型模式

    本篇来看一下创建型模式中的第四种模式 xff1a 原型模式 仍然是先看两张图 xff0c 复习模式类型 xff0c 加深记忆 定义 xff1a 原型模式 xff1a 使用原型实例指定待创建对象的类型 xff0c 并且 通过复制这个原型来创建
  • maven镜像源及代理配置

    在公司使用网络一般需要设置代理 xff0c 我在idea中创建springboot工程时 xff0c 发现依赖下载不了 xff0c 原以为只要浏览器设置代理 xff0c 其他的网络访问都会走代理 xff0c 经过查资料设置了以下几个地方后工
  • IDEA SpotBugs代码安全审计插件

    IDEA SpotBugs代码安全审计插件 在寻找idea代码审计插件的时候 xff0c 发现Findbugs已经停止更新 xff0c 无法在idea2020 01版本运行 xff0c 由此找到SpotBugs SpotBugs介绍 Spo
  • 洛谷P1233 木棍加工

    题目描述 一堆木头棍子共有n根 xff0c 每根棍子的长度和宽度都是已知的 棍子可以被一台机器一个接一个地加工 机器处理一根棍子之前需要准备时间 准备时间是这样定义的 xff1a 第一根棍子的准备时间为1分钟 xff1b 如果刚处理完长度为
  • 如何用python写一个计算日期间隔的程序?

    如何用python写一个计算日期间隔的程序 xff1f 文章目录 如何用python写一个计算日期间隔的程序 xff1f 前言问题梳理问题解决写在后面 前言 为什么想起来写一个这样的程序呢 xff1f 前几天聊天的时候 xff0c 突然想计
  • Ubuntu 中软件包缓存文件损坏问题

    终端输入 xff1a sudo apt get update 出现如下问题 解决方法 xff1a 输入 sudo rm rf var lib apt lists
  • linux开机自启系统服务的大致原理

    Linux启动系统服务 init启动 init读取 etc inittab文件 xff0c 获取运行等级 span class token comment The default runlevel 启动时的运行等级 span id 5 in
  • apache2 配置https

    配置Apache2 https 开启ssl模块 span class token function sudo span a2enmod ssl 启用ssl站点 span class token function sudo span a2en
  • JAVA对数字+字符串,中文一二三四等特殊格式字符串进行特殊排序

    提示 xff1a 对数字 43 字符串 中文一二三四 格式字符串去重 排序 重组 可以对customSort 类的46 53行进行修改 查看新排序效果 代码如下 xff08 示例 xff09 1 SortTest 类 xff1a span
  • Linux安装Jenkins

    手把手教你在Linux上安装jenkins xff0c 废话不多说 xff0c 直接上教程 1 xff0c 用windows到官网下载jenkins 2 346 1 1 noarch rpm xff0c 下载链接 xff1a https w
  • 舵机控制(STM32F103C8T6)

    前言 本文是以STM32F103C8T6作为主控芯片 xff0c 通过PB6端口输出PWM xff0c 实现控制180 舵机 一 舵机控制原理 xff08 一 xff09 概述 舵机是一种位置伺服驱动器器 xff0c 是一种带有输出轴的小装

随机推荐

  • 设计模式详解:建造者模式

    今天来看一下创建新模式中的第五种模式 xff1a 建造者模式 仍然是先看两张图 xff0c 复习模式类型 xff0c 加深记忆 定义 xff1a 建造者模式 xff1a 将一个复杂对象的构建与它的表示分离 xff0c 使得同样的构建过程可以
  • 动态数码管显示(STM32F103C8T)

    一 前言 本实验是通过使用STM32F103C8T6作为主控 xff0c 八段数码 xff08 共阴极 xff09 是通过74HC245双向缓冲器控制数段选 xff0c 74HC138译码器控制位选 每个数码管显示与位号相对应的数字 xff
  • 取字模软件的使用

    1 点击运行 取字模软件 EXE 2 输入文本 xff0c 完成后按Ctrl 43 Enter按键结束输入 xff0c 如下图 3 设置字体显示的大小16 16 xff0c 如下图 xff1a 4 设置字体格式 xff0c 字体大小 xff
  • 51单片机应用篇-- --数码管60秒计时,独立按键可调

    开篇先说一句废话 本旺名字叫萨摩耶 xff0c xff0c Please 叫我旺财 xff0c xff0c xff0c 哈哈 xff0c 招财进宝嘛 xff01 缘由 本来按照我的学习计划 xff0c 我现在应该是单片机的学习过程 xff0
  • SOLIDWORKS生成URDF文件后部分文件散乱分布

    问题 xff1a SOLIDWORKS生成URDF文件在正确配置关节坐标系的情况下 xff0c 依然出现了部分零件散乱分布的情况 xff0c 例如图所示 xff1a 问题原因 xff1a 同样的零件多次装配 解决办法 xff1a 要插入同一
  • Matlab笔记:Matlab function生成C代码并运行

    1 Matlab函数 xff0c 输入 x y z roll pitch yaw xff0c 输出out为8 6的数组 2 点击Matlab coder 3 选择要生成的函数 4 定义输入类型 xff0c 输入的六个数选择double数值
  • matlab接收ROS发布的话题通信数据并实时画图

    版本说明 matlab R2021b ROS noetic matlab与ROS通信连接 在matlab和ROS连接之前 xff0c 需要先运行ROS核心 xff0c 记录ROS端的IP地址 再查找并记录matlab端 xff08 我这里是
  • simulink联合STM32CubeMX开发串口通信程序

    摘要 使用SIMULINK联合STM32CubeMX生成STM32F407串口发送数据代码 xff0c 发送的数据为正弦函数波形 再用SIMULINK写一个串口接收数据模型 xff0c 接收来自STM32发送的数据 xff0c 最后绘制出波
  • element 默认主题样式

    使用方法 span class token keyword import span ElementUI span class token keyword from span span class token string 39 elemen
  • 深入RUST标准库内核(一)标准库内容概述

    本书github链接 inside rust std library 本书前面章节 xff1a 深入RUST标准库内核 xff08 序言 深入RUST标准库内核 引言概述本书目的目标读者本书约定 RUST标准库体系概述core库编译器内置i
  • 深入RUST标准库内核(序言)

    对RUST的兴趣来自于Linus认真考虑将RUST作为Linux内核开发语言的新闻报道 因此开始了对RUST探索 xff0c 不久后基本上就从心底里认同了这门语言 xff0c RUST不仅是高性能及安全的语言 xff0c 它的语法设计也会带
  • 手记:把代码上传到Gitee等远程仓库的过程记录及常见问题

    很久没用git了 xff0c 指令都有点生疏了 xff0c 今天上传了一些代码到码云上 xff0c 先把过程记录下来供使用git的朋友参考 没有用图形化界面 xff0c 因为只有熟悉指令才能真正的理解领会 步骤一 xff1a 1 安装git
  • I2C总线协议原理

    首先I2C总线一共分为2根 xff0c 一根是SCL xff08 serial clock xff09 xff0c 还有一根是SDA xff08 serial data xff09 xff0c 一根是用来同步时钟的 xff0c 一根是发送接
  • 常用默认端口+URL解析+HTTP详解

    常用默认端口 http端口80 https端口443 tomcat端口8080 URL详解 http www aspxfans com 8080 news index asp boardID 61 5 amp ID 61 24618 amp
  • Vue3.0 setup函数

    setup 1 Vue3 0中一个新的配置项 xff0c 值为一个函数 2 setup是所有Composition API 组合API 表演舞台 3 组件中所用到的 xff1a 数据 方法等等 xff0c 均要配置在setup中 4 set
  • 【青训营】Go的高质量编程

    Go的高质量编程 本文内容总结自字节跳动青年训练营 第五届 后端组 什么是高质量 xff1f 各种边界条件是否完备异常情况能正常处理 xff0c 稳定性有保障易读易维护 Go语言开发者Dave Cheney指出 xff0c 编程需要遵循以下
  • c++取一个整数a从右端开始的4~7位。(注意考虑多种情况)

    c 43 43 取一个整数a从右端开始的4 xff5e 7位 xff08 注意考虑多种情况 xff09 1 思路分析及原理 4 7位的范围是10 3 10 7 1 xff0c 我们可以利用这个来判断数字的长度 从右端截取一个整数的4 7位
  • 您备案的网站未指向阿里云国内节点(不含香港)服务器,备案号可能被取消接入

    解决方法 xff1a 将你的域名添加一个二级域名 xff0c 解析到某些阿里云国内节点服务器上就行了 例如我博客域名为 www hyzhad com xff0c 就可以添加一个或者两个 A 记录 xff0c 记录值为阿里云国内节点服务器的
  • centos相关软件下载地址

    CentOS7 6 下载地址 CentOS 7 x86 64 DVD 1810 iso CentOS 7 6 DVD 版 4G http mirrors 163 com centos 7 6 1810 isos x86 64 CentOS
  • C++笔记(《C++新经典》)

    C 43 43 新经典 第1章 C C 43 43 1 1 C和C 43 43 语言的起源 特点 关系与讲解范畴1 2 C C 43 43 语言市场需求与就业需求分析1 3 再谈C C 43 43 就业1 4 搭建开发语言环境 第2章 数据