char函数

嵌入式软件工程师经典面试题

[亡魂溺海] 提交于 2019-12-23 21:01:56
1、int a[10]={1,2,3,4,5,6,7,8,9,0}; int *p=&a[1]; 则p[6]等于8 2、整数数组清零:bzero(),memset()。 3、sizeof();测试变量所占地址的字节数 4、 main() { char *str[]={“ab”,“cd”,“ef”,“gh”,“ij”,“kl”}; char t; t=(str+4)[-1]; printf("%s",t); }则显示"gh" 5、小端:低位字节数据存储在低地址 大端:高位字节数据存储在低地址 例如:int a=0x12345678;(a首地址为0x2000) 0x2000 0x2001 0x2002 0x2003 0x12 0x34 0x56 0x78 大端格式 6、异步IO和同步IO区别 如果是同步IO,当一个IO操作执行时,应用程序必须等待,直到此IO执行完,相反,异步IO操作在后台运行, IO操作和应用程序可以同时运行,提高系统性能,提高IO流量; 在同步文件IO中,线程启动一个IO操作然后就立即进入等待状态,直到IO操作完成后才醒来继续执行,而异步文件IO中, 线程发送一个IO请求到内核,然后继续处理其他事情,内核完成IO请求后,将会通知线程IO操作完成了。 7、用变量a定义 一个整型数 int a; 一个指向整型数的指针 int a; 一个指向指针的指针

几百万数据放入内存不会把系统撑爆吗?

妖精的绣舞 提交于 2019-12-23 18:34:25
在公司有一个需求是要核对一批数据,之前的做法是直接用SQL各种复杂操作给怼出来的,不仅时间慢,而且后期也不好维护,就算原作者来了过一个月估计也忘了SQL什么意思了,于是有一次我就想着问一下之前做这个需求的人为什么不将这些数据查出来后在内存里面做筛选呢?直接说了你不怕把内存给撑爆吗?此核算服务器是单独的服务器,配置是四核八G的,配置堆的大小是4G。本着怀疑的精神,就想要弄清楚几百万条数据真的放入内存的话会占用多少内存呢? 计算机的存储单位 计算机的存储单位常用的有bit、Byte、KB、MB、GB、TB后面还有但是我们基本上用不上就不说了,我们经常将bit称之为比特或者位、将Byte简称为B或者字节,将KB简称为K,将MB称之为M或者兆,将GB简称为G。那么他们的换算单位是怎样的呢? 换算关系 首先我们得知道在计算机中所有数据都是由0 1来组成的,那么存储0 1这些二进制数据是由什么存放呢?就是由bit存放的,一个bit存放一位二进制数字。所以bit是计算机最小的单位。 大部分计算机目前都是使用8位的块,就是我们上面称之为的字节Byte,来作为计算机容量的基本单位。所以我们一般称一个字符或者一个数字都是称之为占用了多少字节。 了解了上面关于位和字节的关系后,我们可以看一下其他的单位换算关系 11B(Byte 字节) = 8bit(位) 21KB = 1024B 31MB =

信息安全系统设计基础第九周学习总结

风流意气都作罢 提交于 2019-12-23 15:50:23
时间统计 预计时间(7小时或者5小时) 课本阅读 2小时 博客编写 3小时 (五笔输入法) 博客编写 1小时 验证代码 2小时 实际时间(8小时) 课本阅读 3小时 博客编写 3小时 (五笔输入法) 已放弃。。。 博客编写 3小时 验证代码 2小时 第十章 系统级I/O 输入/输出是在主存和外部设备之间拷贝数据的过程。输入操作是从I/O设备拷贝数据到主存,输出操作是从主存拷贝数据到I/O设备。 10.1 Unix I/O I/O设备:网络、磁盘和终端 Unix I/O :将设备映射为文件的方式,允许Unix内核引出一个简单、低级的应用接口。 描述符:打开文件时,内核返回一个小的非负整数。 Unix外壳创建的每个进程开始时都有三个打开的文件:标准输入(描述符为0)、标准输出(描述符为1)、标准错误(描述符为2)。 改变当前的文件位置:文件位置为k,初始为0。 seek操作:显式地设置文件的当前位置为k. EOF:是一个条件,而不是一个符号 关闭文件:内核释放文件打开时创建的数据结构,并将这个描述符恢复到可用的描述符池中。无论一个进程因为何种原因终止时,内核都会关闭所有打开的文件并释放它们的存储器资源。 10.2 打开和关闭文件 1、open函数:打开一个已存在的文件或者创建一个新文件 #include <sys/types.h> #include <sys/stat.h>

sql server 常用函数

不羁的心 提交于 2019-12-23 12:55:30
Sql Server基本函数 1.字符串函数 长度与分析用 datalength(Char_expr) 返回字符串包含字符数,但不包含后面的空格 substring(expression,start,length) 不多说了,取子串 right(char_expr,int_expr) 返回字符串右边int_expr个字符 字符操作类 upper(char_expr) 转为大写 lower(char_expr) 转为小写 space(int_expr) 生成int_expr个空格 replicate(char_expr,int_expr)复制字符串int_expr次 reverse(char_expr) 反转字符串 stuff(char_expr1,start,length,char_expr2) 将字符串char_expr1中的从start开始的length个字符用char_expr2代替 ltrim(char_expr) rtrim(char_expr) 取掉空格 ascii(char) char(ascii) 两函数对应,取ascii码,根据ascii吗取字符 字符串查找 charindex(char_expr,expression) 返回char_expr的起始位置 patindex("%pattern%",expression) 返回指定模式的起始位置,否则为0 2

c 字符串常用函数

非 Y 不嫁゛ 提交于 2019-12-23 12:14:08
#include <iostream> #include <stdio.h> #include <vector> #include "string.h" using namespace std; int main() { //strlen:一直找到\0 char name[15]="hi,linson."; cout<<strlen(name)<<endl; char name2[3]={'h','\0'}; cout<<strlen(name2)<<endl;// //strcat:从目的\0开始替换.一直到原串的\0 //发现如果目的串长度不够,居然使用后面的空间.看来必须慎用. //src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 char name3[6]="start"; // cout<<&name2<<endl; // strcat(name2,name3); // cout<<name2<<&name2<<endl; // // cout<<name<<name2<<name3<<endl; //strncat //比较安全,可以指定长度.用目的串申请的长度-已经占用的长度,再-1(如果原来最后一位是\0,并且需要保留) strncat(name2,name3,3-strlen(name2)-1); cout<<name<<":

【C】常用的字符串函数

此生再无相见时 提交于 2019-12-23 12:12:57
1. strcpy   函数名:strcpy   用法:char *strcpy(char *destin, char *cource)   功能:将一个字符串从一个拷贝到另外一个   程序示例:    1 #include <stdio.h> 2 #include <string.h> 3 4 int main(){ 5 char str1[] = "source"; 6 char str2[] = "des"; 7 8 strcpy(str1,str2); 9 printf("str1 : %s\n",str1); 10 return 0; 11 }   程序输出:    2. strnpy   函数名:strnpy   用法:char * strncpy(char *dest, char *src,size_t n);   功能:将字符串src中的前n个字符复制到字符串数组dest中,注意(不会清除dest数组中原来的数据,只是将新的数据覆盖)   程序示例:    1 #include <stdio.h> 2 #include <string.h> 3 4 int main(){ 5 char str1[] = "source"; 6 char str2[] = "dest"; 7 8 strncpy(str1,str2,4); 9 printf("str1 : %s\n"

虹软人脸识别SDK在网络摄像头中的实际应用

吃可爱长大的小学妹 提交于 2019-12-23 11:34:10
目前在人脸识别领域中,网络摄像头的使用很普遍,但接入网络摄像头和人脸识别SDK有一定门槛,在此文章中有介绍过虹软人脸识别SDK的接入流程,本文着重介绍网络摄像头获取视频流并处理的流程(红色框内),以下内容仅供参考。 1.海康SDK接入基本流程 a.初始化并登录验证 NET_DVR_Init(); NET_DVR_DEVICEINFO_V30 struDeviceInfo = { 0 }; long lUserID = NET_DVR_Login_V30(m_cameraIp, m_cameraPort, m_cameraUser, m_cameraPwd, &struDeviceInfo); if (lUserID < 0) { NET_DVR_Cleanup(); return false; } b.创建线程并注册回调函数 thread videoThread(&HCNetCamera::getCameraPreview, this); videoThread.detach(); bool HCNetCamera::getCameraPreview() { NET_DVR_CLIENTINFO ClientInfo; ClientInfo.lChannel = 1; //Channel number 设备通道号 ClientInfo.hPlayWnd = NULL; //窗口为空

delphi指针

人走茶凉 提交于 2019-12-23 10:42:35
浅谈Object Pascal的指针 大家都认为,C语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。因此,说指针是C语言的灵魂,一点都不为过。同时,这种说法也让很多人 产生误解,似乎只有C语言的指针才能算指针。Basic不支持指针,在此不论。其实,Pascal语言本身也是支持指针的。从最初的Pascal发展至今 的Object Pascal,可以说在指针运用上,丝毫不会逊色于C语言的指针。 以下内容分为八个部分,分别是 一、类型指针的定义 二、无类型指针的定义 三、指针的解除引用 四、取地址(指针赋值) 五、指针运算 六、动态内存分配 七、字符数组的运算 八、函数指针 一、类型指针的定义。对于指向特定类型的指针,在C中是这样定义的: int *ptr; char *ptr; 与之等价的Object Pascal是如何定义的呢? var ptr : ^Integer; ptr : ^char; 其实也就是符号的差别而已。 二、无类型指针的定义。C中有void *类型,也就是可以指向任何类型数据的指针。Object Pascal为其定义了一个专门的类型:Pointer。于是, ptr : Pointer; 就与C中的 void *ptr; 等价了。 三、指针的解除引用。要解除指针引用(即取出指针所指区域的值),C 的语法是 (*ptr),Object Pascal则是

排列组合问题

北慕城南 提交于 2019-12-23 05:49:04
转自博客:http://blog.csdn.net/star143133/article/details/6854745 代码见Problem28 问题1 : 输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串 abc ,则输出由字符 a 、 b 、 c 所能排列出来的所有字符串 abc 、 acb 、 bac 、 bca 、 cab 和 cba 。 思路:这是个递归求解的问题。递归算法有四个特性:(1)必须有可达到的终止条件,否则程序将陷入死循环;(2)子问题在规模上比原问题小;(3)子问题可通过再次递归调用求解;(4)子问题的解应能组合成整个问题的解。 对于字符串的排列问题。如果能生成n - 1个元素的全排列,就能生成n个元素的全排列。对于只有1个元素的集合,可以直接生成全排列。全排列的递归终止条件很明确,只有1个元素时。下面这个图很清楚的给出了递归的过程。 参考代码:解法1通过Permutation_Solution1(str, 0, n); 解法2通过调用Permutation_Solution2(str, str)来求解问题。 view plain copy to clipboard //函数功能 : 求一个字符串某个区间内字符的全排列 //函数参数 : pStr为字符串,begin和end表示区间 //返回值 : 无 void Permutation

28.字符串的排列之第1篇[StringPermutation]

孤人 提交于 2019-12-23 05:47:31
【本文链接】 http://www.cnblogs.com/hellogiser/p/string-permutation-with-repeating-chars.html 【 题目】 输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。例如输入字符串aba,则输出由字符a、b所能排列出来的所有字符串aab、aba、baa。 【 分析 】 之前的博文 28.字符串的排列之第1篇[StringPermutation] 中已经介绍了如何对字符串进行全排列,但是只能针对所有字符都不同的情况,如果含有重复字符,则将不再适合。 因此现在要想办法来去掉重复的排列。如何去掉呢? 由于全排列就是从第一个字符x起分别与它后面的字符y进行交换。那么如果在x到y之间已经存在和y相等的字符,那么x和y就不应该交换。 比如对12324: (1)第一个数1与第一个数1交换,得到12324; (2)第一个数1与第二个数2交换,得到21324; (3)第一个数1与第三个数3交换,得到32124; (4)第一个数1与第四个数2交换,由于在第一个数和第四个数之间存在一个2和第四个数相等,因此这两个数字不应该交换; (5)第一个数1与第五个数4交换,得到42321; 这样我们总结除了在全排列中去掉重复的规则