开发笔记
油渣@
擅长c/c++,linux,服务器,后台开发,安全领域摸爬滚打。
展开
-
多线程线程数设计
1.计算密集型线程池cpu使用率较高(也就是一些复杂运算,逻辑处理),所以线程数一般只需要cpu核数的线程就可以了。 这一类型的在开发中多出现的一些业务复杂计算和逻辑处理过程中。数量一般为 N+1个 N为CPU核心数2.IO密集型cpu使用率较低,程序中会存在大量I/O操作占据时间,导致线程空余时间出来,所以通常就需要开cpu核数的两倍的线程, 当线程进行I/O操作cpu空暇时启用其他线程继续使用cpu,提高cpu使用率 通过上述可以总结出:线程的最佳数量: 最佳线程数目 = ((线程等..原创 2021-08-19 11:34:04 · 224 阅读 · 0 评论 -
c++11智能指针使用
智能指针是c++很重要的一项技术,面试经常会问,诸如以下几个问题:1.shared_ptr的原理是什么?2.shared_ptr是线程安全的吗?3.如何把一个已存在的指针交给已存在的shared_ptr管理?4.什么情况下使用unique_ptr?5.如何将unique_ptr对象的所有权转移给另外一个unique_ptr?6.weak_ptr解决了什么样的问题?智能指针管理的是动态内存的指针,是new出来的,那么什么情况下需要使用动态内存呢?有以下几点:1.程序不知道自原创 2020-11-30 14:17:37 · 247 阅读 · 0 评论 -
c++服务器开发之性能优化
为什么要写这篇文章?聊技术的时候,谈到内存问题、CPU问题、效率问题的时候,无疑是考量一个工程师的实战水平,作为c++开发工程师,没有自己解决以上问题的专业手段,或许就是缺陷。我之所以写这个文章,主要是为了记录、分享我的办法。我之前写过内存泄漏的一篇文章(https://blog.csdn.net/yl175510/article/details/107384317),其实也是一种手段,如果为你所用,聊技术的时候绝对可以加分。之前一个同事在线上出问题的时候,竟然用gdb和valgrind去调试,当时原创 2020-09-02 11:47:53 · 548 阅读 · 0 评论 -
c/c++程序内存泄漏跟踪总结
描述最近一段时间,服务器频繁出现内存增长严重,导致服务器性能极具下降,由于服务器代码比较庞大,而且是线上问题,所以处理起来比较棘手,好在我通过一些手段定位到了bug的具体位置,故以记录之。由于是线上问题,所以像valgrind、gdb、memstack基本不适用,就算你是gdb高手,通过gdb adb attach pid 和gdb dump memory 也是不能很准确定位,而valgrind本身的消耗会影响别人测试或者调试。c/c++程序的内存泄漏,个人认为有几种情况:1、malloc、原创 2020-07-16 16:48:17 · 971 阅读 · 2 评论