<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[like_study_cat的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/like_study_cat</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; like_study_cat]]></copyright><item><title><![CDATA[Window10上CLion配置]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/112662200</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/112662200</guid><author>like_study_cat</author><pubDate>Fri, 15 Jan 2021 13:43:55 +0800</pubDate><description><![CDATA[或许，你是嫌弃VS太麻烦，操作不方便。
或许，你是习惯了IDEA的开发。
总之，你就是心血来潮想试试CLion。
我相信，看到这篇教程的读者可能已经被CLion搞烦了，什么MinGW，Cygwin都是什么鬼，下载慢的要命，安装慢的要命，各种烦。
在本人努力爬坑的情况下，总算找到了一种极简的方法。
不说了，进入正题。

Window10上CLion极简配置教程

1. 首先，下载安装CLion

去JB公司官网下载CLion，https://www.jetbrains.com/clion/download/#]]></description><category></category></item><item><title><![CDATA[仿射变换和透视变换]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/112466528</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/112466528</guid><author>like_study_cat</author><pubDate>Mon, 11 Jan 2021 13:54:01 +0800</pubDate><description><![CDATA[图像处理基本算法--仿射变换和透视变换

仿射变换和透视变换更直观的叫法可以叫做“平面变换”和“空间变换”或者“二维坐标变换”和“三维坐标变换”。一个是二维坐标(x,y)，一个是三维坐标(x,y,z)。也就是：



仿射变换：

透视变换：

从另一个角度也能说明三维变换和二维变换的意思，仿射变换的方程组有6个未知数，所以要求解就需要找到3组映射点，三个点刚好确定一个平面。透视变换的方程组有8个未知数，所以要求解就需要找到4组映射点，四个点就刚好确定了一个三维空间。



﻿﻿









图像..]]></description><category></category></item><item><title><![CDATA[轻量级网络论文：GhostNet]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/112357995</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/112357995</guid><author>like_study_cat</author><pubDate>Fri, 08 Jan 2021 13:51:58 +0800</pubDate><description><![CDATA[GhostNet: More Features from Cheap Operations
PDF:https://arxiv.org/pdf/1911.11907.pdf
PyTorch代码:https://github.com/shanglianlm0525/PyTorch-Networks

1 Motivation

作者分析了一些训练好的网络输出的特征图,发现其中存在大量冗余信息, 一些特征图可以可以由其他特征图经过一些简单的变化得到. 因此提出了能用更少参数提取更多特征的Ghost模块.

..]]></description><category></category></item><item><title><![CDATA[学C++要看的书]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/111958257</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/111958257</guid><author>like_study_cat</author><pubDate>Wed, 30 Dec 2020 11:37:47 +0800</pubDate><description><![CDATA[初级阶段：

1. C++基础语法：《C++ Primer 第五版》

C++语法太过繁杂，很多语法特性一辈子也用不上。对于初学者来说，学完前7章就能写简单的程序。



2. 数据结构和算法：《大话数据结构》

这实在是一本对新手非常友好的书，暂时先看完前5章就够了。此时应该多做一些练习，可以是简单的小软件或小游戏。



3. C++标准库：《C++ Primer 第五版》

没错还是这本书，之前7章学了基础语法。现在继续学习8~12章，涵盖了标准库常用组件的基本用法。想完整学习标准库的同学可以在未..]]></description><category></category></item><item><title><![CDATA[C++和python]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/111957407</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/111957407</guid><author>like_study_cat</author><pubDate>Wed, 30 Dec 2020 11:33:24 +0800</pubDate><description><![CDATA[说C++变得越来越像Python，可能有点过分，只不过是对比学习而已，请勿见怪！

字面量


static const int primes = 0b10100000100010100010100010101100;

1
原始字符串
Python中：


path = r'c:\noway'

1
C++中


const char* path = R"(c:\this\string\has\backslashes)";

1
基于范围的循环
Python中：


for x in myList:
  ]]></description><category></category></item><item><title><![CDATA[常用数据结构总结]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/111953728</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/111953728</guid><author>like_study_cat</author><pubDate>Wed, 30 Dec 2020 11:12:17 +0800</pubDate><description><![CDATA[前言
	所有的容器归根到底都是内存空间的排列方式和在空间上施加各种各种不同的限制所得的。空间排列方式只有线性和链式两种方式，链式是通过记录每一个数据的地址来实现查找下一位数据的。而每一个容器所具有的特性就决定了它所适用的情况，总的来看容器常用的无非是增删改查操作，下面将从适用场景、常用操作来进行总结。
	
	
	array数组
	内存空间为连续的一段地址，适用于提前已知所要存储的数据类型和数量、进行大量的查、改操作，不适用于含有大量交换、删除、增加数据的操作，该容器无法动态改变大小，所以说提前已知存储数..]]></description><category></category></item><item><title><![CDATA[迭代器与生成器]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/110826156</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/110826156</guid><author>like_study_cat</author><pubDate>Mon, 07 Dec 2020 20:00:00 +0800</pubDate><description><![CDATA[迭代器

迭代是Python最强大的功能之一，是访问集合元素的一种方式。

迭代器是一个可以记住遍历的位置的对象。

迭代器对象从集合的第一个元素开始访问，直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器有两个基本的方法：iter() 和 next()。

字符串，列表或元组对象都可用于创建迭代器：

实例(Python 3.0+)


&gt;&gt;&gt; list=[1,2,3,4]
&gt;&gt;&gt; it = iter(list)    # 创建迭代器对象
&gt;&gt;&]]></description><category></category></item><item><title><![CDATA[两种scope：variable与name]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/110821300</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/110821300</guid><author>like_study_cat</author><pubDate>Mon, 07 Dec 2020 16:24:50 +0800</pubDate><description><![CDATA[两种scope：variable与name

tf.variable_scope()是对变量进行命名管理，而tf.name_scope()是对算子(op)进行命名管理，二者相互不影响。见下例：



    import tensorflow as tf

    for i in range(10):

    with tf.name_scope('test'):

    a = tf.constant([1])

    b = tf.constant([1])

    c = a + b

  ]]></description><category></category></item><item><title><![CDATA[lambda]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/109382117</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/109382117</guid><author>like_study_cat</author><pubDate>Fri, 30 Oct 2020 11:31:21 +0800</pubDate><description><![CDATA[四个用法



由于lambda语法是固定的，其本质上只有一种用法，那就是定义一个lambda函数。在实际中，根据这个lambda函数应用场景的不同，可以将lambda函数的用法扩展为以下几种：


	将lambda函数赋值给一个变量，通过这个变量间接调用该lambda函数。

	例如，执行语句add=lambda x, y: x+y，定义了加法函数lambda x, y: x+y，并将其赋值给变量add，这样变量add便成为具有加法功能的函数。例如，执行add(1,2)，输出为3。
	
	
	将lamb.]]></description><category></category></item><item><title><![CDATA[动态库与静态库的调用]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/108989532</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/108989532</guid><author>like_study_cat</author><pubDate>Sat, 10 Oct 2020 01:05:46 +0800</pubDate><description><![CDATA[目录

静态库

什么是静态库？

怎么创建

如何使用

静态库的第一种使用方法

静态库的第二种使用方法



动态链接库

动态库是什么？

怎么创建

如何使用

隐式调用

显式调用

静态库

什么是静态库？

我们先来说一下什么是静态库，维基百科对其的解释是这样的：


在计算机科学里，静态库（英语：Static library, Statically-linked library），或称静态库，是一个外部函数与变量的集合体。静态库的文件内容，通常包含一堆程序员自定的变量与函数，其内容不像动.]]></description><category></category></item><item><title><![CDATA[C语言--指针一般在什么时候需要申请内存空间]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/108989494</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/108989494</guid><author>like_study_cat</author><pubDate>Sat, 10 Oct 2020 00:47:49 +0800</pubDate><description><![CDATA[1. 指针所指向的地址需要存放数据的时候需要申请空间。


int *q;只有地址，没有内存空间。这个地址是随机地址。


（1）没有申请内存空间：



    int *q;

    *q = 1;

    cout&lt;&lt;*q&lt;&lt;endl;

错误! 指针变量q没有空间，不能直接存放数据。

（2）申请内存空间：


int *q = new int;

*q = 1;

cout&lt;&lt;*q&lt;&lt;endl;

正确，存放数据之前给指针变量申请了一个int类型]]></description><category></category></item><item><title><![CDATA[为指针指向的内存赋值]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/108989352</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/108989352</guid><author>like_study_cat</author><pubDate>Sat, 10 Oct 2020 00:38:05 +0800</pubDate><description><![CDATA[char **temp_pointer=NULL;
  temp_pointer=(char **)malloc(sizeof(char *) * number); // 申请内存空间
  if(temp_pointer==NULL) // 申请内存空间失败则退出
  {
  fclose(fp1);
  return -1;
  }
  for(i=0; i&lt;number; i++)
  {
  //为指针指向的内存赋值
  temp_pointer[i]=(char *)malloc(siz...]]></description><category></category></item><item><title><![CDATA[为p指向空间赋值]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/108989204</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/108989204</guid><author>like_study_cat</author><pubDate>Sat, 10 Oct 2020 00:24:58 +0800</pubDate><description><![CDATA[为p指向空间赋值


[c]代码库
/* 使用calloc来为数组申请空间 */
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#define SIZE 5
 
int main(void) {
    int *p = NULL;
    int i = 0;
 
    /* 为p从堆上分配SIZE个int型空间 */
    p = (int *) calloc(SIZE, sizeof(int));
 
    /* 检查p的分配结果 */
 ]]></description><category></category></item><item><title><![CDATA[（C++）函数参数传递中的一级指针和二级指针]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/108971058</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/108971058</guid><author>like_study_cat</author><pubDate>Fri, 09 Oct 2020 00:48:20 +0800</pubDate><description><![CDATA[主要内容：

1、一级指针和二级指针

2、函数指针传递的例子

3、什么时候需要传递二级指针？

4、二级指针在链表中的使用

1、一级指针和二级指针

一级指针：即我们一般说的指针，就是内存地址；

二级指针：指向指针的指针，就是地址的地址；

如：

int a=1;

int *p=&amp;a;　　// p为a变量的地址，通过*p可以得到a的值

int **q=&amp;p; 　　// q为p指针的地址，通过**q可以得到a的值

2、函数指针传递的例子

程序1：



	
#include.]]></description><category></category></item><item><title><![CDATA[二级指针和指针引用函数传参（C++）]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/108970968</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/108970968</guid><author>like_study_cat</author><pubDate>Fri, 09 Oct 2020 00:34:03 +0800</pubDate><description><![CDATA[在函数的使用过程中，我们都明白传值和传引用会使实参的值发生改变。那么能够通过传指针改变指针所指向的地址吗？

在解决这个问题之前，也许我们应该先了解指针非常容易混淆的三个属性：
①.指针变量地址（&amp;p）
②.指针变量指向的地址（p，存储数据的地址）
③.指针变量指向的地址的值（*p）
当我们将指针变量与其它变量比较之后就会发现，指针变量同其它变量是相似的，只是多了最后一种操作。比如一个int类型的变量，int x=5;&amp;x取出存储5这个数据的地址，同样，&amp;p也是存储指针的地址，p就是]]></description><category></category></item><item><title><![CDATA[struct与指针]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/108956383</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/108956383</guid><author>like_study_cat</author><pubDate>Fri, 09 Oct 2020 00:15:32 +0800</pubDate><description><![CDATA[#include&lt;stdio.h&gt;
    #include&lt;stdlib.h&gt;
     
    //一级指针的用途：简介访问结构体，创建一个堆上个变量，储存这个变量的地址
    struct info
    {
    	int num;
    	float score;
    };
     
    void main1()
    {
    	//如何构建一个指针变量访问结构体info
    	struct info info1;//构建一个变量in...]]></description><category></category></item><item><title><![CDATA[struct]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/108969127</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/108969127</guid><author>like_study_cat</author><pubDate>Thu, 08 Oct 2020 21:49:01 +0800</pubDate><description><![CDATA[结构体很重要，初学者一定要掌握。比如存储一个班级学生的信息，肯定包括姓名、学号、性别、年龄、成绩、家庭地址等项。这些项都是具有内在联系的，它们是一个整体，都表示同一个学生的信息。但如果将它们定义成相互独立的变量的话，就无法反映它们的内在联系：






char name[20]; //姓名
int num; //学号
char sex; //性别
int age; //年龄
float score; //成绩
char addr[30]; //家庭住址

而且问题是这样写的话，只是定义了一个学生，如果.]]></description><category></category></item><item><title><![CDATA[DNN模块]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/108962056</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/108962056</guid><author>like_study_cat</author><pubDate>Thu, 08 Oct 2020 13:11:09 +0800</pubDate><description><![CDATA[1.OpenCV3.3 DNN模块介绍

在OpenCV3.3版本发布中把DNN模块从扩展模块移到了OpenCV正式发布模块中，当前DNN模块最早来自Tiny-dnn，可以加载预先训练好的Caffe模型数据，OpenCV做了近一步扩展支持所有主流的深度学习框架训练生成与导出模型数据加载，常见的有如下：
Caffe
TensorFlow
Torch/PyTorchOpenCV中DNN模块已经支持与测试过这些常见的网络模块：
AlexNet
GoogLeNet v1 (also referred to as .]]></description><category></category></item><item><title><![CDATA[数组元素首地址和数组首地址]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/108956150</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/108956150</guid><author>like_study_cat</author><pubDate>Wed, 07 Oct 2020 21:38:16 +0800</pubDate><description><![CDATA[int main()
{
	int arr[10] = {0};
	printf("数组元素首地址 ：%d\n",arr);	//数组元素首地址   2293280
	printf("数组首地址 		：%d\n",&amp;arr);	//数组首地址 	 2293280
	
	printf("数组元素首地址+1 ：%d\n",arr+1);	//数组元素首地址  2293284
	printf("数组首地址+1 		：%d\n",&amp;arr+1);	//数组首地址     2293320
	retu.]]></description><category></category></item><item><title><![CDATA[C/C++申请和释放内存]]></title><link>https://blog.youkuaiyun.com/like_study_cat/article/details/108953733</link><guid>https://blog.youkuaiyun.com/like_study_cat/article/details/108953733</guid><author>like_study_cat</author><pubDate>Wed, 07 Oct 2020 18:25:53 +0800</pubDate><description><![CDATA[new 和 delete 是 C++ 用于管理堆内存的两个运算符，对应于C语言中的 malloc 和 free，但是 malloc 和 free 是函数，而new 和 delete 是运算符。除此之外，new 在申请内存的同时，还会调用对象的构造函数，而 malloc 只会申请内存；同样，delete 在释放内存之前，会调用对象的析构函数，而 free 只会释放内存。

###C++

new运算符申请内存：

将调用相应的 operator new(size_t) 函数动态分配内存，在分配到的动态内存块上]]></description><category></category></item></channel></rss>