数据结构基本排序算法

以下是几种基本的排序算法

妻子决定你未来的事业高度

<以下内容来至剪客:http://www.vjianke.com/Y3SJJ.clip>

非常赞赏凤凰卫视美女主持沈星接受记者采访时说的这句话:一个男人最高的品味就是他选择的女人。一个男人的房子、车子、打火机、西装,当然都可以成为他品味的一部分,但最本质、最真实表现一个男人品味的是他选择什么样的女人。

选择了什么样的女人就等于选择了什么样的人生。俗话说,男怕入错行,女怕嫁错郎,男人何尝不是。写《菜根谭》的洪应明就说过“悍妻诟谇,真不若耳聋也!” 浓妖不及淡久,婚姻也是这样。大文豪莎士比亚一生写下了众多精彩的戏剧,但是他的婚姻观却没有任何浪漫色彩。因为他明悉婚姻道路的艰难,更了解生活会耗损 爱情。 人活这一辈子,究竟有什么是我们必须要的?真正需要的就是良好的心态和闲适的心情。只有家庭和睦,心态健康的人,才具备闲适的条件。比如娶一个好女人,就能赋予一个男人闲适的心情。那么,应该娶一个怎样的女人才能算是有最高的品味呢?

1、一个女人最重要的品质应该是善良,而且百善孝为先。天下不知道有多少苦命的男人在受着自己的老婆和自己亲妈之间的夹板气? 其实处理好和长辈的关系不是孝字那么简单,里面有很多技巧和性格的问题。

2、贤惠,这是千古不变的女性美德。说的具体一点,就是要能做饭、洗衣、照顾家人。即使家里有钱请保姆,也需要一个女主人来张罗打点一切。

3、知书达礼。这是新时代对女人与时俱进的要求。一个女人的气质和教养是丰富内心的流露,也是与别人真正拉开距离的所在。

4、有思想、有品位。有思想使得她不屑于插足别人之间的闲话,她从来都是个“绝缘体”。有品位,使得她能匠心独具地表达自己的风格。

5、懂事。对于男人最重要的是尊严,她可以在家里抨击我,但不能在公众场合讽刺、嘲笑我。一个不懂维护丈夫尊严的女人,是很愚蠢的女人。

6、 充分信任,相对自由。喜新厌旧其实是人的本能,谁也不能保证一辈子只对一个人有好感。奉劝天下所有将要结婚的女人用心学习《医学心理学》,充分理解自己的 丈夫喜欢在画报、网页上凝眸美女的嗜好,不要因为这些下意识的行为而吹毛求疵,否则就是将婚姻推向死亡。他想独自呆一会儿,不要碎嘴地问什么究竟,应该送 上一杯茶,轻轻把门关上就好了。

7、有一份稳定的收入。不依附于男人生存的女人才能做到独立,自尊。很赞同。

8、没有过多的物质欲望。我希望我的老婆应该是那种宝马汽车坐得,自行车也能骑得,五星级酒店住得,野营的帐篷也不嫌弃,吃得苦中苦,方为人上人。

9、天真有一点童趣。一个男人若是真的喜欢一个女人,就应该最大程度地呵护她的纯真。未失童趣的女子,能让漫长枯燥的四目相对,其乐无穷。

10、喜欢读书和音乐。喜欢读书不是看什么花花绿绿的时尚杂志、喜欢音乐也不是什么听过就忘的流行小曲。经典的书籍和音乐能让岁月与生活的琐碎无法在她的心灵上烙下痕迹。

11、工作能力强,有一技之长。工作中的女人显然没有太多时间疑神疑鬼。有一技之长会使她自得其乐,很好地控制情绪。只要有一定的秉赋加勤奋,这不是问题。倒是要有一种教育的天分,能把孩子教好,似乎更重要。

12、身体健康,并懂得养生之道和基本医学常识。

13、有一点浪漫。婚姻生活是一个有颜色、有生息、有动静的世界,很难想象一个不具备浪漫、不具备情趣的女人是个好妻子。

以上13条标准,应该齐了。拥有这样的女子,纵使太阳和星月都冷了,群山草木都衰尽了,婚姻的光芒还能在记忆的最初,在任何可见和不可知的角落,温暖的燃烧着……

不是所有的粗梁都叫桂林粗梁王~

以下内容属个人心情记录,不带有指责性和埋怨性,只因确有此事而且确实发生了。
很多时候我也会觉得难过,只是大多写在便签或压在心底而已。
有时候不愿意说不是不想说,而且觉得他们应该有他们自己的生活。(原文:他们应该有他们新的生活——鲁迅)
很不愿意听见或者看见的就是,当我看了一整天的unix环境高级编程的时,晚上十一点20多分了,返回windows登录一下QQ ,然后看了下电影之后,宿舍PangZY说开黑好不好,最后两个人开黑玩了两把LOL,却被发上了群,然后被聊天式的玩笑性的批斗了一顿,主要是期间一不小心出现了个人的私事问题。最后弄得大晚上的心情低落。
我愿意说,不是代表我不知道。我玩了两局就被拿上群说,而他们却忘却了自己一天是怎么过的。撸了一整天,累了,然后躺着在床上聊天却诉说着别人此刻在玩游戏。我不知道这样是代表什么样的想法。
甚至现在依旧在L着,然而我在吃着东西看一段视频,却被指责说网络卡,10M的光线,两个人在玩LOL,我一个人在看视频,都玩了一会儿了,突然出现卡了,就问是不是在看视频。说了一句我关掉了视频之后居然还来一句你确定你关掉了?当然这并不是代表我是对的,在他们玩游戏的时候看视频,影响网速。
我想要的只是记录生活中的点滴,不想带有指责和埋怨。更不想因为这些东西而伤了同学间的感情。所以我很多时候选择记录在手机的便签或写在博客。
还忘了提一句就是:昨晚突然知道一个消息,梁太太在辅导员办公室暴走了一次。非常感谢两台太。真的谢谢你,亲你一口~

生活和社会充满着那些自己不喜欢的,但是我们在没有权利改变事实的情况下,我们应该学会适应这样的生活,适应这样的社会。

利用V4L2架构 实现从笔记本摄像头拍摄一张照片写入本地 一

一下内容实现环境:

Ubuntu 12.04+libjpeg62-dev,采用vi编写,gcc/g++编译,当然一下程序均使用Makefile统一管理。

首先第一点:           我们得明白我们的V4L2架构的基本信息:Video4linux2(简称 V4L2),是 linux 中关于视频设备的内核驱动。在 Linux 中,视频设备是设备文件,可以像访问普通文件一样对其进行读写,摄像头在/dev/video0 下,以下用到的结构提也都定义在/usr/include/linux/videodev2.h头文件下。

我们的步骤:

1. 打开设备文件。 int fd=open(”/dev/video0′′,O_RDWR);
2. 取得设备的 capability,看看设备具有什么功能,比如是否具有视频输入,或者音频输入输出等。VIDIOC_
QUERYCAP,struct v4l2_capability
3. 选择视频输入,一个视频设备可以有多个视频输入。VIDIOC_S_INPUT,struct v4l2_input
4. 设置视频的制式和帧格式,制式包括 PAL,NTSC,帧的格式个包括宽度和高度等。
VIDIOC_S_STD,VIDIOC_S_FMT,struct v4l2_std_id,struct v4l2_format
5. 开始视频的采集。VIDIOC_STREAMON
6. 出队列以取得已采集数据的帧缓冲,取得原始采集数据。VIDIOC_DQBUF
7. 将缓冲重新入队列尾,这样可以循环采集。VIDIOC_QBUF
8. 停止视频的采集。VIDIOC_STREAMOFF
9. 关闭视频设备。close(fd)

第一步:首先是要查询你笔记本的相关的摄像头信息,这里我把它做成了一个模块,用于查询摄像头的相关信息,定义一个文件:query.h 摄像头查询模块接口文件,定义三个方法:query_cap(int fd);查询摄像头参数及驱动信息,

query_fps(int fd);VIDIOC_G_PARM查询帧率信息,

query_fmt(int fd);使用VIDIOC_ENUM_FMT查询摄像头信息

下面我们分别实现这三个方法:

/**
* @brief query_cap
* 查询摄像头参数及驱动信息:打印struct v4l2_capability
* @param fd 摄像头文件描述符
*
*/
void query_cap(int fd)
{

Cap cap;
CLEAR(cap);
if(ioctl(fd,VIDIOC_QUERYCAP,&cap) < 0) //查询摄像头的功能
{
perror(“query_cap()”); //也是出错处理
exit(EXIT_FAILURE);
}
printf(“===============Camera Info===============\n”);
printf(“Driver: %s \n”,cap.driver);
printf(“Card: %s \n”,cap.card);
printf(“BusInfo: %s \n”,cap.bus_info);
printf(“Version: %d \n”,cap.version);
printf(“Capabilities: 0x%x \n”,cap.capabilities);
//printf(“Device Cap: 0x%x \n”,cap.device_caps);
//printf(“Reserved: 0x%x \n”,cap.reserved);
}

 
/**
* @brief query_fps
* 使用VIDIOC_G_PARM查询帧率信息
* @param fd
*/
void query_fps(int fd)
{
Fps fps;
CLEAR(fps);
fps.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; //设置类型
//ioctl(fd,VIDIOC_G_PARM,&fps);
if(ioctl(fd,VIDIOC_G_PARM,&fps) < 0)
{
fprintf(stderr,”Usage:query_fps:%s error\n”,strerror(errno));
exit(EXIT_FAILURE);
}
printf(“=======================Camera Fps==============\n”);
printf(“Type:%d \n”,fps.type);
printf(“Capture->capability:%d \n”,fps.parm.capture.capability);
printf(“Capture->capturemode:%d \n”,fps.parm.capture.capturemode); //1为高清模式
printf(“Capture->captureparm->timeperframe->numerator:%d \n”,\
fps.parm.capture.timeperframe.numerator); //默认为1
printf(“Capture->captureparm->timeperframe->denominator:%d \n”,\
fps.parm.capture.timeperframe.denominator); //帧率
printf(“Capture->extendedmode:%d \n”,fps.parm.capture.extendedmode);
printf(“Capture->readbuffer:%d \n”,fps.parm.capture.readbuffers);

//printf(“Capture->outputparm->\n”,fps.parm.output.);
}

 

 

/**
* @brief query_fmt
* 使用VIDIOC_ENUM_FMT查询摄像头信息
* @param fd
*/
void query_fmt(int fd)
{
Fmtd fmtd;
CLEAR(fmtd);
fmtd.index = 0;
fmtd.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
printf(“================Fmtd Info================\n”);
while(-1 != ioctl(fd,VIDIOC_ENUM_FMT,&fmtd))
{
printf(“query fmtd %d %s\n”,fmtd.index,fmtd.description);
fmtd.index++;
}
}

实现以上三个函数之后我们就可以编写一个测试函数了:cam_test.c

int main(int argc,char *argv[])
{

int fd = cam_open(argc,argv); //打开摄像头
//query_cap(fd);
//query_fps(fd);
//query_fmt(fd);

cam_close(fd);
return 0;

}

还有就是以上使用的结构体都预先定义在文件:common.h

#ifndef __COMMON_H_
#define __COMMON_H_

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>

#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <sys/time.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/mman.h>
#include <sys/ioctl.h>

#include <linux/videodev2.h>
#include <jpeglib.h>

#define CLEAR(x) memset(&x,0,sizeof(x))
typedef enum
{
MJPEG = V4L2_PIX_FMT_MJPEG,
YUYV = V4L2_PIX_FMT_YUYV
}fmt_t;
#define WIDTH 640
#define HEIGHT 480

typedef struct v4l2_capability Cap; //
typedef struct v4l2_format Fmt; //
typedef struct v4l2_fmtdesc Fmtd; //
typedef struct v4l2_streamparm Fps; //
typedef struct v4l2_requestbuffers ReqBuf; //
typedef struct v4l2_buffer Vbuf; //

#endif

1 7 8 9 10 11 20