- 博客(25)
- 资源 (19)
- 收藏
- 关注
原创 别再耍流氓了: 请别再用strcpy, 而用strncpy
我们先来看看strcpy, 下面的程序没有问题:#include using namespace std;int main(){ char str[4] = {0}; char *p = "abc"; strcpy(str, p); cout << str << endl; return 0;} 但是,我运行下面程序的时候,就有问题了:#in
2014-03-30 14:31:48 28835 1
原创 看似山重水复,其实有可能柳暗花明(跳出程序猿思维之外)
经历一: 上个月,系统中某程序出现了异常,我知道是哪个部位出现了问题,但不知道出问题的根本原因是什么,找相关人, 他自己也不知道问题出在哪。哎。 我周五搞了一天,周末两天加班,都没有把这个异常搞定。反正, 加上它就有问题,没有它,就没有问题。 单步调试,抓日志?狗屁! 都分析不出来,什么多线程,信号量,链表,队列,还概率性发生,搞得我头都大了。周五让他帮忙定位一下,也定
2014-03-30 13:17:48 8249 3
原创 串口是个什么玩意儿?
没图你说个N, 直接上图: 串口有公口和母口,这么取名,真是太形象了,不服都不行,牛逼。串口通常可以叫做COM(communication)口, 一般是9口,4+5. 有的电脑有多个串口,比如com1和com2.在嵌入式开发中,常用这个东西来打印日志,强大啊。 嵌入式系统通过串口把日志输入到电脑上,便于调试,示意图如下:
2014-03-30 12:46:35 10299 2
原创 如何大致判断对方电脑的操作系统类型?
ping一下百度:C:\Documents and Settings\Administrator>ping www.baidu.comPinging www.a.shifen.com [61.135.169.125] with 32 bytes of data:Reply from 61.135.169.125: bytes=32 time=46ms TTL=5
2014-03-30 00:41:21 10804
原创 某牛人说:C和C++的区别不大
爱讨论这个话题的,有两种人呢,一种是牛逼的人,一种是装逼的人,不说了。 某牛人说过, C语言中的全局变量和函数,就类似于C++中的成员变量和方法, 我肤浅地认为这句话相当有道理。不多说,看两个程序吧:#include using namespace std;int weight = 100;void print(int w){ cout << w << end
2014-03-29 23:41:26 7493 1
原创 昨天踩到一坨臭狗屎(与无损压缩有关)
昨天踩到一坨臭狗屎, 经过如下: 同事给我一个.zip包的地址,不知怎么搞的,我一download下来, 居然是download里面的文件,也就是说,我解压缩了,这应该没有问题吧。可是某系统需要的是压缩包,于是我又把它压缩成.zip包,后来用就一直有问题,无法定位,思前想后,找不到问题出在哪里。 没办法了,郁闷,后来停下手头工作,放松了一下。突然想起来,草,这两个压缩包肯
2014-03-29 23:17:57 7758 2
原创 机试中一个投机取巧的方法(先声明一下,我不负任何责任哈)
在机试题目中,经常需要使用动态数组或链表。大家可能很容易想到stl, 但有些机试禁止你用stl. 1.你可能说,定义一个超级大的数组就可以,你牛。但后台测试用例一运行,你就挂了。 2. 想冒险的人, 可以考虑用realloc. 挂的可能性有,但不是很大。 3. 正统的、最好的办法,你还是用链表吧。 下面我来说一个投机取巧的用
2014-03-28 00:02:50 7893 1
原创 上次机试, 栽倒在求最值的问题上, 哎
上次机试, 有个大程序中有求最值这个环节,最后阴沟翻船, 哎。 为了简化, 我仅仅用伪代码来示意,我的程序为:int max = p[0];int min = p[0];int i = 0;for(i = 0; i < n; i++){ if(p[i] is valid) { if(max < p[i]) { max = p[i]; } i
2014-03-27 23:43:54 7588
原创 从抓包的角度来分析tcp建立时的三次握手(好几次笔试面试,都有tcp三次握手)
三次握手过程如下: 来搭建一个网络环境: 利用CommView来抓包(因为它可以抓环回包包),开启它, 捕捉8888端口的包包。 服务端程序为:#include #include // winsock接口#pragma comment(lib, "ws2_32.lib") // winsock实现int ma
2014-03-27 23:32:01 10514 1
原创 什么是抓包?为什么要抓包?
前面讲了抓日志,现在来聊聊抓包。这里讲的抓包,并不是说用手去挠你头上的包包。 我们来看一个初三的物理实验题目: 现在灯泡不亮, 请定位分析。 这个很好办啊,无非就是搞个电压表和电流表呗。 在与网络相关的问题中,也会经常遇到类似的网络问题,遇到问题后, 该怎么办呢?猜测?估计?推脱? 我晕
2014-03-27 23:04:19 95812 21
原创 为什么飞机上要安装黑匣子呢? 也谈程序中log和debugger的应用场景
最近飞机出了不好的事,我表示深深地哀悼。实时监控系统出了问题, 大家都在急忙找黑匣子这个black box, 因为black box中有飞机飞行的一些记录。 下面,我从软件开发的角度来探讨一下log(black box)和debugger的应用场景。 最开始学C语言的时候,经常用printf函数来打印变量的值。后来学会了单步调试,便了此不疲, 彻底爱上
2014-03-26 23:40:09 8441
原创 今天看到的一个有趣面试题:return *this和return this有什么区别?
别跟我说, return *this返回当前对象, return this返回当前对象的地址(指向当前对象的指针)。 正确答案为:return *this返回的是当前对象的克隆或者本身(若返回类型为A, 则是克隆, 若返回类型为A&, 则是本身 )。return this返回当前对象的地址(指向当前对象的指针), 下面我们来看看程序吧:#include using namespace std;class A{public: int x; A
2014-03-26 22:53:40 45211 21
原创 void的两个奇葩用法
先看:int main(){ int x; return 0;} 该程序会有warning, 可以改为如下:int main(){ int x; (void)x; return 0;} 再看, 如下程序不会有warningvoid fun(){}int main(){ fun(); return 0;} 但
2014-03-25 23:48:01 7859
原创 TCP能检测到"断网""断电"事件吗(面试可以问倒很多人)?
我们知道, tcp的建立和拆除需要经历三次握手和四次挥手, 那么当客户端与服务器建立了tcp连接之后,突然断掉网线或者掉电, 两侧的tcp状态会有什么变化呢? 对于不了解tcp的人, 肯能会直接说: 能检测。 我曾经给出了一个貌似正确的答案: 不能检测。
2014-03-25 23:30:12 23037 10
原创 为什么cpu要一心二用:浅谈多线程编程的一个具体例子
什么是多线程,多线程就是多个执行序列。就是让cpu执行下这个序列,又执行下那个序列,不停地切换, 正所谓一心二用。 考虑一个实际场景: 客户端要向服务端发送文件,服务端会对发送文件进行检查,如果文件的头信息非法,则立即通知客户端不必继续发送,那么这个场景应该怎么处理呢? 1. 屎办法, 客户端先把文件发送完毕,然后服务端来检查。 这样肯定不好,假设文件是非法的, 那
2014-03-25 23:15:08 10382 1
原创 127.0.0.1和0.0.0.0
先说0.0.0.0吧, 他是本机上所有IP的集合。 而127.0.0.1是本机的环回地址,我要说,这就是个鸡肋。 假设PC1(client)的IP为192.168.1.105, PC2(server)的IP为192.168.1.106, 现在考虑网络编程。 pc1去连接 127.0.0.1:8888, pc2监听0.0.0.0:8888, 连个鸟啊,
2014-03-24 00:07:42 16741
原创 利用STL中的map来写一个自己的命令行界面
居然没有用过命令行?那你怎么会关注这篇文章呢?我晕。 你看,司机师傅安按个按钮,门就开了,按那个按钮, 就唱歌。 按钮实际对应一个命令,真正解析并执行这个命令的,是里面的函数。在windows的cmd中,输入一个命令,就可以执行对应的功能,那个黑色的界面会把人的想法传给系统,系统来处理。下面,我们利用STL中的map来模拟简单的命令行,主要是了解map的功能和用法。在实战中,
2014-03-22 22:18:25 7899 1
原创 ssh, telnet在发起什么连接请求?
先看一个服务器程序:#include #include // winsock接口#pragma comment(lib, "ws2_32.lib") // winsock实现int main(){ WORD wVersionRequested; // 双字节,winsock库的版本 WSADATA wsaData; // winsock库版本的相关信息
2014-03-19 23:12:12 7878
原创 如何让recv函数有点脾气?(让你知道select函数的威力)
我们知道, recv是一个阻塞的函数,没有到数据的时候,会傻傻地等待数据。那么怎么让recv函数有点脾气, 不傻傻地等待呢? 服务器为(先跑起来):#include #include // winsock接口#pragma comment(lib, "ws2_32.lib") // winsock实现int main(){ WORD wVe
2014-03-17 23:59:30 13954 7
原创 从netstat看网络编程
不想学网络编程的屌丝说: 我只有一台电脑,不能模拟服务端和客户端,没法进行网络编程; 或者说:我没有网络,没法进行网络编程。 其实,你只需要一台电脑即可, 没有联网也没有关系。靠!你没电脑? 在cmd中输入netstat -nao | findstr 8888, 然后回车,你一般会得到nothing. 运行下面程序:#include #includ
2014-03-16 23:53:40 8378 2
原创 对象间是如何进行勾搭的?
什么是对象?在int a; 中, a就是对象。那么如何与对象a进行通信呢? 简单啊,且看程序:#include using namespace std;int a;int main(){ a = 1; //往对象中写数据 cout << a << endl; //从对象中读取数据 return 0;} 继续上菜,爱吃不吃:#in
2014-03-16 22:39:53 7639
原创 你能否真正搞定单例?
笔试面试让写个单例,不一定每个人都能搞出来。我们以前也谈论过单例,现在继续来看看: 可以写为:#include using namespace std;class A{private: int x; static A *pInstance;public: void set(int m) { x = m; } int get() { ret
2014-03-16 00:27:58 7727 1
原创 分割字符串遇到麻烦了? 也许你在找strrchr函数!
废话少说,直接上代码:#include using namespace std;int main(){ char str[100] = "aacacbxcxybxxxxx"; char *p = strrchr(str, 'c'); if(NULL != p) { cout << *(p + 2) << endl; } else { cout << "no" <
2014-03-15 23:39:20 7235 1
原创 memchr函数与strchr函数的区别
先看看原型吧:原型:extern void *memchr(const void *buf, int ch, size_t count);用法:#include 功能:从buf所指内存区域的前count个字节查找字符ch。说明:当第一次遇到字符ch时停止查找。如果成功,返回指向字符ch的指针;否则返回NULL。 看个程序吧:#include using n
2014-03-13 22:15:25 9545
原创 select函数何时返回?
先运行一下如下代码:#include #include // winsock接口#pragma comment(lib, "ws2_32.lib") // winsock实现int main(){ WORD wVersionRequested; // 双字节,winsock库的版本 WSADATA wsaData; // winsock库版本的相关信息
2014-03-13 00:10:33 8939 3
linux protobuf安装文件
2016-11-04
linux tree命令的源码
2015-11-01
编译好的openssl库和头文件
2014-12-14
入门数据库sqlite3的最佳实践资料
2014-08-12
在Windows下学习Linux命令
2013-08-08
音频处理软件Gold Wave
2013-07-17
H.264visa软件
2013-07-13
YUVviewer :原始的YUV视频的播放器
2013-06-24
经典的C语言编译器:TC2.0
2013-06-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人