- 博客(19)
- 资源 (2)
- 收藏
- 关注
原创 2.统计字符串最后一个单词长度
#include <stdio.h>#include <string.h>int len_of_lastword(const char *str){ if(str == NULL || strlen(str) > 5000) return -1; int len = strlen(str); int count = 0;...
2019-07-25 18:18:28
150
原创 1.约瑟夫问题
.1000只猴子,编号1到1000,连成一个圆圈,从中任取一个,由一个方向从1数到3,将3清除出去,这样循环下去,问最后会留下那个?循环队列轮询解决问题#include <stdio.h>#include <stdlib.h>typedef struct _Node{ int value; struct _Node *next;}Node;f...
2019-07-25 16:58:59
242
转载 要是面试官再问你智能指针的问题,就拿这篇文章“盘他”!!!
前一段时间,有不少朋友问我关于智能指针的问题,并且反映经常会在面试中被面试官问到,所以今天小豆君就来讲讲我对智能指针的理解,希望能对大家有所帮助既然讲智能指针,我们就先来看看它为什么会出现。1 传统指针存在的问题刚学C++的朋友,要数最令人头疼的问题莫过于指针了。当你在堆上创建了一个对象时,系统就把这个对象的生命期完全交给了你,当用完之后,系统并不会回收资源,而是需要你来释放它。...
2019-07-20 11:30:31
342
原创 线程池
#ifndef THREAD_POOL_H#define THREAD_POOL_H#include <sched.h> /* for sched_setaffinity() */#include <sys/syscall.h> /* for SYS_gettid() */#include <unistd.h> ...
2019-06-12 15:01:12
151
转载 gdb用法小结
gdb用法小结--学习Linux程序的开始 一、初始化 输入gdb进入gdb调试环境。或者直接输入gdb + progfile来加载文件。 注意该文件是使用gcc(或g++)编译得到的。为了使 gdb 正常工作, 必须 使你的程序在编译时包含调试信息,编译时必须使用-g参数来。 或者进入gdb环境后,通过命令file + ...
2019-05-14 11:43:22
473
转载 如何让udhcpc占用更少的内存?
这个问题的表面现象是用system调用的方式执行udhcpc会失败。解释:由于system是通过fork实现的,而子进程会复制父进程的VM空间,当父进程占用较多VM空间,很容易导致system调用失败。其本质是子进程分配VM空间失败导致的。解决方法:执行:echo 1 > /proc/sys/vm/overcommit_memory即可。更好的解决办法是不使用system调用方法,而...
2019-05-13 14:41:21
570
转载 用doxygen+graphviz生成函数调用流程图
一、问题的产生当分析一个很复杂的项目源代码时,如何有效的分析函数间的调用关系呢?从网上搜索到了如下方法:使用doxygen和graphviz来自动分析函数间的调用关系。二、工具简介doxygen:Doxygen is the de facto standard tool for generating documentation from annotated C++ sources,...
2019-04-15 16:15:35
466
转载 cmake 学习笔记(一)
最大的Qt4程序群(KDE4)采用cmake作为构建系统Qt4的python绑定(pyside)采用了cmake作为构建系统开源的图像处理库 opencv 采用cmake 作为构建系统...看来不学习一下cmake是不行了,一点一点来吧,找个最简单的C程序,慢慢复杂化,试试看:例子一单个源文件 main.c例子二==>分解成多个 main.c hello.h hello.c...
2019-04-03 18:44:02
143
转载 c/c++ 内存管理
这是我刚开始学编程里整理的一篇总结,主要是来源一本叫《高质量c/c++编程》的书,很多年过去了,重新复习一下。1、malloc()malloc()函数用来分配内存:将总共需要的字节数作为参数传递给该函数,返回值是指向最新分配的内存的指针,而如果内存没有分配好,则返回值是NULL。malloc()的使用技术:some_type*pointer;pointer=malloc(...
2019-03-26 17:22:34
155
转载 音视频大牛雷霄骅
https://blog.csdn.net/leixiaohua1020https://www.zhihu.com/question/49211380https://www.bilibili.com/video/av9927626/?share_source=weixin&ts=1522201256&share_medium=iphone&bbid=96e3c3e5...
2019-02-25 20:36:33
10332
1
转载 从Linux程序中执行shell(程序、脚本)并获得输出结果
Contents1. 前言 2. 使用临时文件 3. 使用匿名管道 4. 使用popen 5. 小结1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命令...
2019-02-15 11:23:49
13564
原创 优秀的程序设计者这样设计传送的报文
面对一个人的大型 C/C++程序时,只看其对 struct 的使用情况我们就可以对其编写者的编程经验进行评估。因为一个大型的 C/C++程序,势必要涉及一些(甚至大量)进行数据组合的结构体,这些结构体可以将原本意义属于一个整体的数据组合在一起。从某种程度上来说,会不会用 struct,怎样用struct 是区别一个开发人员是否具备丰富开发经历的标志。 在网络协议、通信控制、嵌入式系统的 ...
2019-01-31 16:56:50
466
转载 使用gdb调试共享库代码
相信有不少的同志调试过包含共享库代码的程序,这个时候最为头疼的就是不能进行单步跟踪(当然是在你不知道如何解决的情况下^_^),本文根据一个实例来讲述如何来解决这个问题。首先来看我们的程序,包含两个文件:dyn.c, main.c,其中dyn.c被编译成一个共享库libdyn.so,在链接的时候要用到它。有一点必须声明,就是你的共享库代码必须是带有调试信息的(比如使用 -g选项)。 $cat...
2019-01-16 16:36:07
700
转载 Linux中error while loading shared libraries错误解决办法
默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,通常通过源码包进行安装时,如果不指定--prefix,会将库安装在/usr/local/lib目录下;当运行程序需要链接动态库时,提示找不到相关的.so库,会报错。也就是说,/usr/local/lib目录不在系统默认的库搜索目录中,需要将目录加进去。 1、首先打开/etc/ld.so.conf文件 2、加入...
2019-01-16 15:11:13
579
转载 高并发性能调试经验分享(上)
高并发性能调试经验分享(上) 转2017-08-30 lancelot 腾讯大讲堂引文4月份的时候看到一道面试题,据说是腾讯校招面试官提的:在多线程和高并发环境下,如果有一个平均运行一百万次才出现一次的bug,你如何调试这个bug?知乎原贴地址遗憾的是知乎很多答案在抨击这道题本身的正确性,虽然我不是这次的面试官,但我认为这是一道非常好的面试题。当然,只是道加分题,答不上,不扣分。答得不错...
2019-01-11 15:55:07
477
转载 采用dlopen、dlsym、dlclose加载动态链接库【总结】
1、前言 为了使程序方便扩展,具备通用性,可以采用插件形式。采用异步事件驱动模型,保证主程序逻辑不变,将各个业务已动态链接库的形式加载进来,这就是所谓的插件。linux提供了加载和处理动态链接库的系统调用,非常方便。本文先从使用上进行总结,涉及到基本的操作方法,关于动态链接库的本质及如何加载进来,需要进一步学习,后续继续补充。如何将程序设计为插件形式,挖掘出主题和业务之间的关系,需要进一步去...
2019-01-11 11:12:24
346
转载 理解 Linux 的硬链接与软链接
Linux 的文件与目录现代操作系统为解决信息能独立于进程之外被长期存储引入了文件,文件作为进程创建信息的逻辑单元可被多个进程并发使用。在 UNIX 系统中,操作系统为磁盘上的文本与图像、鼠标与键盘等输入设备及网络交互等 I/O 操作设计了一组通用 API,使他们被处理时均可统一使用字节流方式。换言之,UNIX 系统中除进程之外的一切皆是文件,而 Linux 保持了这一特性。为了便于文件的管理...
2019-01-08 14:25:59
95
转载 我所理解的设计模式(C++实现)——观察者模式(Observer Pattern) (转)
概述: 最近中国股市起起伏伏,当然了起伏就用商机,小明发现商机后果断想入市,买入了中国证券,他想在电脑客户端上,网页上,手机上,iPad上都可以查看到该证券的实时行情,这种情况下我们应该怎么设计我们的软件呢?我们可以这样:小明的所有客户端上都订阅中国证券这个股票,只要股票一有变化,所有的客户端都会被通知到并且被自动更新。 这就是我们的观察者模式,她定义对象间的
2013-07-13 17:13:58
481
原创 C语言编译全过程剖析(作者:bpsub)
编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。 编译的完整过程:C源程序-->预编译处理(.c)-->编译、优化程序(.s
2011-08-19 00:05:28
660
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人