• Linux C高效线程池之无锁化实现

     发表于 3 周 前

    笔者之前照着通用写法练手写过一个小的线程池版本,最近几天复习了一下,发现大多数线程池实现都离不开锁的使用,如互斥量pthread_mutex*结合条件变量pthread_cond*...

  • 通过这 9 本开源书,学好 C++

     发表于 3 个月 前

    书籍非常具有个人主观性,编程类的书籍也不例外。但是不管书籍的风格,重点或者节奏如何,好的 C++ 编程书能带读者开启一段引人入胜的旅程,拓展 C++ 语言的能力,向读者展示如何使用...

  • C 语言高效编程与代码优化

     发表于 5 个月 前

    在本篇文章中,我收集了很多经验和方法。应用这些经验和方法,可以帮助我们从执行速度和内存使用等方面来优化C语言代码。...

  • 用C语言写面向的对象是一种什么样的体验

     发表于 5 个月 前

    众所周知面向对象的三个特性:封装性、继承性、多态性。这几个特性的具体含义我等会会班门弄斧讲一下含义,下面,请允许我先用C++面向对象思维将 设计模式 中最常用的简单工厂模式写一边,...

  • 通过这 9 本开源好书学习 C 语言

     发表于 6 个月 前

    c语言是一种通用的、面向过程的高级编程语言。也是最具流行度和影响力的编程语言之一。该语言在设计时就被设计为可以通过编译器进行编译,以此来对内存进行底层操作、高效地执行机器指令以及在...

  • 一种高效的C++固定内存块分配器

     发表于 7 个月 前

    自定义固定内存块分配器用于解决两种类型的内存问题。第一,全局堆内存的分配和释放非常慢而且是不确定的。你不能确定内存管理需要消耗多长时间。第二,降低由堆内存碎片(对于执行关键操作的系...

  • 使用 C++ 的 StringBuilder 提升 4350% 的性能

     发表于 7 个月 前

    经常出现客户端打电话抱怨说:你们的程序慢如蜗牛。你开始检查可能的疑点:文件IO,数据库访问速度,甚至查看web服务。 但是这些可能的疑点都很正常,一点问题都没有。...

  • C语言格式化字符串漏洞实验

     发表于 7 个月 前

    格式化字符串漏洞是由像printf(user_input)这样的代码引起的,其中user_input是用户输入的数据,具有Set-UID root权限的这类程序在运行的时候,pri...

  • C++中泛型使用导致的膨胀问题

     发表于 7 个月 前

    博主从事C++软件开发多年,由于之前的开发环境都是资源充足的服务器,不用考虑磁盘空间的问题。最近打算在智能家居主机的嵌入式平台上使用C++进行开发。FLASH存储空间有限,这是必须...

  • C++ 线程同步的四种方式

     发表于 8 个月 前

    线程之间通信的两个基本问题是互斥和同步。...

  • C/C++协程库libco:微信怎样漂亮地完成异步化改造

     发表于 8 个月 前

    微信诞生于2011年1月,当年用户规模为0.1亿左右;2013年11月,微信月活跃用户数达到3.55亿,一跃成为亚洲地区拥有最大用户群体的移动终端即时通讯软件。...

  • C 语言中 define 的全部使用方法总结

     发表于 8 个月 前

    学习了这么多年C语言,说实话对宏自以为了如指掌了,没想到看内核代码的时候还是那么吃力,设备驱动代码中有很多这样或者那样的宏定义,各种define,博主在学习的过程中将C语言中所出现...

  • 6 个技巧,提升 C++11 的 vector 性能

     发表于 8 个月 前

    Vector 就像是 C++ STL 容器的瑞士军刀。Bjarne Stoutsoup 有一句话 – “一般情况下,如果你需要容器,就用 vector”。像我们这样的普通人把这句话...

  • 浅谈boost.variant的几种访问方式

     发表于 9 个月 前

    variant类型在C++14并没有加入,在 cppreference 网站上可以看到该类型将会在C++17加入,若想在不支持C++17的编译器上使用variant类型,我们可以通...

  • 现代C++函数式编程

     发表于 1 年 前

    C++98/03中的函数对象,和C++11中的Lambda表达式、std::function和std::bind让C++的函数式编程变得容易。我们可以利用C++11/14里的新特性...

  • 带你深入理解STL之Vector容器

     发表于 1 年 前

    C++内置了数组的类型,在使用数组的时候,必须指定数组的长度,一旦配置了就不能改变了,通常我们的做法是:尽量配置一个大的空间,以免不够用,这样做的缺点是比较浪费空间,预估空间不当会...

  • C++11 新特性之右值引用与移动

     发表于 1 年 前

    右值是一个行将销毁的值,例如(i * 10)这种表达式的值。新标准中允许通过&&标识定义一个右值引用,将其绑定到一个右值上。但是,一个右值引用 变量 又是一个左值,因为它是一个变量...

  • C++ 的脚本语言:ChaiScript

     发表于 1 年 前

    ChaiScript 是一个可以方便的嵌在 C++ 程序里的脚本语言,相比于 V8(Google JavaScript)和 Lua 来说,它的用法要简单得多。...

  • 在c/c++中解决SHA1WithRSA/ras/X509的过程记录

     发表于 1 年 前

    这里记录了一种简单的办法,在遇到写c/c++找不到答案时的最简单找代码办法。...