自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 c++:运算符重载+

#include <iostream>using namespace std;class Dog{ public: int m_a; int m_b;};int main(){ Dog p1; p1.m_a = 10; p1.m_b = 20; Dog p2; p2.m_a = 10; p2.m_b = 20; Dog p3; p3 =p1 + p2; //没有与这些操.

2021-12-18 16:20:40 625

原创 c++:vector sort()排序

sort()函数:sort(begin, end, cmp),其中begin为指向待sort()的数组的第一个元素的指针,end为指向待sort()的数组的最后一个元素的下一个位置的指针,cmp参数为排序准则,如果没有的话,默认以非降序排序。实例:#include <iostream>#include <vector>#include<algorithm>using namespace std;bool cmp(int x,int y){

2021-12-16 14:06:05 47335 5

原创 c++:c++11 lambda

定义:lambda 匿名函数很简单,可以套用如下的语法格式:[外部变量访问方式说明符] (参数) mutable noexcept/throw() -> 返回值类型{ 函数体;};#include <iostream>#include <algorithm>using namespace std;int num1 =100;//全局变量class Lambda { public: void Lambda1();//用...

2021-12-13 17:17:26 892

原创 c++:static静态成员变量

代码:#include <iostream>using namespace std;class Student { public: Student(char *name,int age,float score); void display(); public: static int m_total; private: char *m_name; int m_age;

2021-12-11 13:00:40 438

原创 c++:STL list容器访问元素的几种方法

#include <iostream>#include <list>using namespace std;int main(){ /* 不同于之前学过的 STL 容器,访问 list 容器中存储元素的方式很有限,即要么使用 front() 和 back() 成员函数,要么使用 list 容器迭代器。 list 容器不支持随机访问,未提供下标操作符 [] 和 at() 成员函数,也没有提供 data() 成员函数。 通过 front().

2021-12-01 15:57:56 3937

原创 c++:stl中vector访问元素的几种方式

#include <iostream>#include <vector>using namespace std;class Vector{ public: void cycle1(); void cycle2(); void cycle3();};void Vector::cycle1(){ vector<int>values{1,2,3,4,5}; //获取容器中的首个元素 .

2021-11-26 11:35:59 1304

原创 c++:在c++中使用fopen函数

#include <iostream>#include <string>#include <cstdio>#include <cstdlib>#include <string.h>using namespace std;#define N 100class File{ public: void LodeFile(const string& path);};void File:.

2021-11-15 16:33:46 7057

原创 MYSQL学习(1):增删改查

命令行进入mysql,首先输入mysql -u root -p(名字是root)Show databases;Use 数据库名字;Show tables;Desc tables;**********************************************************************************增加数据表:mysql> create table xulu_tbl( -> xulu_id INT NOT NULL ...

2021-11-01 16:38:09 91

原创 c++:多态

#include <iostream>using namespace std;class Shape{ protected: int weigth,heigth; public: Shape(int a = 0, int b = 0) //构造函数 { weigth = a; heigth = b; } .

2021-10-28 17:15:49 68

原创 c++:函数模板

#include <iostream>using namespace std;template<class T> void Swap(T &a, T &b) //交换变量的值{ T tmep = a; a = b; b = tmep;}template<class T> T compare(T &a, T &b,T &c) //选出最大值{ T max_num = a; i.

2021-10-27 14:28:01 86

转载 C++:几种智能指针之间的比较

unique_ptr持有对对象的独有权——两个unique_ptr不能指向一个对象,即 unique_ptr 不共享它所管理的对象。它无法复制到其他 unique_ptr,无法通过值传递到函数,也无法用于需要副本的任何标准模板库 (STL)算法。只能移动 unique_ptr,即对资源管理权限可以实现转移shared_ptr 是一个标准的共享所有权的智能指针,允许多个指针指向同一个对象,在使用引用计数的机制上提供了可以共享所有权的智能指针weak_ptr :它不具有普通指针的行为,没有重载 oper

2021-10-25 16:41:58 193

原创 C++编程:继承

#include <iostream>using namespace std;class Shape{ public: void setlength(int len) { length = len; } void setweigth(int wei) { weigth = wei; .

2021-10-25 14:18:44 74

原创 如何通过设备树看我们使用的是哪个驱动文件

比如上电:pm2250_charger: qcom,qpnp-smblite { compatible = "qcom,qpnp-smblite"; #address-cells = <1>; #size-cells = <1>; #cooling-cells = <2>;...

2021-10-18 18:33:42 460 1

原创 adb 如何提高到最高权限

adb disable-verityadb rebootadb root adb remountadb shell mount -o remount,rw /

2021-09-27 20:39:11 1219

原创 LINUX应用编程:一个简单的socket程序

服务器端的代码:server.cpp#include <stdio.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#include <arpa/inet.h>#include <sys/socket.h>#include <netinet/in.h>int main(){ //创建套接字 int serv_so

2021-09-16 13:49:12 104

转载 linux 应用编程:创建线程

pthread_create函数声明  int (pthread_t*restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg);返回值  若成功则返回0,否则返回出错编号参数  第一个参数为指向线程标识符的指针。  第二个参数用来设置线程属性。  第三个参数是线程运行函数的地址。  最后一个参数是运行函数的参数。注意  在编译时注..

2021-09-15 14:20:27 277

原创 LINUX应用编程:文件读写

文件类型指针;FILE *fp用法:文件打开,系统自动建立文件结构体,并把指向它的指针返回来,程序通过这个指针获得文件信息,访问文件 文件关闭后,文件结构体被释放 打开文件:fopen原型:FILE *fopen(char *name,char *mode)功能:打开文件例:#include <stdio.h>int main(){ FILE *fp; fp = fopen("text.txt","w"); if(fp = ...

2021-09-12 23:58:05 259

原创 Linux 应用编程:信号通信

信号通信的理解信号的英文名字为signal,是一种进程间异步通信机制,同时也是Linux系统中非常常用的通信机制,许多人都把信号与中断类比,因为中断也是硬件触发CPU响应从而调用所设置的中断服务处理的一种事件。事件相当于一个软中断,进程不需要具体知道该信号什么时候到达,操作系统同样会中断对应接受消息的进程,然后去执行消息的处理,当然也可以忽略,所以跟中断时非常类似的。信号的来源根据信号的产生原因大致分为:硬件信号和软件信号硬件信号 比如键盘的按键按下等等一些外部硬件发生了.

2021-09-06 11:07:22 88

原创 Linux应用编程:管道通信

管道(pipe)是一种单向且先进先出形式的通信方式,一个进程向管道的尾部写入数据,而另一个进程从管道的头部读出数据,所以把这种通信方式比喻成管子再合适不过了。管道分为无名管道和有名管道两种无名管道名字上可以知道无名管道是没有标识的管道,其仅仅只能用于父子进程等具有血缘关系的进程通信,管道可以看成特定的文件,对于无名管道而言在文件系统中不可见,只存于内存中。有名管道有名管道算是无名管道的改进,由于无名管道通信限制较大,因此有名管道可以在任意两个进程中进行通信,该管道可以通过路径名来指出,且

2021-09-05 23:43:13 166

原创 linux应用:进程通信

IPC(Inter-Process Communication)进程间通信。在没有学习进程通信前总感觉两个程序之间需要交换数据,一般都是基于文件,比如一个进程向文本文件里面写数据,而另外一个进程读取数据,当然这样两个进程的读写就需要互斥,然而这样的读写文件需要不断的读写磁盘,属实效率不高,那么今天就学习一波实际的进程通信 :1.管道pipe分为有名管道和无名管道 无名管道只能用于父子进程之间,单向通信的工作方式,半双工。 有名管道则无亲属关系的进程之间,提供给任意关系的进程使用

2021-08-30 16:43:30 66

原创 LINUX应用编程:fork和vfork

forkfork()通过复制调用进程来创建一个新进程。新进程被称为子进程;调用进程被称为父进程。特点:1.子进程和父进程在不同的内存空间中运行2.在fork()的时候,这两个内存空间有相同的特性内容,两个进程将执行fork()系统调用之后的下一条指令,子进程使用相同的CPU寄存器值。3.其中一个进程执行的内存写、文件映射和反映射不会影响另一个进程。返回值说明:fork成功后,子进程的PID在父进程中返回,在子进程中返回0。失败则返回返回-1,父进程不创建子进程。...

2021-08-30 14:54:52 159

原创 LINUX应用编程:pid和ppid

PID和PPID进程PID是当操作系统运行进程时系统自动为其分配的唯一标识符,用于唯一标识此进程的一个整数,而PPID就是进程的父进程的PID。一旦进程生命周期结束,此时的PID便会被释放,可供以后的进程再次使用。PID= 0的进程 :通常也叫调度进程、idle进程,负责进程之间的调度和切换。该进程是内核的一部分,所有进程的根进程,一般我们是看不到该进程的。PID = 1的进程 :通常是init进程,Linux几乎所有的进程都是由父进程产生的,PID=1的进程为父原始进程,比...

2021-08-30 11:28:20 2885

转载 超全!嵌入式系统词汇速查表

ASIC(专用集成电路) Application-Specific Integrated Circuit. A piece of custom-designed hardware in a chip. 专用集成电路。一个在一个芯片上定制设计的硬件。address bus(地址总线) A set of electrical lines connected to the processor and all of the peripherals withwhich itcommunicates. The.

2021-08-15 14:06:48 298

原创 读一本书:LINUX设备驱动程序(1)设备驱动简介

本章不会真正进入编写代码. 但是, 我们介绍一些 Linux 内核的背景概念, 这样在以后我们动手编程时, 你会感到乐于知道这些.1.1驱动程序的角色作为一个程序员, 你能够对你的驱动作出你自己的选择, 并且在所需的编程时间和结果的灵活性之间, 选择一个可接受的平衡. 尽管说一个驱动是"灵活"的, 听起来有些奇怪, 但是我们喜欢这个字眼, 因为它强调了一个驱动程序的角色是提供机制, 而不是策略.机制和策略的区分是其中一个在 Unix 设计背后的最好观念. 大部分的编程问题其实可以划分为 2

2021-08-10 14:39:41 272

原创 makefile初探

#定义变量,使用变量:$(变量名)CC=g++#定义变量srcs,表示需要编译的源文件,需要表明路径,如果直接写表示这些cpp文件和makefile在同一个目录下,如果有多个源文件,每行以\结尾SRCS=main.cpp\ udp.cpp#定义变量OBJS,表示将原文件中所有以.cpp结尾的文件替换成以.o结尾,即将.cpp源文件编译成.o文件OBJS=$(SRCS:.cpp=.o)#定义变量,表示最终生成的可执行文件名EXEC=maincpp#start,表示开始执行,冒.

2021-08-08 17:16:29 392

原创 leecode刷题:剑指offer 58:左旋转字符串

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = "abcdefg", k = 2输出:"cdefgab"示例 2:输入: s = "lrloseumgh", k = 6输出:"umghlrlose"限制:1 <= k < s.length <= 10000char* rev...

2021-08-03 23:38:09 76

原创 leecode刷题:LCP 01. 猜数字

小A 和 小B 在玩猜数字。小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜。他们一共进行三次这个游戏,请返回 小A 猜对了几次?输入的guess数组为 小A 每次的猜测,answer数组为 小B 每次的选择。guess和answer的长度都等于3。示例 1:输入:guess = [1,2,3], answer = [1,2,3]输出:3解释:小A 每次都猜对了。示例 2:输入:guess = [2,2,3], answer = [3,2,1]

2021-08-02 22:53:41 80

原创 leecode刷题:771.宝石和石头

给定字符串J代表石头中宝石的类型,和字符串S代表你拥有的石头。S中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J中的字母不重复,J和S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = "aA", S = "aAAbbbb"输出: 3示例 2:输入: J = "z", S = "ZZ"输出: 0注意:S和J最多含有50个字母。J中的字符不重复。c解法:int numJ...

2021-08-01 19:59:55 74

原创 leecode刷题:面试题:合并排序的数组

给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。初始化A 和 B 的元素数量分别为m 和 n。示例:输入:A = [1,2,3,0,0,0], m = 3B = [2,5,6], n = 3输出:[1,2,2,3,5,6]说明:A.length == n + mc解法:void merge(int* A, int ASize, int m, int* B, int BSize, in...

2021-08-01 16:36:30 67

原创 leecode刷题:1.两数之和

给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], targe...

2021-08-01 16:20:51 566

原创 git 命令(持续更新中)

1.查看分支git branch //查看本地所有分支git branch <branch-name> //新建分支git branch -a //查看所有的分支git branch -r //查看远程所有分支git checkout -b <branch-name> //建立一个新的本地分支2.提交代码git add //添加至暂存区git commit // 代码提交git commit --amend //上次提交之后...

2021-07-22 16:28:48 82

原创 linux platform 驱动程序框架

字符设备#include <linux/types.h>#include <linux/kernel.h>#include <linux/delay.h>#include <linux/ide.h>#include <linux/init.h>#include <linux/module.h>#include <linux/errno.h>#include <linux/gpio.h>#i.

2021-07-14 20:25:28 158

原创 c语言简单学会链表(2):双向链表

双向链表:数据结构:typedef struct doublelist { int data; //数据域 struct doublelist *prev; //指针域,前向指针 struct doublelist *next; //指针域,后向指针}DOUBLELIST;创建一个节点:DOUBLELIST *CreateList(int data){ DOUBLELIST *P = NULL; P = malloc(sizeof(DOUBLE

2021-07-08 19:58:58 92

原创 tinyplay的用法

设置采样率为768k,4声道,16bit参数播放 tinymix "PRI_MI2S_RX Audio Mixer MultiMedia1" 1 //设置为i2s tinymix "PRIM_MI2S_RX SampleRate" 12 //设置为768k 0:8k 1:16k 3:44.1k 4:48k 6:96k 8:192k 10:384k tinymix "PRIM_MI2S_RX Format" 0 //设置为16bit ...

2021-06-30 19:40:07 3394

原创 c语言简单学会链表(1):单链表

单链表:数据结构:struct NODE { int data; //数据域 struct NODE *next; //指针域};创建一个链表:NODE *Create_Node(){ NODE *head = NULL; //定义一个头指针 head = (NODE *)malloc(sizeof(NODE)); //分配空间 if (head == NULL) { printf("malloc failed\n");

2021-06-29 20:22:05 103

原创 C/C++内存管理

c语言的内存管理是对系统内存的分配,创建,使用等一系列操作首先,每一个应用程序的内存之间是相互独立的,正常情况下程序A是无法访问程序B的,但是有些手段(指针之类的)。比如现在有两个应用程序,他们在计算机系统中各自开辟了两块内存区域A,B,区域A和区域B是存在逻辑分割的...

2021-06-25 17:29:31 56

原创 adb wifi

1.手机与电脑用数据线连接,打开命令行窗口,执行adb tcpid 55552.断开数据线连接,执行 adb connect 192.168.12.177(手机ip)此时手机已经成功连接上了。

2021-06-23 17:28:58 66

原创 Linux 内核提供的几种并发和竞争的处理方法(二)

3.信号量信号量常常用于对控制对共享资源的访问,比如说一个停车场有50个停车位,这个就是一个共享资源,这个50个车位加入现在停了45辆车,这个车的数量就是信号量,当这个信号量的值满了...

2021-06-17 20:25:04 135

原创 Linux 内核提供的几种并发和竞争的处理方法(一)

linux是一个多任务操作系统,会有多个任务同时操作一段内存或者设备的情况,多个任务甚至中断都能访问的资源叫做共享资源,所以需要处理对gong'i1,原子操作

2021-06-15 11:45:04 346 2

空空如也

空空如也

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

TA关注的人

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