
基础知识
文章平均质量分 56
Vincent_Song
士不可以不弘毅任重而道远
展开
-
由Ctrl+Z引发的系统卡死重启问题分析
起因JT同学拿着手机来找我说用着用着自动重启了,让我看一下,我抓出bugreport一看是system server发生watchdog重启了,然后接着看了一下traces,发现traces比较诡异。初步分析为什么说traces诡异?暂且一看都被thread 31持有的锁给block了,那就看看thread 31在搞什么飞机?"InputDispatcher" prio=10 tid=31 Nati原创 2016-10-14 15:22:04 · 5981 阅读 · 1 评论 -
工程研发里面的专业名词EVT、BVT、DVT、PVT、MOCKUP、SMT
BVT是Build Verification Test,基本验证测试,对完成的代码进行编译和连接,产生一个构造,以检查程序的主要功能是否会像预期一样进行工作。DVT是Design Verification Test的简称,设计验证测试,是硬件生产中不可缺少的一个检测环节,包括模具测试、电子性能、外观测试等等。PVT全称为Process Verification Test,意为小批量过程验证原创 2013-05-20 17:05:42 · 9878 阅读 · 0 评论 -
经典软件面试题(2)
设链表节点为[cpp] view plaincopytypedef struct tagListNode{ int data; struct tagListNode* next; }ListNode, *List; 要求将一带链表头List head的单向链表逆序。分析: 1). 若链表为空或只有一个元素,则直接返回; 2原创 2012-10-14 21:10:58 · 1687 阅读 · 0 评论 -
经典软件面试题(1)
1000瓶酒中只有1瓶毒酒,给你10只老鼠,每只老鼠只能喝一次,如何检测出这瓶毒酒?知识点:二进制。解题思路:此题考察的是二进制。2的10次方等于1024,1024以内的所有自然数都可以用10个数位的二进制数表示出来。1000小于1024,此题可解。将1000瓶酒从1到1000分别进行编号,并转化成10个数位的二进制数表示。编号转化成二进制原创 2012-10-14 21:08:58 · 2489 阅读 · 0 评论 -
编译器自举和移植
编译器自举和移植有个著名的问题:Mommy, where do compilers comefrom?要解决这个问题,首先来看看T-Diagram。可以将编译器用一个T形图来表示: ---------| S T | --- --- | I | ---其中,S表示Souce Language,T表示Target Language,I表示I原创 2012-07-31 21:16:20 · 6701 阅读 · 0 评论 -
人民币升值和贬值的影响
假设人民币升值前,1美元兑换10元人民币,即1美元=10元人民币。现在人民币升值后,1美元兑换7元人民币, 即1美元=7元人民币。以前要人民币10元才能换1美元,现在用人民币7元就能换1美元,人民币是不是升值了。假设你准备用10万人民币出国学习或旅游。升值前可换1万美元,即10万/10=1万。升值后可换1.428万美元,即10万/7=1.428万。人民币升值后出国是不是更划原创 2012-09-21 22:14:46 · 3144 阅读 · 0 评论 -
回车、换行、空格的ASCII码值—(附ASCII码表)
回车、换行、空格的ASCII码值回车,ASCII码13换行,ASCII码10空格,ASCII码32Return = CR = 13 = '\x0d'NewLine = LF = 10 = '\x0a'ASCII码表信 息在计算机上是用二进制表示的,这种表示法让人理解就很困难。因此计算机上都配有输原创 2012-08-15 14:15:23 · 669356 阅读 · 15 评论 -
文本文件和二进制文件在存储时的区别
1、二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放,也就是说存放的是数据的原形式。2、文本文件是把数据的终端形式的二进制数据输出到磁盘上存放,也就是说存放的是数据的终端形式。我们有必要把需要存储的数据分为字符数据和非字符数据两类。当你有数据要存储的时候.首先要考虑的问题并不是你要选择用二进制文件还是文本文件来进行存储,而是首先得考虑你要存储的数据是原创 2012-07-26 15:42:17 · 18521 阅读 · 0 评论 -
无线信号的传输
无线通讯系统中,频率较高的信号比频率较低的信号容易穿透建筑物,而频率越低,波长越长,绕射能力越强,穿透能力越差,信号损失衰减越小,传输距离越远。频率预告波长越短,饶射能力越弱,穿透能力越强,信号损失越大,传输距离越近,高频信号确实衰耗大,频率越高在传播过程的损耗越大。但高频信号本身携带的能量很高,具有很强的穿透能力,比如当无线电波频率很高时,他会穿透电离层,不会再电离层形成反射。现在通用的原创 2012-08-31 17:11:33 · 2899 阅读 · 0 评论 -
工程研发专业名词解释(EVT,DVT,DMT,MVT,PVT,MP)
EVT: Engineering Verification Test,工程验证测试产品开发初期的设计验证。设计者实现样品时做初期的测试验证,包括功能和安规测试,一般由RD(Research & Development)对样品进行全面验证,因为是样品,问题可能较多,测试可能会做N 次。DVT: Design Verification Test,设计验证测试解决样品在EVT 阶段的问题原创 2013-06-24 09:40:46 · 44723 阅读 · 3 评论 -
C语言实现Base64编解码
in_str是输入缓冲区的地址in_len 要编码的数据的长度out_str 输出的地址需要在外面分配内存unsigned char *out_str = (unsigned char *) malloc (in_len * 4 / 3 + 1);然后再调用函数编码。void Base64Encode(const unsigned char *in_原创 2013-02-26 16:56:59 · 7654 阅读 · 3 评论 -
温故知新,基础复习(快速排序及优化)
温故知新,基础复习(快速排序及优化)使用了三值取中和插排优化#include#define InsertSortNumber 10void InsertSort(int Arra[],unsigned int LowIndex,unsigned int HighIndex){ printf("low=%d,high=%d\n",LowIndex,HighIndex); for (un原创 2015-07-21 22:19:19 · 2291 阅读 · 0 评论 -
大数据处理时的一种BitMap小算法
一种大数据外部排序(内存无法加载所有排序元素)、去除重复元素、快速找到随机被删除元素的BitMap小算法,核心思想即通过将一个数作为下标(index)来索引一个bit表示一个数是否存在,排序时的时间复杂度为O(N),需要的额外空间的复杂度O(N/8),支持整个int范围(正负数都支持)的算法示例如下:char BitMask[] = {0x80 , 0x40 , 0x20 , 0x10 , 0x8原创 2015-07-21 22:02:46 · 7432 阅读 · 0 评论 -
温故知新,基础复习(一个有序从大到小不重复的数列,任意给出一个sum值,求出数列中所有满足和为sum的数对)
温故知新,基础复习(一个有序从大到小不重复的数列,任意给出一个sum值,求出数列中所有满足和为sum的数对)#include#includevoid PrintSumNumbers(int Arra[],int ASize,int Sum){ //O(1) if (ASize<2) { printf("The size of the Arra is invalid.\n");原创 2015-07-21 22:15:03 · 2372 阅读 · 0 评论 -
TCL通讯上海产品创新中心职位推荐
TCL通讯上海产品创新中心职位推荐对于以下岗位如有感兴趣的同学请将简历发送至vincent.song@tcl.com,我们的HR将会及时与您取得联系!以下是紧急招聘职位信息:原创 2015-06-08 17:38:52 · 4662 阅读 · 10 评论 -
文章中的排版结构线
<h2 style="padding:0px 0px 0.3em; border-bottom:3px solid #047307"> <span style="font-size:20px;">1、排版</span></h2>原创 2013-01-05 10:04:15 · 1649 阅读 · 0 评论 -
特殊的日子(2015年5月1日劳动节)纪念回归和新的征程,用LRU和LFU两个小算法原理和区别来抛砖引玉
今天就先介绍LRU和LFU这两个在Android的Framework以及App中比较常用的缓存算法的思想原理,其实这些缓存算法的原理思想和Linux中的虚拟内存页面置换算法思想是一致的,只不过具体的不同。原创 2015-05-01 22:31:53 · 1558 阅读 · 0 评论 -
处理器的大端和小端模式
大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。 小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。 请写一个C函数,若处理器是Big_endian的原创 2011-09-04 16:04:31 · 1794 阅读 · 0 评论 -
断点续传简单原理介绍
断点续传,也就是要从文件已经下载的地方开始继续下载。所以在客户端浏览器传给Web服务器的时候要多加一条信息--从哪里开始。 下面是内容传递请求信息给Web服务器,要求从2000070字节开始。 GET /down.zip HTTP/1.0 User-Agent: Netfront3 RANGE: bytes=2000070- Accept:原创 2012-03-05 11:19:27 · 1960 阅读 · 0 评论 -
swprintf和sprintf的使用
C/C++ code char szA[100]; //An ANSI string bufferWCHAR szW[100]; //A Unicode string buffer//Normal sprintf:all strings are ANSIsprintf(szA, "%s","ANSI Str");//Converts原创 2012-04-25 12:06:31 · 7429 阅读 · 0 评论 -
C语言中宽字符和多字节字符
C 语言原本是在英文环境中设计的,主要的字符集是7 位的ASCII 码。从此开始,8 位的byte(字节)变成最常见的字符编码单位,但是国际化软件必须能够表示不同的字符,而这些字符数量庞大,无法使用一个字节编码,于是世界上使用各式 各样多字节的字符编码集合已经有数十年了,比如用来表示“非拉丁字母”以及“非字母”的中、日、韩文字系统。在1994 年,“Normative Addendum 1”(基准原创 2012-12-25 14:03:53 · 10797 阅读 · 1 评论 -
Window下Unicode字符与多字节字符的转换方法
第一个就是宽字符到多字节字符转换函数,函数原型如下: int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar,LPSTR lpMultiByteStr, int cbMultiByte,LPCSTR lpDefaultCh原创 2012-12-25 14:05:12 · 2515 阅读 · 0 评论 -
可执行程序中的BSS段
BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。BSS节不包含任何数据,只是简单的维护开始和结束的地址,以便内存区能在运行时被有效地清零。BSS节在应用程序的二进制映象文件中并不存在。如果在嵌入式里,很可能没加载器,你的程序是直接由bootload程序加载原创 2012-12-26 21:42:41 · 4331 阅读 · 1 评论 -
反汇编分析__stdcall和__cdecl的异同
C++代码如下:.h头文件#pragma once#ifdef DLLTestAPI#else#define DLLTestAPI _declspec(dllimport)#endifint DLLTestAPI __stdcall add(int, int);int DLLTestAPI __cdecl subtract(int, int);原创 2012-12-27 11:54:32 · 1779 阅读 · 1 评论 -
深度解析为何printf("%f",45);结果为零
如题,出现这种情况的原因有两个:1、整形数和浮点数在内存中的存储格式和布局不同(理解浮点数的内存布局和表示方式,请参考:http://blog.csdn.net/songjinshi/article/details/7753777)2、printf在进行参数入栈时是根据实参的类型进行入栈,而不是根据格式化字符中指定的类型,具体入栈过程如以下所示。所以造成入栈实参的类型和实际函数使用的类型不原创 2012-07-17 11:35:06 · 3862 阅读 · 0 评论 -
C语言中int型值的问题
在C语言中,int类型分为多种可变类型,包括:short int(占2个字节,值得范围为-32768-32767) ,unsigned short int(占两个字节。值得范围为0-65535),int(占四个字节,值得范围-2147783648-2147483647),unsi原创 2011-07-18 10:04:48 · 2356 阅读 · 0 评论 -
虚拟内存系统,用户地址以及程序中使用的地址,物理地址
linux操作系统使用的是虚拟内存系统,意味着用户程序见到的地址不直接对应于硬件使用的物理地址,虚拟内存引入了一个间接层。使用虚拟内存,系统中运行的程序可以分配远多于物理内存的内存。被用户程序见到的常规地址长度是32位或者64位,依赖底层的硬件结构,并且每个进程有它自己的虚拟地址原创 2011-07-17 12:07:45 · 1918 阅读 · 0 评论 -
字符编码知识以及相互之间的转换
UTF-16(UCS-2)是Unicode的其中一个使用(实现)方式,大部分字符采用定长的字节存储,即字符属于宽字符,但UTF-16却无法兼容于ASCII编码。UTF-8是Unicode的一个使用(实现)方式,编码格式兼容ASCII编码,采用变长的字节存储字符,即字符属于多字节字符。windows(C语言)在使用unicode的时候就是采用的UTF-16,即宽字符。UTF-16比起原创 2012-04-13 17:44:45 · 3385 阅读 · 0 评论 -
codepage
字符内码(charcter code)指的是用来代表字符的内码.读者在输入和存储文档时都要使用内码,内码分为 单字节内码 -- Single-Byte character sets (SBCS),可以支持256个字符编码. 双字节内码 -- Double-Byte character sets)(DBCS),可以支持65000个字符编码.主要用来对大字符集的东方文字进行编码原创 2012-04-13 20:18:33 · 1961 阅读 · 0 评论 -
视窗图形系统的两种事件消息实现机制
1、消息队列(同步获取消息,主动查询)分为总消息队列和窗体消息队列两种:一、系统总消息队列从输入设备获取用户的各种操作,生成总消息队列。二、应用(窗体,包括子窗体和控件,下面统称应用)消息队列每个应用都有一个自己的消息队列,应用根据需要向总消息队列注册自己需要的消息事件,然后总消息队列根据一定的算法(包括各种事件消息的处理机制,活动应用,窗体处理等)得到最终需要分发的应用,然后原创 2012-04-11 11:51:22 · 1572 阅读 · 0 评论 -
用户角度解析视窗图形操作系统的运行和实现机制
从用户角度看,整个视窗图形操作系统的运行和实现机制:一、用户通过输入设备进行各种操作,然后通过输出设备看到操作结果,各种图形任务处理和显示。二、图形应用程序向窗口管理器获取各种消息,包括用户输入,应用程序状态改变等,然后按照程序预先设定好的方式处理消息,最终将处理完的结果下发给窗口管理器。三、窗口管理器向系统消息队列获取各种消息,然后根据一定的算法进行仲裁,下发到最终应用程序,原创 2012-04-11 13:56:41 · 1762 阅读 · 0 评论 -
一道小题
写一行代码,判断一个数是否为2的次幂。return !(x & (x-1));原创 2012-03-16 09:59:35 · 1442 阅读 · 0 评论 -
一道小题(2)
十进制整数,计算对应的二进制数包含多少个1,用位操作。1、技巧while(a>0) {a&=(a-1);count++;}2、易懂while(a) { if(a&1==1) { i++; } a=a>>1; }原创 2012-03-16 10:28:54 · 1112 阅读 · 0 评论 -
一道小题(3)
#includevoid main(){ int a = 47; printf("%d", printf("%d", printf("%d",a))); printf("\n");}运行结果为:4721原创 2012-03-16 10:39:03 · 1297 阅读 · 3 评论 -
堆栈以及常用的几种堆栈实现原理
堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用一个称作堆栈指针的专用寄存器指示前的操作位置,堆栈指针总是指向栈顶。1、递增堆栈:向高地址方向生长2、递减堆栈:向低地址方向生长3、满堆栈:堆栈指针指向最后压入堆栈的有效数据项4、空堆栈:堆栈指针指向下一个要放入数据的空位置原创 2012-02-27 16:32:45 · 5482 阅读 · 0 评论 -
工作20天之感悟(嵌入式开发)
不知不觉已经来到上海快一个月了,工作也差不多20天了,从实际工作中发现了很多问题,也学到了很多东西,明白了理论学习和实际工作的最大差别:思想停留和实际动手。 以前在学校的时候感觉自己还挺不错的,没事啃啃书,学习学习理论性的语法,有时还敲一些简短的代码。没有任务驱动,慢慢的就停留在哪里,无法前进了,并且自我感觉良好,我想这就是在学校学习理论的结果。现在工作了,在工作中最重要的不是你的能原创 2011-12-15 18:01:55 · 2098 阅读 · 2 评论