- 博客(48)
- 资源 (1)
- 收藏
- 关注
原创 发布一个C++跨平台事件驱动型网络框架EasyNet
发布一个C++跨平台事件驱动型网络框架EasyNet,github地址链接是EasyNet,代码总行数不到一万行,其中还包括了protobuf自动生成的一些代码EasyNet是基于Muduo改造过来的,Muduo是一个基于C++开发的Linux服务端高性能、事件驱动型的网络框架,类似于Java中的Netty,python中的Twisted.但是Muduo仅支持LinuxEasyNet现支持的平...
2019-04-10 01:20:12
1238
原创 C++中关于全局对象的初始化顺序
在stackoverflow上看到下面这样一个问题: 这个问题很简单,意思就是两个全局不同类的instance,其中一个依赖另一个,怎么确保他们的构造顺序。也就是说O2依赖于o1,o2被实例化之前,我们要确保o1一定要被构造出来,或者说初始化。就上面来看,如果这样两个全局变量o1和o2在同一个编译单元,说白了就是在同一个cpp文件里,那么编译器会保证按照他们出现的顺序
2014-01-03 15:42:14
5485
1
原创 Malloc最多一次能分配多少内存
相信C/C++程序员都用过这个库函数, 这个函数时程序员申请堆中的内存,需要自己手动释放内存,所以这个函数也是Memory Leak的根源。但是malloc一次最多能申请多少内存呢,显然这个跟我们物理内存的大小和我们的系统,编译器都有一定的关系。已经不记得之前在哪里遇到过这个问题,今天忽然想起来了,于是自己做了个实验。我的开发环境是Windows7 64位,内存8G,IDE是codeblo
2014-01-03 15:42:12
7297
1
原创 利用QT和libvlc写RTSP播放器
这几天学习了下QT,QT核心的东西就是其信号与槽,其他的就是界面的设计,一个程序所有的逻辑部分都是利用信号和槽串起来的。一个widget发送信号,另外一个widget根据这个信号绑定的槽执行相应的函数,这样就实现了界面和程序逻辑的 交互操作。为了练习QT,结合前段时间对VLC播放器的分析,知道VLC播放器的界面也是QT写的,而且Videolan还提供了libvlc核心库给其他程序员做二次开发,再次
2014-01-03 15:42:09
2881
2
原创 关于C++中虚函数表存放位置的思考
其实这是我前一段时间思考过的一个问题,是在看《深入探索C++对象模型》这本书的时候我产生的一个疑问,最近在网上又看到类似的帖子,贴出来看看: 我看到了很多有意思的答案,都回答的比较好,下面贴出一些具有代表性的: Answer 1: Answer 2:
2014-01-03 15:42:07
985
原创 Linux中的内存管理
前一段时间看了《深入理解Linux内核》对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux中内存管理的一些看法和认识。 我比较喜欢搞清楚一个技术本身的发展历程,简而言之就是这个技术是怎么发展而来的,在这个技术之前存在哪些技术,这些技术有哪些特点,为什么会被目前的技术所取代,而目前的技术又解决了之前的技术所
2014-01-03 15:42:05
763
原创 C++ 避免隐藏继承而来的名称
关于C++中继承这个概念相比大家都很熟悉,那么子类究竟能从父类继承到哪些东西,哪些东西又是子类继承不到的呢?可能很多人都会觉得父类所有的东西都会被子类继承,包括成员函数和成员变量,否则就违背了“父子关系”这字面上的意思,其实不然,首先我们先看一小段简单的代码,这段代码很容易理解 点击(此处)折叠或打开 #includ
2014-01-03 15:42:02
660
原创 VLC播放RTSP视频延迟问题
之前写过一篇关于在Linux平台上编译android平台上VLC播放器源代码的文章,vlc这款播放器非常优秀而且是开源的,它的核心是开源视频编解码库ffmpeg。而且这款播放器还支持RTSP协议,这个主要是用开源的live555来实现的,live555这个库以后还需要认真研习。 一:PC端(Windows平台)VLC播放RTSP视频延迟问题解决 前几天用PC平台上的VLC播
2014-01-03 15:42:00
5782
1
原创 Mac OS上编译Mobile VLC for ios
这篇文章是对这两天工作的一个总结,在MacOS上编译target版本MobileVLC for ios成功,其实这本来是个很简单的事情,不过中间还是出现了不少问题,由于自己本身从来没有接触过MacoS,更没有做过ios上的开发,所以还是折腾了几天,不过最后终归是折腾出来了,呵呵,只要功夫深,贴车磨成针,^_^,好了,不废话了。 开发平台: MacOS X
2014-01-03 15:41:58
1565
原创 Linux下编译VLC for Android源代码总结
由于项目需要,需要一个在android平台能够支持RTSP协议的播放器,由于之前没有android平台的经验,所以找了著名的videoLAN的VLC播放器,更令人惊奇的是这款播放器居然还是完全开源的。在此向那些开源软件的作者和组织致以崇高的敬意,是你们的存在使得计算机软件产业蓬勃发展,你们帮助了很多囊中羞涩的个人和企业,让他们也有机会用上高质量的软件,同时不可避免的吸引了一批有志之士加入到你们
2014-01-03 15:41:55
979
原创 C++中-如何跟踪函数和类
本文是对>中自己跟踪自己的类这章内容的一个读书笔记,其中也加上了自己的理解,这个内容页给了我很大的启发,让我更加惊叹c++是如此的强大,令人魂牵梦萦。本文的主要内容是阐述以何种方式提供有关函数执行和类操作的调试信息,调试信息在我们项目开发和调试中是非常重要的,很多时候我们是通过查看程序运行的log来分析程序的问题所在,毫无疑问,准确而高效的log会帮助我们很快定位出程序出错在哪个位
2014-01-03 15:41:53
2237
原创 C++中动态资源管理
昨天看到一个知识点觉得挺有意思的,而且自己还不是很清楚,觉得讲得很好。主题是“以对象来管理资源” C++中用得最多的就是动态的内存分配,程序中的大部分bug也都是源自于内存泄露,这也是C++相较于其他高级语言更复杂的主要原因之一,不过考虑到它强大的功能和超高的效率,这样的复杂度也是应该的,所以上天是公平的,有点扯远了。内存只是我们必须管理的资源之一,其他常用到的资源还包括文件描述符,数
2014-01-03 15:41:51
957
原创 c++中构造函数调用另一构造函数的问题
今天去一家公司面试,笔试中碰到一个题,觉得有些意思,自己当时其实也没有完全搞清楚,这里跟大家分享一下,也算是自己做个笔记 题目如下:问下列代码的打印结果为0吗? #include #include using namespace std; struct CLS { int m_i;
2014-01-03 15:41:49
871
原创 小议垃圾回收算法
今天接到一个电话面试,幼小的心灵又被无情的重创了一次。电话那头的面试官很客气的说了下他是大众点评的,然后就开始了电话面试。心理嘀咕,不用这么高效率吧,给哥点心理准备啊,妹的,^_^.首先问了一下我基础知识,下面是部分对话内容面试官:java怎么样我:不会面试官:那你c/c++是不是比较熟我:还行说完似乎有点心理没底了,不过话都说出去了,只好硬着头皮来了,男人要浮点责任嘛
2014-01-03 15:41:46
1049
原创 inline和virtual冲突吗
在优快云上看到一个帖子,有个人提出了一个问题,下面贴出帖子的内容,个人感觉比较有意思不知道身为读者的您是否有没有类似上面两个问题的疑惑,首先应该向这位同学学习,可能有人说他肯定是个初学者,帖子中有很多这样的回复,类似说楼主死读书啊,不求甚解之列的,不乏攻击性。个人很鄙视这些人,因为其中的大部分人都在胡说八道,知其然不知其所以然,光是楼主的这份独立思考的态度就值得我们学习。好了,圆
2014-01-03 15:41:44
2205
原创 python中matplotlib绘图中文显示问题
由于毕业设计中用到了python的matplotlib绘图,期间老师一直要让图中的title和label中文显示,matplotlib默认不支持中文,经过了一上午的折腾,终于成功解决这个问题,这里分享一下,也算是自己做个笔记matplotlib是支持unicode编码的,出现图1的问题主要是没有找到合适的中文字体,解决方法有两个:1.直接修改配置文件matplotlibrc这种
2014-01-03 15:41:42
8865
原创 C++中必须知道的问题
把前段时间学习c++中遇到的一些问题跟大家分享一下1.静态成员函数为什么不能声明为const2.当一个父类对象以其子类对象初始化时会发生什么3.一个类的对象所占内存是由什么决定的4.构造函数初始化列表的作用5.为什么最好不要在构造函数和析构函数中调用虚函数6.虚函数表是怎么回事7.虚函数指针vptr存在于一个对象的什么位置,其作用是什么8.一个string对象的
2014-01-03 15:41:40
855
原创 Linux缓冲输出问题
在网上看到一段这样的代码,这段代码本身是有问题的,我看了一下,觉得没什么问题,结果编译运行一下 确实报错,查了一下linux下缓冲方面的资料,跟大家分享一下,最后说下这段代码的问题所在 当一个程序运行输出时,是否有必要将输出立即展示给用户?这个问题根据用户需要而定 举个例子: 假设一个程序输出到终端,向终端
2014-01-03 15:41:37
733
原创 Linux下从信号量看线程调度时间
前几天写了一篇文章关于Linux下进程调度时间的,本意是想测试下实时性能的,包括中断响应时间等等,这个可能需要借助于硬件发出终端来测试, 那片文章是讲的是通过发送信号给另一个进程,然后测量发送信号到进入信号处理程序之间的时间 信号只是针对进程来说的,今天讲的主要是通过信号量semaphore来测试一下线程间切换的时间 首先看下基础知识: 1.
2014-01-03 15:41:35
1290
原创 real time performance test
总结一下这两天做的一些事情,前几天Boss交给我一个小任务,大概意思就是为公司的一个新的项目选定操作系统,这个项目对系统的实时性要求特别高,然后看看用什么办法能测量出操作系统的实时性能 先介绍下背景知识,操作系统分为实时操作系统和分时操作系统,这是由他们的应用范围来决定的,我们通常所用的Windows,Linux都是基于分时的通用操作系统,实时操作系统比较有名的是w
2014-01-03 15:41:33
861
原创 Linux下Python与C程序进程间通信
这几天做了一点事情,略微有些收获,跟大家分享一下 Python大家应该比较熟悉,很好的一门语言,最近几年一直很流行,尤其是在外企,比较有名的IT公司几乎毫无例外的都使用python,像Intel, Marvell, Cisco, EMC等等。 我也认为这门语言很优秀,首先是语法简单,学起来很快,如果有c++经验的话几天就上手了, 其次是开源,那就意味着你可
2014-01-03 15:41:31
6180
1
原创 关于Linux下文件恢复,安全销毁的研究
关于这个删除文件再恢复的问题网上有很多这方面的资料,也有很多工具和方法,本文将以Linux下的ext2文件系统为例介绍文件恢复和销毁背后的原理。 我们知道,windows下删除文件可以从回收站恢复,其实即使清空了回收站,被删除的文件和数据还是能够恢复的,windows下有一些专业的恢复数据的工具,比如easyrecovery等。Linux下也是如此,我们用rm命令删除了某
2014-01-03 15:41:28
854
原创 Linux下进程崩溃时定位源代码位置
前几天领导安排一个小项目,大意是解决这样一个问题:在Linux系统下,进程可能由于各种原因崩溃,此时我们要找到出问题的源代码在某一个文件的具体行号,这样调试起来就会方便,高效很多,可能是公司项目要用到,想想挺有意思的,加上自己本身是个Linux狂热者,最终花了两三天解决了这个问题,当然我的领导我们称之为专家指点了我很多,废话少说,下面是解决问题的思路和步骤以及自己的一些想法 解决该问题的大体思路
2014-01-03 15:41:26
2819
原创 SHELL 文件读取
1 -- SHELL读取文件的方法#使用read命令读取一行数据while read mylinedo echo "LINE:"$mylinedone #使用read命令读取一行数据cat datafile.txt | while read mylinedo echo "LINE:"$mylinedone#读取一行数据cat datafile.txt | while myline
2014-01-03 15:41:21
1103
原创 将博客搬至优快云
非常感谢Chinaunix这个网站,让我收获很多,不过由于这个站点的博客编辑功能让本人有些不能接受,所以从今天起,本人决定将博客搬移到优快云,不过chinaunix这个网站我还是会一如既往的关注的,希望各位朋友多多交流,谢谢! 管理员在2009年8月13日编辑了该文章文章。 -->
2014-01-03 15:41:19
805
原创 FFmpeg深入分析之零-基础
FFmpeg是相当强大的多媒体编解码框架,在深入分析其源代码之前必须要有基本的多媒体基础知识,否则其源代码会非常晦涩难懂。本文将从介绍一些基本的多媒体只是,主要是为研读ffmpeg源代码做准备,比如一些编解码部分,只有真正了解了多媒体处理的基本流程,研读ffmpeg源代码才能事半功倍。 下面分析一下多媒体中最基本最核心的视频解码过程,平常我们从网上下载一部电影或者一首歌曲,那么相应的多
2014-01-03 15:41:17
2176
原创 深入分析FFmpeg之一-打开媒体文件并读取文件头信息
三哥的技术专栏,转载请注明出处!!! 分析了一段时间的ffmpeg源代码,是时候写个笔记做个总结了。所以决定写一系列关于分析FFmpeg架构及API使用的笔记,现在计划涵盖的内容包括从打开一个媒体文件(access)到demux,然后到decode,最后render出来这整个过程,循序渐进,当然也包括转码过程, 其中每个过程我都会尽量仔细分析并对源代码注释,并给出相应的实例代码。希望
2014-01-03 15:41:14
2057
原创 Linux进程调度CFS算法实现分析
网上讲CFS的文章很多,可能版本不一,理解不尽相同。我以问题追溯方式,跟踪源码写下我对CFS的理解,有的问题我也还没理解透,欢迎对内核有兴趣的朋友一起交流学习,源码版本是与LKD3配套的Linux2.6.34 背景知识: (1) Linux的调度器类主要实现两类进程调度算法:实时调度算法和完全公平调度算法(CFS),实时调度算法SCHED_FIFO和SCHED_RR
2014-01-03 15:41:12
1249
原创 拷贝构造函数还是赋值运算符
// 何时调用拷贝构造函数,何时会调用赋值操作? // 记得Effective C++中有个条款是关于何时调用拷贝构造函数和赋值运算符的,觉得这个知识点挺有意思的,可能也是很多新手包括我自己比较疑惑的地方,所以就研究了一下,下面是分两种情况分别说明了何时调用拷贝构造函数和赋值运算符,当然调用拷贝构造函数的时机很多,这里仅仅列出了一种情况,这一种是比较容
2014-01-03 15:41:10
724
原创 对C++中含有虚基类对象模型的思考
今天看到一篇文章,上面提到了一个很有意思的问题,拿来跟大家分享一下 开门见山,下面是几个class的定义 class A { }; class B:virtual public A { }; class C:virtual public A
2014-01-03 15:41:07
628
原创 linux内核
from: http://www.cnmaizi.com/tech/kernel/30-embedded-linux-kernel-develop-self-testing-topic/如果你能正确回答以下问题并深刻理解相关知识点原理,那么你可以算得上合格的Linux内核开发工程师,尝试一下吧!1)Linux中主要有哪几种内核锁? 2)Linux中的用户模式和内核模式是什么含意?3)怎样申请大块内
2014-01-03 15:41:05
932
原创 判断一个整数是否为2的n次幂
1.n与n-1按位相与01int bool floor_7(int num)02{03 if (num 04 {05 return false;06 }07 else08 {09 return ((num & (num - 1)) == 0) ? true : false;10 }11}2.不断相除01int Check1(int n
2014-01-03 15:41:03
1180
原创 排序
排序算法1 插入排序 a.直接插入 b.希尔排序2 选择排序 a.直接选择排序 b.堆排序3. 交换排序 a.冒泡 b.快速排序#include #include int partition(int a[], int low, int high){int standard = a[low];int i=low;int j=
2014-01-03 15:41:01
547
原创 海量数据处理算法 各种STL容器使用的数据结构剖析
教你如何迅速秒杀掉:99%的海量数据处理面试题转载于:结构之法算法之道blog前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。 毕竟受文章和理论之限,本文将摒弃绝大部分
2014-01-03 15:40:59
1665
原创 文件特殊权限
Linux系统下的特殊文件权限(SUID,SGID,SBIT) (2012-02-11 13:38)标签: Linux 分类: Read文件特殊权限前面一直提到文件的重要权限,就是rwx这3个读、写、执行的权限。但是,怎么 /tmp权限有些奇怪?还有, /usr/bin/passwd也有些奇怪,怎么回事呢?[root@linux ~]# ls -ld /tmp ; ls -l /usr/bin
2014-01-03 15:40:57
966
原创 grep总结
Grep命令式linux系统当中应用最广泛的命令之一,有三种形式:1:grep 标准grep命令2:egrep 扩展的grep3:fgrep 允许查找一个字符串而不是一个模式,注意这里的'f'不是fast的意思,实际上他的速度跟grep差不多实际上grep命令只应该有一种形式,但是目前还不能讲这三种grep形式整合到一起在grep命令中输入字符串参数时最好用双引号引起来,这样做有两个原因,第一:防
2014-01-03 15:40:54
640
原创 Linux中忘记密码
linux中忘记密码大概有两种解救而方法:1:单用户模式(也称维护模式):在系统启动时grub进入到要启动的内核时按'e',在 kernel vmlinuz.....(centos redhat等版本),或者vmlinuz .....splash (ubuntu等版本)后面加上single,然后启动,就会进入单用户维护模式,这时候可以修改根用户密码2:系统启动时直接进入/bin/bash也是在刚才
2014-01-03 15:40:52
609
原创 Linux中shell文件操作大全
1.创建文件夹#!/bin/shmkdir -m 777 "%%1"2.创建文件#!/bin/shtouch "%%1"3.删除文件#!/bin/shrm -if "%%1"4.删除文件夹#!/bin/shrm -rf "%%1"5.删除一个目录下所有的文件夹#!/bin/bashdirec="%%1" #$(pwd)for dir2de
2014-01-03 15:40:50
1692
原创 Ubuntu修改mac地址
ubuntu下修改mac地址的方法Ubuntu下修改MAC地址1. 暂时修改在ubuntu下更改MAC地址的命令是ifconfig(和windows下的ipconfig还是比较相似的),如果要更改MAC地址,可以新开一个终端,依次使用以下命令:sudo ifconfig eth0 down (停用网卡)sudo ifconfig eth0 hw ether XX:XX:XX:XX:
2014-01-03 15:40:48
4510
44b0中文手册,ARM开发学习必不可少
2011-05-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人