现在位置: 首页 > 自动控制 > 工业·编程 > 文章
IT是一个需要活到老,学到老的行当。在摩尔定律的推动下,技术领域的革新和提高每天都在发生,这使得IT领域的工作者必须不断的学习,才能紧跟技术的脚步。与此同时,IT人大多都是“热爱学习”的好同志,IT的细分领域非常广泛,从CPU电路设计到PhotoShop磨皮大法,无一不是IT人感兴趣而希望学习的东西。在外部“摩尔定律”和内心“求知欲望”的双重推动下,IT人在学习之路“上下而求索”。然而,我们仍旧面临很多困惑,“学什么”、“怎么学...
阅读全文
2014-11-07 07:12 工业·编程 ⁄ 共 10130字 暂无评论
std::set/std::map (以下用 std::map 代表) 是常用的关联式容器,也是 ADT(抽象数据类型)。也就是说,其接口(不是 OO 意义下的 interface)不仅规定了操作的功能,还规定了操作的复杂度(代价/cost)。例如 set::insert(iterator first, iterator last) 在通常情况下是 O(N log N),N 是区间的长度;但是如果 [first, last) 已经排好序(在 key_compare 意义下),那么复杂度将会是 O(N)。 尽管 C++ 标准没有强求 std::map...
阅读全文
(shared_ptr)的引用计数本身是安全且无锁的,但对象的读写则不是,因为 shared_ptr 有两个数据成员,读写操作不能原子化。根据文档(http://www.boost.org/doc/libs/release/libs/smart_ptr/shared_ptr.htm#ThreadSafety), shared_ptr 的线程安全级别和内建类型、标准库容器、std::string 一样,即: • 一个 shared_ptr 对象实体可被多个线程同时读取(文档例1); • 两个 shared_ptr 对象实体可以被两个线程同时写入(例2...
阅读全文
2014-11-05 12:15 工业·编程 ⁄ 共 7426字 暂无评论
今年8月,经过投票, C++14标准获得一致通过。目前唯一剩下的工作是ISO进行C++标准的正式发布。在本文中,我关注的是新标准中的几个重要点,展示了即将到来的改变会如何影响你的编程方式,特别是在使用被现代C++称之为习语和范型的特性时。 C++标准委员会决心使标准制定过程比过去10年更加快速。这意味着,距上一个标准(即C++11)仅3年的C++14是一次相对较小的发布。这远非一个令人失望的消息,恰恰相反,这对程序员来说是个好...
阅读全文
2014-11-04 07:07 工业·编程 ⁄ 共 15911字 暂无评论
本文谈一谈我在学习网络编程方面的一些个人经验。“网络编程”这个术语的范围很广,本文指用Sockets API开发基于TCP/IP的网络应用程序,具体定义见“网络编程的各种任务角色”一节。 受限于本人的经历和经验,这篇文章的适应范围是: · x86-64 Linux服务端网络编程,直接或间接使用 Sockets API · 公司内网。不一定是局域网,但总体位于公司防火墙之内,环境可控 本文可能不适合: · PC客户端网络编程,程序运行在客户的PC上,环境...
阅读全文
这是一篇比较情绪化的blog,中心思想是“继承就像一条贼船,上去就下不来了”,而借助boost::function和boost::bind,大多数情况下,你都不用上贼船。 boost::function和boost::bind已经纳入了std::tr1,这或许是C++0x最值得期待的功能,它将彻底改变C++库的设计方式,以及应用程序的编写方式。 Scott Meyers的Effective C++ 3rd ed.第35条款提到了以boost::function和boost:bind取代虚函数的做法,这里谈谈我自己使用的感受。 基...
阅读全文
2014-11-02 22:18 工业·编程 ⁄ 共 286字 暂无评论
MSDN中对RGB结构体的定义如下: #define RGB(r, g ,b) ((DWORD) (((BYTE) (r) |   ((WORD) (g) << 8)) |  (((DWORD) (BYTE) (b)) << 16))) 由此可见,一个DWORD体中的后三个字节分别是B,G,R;最前一个字节为零。 fun(BYTE R,BYTE G,BYTE B) { DWORD wValue; wValue = RGB(R,G,B); printf("0x%x", wValue); : //以下将DWORD转化为R,G,B R = wValue & 0xff; G = (wValu...
阅读全文
2014-11-02 15:52 工业·编程 ⁄ 共 5224字 暂无评论
    一年一度的移动开发者盛宴——2014移动开发者大会(简称MDCC 2014)于10月31日至11月2日在北京新云南皇冠假日酒店隆重召开。MDCC是由CSDN和创新工场联合主办的中国最大的移动开发者盛会,致力于推动中国移动互联网生态系统的成长,今年迎来第五届。     CSDN董事长蒋涛发表了题为《软件改变世界:开发者的大时代》的演讲。他表示,这是属于开发者的大时代!数据大爆发、应用大爆发!从手机系统...
阅读全文
2014-11-02 06:35 工业·编程 ⁄ 共 1907字 评论 8 条
我认为C++的allocator是依赖注入的一次失败的尝试。 C/C++里的内存分配和释放是个重要的事情,我同意,在写library的时候,除了默认使用malloc/free,还应该允许用户指定使用内存分配的函数。用现在的话说,如果library依赖于内存分配与释放,就应该允许用户注入这种依赖。我看到有些C library是支持这个的,可以在初始化时传入两个函数指针,指向内存分配和释放的函数。 问题是,allocator是模板参数,而不是构造函数的参数。...
阅读全文
    有前面5章的基础,接下来我们可以以自己的方式去实现一些经典书籍的示例程序。大多数的示例都存在过度封装的倾向,对于初学者来说,要找到“真正起作用的那行代码”非常困难。先把红宝书,即《opengl programming guide》第8版第3章关于各种绘制方式的例子用第五章封装的oglwindow库和glew库实现一下。         具体的函数声明,参数说明通通省了,如果想了解,直接查红宝...
阅读全文