- 博客(132)
- 资源 (3)
- 收藏
- 关注
转载 多线程编程--- __thread关键字
__thread是GCC内置的线程局部存储设施,存取效率可以和全局变量相比。__thread变量每一个线程有一份独立实体,各个线程的值互不干扰。可以用来修饰那些带有全局性且值可能变,但是又不值得用全局变量保护的变量。 __thread使用规则:只能修饰POD类型(类似整型指针的标量,不带自定义的构造、拷贝、赋值、析构的类型,二进制内容可以任意复制memset,memcpy,且内
2016-05-06 09:33:31 416
转载 0长度char数组的使用
需要引起注意的:ISO/IEC 9899-1999里面,这么写是非法的,这个仅仅是GNU C的扩展,gcc可以允许这一语法现象的存在。 结构体最后使用0或1的长度数组的原因,主要是为了方便的管理内存缓冲区,如果你直接使用指针而不使用数组,那么,你在分配内存缓冲区时,就必须分配结构体一次,然后再分配结构体内的指针一次,(而此时分配的内存已经与结构体的内存不连续了,所以要分别管理即申请和释放)而如
2016-05-05 10:08:48 436
转载 C语言变量声明加冒号的用法(占位符)
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域
2016-05-05 10:07:36 828
转载 华为离职副总裁徐家骏:年薪千万的工作感悟
上周,我正式提交了离职报告,准备给自己的职业生涯一个很大的转折,这是我长时间的思考最后所做的决定。但真的提出离职后,回想在公司的十年,还是百感交集。1997年7月16日,我只身提着一个包从深圳宝安机场下飞机,走出机场,天是那么蓝、白云那么低、空气那么潮,仰头望天,对这个城市,对公司、对即将开展的工作和生活、对自己的前途一片茫然。到了科技园,发现是个荒凉而偏僻的地方,不过倒很安静,上学的
2014-07-29 15:23:35 852
转载 Linux 下从命令行打开pdf文件和html文件的命令
背景:阅读新闻Linux 下从命令行打开pdf文件和html文件的命令[日期:2012-06-18]来源:Linux社区 作者:hipercomer[字体:大 中 小]如果你经常工作在Linux终端下,某个时刻需要查看一些文档的时候(比如pdf或者html文档),是不是经常需要切
2014-04-27 15:48:35 2486
原创 HTTP服务器的实现--CGI中POST表单。
这是在实现HTTPCGI程序是构建WEB数据库应用的关键应用程序或者说网关程序。一般来讲CGI程序并不直接同IE浏览器打交道,而是由WEB服务器通过环境变量来接收或发送信息,CGI程序仅和WEB服务器的环境变量打交道。浏览器经常用POST方法将信息传递给环境变量。浏览器在碰到特殊字符时,如汉字,浏览器并不直接将特殊字符发送给WEB服务器,而是先将特殊字符的ASCII码转化成十六进制(如汉字“普
2014-04-10 20:27:44 2048
转载 MFC中Doc,View,MainFrmae,App各指针的互相获取
1) 在View中获得Doc指针 2) 在App中获得MainFrame指针 3) 在View中获得MainFrame指针 4) 获得View(已建立)指针 5) 获得当前文档指针 6) 获得状态栏与工具栏指针 7) 获得状态栏与工具栏变量 8) 在Mainframe获
2014-03-27 11:16:29 779
原创 单文档应用程序中,将基类CView转换为继承CListView
首先将CView派生类中的所有CView转换为CListView然后在stdafx.h中添加头文件#include 即可
2014-03-26 20:08:28 786
原创 error LNK2019: 无法解析的外部符号
error LNK2019: 无法解析的外部符号的错误经常会出现在我们的面前,因为这样的错误是链接时出现的错误,无法用编译器定位到错误位置,往往这样的错误时最蛋疼的,而且出现无法解析的外部符号的错误原因是多方面的。1、缺少lib文件这种是最常见的错误,当工程缺少lib文件时,就会出现无法解析的错误,这时我们可以在 项目-》xxxx属性-》配置属性-》链接器-》输入-》附加依赖项 中
2014-03-21 09:58:41 1039
转载 getopt,getopt_long函数详解
(一)在Linux中,用命令行执行可执行文件时可能会涉及到给其加入不同的参数的问题,例如:./a.out -a1234 -b432 -c -d程序会根据读取的参数执行相应的操作,在C语言中,这个功能一般是靠getopt()这个函数,结合switch语句来完成的,首先来看下面的代码:#include #include int main(in
2013-12-04 16:18:44 875
原创 vim显示行号、语法高亮、自动缩进的设置
在UBUNTU中vim的配置文件存放在/etc/vim目录中,配置文件名为vimrc 在Fedora中vim的配置文件存放在/etc目录中,配置文件名为vimrc 在Red Hat Linux 中vim的配置文件存放在/etc目录中,配置文件名为vimrc set nocompatible "去掉有关vi一致性模式,避免以前版本的bug和局限
2013-12-03 10:20:52 719
原创 在Linux下编译grub4dos
由于项目的需要,需要使用grub4dos,所以需要编译grub4dos,但是grub4dos源码是在linux下写的,所以需要在Linux下编译。之前用过一些colinux下编译grub4dos,其实有点复杂,我还是喜欢在linux下编写代码和编译grub4dos。在windows下搭建colinux并编译grub4dos源码,查考文档在下面:http://www.chenall.ne
2013-11-24 11:11:19 1707
原创 Linux下编写C++
很多时候我们比较喜欢使用C++,这时候我们并不能使用gcc编译器来编译C++源码,如果需要编写C++源码,我们必须使用G++编译器。1、安装G++编译环境安装g++很简单,直接执行命令:sudo apt-get install g++。不到一分钟即可安装完毕2、编写C++源码首先打开vim写一段源码玩玩,保存文件名为test.cpp,必须使用.cpp后缀。#includeus
2013-11-20 20:15:47 782
转载 Linux编程 GCC常用命令
转自:http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html#_Toc3116428511简介GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal
2013-11-20 20:01:05 678
原创 Ubuntu终端下显示乱码
Ubuntu中,我们经常需要在终端下显示中文,快捷键Ctrl+Alt+F1~F6进入终端(返回图形界面为Ctrl+Alt+F7),默认情况下,支持UTF-8,不支持显示中文,即使我们修改字符编码和zhcon也无法显示中文。经过研究和查找资料,在终端先显示中文,可安装fbterm来显示中文命令sudo apt-get install fbterm不到一分钟即可安装完毕进入终端(Ctr
2013-11-20 18:26:09 1222
原创 Windows程序设计之计时器(二)
上一篇我们使用Windows的WndProc回调函数处理WM_TIMER消息,这一篇中,我们采用SetTimer函数中最后一个参数来声明定义自己的回调函数,当程序产生WM_TIMER消息时,调用自己的回调函数TimerProc处理,而不是在WndProc函数中处理WM_TIMER消息。VOID CALLBACK TimerProc( HWND hwnd, // ha
2013-11-19 21:21:58 897
原创 windows程序设计之计时器(一)
一、Windows计时器的作用:1、显示时间,制作时钟。2、多任务运行,当程序需要执行一个大任务时,可以把它分成一个个的小任务。每当收到一个WM_TIMER消息时,就处理一个小任务。3、保持更新进度报告,显示某项任务的进度,比如:下载4、实现自动存储功能,没隔一段时间,将信息自动保存在磁盘中。5、终止程序的演示或进行动画的演示6、控制动作速度,在游戏中经常需要处理攻击速度,
2013-11-19 21:10:29 1537
转载 C++常见笔试面试题
1. 找错试题1:Void test1(){ char string[10]; char* str1="0123456789"; strcpy(string, str1);} 试题2:Void test2(){ char string[10], str1[10]; for(I=0; I10
2013-11-09 09:21:14 981
原创 乱码问题的解决
我们经常会遇到中文显示出现乱码问题,assic是单字节编码,经常需要将其转换为Unicode,不然会出现乱码问题。WCHAR * AnsiToUnicode(const CHAR * lpszStr){ WCHAR * lpUnicode; int nLen; if (NULL == lpszStr) return NULL; nLen = ::MultiByteToWi
2013-10-25 15:22:23 469
转载 4.给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数
4.给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数问题分析:现在给了一个能随机生成1~5的随机函数,怎样利用这个已知条件生成一个1~7的随机函数呢?既然要生成的是随机数那么生成1,2,3,4,5,6,7的概率就应该是一样的。显然现在光生成1~5之间的数就不够了,我们想到应该要加大生成数的范围,并且加大范围的同时还要保证每个数产生的概率一样,于是有这样一种方法用这个表达式
2013-10-15 11:54:31 877
转载 求N!末尾有多少个0
求N!末尾有多少个0/*思考: 该题实际上是求(2 5)因子对的个数。对于任意一个阶乘,5因子的个数总是小于2因子的个数,仅需考虑n!中5因子的个数方法: (1) 将该数用 5 除, 得到的商取整数。 (2) 然后再用所得商当被除数除以 5,得到的商取整数。 (3) 持续做到商等于 0 为止。 (4) 过程中的商加总即为阶乘的尾数
2013-10-15 11:36:57 1475
转载 unix进程间的通信方式
(1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。(2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。(3)信号(Signal):信号是比较复杂
2013-10-12 07:53:36 467
转载 MySQL中select语句详解
数据表都已经创建起来了,假设我们已经插入了许多的数据,我们就可以用自己喜欢的方式对数据表里面的信息进行检索和显示了,比如说:可以象下面这样把整个数据表内的内容都显示出来 select * from president; 也可以只选取某一个数据行里的某一个数据列 select birth from president where last_name=’E
2013-10-10 19:47:01 653
转载 MySql命令大全
本文来自http://see.xidian.edu.cn/cpp/u/mysql_ml/1、连接Mysql格式: mysql -h主机地址 -u用户名 -p用户密码1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,
2013-10-10 18:14:56 643
转载 Lua脚本语法说明
Lua脚本语法说明(增加lua5.1部份特性) Lua 的语法比较简单,学习起来也比较省力,但功能却并不弱。 所以,我只简单的归纳一下Lua的一些语法规则,使用起来方便好查就可以了。估计看完了,就懂得怎么写Lua程序了。 在Lua中,一切都是变量,除了关键字。I. 首先是注释 写一个程序,总是少不了注释的。 在Lua中,你可以使用单行注释和多行注释。
2013-10-10 10:57:07 599
转载 duilib库
要使用duilib库,必须先把库导入,代码如下: 1 #include "xxx\UIlib.h" //xxx为UIlib.h的路径 2 using namespace Duilib; //Duilib为库自定义的名字空间 3 4 #ifdef _DEBUG 5 #ifdef _UNICODE 6 #pragma comment(lib, "xxx\Duilib_ud
2013-10-09 17:00:51 1271
转载 JSON与XML区别
JSON简介: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON构建的结构: 1. “名称/值”对的集合(A collection of name/va
2013-10-08 11:01:35 706
原创 整数的二进制表示中1的个数
整数的二进制表示中1的个数题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。分析:这是一道很基本的考查位运算的面试题。1、每次向右移动一位。2、测试最低位是否为1 :n&1;如果为1,则最低位为1,count++;int test(int n){ int count=0;
2013-10-07 20:29:04 636
转载 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回
写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回/************************************************************************//* 写一个函数,它的原形是int continumax(char
2013-10-07 20:02:26 747
转载 有两个有序的单链表,将它们合并为一个有序的单链表,不允许分配额外空间
题目:有两个有序的单链表,将它们合并为一个有序的单链表,不允许分配额外空间。分析: 这一道题应该很简单,不分配额外空间是很容易满足的。数据结构课本上就有这样的实现,具体不多说,看参考代码: 1: struct Node 2: { 3: int value; 4: struct Node* next; 5: }; 6: 7
2013-10-07 19:54:27 1475
原创 定义Fibonacci数列,输入n,用最快的方法求该数列的第n项
题目:定义Fibonacci数列如下: / 0 n=0f(n)= 1 n=1 / f(n-1)+f(n-2) n=2输入n,用最快的方法求该数列的第n项。分析:在很多C语言教科书中讲到递归函数的时候,都会用Fibonacci作为例子。当递归层次较大时,不适合采用递归,可以堆栈溢出,并且浪费控件,应该采用迭代。1、题目只是求第n项的值,只要求出第n-1和n-2即
2013-10-07 19:47:22 1382
转载 算法面试题
1.把二元查找树转变成排序的双向链表 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \4 8 12 16 转换成双向链表4=6=8=10=12=14=16。 首先我们定义的二元查找树 节点的数据结构如下: struct BSTree
2013-10-07 19:40:49 1576
转载 输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.
这道题的思路参考0-1背包:定义函数F(n,m)来求解这个问题,那么F(n,m)可以分解为两个子问题F(n-1,m)和F(n-1,m-n).由于题目要求列出所有的组合,使用类似动态规划的方法比较复杂,我在这里直接使用递归来解决这个问题。虽然效率可能不是很好,但是代码的可读性还是比较好的。#include "stdafx.h"#include using namespace std;
2013-10-07 19:32:41 708
原创 n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始, 每次从这个圆圈中删除第m个数字
题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。方法一:采用list容器链表存放元素,但是要维护头尾节点的循环。#include #include u
2013-10-07 17:19:41 1429
原创 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 分析:这道题是2006年google的一道笔试题。采用容器map很好的解决了这个问题,first存放字符,second存放数量#include #include #include using namespace std;void GetcharCount( const string& st
2013-10-07 16:58:02 912 1
转载 输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。
输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字M,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。思路:(1)让指针指向数组的头部和尾部,相加,如果小于M,则增大头指针,如果大于则减小尾指针(2
2013-10-07 15:41:29 755
转载 输入一个单向链表,输出该链表中倒数第k个结点
题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。链表结点定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext;};分析:为了得到倒数第k个结点,很自然的想法是先走到链表的尾端,再从尾端回溯k步。可是输入的是单向链表,只有从前往后的指针而没有从后往
2013-10-07 15:33:47 1173 1
转载 求1+2+3+...+n,要求不能使用乘除法,for,while,if,else,switch,case等关键字以及条件判断语句
求1+2+3+...+n,要求不能使用乘除法,for,while,if,else,switch,case等关键字以及条件判断语句方法一:利用构造函数和静态数据成员#include using namespace std;class Temp{public: Temp() { ++N; Sum+=N; } static void Reset() {
2013-10-07 15:25:20 1765
原创 判断整数序列是不是二元查找树的后序遍历结果
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / \ 6 10 / \ / \ 5 7 9 11因此返回true。如果输入7、4、
2013-10-07 15:10:37 516
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人