自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 资源 (3)
  • 收藏
  • 关注

原创 排序算法总结-C++实现

排序算法可以大致分为比较类和非比较类。就是排序的方法是通过元素之间的比较得来,还是通过引入其他策略来得到有序数组。比较类分为交换、选择、插入、归并四种。1、交换的思想就是通过比较两个元素之间的大小,满足一个规则就要交换两个元素之间的位置,以达到排序的目的。2、选择的思想就是选择N次,每次选择的元素就是数组剩下元素的最大(小)值。这样没选择一次有序数组就多一个元素。3、插入的思想就是将无序数组逐个插入到有序数组中的过程。

2022-10-24 15:18:30 1056

原创 二重指针-char **、int **的作用

二重指针,char**、int**的理解。

2022-08-09 10:51:10 380 2

原创 多线程基础

多线程的一个开端!

2022-06-14 15:36:38 245 1

原创 最长上升子序列(leetcode 300)、最长连续递增子序列(leetcode 674)、最长重复子数组(leetcode 718)、最长公共子序列(leetcode1143))

Leetcode动态规划子序列总结

2022-06-14 09:50:11 227

原创 C++实现一个简单的线程池

一、设计线程池应该包括保存线程的容器,保存任务的容器。为了能保证避免线程对任务的竞态获取,需要对任务队列进行加锁。为了使得工作线程感知任务的到来,需要使用条件变量来唤醒工作线程。任务容器中的任务管理。任务的处理API。二、参数选择使用数组存放线程,链表存放任务。三、类设计线程池类template<typename T>class threadpool{public: threadpool(int thread_num,int max_requ

2022-05-17 20:26:18 666 5

原创 数据库-事务

数据库事务隔离级别

2022-03-10 20:00:59 686

原创 操作系统-调度算法

文章目录前言一、进程调度算法1.先来先服务调度算法2.短作业优先算法3.高响应比优先调度算法4.时间片轮转调度算法5.最高优先级调度算法6.多级反馈队列调度算法二、页面置换算法1.最佳适应算法2.先进先出算法3.最近最久未使用算法(LRU)4.时钟页面置换算法5.最不常用算法三.磁盘调度算法1.先来先服务2.最短寻道时间3.扫描算法4.循环扫描5.LOOK个C-LOOk算法前言    调度算法是计算机中很重要的一部分,其设计的合理不合理将很大情况下影响了计算机

2022-03-05 11:57:03 540

原创 Key is invalid. You must supply a key in OpenSSH public key format

直接粘贴复制会出现格式问题。在Linux上,使用cat ~/.ssh/id_rsa.pub 打印.pub文件,复制到github上就行。

2021-12-24 16:35:45 515

原创 C++之联合体

一、联合体的定义联合体是一个特殊的类,其关键词是union,联合体的数据任意时刻只有一个值是有状态的,当有新的数据赋值了,会将其他值覆盖掉。声明变量时,变量类型可以时public、private、protected,默认是public。二、联合体的举例union My_union{ int a; int b; double c;}u;三、联合体的特点1、联合体申请的内存空间大小是联合体中占用内存最大的数据大小。例如上述的联合体,sizeof(My_union)的输出是

2021-12-24 15:50:48 5889 2

原创 I/O模型

首先从I/O模型说起,主要分为两大类,同步I/O和异步I/O。1)同步是指内核向应用进程通知的是就绪事件,这些事件包括读、写等等。2)异步是指内核向应用进程通知的是完成事件。3)同步和异步的区别:同步是指前一件事不做完不做下一件事,等这个函数的结果才去做下一件事,类似程序的运行,串形执行。异步是指当前的事情没做完,我可以先去做其他事情。因此同步情况下,内核向应用进程一直在返回就绪事件,告诉应用进程我在这一直等着呢,知道数据来了,将数据从内核拷贝到用户空间。而异步就干其他事了,当数据准备好了,内核才

2021-10-24 19:05:39 88

原创 力扣==42==ERROR:AddressSanitizer: heap-buffer-overflow on address

出错原因数组越界,或者堆栈溢出。检查循环中的边界条件。比如在数组nums中,判断和前一个元素是否相等。for(int L =0; L<count;L ++){ if(nums[L]==nums[L-1]) { }}此时L从0开始,L-1=-1,出现数组越界。那么应该在添加语句L>0,即for(int L =0; L<count;L ++){ if( L>0 && nums[L]==nums[L-1]) { }.

2021-09-12 15:21:13 6338 2

原创 C++派生类指针强制转换为基类指针,指针内容会发生变化吗?

class Person{public: int a; int b;};class Man:public Person{public: int c;};int main(){ Man man1; cout<<sizeof(man1)<<endl; // 12 Man *Ma = new Man; cout<<sizeof(*Ma)<<endl; // 12 Person *person =

2021-09-02 10:01:19 808

原创 处理僵尸进程的一个方法结束-使用SIGCHLD信号

一、僵尸进程介绍在多进程开发的程序中,主进程要跟踪子进程的退出状态,当子进程运行结束时,内核不会立刻释放子进程进程表表项,而是等主进程读取子进程退出信息之后,才释放子进程的进程表表项。即父进程读取子进程退出信息之前,子进程结束之后,称该子进程为僵尸态。另外一种情况是当夫进程异常退出或者结束,os将子进程的PPID设置为1,即init进程,子进程的结束由init进程接管,这种情况下,父进程退出之后,子进程退出之前,该子进程称为僵尸态。二、如何避免僵尸态如果子进程处于僵尸态,内核资源将是极大的浪费

2021-08-28 19:25:50 379

原创 服务器程序框架

本篇博客是根据《Linux高性能服务器编程》的第八章高性能服务器程序框架来写的,大部分内容都是来自书上,其中结合自己学习的心得和体会。服务器主要可以分为I/O部分、逻辑处理、存储单元三部分。第一部分主要是I/O处理单元的四种I/O模式和两种高效的事件处理模式。分别是异步I/O模式、复用I/O模式、SIGIO模式、阻塞I/O模式四种I/O模式和Reactor、Proactor两种事件处理模式,以及使用同步I/O来模拟Proactor,提示:服务器程序通常要处理的三类事件:I/O事件、信号、定时事件,事件的.

2021-08-23 11:31:35 1518

原创 Linux进程之间的关系

一、进程组的概念Linux下每个进程(PID)都隶属于一个进程组(PGID)。每个进程组都有一个首领进程,首领进程的特点是PGID和PID相同。进程组是一直存在的,除非进程组里面的进程都退出了,或者加入到其他进程组中。一个进程能够设置自己或者其子进程的PGID,另外,当子进程调用了exec系列函数之后,父进程也不能设置子进程的PGID。二、会话会话(SID)是由一系列有关联的进程组组成。可通过setsid()函数创建一个会话。但是一个进程组的首领是不能调用这个会话的,只能是非进程组首领的进程才可以调用

2021-08-20 11:24:08 582

原创 socket编程之带外数据的处理

带外数据和带内数据的解释:带外数据时用于迅速告诉对方本端发送的重要数据,因此带外数据比普通数据由更高的优先级。这里提到的普通数据就可以理解为带内数据。socket编程对带外数据的处理分为两部分:发送端和接收端。 一、发送端首先说明UDP是没有带外数据传输的,TCP也没有严格的带外数据传输,但是TCP利用头部的紧急指针标志和紧急指针两个字段给了应用程序一个紧急方式,TCP正是利用这种紧急方式来传递紧急数据的。 二、接收端TCP通信两端的读写是通过recv和send两个函数.

2021-08-19 16:10:06 667

原创 socket编程流程及函数详解

一、创建socketsocket就是一个可读、可写、可控制、可关闭的文件描述符(整型数字)// 函数原型int socket(int domain, int type, int protocol)//参数解释domain:指定系统使用的协议。可以是TCP/IP协议族,也可以是UNIX协议族。分别对应的值为 PF_INET(IPv4)/PF_INET6(IPv6) 和 PF_UNIX。type: 指明了服务的类型,有流服务和数据报服务,分别对应的参数为SOCK_S

2021-08-18 20:08:38 1859

原创 协议在电脑哪里?协议的存在形式?socket与TCP/IP协议族的关系?

疑惑:在学习计算机网络时出现在我们眼前的是大量的协议,这些协议可以理解为一组规则,规定双方的通信需要满足哪些要求、根据要求填写相应的信息。但是这些协议都存在在哪里?这是一直困惑我的?程序里?之前写过一些应用程序,也没有涉及到协议的部分,百思不得其解,直到遇到了socket。结论:先说结论,链路层、网络层、传输层中的这些协议都存放在内核里,内核是操作系统的核心,掌管着计算机的资源。socket就是套接字,应用程序可以通过socket使用这些协议,socket是实现系统调用的API。socket

2021-08-16 20:06:36 588 2

原创 C中有、无符号数运算的溢出问题及解决

一、无符号数加法的溢出问题无符号数可以理解为非负数,两个非负数x、y相加会发生溢出问题,C语言中对无符号数的溢出判断通过sum和x或者y进行比较大小(sum=x+y)。如果sum>=x或者y,那么没有发生溢出,否则发生了溢出。为什么sum与x或者y比较大小就可以判断出是否发生溢出了呢?在C中,如果发生了溢出,就将进位舍去,保留剩余部分,那么sum=x+y=x+y-2^ w,w为位数。我们知道x和y都小于2^ w次方,所以y-2^ w<0,在两边同时加上x,就是x+y-2^ w<x

2021-08-14 09:03:34 5832

原创 Linux更改文件的权限

Linux下一切皆文件,对文件的权限管理是Linux安全的一个重要特性,那么修改文件的权限是一个必要的技能了。一、命令chown(change owner)-更改文件的所有者语法:chown 【-R】 账户名/账户名:组名 文件名二、命令chgrp(change group )-更改文件属于的组别 创建分组的命令:groupadd 分组名 添加文件到分组:chgrp 组名 文件名 chgrp group_a file_a。 同样chgrp也可以更改目录的组别,用法和文件一样,不过目录.

2021-08-09 21:29:01 16144

原创 Linux 文件属性详解

文件的属性可以通过ls -l 文件名来获取。改命令将得到9列的内容。第一列:包含文件的类型、所有者、所属组、其他人对文件的权限,一共11位。第一位描述文件的类型,取取值范围为:b、c、d、l、s、-。> b表示块设备,磁盘文件的类型就是b。> c表示文件为串行端口设备文件,比如打印机、鼠标等。> d表示该文件为目录。> l表示该文件是链接文件。> s表示该文件为套接字文件,主要用于进程之间的通信,> -表示文件为普通文件。

2021-08-09 17:54:23 1487

原创 Linux中删除目录命令

命令rmdir语法 rmdir /test特点:只能删除目录,不可以删除文件,并且目录要为空。命令rm语法 rm [-rf] /test特点:rm可以删除目录,也可以删除文件,可以删除非空目录。使用命令rm -r时,系统会让用户确认是否删除。使用命令rm -f时,系统会不会有是否删除的提示,使用-f就是想忽略不存在的文件,但是目录存在的话就会出现删除失败。推荐使用rm -rf /test,这样不会出现错误。注:新建目录的命令:mkdir,可以使用-p帮助级联新建目录。...

2021-08-09 16:25:54 5781

原创 C++ list容器

一、list容器的概述vector容器是动态的数组,可以根据数据的大小动态的申请内存,当有更多的数据要存储,当前容器的空间不足以存储时,vector会另外申请一块更大的内存,将原来的数据拷贝在存的内存区域,新增的数据再存储。相比之下,list容器没有将数据连续的存储在一起,而是将数据链式的存储,是一种物理上非连续的存储结构,数据元素的顺序是通过链表中的指针链接实现的。链表是由一系列的节点组成,节点是由存储数据的数据域和存储节点地址的指针域组成。list的优势是对数据做遍历操作时,进行插入和删除操作,

2021-07-31 17:19:02 132

原创 C++ vector容器

一、vector容器的赋值vectorv;方式1:push_backv.push_back(1);方式2:通过拷贝构造函数vectorv2;v2=v1;方式3:通过assign函数vevtorv3;v3.assign(v1.begin(),v1.end());将v1的begin到end区间的元素赋值给v3。二、vector容量和大小函数原型:empty()判断容器是否为空;capacity()得到容器的容量;size()返回容器中元素的个数;resize(int num)函数,指

2021-07-31 12:18:17 139

原创 C++Stirng容器的查找、替换、比较、插入、删除、子串

一、查找方法1: find函数,str1.find(str=“要查找的字符或者字符串”,pos=0)pos是查找的其实位置,默认是从位置0开始。方法2:返回字符串str的前n个字符(从位置pos开始)的第一次出现 位置。string str1=“abdabcdefg”;int pos = str1.find(“ab”,pos=0,2);cout<<pos<<endl;上面的输出为0;ab字符串在0出首先出现。方法3:查找字符串最后一次出现的位置strin

2021-07-31 11:05:04 320

原创 C++ String字符串初始化方法

一、C++中String容器的概念在C++中string本质上一个类,类中是通过一个char 管理这个字符串,通过char说明元素的地址。也就是说string字符串所有元素是通过一个char的容器来维护的。另外,string封装了很多有用的函数,例如查找find,删除delete。string管理char所分配的内存,因此不用担心复制越界、取值越界的问题。二、string的构造函数string的构造函数可以使用以下四个方法进行。1)创建一个空的字符串string str;2)使用一个字符

2021-07-31 10:02:17 16278 5

原创 运动想象 BCI IV-2a 数据集介绍

一、数据集介绍及下载链接http://www.bbci.de/competition/iv/#download二、数据格式1、数据一共有9名被试,每个被试在不同天做了两个session,每个session有6个runs,每个runs有48个trials(12个左手,12个右手,12个双脚,12个舌头)。2、在每个session开始,记录5分钟的基准信号。记录分划分为3块,第一块是两分钟的注视十字架记录;第二块是一分钟闭眼记录;第三块是一分钟的眼动记录。(A04TEOG只包含眼动)3、实验范式:0-

2021-07-26 14:47:49 8856 6

原创 python函数之间的调用

一、函数1(func1)调用函数2(func2)(A.py)from A import func2二、函数1(func1)调用类中的成员函数(A.py下classA的train(函数))# 头文件写from A import classA# 下面引用classA.train()三、一个引用失败的错误(python调用不了另一个py文件)当想引用文件A中的函数时,通常要写from A ,但是这样会报错,就是没有引用成功。很可能是你的文件A命名不正确。比如A-test就不可以,文件名不可以

2021-07-25 22:25:24 1489

原创 Undefined symbols for architecture x86_64:

Undefined symbols for architecture x86_64: "_main", referenced from: implicit entry/start for main executableld: symbol(s) not found for architecture x86_64clang: error: linker command failed with exit code 1 (use -v to see invocation)vs code 报

2021-04-15 22:01:54 2235

原创 浅拷贝、深拷贝构造函数

1、 深浅拷贝是指深拷贝构造函数和浅拷贝构造函数。构造函数总共有三类:无参构造函数、有参数构造函数、拷贝构造函数。2、 当有属性在堆区开辟的,一定要提供拷贝构造函数,防止浅拷贝带来的问题。(堆区需要手动的清除内存,如果没有去除,系统在结束后会去除。但是析构函数在系统结束之前执行,浅拷贝导致析构函数运行错误)1、概念无参构造函数,又称位默认构造函数,默认构造函数的意思是编译器会自动生成,不需要人工的手写。默认构造函数的要求是:函数名与类名相同,没有参数,没有返回值。有参构造函数:有参数传递的构造.

2021-04-13 19:34:17 701

转载 卷积的三种模式full、same、valid以及tf的卷积模式mode=same, valid

转载: https://zhuanlan.zhihu.com/p/62760780只有tensorflow在卷积函数里面存在mode=same/valid,pytorch中没有。

2021-03-20 21:50:22 581

原创 似然函数和概率

本文是对知乎上“如何理解似然函数”这个话题的一个学习总结。URL=https://www.zhihu.com/question/54082000似然和概率的区别1、我们先举一个例子。抛硬币,抛十次。假如有7次正面朝上,3次朝下。计算发生这种情况的可能性。概率的计算是知道正面朝上的概率θ=1/2,P等于正面朝上的7次方,朝下3次方,虽然最后结果一样,但是我们知道朝上的概率。似然就是估计这个θ,就是上述的1/2,因为有些情况我们不知道事件发生的概率,但是你知道发生了哪些事件,进而去估计这个θ。2、.

2021-03-14 22:20:32 657 1

原创 凸函数的好处

本文是对一篇文章学习进行了总结。这篇文章的地址:http://www.360doc.com/content/20/1031/08/72198873_943330783.shtml注意:国外和国内定义的凸函数是相反的!我没写错!问题1:凸函数的好处?1、 在现实生活中,很多的问题都是在求一个问题的最小值。比如在汽车制造上,汽车的重量和阻力的大小是多少,才能让汽车的油耗达到最低?我们把汽车的重量和阻力组成函数,这是一个最小化的问题。2、凸函数只有一个极小值,也就是最小值,没有局部的极小值,这样我.

2021-03-14 20:45:15 1427 1

原创 Python数据结构

Python有五种数据结构,分别是数字、字符串、列表、元组、字典。1、数字Python Number 数据类型用于存储数值。数据类型包括长整型、整型、浮点型、复数。主要有两块要涉及到数字运算:数学相关的函数Python 的math模块,和数学相关的函数基本都在math包里。import math# ceil函数返回数字的上入整数print(math.ceil(4.1))# 5# floor函数返回数字的下舍整数print(math.floor(4.9))# 4# fabs返回

2021-03-13 18:23:25 94

原创 SDK和API

SDK是软件开发工具包,API是SDK的一个接口。SDK可以有多个API接口。当系统需要一些功能时,可以直接从SDK中调用,但是SDK中的实现部分是看不到的,要想使用其中的功能只能通过API这个接口调用。API就是一段代码,这段代码告诉你怎么使用这个功能,告诉你需要传哪些参数,返回什么值。...

2021-03-08 20:02:24 102

原创 ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.al

当出现对数组中每个元素进行遍历,例如将y_train=[3,5,9,3,4]数组中的数字属于0-2的变成0,属于3-5的变成1,其他的属于2。发现问题:数组是不可以直接当成变量来计算的。因此加一个for循环,给数组加上索引,就可以操作了。if y_train1>=0 and y_train1<3: y_train1=0elif y_train1>=3 and y_train1<6: y_train1=1else: y_train1=2Trace.

2021-03-03 22:34:37 1185 1

原创 深度学习处理脑电数据的一般过程

本文所参考的代码: https://github.com/vlawhern/arl-eegmodels/blob/master/examples/ERP.py1-5预处理、过滤、分epoch数据1、设置参数和读数据data_path = sample.data_path()raw_fname = data_path + '/MEG/sample/sample_audvis_filt-0-40_raw.fif'event_fname = data_path + '/MEG/sample/samp.

2021-03-03 22:05:00 1462 1

原创 用于自动视觉分类的深度学习人类思维 Deep Learning Human Mind for Automated Visual Classification

阅读本文须知:本文是2017年IEEE Conference on Computer Vision and Pattern Recognition的一篇会议,但是在The Perils and Pitfalls of Block Designfor EEG Classification Experiments中对本文提出的方法产生了质疑,下一篇博客将讲述这篇文献。摘要1)如果有效的使用读心术, 我们将人类的视觉能力转换为计算机视觉的方法。本文将论述一个由大脑信号驱动的视觉对象分类器来解决这个问题.

2021-03-02 17:18:09 723

原创 如何查看已安装tensorflow、pytorch的版本和位置

在终端或者命令行输入python,进入python环境# pytorch>>> import torch >>> torch.__version__'1.7.1'>>> torch.__path__['/opt/anaconda3/lib/python3.7/site-packages/torch']#tensorflow>>>import tensorflow as tf>>>tf.__pat.

2021-03-01 22:22:56 1767

原创 获取脑电数据 raw对象、event对象、label

获取raw对象data_path = sample.data_path()raw_fname = data_path+'/MEG/sample/sample_audvis_filt-0-40_raw.fif'raw=io.Raw(raw_fname,preload=True,verbose=False)print("raw:",raw)raw: <Raw | sample_audvis_filt-0-40_raw.fif, 376 x 41700 (277.7 s), ~123.2 M.

2021-03-01 18:54:00 587

基于单片机的纸张计数源代码.zip

基于单片机的纸张计数源代码,可以测量出纸张的数量。

2021-02-04

STM32单片机实验教程.zip

STM32单片机的例程、硬件接口资料

2021-02-04

基于电涡流的金属探测实验代码.zip

基于电涡流的金属探测代码,实现方法中涉及数字锁相算法、过采样技术,最终的金属探测器实现了超过2cm距离的金属探测。

2021-02-04

空空如也

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

TA关注的人

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