上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 24 下一页

2018年3月4日

C++的字符串格式化库

摘要: 这里向大家介绍一个C++的字符串格式化库,叫cpptempl,这个库支持对字符串格式的条件,循环,变量插入。看上去很不错,只不过其是基于boost库的。 下面是一个例子: 12345678// The text templatewstring text = L"I heart {$place}!" 阅读全文

posted @ 2018-03-04 08:36 AlanTu 阅读(372) 评论(0) 推荐(0) 编辑

64位平台C/C++开发注意事项

摘要: 在http://www.viva64.com/en/l/上例出了28个在64位平台上使用C/C++开发的注意事项,对于进入64位时代的程序员应该去看看这28个事项,这些英文读物对于有C/C++功底的朋友读起来应该并不难,我估计大约20-30分钟可以精读完一篇(或者更快),下面是这28个注意事项的列表 阅读全文

posted @ 2018-03-04 08:32 AlanTu 阅读(626) 评论(0) 推荐(0) 编辑

C语言函数实现的另类方法

摘要: 在前面看过那个BT的Javascript程序后,我们来看一个C语言的,相信大家还记得输出从1到1000的数最后的那个示例,本站还有很多这样的示例,如:变态的hello word,如何教新手编程,还有恐怖的C++,在下面这个示例面前,神马都是浮云。 下面这个示例向你展示了如何写一个swap()函数(把 阅读全文

posted @ 2018-03-04 08:30 AlanTu 阅读(147) 评论(0) 推荐(0) 编辑

打印质数的各种算法

摘要: 打印质数的算法应该是学习计算机编程的一个经典的问题,在这里想给大家展示一些方法,相信这些方法会对你的编程有一定的启发作用。请你注意几点, 实际应用和教学应用有很大的差别。最后的那个使用编译时而不是运行时的方法大家可以重点看看。 教科书的示例 首先,先给一个教科书的示例。下面这个示例应该是教科书(至少 阅读全文

posted @ 2018-03-04 08:28 AlanTu 阅读(314) 评论(0) 推荐(0) 编辑

如何调试makefile变量

摘要: 六、七年前写过一篇《跟我一起写Makefile》,直到今天,还有一些朋友问我一些Makefile的问题,老实说,我有一段时间没有用Makefile了,生疏了。回顾,这几年来大家问题我的问题,其实很多时候是makefile的调试问题。所以,就像我在之前的那篇关于GDB的技巧的文章中做的一样,在这里向大 阅读全文

posted @ 2018-03-04 08:21 AlanTu 阅读(508) 评论(0) 推荐(0) 编辑

又一个有趣的面试题

摘要: 大家还记得前些天的那个火柴棍式的面试题吗?很有趣吧。下面是我今天在StackExchange上看到的一个有趣的面试题。大家不妨一起来思考一下。问题如下—— 有两个相同功能代码如下,请在在A,B,C是什么的情况下,请给出三个原因case 1比case 2快,还有三个原因case 2会比case 1要执 阅读全文

posted @ 2018-03-04 08:18 AlanTu 阅读(182) 评论(0) 推荐(0) 编辑

如何写出无法维护的代码

摘要: 酷壳里有很多我觉得很不错的文章,但是访问量最大的却是那篇《6个变态的Hello World》,和它能在本站右边栏“全站热门”中出现的还有“如何加密源代码”,以及编程真难啊等这样的文章。可见本站的读者们的偏好,我也相信你们都是“身怀绝技”的程序员。所以,今天给大家推荐这篇文章,相信一定能触动大家的兴奋 阅读全文

posted @ 2018-03-04 08:15 AlanTu 阅读(386) 评论(0) 推荐(0) 编辑

在函数外存取局部变量的一个比喻

摘要: 在StackOverflow上一这样一个关于C/C++的问题,问问题的人给了一个代码如下: 12345678910111213int * foo(){ int a = 5; return &a;} int main(){ int* p = foo(); cout << *p; *p = 8; cou 阅读全文

posted @ 2018-03-04 08:13 AlanTu 阅读(154) 评论(0) 推荐(0) 编辑

C++11 中值得关注的几大变化(详解)

摘要: 源文章来自前C++标准委员会的 Danny Kalev 的 The Biggest Changes in C++11 (and Why You Should Care),赖勇浩做了一个中文翻译在这里。所以,我就不翻译了,我在这里仅对文中提到的这些变化“追问为什么要引入这些变化”的一个探讨,只有知道为 阅读全文

posted @ 2018-03-04 08:11 AlanTu 阅读(154) 评论(0) 推荐(0) 编辑

深入理解C语言

摘要: Dennis Ritchie 过世了,他发明了C语言,一个影响深远并彻底改变世界的计算机语言。一门经历40多年的到今天还长盛不衰的语言,今天很多语言都受到C的影响,C++,Java,C#,Perl, PHP, Javascript, 等等。但是,你对C了解吗?相信你看过本站的《C语言的谜题》还有《谁 阅读全文

posted @ 2018-03-04 08:09 AlanTu 阅读(184) 评论(0) 推荐(0) 编辑

2018年3月3日

一些有意思的算法代码

摘要: Keith Schwarz是一个斯坦福大学计算机科学系的讲师。他对编程充满了热情。他的主页上他自己正在实现各种各样的有意思的算法和数据结构,http://www.keithschwarz.com/interesting/, 目前这个网页上有88个(见下面的列表),但这位大哥要干135个,你可以看看他 阅读全文

posted @ 2018-03-03 23:19 AlanTu 阅读(766) 评论(0) 推荐(0) 编辑

一个fork的面试题

摘要: 前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的: 题目:请问下面的程序一共输出多少个“-”? 1234567891011121314151617181920212223242526 阅读全文

posted @ 2018-03-03 23:18 AlanTu 阅读(322) 评论(0) 推荐(0) 编辑

C++的坑真的多吗?

摘要: 先说明一下,我不希望本文变成语言争论贴。希望下面的文章能让我们客观理性地了解C++这个语言。(另,我觉得技术争论不要停留在非黑即白的二元价值观上,这样争论无非就是比谁的嗓门大,比哪一方的观点强,毫无价值。我们应该多看看技术是怎么演进的,怎么取舍的。) 事由 周五的时候,我在我的微博上发了一个贴说了一 阅读全文

posted @ 2018-03-03 23:17 AlanTu 阅读(1752) 评论(0) 推荐(0) 编辑

无锁队列的实现

摘要: 关于无锁队列的实现,网上有很多文章,虽然本文可能和那些文章有所重复,但是我还是想以我自己的方式把这些文章中的重要的知识点串起来和大家讲一讲这个技术。下面开始正文。 关于CAS等原子操作 在开始说无锁队列之前,我们需要知道一个很重要的技术就是CAS操作——Compare & Set,或是 Compar 阅读全文

posted @ 2018-03-03 23:16 AlanTu 阅读(1614) 评论(0) 推荐(0) 编辑

C/C++语言中闭包的探究及比较

摘要: 这里主要讨论的是C语言的扩展特性block。该特性是Apple为C、C++、Objective-C增加的扩展,让这些语言可以用类Lambda表达式的语法来创建闭包。前段时间,在对CoreData存取进行封装时(让开发人员可以更简洁快速地写相关代码),我对block机制有了进一步了解,觉得可以和C++ 阅读全文

posted @ 2018-03-03 23:15 AlanTu 阅读(500) 评论(0) 推荐(0) 编辑

Linus:利用二级指针删除单向链表

摘要: Linus大婶在slashdot上回答一些编程爱好者的提问,其中一个人问他什么样的代码是他所喜好的,大婶表述了自己一些观点之后,举了一个指针的例子,解释了什么才是core low-level coding。 下面是Linus的教学原文及翻译—— “At the opposite end of the 阅读全文

posted @ 2018-03-03 23:14 AlanTu 阅读(187) 评论(0) 推荐(0) 编辑

Unix考古记:一个“遗失”的shell

摘要: 谨以此文纪念伟大的计算机科学巨匠Ken Thompson和Dennis Ritchie,并同时向其他所有为Unix发展做出贡献的黑客致敬。 历史的尘埃 Unix作为一个举世闻名的操作系统已有40余年的历史,围绕着这个古老的操作系统的发展又衍生出了一系列外围软件生态群,其中一个非常重要的组件就是she 阅读全文

posted @ 2018-03-03 23:13 AlanTu 阅读(337) 评论(0) 推荐(0) 编辑

“C++的数组不支持多态”?

摘要: 先是在微博上看到了个微博和云风的评论,然后我回了“楼主对C的内存管理不了解”。 后来引发了很多人的讨论,大量的人又借机来黑C++,比如: //@Baidu-ThursdayWang:这不就c++弱爆了的地方吗,需要记忆太多东西 //@编程浪子张发财:这个跟C关系真不大。不过我得验证一下,感觉真的不应 阅读全文

posted @ 2018-03-03 23:12 AlanTu 阅读(455) 评论(0) 推荐(0) 编辑

二叉树迭代器算法

摘要: 二叉树(Binary Tree)的前序、中序和后续遍历是算法和数据结构中的基本问题,基于递归的二叉树遍历算法更是递归的经典应用。 假设二叉树结点定义如下: 123456// C++struct Node { int value; Node *left; Node *right;} 中序递归遍历算法: 阅读全文

posted @ 2018-03-03 23:10 AlanTu 阅读(324) 评论(0) 推荐(0) 编辑

Alan Cox:单向链表中prev指针的妙用

摘要: 之前发过一篇二级指针操作单向链表的例子,显示了C语言指针的灵活性,这次再探讨一个指针操作链表的例子,而且是一种完全不同的用法。 这个例子是linux-1.2.13网络协议栈里的,关于链表遍历&数据拷贝的一处实现。源文件是/net/inet/dev.c,你可以从kernel.org官网上下载。 从最早 阅读全文

posted @ 2018-03-03 23:10 AlanTu 阅读(560) 评论(0) 推荐(0) 编辑

C语言全局变量那些事儿

摘要: 作为一名程序员,如果说沉迷一门编程语言算作一种乐趣的话,那么与此同时反过来去黑一门编程语言就是这种乐趣的升华。今天我们就来黑一把C语言,好好展示一下这门经典语言令人抓狂的一面。 我们知道,全局变量是C语言语法和语义中一个很重要的知识点,首先它的存在意义需要从三个不同角度去理解:对于程序员来说,它是一 阅读全文

posted @ 2018-03-03 23:09 AlanTu 阅读(2192) 评论(0) 推荐(0) 编辑

数据即代码:元驱动编程

摘要: 几个小伙伴在考虑下面这个各个语言都会遇到的问题: 问题:设计一个命令行参数解析API 一个好的命令行参数解析库一般涉及到这几个常见的方面: 1) 支持方便地生成帮助信息 2) 支持子命令,比如:git包含了push, pull, commit等多种子命令 3) 支持单字符选项、多字符选项、标志选项、 阅读全文

posted @ 2018-03-03 23:08 AlanTu 阅读(342) 评论(0) 推荐(0) 编辑

C++模板”>>”编译问题与词法消歧设计

摘要: 在编译理论中,通常将编译过程抽象为5个主要阶段:词法分析(Lexical Analysis),语法分析(Parsing),语义分析(Semantic Analysis),优化(Optimization),代码生成(Code Generation)。这5个阶段类似Unix管道模型,上一个阶段的输出作为 阅读全文

posted @ 2018-03-03 23:07 AlanTu 阅读(186) 评论(0) 推荐(0) 编辑

C++面试中string类的一种正确写法

摘要: C++ 的一个常见面试题是让你实现一个 String 类,限于时间,不可能要求具备 std::string 的功能,但至少要求能正确管理资源。具体来说: 能像 int 类型那样定义变量,并且支持赋值、复制。能用作函数的参数类型及返回类型。能用作标准库容器的元素类型,即 vector/list/deq 阅读全文

posted @ 2018-03-03 23:06 AlanTu 阅读(815) 评论(0) 推荐(0) 编辑

伙伴分配器的一个极简实现

摘要: 提起buddy system相信很多人不会陌生,它是一种经典的内存分配算法,大名鼎鼎的Linux底层的内存管理用的就是它。这里不探讨内核这么复杂实现,而仅仅是将该算法抽象提取出来,同时给出一份及其简洁的源码实现,以便定制扩展。 伙伴分配的实质就是一种特殊的“分离适配”,即将内存按2的幂进行划分,相当 阅读全文

posted @ 2018-03-03 23:03 AlanTu 阅读(289) 评论(0) 推荐(0) 编辑

一个“蝇量级” C 语言协程库

摘要: 协程(coroutine)顾名思义就是“协作的例程”(co-operative routines)。跟具有操作系统概念的线程不一样,协程是在用户空间利用程序语言的语法语义就能实现逻辑上类似多任务的编程技巧。实际上协程的概念比线程还要早,按照 Knuth 的说法“子例程是协程的特例”,一个子例程就是一 阅读全文

posted @ 2018-03-03 23:02 AlanTu 阅读(531) 评论(0) 推荐(0) 编辑

由苹果的低级Bug想到的

摘要: 2014年2月22日,在这个“这么二”的日子里,苹果公司推送了 iOS 7.0.6(版本号11B651)修复了 SSL 连接验证的一个 bug。官方网页在这里:http://support.apple.com/kb/HT6147,网页中如下描述: Impact: An attacker with a 阅读全文

posted @ 2018-03-03 23:01 AlanTu 阅读(561) 评论(0) 推荐(0) 编辑

一个浮点数跨平台产生的问题

摘要: 感谢网友唐磊(微博@唐磊_name)投稿,本文原文在唐磊的博客上(原文地址),原文分析还不够好,而且可能对人有误导,所以,我对原文做了很多修改,并加了Linux下的内容。浮点数是一个很复杂的事情,希望这篇文章有助于大家了解浮点数与其相关的C/C++的编译选项。(注:我没有Windows 32位以及C 阅读全文

posted @ 2018-03-03 23:00 AlanTu 阅读(1397) 评论(0) 推荐(0) 编辑

C语言结构体里的成员数组和指针

摘要: 单看这文章的标题,你可能会觉得好像没什么意思。你先别下这个结论,相信这篇文章会对你理解C语言有帮助。这篇文章产生的背景是在微博上,看到@Laruence同学出了一个关于C语言的题,微博链接。微博截图如下。我觉得好多人对这段代码的理解还不够深入,所以写下了这篇文章。 为了方便你把代码copy过去编译和 阅读全文

posted @ 2018-03-03 22:59 AlanTu 阅读(11431) 评论(0) 推荐(1) 编辑

C语言的整型溢出问题

摘要: 整型溢出有点老生常谈了,bla, bla, bla… 但似乎没有引起多少人的重视。整型溢出会有可能导致缓冲区溢出,缓冲区溢出会导致各种黑客攻击,比如最近OpenSSL的heartbleed事件,就是一个buffer overread的事件。在这里写下这篇文章,希望大家都了解一下整型溢出,编译器的行为 阅读全文

posted @ 2018-03-03 22:58 AlanTu 阅读(3776) 评论(0) 推荐(1) 编辑

State Threads 回调终结者

摘要: 上回写了篇《一个“蝇量级”C语言协程库》,推荐了一下Protothreads,通过coroutine模拟了用户级别的multi-threading模型,虽然本身足够“轻”,杜绝了系统开销,但这个库本身应用场合主要是内存限制的嵌入式领域,提供原生态组件太少,使用限制太多,比如依赖其它调用产生阻塞等。 阅读全文

posted @ 2018-03-03 22:57 AlanTu 阅读(224) 评论(0) 推荐(0) 编辑

Leetcode 编程训练

摘要: Leetcode这个网站上的题都是一些经典的公司用来面试应聘者的面试题,很多人通过刷这些题来应聘一些喜欢面试算法的公司,比如:Google、微软、Facebook、Amazon之类的这些公司,基本上是应试教育的功利主义。 我做这些题目的不是为了要去应聘这些公司,而是为了锻炼一下自己的算法和编程能力。 阅读全文

posted @ 2018-03-03 22:56 AlanTu 阅读(929) 评论(0) 推荐(0) 编辑

vfork 挂掉的一个问题

摘要: 在知乎上,有个人问了这样的一个问题——为什么vfork的子进程里用return,整个程序会挂掉,而且exit()不会?并给出了如下的代码,下面的代码一运行就挂掉了,但如果把子进程的return改成exit(0)就没事。 我受邀后本来不想回答这个问题的,因为这个问题明显就是RTFM的事,后来,发现这个 阅读全文

posted @ 2018-03-03 22:55 AlanTu 阅读(251) 评论(0) 推荐(0) 编辑

如何重构“箭头型”代码

摘要: 本文主要起因是,一次在微博上和朋友关于嵌套好几层的if-else语句的代码重构的讨论(微博原文),在微博上大家有各式各样的问题和想法。按道理来说这些都是编程的基本功,似乎不太值得写一篇文章,不过我觉得很多东西可以从一个简单的东西出发,到达本质,所以,我觉得有必要在这里写一篇的文章。不一定全对,只希望 阅读全文

posted @ 2018-03-03 22:54 AlanTu 阅读(767) 评论(0) 推荐(0) 编辑

API设计原则

摘要: 译序 Qt的设计水准在业界很有口碑,一致、易于掌握和强大的API是Qt最著名的优点之一。此文既是Qt官网上的API设计指导准则,也是Qt在API设计上的实践总结。虽然Qt用的是C++,但其中设计原则和思考是具有普适性的(如果你对C++还不精通,可以忽略与C++强相关或是过于细节的部分,仍然可以学习或 阅读全文

posted @ 2018-03-03 22:52 AlanTu 阅读(730) 评论(0) 推荐(0) 编辑

ldd 的一个安全问题

摘要: 我们知道“ldd”这个命令主要是被程序员或是管理员用来查看可执行文件所依赖的动态链接库的。是的,这就是这个命令的用处。可是,这个命令比你想像的要危险得多,也许很多黑客通过ldd的安全问题来攻击你的服务器。其实,ldd的安全问题存在很长的时间了,但居然没有被官方文档所记录来下,这听上去更加难以理解了。 阅读全文

posted @ 2018-03-03 22:50 AlanTu 阅读(458) 评论(0) 推荐(0) 编辑

谁说C语言很简单?

摘要: 前两天,Neo写了一篇《语言的歧义》其使用C语言讨论了一些语言的歧义。大家应该也顺便了解了一下C语言中的很多不可思异的东西,可能也是你从未注意到的东西。 是的,C语言并不简单,让我们来看看下面这些示例: 本题主要是关于C/C++中变量初始化的问题。 答案:sizeof 是一个unsigned的类型, 阅读全文

posted @ 2018-03-03 22:40 AlanTu 阅读(1594) 评论(0) 推荐(0) 编辑

Linux设备驱动Hello World程序介绍

摘要: 自古以来,学习一门新编程语言的第一步就是写一个打印“hello world”的程序(可以看《hello world 集中营》这个帖子供罗列了300个“hello world”程序例子)在本文中,我们将用同样的方式学习如何编写一个简单的linux内核模块和设备驱动程序。我将学习到如何在内核模式下以三种 阅读全文

posted @ 2018-03-03 22:38 AlanTu 阅读(682) 评论(0) 推荐(0) 编辑

深入浅出单实例Singleton设计模式

摘要: 单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了。这个设计模式主要目的是想在整个系统中只能出现一个类的实例。这样做当然是有必然的,比如你的软件的全局配置信息,或者是一个Factory,或是一个主控类,等等。你希望这个类在整个系统中只 阅读全文

posted @ 2018-03-03 22:37 AlanTu 阅读(190) 评论(0) 推荐(0) 编辑

UNIX下的LD_PRELOAD环境变量

摘要: 也许这个话题并不新鲜,因为LD_PRELOAD所产生的问题由来已久。不过,在这里,我还是想讨论一下这个环境变量。因为这个环境变量所带来的安全问题非常严重,值得所有的Unix下的程序员的注意。 在开始讲述为什么要当心LD_PRELOAD环 境变量之前,请让我先说明一下程序的链接。所谓链接,也就是说编译 阅读全文

posted @ 2018-03-03 22:30 AlanTu 阅读(816) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 24 下一页

导航