- 博客(46)
- 资源 (3)
- 收藏
- 关注
原创 3分钟学会钉钉线上教学【学生端】教程
1.打开老师发送的微信链接2.选择我是学生,填写学生真实姓名,然后填写家长联系方式,然后点击下一步!3.滑动滑块,接受验证码,然后填写验证码,然后点击申请加入4.打开电脑软件“钉钉”,就已经进入了班级群5.等待上课时间到,由老师发起上课邀请,点击接受邀请即可6.等待老师上课即可7.每次课后,老师会讲上课录像分享在钉钉群内。...
2021-01-27 17:23:25
7642
原创 无捆绑绿色安装金山打字通教程
一、下载软件下载链接:https://dalin7.lanzous.com/iTXoEkpujqf二、安装软件1.打开下载下来的安装包,如图所示2.选择下一步3.选择我接受4.取消勾选,然后点击下一步5.选择安装目录(不建议安装在C盘),然后点击下一步6.点击安装7.等待安装进度完成8.取消所有勾选,点击下一步9.再次取消所有勾选,点击完成10.经过以上步骤,金山打字通软件安装完成!...
2021-01-23 10:08:51
7940
3
原创 信息学奥赛开班必备
一、DEV-C++下载链接该链接为DEV-C++5.11版本软件下载地址:https://dalin7.lanzous.com/i6i3zeb二、DEV-C++安装步骤1.双击打开下载好的Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe文件2.加载完成后,选择OK3.选择I Agree选项4.选择Next >5.选择Install6.等待安装完成后,点击Finish7.将滑条拖动至最上方,选择简体中文/Chinese,
2020-08-19 11:04:29
844
原创 五分钟看懂前缀和与差分
一、前言本文主要简单介绍一下前缀和与差分两个内容,主要讲解前缀和与差分的定义,作用和求法三个方面。因为我们一般认为差分是前缀和的逆运算,所以往往将此两个内容放在一起学习,固此文也按照该模式讲解。二、前缀和定义:前缀和是指某序列的前n项和对于前缀和的使用,一般基于一维数组或二维数组,我们一个一个来看:一维数组:基于一维数组的前缀和就是原数据数组的前n个元素的和//设原数组为aint a[100];//设前缀和数组为sint s[100];根据定义可得:s[i]=a
2020-05-27 23:01:16
4787
9
原创 “瞩目”安装和使用教程
1.进入“瞩目”官网:https://zhumu.com/;进入后点击上方“下载”选项2.根据自己电脑操作系统版本选择对应版本的客户端3.下载完成后双击打开客户端,等待进度条加载完成。4.点击“注册”选项5.在弹出的“注册”网页中,按照要求填写即可,没有问题后点击“注册完成”。要牢记注册手机号和密码。6.注册完成后,关闭该网页,打开刚才的客户端界面,然...
2020-02-12 21:23:13
17407
4
原创 使用STM32的USART1仿写AT处理
本人才学浅陋,如有不足还请大家指正代码中包含了个人常用的一种初始化方法,自己感觉移植性和可调试性还不错AT命令查找部分使用了之前我写的博客的SHELL框架USART部分使用了野火例程中的部分程序main.c#include "init.h"static _Init g_intBuf[]={USART_Config,NULL}; //其他的初始化函数依次添加int ma...
2019-07-12 17:01:49
530
原创 TCP与UDP的区别以及创建网络连接的一般步骤
一、TCP协议与UDP协议的区别TCP和UDP是传输层的两种不同的协议。UDP的实现相较于TCP更加简单。 TCP是基于连接的可靠的数据传输,不会丢失数据,有三次握手的过程,但是连接过程需要消耗大量系统资源。 UDP是基于数据包的不可靠的数据传输,没有校验,没有三次握手的过程,消耗资源少,速度更快,但会丢包。二、TCP网络连接的一般步骤服务端:创建一个套接字(socket(2))...
2019-05-17 16:19:24
2259
原创 内核驱动中断编程顶半部和底半部(下)
一、底半部实现机制之tasklet方法①tasklet是基于软中断实现的,其优先级高于进程而低于硬件中断,同样不能做休眠操作。②内核描述tasklet的数据结构目前主要关注两个成员:func和datafunc:指向的函数即为延后处理函数,形参unsigned long是要传递的参数data:给延后处理函数传递的参数③使用tasklet实现底半部编程的大体步骤总结...
2019-05-16 13:08:28
312
原创 内核驱动中断编程顶半部和底半部(上)
linux系统中,任务可以分为两大类:中断和进程(线程)。中断又可分为硬件中断(外设触发)和软中断(软件调用swi指令触发),所以任务也可以细分为三类:硬件中断(有与其对应的中断处理函数)、软中断(有与其对应的软中断处理函数)和进程(有对应的代码段)。但是,不管是什么任务,想要运行,就必须先获取CPU的资源。所谓的任务优先级就是用来衡量一个任务获取CPU资源的能力,优先级越高,获取CPU资源的...
2019-05-15 10:23:21
375
原创 volatile关键字的认识和理解
volatile关键字主要用来修饰一个变量,主要是告诉编译器这个变量不要去优化。 编译器的优化,在大多数情况下,可以极大的提升程序执行的效率,比如当读取一个变量时,为了提高读取速度,编译器进行优化时有时会先把变量读取到一个寄存器中,以后,再读取变量值时,就直接从寄存器中读取。但是某些特殊情况下,变量的值会被意外的改变,而往往这些情况是编译器意料不到的,所以,就会取...
2019-05-09 14:46:49
172
原创 提高代码安全性——MISRA工业标准C语言编写规则
Rule1:不得使用三元操作符(? : )。Rule2:不得残留被注释掉的废代码。Rule3:所有标识符不超过31字符。(建议采用驼峰式或下划线式书写方式)Rule4:不同名空间中的变量名不得相同。Rule5:不得使用char, int, float, double, long等基本类型,应该用stdint.h中定义的类型显示表示类型的大小,如uint16_t、int32_t等。...
2019-05-08 16:44:48
1015
原创 linux通配符,元字符,转义符使用总结
1.通配符通配符总结 符号 作用 备注 * 匹配0个或者多个字符 *通配的内容可以是任意个数的字符,也可以一个也没有 ? 匹配任意单个字符 ?匹配的内容只能是一个任意字符 [ ] 匹配“[”和“]”之间的某一个字符 如[0-9]可以代表0-9之间的任意一个数字,[a-zA-Z]可以代表a-z和A-Z之间的任意一个字母,字母区分大小...
2019-05-06 14:43:44
513
转载 ls命令和find命令通配符和双引号的使用区别
ls -l ab*find . -name “abc*”这里的*都是shell的文件通配符,包括 * ? []首先文件通配符和正则表达式含义是不同的。最大的差别在于:1."*" 在正则表达式中表示前面的字符重复任意次数,所以表示任意字符串".*", shell通配符中* 就表示任意字符串2. ".“在正则表达式中是任意一个字符,在通配符中没有其他任何含义,在通配符中”?"表示一个任意...
2019-05-06 10:56:15
2465
原创 无法安装libncurses5-dev解决方法
我使用的环境是ubuntu18.04 的64位系统,因为要配置内核源码,所以需要使用“make menuconfig”,结果遇到这个问题经过百度查阅后,发现使用此命令需要安装libncurses5-dev这个软件于是联网下载出现了缺少一个依赖libtinfo-dev此后,查阅相关资料后找到了https://packages.ubuntu.com/bionic-updates/l...
2019-05-05 15:42:19
21416
2
原创 linux系统(X86)存储内存布局
参数和环境区:程序执行的时候,命令行参数通过两个入口参数传递给main()函数,第一个参数 int argc表示命令行参数的个数,第二个 char argv[] ,是一个指向命令行参数的指针数组,每个命令行参数都是以'\0'结尾的字符串。栈区:用来存放程序中的动态局部变量(不包括static修饰的局部变量,这类变量存储在数据段);函数参数按照从右往左的顺序依次入栈,而函数调用结...
2019-04-29 17:40:42
765
原创 linux四种修改环境变量的方法与对比
方法一:通过设置终端变量修改export PATH = $PATH:/usr/loca/bin//设置完以后可以通过echo $PATH来查看配置结果生效方法:立即生效有效期限:临时改变,只对当前终端有效,当前终端关闭后就会恢复原有的PATH配置用户局限:仅对当前用户有效方法二:通过修改~/.bashrc终端配置文件vi ~/.bashrc//在最后一...
2019-04-29 10:38:37
386
原创 如何判断变量类型——右左法则
首先来看一个经典的例题:用变量a给出下面的定义a) 一个整型数b)一个指向整型数的指针c)一个指向指针的的指针,它指向的指针是指向一个整型数d)一个有10个整型数的数组e) 一个有10个指针的数组,该指针是指向一个整型数的。f) 一个指向有10个整型数数组的指针g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数h)一个有10个指针的数组,该指针指向一...
2019-04-28 14:58:37
376
原创 五分钟明白static和const关键字
static关键字类型名称 作用域 生命周期 默认初始值 全局变量 当前文件和其他文件(extern) 整个程序 0 局部变量 当前函数 整个定义的函数 乱数 static 全局变量 当前文件(其他文件extern也不可以) 整个程序 0 static 局部变量 当前函数 整个程序 0 ...
2019-04-28 14:25:32
230
原创 运算符优先级和结合性整理
优先级 运算符 含义 结合 方向 1 ()、[ ]、->、. 圆括号、数组元素下标、指向结构体成员、引用结构体成员 自左 向右 2 !、~、++、--、*、&、sizeof 逻辑非、按位反、增1、减1、间接寻址符、取地址符、字节运算符 自右 向左 3 *、/、% 乘、除、取余 自左 向右 4 ...
2019-04-28 11:38:56
1723
2
原创 占位符整理
占位符 作用 %d 整形输出(int) %u 整型输出(unsigned int) %hd short %hu unsigned short %ld long %lu unsigned long %o 以八进制形式输出整数 %x 以十六进制输出整数,或输出字符串的地址 %c或%hhd char,输出一个...
2019-04-28 11:30:39
685
原创 32位/64位系统数据类型大小比较
数据类型 32字节数 64位字节数 取值范围 bool 1 1 true/flase char 1 1 -128~127 unsigned char 1 1 0~255 short 2 2 -32768~32767 unsigned short 2 2 0~65535 ...
2019-04-28 11:29:00
551
原创 结构体大小与字节对齐
1.明确一个宏定义#pragma pack(n) n=1, 2, 4, 8, 16, 32, ....该宏是用来设置对齐模数,当不写入n,#pragma pack()这种情况是设置为默认字节模数注:32位系统默认字节模数是4,64位系统默认字节模数是82.成员字节偏移在结构体每个成员变量字节偏移的计算中,取对齐模数和变量本身大小中小的那个例:①将字节模数设置为4...
2019-04-28 11:24:50
740
原创 结构初始化的四种方法
//结构体原型typedef struct { int a; int b; int c;}AA;1.一般初始化法AA S1={1,2,3};2.先定义后初始AA s2;s2.a=1;s2.b=2;s2.c=3;3.指定式初始化法AA s3={ .a=1, .c=3};注:此种初始化方法,在linux...
2019-04-28 10:15:48
570
原创 define宏使用方法总结
1.普通用法(简单的文本替换)例如:#define N 10#define PI 3.142.结合运算符实现简单功能例如:① 计算数组元素个数#define ARR_SIZE(n) sizeof(n)/sizeof(n[0])②获得两个数中最大的那个#define MAX(a,b) ((a) > (b) ? (a) : (b))注:一定考虑到运算...
2019-04-27 17:47:08
438
原创 ARM内容总结学习
ARM基础几种常见的嵌入式处理器 PowerPC处理器 飞思卡尔MCP系列[军工,通信] DSP处理器 TI(德州仪器, 达芬奇系列(DSP核+ARM核,视频处理),OMAP系列(ARM核,手机)) FPGA处理器 Xilinx(赛灵思,ZYNQ系列(FPGA核+ARM核),算法处...
2019-04-26 11:39:12
443
原创 Makefile编写学习
一、基本内容1.功能:指定编译规则,将来程序编译按照规则进行,本质就是一个文本文件2.语法:核心要义:目标:依赖1 依赖2 依赖3 ...依赖n (TAB)规则 //依赖文件通过规则生成目标文件;必须是TAB注:规则可以理解为编译命令例如:vi hello.cvi Makefilehello:hello.c gcc hello.c -o hel...
2019-04-16 19:36:03
338
原创 SHELL编程框架学习
框架伪代码typedef struct { //表征命令结构体char *name;void (*func)(void);}_cmd; _cmd cmd_buf[16]= //此为结构体数组,存储所有被表征的命令{ {"ls",cmd_ls},{"pwd",cmd_pwd},};_cmd *find_cmd(char *usr_cmd) //usr_c...
2019-04-16 15:23:36
227
原创 linux之GDB调试的基本使用
一、GDB介绍GDN是一套字符界面的程序集,可以用在Linux上调试C和C++程序。二、GDB主要功能1.在程序中设置断点,当程序运行到断点处可以停止2.跟踪某个变量,也可以打印或者监视某个变量,并将其值显示出来3.可单步执行代码4.监控线程切换三、测试代码#include <stdio.h>#include <stdlib.h>int...
2019-04-16 11:33:24
524
原创 QT学习——父窗口,信号和槽机制
一、父窗口(容器窗口)1.概念:创建控件时可以指定停靠在父窗口上,如果没有指定,则飘在外面形成独立的窗体,父窗口本质也是图形控件,常用于表示父窗口类主要包括如下三个:QWidgetQDialog(对话框)QMainWindow(主窗口)注:QWidget和它的所有子类都可以作为父窗口,但是常用的父窗口类只有上面三个参考代码:#include <QApplicat...
2019-03-27 10:11:58
692
原创 sqlite数据库学习
一、数据库(sqlite)1.数据库简介1)概念:数据库是指以一定方式存储在一起,且能为多个用户共享,具有尽可能小的冗余特性,是与应用程序彼此独立的数据集合。2)常见数据库Oracle,DB2,SqlServer,Myql等2.sqlite数据库1)安装sudo apt-get install sqlite3 //在线安装sudo dpkg -i sqlit...
2019-03-27 09:58:58
298
原创 QT学习——Qt工具介绍,Qt助手使用,第一个Qt程序,Qt字符串和字符编码
一、Qt主要工具介绍1)qt助手(assistant)2)qt构建器(qmake)3)qt设计师(designer)4)qt转换器(uic)5)qt资源编译器(rcc)6)qt元对象编译器(moc)//处理语法扩展7)qt创造器IDE(qtcreator)二、Qt助手的使用例如:了解QApplication类的功能和作用1)先看第一句话,了解该类的功能,在点击more...
2019-03-15 16:17:00
4183
原创 C++学习——多态
二十二、多态1.虚函数覆盖(函数重写),多态的概念如果将基类中的成员函数声明为虚函数,那么其子类中具有相同原型的成员函数就也是虚函数,并且可以对基类的版本形成覆盖,即函数重写。这时,通过指向子类对象的基类指针,或者引用子类对象的基类引用,调用虚函数,实际被执行的将是子类中的覆盖版本,而不再是基类中原始版本,这种语法现象称为多态。class Base{ virtual boid...
2019-03-13 09:35:46
203
原创 C++学习——继承
二十一、继承1.继承的概念:通过一种机制表达类型之间共性和特性的方式,利用已有的数据类型来定义新的数据类型,这种机制就是继承人类:姓名、年龄、吃饭、睡觉 学生类:姓名、年龄、吃饭、睡觉、学号、学习 教师类:姓名、年龄、吃饭、睡觉、工资、讲课 ------------------------------------------- 人类:姓名、年龄、吃饭、睡觉 学生类继承...
2019-03-08 15:14:50
383
原创 C++学习——操作符重载
二十、操作符重载1.基本概念操作符重载就是一些具有特殊名字的函数,使用“operator#”表示,通过重载可以定义“#”符号的功能。例如:复数“x+yi”(1+2i)+(3+4i)=(4+6i)2.双目操作符,+,-,*,.......①表示的结果是右值,不能对表达式结果再赋值②左右操作数既可以是左值,也可以是右值③两种实现方式:1)成员函数形式(左调右参)形...
2019-03-07 15:33:19
1209
原创 C++学习——拷贝构造,拷贝赋值,静态变量,单例对象,成员指针
十七、拷贝构造和拷贝赋值1.浅拷贝和深拷贝1)如果类中包含指针形式的成员变量,缺省的拷贝构造函数只是复制了指针本身,而没有复制所指向的内容,这种拷贝方式称为浅拷贝2)浅拷贝会导致不同的对象之间的数据共享,如果数据在堆区,析构函数还会引发“double free”的错误,导致进程终止,因此必须自己定义一个支持复制指针所指向内容的拷贝构造函数,即深拷贝参考代码:#includ...
2019-03-06 11:37:14
574
原创 C++学习——初始化表,this指针和常函数,析构函数
5.初始化表1)语法class 类名{ 类名(形参表):成员变量1(初值),成员变量2(初值),...{}};2)多数情况下,使用初始化表和在构造函数中对成员变量进行初始化操作,并没有太大的区分,两种形式可以任选,但是有些特殊的场景需要使用初始化列表:3)必须显示使用初始化列表的场景①如果有类类型的成员变量(成员子对象),而该类又没有无参构造(必须有参构造),则必...
2019-03-05 15:09:11
1651
原创 C++学习——类型转换,类和对象,类的定义和实例化
十一、类型转换1.隐式转换//1char c = 'a';int i = c; //隐式转换//2int func(void){ char c = 'a'; return c; //隐式转换}//3void func(int i){}char c = 'a';func(c); //隐式转换2.显示转换1)C++兼容C中强制类型转换...
2019-03-04 10:03:16
420
原创 C++学习——布尔型,操作符别名,函数和引用
六、C++的布尔类型(bool)1.bool类名是C++中的基本数据类型,专门负责表示逻辑值:真/假注:C语言的C99标准里加入了布尔类型2.bool类型内存占一个字节,1表示true,0表示false3.bool类型的变量可以接收任意类型表达式的结果,其值非0则为true,0则为falsebool func(){ return true/false;}4.插...
2019-02-28 16:50:48
3124
1
原创 C++学习——基础,名字空间,结/联/枚,字符串
一、C++语言概述面向对象的语言二、第一个C++程序1.vi first.cpp两种编译方式:1)g++ first.cpp2)gcc first.cpp -lstdc++2.文件扩展名1)xx.cpp2)xx.cc3)xx.C4)xx.cxx建议使用第一种扩展名写法:.cpp3.头文件`#include <>iostrea...
2019-02-27 16:15:46
282
原创 ARM汇编指令学习总结
ARM指令影响CPSR的三种终极情形:"目标寄存器":暂存运算结果的寄存器,离指令最近的寄存器1.指令后面加s,并且目标寄存器是pc,不仅仅实现一个跳转还要实现一个状态的恢复(cpsr=spsr)movs pc, lr 此指令做两件事:1)pc=lr,结果实现一个返回跳转2)cpsr=spsr,结果实现一个状态的恢复 2.指令后面加s,但是目标寄存器...
2019-02-27 10:30:09
4869
全国青少年软件编程等级考试(scratch)一级保过模拟题【5套】
2020-12-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人