自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Openvibe3.0安装过程中遇到Python安装错误

如果你安装Openvibe3.0过程中,python3没有安装成功,打开Openvibe designer里面的python代码实例,软件会报错,并且会以红色示警,经过我研究发现有两个地方会造成此问题发生。 (1)Openvibe的位数和你电脑的Python位数对应不上,比如你Openvibe是64位,Python却是32位的,那么就会报错。还有一个就是Openvibe3.0安装要求Python版本必须大于等于3.7以上,不然也会报错。 (2)Openvibe要求电脑添加Python环境一定是正确的,.

2020-12-22 22:00:50 469 3

原创 C++之手撕引用计数的智能指针

1、实现多个智能指针指向同一个资源,不会造成指针失效,也不会造成资源被多次释放。2、缺点是多线程环境下,不安全,需要加锁。#include <iostream>#include <memory>using namespace std;template <typename T>class RefCnt{public: RefCnt(T *ptr = nullptr) : mptr(ptr) { if (mptr != nul

2020-07-25 18:33:23 654 1

原创 C++之单调栈思想及题解思路

题目来源Leetcode84题https://leetcode-cn.com/problems/largest-rectangle-in-histogram/思路一:暴力法,求出每个组合矩形的面积,然后比较大小。思路二:单调栈法,求以每个柱子为高的最大面积,遍历柱子,矩形的宽度边界即为向左找到第一个高度小于当前柱体 i 的柱体,向右找到第一个高度小于当前柱体 i 的柱体。对于每个柱子我们都如上计算一遍以当前柱子作为高的矩形面积,最终比较出最大的矩形面积即可。class Solution {pu

2020-06-29 20:34:28 423

原创 C++之Leetcode刷题笔记之堆栈

题目来源leetcode42题https://leetcode-cn.com/problems/trapping-rain-water/解题思路:我没用到堆栈(感觉太麻烦),这个题目直接遍历整个数组就行了,代码挺简单的,应该能看懂哈。class Solution {public: int trap(vector<int>& height) { int len=height.size(); if(len<=0) return 0;

2020-06-29 15:24:52 156

原创 C++之位运算相关题目及题解

题目如下思路解法; 我们利用位运算,n和n-1相与,之后的结果就是n的二进制的1会少一个。当n为0的时候结束。#include<iostream>using namespace std;class solution{ public: int len_num(long int n) { int count; while(n!=0) { coun

2020-06-27 14:24:04 425

原创 C++之手撕LRU算法结构

问题描述如下设计一个数据结构,实现LRU Cache的功能(Least Recently Used – 最近最少使用缓存)。它支持如下2个操作: get 和 put。int get(int key) – 如果key已存在,则返回key对应的值value(始终大于0);如果key不存在,则返回-1。void put(int key, int value) – 如果key不存在,将value插入;如果key已存在,则使用value替换原先已经存在的值。如果容量达到了限制,LRU Cache需要在插入新元素

2020-06-26 21:43:49 474

原创 C++之动态规划思想(路径方法)相关题目及题解

题目描述如下shopee的办公室非常大,小虾同学的位置坐落在右上角,而大门却在左下角,可以把所有位置抽象为一个网格(门口的坐标为0,0),小虾同学很聪明,每次只向上,或者向右走,因为这样最容易接近目的地,但是小虾同学不想让自己的boss们看到自己经常在他们面前出没,或者迟到被发现。他决定研究一下如果他不通过boss们的位置,他可以有多少种走法?思路如下 转移方程dp[i][j]表示到达第(i,j)个位置需要多少种走法,遇到Boss位置的时候,把走法设置为0。然后利用转移方程dp[i][j]=dp[i-

2020-06-26 10:42:12 334

原创 C++之动态规划思想之打印字符串之最长子串题解

最长公共子串的变体,题目如下。命令行工具接收两个字符串参数。输入字符串的合法字符集为[a-zA-Z0-9],大小写敏感,无需考虑异常输入场景。所找到的公共子串;如果存在多个等长的公共子串,则请按字母序排序,依次打印出所有公共子串,每行一个。解题思路: 与我们平常接触的最长公共子串题目不一样,这个题目要求我们打印出来所有的最长子串并排序,思路是利用动态规划,但是我们dp数组保存的变成了字符串s1第i位结束和s2第j位结束的最大值,这样我们再遍历dp数组就可以得到全部最长公共子串了。#include&lt

2020-06-25 22:07:18 276

原创 C++之利用哈希表解决String相关问题及解答

题目如下请编码实现一个命令行工具,判定两个指定的字符串是否异构同质;异构同质的定义为:一个字符串的字符重新排列后,能变成另一个字符串。比如abc和acb就是异构同质。思路如下: 先用一个哈希表去记录某一个字符串的所有字符和个数,然后遍历第二个字符串,如果遍历的过程中没发现,就返回错误。#include<map>#include<string>#include<iostream>using namespace std;class solution{

2020-06-25 20:46:23 404

原创 C++之动态规划思想题目及解题思路

题目如下薯队长写了n篇笔记,编号从1~n,每篇笔记都获得了不少点赞数。薯队长想从中选出一些笔记,作一个精选集合。挑选的时候有两个规则:1.不能出现连续编号的笔记。2.总点赞总数最多如果满足1,2条件有多种方案,挑选笔记总数最少的那种。题目思路: 动态规划思想。 dp[i]表示前i篇笔记点赞总数最多。cnt[i]表示笔记的笔记总数。#include<vector>#include<iostream>#include<string>#include<

2020-06-25 20:05:31 646

原创 C++之字符串相关问题(遍历)及解法

题目忘记是哪个公司的真题了,问题很经典一个重复字符串是由两个相同的字符串首尾拼接而成,例如abcabc便是长度为6的一个重复字符串,而abcba则不存在重复字符串。给定任意字符串,请帮小强找出其中的最长重复子串。解题思路: 采用暴力解法,提供给大家,思路贼暴力,就是两次遍历,每次碰到s[i]和s[j]相同的情况就用while判断两个字符串是不是相同的。这个代码应该还可以优化。#include<iostream>#include<string>using namespace

2020-06-25 19:55:22 384

原创 C++之二叉树的前序遍历思想(递归版本)相关题目题解

题目来源于拼多多多多鸡打算造一本自己的电子字典,里面的所有单词都只由a和b组成。每个单词的组成里a的数量不能超过N个且b的数量不能超过M个。多多鸡的幸运数字是K,它打算把所有满足条件的单词里的字典序第K小的单词找出来,作为字典的封面。把其看为一个二叉树如下代码思路就来了#include<iostream>#include<vector>#include<string>using namespace std;class Solution{ publ

2020-06-25 19:51:31 389

原创 C++之贪心思想题目及题解

题目来源于拼多多真题多多鸡有N个魔术盒子(编号1~N),其中编号为i的盒子里有i个球。多多鸡让皮皮虾每次选择一个数字X(1 <= X <= N),多多鸡就会把球数量大于等于X个的盒子里的球减少X个。通过观察,皮皮虾已经掌握了其中的奥秘,并且发现只要通过一定的操作顺序,可以用最少的次数将所有盒子里的球变没。那么请问聪明的你,是否已经知道了应该如何操作呢?贪心思想解题:每次都做最好的选择,最好的选择就是取中值。#include<iostream>#include<vecto

2020-06-25 19:43:12 629

原创 C++二分法思想相关题目及题解

题目来源某公司真题,我觉得非常好珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。 珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。返回她可以在 H 小时内吃掉所有香蕉的最小速度 K(K 为整数)。解题思路:利用二分法去逼近正确答案,左边界一定不满足条件

2020-06-25 19:37:00 491

原创 C++11之Lambda表达式学习

C++11中的Lambda表达式用于定义并创建匿名的函数对象。Lambda表达式的基本构成:最简单的lambda表达式如下[](参数1,参数2){ 函数实现的代码}Lambda表达式是从[]开始的,这部分必须存在,不能省略,[]里面可以带参数,参数有=,&,this(1)参数=表示数体内可以使用Lambda所在作用范围内所有可见的局部变量(包括Lambda所在类的t...

2020-03-31 20:58:29 106

原创 C++错误:"error: funciton in namespace 'std' does not name a template type"

今天遇到这个问题,百度的解决方案全都是加头文件#include<functionl>但是我加了,还是报这个错。最后查到真正的原因时是gcc版本是98的,于是编译的时候需要加上-std=c++11g++ main.cpp -std=c++11问题解决...

2020-03-31 13:53:41 4914 2

原创 C++智能指针weak_ptr的学习笔记

weak_ptr 智能指针是为了解决shared_ptr相互引用导致的死锁问题,它不控制对象的生命周期,不会增加对象的引用次数,和shared_ptr可以相互转化,是一种弱应用。下面的代码就陷入了死锁,p1和p2相互引用导致计数一直为1,而对象得不到销毁。#include<iostream>#include<memory>using namespace std;...

2020-03-24 20:39:19 401

原创 C++智能指针shared_ptr学习笔记

C++智能指针shared_ptr实现的是,多个指针指向相同的对象,其释放的时机是最后一个引用被销毁时,当use_count()为0时被彻底释放。我们可以调用release()释放资源所有权,计数减一。shared_ptr容易引起死锁。避免使用raw pointer#include<iostream>#include<memory>using namespa...

2020-03-24 20:14:29 152

原创 C++智能指针unique_ptr学习笔记

C++11特性里面引入了很多智能指针,其中就包括unique_ptr,智能指针的作用是管理一个指针以防止指针忘记释放而造成内存泄露。unique_ptr是一个类,当超出了类的作用域,类会自动调用析构函数,析构函数会自动释放资源。其原理就是在函数结束时自动释放内存空间。unique_ptr的头文件为memory#include<iostream>#include<mem...

2020-03-24 17:37:09 254

原创 进程和线程通信同步方式总结

进程同步方式:临界区,互斥量,信号量,事件。线程同步方式:信号量,互斥量,条件变量。进程通信方式:管道(普通管道和命名管道),消息队列,信号量,信号,共享内存,套接字。线程通信方式:临界区,互斥量,信号量,事件。...

2020-03-21 18:53:16 226

原创 关于虚函数的一些理解

虚函数的作用虚函数的作用主要是为了实现程序的动态多态性虚函数的声明情况1:只能在类中用virtual声明虚函数。2:有继承情况的基类中析构函数必须是虚函数3:一个成员函数被声明为虚函数后,在同一类族中的类就不能再定义一个非virtual的但与该虚函数具有相同的参数(包括个数和类型)和函数返回值类型的同名函数。...

2020-03-20 15:41:41 156

原创 C++中static静态变量用法学习笔记

隐藏全局变量我们可以用extern在一个文件中使用别的别的文件定义的全局变量,但是如果我们想这个全局变量只在本文件中使用,而别的文件中不允许使用,就可以在命名变量时加上static。用法如下c1.cppstatic int a;int main(){ return 0;}c2.cppextern int a;int main(){ ...}这样全局变量就无法在...

2020-03-19 11:17:44 206

原创 C++中Vscode中使用extern出错处理

1创建了两个cpp文件第一个代码如下,第一个名字叫a.cpp,定义了两个全局变量。#include<cstdio>int a1=9,a2=3;第二个代码叫b.cpp,用到了extern,目的是输出a.cpp的两个全局变量a1和a2#include<cstdio>#include<iostream>using namespace std;ex...

2020-03-19 10:46:37 2112 9

原创 C++中sizeof和strlen的用法误区

sizeof函数是求表达式或者类型的字节数的,strlen是求字符串的长度的。sizeof遇到’\0’会把它的长度算进去,而strlen不会把’\0’算进去,而是到‘\0’就停止计算。例如#include<iostream>#include<cstring>#include<string>using namespace std;int main...

2020-03-18 20:47:01 785

原创 C++求二叉树深度的两种方法

今天在leetcode中碰到了求二叉树的深度问题,于是总结一下这两种方法方法一是用递归的方法,方法二是借助队列和层序遍历的思想#include<iostream>#include<queue>using namespace std;//构建二叉树struct TreeNode{ int val; struct TreeNode *left;...

2020-03-17 20:44:07 5600

原创 关于C++观察者模型的学习和理解

观察者模式属于行为型模式中的一种,其作用是当一个对象的状态发生改变时,能够通知其他关联对象,自动刷新对象的状态,有点像马路上的车和红绿灯的关系,当红灯这个对象亮起的时候,小车应该是停下来的状态,在小灯变绿的时候,小车才是行驶的状态。小车里面的人监听灯的变化情况。2.Talk is cheap(具体实现代码如下)#include <iostream>#include <v...

2020-03-16 18:55:39 159

原创 关于C++单例模式(饿汉式和懒汉式)学习的一些理解

1. 单例模式从字面意思就可以看出来单例模式是一个类只能创建一个实例对象,这种创建对象的方法带来的好处就是多线程开发中,初始化一次套接字,共享同一个资源,节省创建对象的时间,有些场景模式下,要求一个类只生成一个唯一的对象。单例模式又分为饿汉式和懒汉式单例模式。它的基本实现步骤是(1)先把构造函数私有化(2)提供一个全局的静态方法(创建对象用)(3)在类中定义一个静态指针,指向本类的变量的...

2020-03-14 10:36:20 164

原创 关于C++创建抽象工厂方法模式的学习笔记

1. 抽象工厂方法模式与工厂方法模式的区别工厂方法模式是在简单工厂方法基础之上再加上开闭原则形成的一种设计模式,其创建对象时不用new创建对象,而是使用工厂来创建,我们只需要提供一个接口就能实现创建,但是工厂模式在创建对象时候太过于单一,它要么生产香蕉,要么生产鸭梨,但是不能做到同时生产这两种,也就是说不能生产一个产品组。而抽象工厂方法模式能够同时生产一个产品族。2.抽象工厂方法实现中国工厂...

2020-03-13 11:07:30 158

原创 关于C++实现工厂方法模式的实现与理解

1. 工厂模式按照我自己的理解就是一个工厂生产某一个产品的模式或者模板,它生产出来的产品都是一样的,比如说我想要一台电脑,我直接去工厂提货就行了,而我不用管这个电脑是如何生产出来的,也不需要管它的具体实现步骤。在面向对象编程的过程中,设计模式主要分为三大类分别是创建型模式,结构式模式,行为型模式,而工厂模式属于创建型模式,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来...

2020-03-12 19:12:59 175

原创 关于C++中静态多态性和动态多态性的理解

1. 什么是多态性1.0多态的简要介绍:多态中的态为形态的意思,在面向对象编程中是指向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为。举个例子通俗来讲就是:比如说开学了,校长把这个消息发送给了所有人,但是所有人都是一样的反应吗?老师的行为是我需要提前备好课,学生的行为是准备好作业去学校,家长需要筹集学费。然后按照其特性来又分为静态多态性和动态多态性这两种,那么这两种又有什么区别呢?...

2020-03-11 20:16:44 3535

原创 学习过程中对回调函数的理解

1. 函数指针和指针函数的理解这两者的关系总容易弄混淆1.1指针函数:其实质还是一个函数,只不过它的返回值是一个指针。指针函数声明格式为:*类型标识符 函数名(参数表)int *fun(int x){ ...}1.2函数指针:其实质是一个指针,存储函数地址信息的一个变量。声明格式:类型说明符 (*函数名) (参数)。一定要加上括号。int (*fun)(int x){ ....

2020-03-10 12:49:21 178

原创 C++数据结构单链表学习过程中遇到的问题

1头结点与头指针的关系1.1链表的定义:由一堆包含两个部分的结点链接而成的数据结构,两个部分分别存储的是当前结点地址信息的指针域和存储数据元素的数据域。1.2头指针定义:通常使用“头指针”来标识一个链表,如单链表L,头指针为NULL的时表示一个空链表。1.3头结点定义:在单链表的第一个结点之前附加一个结点,称为头结点。头结点的Data域可以不设任何信息,也可以记录表长等相关信息。1.4两者...

2020-03-09 19:24:09 932 1

支持向量机(SVM)多分类算法实现

一般的支持向量机(SVM)只能够用作二分类,而本次上传的代码是一个四分类的支持向量机(SVM)算法实现,代码的关键部分都会有注释,适合刚入门的小白看。本代码还用到了libsvm这个工具箱,需要读者自己配置,配置方法较为简单,自己百度就能实现。数据可以用自己的也可以用压缩包里面的。

2019-05-13

《21个项目玩转深度学习——基于TensorFlow的实践详解》的全部源代码

《21个项目玩转深度学习——基于TensorFlow的实践详解》以实践为导向,深入介绍了深度学习技术和TensorFlow框架编程内容。 通过本书,读者可以训练自己的图像识别模型、进行目标检测和人脸识别、完成一个风格迁移应用,还可以使用神经网络生成图像和文本,进行时间序列预测、搭建机器翻译引擎,训练机器玩游戏。全书共包含21个项目,分为深度卷积网络、RNN网络、深度强化学习三部分。读者可以在自己动手实践的过程中找到学习的乐趣,了解算法和编程框架的细节,让学习深度学习算法和TensorFlow的过程变得轻松和高效。本书代码基于TensorFlow 1.4及以上版本,并介绍了TensorFlow中的一些新特性。  本书适合有一定机器学习基础的学生、研究者或从业者阅读,尤其是希望深入研究TensorFlow和深度学习算法的数据工程师,也适合对人工智能、深度学习感兴趣的在校学生,以及希望进入大数据应用的研究者。

2019-03-09

空空如也

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

TA关注的人

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