- 博客(12)
- 资源 (3)
- 收藏
- 关注
原创 linux bash shell 判断目录是否为空的函数
linux shell中判断目录是否为空#!/bin/sh##方法一 判断输出字符数统计为0is_empty_dir(){ return `ls -A $1|wc -w`}##方法二 判断输出string为空#is_empty_dir(){ #return $[ -z `ls -A $1` ]#}if is_empty_dir $1then echo " $1 is emp
2015-12-29 15:55:43 13214 9
原创 java大量数据加载时resultSetType参数的设置 TYPE_FORWARD_ONLY
这两天的工作是将一1000万条数据库记录(10GB)加载到内存中,加载到500多万条记录的时候,就报了OOM(内存不足)。解决了所有外围问题后,再运行还是这个问题无法加载全部数据。仔细研究了之前从未碰过的底层访问数据库的代码。 在创建PreparedStatement时,resultSetType参数设置的是TYPE_SCROLL_INSENSITIVE或TYPE_SCROLL_SENSITIVE
2015-12-25 18:04:16 13685 1
原创 gcc下使用tcmalloc(gperftools)2.4的注意事项
前几天在折腾将项目代码的编译问题,打算使用tcmalloc内存池来管理内存分配。无意中在pgerftools的说明文档README中看到了这段话: NOTE: When compiling with programs with gcc, that you plan to link with libtcmalloc, it’s safest to pass in the flags
2015-12-25 09:07:12 4733
原创 C++11 gcc升级到5.2.0后报错:/usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.17' not found
我的linux操作系统为centos6.5,为了能编译C++11程序,需要对gcc编译器进行升级(centos6.5默认安装的gcc编译器是4.4.7,支持C++11需要至少4.8.1)到gcc5.2.0,参照《【Linux】CentOS6.5 gcc升级方式》对编译器进行了升级,耗时两个多小时。 等编译升级就绪,编译了C++11的代码,运行时,报错: /usr/lib64/libstdc++
2015-12-21 11:53:47 2604
原创 C++11 元编程 判断是否有std::hash<T>特例并提供hash函数通用实现
std::hash的用途std::hash是C++11提供的一元函数模板,用于向标准库提供返回数据类型T哈希值(hash value)的哈希函数(hash function)。 std::hash只是定义了一个一元操作符operator(),接受一个T类型的参数,返回一个size_t类型的哈希值, C++11为所有基本类型(basic types)都提供了特例化实现: C
2015-12-14 11:35:57 5387 1
原创 JUnit4:在测试用例中用FixMethodOrder指定测试方法的执行顺序
我们在写JUnit测试用例时,有时候需要按照定义顺序执行我们的单元测试方法,比如如在测试数据库相关的用例时候要按照测试插入、查询、删除的顺序测试。如果不按照这个顺序测试可能会出现问题,比如删除方法在前面执行,后的方法就都不能通过测试,因为数据已经被清空了。而JUnit测试时默认的顺序是随机的。所以这时就需要有办法要求JUnit在执行测试方法时按照我们指定的顺序来执行。JUnit是通过@FixMeth
2015-12-13 12:44:54 14525 11
原创 C++11 元编程(meta-programming)判断T是否有==操作符
前几天看了《C++11之美》受到一些启发,想到可以通过判断一个类型是否有指定的操作符(比如==,>=)。 基本的原理与文中的差不多,利用SFINAE原则,通过返回类型后置来推断表达式的类型,推断的过程中利用declval,它可以获取类型的右值引用,以便来调用==操作符,这个过程是在编译期完成的。 如果通过==操作符比较declval的右值引用成功了,则会继续推断逗号表达式的类型,最终推断的函数返
2015-12-09 09:43:29 1489 1
原创 C++11 JNI开发中RAII的应用(三)--JavaClassMirror
以下是我以前写的将一个C++对象转成java对象的函数toJCodeBean。static jobject toJCodeBean(JNIEnv* env, const code_bean& bean) { auto code_bean_class =jni_utilits::raii_FindClass_LocalRef("Lnet/gdface/facedbsdk/local/CodeC
2015-12-03 16:56:59 921 1
原创 C++11 JNI开发中RAII的应用(二)--JNI函数封装
在上一节《C++11 JNI开发中RAII的应用(一)》中我们已经有了一些基本的RAII封装工具,本节就简单了,就是根据需要把一些常用的JNIEnv函数封装成更方便使用的模板函数。raii_NewGlobalRefraii_NewGlobalRef函数顾名思义,就是封装JNIEnv::NewGlobalRef,将一个本地引用的jobject转为全局引用封装在raii_var中。 /* 封装JN
2015-12-03 15:41:49 1739 1
原创 C++11 在析构函数中执行lambda表达式(std::function)捕获this指针的陷阱
lambda表达式是C++11最重要也最常用的一个特性之一。lambda来源于函数式编程的概念,也是现代编程语言的一个特点。 关于lambda表达式的概念并不是本文的重点,网上可以找到无数的写得极好的文章介绍它。我想说的是善用lambda表达式,将给C++编程带来极大的便利,这是本人最近学习C++11以来真实深切的感受,但是有时候误用lambda表达式也会给编程带来极大的隐患,本文以最近的经历说明
2015-12-03 09:08:51 8925 1
原创 C++11 JNI开发中RAII的应用(一)--制作基础工具
最近项目C++底层代码写完了,开始做java与底层代码的接口部分,就涉及到JNI编程,我这是第一次写JNI代码,看了很多资料,得到一个印象:JNI开发本身不复杂,但如果操作不慎,很容易造成内存泄露参见《jni 内存泄露》,而且最容易被忽视的就是本地引用(LocalReference)造成的内存泄露。 按照oracle官方对的文档 《Java Native Interface Specificat
2015-12-02 14:27:02 1269
原创 vs2015编译tcmalloc(gperftools2.4)
TcMalloc(Thread-CachingMalloc)是google-perftools工具中的一个内存管理库,所以一般提到tcmalloc,其实就是指使用gperftools,编译tcmalloc也就是编译gperftools。 第一次使用tcmalloc,网上找了好多关于使用tcmalloc的文章,都讲到了如何安装,如何使用,对于编译都是一笔带过。。。但是是真正实战的时候,发现如果对tc
2015-12-01 12:02:28 8761
CMake脚本在ultraedit中的语法高亮支持
2023-06-08
erpcgen-windows-x86_64.zip
2020-09-17
windows下MSVC兼容的dirent.h
2016-03-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人