- 博客(112)
- 资源 (30)
- 收藏
- 关注
原创 两年系统程序员的感悟
/毕业两年,在这两年里,接触了系统和音视频,一些工作上的感悟和大家分享一下。1、嵌入式系统一个嵌入式的系统,软件开发人员通常可分为应用和系统。应用负责界面开发和策略。系统负责基本功能实现。一个大型的项目,软件部分通常都是由多个应用开发人员和多个系统开发人员配合完成的。2、系统方面指的是Linux底层的库和驱动,音视频实质上也是系统的一个子类。但音视频处理逻辑比较复杂,一般会把音
2015-03-15 14:49:02 2843 1
原创 secureCRT使用技巧
分享一下SecureCRT的几个使用技巧:1、颜色方案如图1所示,通过选项->会话选项->外观->当前颜色方案,可以设置颜色方案。图1如图2所示,在选项->会话选项->仿真,勾选了ANSI颜色,则使用ANSI颜色,所设置颜色方案会失效。图22、设置字符集如图1所示,通过选项->会话选项->外观->字符编码,可设置字符集。linux字符集一
2015-01-11 17:39:14 2875
原创 linux开发环境搭建
搭建步骤:1、安装source insight2、安装securecrt3、安装虚拟机4、安装Fedora 10(版本很老,开发无所谓)上述步骤都很简单,网上的资料到处都是。下面主要讲讲smb的搭建:参考http://blog.chinaunix.net/uid-24682564-id-2596732.html一文,搭建smb服务器后,发现两个问题:(1)smb
2015-01-04 15:28:44 2307
原创 建造模式C语言实现
【说明】建造模式的C语言实现,改写自http://blog.csdn.net/sx_wpc/article/details/7659179一文的代码。【代码清单】typedef.h#ifndef __TYPEDEF_H__#define __TYPEDEF_H__#include #include #ifdef __cplusplusextern "C" {
2013-03-10 16:25:56 3025
原创 策略模式C语言实现
【说明】策略模式的C语言实现,实现了3种排序算法的灵活切换。【代码清单】typedef.h/* Author : tandesir Time : 2013-03-09 借鉴Li XianJing部分代码, 感谢 Li XianJing 欢迎访问 http://blog.csdn.net/tandesir*/#ifndef __TYPEDEF_H__#de
2013-03-09 17:47:59 4225
原创 适配器模式C语言实现
【说明】适配器模式的C语言实现,改写自http://blog.csdn.net/sx_wpc/article/details/7688128一文的代码。【代码清单】typedef.h#ifndef __TYPEDEF_H__#define __TYPEDEF_H__#include #include #ifdef __cplusplusextern "C"
2013-03-06 16:36:29 4103 1
原创 工厂方法模式C语言实现
【说明】工厂方法模式的C语言实现,参考http://blog.csdn.net/sx_wpc/article/details/7645062一文的代码。【代码清单】typedef.h#ifndef __TYPEDEF_H__#define __TYPEDEF_H__#include #include #ifdef __cplusplusextern "C"
2013-03-05 14:41:28 3018
原创 简单工厂模式C语言实现
【说明】简单工厂模式的C语言实现,改写自http://blog.csdn.net/sx_wpc/article/details/7645062一文的代码。【代码清单】typedef.h#ifndef __TYPEDEF_H__#define __TYPEDEF_H__#include #include #ifdef __cplusplusextern "C"
2013-03-04 20:25:19 6021
原创 HTML5 Canva浏览器兼容检查
【问题描述】不是所有的浏览器都支持HTML5。编写Web代码时,若使用了HTML5元素,在不支持HTML5的浏览器中,可能会出现兼容性的问题,如页面显示混乱。为此有必要对不支持HTML5的浏览器做相应的处理。【解析】其实很简单,在 onLoad方法中引用下述方法即可:function supports_canvas() { if(!!document.createElemen
2013-01-11 14:43:02 3844 1
原创 设计模式(8)-工厂模式(Factory)
【描述】工厂模式有3种类型:简单工厂,工厂方法,抽象工厂。这3种设计模式都属于创建型的设计模式。简单工厂的工厂是具象的,没有抽象的工厂类。工厂方法,定义了一个创建对象的接口,让子类来决定具体实例化哪一个类。抽象工厂模式面对的问题是多产品等级结构的系统设计。相对于简单工厂,工厂方法和抽象工厂都定义了抽象的工厂类。工厂方法与抽象工厂的区别在于:工厂方法的“工厂”只制造单一的“产品”,而抽象工厂可以制造
2013-01-11 10:57:01 4445 3
原创 推荐几本经典计算机书籍
【说明】推荐这些书,仅仅是因为自己看过后,觉得好。希望对大家有帮助。推荐的原则是可以看懂,并且值得反复看几遍。【书籍推荐】1 C语言(1)《C与指针》推荐理由:非常基础和经典。虽然叫C与指针,但不全是讲指针。与很多C基础类书籍,如《C Plus Primer》,互补。值得看5遍的书籍。这个类型,还有几本书,如《C++沉思录》(正在看,建议去图书馆借着看,个人感觉不很易懂),建议先去
2013-01-09 10:50:04 12089 1
原创 也说MFC消息响应机制
【问题描述】MFC是C++的经典框架,基于消息响应机制。网上介绍MFC消息响应的文章很多。而我认为,是否理解MFC,有一点很重要,那就是看能否脱离界面编辑器,编写对话框的代码。本文介绍两个方面:(1)如何利用代码编写对话框;(2)消息映射如何实现。【解析】1 利用代码编写对话框先看代码:main.cpp#include "stdafx.h"#include "reso
2013-01-01 21:10:12 4371
原创 友善之臂视频监控方案源码学习(6) - 视频采集
【问题描述】在友善之臂视频监控方案源码学习(5) - 输入控制一文中,介绍了input_run完成的功能。本文结合input_run实现的视频采集线程对视频采集进行详细分析。【解析】1 涉及到的文件和目录mjpg-streamer-mini2440-read-only/start_uvc.shmjpg-streamer-mini2440-read-only/mjpg_streame
2012-12-26 10:29:29 8111
原创 友善之臂视频监控方案源码学习(5) - 输入控制
【问题描述】在友善之臂视频监控方案源码学习(4) - 数据流向一文中,对视频数据流向进行了简要阐述。本文对输入控制进行解析。【解析】1 涉及到的文件和目录mjpg-streamer-mini2440-read-only/start_uvc.shmjpg-streamer-mini2440-read-only/mjpg_streamer.cmjpg-streamer-mini24
2012-12-26 09:34:36 5375 2
原创 友善之臂视频监控方案源码学习(4) - 数据流向
【问题描述】在 友善之臂视频监控方案源码学习(1) - 架构分析一文中,对主程序架构进行了分析。其实,了解视频监控的源码,关键是了解3个问题:(1)数据从何而来;(2)数据如何处理;(3)数据往何处去。本文对数据的流向进行解析。【解析】1 shell脚本./mjpg_streamer -o "output_http.so -w ./www" -i "input_uvc.
2012-12-25 21:21:07 4528
原创 友善之臂视频监控方案源码学习(3) - 守护进程
【问题描述】在 友善之臂视频监控方案源码学习(1) - 架构分析一文中,执行过程步骤2,根据解析的参数,判断是否创建守护进程。本文对这一过程详细分析。【解析】守护进程的创建代码如下所示:/* fork to the background */ if ( daemon ) { LOG("enabling daemon mode"); daemon_mode();
2012-12-22 15:35:17 3670
原创 友善之臂视频监控方案源码学习(2) - 主程序实现细节
【问题描述】在 友善之臂视频监控方案源码学习(1) - 架构分析一文中,对程序执行的步骤简单的进行了描述,本文对该过程的一些细节进行总结。【解析】(1) 日志代码日志记录可调用syslog.h提供的syslog,closelog函数。syslog()接口定义如下:int syslog(int priority, string message); 该函数指定了优先级和日志信息。
2012-12-22 15:13:57 4181
原创 友善之臂视频监控方案源码学习(1) - 架构分析
【说明】对友善之臂的视频监控源码进行学习总结。如有错误,敬请指正。 【学习准备】1 源码:http://download.csdn.net/detail/tandesir/49159052 工具:source insight 33 Fedora 10 + gcc4.5.1 + gdb 【源码树】[tandesir@localhost ~]$ tree mjpg-
2012-12-22 14:38:47 8152 1
原创 我的面试准备
在求职中,我主要投报了软件研发和嵌入式软件研发两个职位,与各位分享一下我的面试准备。面试需要准备一下几个方面:首先,是自我介绍准备一段1分钟之内的自我介绍,包含基本的个人消息,项目信息,获奖信息等。不要太长,简历上有的尽量简练。 第二,做过的项目将自己做过的项目整理,准备两个方面:(1) 项目的内容(2) 涉及的关键技术面试时,表达力求清晰。 第三,技术
2012-12-04 18:33:05 3082
原创 我的面试经历
今年的就业形式不太好,在过去的两个月,一直处于奔波的状态。今天总算把自己签了出去。首先,要感谢家人、朋友和老师的鼓励和帮助。对自己的面试经历理了理,过去两个月,居然面了多达14家公司。不做统计,不知道有多么悲催,呵呵。这篇文章,是对自己面试的一个总结,主要包含面试中问的问题,以及自己失误的地方。第1家,是PPS-上海众源网络,嵌入式开发工程师笔试过后,获得了面试机会,PPS总共2面。第一面
2012-12-04 18:31:43 6746
原创 百度面试经历
【描述】百度投的软件研发,只面了一面,总结一下,希望对大家有帮助。【经历】首先,问的项目。然后,是现场编程。问了2个,都编不出来,只有思路。1 根据前序遍历和中序遍历,还原二叉树?(《编程之美》)2 依据层序遍历分层打印每一层,结点的数据? 【总结】投百度研发,一定要能熟练写出二叉树的常见操作。有一篇文章总结很好,推荐一下:二叉树中的那些常见的面试题如果准备不够
2012-11-28 14:07:24 3846
原创 for语句的执行顺序
【问题描述】for循环是C语言中常见的循环语句,for语句括号中的部分,其执行顺序是怎样?【解析】for语句的结构如下所示:for(初始化;条件;调整){示例语句;} 第一次顺序:初始化 ->条件->示例语句第二次顺序:调整->条件->示例语句第三次顺序:调整->条件->示例语句...以此类推。 【示例】看下面一个示例:for(i =
2012-11-23 16:05:46 8406
原创 2012年百度软件研发工程师(上海)笔试题-杭州站
【声明】此试题为记忆版本,非原题。如有出入,欢迎补充完整。【题目描述】一 简答题1 常见的哈希算法及其用途。2 OSI模型,HTTP位于模型的哪一层。3 可运行c语言程序的代码规范和运行机制。 二 算法和程序设计1 一堆苹果,如果将其3个一堆剩2个,5个一堆剩3个,7个一堆剩5个,输出N个可能的苹果个数。2 用递归法实现查找字串中字符连续重复出现的最大个数,
2012-10-20 15:16:52 3491 1
原创 进程和线程
【描述】线程和进程是一个老生常谈的话题,线程和进程的区别和优缺点有哪些?线程最多可以开多少个?【解析】1 区别 线程是CPU调度的最小单位,进程是资源分配的最小单位。进程是线程的容器,真正完成代码执行的是线程,而进程则作为线程的执行环境。在32位的Windows操作系统中,系统要为每一个进程分配私有的232=4GB的虚拟地址空间。但实际上只有2GB的空间被用户分区使用,另外2GB空间被
2012-10-15 10:28:54 4950 3
原创 DES加解密算法Qt实现
【声明】(1) 本文源码大部分源码来自:DES算法代码。在此基础上,利用Qt编程进行了改写,实现了DES加解密算法,并添加了文件加解密功能。在此对署名为bengold1979的网友表示感谢!本文是对DES算法代码一文代码的具体描述。该源码仅供学习交流,请勿用于商业目的。(2) 图片及描述图片及部分解析来自http://zh.wikipedia.org/wiki/%E8%B3%8
2012-10-07 10:14:15 17078 2
原创 AES加解密算法Qt实现
【声明】(1) 本文源码在一位未署名网友源码基础上,利用Qt编程,实现了AES加解密算法,并添加了文件加解密功能。在此表示感谢!该源码仅供学习交流,请勿用于商业目的。(2) 图片及描述除图1外,图片及部分解析来自http://zh.wikipedia.org/wiki/%E9%AB%98%E7%BA%A7%E5%8A%A0%E5%AF%86%E6%A0%87%E5%87%86。图1
2012-10-05 09:38:14 14540 1
原创 设计模式(7)-建造模式(Build)
【更新】2013-01-12,补充实例剖析。【描述】建造模式定义了处理其他对象的复杂构建的对象设计。【UML图】图11 BuildClient类提供了setBuilder()方法,设置一个建造者;2 Builder类提供了一组方法接口,BuildA()、BuildB()、BuildC();3 BuildClient类提供了build()方法,调用Builder对象的
2012-09-25 10:17:17 2379
原创 字符串处理三题之三
【更新】2012-10-02,【问题3】添加新的编程实现方法。【问题1】判断一个数是否为回文数?例如:123321是回文数,123421不是回文数。【实现代码】int isHuiwen(int num){ char *str = (char *)malloc(100); int isHuiwen = 1; char *start = itoa(nu
2012-09-24 14:38:22 1139
原创 字符串处理三题之二
【问题1】输入一个字符串,把字符串中的字母后移一个,a->b, b->c.......z->a, A->B,B->C,.......Z->A;其他内容不改变。然后输出。函数声明: void Func(char * pIn, char * pOut);【实现代码】void Func(char *pIn, char *pOut){ for(; *pIn != '\0';
2012-09-11 14:50:35 1063
原创 利用Inno Setup打包Qt程序
【更新】2012-09-14,更新示例脚本,添加可选择的创建桌面快捷方式【问题描述】Qt程序如何打包?最简单的方法是找到对应的动态链接库,然后连同程序一起打成压缩包发布(打包QT编写的应用程序)。另一种方法是编译为静态文件,作为绿色软件发布,网上介绍了相关的编译方法,比较复杂。一种方式是Windows如何打包Qt程序提供的方式。这几种方式效果不是很令人满意。还有一种就是利用InstallS
2012-09-09 16:22:08 3622
原创 字符串处理三题之一
【更新】2012-09-14,添加新的实现方法。2012-09-13,修正 问题3->实现代码。【问题1】通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。要求实现函数: void stringFilter(const char *pI
2012-09-04 16:01:30 2284
原创 冒泡排序
【说明】参考维基百科描述,重新编写了冒泡排序。源码已更新于维基百科(维基百科冒泡排序3.2部分)。此处提供源码,详细描述可参考维基百科冒泡排序,欢迎完善新版本。【代码清单】typedef.h/* Author : tandesir Time : 2012-08-21 借鉴Li XianJing部分代码, 感谢 Li XianJing 欢迎访问 http://blog
2012-08-21 13:40:27 967
原创 [未解决]《系统程序员成长计划》学习交流(6)-双链表插入浮点数
【问题描述】在做《系统程序员成长计划》一书,通用双链表的过程中,发现了一个问题,所下所述:源程序给出的测试代码如下所述:#include #include #include #include "dlist.h"DListRet print_int(void *data){ printf("%d ", (int)data); return DLIST_RE
2012-08-11 16:11:42 2685
原创 设计模式(6)-适配器模式(Apater)
【描述】适配器模式将某个对象的接口适配为另一个对象所期望的接口。【UML图】图1 Apater模式(1) 已知Apatee类,该类提供了画线的函数实现;(2) 现在用户要求绘制点,我们知道如果将画线函数起点和终点坐标取一致,实际上就相当于绘制了点。于是决定采用适配器模式将画线函数适配为画点函数。 【代码清单】apatee.h#ifndef APATEE_H#
2012-08-11 10:09:36 1764
原创 MD5算法Qt实现
【更新】2012-08-15,添加MD5应用描述。【说明】读本文之前,建议先阅读MD5算法的C++实现 一文。本文是对MD5算法的C++实现一文所述代码的Qt版本改写。主要改动是transform()函数,参考了http://zh.wikipedia.org/zh/MD5(建议阅读)提供的方法。本文主要对改动部分进行描述,感谢MD5算法的C++实现博主的辛勤付出。 【原理】*下
2012-08-10 16:12:03 6376 3
原创 C与泛型
【问题描述】泛型是一种特殊的类型,它把指定类型的工作推迟到客户端代码声明并实例化类或方法的时候进行。泛型旨在解决函数名字冲突的问题。一般认为泛型是高级语言的能力,泛型的实现一般借助高级语言的模板概念。C语言是否能实现泛型呢?答案是能,不过比高级语言困难得多。下面总结两种泛型的实现方法。【解析】编译环境:Fedora 10, gcc版本gcc4.3.21 利用函数指针实现泛型【代
2012-08-06 10:39:01 1359
原创 Qt测算程序运行时间
【问题描述】程序运行时间是编程的一项重要指标,在QT中如何测算程序的运行时间呢?【解析】测试函数#include void function(){ unsigned int i,j; double y; for(i=0;i<1000;i++) for(j=0;j<1000;j++) y=sin((
2012-08-02 10:39:42 20394 1
原创 动态内存分配小技巧
【问题描述】动态分配内存是C语言的重要组成部分,如何安全有效的进行动态内存分配呢?下面对一些技巧进行小结。【小技巧】1 安全分配内存(malloc)malloc的函数原型如下:void *malloc(size_t size);在分配内存时,常采用类似如下代码,分配25个单位的int类型内存:p = malloc(25*sizeof(int));这个代码乍看起来
2012-07-23 10:45:04 1090
原创 设计模式(5)-装饰模式(Decorator)
【描述】不修改原代码的结构,通过装饰器给代码增加新功能。【UML图】图1 UML图(1) 原始代码为Component类,提供了operation操作;(2) 装饰器为Decorator类,提供了扩展的operation功能;(3) 注意与模板模式(设计模式(1)-模板模式(Template))的区别。 【示例代码】component.h#ifndef CO
2012-07-09 15:52:48 2356
《系统程序员成长计划》源码
2012-12-10
通用双链表(开发中)
2012-08-11
MD5算法的Qt实现
2012-08-10
MD5算法Qt实现
2012-08-10
Protel2004PCB汉字插件
2009-08-08
基于Desiger6.0的单片机最小系统板设计
2009-07-30
基于EDA技术模块化设计的数字秒表
2009-07-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人