自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于对四维空间一些理解

本人对于四维模型的理解

2022-06-15 00:02:26 1662 4

原创 AudioRecord

bsp-audio wanghao1.Android 音频框架概述1.1Audio Application Framework:音频应用框架AudioTrack:负责回放数据的输出,属 Android 应用框架 API 类AudioRecord:负责录音数据的采集,属 Android 应用框架 API 类AudioSystem: 负责音频事务的综合管理,属 Android 应用框架 API 类1.2Audio Native Framework:音频本地框架AudioTrack:负责回放数据的输

2022-05-10 22:23:13 653

原创 Java安装流程

1.安装jdk官方地址安装成功后需要配置环境变量2.环境变量添加系统变量,JAVA_HOME 选择jdk安装位置添加path%JAVA_HOME%bin然后cmd查看安装情况java --version安装成功

2022-03-14 00:07:21 137

原创 Linux vsCode无法换行

删除vim插件试试…

2022-03-02 17:26:34 511

原创 gdb调试入门学习

gdb调试工具1.gdb命令gdb是一个Linux下的代码调试工具,通常与gcc/g++配合使用。下面列举gdb的常用命令list/l //显示对应行号或函数前后5行的内容 操作:l [文件名] :[行号] l [函数名]r/run //运行程序start //开始进行逐步调试n/next //逐步单条执行(一步代表下一行逻辑)s/step //逐函数执行(一步代表一个函数执行)b/break //打断点 操作:b [文件名] : [行号]

2021-06-14 22:11:38 261

原创 python环境在vscode中的配置

1.下载vscodevscode是一款强大的编辑器,功能非常强大下载地址1.1vscode的基础使用帮助文档或者点击帮助选择文档即可1.2安装插件添加汉化插件搜索Chinese选择添加(如果需要)添加python,就可以进行运行代码其他vscode基础使用参考链接2.添加库2.1安装插件在添加库的时候不知道使用的是哪个库,可以运行代码根据提示安装只需要将文件使用vscode打开即可然后点击运行2.2如何安装库呢?有两种方式,一种使用pip命令或者使用资源安装到对应目

2021-01-02 12:56:26 185 1

原创 智能指针

先看一段代码,非常常见的归并排序;void _MergeSort(int* a, int* tmp, int begin, int end){ if (begin >= end) return; int mid = begin + ((end - begin)/2); _MergeSort(a, tmp, begin, mid); _MergeSort(a, tmp, mid + 1, end); int index = 0; int begin1 = begin, end1 =

2020-10-18 23:04:29 262

原创 协程

协程coroutine.h#ifndef __COROUTINE_H__#define __COROUTINE_H__#include <ucontext.h>#define CORSZ (1024)#define STACKSZ (1024*64)struct schedule;enum State {DEAD, READY, RUNNING, SUSPEND};// 协程结构体typedef struct { void *(*call_back)(st

2020-09-17 15:59:03 109

原创 网络知识点

1.网络的初步认识1.1计算机网络独立主机:原本的计算机数据都是相互独立的,用于单纯的计算;主机互联:随着发展可以将多台主机互相连接,传输数据;局域网:计算机的数量增多,通过交换机和路由器连接到一起;(交换机的作用主要用于记录主机的mac地址,无法进行动态的数据发配,路由器可以增加网络识别,发送给目标主机)广域网:相比于局域网范围更广互联网:用于国际性的广域网IP地址:uint32_t(一个无符号4字节整数)作为网络通信中的主机标识,传输数据时,会将自己的地址以及目标地址(网络传输每条数据中都

2020-08-24 21:21:49 255

原创 Linux知识点

Linux1.常见指令与权限1.1指令1.ls:列出当前目录下的所有文件-a包括隐藏文件2.pwd:显示当前所在路径;3.cd:去指定的路径,作为工作路径;4.touch:在当前目录下新建一个文件;5.makdir:在当前位置新建一个目录;6.rmdir/rm:rmdir与mkdir相对,删除指定目录,rm删除目录或文件-f只读的文件一样删除;-r删除所有目录与文件;-i删除前询问7.man:查询文档;**8.cp **复制文件cp [选项] 源文件或目录 目标文件或目录-r递

2020-08-15 23:21:43 247

原创 map/set算法题

** 前K个高频单词**leetcodeclass Solution {public: vector<string> topKFrequent(vector<string>& words, int k) { map<string,int> m; for(auto e: words) { m[e]++; } multimap<int,s

2020-08-15 15:45:25 122

原创 map/set增删查改

set基本使用增删查改set<int> s; s.insert(1); s.insert(3); s.insert(2); s.insert(1); s.insert(4); set<int>::iterator it = s.begin(); while (it != s.end()) { cout << *it << " "; ++it; } cout << endl; set<int> c = s

2020-08-14 21:32:29 132

原创 MySQL基础操作(待续)

MySQL一、库与表的操作1.启动Mysql:mysql -uroot -p2.库的操作2.1显示当前数据库show databses;2.2创建数据库create database db_name;2.3使用数据库use db_name;2.4删除数据库drop database db_name;3.表的操作操作表之前需要选择数据库use db_name3.1查看表结构desc 表名3.2创建表语法CREAT TABLE table_name(

2020-08-10 23:03:44 118

原创 二叉树算法题

1.二叉树深度leetcodeint max(int a ,int b){ return a > b ? a : b;}int maxDepth(struct TreeNode* root){ if(root == NULL) return 0; int ret = max(maxDepth(root->left),maxDepth(root->right)); return ret + 1;}解题思想:二叉树深度 == max(左子树

2020-08-07 01:12:02 196

原创 链表算法题

1.链表反转leetcode链接利用栈先入先出/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(ListNode* head)

2020-08-01 22:03:20 125

原创 miniftp

项目设计

2020-07-29 16:05:33 298

原创 网络通信 (网络层(IP协议)/链路层(以太网协议))

网络层:负责地址管理与路由选择(为每条网络中的数据选择合适路径);IP;路由器IP协议格式:4位版本号IPV4/IPV6;4位头部长度:表示IP报头的长度,以4字节为单位(20-60字节);8位服务类型:3位弃用,1位置0,4位TOS字段(最大吞吐量,最小成本,最高可靠性,最小延时);16位数据报长度:限制一个完整的Ip报头不超过64k,udp不超过64k-28;**分片标识:**数据传输时最大长度不超过数据报长度64k即65536字节,并且受限于链路层数据帧MTU(最大传输单元),通常再以

2020-07-14 16:52:34 796 1

原创 题解: 调整数组顺序使奇数位于偶数前面

链接调整数组顺序使奇数位于偶数前面输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。提示:1 <= nums.length <= 500001 <= nums[i] <= 10000思路:从前往后交换位置,偶数换到后面,奇数继续留在前面;循环控制:i< j;class Solu

2020-07-04 22:37:18 118

原创 题解:不用加减乘除做加法

[题目链接](https://leetcode-cn.com/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/)写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。示例:输入: a = 1, b = 1输出: 2提示:a, b 均可能是负数或 0结果不会溢出 32 位整数思路:加法由俩部分组成,即进位和非进位示例:如 0110 和 0011非进位位置:俩个数字异或的结果为非进位进位位置

2020-07-04 01:09:08 153

原创 网络通信(应用层/传输层)

应用层应用层:直面程序员的一层,应用层的协议由程序员自己实现自定制协议:功能:客户端将俩个数字发给服务端,服务端取得数据后运算,返回结果;int i= 1; int j = 2; char op = ‘+’;1.–将所有数据转化为字符串,使用特殊字符间隔,就将数据按指定协议组织起来了;2.采用结构体构造二进制数据串,struct cal_t{int i= 1;int j = 2;char op = ‘+’;};序列化:将数据对象按照指定协议组织成为持久化存储/数据传输的二进制字符串;

2020-06-28 00:01:20 1215

原创 TCP通信流程

tcp通信通信流程:面向连接,可靠传输,面向字节流面向连接必须在双方都有数据收发能力的时候,才可以开始通信。(与udp不同的是,udp知道对端地址信息即可以开始通信)tcp通信流程:服务端:1.创建套接字:在内核中创建socket结构体使进程与网卡建立联系。2.绑定地址信息:向内核描述源端地址信息。(1)发送数据:源端地址即为绑定的地址。(2 接收数据:告诉操作系统哪些数据该交给我处理。3.开始监听:即设置一个监听状态,只有处于监听状态的套接字才可以连接服务端;服务段会给每一个连接请求创

2020-06-18 17:36:20 553

原创 二叉树的三种遍历

前序遍历添加链接描述/前序遍历oj1.递归写法class Solution {public: vector<int> ret; vector<int> preorderTraversal(TreeNode* root) { if(root != NULL){ ret.push_back(root -> val); preorderTraversal(root -> left); preorde

2020-06-16 22:36:50 151

原创 网络套接字

udp通信服务端1.创建套接字在内核中创建socket结构体2.为套接字绑定地址信息在socket结构体中描述IP地址和端口以及协议信息为了告诉操作系统,我该发往哪个IP地址,哪个端口信息交给我处理。3.接收数据第二步过后,操作系统收到该发往该Ip地址和端口,会将数据放到对应的socket接受消息缓冲区。接受即是从中取出数据4.发送数据将数据写入内核中的socket发送消息缓冲区,操作系统选择合适时机发送。5.关闭套接字客户端1.创建套接字2.为套接字绑定地址信息,将IP地址以及

2020-06-15 15:08:18 262

原创 网络初步认识

计算机网络独立主机:原本的计算机数据都是相互独立的,用于单纯的计算;主机互联:随着发展可以将多台主机互相连接,传输数据;局域网:计算机的数量增多,通过交换机和路由器连接到一起;(交换机的作用主要用于记录主机的mac地址,无法进行动态的数据发配,路由器可以增加网络识别,发送给目标主机)广域网:相比于局域网范围更广互联网:用于国际性的广域网IP地址:uint32_t(一个无符号4字节整数)作为网络通信中的主机标识,传输数据时,会将自己的地址以及目标地址(网络传输每条数据中都含有这俩个参数)ipv4

2020-05-31 00:52:03 202

原创 vector的基本使用

vector的介绍1.vector是表示可变大小的数组容器;2.与数组的不同是,vector的大小是可以动态改变的,大小会被容器自动处理;33.vector插入新数据时需要增容,vector会分配一个新的数组,然后将数据全部拷过来;vector的使用vector //无参构造vector(size_type n,const value_type& val = value type()) //构造并初始化n个val;vector (const vector & x);

2020-05-22 23:38:28 908

原创 string类的简单实现

string的基本实现实现string的构造,拷贝构造,赋值运算符重载,析构函数class my_string{public: my_string(const char* str = " ") { if (nullptr == str) { assert(false); return; } _str = new char[strlen(str) + 1]; strcpy(_str, str); } my_string(const my_string&

2020-05-21 23:30:33 138

原创 string类的使用

string类:1.string是表示字符串的类;2.string类的接口与常规容器接口基本相同3.string底层实现由basic_string模板类实现;string的构造string() //用于构造string类的对象;string(const char*s) //用C-string构造string;string(size_t n,char c) //string类中含n个c字符string(const string&s) // 拷贝构造函数(深拷贝) st

2020-05-20 00:09:38 150

原创 深浅拷贝问题

深浅拷贝的认识与理解·浅拷贝:按照被拷贝的对象的存储地址进行拷贝(不开辟新空间),一般为编译器默认的拷贝构造函数深拷贝:创建一个新的空间,将需要拷贝的数据依次进行拷贝class Date{public: Date(int year = 1, int month = 1, int day = 1) { _year = year; _month = month; _day = day; } void print() { cout << _year <<

2020-05-19 00:11:29 226

原创 日期类的实现

通过创建一个日期类加深对C++类的理解实现:创建私有成员 _year,_month,_day;成员函数:构造函数,析构函数,拷贝构造函数,以及自定义类型的运算符重载#includeusing namespace std;class Date{public:int get_day(int year, int month){static int month_day[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };if

2020-05-17 23:53:48 126

原创 进程控制

进程创建pid_t fork()创建一个子进程返回值:子进程返回0;父进程返回的是子进程的pid;父子进程之间 数据独有,代码共享写时拷贝:开始父子进程指向同一物理内存,父子代码共享时,父子不写入时,数据共享,一方写入时,以写时拷贝的技术留一个副本;进程终止进程退出场景:代码运行完毕,正常退出退出错误代码异常退出方式:从main中返回调用exit_exitexit函数:v...

2020-05-05 00:21:15 111

原创 进程的认识

操作系统任何操作系统都包含一个基本程序的集合包括:内核(进程控制,内存管理,文件管理,驱动管理)其他程序(函数库等等)OS的·目的:用于与硬件交互,管理所有的软硬件资源。为用户程序提供一个良好的执行环境。系统调用和库函数操作系统对外会表现出一个整体,但是会提供部分接口给开发人员使用,这部分接口为,系统调用。开发者对部分系统调用进行了适当的封装,形成了库,有利于进行二次开发进程...

2020-05-01 23:01:02 158

原创 Linux环境与工具

1.Linux下的基本指令1.ls指令功能:对于目录,列出目录下的子目录与文件常用选项:-a列出该目录下所有文件,包括以.开头的隐藏文件。-d将目录像文件一样显示,不是显示该目录下的文件-i输出文件i节点的索引信息,-k以k字节的形式表示文件的大小-l列出文件的详细信息-n用数字的UID,GID代替名称-r对目录反向排序-t以时间排序-s在I文件名后输出该文件的大小-R列...

2020-04-25 13:59:25 88

原创 类和对象

1.面向过程和面向对象的认识c语言是面向过程的,关注的重点是过程,分析解决问题的步骤,逐步解决问题。c++面向对象的,关注的是对象,将一件事情拆分开,靠对象之间的交互关系完成2.类的引入结构体与类c语言中结构体只可以定义变量,c++中结构体可以定义变量与函数。对于结构体的定义,c++更多的使用class代替。类的定义class为类的关键字, class后面为类名,{}为类的主体,类...

2020-04-22 15:24:21 89

原创 C++入门知识点

//命名空间//关键字为 namespace#includeusing namespace std;namespace N1{int a = 10;//命名空间内,可以定义变量,函数int Add(int left ,int right){return left + right;}namespace N2//命名空间可以嵌套使用{int b= 20;}}//同一工程...

2020-04-10 15:11:42 100

原创 二叉树

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入.树的概念...

2020-03-14 22:43:30 92

原创 指针

指针的定义1 .指针是一个用于存放地址的变量,通过地址找到内存中存储的值(指针是一种对内存的编码);2.在32位平台下为4个字节,在64为平台下为8个字节;3. 指针由俩部分组成,指针的类型和指针进行加减之后地址的变化的字节数;指针的类型字符指针:char*使用方式1.#include<stdio.h>int main(void){char i = ‘h’;ch...

2019-11-08 19:02:10 241

原创 三子棋小游戏

三子棋小游戏test.c (文件用来测试游戏的代码)int main(){ menu(); int input = 0; srand((unsigned int)time(NULL));//rand函数实现的必要条件 while (1) { scanf("%d", &input); switch (input) { case 1: game(); ...

2019-10-18 16:41:52 99

原创 c语言自定义实现strlen函数

创建临时变量,利用计数器int my_strlen(char*str)//非递归{ int count = 1; while (*str != '\0') { count++; str++; } return count;}注:可以创建计数器count,循环条件为字符串访问结束标识符,当访问结束时,循环次数恰好为字符串长度。使用递归实现int my_strlen...

2019-10-13 21:30:59 860

原创 c语言冒泡排序

@[TOcC]这里写自定义目录标题)#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>void bubble_sort(int arr[], int sz){ //趟数 int i = 0; for (i = 0; i < sz - 1; i++) { //每趟比较的对数。 int j = 0; fo...

2019-10-11 17:13:01 223

原创 c语言实现计算水仙花数(详细版)

计算1-1000之间的水仙花数#include<stdio.h>#include <math.h>int main(){ int i = 0; for (i = 1; i <= 999; i++) { int sum = 0; int n = 0; int tmp = i; while (tmp != 0) { n++; ...

2019-09-29 14:21:27 8481 2

空空如也

空空如也

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

TA关注的人

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