自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

baiyang_ywz的专栏

程序世界

  • 博客(38)
  • 资源 (2)
  • 收藏
  • 关注

转载 浮点数的存储与读取

64个比特位的双精度浮点数(双精度浮点数比单精度浮点数更精确),其中最高的1位是符号位S(红色区域),紧接着的11个比特位是指数位E(绿色区域),在指数位后面的52个比特位是尾数位M(紫色区域)。32个比特位的单精度浮点数,其中最高的1位是符号位S(红色区域),紧接着的8个比特位是指数位E(绿色区域),在指数位后面的23个比特位是尾数位M(紫色区域)。在32位上E的真实值是-126(1-127),在64位上E的真实值是-1022(1-1023),//以整数的形式打印变量n中的数据9。

2023-12-17 15:45:03 41

原创 linux下检测USB的热插拨

使用netlink.方式检测,代码如下:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <sys/un.h>#include <sys/ioctl.h>#include <sys/sock...

2018-08-12 16:56:28 693 1

转载 生活启示

有两个老和尚他们分别住在相邻的两座山上的庙里。这两座山之间有一条小溪,于是这两个和尚每天都会在同一时间下山去溪边挑水,久而久之他们变成了好朋友,就这样时间在每天挑水中不知不觉已经过了五年。突然有一天左边这座山的和尚没有下山挑水,右边那座山的和尚心想:”他大概睡过头了。“便不以为意。哪知道第二天左边这座山的和尚还是没有下山挑水,第三天也一样。过了一个星期还是一样,直到过了一个月右边那座山的和...

2018-08-12 15:01:33 377

原创 2017年总结

好久好久没来这个页面写点东西啦,今天收到公司群里需要提交年终总结的通知,才让我想起来是不是应该要写点什么了。2017年,如果从1月1号起,第一件大事应该是属于结婚了, 做为大龄青年的我终于把看书的终身大事给画上了一个圆满的句号(虽然我已是孩子的爹了)。第二件大事应该是我又换工作了,这是我来北京的第三个工作,虽然这次换工作距我离开第一份工作也就才半年多点的时间,但也是有意义的,第二份工作本来我是

2017-12-23 16:33:58 334

转载 嵌入式系统bootloader详解

1. 引言在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次:(1). 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader 两大部分。(2). Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。(3). 文件系统。包

2015-07-15 19:48:59 914

原创 谜题 之 C语言

本篇文章展示了14个C语言的迷题以及答案,代码应该是足够清楚的,而且我也相信有相当的一些例子可能是我们日常工作可能会见得到的。通过这些迷题,希望你能更了解C语言。如果你不看答案,不知道是否有把握回答各个谜题?让我们来试试。1、下面的程序并不见得会输出 hello-std-out,你知道为什么吗?01.#include 02.#include 03.int mai

2015-06-26 16:59:36 697

原创 12个有趣面试题(C语言)

1.gets()函数#includeint main(int argc, char *argv[]){ char buff[10]; memset(buff, 0, sizeof(buff)); gets(buff); printf("\n The buffer entered is [%s]\n",buff); return 0; }答:上面代码里的问题在于函数gets

2015-05-09 22:12:22 555

原创 进程与线程关系

一、 进程的概念        进程是在多道程序系统出现以后,为了描述系统内部各作业的活动规律而引进的概念。由 于多道程序系统所带来的复杂环境,程序本身有了并行性【为了充分利用资源,在主存中同时存放多道作业运行,所以各作业之间是并行的】、制约性【各程序由于 同时存在于主存中,因此他们之间会存在着相互依赖、相互制约的关系。一个是通过中间媒介——资源发生的间接制约关系,一个是各并行程序

2015-05-07 21:40:04 1075

原创 volatile详解(C语言关键字)

我在网上看见一个帖子说回答不出这个问题的人是不会被雇佣的。这是区分C程序员和嵌入式系统程序员的最基本的问题。搞嵌入式的家伙们经常同硬件、中断、RTOS等打交道,所有这些都要求用到volatile变量。下面来看下面试题中提到的问题(答案我从网络整理,以便复习):关键字volatile有什么含意?并给出三个不同的例子。volatile的本意是“易变的” 由于访问寄存器的速度要快过RAM

2015-05-05 22:27:53 749

原创 CUnit详解(基于linux下的白盒单元测试)

CUnit是一个对C语言编写的程序进行单元测试的框架,在线文档说它作为一个静态链接库被链接到用户的测试代码中。它提供了一种简洁的框架来建立测试架构,并提供丰富的断言(Assertion)来测试通用数据类型。除此之外,它还提供了许多不同的结构来运行测试用例和报告测试结果。(1)CUnit的架构可以看出Cunit也是有组织的,主要分几个角色,Registry,Suite及Tes

2015-04-20 16:36:44 2970 1

原创 Tornado安装出错(win7环境下)

tornado安装问题:照着网上说的步骤安装完tornado2.2之后,也copy了license文件,也修改了环境变量,最后运行tornado的时候,报错说license management error!

2015-04-14 14:32:50 3874 1

转载 返回指针的函数及动态申请内存

首先,常量和全局变量以及静态变量都存储于静态存储区,而局部变量在栈区; 其次,内存分配方式有三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 (2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高

2015-04-13 18:33:42 940 1

原创 获取MAC函数(linux下ioctl/vxworks下muxIoctl)

1.介绍Linux网络程序与内核交互的方法是通过ioctl来实现的,ioctl与网络协议栈进行交互,可得到网络接口的信息,网卡设备的映射属性和配置网络接口.并且还能够查看,修改,删除ARP高速缓存的信息,所以,我们有必要了解一下ioctl函数的具体实现.2.相关结构体与相关函数#include int ioctl(int d,int request,....);参数:d-文

2015-04-13 18:22:50 2908

原创 Vxworks任务间的通信

vxworks中任务间的通信支持信号量、消息队列、管道、信号、事件、共享内存等。一:信号量信号量分二进制信号量、互斥信号量、计数信号量。1:二进制信号量(1)semBCreate():创建二进制信号量SEM_ID semBCreate(int options,SEM_B_STATE initialState)options 可以为基于优先级的队列EM_Q_PRIORIT

2015-04-13 18:00:29 1115 1

原创 VxWorks的移植和BSP定制过程

BSP(Board Support Package,板级支持包)的作用是针对特殊的硬件平台,为操作系统内核提供操作接口,使操作系统能够独立于底层硬件。对上层应用屏蔽具体硬件,VxWorks的高可移植性就是通过BSP实现的。 本文重点介绍将VxWorks移植到AT91RM9200芯片过程中BSP的定制过程。 1 BSP概念BSP通常是指针对具体的硬件平台,用户所编写的启动代码

2015-04-13 17:11:31 4850

转载 SIP消息格式详解(基于XML消息体)

SIP消息分为请求和响应,格式由一个请求行/状态行、几个标题头、一个空行和一个消息体(可选)组成,之间使用回车换行符表示终结,即使消息中未包含消息体,空行也不能省略:1、请求行/状态行请求行包含三部分:方法名,请求URL和协议版本,各部分之间均使用一个空格字符进行分隔,除此之外请求行必须使用回车换行符表示终结;  a、方法:sip协议规定了6个方法:    REGISTER消息,用

2015-04-09 19:27:45 11901

翻译 SIP协议应答消息状态码详解

SIP应答消息状态码与功能类型 状态码 状态说明临时应答(1XX) 100 Trying 正在处理中180 Ringing 振铃181 call being forwarder 呼叫正在前向182 queue 排队181* session progress 会话进行会话成功(2XX) 200 OK 会话成功重定向(3XX) 300 multiple 多重

2015-04-09 19:22:14 1926

原创 经典趣味编程问题

相信很多人在笔试的时候会遇到类似的题目吧,问题是这样描述的:有n个人围成一圈,顺序排号,从第一个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。这个题目的思路其实不难,首先第一轮是需要被三整除,标记下报到3的那个人,然后在循环找下一个报到3的个,记得找到的时候需要重新清下这个,从此人在往下找,依次找到,最后会留下那个没有被标记的数,就算找到了。

2014-12-05 12:08:51 1097

原创 排序算法之快速排序

快速排序:冒泡排序的一种改进排序方法基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列 。        “快速排序法”使用的是递归原理,下面我结合一个例子来说明“快速排序法”的原理。首先给出一个数组{53,12,98,63,

2014-12-03 14:47:11 618

原创 希尔排序算法

思想简单描述:在直接插入排序算法中,每次插入一个数,使有序序列只增加1个节点,并且对插入下一个数没有提供任何帮助。如果比较相隔较远距离(称为增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除多个元素交换。D.L.shell于1959年在以他名字命名的排序算法中实现了这一思想。算法先将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d.对每组中全部元素进行排序

2014-12-02 16:52:53 568

原创 经典排序算法

最近由于工作上的事情都处理的差不多,手头没啥任务;在就是一直对各种排序算法只有些模糊的概念,上学那会就没有好好的学习和实际在机上操作过,所以在此特意整理了下这几个比较经典的排序算法,同时也在机上尝试过几次都没问题了,希望对以后会有所帮助,若有不足之处,待改进!别的也不想多说,直接上代码吧/*function:交换两个数函数*/void swap(int *num1, int *n

2014-12-02 15:06:26 576

原创 C程序画出正弦余弦曲线

/*显示余弦曲线的函数*/void drawcos(){ double y; int x,m; for(y=1; y>=0; y-=0.1) { m = acos(y)*10; for (x=0; x<=62; x++) { if (x==m || x==62-m) { printf("*"); } else { print

2014-10-29 11:09:56 1341

原创 vxworks任务异常处理

做VxWorks的时候经常会碰到任务异常的问题,有时很难定位,下面是我在工作中的一点心得。不正确的地方请指出,谢谢!1、任务异常的一般表现    指令异常:系统打印program异常或instruction access异常     访问非法地址异常,串口打印data access异常,如:             data access             Exc

2014-10-16 11:45:48 4083

原创 vxworks编译时常见的问题分析

在自己的应用程序编译的时候,经常会出现这样一个警告Warning: nonewline at end of file这是什么原因呢?在网上看到解释是EDK 7.1 includes the GCC 3.4.3 compiler, which is stricter whilecompiling C code as compared to the previous version of GC

2014-10-16 10:48:58 4555

翻译 shell脚本语言的基础语法

单引 双引 反引用[][[]]将命令的输出读入一个变量中,可以将它放入双引号中,即可保留空格和换行符(\n)out=$(cat text.txt)输出1 2 3out="$(cat text.txt)"输出:123--------------[]一般用于算术比较-gt 大于-lt 小于-ge 大于等于-le 小于等于逻

2014-10-08 17:51:07 1640

转载 脚本学习之---->let, echo变量

首先看到好多以这样开头的    #!/bin/bash   这个是告诉系统 解释此脚本文件的Shell程序# 这个是注释行,当行有效脚本程序一般用 xx.sh 文件表示,这样一样就可以看出文件的属性,当然也可以不这样一个脚本程序写完后,如果要执行它,则必须先赋+x  执行权限给它 例如:chmod +x xx.sh,然后用命令 ./filename  执行 以下是一些知识点:

2014-09-04 17:41:10 571

原创 一个指针函数的问题

看到一个某公司的面试题目如下:

2014-08-27 18:49:12 445

原创 二进制数的打印

在实现 一个程序时,突然遇到

2014-08-26 19:15:27 744

原创 一个很难明白的题目

这是一个上海贝尔实验室的笔试

2014-08-23 18:10:02 618 2

原创 字符串的查找与替换

对字符串中特殊的通配符进行的解析,然后在重新组合新的字符串输入,这里会用到指针变量操作字符串的查找与替换,应该还有更优化的算法,还会进一步的改进与优化自己做的简单的

2014-08-20 18:57:11 994

原创 结构体指针与结构体中变量的指针

结构体指针与结构体变量指针的区别, 在进行实现的工程项目中会有许多地方用到结构体指针的情况,在使用这前都需要先malloc一块空间之后才能有空间进入存储数据,实例代码如下:

2014-08-19 18:56:39 569

原创 两个数据交换的几种解法

关于两个数据交换的问题。首先会有同学会想到如下的实现:int swap(int value1, int value2){    int temp = 0;    temp = value1;    value1 = value2;    value2 = temp;} int main(int argc, char *argv[]){    int numb

2014-08-18 17:07:50 686

原创 删除字符串中相同的字符

此程序为对一个字符串中出现相同的

2014-08-14 12:09:15 772

原创 做个开心,快乐的程序员

1. 公司的前台美女哭着要辞职,同事们很奇怪问:“做得好好地,干嘛辞职啊?”美女大怒道:“我也不想辞职,但是公司有个王八蛋叫高潮,总是迟到!”经理劝道:“那你也不至于辞职啊!” 美女继续解释道:“他迟到不要紧,问题是每天都有人问我高潮来了没有?我真受不了了”. 2. 有个片警,喜欢上一女孩。但是不敢表白, 同事知道后决定帮他走出第一步。他们把他拉到路口去等, 女孩出现了。他

2014-08-13 18:32:18 554

原创 在控制台指定位置输出

对于一般的执行程序输出时,都会默认的显示在第0行的开头

2014-08-13 12:16:46 7189

原创 对配置文件的解析及重构

本程序是为了解决对配置文件的

2014-08-12 12:41:49 596

原创 文件操作

前些日子对C语言的文件进行了整理回顾,还是有一些感触的上学那会,没有好好学习C语言,甚至连一个完整的程序也没有真正的在键盘上敲过,只是对一些概念性的知识有过大概的了解之后毕业了,需要笔试的时候,也只是临时的时候,背一点经典的程序算法和基础知识来应付公司的笔试和面试,结果还算是比较理想,总算进入了这一行,可是进入工作了,这可是真“枪”实“弹”得出成绩,不得不有点真功夫了,每当

2014-08-11 18:47:04 492

原创 sh脚本 语法

1 开头程序必须以下面的行开始(必须放在文件的第一行):#!/bin/sh符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。当编写脚本完成时,如果要执行该脚本,还必须使其可执行。要使编写脚本可执行:编译 chmod +x filename 这样才能用./filename来运行2 注释在进行shell编程时,以#

2014-08-07 16:27:50 545

多线程问转接功能的设计文档

在多线上,一个产品可以注册到多个SIP SERVER 上,带来的问题是,如果不同SERVER 之间来的呼叫,想做TRANSFER 是不可能完成的。 本设计将解决此问题,在多线产品上是实现此功能并且可以实现自动转接的功能

2014-08-15

利用STUN实现SIP NAT的穿透技术文档

利用STUN协议,可以实现SIP协议下,对NAT的穿透,用户不需要对NAT做任何配置就可以实现

2014-08-15

空空如也

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

TA关注的人

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