编程基础
文章平均质量分 50
Smith先生
全栈多媒体软件系统技术负责人与资深架构师,目前任职于国际大型半导体公司,拥有超过8年以上的音视频软件设计,产品开发与平台化交付经验。工作以来,带领了多个大型全新多媒体项目攻关开发,精进和优化了多个大型软件系统,成功完成平台化建设和运维,为多个技术公司构建了可持续迭代的软件生态,业务面设计GPU系统、人工智能、视频监控系统、会议系统、采集系统、数字电视、多媒体框架、播放器、流式计算及编解码加速等,拥有从上层到底层的全栈软件开发经验和技术团队建设和管理经验。学海无涯,山外有山,天外有天。同大部分技术人一样,希望每天保持进步,最终实现财富自由和人生理想。:)
展开
-
Linux下使用nm命令排查和解决“undefined reference to ”
一、案例 编译出一个动态库.libXXXEngine.so。然后直接在另一个工程中,把头文件include进来,并link到该库:-lXXXEngine.尝试编译,出错:.//libXXXEngine.so:undefined reference to`CHttpParser::GetCurrentHttpMethod(http_method_t&)' .//l原创 2013-10-29 13:02:45 · 19743 阅读 · 0 评论 -
深入理解Java内存模型(一)——基础
原文出处: http://www.infoq.com/cn/articles/java-memory-model-1转载 2014-06-05 10:16:16 · 879 阅读 · 0 评论 -
深入理解Java内存模型(二)——重排序
原文出处:http://www.infoq.com/cn/articles/java-memory-model-2转载 2014-06-05 10:42:48 · 1405 阅读 · 0 评论 -
(推荐)智能指针boost::weak_ptr 详解
【1】boost::weak_ptr简介boost::weak_ptr属于boost库,定义在namespace boost中,包含头文件 #include便可以使用。【2】boost::weak_ptr详解智能指针boost::scope_ptr和智能指针boost::shared_ptr就完全可以解决所有单个对象内存的管理问题。这儿咋还多出一个boost::weak_ptr,是转载 2014-06-07 09:53:45 · 10562 阅读 · 0 评论 -
C++ boost库----share_from_this类的作用和实现原理
使用boost库时,经常会看到如下的类class A:public enable_share_from_this在什么情况下要使类A继承enable_share_from_this?使用场合:当类A被share_ptr管理,且在类A的成员函数里需要把当前类对象作为参数传给其他函数时,就需要传递一个指向自身的share_ptr。我们就使类A继承enable_share_from_th转载 2014-06-07 09:37:05 · 11382 阅读 · 0 评论 -
Boost智能指针——shared_ptr
boost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限。顾名思义,boost::shared_ptr是可以共享所有权的智能指针,首先让我们通过一个例子看看它的基本用法: #include#include #include class implementation{pub转载 2014-06-07 10:00:02 · 1471 阅读 · 0 评论 -
Boost智能指针——scoped_ptr
boost::scoped_ptr和std::auto_ptr非常类似,是一个简单的智能指针,它能够保证在离开作用域后对象被自动释放。下列代码演示了该指针的基本应用:#include#include #include class implementation{public: ~implementation() { std::co转载 2014-06-07 10:06:06 · 886 阅读 · 0 评论 -
Linux pipe详解
1、 管道概述及相关API应用1.1 管道相关的关键概念管道是Linux 支持的最初Unix IPC形式之一,具有以下特点:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单转载 2014-05-29 11:22:50 · 9695 阅读 · 0 评论 -
也谈函数闭包
我们经常听到闭包的概念。原创 2014-10-09 15:41:47 · 1368 阅读 · 0 评论 -
Django MTV模式详解
出自:http://blog.csdn.net/dbanote/article/details/11338953转载 2014-10-31 11:09:54 · 25661 阅读 · 2 评论 -
线程阻塞的一种情况
阻塞状态是正在运行的线程遇到某个特殊情况。例如,延迟、挂起、等待I/O操作完成等。 进入阻塞状态的线程让出CPU,并暂时停止自己的执行。线程进入阻塞状态后,就一直等待,直到引起阻塞的原因被消除,线程又转入就绪状态,重新进入就绪队列排队。 例如:线程A等待线程B的数据,线程B等待线程A的数据,互相等待,就会陷入阻塞,这也是一种线程阻塞。下面的例子:假设线程A获得了mutex锁,这时另外原创 2013-06-05 17:22:11 · 3068 阅读 · 0 评论 -
【C++】boost::bind和函数对象一起使用实现便捷的异步编程
在C++面向对象编程中,观察者模式是大家熟知的原创 2014-05-04 16:12:40 · 2957 阅读 · 0 评论 -
Linux系统C++中多线程Singleton的实现
我想关于Singleton模式的实现和资料很多很多,这里为什么专门拿出来写一写,还是因为个人觉得要想把单例模式写好还真不是一件容易的事情。其中涉及到不少编译和底层的知识。这里以Linux平台为例,这是因为本人对windows下的编程实在不太熟悉。本文所有代码均上传至github仓库:https://github.com/kevin-shanghai/Programming_Practi转载 2014-06-04 16:26:29 · 1720 阅读 · 0 评论 -
gsoap 开发:基于wsdl文件和C++语言开发客户端程序
开发环境:ubuntu linux 3861.下载gsoap-2.8.15 2.解压缩到指定目录.(可以再安装gsoap到系统,但非必须)。 3.获取wsdl文件。这里假设我们要获取QQ 在线状态的 wsdl 文件.。在http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl可以获取到.原创 2013-07-24 12:42:37 · 5671 阅读 · 0 评论 -
决不在基类的构造和析构过程中调用virtual函数
这是一个很容易让人迷惑的principle!按照我们对C++多态性的理解:定义基类中某个函数为虚函数是为了允许用基类的指针来调用子类的这个函数。通过virtual函数实现程序运行时候的动态调用。 However,是不是只要在基类中使用了virtual函数就一定能够实现这种动态调用呢?是否只要在base class中定义了虚函数,那么在通过基类指针指向子类的时候就一定会调用子类实现转载 2013-11-16 21:31:38 · 1317 阅读 · 0 评论 -
如何避免被C++默认拷贝构造函数忽悠?
一、背景介绍 因为工作关系,需要用到C++编程。对于我来说,虽然一直从事的是linux平台下的嵌入式软件开发,但深入用到C++的特性的地方并不多。对于C++,用得最多的无非是指针、封装、继承、组合以及虚函数。对于复制构造函数、重载操作符、智能指针等概念,虽然也时有接触,但真正自己写代码需要用到的时候,并不多。 本文即使尝试对复制构造函数的定义、作用及原创 2013-12-08 19:16:02 · 5125 阅读 · 0 评论 -
valgrind安装和使用
1.Valgrind下载和安装(1)下载valgrind-3.9.0.tar.bz2(2) 解压缩bzip2 -d valgrind-3.9.0.tar.bz2;(3)tar -xvf valgrind-3.9.0.tar(4)/configure --prefix=/usr/local/(5)make && make install2.使用简单示例 v原创 2014-01-13 08:38:02 · 2366 阅读 · 0 评论 -
通过printf在控制台终端输出带颜色的打印或日志信息
考虑以下应用场景或需求:用户希望看到的显示在终端的打印信息能够按颜色输出。比如,错误信息用红色输出,正确信息用绿色输出,普通信息则是常规输出。 如何做到呢?printf函数可以帮助做到这一点。 使用格式为: printf("\033[字背景颜色;字体颜色m字符串\033[0m" ); 例如:printf("\033[47;31mhello world\033[转载 2014-03-31 17:41:53 · 11773 阅读 · 0 评论 -
C++中指向成员函数的指针
转自:http://blog.csdn.net/zha02/article/details/24986941转载 2014-05-04 22:11:42 · 811 阅读 · 0 评论 -
内存/边界对齐(boundary alignment)简介
一、什么是内存对齐原创 2014-05-05 13:21:08 · 17246 阅读 · 10 评论 -
Linux Makefile学习之旅(1)----规则
一、从一个最简单的makefile原创 2014-05-05 17:45:27 · 1856 阅读 · 0 评论 -
一个由于锁的作用域导致core dump的问题的解决
请看如下代码:void CCommParams::setParams( const char * authUser, const char * authPsw, const char * securityLevel, const char * p原创 2014-04-22 11:35:09 · 3667 阅读 · 3 评论 -
The 7 Habits of Highly Overrated People
I remember having a discussion with a more tenured coworker, with the subject being the impending departure of another coworker. I said, “man, it’s going to be rough when he leaves, considering how m转载 2014-05-19 19:52:39 · 1135 阅读 · 0 评论 -
责任链设计模式之我见
责任链模式是构建面向对象软件体系架构的一个重要组成成分之一,它的光环不仅把软件系统从接受者和发送源这对冤家中解脱出来,更重要的是提高了代码的可读性和灵活性。 在GOF的经典设计模式书籍中,责任链设计模式被分在行为模式大类。行为类模式主要主要关注算法和软件系统中对象之间的责任分工。可以说,行为类模式不仅描述了类或对象的构建模式,而且描述了他们之间的通信模式。 责任链模式的原创 2012-06-27 11:28:16 · 1121 阅读 · 0 评论 -
笔试题:Suggest a simple and fast way to multiply the input integer digit by 7。
翻译:不使用乘法运算,使用简单且快捷的方式实现输入的数字乘以7。解决方案:#include "stdio.h"int main(int argc, char **argv ){ int a; printf("Please Input Your Number:\n"); scanf("%d", &a); printf("Before Multiplying, t原创 2014-12-22 14:05:53 · 874 阅读 · 0 评论 -
Ubuntu Linux平台下Django1.6.8开发环境搭建
操作系统环境为Ubuntu Linux原创 2014-10-30 21:58:33 · 1503 阅读 · 0 评论 -
几种内存泄露
碰到的内存泄露无非有以下几种: (1) 堆内存泄漏(Heap leak)。堆内存指的是程序运行中根据需要分配通过malloc,realloc new等从堆中分配的一块内存,再是完成后必须通过调用对应的 free或者delete 删掉。如果程序的设计的错误导致这部分内存没有被释放,那么此后这块内存将不会被使用,就会产生Heap Leak. 这是最常见的内存泄露。 (2)系统资源原创 2017-04-10 12:48:50 · 797 阅读 · 0 评论 -
对一个整数按位反转和对字符反转
unsignedint ReverseBitsInWord00(unsignedint Num){ unsigned int ret = 0; int i; for(i=0;i { ret ret |= Num & 1; //对整数的最后一位取反,返回结果左移一位原创 2017-04-09 10:52:34 · 2524 阅读 · 0 评论 -
通过一道试题深入理解指针及数组内存布局
#include bool bIsLittleEndian(){ union check { int i; char ch; } c; c.i = 1; return (c.ch ==1);}int main(int argc, char **argv){ int a[4]={1,2,3,4}; int *ptr1=(int *)(&a+1)原创 2014-10-11 15:52:38 · 984 阅读 · 0 评论 -
运行时错误:Error: free(): invalid next size (fast)
经查,这通常发生在C/C++混合编程时候调用的内存分配、释放接口不配对时。即malloc分配的内存,却用了delete或者new出来的对象,却用了free.只要确保:malloc/free new/delete配对,该问题就消失了。原创 2017-04-13 10:36:42 · 20807 阅读 · 0 评论 -
C语言far关键字作用
far即为远地址,16位模式下(如80x86系列)内存是分段寻址的; (一个段就是 2^16,即64k)指定void far fun1();的话,是说函数fun1的入口点在其它段中,调用时将用到段地址; 如果指定为near的话,入口点将在本段之内,调用时值使用段内的偏移地址。 32位中采用线性的平坦寻址方式,这一概念已被抛弃了,内存中地址统一为32位宽,大体 说转载 2017-04-13 10:43:56 · 5488 阅读 · 0 评论 -
实例分析C++ 权限控制及const用法
一、 引言 分析如下小程序。找出它的错误(bug),并修改它:class Identifier { int x; void show() { cout << x; };};class Student { const Identifier id; // some other variables/functions below原创 2013-03-24 12:14:47 · 1520 阅读 · 0 评论 -
C语言实现矩阵相乘
问题描述:编写程序,可以实现m*n矩阵和n*p矩阵相乘。m,n,p均小于10,矩阵元素为整数。分析:首先我们可以根据题意写出函数头。可以定为void MatrixMutiply(int m,int n,int p,long lMatrix1[MAX][MAX],long lMatrix2[MAX][MAX],long lMatrixResult[MAX][MAX]),其中lMa转载 2017-04-17 15:30:13 · 10169 阅读 · 0 评论 -
[总结]C语言二维数组作为函数的参数
前言:今天在实现装配线调度程序时候,用到了二维数组,并将其作为函数的参数。在写程序的时候,遇到一些问题,即二维数组做函数的参数应该如何正确表示。我写程序的错误如下程序所示: 1 #include 2 void print(int *a[3]) 3 { 4 printf("%d\n",a[0][0]); 5 } 6 7 int main() 8 { 9转载 2017-04-17 15:39:24 · 3166 阅读 · 1 评论 -
一种简单的单链表逆序、反转的方法
假定一个单链表,其排列是这样的:head-> P1--->P2--->P3--->................. 其中,P1就是头结点。 反转思路是: (1)第一步反转,P1和P2, 也就是使得P2->next=P1. 如图:headP3 (2)第二步,采用同样的方式,反转P3和P2,也就是使得;P1 既然是第一步一样地方式,就不能简单地P3-->原创 2017-04-09 10:29:30 · 1734 阅读 · 0 评论 -
[业余学习]整形数反转
class Solution {public: int reverse(int x) { long long rest = 0; while(x) { rest = rest*10 + x%10; x /= 10; } return (restINT_MAX) ? 0转载 2017-08-06 22:39:57 · 427 阅读 · 0 评论 -
准完美的atoi函数实现
#include #include #include #include #include int Danny_Atoi(char *SrcString){ char *IterIndex = SrcString; int RetVal = 0; int SignedNegative = 1; int int_b原创 2012-02-17 14:57:19 · 1889 阅读 · 2 评论 -
理解指向指针的引用
在做项目时,用到第三方的API:RequestService( string *reqst, string *&Rsp) 怎么来调用这个API呢?由于对指针的使用不熟悉,分别作了如下尝试:(1)想当然,把2个参数都当作普通的指针:string input="Help Me";string output;RequestService( &in...原创 2013-10-09 16:11:27 · 17480 阅读 · 8 评论 -
常见算法题
作者:zhenjing.chen出处:http://www.cnblogs.com/zhenjing/未注明转载的文章,版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利Problem 1 : Is it a loop ? (判断链表是否有环?)Assume that wehave a head poi转载 2014-12-23 09:39:35 · 1309 阅读 · 0 评论 -
c语言字符指针数组经典,此后不必再担心字符串问题.
原文: http://blog.csdn.net/u010774394/article/details/38280623题目:将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好//1.如何存储文本? char str[] = " a41 a1421 b3511 b b c c c c dddddd转载 2014-12-24 15:22:15 · 2033 阅读 · 0 评论