<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Ryan Smith的专栏]]></title><description><![CDATA[硕士在读，兴趣领域：计算机视觉、机器学习、自动控制，C/C++,python,opencv，Linux等]]></description><link>https://blog.youkuaiyun.com/laihonghuan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; laihonghuan]]></copyright><item><title><![CDATA[基于Opencv库中SVM模块的MNIST手写字识别数据库识别]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/49387237</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/49387237</guid><author>laihonghuan</author><pubDate>Sat, 24 Oct 2015 19:15:36 +0800</pubDate><description><![CDATA[基于Opencv库中SVM模块的MNIST手写字识别数据库识别代码。
 
       MNIST的手写数字数据库，有60000例训练集, 10000个测试集。它是更大的数据集NIST的一个子集。 数字已经被size-normalized，是有固定大小的图像。
       官方地址：http://yann.lecun.com/exdb/mnist/
       有对这个数据的详细介绍。]]></description><category></category></item><item><title><![CDATA[数据结构之旅（一）顺序存储结构来实现线性表]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/49339677</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/49339677</guid><author>laihonghuan</author><pubDate>Thu, 22 Oct 2015 22:08:25 +0800</pubDate><description><![CDATA[用数组（顺序存储结构）来实现线性表
该数据结构具有如下功能：

初始化
获取数据
在表尾添加数据
弹出表尾数据
设置指定位置数据
删除指定位置数据
在指定位置插入数据



优点
1、无须为表示表中元素之间的逻辑关系而增加额外的存储空间
2、可以快速地存取表中任一位置的元素
缺点
1、插入和删除操作需要移动大量元素
2、当线性表长度变化较大时，难以确定存储空间的]]></description><category></category></item><item><title><![CDATA[数据结构之旅（一）一些基本的概念]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/49338507</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/49338507</guid><author>laihonghuan</author><pubDate>Thu, 22 Oct 2015 20:37:59 +0800</pubDate><description><![CDATA[基本概念和术语
 
数据：是描述客观事物的符号，是计算机中可以操作的对象，是能被计算机识别，并输入给计算机处理的符号集合。数据不仅仅包括整型、实型等数值类型，还包括字符及声音、图像、视频等非数值类型。
 
数据元素：是组成数据的、有一定意义的基本单位，在计算机中通常作为整体处理。也被称为记录。如结构体、类
 
数据项：一个数据元素可以由若干个数据项组成。数据项是数据不可分割的最小单位。]]></description><category></category></item><item><title><![CDATA[Linux多线程基础学习（八）私有数据]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/49308087</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/49308087</guid><author>laihonghuan</author><pubDate>Wed, 21 Oct 2015 18:44:52 +0800</pubDate><description><![CDATA[在进程内的所有线程共享相同的地址空间，任何声明为静态或外部的变量，或在进程堆声明的变量，都可以被进程所有的线程读写。那怎样才能使线程序拥有自己的私有数据呢。
posix提供了一种方法，创建线程键。
1.为什么需要线程私有数据：
      原因一：有时候需要维护基于每个线程的数据，用线程ID作为索引。因为线程ID不能保证是小而连续的整数，所以不能简单的分配一个线程数据数组，用线程ID作为数组]]></description><category></category></item><item><title><![CDATA[Linux多线程基础学习（五）线程同步-读写锁]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/49282973</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/49282973</guid><author>laihonghuan</author><pubDate>Tue, 20 Oct 2015 21:14:21 +0800</pubDate><description><![CDATA[读写锁
 基础概念
通过读写锁，可以对受保护的共享资源进行并发读取和独占写入。读写锁是可以在读取或写入模式下锁定的单一实体。要修改资源，线程必须首先获取互斥写锁。必须释放所有读锁之后，才允许使用互斥写锁。
对数据库的访问可以使用读写锁进行同步。读写锁支持并发读取数据库记录，因为读操作不会更改记录的信息。要更新数据库时，写操作必须获取互斥写锁。
 
在一些程序中存在读者写者问题，也就是说，]]></description><category></category></item><item><title><![CDATA[Linux多线程基础学习（七）pthread一次性初始化]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/49281491</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/49281491</guid><author>laihonghuan</author><pubDate>Tue, 20 Oct 2015 19:31:09 +0800</pubDate><description><![CDATA[在多线程环境中，有些事仅需要执行一次。通常当初始化应用程序时，可以比较容易地将其放在main函数中。但当你写一个库时，就不能在main里面初始化了，你可以用静态初始化，但使用一次初始化（pthread_once）会比较容易些。
 
首先要定义一个pthread_once_t变量，这个变量要用宏PTHREAD_ONCE_INIT初始化。


pthread_once_t once_cont]]></description><category></category></item><item><title><![CDATA[Linux多线程基础学习（五）线程同步-条件变量]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/49278353</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/49278353</guid><author>laihonghuan</author><pubDate>Tue, 20 Oct 2015 15:59:08 +0800</pubDate><description><![CDATA[条件变量(cond)
互斥锁有明显的缺点只有lock和unlock状态。设计多任务时容易死锁，使用也不灵活。而条件变量引入了信号弥补了互斥锁的不足。
 
与互斥锁不同，条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程，直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。
 
条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制，主]]></description><category></category></item><item><title><![CDATA[Linux多线程基础学习（六）线程属性]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/49275873</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/49275873</guid><author>laihonghuan</author><pubDate>Tue, 20 Oct 2015 13:23:25 +0800</pubDate><description><![CDATA[应该是Linux不希望用户在新建用户线程的时候可以直接访问线程属性的数据成员，因为可能用户在这里设置了未定义的数值导致线程奔溃，用户只能通过调用Linux提供的结构体的初始化函数对其进行变量初始化。这样做的好处在下文中会说明。
通过设置属性，可以指定一种不同于缺省行为的行为。使用pthread_create()创建线程时或初始化同步变量时，可以指定属性对象。一般情况下pthread_create属性参数缺省值通常就足够了。]]></description><category></category></item><item><title><![CDATA[Linux多线程基础学习（五）线程同步-同步概念、互斥锁]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/49255605</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/49255605</guid><author>laihonghuan</author><pubDate>Mon, 19 Oct 2015 21:52:01 +0800</pubDate><description><![CDATA[线程同步中对同步的理解
对于多线程程序来说，同步(synchronization)是指在一定的时间内只允许某一个线程访问某个资源。而在此时间内，不允许其它的线程访问该资源。
 “同”字从字面上容易理解为一起动作其实不是，“同”字应是指协同、协助、互相配合。如进程、线程同步，可理解为进程或线程A和B一块配合，A执行到一定程度时要依靠B的某个结果，于是停下来，示意B运行；B依言执行，再将结果给A；]]></description><category></category></item><item><title><![CDATA[C++中结构体与类的区别（struct与class的区别）]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/49231623</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/49231623</guid><author>laihonghuan</author><pubDate>Sun, 18 Oct 2015 21:41:21 +0800</pubDate><description><![CDATA[转载来源：http://blog.sina.com.cn/s/blog_48f587a80100k630.html

C++中的struct对C中的struct进行了扩充，它已经不再只是一个包含不同数据类型的数据结构了，它已经获取了太多的功能。
struct能包含成员函数吗？ 能！
struct能继承吗？ 能！！
struct能实现多态吗？ 能！！！ 

既然这些它都能实现，那它和c]]></description><category></category></item><item><title><![CDATA[eclipse下添加GCC编译器的编译链接库以及程序运行参数方法]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/49178823</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/49178823</guid><author>laihonghuan</author><pubDate>Fri, 16 Oct 2015 15:10:31 +0800</pubDate><description><![CDATA[eclipse下添加GCC编译器的编译链接库


在Linux下编写多线程程序，在调用pthread.h下的函数时需要添加链接库，如果是在命令行的环境下只需要在gcc命令后加上 -pthread就可以编译、连接通过，但是如何在eclipse下添加-pthread？不然会出现如下错误


其实很简单，只要右击工程选择properties或者单击project ->properties也没]]></description><category></category></item><item><title><![CDATA[Linux多线程基础学习（四）线程的终止、连接、取消]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/49178203</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/49178203</guid><author>laihonghuan</author><pubDate>Fri, 16 Oct 2015 14:18:26 +0800</pubDate><description><![CDATA[线程终止：
1、 如果进程中的任意一个线程调用了exit，_Exit，_exit，那么整个进程就会终止
2、 从启动例程中返回，返回值是线程的退出码
3、 线程可以被同一进程中的其他线程取消
4、 线程调用pthread_exit(void *rval)函数，rval是退出码


#include 
#include 
#include 
#include 
#include 
us]]></description><category></category></item><item><title><![CDATA[Linux多线程基础学习（三）线程生命周期]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/49104789</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/49104789</guid><author>laihonghuan</author><pubDate>Tue, 13 Oct 2015 21:34:13 +0800</pubDate><description><![CDATA[初始线程/主线程
 
1、当c程序运行时，首先运行main函数。在线程代码中，这个特殊的执行流被称作初始线程或者主线程。你可以在初始线程中做任何普通线程可以做的事情。
2、主线程的特殊性在于，它在main函数返回的时候，会导致进程结束，进程内所有的线程也将会结束。这可不是一个好的现象，你可以在主线程中调用pthread_exit函数，这样进程就会等待所有线程结束时才终止。
3、主线程接受参]]></description><category></category></item><item><title><![CDATA[Linux下安装eclipse的C/C++集成开发环境]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/48953709</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/48953709</guid><author>laihonghuan</author><pubDate>Wed, 07 Oct 2015 21:01:23 +0800</pubDate><description><![CDATA[1.在Ubuntu软件中心搜索eclipse，并下载安装。自动安装一般没有问题。或者
2.打开终端，然后输入（中间需要你输入密码）：
                                      sudo apt-get install eclipse
                                      sudo apt-get install ecli]]></description><category></category></item><item><title><![CDATA[Linux多线程基础学习（二）创建新的线程]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/48948449</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/48948449</guid><author>laihonghuan</author><pubDate>Wed, 07 Oct 2015 18:01:04 +0800</pubDate><description><![CDATA[多线程基础学习（一）创建新的线程这次博客主要记录以下多线程知识内容（代码运行环境为Linux）：
获取Linux中进程与线程的ID
创建一个新的线程
理解一个进程中包含多个线程的实际案例
进程与线程的ID收到
  项目
  进程
  线程  标识符类型
  pthread_t
  pid_t
  获取id
  pthread_self()
  getpid()
  创建
  pthread_crea]]></description><category></category></item><item><title><![CDATA[Linux多线程基础学习（一）基本概念]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/48937727</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/48937727</guid><author>laihonghuan</author><pubDate>Tue, 06 Oct 2015 22:33:52 +0800</pubDate><description><![CDATA[进程与线程的一些基本概念]]></description><category></category></item><item><title><![CDATA[编程练习(2)]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/48750961</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/48750961</guid><author>laihonghuan</author><pubDate>Sat, 26 Sep 2015 13:00:00 +0800</pubDate><description><![CDATA[最长和为零的子数组]]></description><category></category></item><item><title><![CDATA[编程练习(1)]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/48581001</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/48581001</guid><author>laihonghuan</author><pubDate>Sat, 19 Sep 2015 22:04:28 +0800</pubDate><description><![CDATA[最大间隔问题]]></description><category></category></item><item><title><![CDATA[Linux下基于opencv的神经网络字符识别]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/48057965</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/48057965</guid><author>laihonghuan</author><pubDate>Fri, 28 Aug 2015 21:04:52 +0800</pubDate><description><![CDATA[运行环境：Linux Ubuntu12.04
    opencv 2.3.1


包含头文件、命名空间：


#include "mainwindow.h"
#include "ui_mainwindow.h"



#include 
#include 
#include 
#include 
#include 
#include "qdebug.h"

using namesp]]></description><category></category></item><item><title><![CDATA[基于opencv的神经网络算法实现两类分类问题的可视化演示]]></title><link>https://blog.youkuaiyun.com/laihonghuan/article/details/47961547</link><guid>https://blog.youkuaiyun.com/laihonghuan/article/details/47961547</guid><author>laihonghuan</author><pubDate>Mon, 24 Aug 2015 23:19:57 +0800</pubDate><description><![CDATA[基于opencv的神经网络两类分类算法的二维空间可视化demon，希望可以帮到大家，代码由opencv文档中的SVM例程修改得到，与svm的结果有所不同]]></description><category></category></item></channel></rss>