type_traits在C++中是非常有用的技巧,可以说如果不懂type_traits,那根本看不懂stl相关代码,最近对type_traits比较感兴趣,于是找到了gcc的type_traits源码通读了一遍,总结一下。
每个开发者编程中都会记录log信息,多数人都会使用log第三方库,log库使用起来很方便,但我们也需要了解log系统的原理,这里以glog为例进行分析。
如何通过/proc文件系统找到正在运行的进程的字符串所在的虚拟内存地址? 绘制虚拟内存排布图;堆内存分配及malloc实现原理
gdb基本上是每个unix环境开发者都会使用的调试工具,使用gdb基本上可以按照自己的需求随心所欲的运行程序,可让被调试的程序在自己所指定的断点处停住,同时可以检查程序当前的状态,检查各种变量及寄存器的值,也可以动态的改变程序的执行环境。
我在客户端开发时由于需要使用数据库,于是选择了轻巧的sqlite数据库研究了一下,今天在这里和大家分享下我总结的sqlite使用文档。
c++11新特性之std::function和lambda表达式
左值引用、右值引用、移动语义、完美转发,你知道的不知道的都在这里
在上一篇文章里,我分享了关于C++线程池的实现的内容。今天,我们来讲下C++定时器的实现。
关于C++11新特性,最先提到的肯定是类型推导,C++11引入了auto和decltype关键字,使用他们可以在编译期就推导出变量或者表达式的类型,方便开发者编码也简化了代码。
C++11新增了列表初始化的概念。
c++11关于并发引入了好多好东西,这里按照如下顺序介绍:
C++11关于模板有一些细节的改进
整洁的代码在团队中无疑是很受欢迎的,可以高效的被其它成员理解和维护,本文参考《C++代码整洁之道》和《Google C++编码规范》,结合自己的一些想法整理如下:
理论上计算机对于任何变量的访问都可以从任意位置开始,然而实际上系统会对这些变量的存放地址有限制,通常将变量首地址设为某个数N的倍数,这就是内存对齐。
内存泄漏是指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费。
关于c++的异常处理,网上有很多的争议,本文会介绍c++的异常处理的使用,以及我们应该使用异常处理吗,以及使用异常处理需要注意的地方。
智能指针是C++中一项很常用的技术,合理的使用智能指针可以更方便的管理内存,降低内存泄漏的风险,这里只介绍C++11后官方的智能指针。
理论上计算机对于任何变量的访问都可以从任意位置开始,然而实际上系统会对这些变量的存放地址有限制,通常将变量首地址设为某个数N的倍数,这就是内存对齐。
在C++中,我们都知道,new和delete及new[]和delete[]需要配对使用,为什么一定要配对使用呢?
Minimal APIs 是.Net 6 中新增的模板,借助 C# 10 的一些特性以最少的代码运行一个 Web 服务。本文脱离 VS 通过 VS Code,完成一个简单的 Minimal Api 项目的开发。
适配器模式的作用就是把原本不兼容的接口,通过适配修改到统一的过程,使得用户方便使用。
组合模式是把相似对象或方法组合成一组可被调用的结构树对象的设计思路。
模板方法模式是一种行为设计模式,它在超类中定义一个算法的框架,允许子类在不修改结构的情况下重写算法的特定步骤。
上一篇文章主要带领大家认识了线程,也了解到了线程的基本用法和状态,接下来就让我们一起学习下什么是线程同步。
访问者模式能将算法与其所作用的对象隔离开来。
中介者模式是一种行为设计模式,能让你减少对象之间混乱无序的依赖关系,该模式会限制对象之间的直接交互,迫使它们通过一个中介者对象进行合作。
观察者又名事件订阅者、监听者。
含义:生成器模式是一种创建型模式,使你能够分步奏创建复杂对象。可是使用相同的创建代码生成不同类型和形式的对象。
装饰器的核心就是再不改原有类的基础上给类新增功能。可以避免继承导致的子类过多,可避免AOP带来的复杂性。
代理模式 是一种结构型设计模式,让你能够提供对象的替代品或其占位符。代理控制着对于原对象的访问,并允许在将请求提交给对象前后进行一些处理。
也叫门面模式,主要解决的是降低调用方的使用接口的复杂逻辑组合。有时候也会被用在中间件层,将服务中的通用性的复杂逻辑进行中间件层包装,让使用方可以只关心业务开发。可增强代码的隔离性,以及复用性。
迭代器模式是一种行为设计模式,让你能在不暴露集合底层表现形式(列表、栈、树等)的情况下遍历集合中所有的元素。
备忘录模式是可以恢复或者说回滚、配置、版本、悔棋为核心功能的设计模式,而这种设计模式属于行为模式。在功能实现上是以不破坏原对象为基础增加备忘录操作类,记录原对象的行为从而实现备忘录模式。
享元模式主要在于共享通用对象,减少内存的使用,提升系统的访问效率。而这部分共享对象通常比较耗费内存或者需要查询大量接口或者使用数据库资源,因此统一抽离作为共享对象使用。
原型模式主要解决的问题就是创建重复对象,而这部分对象内容本身比较复杂,生成过程可能从库或者RPC接口中获取数据的耗时较长,因此采用克隆的方式节省时间。