摘要:1、请你自我介绍一下你自己, 回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有,其实,企业最 希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功 的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理 企业才会相信。企业很重视一个...
阅读全文
11 2014 档案
摘要:C,C++经典问题 1 编程基础
1.1 基本概念
1.1.1 指针的理解:const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。 事实上这个概念谁都有只是三种声明方式非常相似很容易记混。 Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读。
char *c...
阅读全文
摘要:#include // void perror(const char *msg);
#include // char *strerror(int errnum);
#include //errno errno 是错误代码,在 errno.h头文件中; perror是错误输出函数,输出格式为:msg:errno对应的错误信息(加上一个换行符); strerror是通过参数 e...
阅读全文
摘要:C++中try_catch_throw的做异常处理 选择异常处理的编程方法的具体原因如下: 1、 把错误处理和真正的工作分开来; 2、 代码更易组织,更清晰,复杂的工作任务更容易实现; 3、 毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了; 4、 由于C++中的try catch可以分
阅读全文
摘要:c语言exit和return区别,在fork和vfork中使用 exit函数在头文件stdlib.h中。 exit(0):正常运行程序并退出程序; exit(1):非正常运行导致退出程序; return():返回函数,若在main主函数中,则会退出函数并返回一值,可以写为return...
阅读全文
摘要:C语言中setjmp与longjmp学习笔记 一、基础介绍 头文件:#include 原型:intsetjmp(jmp_buf envbuf) 宏函数setjmp()在缓冲区envbuf中保存系统堆栈里的内容,供longjmp()以后使用。首次调用setjmp()宏时,返回值为0,然而lo...
阅读全文
摘要:第一部分
请写出568A的线序(接触网络第一天就应该会的,只要你掐过,想都能想出来)
.网卡MAC地址长度是()个二进制位(16进制与2进制的换算关系,只是换种方式问,不用你拿笔去算) A、12 B、6 C、24 D、48
.ICMP在沟通之中,主要是透过不同的类别(Type)与代码(Code)让机器来识别不同的连线状态,请问type8名称是(),代表的...
阅读全文
摘要:计算机网络 1.网络结构
在OSI参考模型中,物理层的作用是透明的传输比特流。对等实体在一次交互作用中传送的信息单位称为协议数据单元,它包括控制信息和用户数据两部分。上下层实体之间的接口称为服务访问点(SAP),网络层的服务访问点也称为网络地址,通常分为网络号和主机号。
OSI参考模型分为:物理层、数据链路层,网络层,传输层,会话层,表示层,应用层。
物理层涉及到在信道上传输的原始比特流。数...
阅读全文
摘要:网络工程师岗位基础面试题【适用于CCNA/CCNP基础】
1: 交换机是如何转发数据包的?交换机通过学习数据帧中的源MAC地址生成交换机的MAC地址表,交换机查看数据帧的目标MAC地址,根据MAC地址表转发数据,如果交换机在表中没有找到匹配项,则向除接受到这个数据帧的端口以外的所有端口广播这个数据帧。2 简述STP的作用及工作原理.作用(1) 能够在逻辑上阻断环路,生成树形结构的拓扑;(2) 能够...
阅读全文
摘要:操作系统常见面试题及答案1. 什么是进程(Process)和线程(Thread)?有何区别? 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基...
阅读全文
摘要:C语言嵌入式系统编程修炼2008-08-19 作者:宋宝华 来源:天极网C语言嵌入式系统编程修炼之背景篇本文的讨论主要围绕以通用处理器为中心的协议处理模块进行,因为它更多地牵涉到具体的C语言编程技巧不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操...
阅读全文
摘要:linux面试题目—2 linux面试题目—2二 选择题1.关闭linux系统(不重新启动)可使用命令 B 。A Ctrl+Alt+Del B halt C shutdown -r now D reboot2.实现从IP地址到以太网MAC地址转换的命令为: C 。A ping B ifconf...
阅读全文
摘要:Linux面试题目 填空题1. 在Linux系统中,以 (文件)方式访问设备 。2. Linux内核引导时,从文件/etc/fstab 中读取要加载的文件系统。3. Linux文件系统中每个文件用i节点来标识。4. 全部磁盘块由四个部分组成,分别为引导块 、专用块 、 i...
阅读全文
摘要:/************************ Chapter3 系统类 ***********************/1. Rtx51 Tiny是如何实现任务调度,切换的? 时间片轮转,每个任务执行一定的时间退出执行下个任务如此循环。一个时间片内任务可以通过调用系统函数结...
阅读全文
摘要:嵌入式常用定义整理简述常见的嵌入式存储器和特点(4种以上)。ROM、SRAM、DRAM。根据掉电数据是否丢失,存储器可以分为RAM(随机存取器)和ROM(只读存储器),其中RAM的访问速度比较快,但掉电后数据会丢失,而ROM掉电后数据不会丢失。人们通常所说的内存即指系统中的RAM。RAM又可分为SR...
阅读全文
摘要:两道嵌入式软件工程师面试题,答对者甚少啊!1、LINUX下的Socket套接字和Windows下的WinSock有什么共同点?请从C/C++语言开发的角度描述,至少说出两点共同点。(10分,说得好的每点加5分,没有上限。精通SOCK编程者破格录用。)本题的目的就是考考应试者的SOCK功底,以及应用能...
阅读全文
摘要:嵌入式软件笔试 Chapter1 语法类 1 .volatile作用?应用场合举3例 volatile修饰的变量表示这个变量可能会被意想不到的改变,对该变量的操作将不作优化,用到该变量时都从这个变量的原始地址读取,而不是用保存在寄存器里的备份。 Volatile常用在: 1)....
阅读全文
摘要:1、 如何在C中初始化一个字符数组。这个问题看似很简单,但是我们要将最简单的问题用最严谨的态度来对待。关键的地方:初始化、字符型、数组。最简单的方法是char array[];。这个问题看似解决了,但是在初始化上好像还欠缺点什么,个人认为:char array[5]={'1','2','3','4'...
阅读全文
摘要:251.存放在磁盘上的文件( )A.既可随机访问,又可顺序访问 B.只能随机访问C.只能顺序访问 D.必须通过操作系统访问答案:A252.( )不是操作系统关心的主要问题。A.管理计算机裸机 B.设计、提供用户程序与计算机硬件系统的界面C.管理计算机系统资源 D.高级程序设计语言的编译器答案:D25...
阅读全文
摘要:1.在下列系统中,( )是实时系统。A.计算机激光照排系统 B.航空定票系统 C.办公自动化系统 D.计算机辅助设计系统答案:B2.操作系统是一种( )。A.应用软件 B.系统软件 C.通用软件 D.工具软件答案:B3.引入多道程序的目的在于( )。A.充分利用CPU,减少CPU等待时间 B.提高实...
阅读全文
摘要:操作系统习题与答案 (经典型) 第一章 引言 1.什么是计算机系统?它由哪几部分组成? 计算机系统是按用户的要求接收和存储信息,自动进行数据处理并输出结果信息的系统。计算机系统由硬件系统和软件系统组成。硬件系统是计算机系统赖以工作的实体,软件系统保证计算机系统按用户指定的要求协...
阅读全文
摘要:一、填空题 在linux系统中,以文件方式访问设备。前台起动的进程使用ctrl+c终止。安装linux系统对硬盘分区时,必须有两种分区类型:文件系统分区和交换分区。 利用gdb进行调试时,可通过step或next命令进行单步执行。 DHCP可以实现动态 IP 地址分配。 Ping命...
阅读全文
摘要:void fun() const{}; const void fun(){}; 和void const fun(){}; 的区别? const void fun(){};和void const fun(){};两个相同。 如果采用"按址传递方式"的函数返回值加const 修饰,那么函数返回值(...
阅读全文
摘要:在我们看程序的时候,通常会遇到void *的问题。尤其是void *后面跟着一个常数的时候,就更不明白了。以下是我在百度里搜出来的解释:(void*)0是把void指针指向的空间地址改为全为0,而(void*)-1就是把void指针指向的空间地址改为全为1,也就是FFFFFFFF(占4字节即32位)...
阅读全文
摘要:C语言标准定义的32个关键字 关键字 意 义 auto 声明自动变量,缺省时编译器一般默认为auto int 声明整型变量 double 声明双精度变量 long 声明长整型变量 char 声明字符型变量 float...
阅读全文
摘要:第一篇:typedef struct与struct的区别1. 基本解释typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确...
阅读全文
摘要:volatile表示编译器不要优化代码 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1) 并行...
阅读全文
摘要:static法则: A、若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度; B、若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度; C、设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,...
阅读全文
摘要:sizeof用法 用法 sizeof(类型说明符,数组名或表达式); 或 sizeof 变量名 1. 定义: sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。 MSDN上的解释为: The sizeof ...
阅读全文
摘要:C语言void关键字的深刻含义1.概述 本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 void几乎只有...
阅读全文
摘要:Extern用法用例子给你示范 // 1.cpp int x = 10; // 2.cpp 注意没有包含1.cpp #include using namespace std; extern int x;int main () { cout void print() { std::cout us...
阅读全文
摘要:(1)可以定义 const 常量(2)const 可以修饰函数的参数、返回值. 详细内容:1、什么是const? 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:)2、为什么引入const?const 推出的初始目的,正是为了取代...
阅读全文
摘要:attribute 用法摘要: 在学习linux内核代码及一些开源软件的源码(如:DirectFB),经常可以看到有关__attribute__的相关使用。本文结合自己的学习经历,较为详细的介绍了__attribute__相关语法及其使用。 --------------------------...
阅读全文
摘要:1. 增加restrict指针 C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借助restrict指针表达式才能访问对象。restrict指针指针主要用做函数变元,或者指向由malloc()函数所分配的内存变量。restrict数据类型不改变...
阅读全文
摘要:循环(迭代)与递归的区别1. 递归算法与迭代算法的设计思路区别在于:函数或算法是否具备收敛性,当且仅当一个算法存在预期的收敛效果时,采用递归算法才是可行的,否则,就不能使用递归算法。 当然,从理论上说,所有的递归函数都可以转换为迭代函数,反之亦然,然而代价通常都是比较高的。 ...
阅读全文
摘要:4)程序设计入门--时间概念 前言:Linux下的时间概念 这一章我们学习Linux的时间表示和计算函数 时间的表示 时间的测量 计时器的使用 1。时间表示 在程序当中,我们经常要输出系统当前的时间,比如我们使用date命令 的输出结果.这个时候我们可以使用下面两个函数 #include ; tim...
阅读全文
摘要:5)Linux程序设计入门--信号处理Linux下的信号事件 前言:这一章我们讨论一下Linux下的信号处理函数. Linux下的信号处理函数: 信号的产生 信号的处理 其它信号函数 一个实例 1。信号的产生 Linux下的信号可以类比于DOS下的INT或者是Windows下的事件.在有一个信号发生...
阅读全文
摘要:6)Linux程序设计入门--消息管理 前言:Linux下的进程通信(IPC) Linux下的进程通信(IPC) POSIX无名信号量 System V信号量 System V消息队列 System V共享内存 1。POSIX无名信号量 如果你学习过操作系统,那么肯定熟悉PV操作了.PV操作是原子 ...
阅读全文
摘要:2)Linux程序设计入门--进程介绍 Linux下进程的创建 前言: 这篇文章是用来介绍在Linux下和进程相关的各个概念.我们将会学到: 进程的概念 进程的身份 进程的创建 守护进程的创建 1。进程的概念 Linux操作系统是面向多用户的.在同一时间可以有许多用户向操作系统发出各种命 令.那么操...
阅读全文
摘要:3)Linux程序设计入门--文件操作Linux下文件的操作 前言: 我们在这一节将要讨论linux下文件操作的各个函数. 文件的创建和读写 文件的各个属性 目录文件的操作 管道文件 1。文件的创建和读写 我假设你已经知道了标准级的文件操作的各个函数(fopen,fread,fwrite等等).当然...
阅读全文
摘要:1)Linux程序设计入门--基础知识Linux下C语言编程基础知识 前言: 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将 会学到以下内容: 源程序编译 Makefile的编写 程序库的链接 程序的调试 头文件和系统求助 1.源程序的编译 在Linux下面,如果要...
阅读全文
摘要:8)Linux程序设计入门--线程操作前言:Linux下线程的创建 介绍在Linux下线程的创建和基本的使用. Linux下的线程是一个非常复杂的问题,由 于我对线程的学习不时很好,我在这里只是简单的介绍线程的创建和基本的使用,关于线 程的高级使用(如线程的属性,线程的互斥,线程的同步等等问题)可以...
阅读全文
摘要:8)Linux程序设计入门--网络编程 Linux系统的一个主要特点是他的网络功能非常强大。随着网络的日益普及,基于网络的 应用也将越来越多。 在这个网络时代,掌握了Linux的网络编程技术,将令每一个人处 于不败之地,学习Linux的网络编程,可以让我们真正的体会到网络的魅力。 想成为一 位真正的...
阅读全文
摘要:地址转换:aton\atoa,ascii,network,32bit与ascii转换大端小端转换字节充转换:htons\htonl\htohs\ntohl.网络序与主机序转换。主机名转换为IP地址:struct hostent *gethostbyname(const char *hostname)...
阅读全文
摘要:port常用和不常用端口一览表 2016年07月22日 13:52:46 阅读数:14213 2016年07月22日 13:52:46 阅读数:14213 阅读数:14213 1 tcpmux tcp port service multiplexer 传输控制协议端口服务多路开关选择器2 compr
阅读全文
摘要:面向过程和面向对象简介一 、面向过程与面向对象的区别: 前者是一种谓语和宾语的关系;后者是一种主语和谓语的关系 。 二、面向对象的三个特征: 封装 继承 多态 三、类与对象: 对象又称作实例,是实际存在的该类事物的每个个体。类是对某一类事物的描述,是抽象的、概念上的 定义。 面向对象的设计的...
阅读全文
摘要:返回总目录 Microsoft Visual C++ 6.0 预处理器参考手册
目录引言.......................................................................................................................3
特殊术语.............................
阅读全文
摘要:VC 编译命令开关 vc可以可以通过Settings -->Project-->C/C++-->Customize来设置这个编译开关 /C:在预处理输出中保留注释语句/c:只编译,不连接,相当于在"Build"菜单下选择了"Com...
阅读全文
摘要:1回顶部 热门文章:C++中extern “C”含义深层探索 编程实现盗2005版QQ源码 1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技...
阅读全文
摘要:经常遇到一些刚接触Linux的新手会问内存占用怎么那么多?在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然。这是Linux内存管理的一个优秀特性,在这方面,区别于Windows的内存管理。AD:2014WOT全球软件技术峰会北京站 课程视频发布经常遇...
阅读全文
摘要:摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存地使用方法。力求从外自内、水到渠成地引导网友分析Linux地内存管理与使用。在本章最后我们给出一个内存映射地实例,帮助网友们理解内核内存管理与用户内存管理之间地关系,希望大家最终...
阅读全文
摘要:明晰C++内存分配的五种方法的区别在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不...
阅读全文
摘要:运动图像检测系统:准备:移植Linux2.6.29运行于s3c2440板子上,按键驱动,USB host controller驱动声卡驱动动态链接文件系统制作SDK-MOTION/src/fs/rootfs-motion.tar.gzmadplay播放器移植图像运动检测程序设计报警主程序设计1.当移...
阅读全文
摘要:六.套接字(socket)socket也是一种进程间的通信机制,不过它与其他通信方式主要的区别是:它可以实现不同主机间的进程通信。一个套接口可以看做是进程间通信的端点(endpoint),每个套接口的名字是唯一的;其他进程可以访问,连接和进行数据通信。 套接口(socket)编程是实现Linux系...
阅读全文
摘要:五.共享内存(shared memory)共享内存映射为一段可以被其他进程访问的内存。该共享内存由一个进程所创建,然后其他进程可以挂载到该共享内存中。共享内存是最快的IPC机制,但由于linux本身不能实现对其同步控制,需要用户程序进行并发访问控制,因此它一般结合了其他通信机制实现了进程间的通信,例...
阅读全文
摘要:四.消息队列(Message Queue)消息队列就是消息的一个链表,它允许一个或者多个进程向它写消息,一个或多个进程向它读消息。Linux维护了一个消息队列向量表:msgque,来表示系统中所有的消息队列。消息队列克服了信号传递信息少,管道只能支持无格式字节流和缓冲区受限的缺点。消息队列用于运行于...
阅读全文
摘要:三.信号(Signal)信号是Unix系统中使用的最古老的进程间通信的方法之一。操作系统通过信号来通知某一进程发生了某一种预定好的事件;接收到信号的进程可以选择不同的方式处理该信号,一是可以采用默认处理机制—进程中断或退出,一是忽略该信号,还有就是自定义该信号的处理函数,执行相应的动作。内核为进程生...
阅读全文
摘要:二.信号量(semophore)信号量是一种计数器,可以控制进程间多个线程或者多个进程对资源的同步访问,它常实现为一种锁机制。实质上,信号量是一个被保护的变量,并且只能通过初始化和两个标准的原子操作(P/V)来访问。(P,V操作也常称为wait(s),signal(s))semaphore 与mut...
阅读全文
摘要:Linux下的进程通信手段基本上是从UNIX平台上的进程通信手段继承而来的。而对UNIX发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间的通信方面的侧重点有所不同。前者是对UNIX早期的进程间通信手段进行了系统的改进和扩充,形成了"system...
阅读全文
摘要:Linux下的进程通信手段基本上是从UNIX平台上的进程通信手段继承而来的。而对UNIX发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间的通信方面的侧重点有所不同。前者是对UNIX早期的进程间通信手段进行了系统的改进和扩充,形成了“system...
阅读全文
摘要:安全文件传输系统组成:客户端:用户登录,上传文件,下载文件,浏览文件列表服务器:用户登录,服务器配置,多线程管理,上传下载管理,系统日志协议:自定义传输协议要求:1.系统要求必须支持将每个文件数据进行存储2.客户端支持从服务器中获取文件的元数据3.服务端要求是必须多线程的,能够允许多个客户同时连接4...
阅读全文
摘要:分四部分:按键驱动,声卡驱动,Madplay播放器移植,MP3主播放器处理按键1:播放,按键2:停止,按键3:上一曲,按键4:下一曲UA1341内核自带声卡驱动1.解压内核: tar zxvf linux.2.6.29.tar.gz2.清理中间件,配置文件:cd linux-linux2.6.29;...
阅读全文
摘要:C语言的对象化模型面向对象的特征主要包括:.封装,隐藏内部实现.继承,复用现有代码.多态,改写对象行为采用C语言实现的关键是如何运用C语言本身的特性来实现上述面向对象的特征。1.1 封装封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,...
阅读全文
摘要:由usb摄像头驱动,h264编码库,采集read_video,传输,客户端显示组成读取摄像头数据缓冲区是否有帧数据收到,有数据收到就读取数据并进行H264编码,把数据发送到socket发送到客户端。配置内核:make menuconfig ARCH=arm, 选择gerneral setup-->m...
阅读全文
摘要://进程通信,消息的发送和接收//client.c#include #include #include #include #include #include #include #include #include #include #include #include #include #include...
阅读全文
摘要://进程通信,共享存储区#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #in...
阅读全文
摘要://signaltest.c// 子线程阻塞,等待信号,然后输出字符串// 主线程从键盘录入字符,给子线程发信号。#include #include #include #include #include pthread_t tid;sigset_t set;void myfunc(){ pri...
阅读全文
摘要:client_thread.c#include #include #include #include #include #include int main(int argc,char *argv[]){ int connect_fd; int ret; char snd_buf[1...
阅读全文
摘要:#include "stdio.h"#include "stdlib.h"#include "string.h"#include "net/if.h"#include "arpa/inet.h"#include "linux/sockios.h"int main(int argc,char *arg...
阅读全文
摘要:#include #include #include #include void flush(FILE *stream);int main(void){ FILE *stream; char msg[] = "This is a test"; /* create a file */...
阅读全文
摘要:#include#includeint main(int argc,char *argv[]) { int ch; opterr=0; while((ch=getopt(argc,argv,"a:b:c:d:e:"))!=-1) { printf("\n\n\n"); ...
阅读全文
摘要:#include #include #include int main(void){ time_t timer;//time_t就是long int 类型 struct tm *tblock; //time()获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数...
阅读全文
摘要:#include #include #include #include #include #include #include #include #include #include #define SERVER_PORT 8888 #define MAX_BUF_SIZE 1024 void udpc...
阅读全文
摘要:#include #include #include #include #include #include #include #include #define portnumber 3333int main(int argc, char *argv[]) { int sock...
阅读全文
摘要:typedef unsigned int size_t; void * my_memcpy ( void *dest, const void *src, size_t num ) { void* ret = dest; while (num--) { *...
阅读全文
摘要://将源字符串加const,表明其为输入参数char*strcat(char*strDest,constchar*strSrc){//后文returnaddress,故不能放在assert断言之后声明addresschar*address=strDest;assert((strDest!=NULL)...
阅读全文
摘要:char* strchr(char*s,charc){while(*s!='\0'&&*s!=c){++s;}return*s==c?s:NULL;}// strchr.c查找字符串s中首次出现字符c的位置#include#includechar* my_strchr(const char *s1,...
阅读全文
摘要:char * strdup(char *str) { char * strNew; assert(str != NULL); strNew = (char *)malloc(strlen(str)+1); strcpy(strNew,str); return strNew;} ...
阅读全文
摘要:#include#includeint my_strlen(const char* strDest){ assert(NULL!=strDest); if('\0'==*strDest) return 0; else return(1+my_strlen...
阅读全文
摘要:#includechar *my_strncpy(char *dest,char *src,int n){ int i; for(i=0;i<n && src[i]!='\0';i++) dest[i] = src[i]; for(;i<n;i++) ...
阅读全文
摘要:#include#includeint main(){char buf[512],sztime1[16],sztime2[16];sscanf("123456 ", "%s", buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!printf("%s\n", buf)...
阅读全文
摘要:#include#includeint my_strcmp(const char*a,const char*b){ while(*a&&*b&&*a==*b) a++,b++; if(*a&&*b) return(*a-*b); else if(*a&&...
阅读全文
摘要:// strstr.c查找完全匹配的子字符串#include#includechar *my_strstr(const char *s1,const char *s2){ const char *p=s1; const int len=strlen(s2); for(;(p=str...
阅读全文
摘要:本文转载 《高效程序员的45个习惯》一书 目录第1章 敏捷---高效软件开发之道第2章 态度决定一切1.做事2.欲速则不达3.对事不对人4.排除万难,奋勇前进第3章 学无止境5.跟踪变化6.对团队投资7.懂得丢弃8.打破沙锅问到底9.把握开发节奏第4章交付用户想要的软件10.让客户做决定11.让...
阅读全文
摘要:实现:char *strcpy(char *strDestination,const char *strSource){assert(strDestination!=NULL && strSource!=NULL);char *strD=strDestination;while ((*strDest...
阅读全文
摘要:1. C语言变量主要分为全局变量、静态全局变量、局部变量、静态局部变量和寄存器变量。其中静态变量用static关键字进行修饰。程序所占用的内存可以分为以下几个部分:(1)代码段-存放程序代码,只读的,不能修改。(2)全局区(静态区),又称为数据段。其中.data段存放的是已经初始化的全局变量和静态变...
阅读全文
摘要:1.写出正面程序支行结果:#includeusing namespace std;void func(int a){ static int c = a; c++; cout using namespace std;class A{public: virtual void fu...
阅读全文
摘要:这几个月来,大部分业余时间,都花在阅读软件工程和编译原理方面的书籍上了。软件工程方面的书,包括软件需求、风险管理、敏捷建模,系统设计,软件项目管理,还有一些类似于的沉思录书籍等。 在这些书中,都只是讲了如何让项目健康发展,最后成功的提交一个产品。尽管它们都是从不同的角度,用不同的方法去完成同样的事。...
阅读全文
摘要:Vim global命令和重复操作 Vim global命令允许我们在某个指定模式的所有匹配行上运行可执行的 Ex 命令,缩写形式为 :g,其处理重复工作的效率极高。 一、Vim global命令介绍 Vim global命令形式为 :[range]g[lobal][!]/{pattern}/[cm
阅读全文
摘要:1 前言 数年前,曾经开发过一个嵌入式的产品,如今市场依然存在,但由于电子产品的升级换代很快,许多元器件都采购不到了,为了延续产品的生命周期,计划在linux平台上开发新的版本。而在linux上的GUI上成了大问题,最开始有用Minigui的打算,也同飞漫公司联系过,但费用我这里无法承受。(Minigui作为国产优秀的嵌入式GUI,如果不是费用的问题,应该是最优的选择。) QT我也看...
阅读全文
摘要:让QT/Embedded支持国际化 环境配置: Qt/Embedded 3.3.8 ,在主机和目标板上存放路径都为:/root/qt-embedded-free-3.3.8 Qt/X11 3.3 (主要用到其中的lupdate,lrelease和lingust工具) 1、修改并重新编译应用程序,使之支持I18N 编辑程序入口文件,在QApplication对象声明之后添加: Q...
阅读全文
摘要:嵌入式工具Qt的安装与使用 摘要 Qt是Trolltech公司的一个产品。Trolltech是挪威的一家软件公司,主要开 发两种产品:一种是跨平台应用程序界面框架;另外一种就是提供给做嵌入式Linux开发的应用程序平台,能够应用到PDA和各种移动设备上。Qt和 Qtopia分别是其中具有代表性的两个。(2004-05-05 10:52:14) ----------------------...
阅读全文
摘要:为什么要损耗平衡(wear-leveling)? Flash上的每一位(bit)可以被写操作置成逻辑0。 可是把逻辑 0 置成逻辑 1 却不能按位(bit)来操作,而只能按擦写块(erase block)为单位进行擦写操作。一般来说,“NOR flash擦写块的大小是128K,Nand flash擦写块的大小是8K”【2】。从上层来看,擦写所完成的功能就是把擦写块内的每一位都重设置(reset)...
阅读全文
摘要:u-boot的nand flash驱动有两个版本,似乎是以u-boot1.1.5为分界点的,之前的版本使用的是自己写的nand flash驱动,而后面的版本使用的是linux内核中nand flash的驱动。这两个版本有可能在同一个u-boot中存在,都存放在 driver目录下面,一个为nand,一个为nand_legacy,意思为传统的nand flash驱动。两者使用一个宏开关 CFG_N...
阅读全文
摘要:问题:pcf8563 RTC设备驱动不能被正常的加载!问题分析过程。 问题在下午得到解决,虽然解决的办法比较笨,采用的是不断的使用printk来跟踪rtc-8563驱动的加载的过程,以及iic模块的工作过程。 曾经想过将内核的DEBUG打开,打开的方法在/linux2.6.21/include/linux/device.h文件中搜索DEBUG,这样的话,设备的所有的操作的debug信息都会输...
阅读全文
摘要:MiniGUI ial 移植指南 2.1 ial的定义 ial是一个通用的抽象输入接口,可以输入统一的数据的结构,也就是说在MiniGUI的核心代码里输入的数据的格式是固定的,不管输入设备是鼠标 还是触摸屏。简单地讲, 就是不管MiniGUI移植到什么操作系统之上,ial在MiniGUI中的代码是相同的,只需重新写入ial接口到操作系统设备之间的代码,这也就是所 谓的移植,这个类似与操作系统以下...
阅读全文
摘要:minigui一共有两个版本:商业版(2.0.4)和GPL版(1.6.10),问了一下飞漫软件,使用商业版前期的费用是9万,有技术支持,包括5000个licenses的费用,后期10K的量的话,每个licenses要6块,50K的话,就是4块,如果用GPL版的话,就没有前期的费用,只有licenses的费用,老板想了一下,我们还是使用开源版,其实我要是老板的话,我就用商业版,出产品快阿...
阅读全文
摘要:字符测试篇isalnumisalphaisasciiiscntrlisdigitisgraphisislowerisprintisspaceispunctisupperisxdigit字符串转换篇atofatoiatolgcvtstrtodstrtolstrtoultoasciitolowertou...
阅读全文
摘要:bcmp(比较内存内容)相关函数bcmp,strcasecmp,strcmp,strcoll,strncmp,strncasecmp表头文件#include定义函数int bcmp ( const void *s1,const void * s2,int n);函数说明bcmp()用来比较s1和s2...
阅读全文
摘要:abs(计算整型数的绝对值)相关函数labs, fabs表头文件#include定义函数int abs (int j)函数说明abs()用来计算参数j的绝对值,然后将结果返回。返回值返回参数j的绝对值结果。范例#ingclude main(){int ansert;answer = abs(-12)...
阅读全文
摘要:asctime(将时间和日期以字符串格式表示)相关函数time,ctime,gmtime,localtime表头文件#include定义函数char * asctime(const struct tm * timeptr);函数说明asctime()将参数timeptr所指的tm结构中的信息转换成真...
阅读全文
摘要:atof(将字符串转换成浮点型数)相关函数atoi,atol,strtod,strtol,strtoul表头文件#include 定义函数double atof(const char *nptr);函数说明atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,...
阅读全文
摘要:getopt(分析命令行参数)相关函数表头文件#include定义函数int getopt(int argc,char * const argv[ ],const char * optstring);函数说明getopt()用来分析命令行参数。参数argc和argv是由main()传递的参数个数和内...
阅读全文
摘要:getenv(取得环境变量内容)相关函数putenv,setenv,unsetenv表头文件#include定义函数char * getenv(const char *name);函数说明getenv()用来取得参数name环境变量的内容。参数name为环境变量的名称,如果该变量存在则会返回指向该内...
阅读全文
摘要:accept(接受socket连线)相关函数socket,bind,listen,connect表头文件#include#include定义函数int accept(int s,struct sockaddr * addr,int * addrlen);函数说明accept()用来接受参数s的soc...
阅读全文
摘要:alarm(设置信号传送闹钟)相关函数signal,sleep表头文件#include定义函数unsigned int alarm(unsigned int seconds);函数说明alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数second...
阅读全文
摘要:isalnum(测试字符是否为英文或数字)相关函数isalpha,isdigit,islower,isupper表头文件#include定义函数int isalnum (int c)函数说明检查参数c是否为英文字母或阿拉伯数字,在标准c中相当于使用“isalpha(c) || isdigit(c)”...
阅读全文
摘要:calloc(配置内存空间)相关函数malloc,free,realloc,brk表头文件#include 定义函数void *calloc(size_t nmemb,size_t size);函数说明calloc()用来配置nmemb个相邻的内存单位,每一单位的大小为size,并返回指向第一个元素...
阅读全文
摘要:endgrent(关闭组文件)相关函数getgrent,setgrent表头文件#include#include定义函数void endgrent(void);函数说明endgrent()用来关闭由getgrent()所打开的密码文件。返回值附加说明范例请参考getgrent()与setgrent(...
阅读全文
摘要:atexit(设置程序正常结束前调用的函数)相关函数_exit,exit,on_exit表头文件#include定义函数int atexit (void (*function)(void));函数说明atexit()用来设置一个程序正常结束前调用的函数。当程序通过调用exit()或从main中返回时...
阅读全文
摘要:crypt(将密码或数据编码)相关函数getpass表头文件#define _XOPEN_SOURCE#include定义函数char * crypt (const char *key,const char * salt);函数说明crypt()将使用Data Encryption Standard...
阅读全文
摘要:access(判断是否具有存取文件的权限)相关函数stat,open,chmod,chown,setuid,setgid表头文件#include定义函数int access(const char * pathname,int mode);函数说明access()会检查是否可以读/写某一已存在的文件...
阅读全文
摘要:clearerr(清除文件流的错误旗标) 相关函数 feof 表头文件 #include 定义函数 void clearerr(FILE * stream); 函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标。 返回值 fclose(关闭文件) ...
阅读全文
摘要:文件操作篇closecreatdupdup2fcntlflockfsynclseekmkstempopenreadsyncwriteclose(关闭文件)相关函数open,fcntl,shutdown,unlink,fclose表头文件#include定义函数int close(int fd);函数...
阅读全文
摘要:嵌入式linux应用程序调试方法四 内存工具 174.1 MEMWATCH 174.2 YAMD 224.3 Electric Fence 24五 C/C++代码覆盖、性能profiling工具 245.1 用gcov来测试代码覆盖率 255.2 使用gprof来...
阅读全文
摘要:version control system: git/hg/subversion/cvs/clearcase/vsssoftware configruation management: daily build/smoke test/auto test代码集成CI: Cruis...
阅读全文
摘要:1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。...
阅读全文
摘要:如何记录linux终端下的操作日志 在linux终端下,为方便检查操作中可能出现的错误,以及避免屏幕滚屏的限制,我们可以把操作日志记录下来。常用的工具有 screen,script,以及tee等,通过yum install安装。 1. screen — screen manager with V...
阅读全文
摘要:1.启动安装在 VirtualBox 中的 CentOS 5.5 虚拟机,点击“设备” => “安装增强功能”。这个时候你就可以看到有一个“光盘”已经挂载到 CentOS 5.5 的桌面上了。它包含了安装 VirtualBox 客户端增强功能的组件。注意:通常情况下我们直接运行挂载到系统中的 Vir...
阅读全文
摘要:strlen与sizeof的区别1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。 该类型保证能容纳实现所建立的最大对象的字节大小。2.sizeof是算符,strlen是函数。3.sizeof可以用类型做参数,strlen只能用char*做参数...
阅读全文
摘要:C/C++嵌入式开发面试题预处理器(Preprocessor)1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语...
阅读全文
摘要:inline大学在教科书上学习过inline函数,定义为inline函数之后,会省去函数调用的开销,直接嵌套汇编代码,取代函数调用,提高效率。工作后项目中也很少用到inline来定义函数,近几天在研读google的google c++ style guide,发现之前自己对inline函数的认识太过...
阅读全文
摘要:C语言常常让人觉得它所能表达的东西非常有限。它不具有类似第一级函数和模式匹配这样的高级功能。但是C非常简单,并且仍然有一些非常有用的语法技巧和功能,只是没有多少人知道罢了。指定的初始化很多人都知道像这样来静态地初始化数组:1int fibs[] = {1, 1, 2, 3, 5};C99标准实际上支...
阅读全文
摘要:预处理器标识#error的目的是什么啊?指令 用途 # 空指令,无任何效果 #include 包含一个源代码文件 #define 定义宏 #undef 取消已定义的宏 ...
阅读全文
摘要:在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器...
阅读全文
摘要:如何优化C语言代码(程序员必读)5、减少运算的强度可以使用运算量小但功能相同的表达式替换原来复杂的的表达式。如下:(1)、求余运算。 a=a%8;可以改为: a=a&7;说明:位操作只需一个指令周期即可完成,而大部分的C编译器的“%”运算均是调用子程序来完成,代码长、执行速度慢。通常,只...
阅读全文
摘要:柔性数组成员柔性数组1、允许结构中包含一个大小可变的数组,sizeof返回的这种结构大小不包括柔性数组的内存。2、包含柔性数组成员的结构要使用malloc()函数进行内存的动态分配。分配的内存大于结构体的大小。3、柔性数组的定义typedef strcut type{ int i; int a[];...
阅读全文
摘要:常用数据类型对应字节数:这两台机器,前者32位,后者64位,测试了以下数据类型的长度:前者:int:4,long:4,long long:8后者:int:4,long:8,long long:8不是说int会变吗,为何变得是long?还有如果要写个通用的程序,订死必须用4个或8个字节的数据类型,在不...
阅读全文
摘要:不明白的sizeof(enum)数据结构存储问题typedef struct weekday_st{ enum week {sun=123456789,mon,tue,wed,thu,fri,sat,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,...
阅读全文
摘要:union 关键字的用法与struct 的用法非常类似。union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址。例子如下:union StateMachi...
阅读全文
摘要:python——获取数据类型 在python中,可使用type()和isinstance()内置函数获取数据类型 如: (1)type()的使用方法: >>> a = '230' >>> type(a) <class 'str'> >>> a = 230 >>> type(a) <class 'in
阅读全文
摘要:字符串、字符数组输入、输出与'\0'的问题原创首发,欢迎转载!作者按字符串、字符数组以"%s"格式输入时,以遇到'空格'为这个字符串输入结束。字符串、字符数组以"%s"格式输出时,以遇到的第一个'\0'为输出结束标记!C程序设计(谭浩强,第二版,P134)**********************...
阅读全文
摘要:C语言编程规范6 函数与过程6.1 函数的功能与规模设计函数应当短而精美,而且只做一件事。不要设计多用途面面俱到的函数,多功能集于一身的函数,很可能使函数的理解、测试、维护等变得困难。6.2 函数的返回值(1)对于函数的返回位置,尽量保持单一性,即一个函数尽量做到只有一个返回位置。(单入口单出口)。...
阅读全文
摘要:内核时注意到有些函数会有添加__attribute__((unused)),在gcc手册中找到了有关的解释:unused:This attribute, attached to a function, means that the function is meant to be pos...
阅读全文
摘要:在c++中,为了解决一些频繁调用的小函数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数。 可能说到这里,很多人还不明白什么是栈空间,其实栈空间就是指放置程序的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,如果频繁大量的使用就会造成因栈空间不足所造...
阅读全文
摘要:UNICODE,GBK,UTF-8区别UNICODE,GBK,UTF-8区别简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的,同一个汉字,那三个码值是完全不一样的.如"汉"的uncode值与gbk就是不一样的,假设u...
阅读全文
摘要:Pandas pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。 >>> from pandas import Seri
阅读全文
摘要:通常的技巧是使用一个指针: int x = 1; if(*(char *)&x == 1) printf("little-endian\n"); else printf("big-endian\n");或者一个union: union { int i; char c[si...
阅读全文
摘要:什么是结构体? 简单的来说,结构体就是个能够包含不同数据类型的一个结构,他是一种能够自己定义的数据类型,他的特点和数组主要有两点不同,首先结构体能够在一个结构中声明不同的数据类型,第二相同结构的结构体变量是能够相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,他本身不是数据类型(而...
阅读全文
摘要:读书笔记之:C语言深度剖析《C 语言深度解剖》这本书是一本“解开程序员面试笔试的秘密”的好书。作者陈正冲老师提出“以含金量勇敢挑战国内外同类书籍”,确实,这本书中的知识点都是一些在面试中常见的考点,并且很多都是我们平常不注意的点,对于我们深入理解C语言确实很有帮助。第1章关键字1.register虽...
阅读全文
摘要:启动一个C语言程序时,操作系统环境负责打开三个文件,并将这3个文件的指针提供给该程序。这3个文件分别为标准输入(stdin)、标准输出(stdout)、标准错误(stderr)。它们在stdio.h中声明,大多数环境中,stdin指 ...启动一个C语言程序时,操作系统环境负责打开三个文件,并将这3...
阅读全文
摘要:#line 的作用是改变当前行数和文件名称,它们是在编译程序中预先定义的标识符命令的基本形式如下: #line number["filename"]其中[]内的文件名可以省略。例如: #line 30 a.h其中,文件名a.h 可以省略不写。这条指令可以改变当前的行号和文件名,例如上面的这条预处理指...
阅读全文
摘要:C++常用排序法研究2008-12-25 14:38首先介绍一个计算时间差的函数,它在头文件中定义,于是我们只需这样定义2个变量,再相减就可以计算时间差了。函数开头加上 clock_t start = clock();函数结尾加上 clock_t end = cloc...
阅读全文
摘要:今天去翻了下C语言运算符的优先级和结合性,发现当初学习的时候就没认真记住,惭愧。发现一篇讲得不错的文章,编辑了下转来供以后翻阅。C语言运算符优先级表(由上至下,优先级依次递减)运算符结合性() [] -> .自左向右! ~ ++ -- - (type) * & sizeof自右向左* / %自左向右...
阅读全文
摘要:#include#include//异或法unsigned char byteReverse(unsigned char val) { int i; for (i = 0; i > i) ^ ((val & (1 > (7 - i))) val ^= (1 >i); b = value&(0x...
阅读全文
摘要:NumPy NumPy是高性能科学计算和数据分析的基础包。部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变
阅读全文
浙公网安备 33010602011771号