自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

谢文浩博客

纯属个人学习记录,仅供参考。

  • 博客(49)
  • 资源 (18)
  • 问答 (1)
  • 收藏
  • 关注

转载 day03

一.c++ 之父给c程序员建议   1.尽量的少使用宏     使用const  或者枚举 来表达常量值     使用inline 减少函数调用开销     使用泛型 和 模板 来刻画一组 函数 或类型   2.使用命名空间 减少命名冲突   3.变量随时用 随时定义 以保证初始化    4.尽量避免强制类型转换  类型转换一般是程序     设计问题 转换是错误的

2015-07-30 14:44:53 269

转载 day02

一.函数重载   1.1 函数重载的原理   在生成函数的调用名 c++语言不但要考虑函数       名还要考虑参数列表。而c语言只考虑函数       名 所以不能形成重载。   1.2 函数重载引入的问题      跨编译器调用问题            extern "C" 指定按照c语言的方式来生成调用的          函数名。    二.函数

2015-07-30 14:44:18 309

转载 day15

复习:1.基于UDP通信的模型1.1 概念   TCP  传输控制协议,面向连接的协议优点:在通信全程保持连接,保证数据的安全性和完整性,可     以重发数据缺点:服务器端的压力比较大,资源占用率比较高   UDP 用户数据报协议,非面向连接的协议优点:不需要保持连接,服务器压力比较小,资源占用率比   较低缺点:不保证数据的安全性和完整性

2015-07-30 14:41:42 219

转载 day14

今天内容:(1)基于UDP通信的模型(2)线程和多线程以及多线程的同步问题1.基于UDP通信的模型1.1概念TCP 传输控制协议,面向链接的协议UDP 用户数据报协议,非面向链接的协议1.2 区别(1)TCP是一种面向链接的协议,在通信的全程保持链接,优点:可以保证数据的完整性和安全性以及准确性,并且可以重发所有数据,缺点:服务器压力比较大,资源占用

2015-07-30 14:41:05 205

转载 day13

复习:1.使用信号量集进行进程间的通信1.1概念信号量是一个计数器,用于控制同时访问资源的进程数信号量集是信号量的集合,可以用于控制多种不同资源的访问问题1.2计数器的工作方式(1)初始化计数器最大值(2)如果有进程申请资源,那么计数器-1(3)当计数器为0时,停止进程对资源的申请,申请的进程进入阻塞状态(4)如果有进程释放资源,那么计数器+1(5)

2015-07-30 14:40:11 245

转载 day12

今天的内容:(1)IPC-使用信号量集进行通行(2)网络编程 -网络常识,本地通信,网络通信1.信号量集1.1概念(1)什么叫信号量?信号量就是一个计数器,用于控制同时访问资源的进程数,解决有限资源的分配问题。 (2)什么叫信号量集信号量集  信号量的集合,也就是由多个信号量组成的数组,可以同时控制多种资源的分配问题1.2 计数器的工作方式

2015-07-30 14:39:03 250

转载 day10

XSI IPC之共享内存和消息队列(有固定的套路)共享内存/消息队列/信号量集   遵循相同的规范,因此在编程上有很多共性的东西。共同点:1.XSI IPC都是系统内核管理的,叫内核结构。2.XSI IPC都由外部的key ,类型是key_t,可以定位IPC结构。3.外部key的获取方式有三种:3.1 宏IPC_PRIVATE 做key,这种方式程序员基本上不用,因

2015-07-30 14:37:45 277

转载 day09

回顾:  进程fork()  进程的退出 - 正常退出和非正常退出   正常退出: 主函数return  exit()  _Exit()   非正常退出: 信号结束  wait()和waitpid() - 父进程等待子进程的结束  进程的创建方式二: vfork() + execl()   pid_t pid = vfork();   if(pid==0){ 

2015-07-30 14:37:05 228

转载 day11

1.自我介绍  马如忠  maruzhong/ruzhong ma  小马哥/马哥    marz@tarena.com.cn2.综合项目2.1 项目名称   银行账户管理系统2.2 项目功能   开户 销户 存钱 取钱 转帐 查询余额 退出2.3 项目分析(1)采用C/S架构设计客户端:    给用户提供一个界面,让用户选择相应的功能,然后将用

2015-07-30 14:37:05 282

转载 day07

回顾:  一些文件相关函数:   lseek() - 设置文件读写的位置(偏移量)   dup() dup2() - 复制文件描述符,但不复制文件表   fcntl() - 提供一些额外的操作,包括:复制文件描述符/设置获取文件描述符的部分状态(不全)/文件锁   stat() fstat() - 获取文件在硬盘上各种数据(ls -il)   access() - 判断是否

2015-07-30 14:35:52 227

转载 day08

今天:进程结束 -fork() /退出进程/父进程等待子进程vfork() Unix/Linux 信号(信号处理)break退循环,return 退函数,exit()退进程程序员退出进程的方式:正常退出:1.在主函数中执行了return语句(特殊方式)2.exit()退进程(通用方式)    3 _exit()或_EXIT()函数退出进程(立

2015-07-30 14:35:11 243

转载 day06

回顾:  文件读写及其相关函数:   open() read() write() close()  今天:  lseek()  其他的一些文件相关函数  lseek()   off_t lseek(int fd,off_t offset,int whence)  功能:就是设置文件偏移量,确定读写的位置  参数:fd就是文件描述符     offset和

2015-07-30 14:35:02 181

转载 day05

文件和文件的读写函数(讲和练综合 重点)由于在Linux系统中,文件几乎可以代表一切,因此,操作文件的函数也可以操作其他的一些设备/东西。文件相关函数包括:文件读写函数/非读写函数标c文件读写函数:fopen() fread() fwrite() fclose()标c取文件大小的函数:fseek(SEE_END) 再调ftell()的返回值就是文件的大小标c的函数不能直

2015-07-30 14:34:25 250

转载 day04

六个函数malloc() free() sbrk() brk() mmap() munmap()文件读写函数(uc版)malloc()和free()malloc()分配的堆区内存,一次申请小块内存时,系统会映射33个内存页,如果申请大块内存(31个内存页以上),系统会映射比申请的稍多一点的内存页数。 malloc()申请内存时,除了数据占用的空间外,还需

2015-07-30 14:33:37 262

转载 day03

环境变量的库函数:getenv() -按环境变量的名取得环境变量的值setenv() -新增环境变量或修改/不改变已存在的环境变量putenv() -新增环境变量或修改已存在环境变量unsetenv() -删除一个环境变量clearenv() -全部删除环境变量Unix/Linux的内存管理(UC的真正开始)内存分配和回收的相关函数及实现关系进程的内存空间划

2015-07-30 14:32:48 276

转载 day02

静态库和共享库(动态库)c程序员的错误处理环境变量和环境表一个操作系统是非常复杂的,根据非常多的系统函数,如何管理这些系统函数?比如:函数a()究竟来自与那个.o文件?需要把这些.o文件打包,打包成静态库(.a)或者共享库(.so)。静态库和共享库的区别静态库是代码的归档,在使用静态库时是采用的复制的代码的方式。共享库是可执行文件的组成部分,在使用共

2015-07-30 14:30:48 256

转载 c编译选项

Unix系统高级编程-UC(15)Unix系统函数为主-大量的Unix系统调用Unix系统的原理-内存如何管理,进程如何设计……培养大家的动手能力-能做一些有实际意义的软件(商业开发)建议:1.多动手,多写程序,为现在招工作更方便。2.有机会一定提升自己的学历,最好28,29岁左右开始升研。UC的主要内容:1.Unix/Linux系统(了解)2.

2015-07-30 14:28:12 435

转载 函数指针

/*   函数指针演示   */#include int add(int num, int num1) {return num + num1;}int main() {int (*p_add)(int, int) = NULL;    printf("add是%p\n", add);p_add = add;printf("p_add(3, 8)是%d\n

2015-07-30 14:13:54 240

转载 动态内存分配

/*   动态分配内存演示   */#include #include int main() {//int arr[5] = {1, 2, 3, 4, 5};    /*for (num = 0;num printf("%d ", arr[num]);}printf("\n");*/    int num = 0, size = 0;    prin

2015-07-30 14:11:05 197

转载 结构体简介

/*   结构体演示   */#include #include /*struct phone {char manu[20];char model[20];float price;};typedef struct phone phone;*/typedef struct /*phone*/ {char manu[20];char model[20

2015-07-29 15:39:06 325

转载 条件编译

/*   条件编译演示   */#include int main() {//#ifdef   ONE#ifndef   TWOprintf("1\n");#elseprintf("2\n");#endifreturn 0;}/*   点菜练习   */#include int main() {int

2015-07-27 10:53:57 186

转载 宏操作

/*   宏演示   */#include #define    PI             3.14f#define    CIRCLE(r)      2 * PI * rint main() {int radius = 0;const float pi = 3.14f;printf("请输入一个半径:");scanf("%d", &radius);

2015-07-27 10:50:24 340

翻译 文件操作

/*   文件操作代码框架   */#include int main() {FILE *p_file = fopen("a.txt", "w");/*if (p_file) {//fclose(p_file);p_file = NULL;}*/if (!p_file) {return 0;}//fclose(p_file);p_fi

2015-07-24 11:21:05 222

翻译 main参数介绍

/*   主函数参数演示   */#include int main(int argc, char *argv[]) {    int num = 0;for (num = 0;num printf("%s\n", argv[num]);}return 0;}

2015-07-23 20:36:59 176

翻译 字符简介

/*   字符串演示   */#include int main() {//char str[] = "abc";//char str[3] = {'a', 'b', 'c'};//char str[3] = {'a', 'b', 'c', '\0'};char str[] = {'a', 'b', 'c', '\0'};printf("%p\n", "abc"

2015-07-22 17:21:21 237

翻译 关于指针

/*   函数作业*/#include /*void reverse(int arr[], int size) {int pos1 = 0, pos2 = size - 1;while (pos1         int tmp = arr[pos1];arr[pos1] = arr[pos2];arr[pos2] = tmp;pos1++;pos2--

2015-07-22 13:02:57 268

原创 编写一个函数将数组中的数字前后颠倒,并输出到屏幕上来。

#includevoid  func(int arr[],int size){        int i=0;        for(i;i                int temp=arr[i];                arr[i]=arr[size-i-1];                arr[size-i-1]=temp;       

2015-07-20 21:01:52 2631

翻译 递归函数简介

会调用自己的函数叫递归函数如果一个问题本身很复杂无法直接找到答案,但是它可以    被分解成几个小问题,至少有一个小问题和原来的大问题在本质上是一样的只不过简单一点。这种问题就适合采用递归方法来解决。编写递归函数的过程1.用语句描述出问题的分解方式(这时要假设递归    函数已经完成了)2.在递归函数的开头写一个分支把不可分解的情况    处理掉(这个分

2015-07-20 12:11:13 544

翻译 从键盘上得到一个1到100的数字,打印这个数字的二进制。

#includeint main(){        int num,i;        printf("input num which is in 1 to 100\n");        scanf("%d",&num);        for(i=0x80;i>=1;i>>=1){           printf("%d",(num&i)!=0);   

2015-07-15 21:46:37 567

原创 1.编写程序从键盘得到代表小时,分钟和秒的三个 整数数字,把这个时间的下一秒打印在屏幕上 hh:mm:ss

#includeint main(){        int h,m,s;        printf("input current time\n");        scanf("%d %d %d",&h,&m,&s);        if(s==59){          s=0;          if(m==59){            m=0;

2015-07-15 21:20:52 4627

转载 将一个1到127之间的数字转换成二进制

#includeint main(){        int num,base=128;        int i;        printf("input 1 to 127\n");        scanf("%d",&num);        num=num%base;        printf("%d",num/base);        bas

2015-07-15 15:29:37 1434

原创 将一个1到127之间的数字转换成二进制

#includeint main(){        int num,i=0;        int arr[8]={};        printf("please input number which is in 1 to 127\n ");        scanf("%d",&num);          for(i=0;i            arr

2015-07-15 15:16:26 1203

翻译 用c语言编写输出四个整数,这四个整数可以表示1到40之间的任意一个数字。

#includeint main(){int a,b,c,d;  //表示四个整数int n1,n2,n3,n4; //表示四个整数的系数int x,flag;for(a=1;afor(b=a+1;bfor(c=b+1;cif((d=40-a-b-c)>=c){for(flag=1,x=1;xfor(flag=0,n1=1;n1>-2;n1--)for(

2015-07-15 12:28:58 1163

转载 16.常用函数

calloc函数也可以动态分配存储区它会把分配好的存储区自动清0为了使用这个函数需要包含stdlib.h头文件这个函数需要两个参数,一个参数表示存储区    的个数,另外一个参数表示单个存储区的大小realloc函数可以调整一段已经分配好存储区的    个数函数指针可以和函数捆绑把函数的地址记录在函数指针中就实现了它们     之间的捆绑

2015-07-14 14:48:27 195

转载 15.数据类型

同类型的结构体变量之间可以直接使用赋值    操作符进行赋值结构体不适合作为函数的形式参数使用,因为    这样会造成时间和空间的浪费应该采用结构体指针作为函数的形式参数结构体可以作为函数的返回值存储区使用,但是    这样也会造成时间和空间的浪费应该使用结构体指针作为函数的返回值存储区不要把局部结构体变量的地址赋值给结构体    指针返回值存储

2015-07-14 14:47:02 239

转载 14.条件编译

宏操作符包括#和##这两个操作符都是对宏不代表数字的参数进行    处理的#操作符可以把一个参数转换成字符串字面值(在参数前后各加一个")##操作符可以把一个代表标识符的参数和其他内容合并得到一个新标识符条件编译可以在编译的时候决定哪些语句需要编译    哪些语句不需要编译条件编译是使用预处理指令实现的#ifdef/#ifndef...#el

2015-07-14 14:45:10 312

转载 13.文件指针

文件位置指针是一个整数,他用来记录下一次    对文件进行读写操作的时候开始位置到文件头之间包含多少个字节当从文件中读出n个字节或者向文件中写入n个字节    的之后文件位置指针都会自动向后移动n个字节可以在程序中使用函数察看或者修改文件位置    指针的数值ftell函数可以察看文件位置指针的数值  ftell(p_file));返回值就是当前

2015-07-14 14:44:15 347

转载 12.文件操作

可以采用如下两种方法记录多个相关    字符串1.采用二维数组   这种方法记录相关字符串会造成内容浪费      而且存储区使用不够灵活2.采用指针数组   这种方法记录相关字符串不会浪费内存而且      存储区的使用比较灵活记录普通变量地址的指针叫一级指针记录一级指针变量地址的指针叫二级指针二级指针可以和指针数组捆绑(记录第一个指针

2015-07-14 14:42:37 231

转载 11.字符介绍

数组做形式参数的时候真正的形式参数是一个指针如果在函数中不会修改指针形参所捆绑的存储区则    应该在指针形参前加const关键字任何存储区的地址都可以作为实际参数和指针形参    配合使用使用指针形式参数可以让被调用函数使用其他函数的    存储区无类型指针的一个主要用途就是作为函数的形式参数    使用指针也可以作为函数的返回值使用,

2015-07-14 14:40:37 370

转载 10.指针

3.const关键字可以用来声明不可赋值的变量   const变量只能在初始化的时候使用赋值操作符4.volatile关键字用来声明多变的变量   指针变量是一种变量,它专门用来记录地址数据地址数据的使用方法和普通数据的使用方法完全不同只要把一个存储区的地址记录在一个指针变量中就    可以通过这个指针变量找到这个存储区我们可以把通过指针变量找到的存储区叫做指针变量

2015-07-14 14:38:54 505

嵌入式常用工具-代码比较

1.代码对比工具,包含安装包和注册证书

2022-03-04

ESP8266 底层I2S 移植到米家平台

1.基于米家IOT SDK 适配底层驱动I2S

2022-03-04

摄像头底层驱动-V4L2

1.完整的项目工程,可用于摄像头的基本参数调试,比如:亮度、对比度、饱和度、色彩值、gamma值、hue值

2022-03-04

heatshrink.zip

占用的内存使用率为 (。最小 50字节) 对于某些小于字节的情况非常有用,对于许多具有 <300字节的通用案例有用。 按需递增的增量CPU使用你可以在任意微小的bites咀嚼输入数据。 这在硬实时环境中是一个有用的属性。 可以使用 static 或者动态内存分配库does对内存管理没有任何限制。 你可以免费使用,即使是商业用途。

2020-03-18

C118213_STM32L431RBT6_2017-11-22.PDF

1.本文档是属于stm32l4xx系列技术文档,文档内容涉及到外设寄存器的介绍。下载地址:https://pan.baidu.com/s/1tCDXeDYZUPk1qY57I7NBRg

2019-08-01

qt creator快速入门

《Qt Creator快速入门》作为全面介绍Qt、QtCreator和QtQuick的入门级教材,也是市面上第一套详细介绍QtCreator和QtQuick的教材。书中的内容包含了Qt基础、图形动画、多媒体、数据库、网络通信、WebKit以及QtQuick等所有基本的应用内容。

2017-11-07

制作VOC数据集的xml文件

制作VOC数据集的xml文件(一张图片可包含多个目标包围框)

2017-10-17

Unix网络编程卷2 进程通信

适合想从事于网络技术编程的人,里面详细介绍了各种通信方式,消息队列,共享内存,管道,………………………………

2017-09-27

Android 平台gdb调式工具

Android 平台gdb调式工具,调试native c层的程序。找到core segment

2017-08-15

OpenCL编程指南

OpenCL领域公认的权威著作,由OpenCL核心设计人员亲自执笔,不仅全面而深刻地解读了OpenCL规范和编程模型,而且通过大量案例和代码演示了基于OpenCL编写并行程序和实现各种并行算法的原理、方法、流程和最佳实践,以及如何对OpenCL进行性能优化,如何对硬件进行探测和调整。, 本书分为两大部分:第一部分(1~13章),从介绍OpenCL的核心思想和编写OpenCL程序的基础知识开始,对枯燥的OpenCL规范进行了深刻而系统的解读,旨在帮助读者全面、正确地理解OpenCL规范及其编程模型;第二部分(14~22章),提供了一系列经典的案例,如图像直方图、Sobel边界检测过滤器、并行实现Dijkstra单源最短路径图算法、Bullet Physics SDK中的布模拟、用快速傅里叶变换模拟海洋、光流、OpenCL与PyOpenCL结合使用,使用OpenCL完成矩阵相乘与稀疏矩阵矢量乘法等,目的是让读者通过案例熟练掌握编写复杂并行程序的方法和技巧。本书的附录收录了OpenCL规范定义的大量函数、命名常量和类型,可供程序员开发时查阅。

2017-06-15

安卓GPU Mail-T760上OpenCL加速案例

下载后采用ndk编译可直接使用

2017-06-15

arm下的neon内联函数简介

需要用到arm下的NEON技术的话,可以参考这个资料,上手快

2016-11-10

sprintf函数

sprintf函数的详细介绍,里面详细介绍了sprintf 的基本用法,非常适合初学者。

2015-07-27

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除