首页
学习
活动
专区
工具
TVP
发布

10km的专栏

专栏作者
553
文章
1128806
阅读量
51
订阅数
java/poi 调整Excel 列宽支持自适应中文字符宽度
apache/poi是apache旗下用于读写Microsoft Office 二进制文件和OOXML 格式文件的开源库。用它来进行excel文件的导出是很趁手的。 一般来说可以直接使用 Sheet.autoSizeColumn方法自动调整每列的宽度。但是遇到包含中文的列,autoSizeColumn方法计算的列宽是不正确的,算出的宽度不能完整显示中文内容。最近项目中就遇到了这个问题,于是参考网上的各类文章,自己实现了自动适应中文字符宽度的方法
10km
2022-09-16
2.1K0
libjpeg:实现jpeg内存压缩暨error_exit错误异常处理和个性化参数设置
libjpeg-turbo是与libjpeg接口兼容的一个jpeg编/解码库,其主要的特点就是利用SIMD指令(如X86架构的MMX/SSE/SSE2,ARM架构的NEON)来加速jpeg图像的编/解码,相比被广泛使用的libjpeg,编码和解码性能提高2~4倍左右。 本文介绍的内容适用于libjpeg-turbo和libjpeg(80以上版本) 关于如何用gcc对libjpeg-turbo编译,请参考我之前的一篇的博文《mingw(gcc)编译libjpeg-turbo》
10km
2022-05-07
8710
VS2015下解决:error LNK2019: 无法解析的外部符号 __iob_func
根据关键字在网上找到一些文章描述了类似的错误,大都是找不到外部符号__iob,原因是VS2010上使用了VC6编译的DLL。虽然与我的情况不同,但是原理是一样的,我遇到的这个问题的原因是VS2015下使用VS2010编译的静态库,因为我用的libjpeg-turbo静态库是从官网下载编译好的版本(应该是vs2010这样的版本编译的)。 其实__iob_func和__iob都是用来定义stdin,stdout,stderr,只是不同的VC版本实现方式不同。 下面是VS2015的头文件corecrt_wstdio.h中对stdin,stdout,stderr定义
10km
2022-05-07
1.8K0
cmake:让mingw(gcc)生成MSVC可用的dll(.lib)
mingw(gcc)编译出来的动态库(DLL)默认是没有MSVC连接动态库所需要的lib文件(import library)的。
10km
2022-05-07
2.7K0
mingw(gcc)编译libjpeg-turbo
最近的工作需要读写jpeg图像,网上找了半天,发现libjpeg-turbo是个不错的选择。 libjpeg-turbo是与libjpeg接口兼容的一个jpeg编/解码库,其主要的特点就是利用SIMD指令(如X86架构的MMX/SSE/SSE2,ARM架构的NEON)来加速jpeg图像的编/解码,相比被广泛使用的libjpeg,编码和解码性能提高2~4倍左右。
10km
2022-05-07
9570
cmake:在各级子项目(目录)之间共享变量
项目目录结构如下图,facedetect和facefeature都要用到opencl中的include文件,1.2,2.0,2.1是不同的opencl版本的头文件,希望在cmake创建Makefile时,opencl文件夹下的CMakeLists.txt能定义类似INCLUDE_OPENCL_1_2,INCLUDE_OPENCL_2_0,INCLUDE_OPENCL_2_1,这样的变量,以保存不同版本的opencl 头文件位置,最后关键是能让项目中其他子目录的CMakeList.txt能使用这些变量。
10km
2022-05-07
1.6K0
OpenCL ICD Loader运行测试暨解决报错:ERROR: App log and stub log differ.
上一篇博文《OpenCL Installable Client Driver (ICD) Loader编译》详细描述了如何编译OpenCL ICD Loader。OpenCL ICD Loader自带了测试程序,成功编译后可以根据源码根目录下README.txt的说明运行测试程序来验证Loader是否可以正常工作:
10km
2022-05-07
5040
OpenCL Installable Client Driver (ICD) Loader编译
OpenCL Installable Client Driver (ICD) Loader是实现OpenCL应用程序与各硬件厂商提供的OpenCL驱动(platform)之间隔离的中间库。
10km
2022-05-07
1.2K0
cmake:动态链接库(so)中静态链接tcmalloc(gperftools2.4)暨静态链接libstdc++
将tcmalloc作为动态库使用,非常方便,网上有很多资料介绍了。tcmalloc.a也可以以静态链接的方式加入应用程序中,大概因为使用太方便,网上关于这方面的介绍都是一笔带过,但是如果要在动态 库(so)中静态编译tcmalloc,却是有所不同的。 我的项目中有一个so动态库,需要在java中通过jni调用,因为涉及频繁的内存分配操作所以这个so希望用tcmalloc管理内存池以提高系统运行效率,如果使用以动态库方式使用tcmalloc。那么在应用服务器(tomcat)启动的时候,需要先设置LD_PRELOAD参数指向tcmalloc.so,然后执行startup.sh启动tomcat。这样以来,不仅是我的so库,整java程序在运行过程中的所有向操作系统申请释放内存的过程都交给了tcmalloc管理了,其实挺好的。使用这种方案,我的so库代码不需要在编译时链接tcmalloc,什么都不用改变,就能使用tcmalloc。 但是凡事有利就有弊,这个方案带的成本就是在系统安装、维护时稍显复杂:需要在服务器上安装tcmalloc和libunwind(应用系统运行在64位操作系统下),还可能需要修改tomcat启动脚本以加入LD_PRELOAD参数,对工程实施人员的要求比较高。
10km
2022-05-07
1.8K0
ant调用make实现Makefile编译
上一篇博文《cmake:shell(bat,sh) 脚本方式生成Makefile》中完成了cmake生成Makefile脚本的过程,也就是步骤1,本文谈谈步骤2和步骤3的实现:
10km
2022-05-07
7330
C++11:unique_ptr 自己定义类似make_shared的make_unique模板函数
C++11中的智能指针分为共享型的shared_ptr和独占型的unique_ptr,C++11提供了make_shared函数来创建shared_ptr指针,使用起来更方便,有了make_shared函数,就可以完全摆脱new操作了,可以写出完全没有new/delete的程序。 但是unique_ptr却不同,unique_ptr不像shared_ptr可以通过make_shared方法来创建智能指针,C++11目前还没有提供make_unique函数,在C++14中才会提供make_shared方法类似的make_unique来创建unique_ptr.
10km
2022-05-07
1.1K0
无锁编程:c++11基于atomic实现共享读写锁(写优先)
在多线程状态下,对一个对象的读写需要加锁,基于CAS指令的原子语句可以实现高效的线程间协调。关于CAS的概念参见下面的文章:
10km
2022-05-07
1.4K0
解决std::addressof找不到及eclipse lunna+cdt 8.6.0 支持 c++11的设置
最近在eclipse下写c++代码,当用到std::addressof时,eclipse报错,说是无法解析这个函数:
10km
2022-05-07
6190
c++ template 多层继承下找不到纯虚拟函数实现 报错:undefined reference to "xxx"
如下代码中,定义了3个类,ClassA,ClassB,ClassC,依次为被继承关系,ClassA,ClassB是模板类, 在ClassA中定义了一个纯虚拟函数getKeyFromObject,实现将从V中获取K的功能: getKeyFromObject函数在ClassA,ClassB中都有被调用,在ClassC中被实现。 按照我的思路,这样就成了。不论在Class,ClassB中,都会调用ClassC中的getKeyFromObject来实现V->K的转换。
10km
2022-05-07
2920
cmake+gcc解决extended initializer lists only available with -std=c++11 or -std=gnu++11
有时,我们需要一个结构体变量做为参数传递给函数,后面又不需要再用到这个结构体变量,所以如果专门定义一个变量,再将这个变量传递给函数就显得挺罗嗦。 就像下面这段代码,tmpStruct只是起到一个数据包装的作用,调用test()之后并不再用到,所以这个变量就显示有些多余 。
10km
2022-05-07
5450
cmake:arm-xm-linux交叉编译工具链文件及交叉支持HTTPS的curl静态库
curl是一个成熟的HTTP client库,可以使用cmake在命令行完成交叉编译。
10km
2022-04-13
1.4K0
cmake:cpp_redis的find_package脚本 FindCppRedis.cmake
cpp_redis是个C++11的开源的redis client库,支持cmake构建,但并没有提供CONFIG模式的import target导入脚本,如果希望在cmake下以find_package方式导入cpp_redis的库,就需要自己写一个MODULE模式脚本,以下为FindCppRedis.cmake脚本实现
10km
2022-04-13
5790
c++模板:调用模板成员函数需不需要加template关键字?
以下是个简单的模板类测试代码,模板类A中定义了模板函数hello,在模板函数test中调用A::hello template_test.cpp
10km
2022-04-13
8500
arm-xm-linux交叉编译openssl
编译环境 Ubuntu 16.04 x86_64 arm-xm-linux.tar.gz 下载openssl源码 $ wget https://www.openssl.org/source/openssl-1.1.0d.tar.gz 解压源码 $ tar xvf openssl-1.1.0d.tar.gz 执行Configure脚本 $ cd openssl $ ./Configure linux-generic32 \ no-shared \ no-asm \ no-async \ --pre
10km
2022-04-13
4.2K0
cmake:通过CMAKE_CXX_COMPILE_FEATURES判断编译器是否支持C++11
以前在cmake中要判断一个编译器是否支持C++11挺麻烦的,要根据编译器的类型和版本来判断。 从cmake 3.1版本开始增加了一个CMAKE_CXX_COMPILE_FEATURES变量用于获取当前C++ 编译器支持的编译特性列表,列表中是一些定义在CMAKE_CXX_KNOWN_FEATURES(C++已知特性)中的特性名字,比如cxx_lambdas即为当前编译器支持lambda表达式。 从cmake 3.8版本开始,cmake可识别的编译特性增加了代表C++标准的特性名:cxx_std_98,cxx_std_11,cxx_std_14,cxx_std_17
10km
2022-04-13
3910
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档