存档

‘编程语言’ 分类的存档

Tuxedo中string导致内存泄漏

2016年4月30日 没有评论

对象创建的时候会调用构造函数来初始化对象,对象销毁的时候会调用析构函数。 普通的自动变量(local非static)包含构造函数和析构函数。 当进入变量作用域的时候构造函数被调用,当离开变量作用域的时候析构函数被调用。 当在tuxedo的环境中调用 tpreturn() 或者 tpforward() 函数时,编译器进行了一个non-local的goto (using longjmp(3)),导致自动变量的析构函数没有被调用。 为了避免这个问题,我们应该在服务体中调用直接调用 tpreturn() 或 tpforward() (而不是在服务体调用的函数中调用这两个函数)。 ps: 1.服务体中不能包含...

分类: 编程语言 标签:

[0;32m eclipse显示颜色

2016年4月7日 没有评论

用 eclipse cdt 运行 gtest 在 console 的输出结果有有 shell 终端的颜色代码输出 Running main() from gmock_main.cc [==========] Running 4 tests from 1 test case. [----------] Global test environment set-up. [----------] 4 tests from PrimeFactors [ RUN ] PrimeFactors.1factor [ OK ] PrimeFactors.1factor (0 ms) [ RUN ] PrimeFactors.2factor [ OK ] PrimeFactors.2factor (0 ms) [ RUN ] PrimeFactors...

分类: 编程语言 标签:

gtest和gmock入门实例

2016年1月10日 没有评论

对于 c++ 来说写单元测试和 mock 框架不是一件容易的事情。还好, Google 为我们搭建了一个出色的单元测试和 mock 框架。网上的例子很多都过多强调概念,本文用一个简单的例子让大家对于什么是 gtest 和 gmock 让大家有一个直观的了解,让大家很快上手,就像写 hello word 一样容易。 gtest&gmock 的 1.6 版本的使用 make 编译,新版的已经已经迁移到 github 上使用 cmake 编译,安装过程很多,这里不在重复,如果大家有需要再单独写。 1.下载安装 Google Test and Google Mock 2. 编译生成静态库gtest_main.a gmock_main.a (包含main...

分类: 编程语言 标签: ,

c++虚函数和纯虚函数的区别

2015年12月13日 没有评论

多态是C++的重要特性,通过基类指针来访问派生类的函数。 虚函数就是为了实现这功能而定义的函数,虚函数可以在定义时实现也可以不实现,定义了虚函数的类可以实例化。 纯虚函数更多的是表示接口的含义,纯虚函数定义时不能实现,需要在派生的子类中实现且必须实现,含有纯虚函数的类不能实例化。 虚析构函数与虚函要成对出现,以便在通过基类指针释放派生对象时,调用派生类的析构函数。 class VirtualFun { public: VirtualFun(){std::cout<<"create VirtualFun"<<std::endl;}; v...

分类: 编程语言 标签:

clang: warning: argument unused during compilation: '-pthread'

2015年12月9日 1 条评论

编译gtest时报了一个警告错误,查询发现有人说重装clang,可是我不会重装,不想折腾一直是使用自动升级来更新xcode。 c++ -isystem ../../googletest/include -isystem ../include -g -Wall -Wextra -pthread -lpthread gmock_test.o gmock_main.a -o gmock_test clang: warning: argument unused during compilation: '-pthread' 后来发现so上有一篇纪实,也就是说clang时编译时使用这个参数,链接的时候时不使用这个参数的,所以可以忽略这个警告。 clang requires -pthread when compiling but not when linking. This is annoying...

分类: 编程语言 标签: ,

mac环境下eclipse cdt开发环境配置

2015年11月28日 没有评论

本文将一步步介绍如何在osx下配置eclipse开发c++代码环境和使用实例 安装前准备 1.安装过java 2.安装过xcode 下载安装eclipse 访问eclipse网站下载mac版c++开发包,选择64bit,下载地址也可以直接下载 http://eclipse.bluemix.net/packages/mars.1/data/eclipse-cpp-mars-1-macosx-cocoa-x86_64.tar.gz 启动eclipse 在终端中解压缩,然后会在压缩包的同级目录中得到Eclipse.app文件夹 tar -xvf eclipse-cpp-mars-1-macosx-cocoa-x86_64.tar终端下进入Eclipse.app目录,启动eclipse open -n Eclipse.app 第一次启动会弹出的对话框...

分类: 编程语言, 苹果 标签:

您需要安装旧 Java SE 6 运行环境才能打开“PhpStorm”

2015年11月1日 没有评论

mac安装java1.8之后打开phpstrom会报这个错误。 解决办法: 1.在终端下进入/Applications/PhpStorm.app/Contents目录,然后编辑Info.plist 2.修改JVMVersion的值为1.8 JVMVersion 1.8* 3.重新打开phpstrom

分类: 编程语言 标签:

什么是psr-0,psr-1,psr-2标准

2015年3月7日 没有评论

FIG组织在制定跟PHP相关规范,简称PSR,PSR旨在通过讨论我们代码项目的共同点以找出一个协作编程的方法。 什么是psr0强调自动加载的方式 下文描述了若要使用一个通用的自动加载器(autoloader),你所需要遵守的规范: 规范 一个完全标准的命名空间(namespace)和类(class)的结构是这样的:\()* 每个命名空间(namespace)都必须有一个顶级的空间名(namespace)("组织名(Vendor Name)")。 每个命名空间(namespace)中可以根据需要使用任意数量的子命名空间(sub-namespace)。 从文件系统中加载源文件时,空间名(namespace)中的分隔符将被转换为...

分类: 编程语言 标签:

php或js判断网站访问者来自手机或者pc端源码

2015年3月6日 没有评论

之前写过如何通过nginx来识别手机访问还是pc访问 很多时候也可以通过逻辑程序来进行判断,如PHP、JS是常用的两种识别访问设备类型的常用方法。 原理都是采用识别访问客户端的HTTP_USER_AGENT,然后进行关键字匹配进行确定设备类型,对于伪造HTTP头的就区分不出来了。 区分设备类型然后要做的就是能够针对不同设置显示出易于阅读的网页,具体可以研究响应式布局技术。本文主要介绍如何通过php或js来识别终端类型。 php识别手机或者PC访问源码 <?php class IsMobile { public static function i...

分类: 编程语言 标签:

spl_autoload_register替代__autoload()

2015年3月5日 1 条评论

PHP5.1.2起废弃了__autoload,那么为什么要用spl_autoload_register来取代__autoload() 最重要的原因是autoload只能定义一个自动加载函数,spl_autoload_register可注册多个自动加载函数到函数栈,实例话对象时会按顺序依次调用之前注册过的加载器来自动加载类定义文件。看起来没什么用,但当多个工程混合使用时有自己不懂同的自动加载类实现时,就能体现出优势了。 __autoload()是一个自动加载函数,在PHP5中,当我们实例化一个未定义的类时,就会触发此函数。 printit.class.php <?php class PRIN...

分类: 编程语言 标签: