编程语言
zengwh513
学习图像处理,音频处理,机器学习
展开
-
C++ 基础学习
C++基础知识的资源分享原创 2015-01-08 17:54:48 · 1204 阅读 · 0 评论 -
数组和链表的归并排序算法实现(C语言)
数组和链表的归并排序算法实现(C语言)原创 2015-03-05 21:11:25 · 9359 阅读 · 1 评论 -
初试linux下的Socket通信(中)
TCP/IP的三次握手四次挥手TCP通信过程包括三个步骤:建立TCP连接通道(三次握手),传输数据,断开TCP连接通道(四次挥手)。参照下图(图片来自http://www.cricode.com/3568.html) 服务器与客户端交互#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#i原创 2015-05-05 19:34:09 · 648 阅读 · 0 评论 -
判断大小端模式
1. 大端模式(Big_endian):字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。 2. 小端模式(Little_endian):字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中。原创 2015-05-07 19:42:17 · 833 阅读 · 0 评论 -
LINUX下实时录放音(OSS)—解决时延问题
如果没有强制设置buffer大小,系统默认的缓冲buffer的大小是2*4096=8192字节,其中2表示的是fragement的数量,4096是每个fragementsize的大小。系统读取音频数据之后,放音的时候,先放入缓冲buffer中,当缓冲buffer填满时,系统才会产生中断,播放音频。所以这里会存在一个延迟。原创 2015-04-30 21:12:56 · 2820 阅读 · 1 评论 -
初试Linux下的线程编程
如何创建线程Linux下一般使用POSIX线程库,也叫pthread。编写线程函数需要注意的是线程函数的返回类型必须是void*;程序编译的时候记得要链接上pthread库,方法:-lpthread简单的线程程序下面是简单的线程程序,主程序里创建了2个线程,分别打印不同的信息。每个线程用pthread_create函数来创建。每个线程运行完程序之后,必须使用pthread_join函数来等待线程结束原创 2015-05-08 09:42:28 · 797 阅读 · 0 评论 -
深入理解计算机系统学习笔记(三)之C语言常见的与存储器(内存)有关的错误
编写C程序,管理和使用虚拟存储器可能是个困难且容易出错的任务。与存储器有关的错误经常是在据错误源一段距离才表现出来。下面讨论常见的与存储器有关的错误。1. 间接引用坏指针虚拟存储器的某些区域是只读的,如果试图往这些区域写数据,程序将会以保护异常中止。 间接引用指针的常见示例是经典的scanf错误。我们用scanf从stdin读一个整数到一个变量中,常见的错误如下: scanf("%d",val原创 2015-05-26 11:05:17 · 1123 阅读 · 0 评论 -
深入理解计算机系统学习笔记(一)
程序的编译过程为了说明程序的编译过程,我们用经典的hello world程序作为例子#include <stdio.h>int main(int argc, char const *argv[]){ printf("hello world!!!\n"); return 0;}在linux系统中,我们用GCC编译器将源程序文件helloworld.c编译成可执行目标文件hello原创 2015-05-11 15:50:27 · 3192 阅读 · 0 评论 -
Linux 使用core file文件快速定位程序崩溃代码行
问题描述如果在 Linux下编写程序,有时运行程序的时候程序崩溃,比如说只有“Segmentation fault (core dumped) ”,程序比较小的话,还可以一行一行查看,但是如果程序很庞大,一行行查询,效率非常低下。Linux下可以程序可以生成core file文件,借助gdb很快能定位到崩溃的代码行。解决方案测试程序,除零操作,程序会崩溃/*test.c*/#include <原创 2015-07-26 21:47:45 · 3645 阅读 · 0 评论 -
初试linux下的Socket通信(上)
网络之间如何通信通信首要解决的问题是如何唯一标识一个进程。在本地通信中,可以通过进程PID表示唯一标识一个进程,但在网络通信是不可行的。网络通信通常由两部分组成:服务器和客户端。一个服务器将同时跟多个客户端通信,要实现这种服务器与客户端之间的交互通信,那就需要一个协议(protocol)。互联网通信有很多通信,一部分是低层协议(low-level protocols),比如是IP协议(Interne原创 2015-05-03 09:21:25 · 780 阅读 · 0 评论 -
一些简单字符串函数的实现
一些简单字符串函数的实现 strlen strcpy strcmp原创 2015-03-04 13:49:43 · 507 阅读 · 0 评论 -
内存泄漏检测
今天阿里内推电话面试,估计给跪了,其中问到一个问题就是,如何检测程序的内存泄漏问题。学生写的程序几乎比较小,没做过大型项目,所以内存泄漏问题一般情况下,肉眼都可以解决问题,直接看下哪块被malloc或new的内存,没有对应的free或delete掉。面试完,网上寻找了下答案,发现借助工具来检测非常方便而且精准。google搜索下关于这方面的资料,发现写得很不错,分享给大家,顺便标记下。强烈推荐第一篇原创 2015-07-13 20:10:21 · 737 阅读 · 0 评论 -
判断二叉树是否为平衡树
平衡二叉树给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。 先求左子树和右子树的最大深度,然后判断是否相差大于1,如果是,则不可能是,如果相差小于,继续递归调用判断左子树和右子树是否都是平衡二叉树。代码实现bool isBalanced(TreeNode *root) { // write your原创 2015-08-12 06:49:50 · 2256 阅读 · 0 评论 -
翻转二叉树(递归与非递归)
翻转一棵二叉树样例 1 1 / \ / \2 3 => 3 2 / \ 4 4递归版本先翻转左子树,后翻转右子树,然后对整个树进行翻转void swapTree(TreeNode *&root){ TreeNode *tmp = root->left; root->left = root->right原创 2015-08-12 06:47:45 · 6328 阅读 · 0 评论 -
二分查找实现
二分查找二分查找的前提是数组必须有序。这个算法据某本说,百分之九十的都会写错。编写程序需要注意的是非法输入尽量使用迭代,因为如果数组很大的话,递归有可能是栈溢出循环判断条件注意mid的求值方法,mid = ((right - left) >> 1) + left ;可以防止两个整型值相加时溢出。并注意>>运算符优先级低于+ - * / %,所以要对左移右移加括号。如果没有加括号,得出的答案是原创 2015-07-30 21:00:22 · 1052 阅读 · 0 评论 -
二叉树最大深度和最小深度
二叉树的最大深度给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的距离。如果二叉树为空,则深度为0 如果不为空,分别求左子树的深度和右子树的深度,去最大的再加1,因为根节点深度是1,要加进去。int maxDepth(TreeNode *root) { // write your code (here) if(root == NULL)原创 2015-08-12 06:50:45 · 13442 阅读 · 0 评论 -
【面试题】-二叉树
分别有求二叉树的节点个数,深度,和前序,中序,后序的递归和非递归实现#include <iostream>#include <stack>#include <queue>/* A B C D E F G H I J K*/using namespace std;#define OK 1原创 2015-06-23 21:06:04 · 674 阅读 · 0 评论 -
个人的Github代码合集
将个人在上课做过的课设和平时写的一些代码都上传至Github托管嵌入式的课设,实现的是TQ2440平台下的模拟NES游戏设计,手柄模拟通过屏幕或手机蓝牙控制。蓝牙模块是3.0的串口模块 https://github.com/willhope/NES-game-simulated-on-TQ2440 通信课设,蓝牙体重秤,蓝牙用的是3.0的串口蓝牙模块,压力传感器是HX711,网上买来一个简易的体原创 2015-04-16 21:23:43 · 1656 阅读 · 0 评论 -
算法:C语言实现(第3章 学习笔记)
软件工程实践把程序分为三个部分 接口,实现和客户程序原创 2015-03-03 20:44:20 · 610 阅读 · 0 评论 -
const常量与define宏定义的区别
转载自http://blog.csdn.net/love_gaohz/article/details/7567856(1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。(2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开。 const常量有具体的类型,在编译阶段会执行类转载 2015-03-04 10:29:55 · 578 阅读 · 0 评论 -
情景分析“C语言的const关键字”
转载自http://roclinux.cn/?p=557C语言中的const一直是C语言初学者心中的痛,这是因为const在不同位置有不同作用,在不同情景有不同角色。这让初学者摸不清头脑。今天,和大家一起研究一下const,让它的每个角色都“深入人心”!=================================================================转载 2015-03-04 10:27:21 · 534 阅读 · 0 评论 -
二维数组的动态内存分配
二维数组的动态内存分配原创 2015-03-04 15:00:29 · 1280 阅读 · 0 评论 -
分治算法例子集锦
分治算法例子集锦原创 2015-03-07 13:25:38 · 29047 阅读 · 3 评论 -
【LeetCode】Reverse Bits
【LeetCode】Reverse Bits原创 2015-03-08 20:41:16 · 597 阅读 · 0 评论 -
栈的C语言实现(链表和数组)
栈的C语言实现(链表和数组)原创 2015-03-10 16:09:43 · 1534 阅读 · 0 评论 -
树的遍历(非递归)
树的非递归遍历几种实现,C语言包括测试程序原创 2015-03-11 16:44:40 · 1289 阅读 · 0 评论 -
C 语言中的指针和内存泄漏
原文出处:IBM 原文链接:http://www.ibm.com/developerworks/cn/aix/library/au-toughgame/#fig01避免陷阱在使用 C 语言时,您是否对花时间调试指针和内存泄漏问题感到厌倦?如果是这样,那么本文就适合您。您将了解可能导致内存破坏的指针操作类型,您还将研究一些场景,了解要在使用动态内存分配时考虑什么问题。转载 2015-04-17 10:22:30 · 499 阅读 · 0 评论 -
浅谈程序优化
原文出处:过客冲冲的博客 原文链接:http://www.cnblogs.com/jcchen1987/p/4362879.html当初在学校实验室的时候,常常写一个算法,让程序跑着四处去晃荡一下回来,结果也就出来了。可工作后,算法效率似乎重要多了,毕竟得真枪实弹放到产品中,卖给客户的;很多时候,还要搞到嵌入式设备里实时地跑,这么一来真是压力山大了~~~。这期间,对于程序优化也算略知皮毛,下面就针转载 2015-04-17 09:49:14 · 873 阅读 · 0 评论 -
《算法基础》枚举——画家问题
画家问题总时间限制:1000ms内存限制:65536kB描述有一个正方形的墙,由N*N个正方形的砖组成,其中一些砖是白色的,另外一些砖是黄色的。Bob是个画家,想把全部的砖都涂成黄色。但他的画笔不好使。当他用画笔涂画第(i, j)个位置的砖时, 位置(i-1, j)、 (i+1, j)、 (i, j-1)、 (i, j+1)上的砖都会改变颜色。请你帮助Bob计算出最少需要涂画多少块砖,才能使所有砖的原创 2015-04-28 22:02:54 · 3518 阅读 · 0 评论 -
GDB调试常用命令
GDB是什么GDB(GNU Debugger)是GCC的调试工具。其功能强大,现描述如下: GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2.可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 3.当程序被停住时,可以检查此时你的程序中所发生的事。 4.动态的改变你程序的执行环境。GDB常用命令1. 获取调试信原创 2015-05-05 08:46:04 · 617 阅读 · 0 评论 -
Simple prefix compression
描述Many databases store the data in the character fields (and especially indices) using prefix compression. This technique compresses a sequence of strings A1, …, AN by the following method: if there ar原创 2015-05-06 13:37:04 · 1261 阅读 · 0 评论 -
初试linux下的Socket通信(下)
自己动手写客户端程序同样是实现上篇的功能,客户端程序不再用telnet,自己写代码实现,服务器端程序也需要修改下服务器程序#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <errno.h>#include <sys/socket.h>#include <arpa/原创 2015-05-05 20:37:39 · 676 阅读 · 0 评论 -
深入理解计算机系统学习笔记(二)之程序优化
序言写程序最主要的目的是使程序在所有可能的情况下都能正确地运行。一个运行很快但是运行结果错误的程序是没有用处的。如何编写高效的程序?首先必须选择一组合适的算法和数据结构,其次才是编写初编译器能够有效优化使得程序能够高效可执行。编译器优化现在主要的一些编译器,比如GCC,都允许程序定制优化选项,比如说编译程序的时候添加“-O1”,”-O2”和”-O3”,其中“-O1”为基本的优化,”-O2”和”-O3原创 2015-05-16 09:00:52 · 1425 阅读 · 0 评论 -
链表排序
描述给链表的结点进行排序。比如给出 1->3->2->0->null ,排序后 0->1->2->3->null。 这里介绍链表的插入排序和归并排序。链表插入排序插入排序就是已经前面N−1N-1个结点有序的情况下,将第NN个结点分别跟前面的有序结点比较,使前NN个结点仍然有序。跟数组的插入排序有所不同的是,数组是从后面开始比较,由于链表只能从前到后,所以链表插入排序是从前面依次开始比较。最主要的思想原创 2015-08-26 22:38:20 · 1237 阅读 · 0 评论