![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
开发工具
文章平均质量分 62
10km
这个作者很懒,什么都没留下…
展开
-
使用(?<!pattern) 负向后行断言正则表达式提取双引号开头和结尾的字符串
如下是一段java代码,我想用正则表达从中提取代码中的字符串java是通过前后用双引号包含定义字符串的。但简单使用正则表达式".*?是不可行的,因为会将中的\"识别为字符串边界引号而非字符串的一部分,如下为了解决\"误识别问题,就要用到(zero-width negative lookbehind assertion)即负向后行断言代表字符串中的一个位置,紧接该位置之前的字符序列不能匹配 pattern。例如对 “regex represents regular expression” 这个字符串,原创 2024-01-04 11:01:12 · 645 阅读 · 0 评论 -
ANTLR4入门(四):在线语法调试塈Maven项目中使用语法调试工具TestRig
ANTLR是一款强大的语法分析器生成工具,可用于读取、处理、执行和翻译结构化的文本和二进制文件。它被广泛用于学术领域和工业生产实践,是众多语言、工具和技术框架基石。一门语言的正式描述称为语法(grammar),ANTLR能够为该语言生成一个语法分析器,并自动建立语法分析树,ANTLR也能够自动生成树遍历器(Visitor),这样你就可以访问树中的节点,执行自定义的业务逻辑。原创 2022-12-20 13:09:35 · 1517 阅读 · 0 评论 -
ANTLR4入门(三):使用maven ANTLR4插件(antlr4-maven-plugin)执行语法解析生成器
在上篇博客,我费半天劲装好了Eclise的AntlrIDE插件,简单的创建一个ANTLR 4 工程,感受了一下AntlrIDE插件提供的语法高亮的便利性。及语法文件(.g4)自动生成解析器代码的过程然而热乎劲儿过后,我发现这个插件对于入门学习或许有用,但在基于maven构建的工程开发中实用性并不大,除了语法高亮比较方便外。在maven管理的项目中,项目编译可以在命令行进行并不一定依赖Eclipse等IDE环境。原创 2022-12-19 16:49:58 · 4907 阅读 · 0 评论 -
ANTLR4入门(二):图示说明eclipse Antlr4IDE插件的安装及语法测试过程
如果你能正常通过Eclipse Market找到antlr4的插件并正常安装,可以忽略本文。如果不能,那多半是因为网络问题导致安装Antlr4IDE插件时无法下载文件造成的。我就遇到了这个问题,无法下载的原因很复杂,我不想去深究了,我的办法就是绕过它。安装Eclipse ANTLR4IDE插件最终是访问 github上的仓库,如果你能正常访问github,就把这个仓库打包下载,解压到本地。然后如下以本地安装的方法安装插件。如果你也不能正常访问github,可以使用我从github上复制的仓库。原创 2022-12-17 23:05:23 · 1185 阅读 · 0 评论 -
ANTLR4入门(一):Windows安装antlr4命令行环境
最近开始学习ANTLR4,《ANTLR 4权威指南》这本书是看完了,现在开始实践,本系列文记录实践过程中的遇到的问题解决过程及心得体会。原创 2022-12-17 17:34:55 · 2928 阅读 · 0 评论 -
eclipse 2022:安装中文语言包(babel language packs)塈切换语言的方法
我一直使用的eclipse版本是neon,2016年的版本,真是好老了,最近想安装一个antlr4IDE插件,总是安装不成功,同事的eclipse 2020就可以正常安装,我觉得我的Eclipse版本该升级了。我打算安装最新的eclipse2022,6年时间eclipse经历好多个版本的变化,但eclipse的安装方式基本没变。虽然英文也能看懂,但我还是喜欢用中文界面,工作效率高。所以我的eclipse都要安装中文语言包。以前因为网速慢,安装eclipse babel语言包都是直手工去。原创 2022-12-17 13:59:08 · 7415 阅读 · 0 评论 -
君正X2000交叉编译openssl
编译环境Ubuntu 16.04 x86_64ingenic X2000 编译工具链从君正官网下载 : http://www.ingenic.com.cn/?product/id/34/lm/3.html下载openssl源码wget https://www.openssl.org/source/openssl-1.1.0d.tar.gz解压源码tar xvf openssl-1.1.0d.tar.gz执行Configure脚本./Configure linux-generic32原创 2022-01-12 10:48:12 · 1052 阅读 · 0 评论 -
make/cmake:海思himix200交叉编译zlib
介绍基于cmake和configure使用海思himix200交叉编译器交叉编译zlib的过程原创 2021-12-29 11:27:37 · 1236 阅读 · 0 评论 -
海思 himix200交叉编译openssl
使用海思himix200平台的编译工具链交叉编译openssl的过程原创 2021-12-28 12:46:37 · 1130 阅读 · 0 评论 -
maven:创建阿里云私有maven仓库塈maven 命令行发布Release版本
最近在网上查找才发现阿里云提供了免费私有 maven 仓库,这可解决我的大问题了。我们的大部分项目都是开源提供给用户的,这些项目我们都是发布到maven中央仓库,但也有部分内部使用的jar包,我们不希望发布到maven中央仓库,但也需要有发布版本管理,自己搭安装Nexus搭建Maven私有仓库总是有些麻烦,维护工作也不少。现在有阿里云提供的免费私有 maven 仓库正好能解决我们的问题。打开下面的页面,使用支付宝或钉钉APP扫码认证就登录进来了,https://packages.aliyun.com/原创 2021-04-22 11:10:21 · 4590 阅读 · 0 评论 -
maven:shade 生成快照版本(SNAPSHOT)的fat-jar,同时生成对应的source.jar
有的时候,我们需要将项目所有依赖库打成一个fat-jar,提供给客户,同时提供对应的source.jar。这个功能很好实现在pom.xml中增加maven-shade-plugin插件执行就可以,如下: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.1.原创 2021-02-06 13:12:13 · 1001 阅读 · 0 评论 -
Windows NDK 编译openssl
关于NDK 编译openssl,网上找了不少文章,比如:《在windows上编译openssl供Android NDK使用》大都是基于这个github上的项目编译NDK openssl:https://github.com/guardianproject/openssl-android我也照着上面的文章顺利编译出了目标代码,但是因为编译出来的代码不是标准的安装目标结构,由于我需要用CMAKE交叉编译,所以这个项目编译出来的目标代码对于我并不方便使用。所以我自己下载了openssl的源码,并根据源码写原创 2021-01-31 21:34:16 · 1259 阅读 · 0 评论 -
MSVC/GCC/NDK:将二进制文件生成obj文件
如何将二进制文件作为数据添加到自己程序中?这是我最近遇到的问题,google上找到这两篇说得已经很清楚:《Embedding of binary data into programs》《Embedding Blobs in Binaries》一种方法是将想二进制文件生成c代码,与项目一起编译,这方法小的数据没问题,但如果二进制文件太大,生成的c代码更是巨大,增加编译器负担,好处就是完全没有跨平台问题。网上可以找到相关的工具(搜索 bin2c 或 bin2h)第二种方式就是用GNU的objcopy原创 2021-01-19 18:44:28 · 1019 阅读 · 0 评论 -
windows下Android NDK R19 交叉编译 thrift C++ 库(cmake)
在NDK下编译thrift C++库,先要要编译android版的boost,这个不是本文讨论的内容,关于编译android 版本的boost,参见这个开源项目 Boost-for-Android,很好用。我用Boost-for-Androidk顺利编译了boost 1.69.(Android NDK r19)有了android版的boost就可以编译thrift C++库了。在这里走了不少弯路。先说明一下我的编译环境:操作系统:Windows 7cmake 3.11.1,编译thrift需要cm原创 2020-12-03 18:07:46 · 1184 阅读 · 0 评论 -
maven:命令行执行junit 测试示例
有时间我们希望在命令行执行JUNIT测试,该怎么做呢?举例说明吧。如下我要在命令行执行common-base2项目下的junit 测试类NetworkTest.java 测试类的testGetPhysicalNICs方法,执行如下命令:mvn -Dtest=NetworkUtilTest#testGetPhysicalNICs -DskipTests=false test-Dtest=$class#method定义要执行的测试类及方法,如果不指定方法名则默认执行该测试类的所有方法-DskipTe原创 2020-07-08 15:21:55 · 3264 阅读 · 0 评论 -
maven: 解决 release to oss.sonatype.org 报错:SSL peer shut down incorrectly
今天执行mvn release:perform发布项目jar包到maven中央仓库时报了如下错误导致发布失败:Remote host terminated the handshakeSSL peer shut down incorrectly出现这个情况并是必然的,目前没有找到规律,好像发布比较大的jar出现的概率就大一些。有时失败后重新执行一遍又能正常通过。所以就没在意,但是今天发布一个超过100MB的jar包时,执行了5,6次都报如上的错误就不能忍了。google上搜索了一相关的主题,发现好原创 2020-06-05 15:41:19 · 4030 阅读 · 0 评论 -
windows下编译boost的参数说明
windows下命令编译boost的基本参数说明(以1.62为例):bjam install ^ --prefix=E:\caffe-static\release\boost_windows_vc140_x86_64_md ^ --without-python -a -d+3 -q -j8 ^ --debug-configuration ^ link=static ^ runtim...原创 2020-05-06 10:42:47 · 640 阅读 · 0 评论 -
activemq:INFO: Broker not available at: service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
(win7系统下)我用jdk7下启动apache activemq 5.14.5服务后,在用命令activemq stop停止服务时遇到文章标题的错误,服务没有被停止。C:\ >activemq stopJava Runtime: Oracle Corporation 1.7.0_55 C:\Program Files\Java\jdk1.7.0_55\jreHeap sizes: ...原创 2020-01-16 10:30:04 · 2292 阅读 · 1 评论 -
maven:从命令行(commandline)读取取pom.xml中的属性(property)
如何在命令行(shell)读取pom.xml中的属性呢?我在网上找到如下回答:https://stackoverflow.com/questions/23802951/get-pom-xml-property-from-commandline就是用maven的内置插件 maven-help-plugin 来实现,在windows 命令行下如下实现:mvn help:evaluate -De...原创 2019-12-01 11:22:46 · 2256 阅读 · 1 评论 -
VisualSVN破解(转载)
(转自 kaosini 原贴有一个字母错误,导致我折腾半天,转载时改正)先讲下破解原理首先,去VisualSVN官网下载最新版本。 传送门:定位到VisualSVN安装目录,C:\Program Files (x86)\VisualSVN\bin (我的是64位)。 进入Visual Studio 命令提示, 将 “VisualSVN.C转载 2014-05-28 13:37:04 · 952 阅读 · 0 评论 -
用scala语言实现并行堆排序(top k)
因为项目需要对大量数据进行排序计算top k,开始了解并行计算框架,接触了spark,spark都是用scala写的,所以为了了解spark,恶补了一阵scala语言。 这是一种非常简练的函数式语言,最让我感觉兴趣的就是它天然支持并行计算,并且因为生成的目标代码是java虚拟上的class,所以与java有着天然的亲和力。可以与java代码之间自由的互相调用。 原本是想通过spark架构来实现大原创 2015-09-25 12:27:04 · 3155 阅读 · 0 评论 -
vc2010 sse指令优化效果明显
对于大量浮点数运算,用sse指令优化的效果是非常明显的。 vs2010的编译器内置函数([Compiler Intrinsics])支持see指令,所以程序员不必痛苦的用汇编指令来实现sse指令优化,关于详细的sse指令说明参见microsoft的官方文档 Streaming SIMD Extensions (SSE)(点击打开链接)下面这段代码用简单的循环实现两个浮点数组的点积之和,用ss原创 2015-10-16 17:07:36 · 4034 阅读 · 0 评论 -
gcc 嵌入式汇编(asm)实现bsr(位扫描)指令
在c/c++语言中,如果你想获取一个二进制数为1的最高位的位置(比如40的最高位位置是5,1的最高位位置是0),该怎么办?c语言实现最笨的办法就是下面的代码//对一个64位无符号整数进行位扫描(从高位到低位)inline __int8 _bsr_int64_(unsigned __int64 num) { __int8 count=(sizeof(num)原创 2015-10-09 11:07:22 · 5001 阅读 · 1 评论 -
利用gcc的预定义宏和内置函数(Built-in Functions)实现大小端判断和大小端数据转换
对于涉及跨平台开发的项目,就可能会遇到数据大小端的问题,其实就是一个数字在内存中的字节序的问题,判断当前系统是大小端有现成的例子,自己实现转换代码也非常方便,网上有好多不用多说。 但我是个懒人,就算是这么简单的代码,有现成的就不想自己写。 今天要说的是gcc本身已经提供了大小端的判断和数据转换的函数,真的没必要自己写。gcc预定义宏判断大小端(Endian)先看看这个文章:查看gcc的默认宏定义原创 2015-10-10 11:17:09 · 11871 阅读 · 0 评论 -
linux/windows下获取gcc(mingw)编译器预定义宏的方式
我们在阅读一些源代码时经常发现类似这样的宏WIN32,_WIN64,__x86_64,__linux却找不到在哪里定义的,这些其实是编译器预定义的宏。在不同的操作系统内容不同。 为了知道gcc编译器都预定义了哪些宏, 在window下可以输入如下命令: gcc -posix -E -dM - < nullinux下,命令稍有不同 gcc -posix -E -dM - < /dev/n原创 2015-10-10 14:23:23 · 8197 阅读 · 0 评论 -
c++ template 多层继承下找不到纯虚拟函数实现 报错:undefined reference to “xxx“
如下代码中,定义了3个类,ClassA,ClassB,ClassC,依次为被继承关系,ClassA,ClassB是模板类, 在ClassA中定义了一个纯虚拟函数getKeyFromObject,实现将从V中获取K的功能: getKeyFromObject函数在ClassA,ClassB中都有被调用,在ClassC中被实现。 按照我的思路,这样就成了。不论在Class,ClassB中,都会调用C原创 2015-10-13 14:37:53 · 3502 阅读 · 1 评论 -
msc和gcc编译器的内置函数(Compiler Intrinsics/Built-in Functions)
msc和gcc编译器都提供了丰富的内置函数,虽然函数名各有不同,但总是有不少共通的内容,对于跨平台开发非常有用,善用这些函数,可以提高程序的效率同时也减少开发工作量。 msc的内置函数叫Compiler Intrinsics,相关文档在这里 Compiler Intrinsics(点击打开链接) gcc的内置函数叫Built-in Functions,相关的文档在这里Built-in Funct原创 2015-10-14 11:26:09 · 3705 阅读 · 0 评论 -
vs2015编译tcmalloc(gperftools2.4)
TcMalloc(Thread-CachingMalloc)是google-perftools工具中的一个内存管理库,所以一般提到tcmalloc,其实就是指使用gperftools,编译tcmalloc也就是编译gperftools。 第一次使用tcmalloc,网上找了好多关于使用tcmalloc的文章,都讲到了如何安装,如何使用,对于编译都是一笔带过。。。但是是真正实战的时候,发现如果对tc原创 2015-12-01 12:02:28 · 8744 阅读 · 0 评论 -
VS2015下解决:error LNK2019: 无法解析的外部符号 __iob_func
在使用VS2015下使用libjpeg-turbo静态库,编译时报错了: error LNK2019: 无法解析的外部符号 __iob_func,该符号在函数 output_message 中被引用根据关键字在网上找到一些文章描述了类似的错误,大都是找不到外部符号__iob,与我的情况不同,但是原理是一样的, 其实__iob_func和__iob都是用来定义stdin,stdout,stde原创 2016-01-16 17:15:40 · 49605 阅读 · 6 评论 -
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 · 4723 阅读 · 0 评论 -
windows下MSVC兼容的dirent.h
dirent.h是一个应用程序接口,主要用于文件系统的目录读取操作,主要提供了几个目录数据读取函数,参见opengroup.orgint closedir(DIR *);//关闭目录DIR *opendir(const char *);//打开目录struct dirent *readdir(DIR *);//读取目录int原创 2016-03-29 13:33:38 · 10719 阅读 · 4 评论 -
Libb64:c/c++实现的base64编码解码库函数
base64编码解码本身也不复杂,但要自己写,还是得花点时间,如果能找到现成的可靠的代码,抄来最好,节省了测试的时间。 libb64就是实现base64编码解码的开源库,还提供了C++封装,用起来也挺方便代码下载地址 https://sourceforge.net/projects/libb64/下面是使用libb64 C++封装接口进行base64编码解码的调用代码/* * b64_wrapp原创 2016-03-31 12:11:41 · 8298 阅读 · 1 评论 -
c++:改造cmdline用于MSVC下的命令行参数解析
cmdline是一个轻量级的c++命令行参数解析工具,全部源码只有一个cmdline.h头文件,使用起来非常方便,关于如何使用它,不是本文讨论的重点,本文要说的是如何解决cmdline在MSVC下不能编译的问题。原创 2016-03-25 18:10:09 · 6683 阅读 · 4 评论 -
LNK2019:win32下编写DLL,应用程序找不到DLL接口函数的一种情况
最近项目技术研究结束,开始代码封装,产品最终是以动态库的形式发布,于是开始整理代码,把原来以静态库方式编译的函数库改为动态库编译,动态库编译正常。 然后用编译测试程序(调用动态库的函数)时报错了, 2>test_detect.obj : error LNK2019: 无法解析的外部符号 “_declspec(dllimport) void __cdecl gdface::set_global_原创 2016-06-14 14:25:16 · 2186 阅读 · 0 评论 -
msvc/gcc:中用#pragma指令关闭特定警告(warning)
在使用一些第三方库或源码的时候,经常会遇到编译时产生warnings情况,这些warning不是我们自己的代码产生的,当然也不好去修改,但每次编译都显示一大堆与自己代码无关的警告也着实看着不爽,而且还有可能造成自己代码中产生的警告被淹没在多过的无关警告中,而被忽略掉的情况。 所以要想办法关闭这些第三方代码和库产生的警告。 关闭特定的warning可以在编译时通过命令行参数的方式指定,比如 gcc原创 2016-06-21 14:03:20 · 13058 阅读 · 1 评论 -
msvc交叉编译:使用vcvarsall.bat设置命令行编译环境
一直以来我只知道vc设置命令行编译环境的批处理命令是%VS140COMNTOOLS%/Common7/Tools下的vsvars32.bat,(%VS140COMNTOOLS%为定义vs2015公共工具程序位置的环境变量,命令行窗口输入set就能找到,vs2010的对应定义为%VS100COMNTOOLS%) 微软的官网上有这个命令的说明: https://technet.microsoft.c原创 2016-06-20 18:06:04 · 11288 阅读 · 0 评论 -
velocity:在eclipse和ultraedit中增加对vm脚本语法的高亮显示支持
以前一直是用urltraedit来写velocity的脚本,因为没有语法高亮显示这一最基本的功能,工作起来挺费劲,效率很低。最近又要写velocity脚本,实在不能忍了,去velocity的官网仔细研究了一下,原来虽然velocity没有提供velocity的专用编译器,但是贡献者为velocity提供了在各种编译器上的语法高亮等扩展支持。 参见《Velocity and Development原创 2016-08-26 16:58:50 · 3514 阅读 · 1 评论 -
CentOS6.5上配置Python2.7+OpenCV2.4.13
为了学习使用Faster R-CNN,需要安装opencv +python环境,之前已经在CentOS下安装好了python2.7。yum安装的opencv是2.0版本,安装了opencv-python,但python中import cv2仍会报错,无法满足需要。所以决定用编译方式安装opencv。 CentOS6.5下安装python2.7参见《CentOS6.5下为编译Caffe升级pyth原创 2016-10-14 15:15:41 · 3508 阅读 · 0 评论 -
CentOS6.5下为编译Caffe升级python2.6到2.7
之前有写过一篇博客《CentOS6.5编译Caffe过程记录(系统存在多个编译器)》,讲述了在CentOS6.5下编译Caffe的过程。因为Centos6.5默认安装的python版本(2.6.6)不满足Caffe的要求(2.7),所以当时没有编译pycaffe。 如果要使用pycaffe,就要将CentOS6.5自带的python(2.6.6)升级到2.7以上版本。#!/bin/sh# 下载p原创 2016-10-09 14:13:11 · 1236 阅读 · 1 评论 -
WindowBuilder入门:使用swt的canvas类构造显示URL图像
首先如创建一个基于于Canvas的ImageCanvas类,ImageCanvas.javapackage net.gdface.ui;import java.net.URL;import org.eclipse.swt.events.PaintEvent;import org.eclipse.swt.events.PaintListener;import org.eclipse.swt.gra原创 2016-11-28 15:24:59 · 2386 阅读 · 0 评论