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

10km的专栏

专栏作者
553
文章
1133107
阅读量
51
订阅数
java: 自定义java.util.logging.Logger的日志输出格式,输出IDE(ECLIPSE)能自动识别行号的格式
我们知道在java环境有很不少第三方提供的日志记录库,比如常用的log4j,其实JDK (1.4 or above)本身也提供了日志输出工具,就是 java.util.logging.Logger.但这个工具吧,用也能用,却不好用,聊胜于无。 对于用惯了log4j的我来说,它不好用, 下是用java.util.logging.Logger输出的日志
10km
2022-11-16
7750
jsqlparser:实现基于SQL语法分析的SQL注入攻击检查
之前写过一篇博客:《java:正则表达式检查SQL WHERE条件语句防止注入攻击和常量表达式》,当前时通过正则表达式来检查SQL语句中是否有危险关键字和常量表达式实现SQL语句的注入攻击检查。坦率的说,这个办法是有漏洞的,误判,漏判的概率很大,基于当前我的知识能力,也只能做到这样。 最近学习了jsqlparser,我知道我找到了更好的办法来解决SQL注入攻击检查问题。 jsqlparser是一个java的SQL语句解析器,在上一篇博客:《jsqlparser:基于抽象语法树(AST)遍历SQL语句的语法元素》介绍了如何通过jsqlparser来遍历SQL语句中所有的字段和表名引用。 其实它可以用来进行更复杂的工作,jsqlparser会将一条SQL语句的各种语法元素以抽象语法树(AST,abstract syntax tree)形式解析为很多不同类型对象,通过对AST的遍历就可以对SQL语句进行分析。采用这种方式做SQL注入攻击检查不会有误判,漏判的问题。
10km
2022-11-16
2.1K0
java:commons-configuration2与spring的集成
commons-configuration2是apache基金会旗下的开源库,提供了强大的配置文件管理功能,使 Java 应用程序能够从各种来源读取配置数据,可以从以下来源加载配置参数: Properties files XML documents Windows INI files Property list files (plist) JNDI JDBC Datasource System properties Applet parameters Servlet parameters YAML 而且支持多个配置文件组合配置对象以及表达式。总的来说功能要比spring内置的yaml提供更丰富的配置支持, commons-configuration2还很贴心的提供了与Spring集成的实现。
10km
2022-09-30
4730
sql2java-pagehelper:Spring AOP支持
sql2java是我几年年开始写的一个sql2java是一个轻量级数据库(SQL)访问代码(java)生成器。这几年一直在根据工作需要维护升级。本文接续上一篇博客《sql2java-pagehelper:参照Mybatis-PageHelper实现分页查询》介绍Sql2java-pagehelper提供的分页查询(PageHelper)和动态SQL语句(WhereHelper)功能对Spring的支持
10km
2022-09-27
3660
sql2java-pagehelper:参照Mybatis-PageHelper实现分页查询
sql2java是我几年年开始写的一个sql2java是一个轻量级数据库(SQL)访问代码(java)生成器。这几年一直在根据工作需要维护升级,最近的项目中需要对数据库的记录提供分页查询功能,于是我参照Mybatis-PageHelper并借用其外部数据格式为sql2java实现的分页功能,将其封装为一个sql2java子项目sqlj2ava-pagehelper。使用方式与Mybatis-Pagehelper基本一致。
10km
2022-09-27
3120
sql2java:WhereHelper基于Beanshell(bsh)动态生成SQL语句
BeanShell是一个小型嵌入式Java源代码解释器,具有对象脚本语言特性,能够动态地执行标准JAVA语法,并利用在JavaScript和Perl中常见的的松散类型、命令、闭包等通用脚本来对其进行拓展。BeanShell不仅仅可以通过运行其内部的脚本来处理Java应用程序,还可以在运行过程中动态执行你java应用程序执行java代码。因为BeanShell是用java写的,运行在同一个虚拟机的应用程序,因此可以自由地引用对象脚本并返回结果。 基于Beanshell可以实现很多有意思的功能,比如最近的工作中为了给前端提供灵活的数据库条件查询,我利用Beanshell的能力,可以实现了WhereHelper用于根据前端提供的参数,动态生成SELECT查询语句,大大简化了代码复杂度。 本文介绍WhereHelper的使用
10km
2022-09-27
1.1K0
sql2java-excel(二):基于apache poi实现数据库表的导出的spring web支持
sql2java是我几年年开始写的一个sql2java是一个轻量级数据库(SQL)访问代码(java)生成器。这几年一直在根据工作需要维护升级,最近的项目中需要对数据库的记录提供导出excel的功能。 就开始学习apache的POI,参照网上的示例实现了单张表的导出。并进一步将它封装成一个通用库成为sql2java下的子项目sql2java-excel.以方便在其他项目中技术复用。 本文开始介绍sql2java-excel的使用spring 支持的部分
10km
2022-09-27
1.5K0
sql2java-excel(一):基于apache poi实现数据库表的导出及支持spring web
sql2java是我几年年开始写的一个sql2java是一个轻量级数据库(SQL)访问代码(java)生成器。这几年一直在根据工作需要维护升级,最近的项目中需要对数据库的记录提供导出excel的功能。 就开始学习apache的POI,参照网上的示例实现了单张表的导出。并进一步将它封装成一个通用库成为sql2java下的子项目sql2java-excel.以方便在其他项目中技术复用。 本文开始介绍sql2java-excel的使用.
10km
2022-09-27
7290
java:蛇形命名法格式(snake-case)字符串变量名转驼峰命名法格式(camel-case)
在变量命名的习惯方法有多种,不同的语言变量都有约定俗成的命名方式,比如常见就是蛇峰命名法(camel-case)和蛇形命名法(snake-case),比如Java中的命名习惯就是用camel-case,而SQL语言和C语言这些历史更久的设计语言命名习惯是snake-case.
10km
2022-09-26
1.2K0
beanshell入门:脚本中引用自定义的变量和方法和定义运行时变量
Beanshell (bsh) 是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性。
10km
2022-09-26
1.6K0
spring-boot:对日期(Date)类型数据的序列化
spring将Java 数据类型的序列和反序列化为JSON字符串是依赖jackson(com.fasterxml.jackson.core:jackson-core)库来实现的,对于Java Bean中的Date类型字段,可以使用@JsonFormat注释来指定日期格式,示例如下:
10km
2022-06-07
2.4K0
java(JVM)结束时释放JNI资源(Runtime.addShutdownHook)
如下代码中cmjnidrv是一个动态库,CodeCacheManager在类加载时就自动将cmjnidrv加载进来。cmjnidrv中有多个独立的线程在运行并申请了大量的内存. release()是个native方法,用于释放cmjnidrv中的申请资源并中止cmjnidrv中的线程。 为了保证在java应用结束的时候cmjnidrv的资源能被正确释放,就必须确保release()被调用。
10km
2022-05-07
8760
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
C++11 JNI开发中RAII的应用(三)--JavaClassMirror
如果这段代码被频繁调用,那么每次都要重复的去调用JNIEnv::FindClass,通过字符串去查找jobject,每次都要调用GetFieldID通过字符串查找获取FieldID。对是一个java class,这都是常量啊,为什么不可以一开始把这些值都记下来,每次使用时直接取这个值就行了? 于是,在前面《C++11 JNI开发中RAII的应用(一)–制作基础工具》和《C++11 JNI开发中RAII的应用(二)–JNI函数封装》两节的基础之上,我决定做一个JavaClassMirror类记录一个类的这些常量,用于后面的频繁调用。
10km
2022-05-07
2610
C++11 JNI开发中RAII的应用(二)--JNI函数封装
在上一节《C++11 JNI开发中RAII的应用(一)》中我们已经有了一些基本的RAII封装工具,本节就简单了,就是根据需要把一些常用的JNIEnv函数封装成更方便使用的模板函数。
10km
2022-05-07
6060
C++11 JNI开发中RAII的应用(一)--制作基础工具
最近项目C++底层代码写完了,开始做java与底层代码的接口部分,就涉及到JNI编程,我这是第一次写JNI代码,看了很多资料,得到一个印象:JNI开发本身不复杂,但如果操作不慎,很容易造成内存泄露参见《jni 内存泄露》,而且最容易被忽视的就是本地引用(LocalReference)造成的内存泄露。 按照oracle官方对的文档 《Java Native Interface Specification Contents》的描述,
10km
2022-05-07
3510
C++11 你真的会用迭代器(iterator)么?
C++ STL提供了丰富的标准容器(Container)对象(vector,array,queue,list,set,unordered_map/set…),让我们可以根据需求选择不同的容器管理各种类型的数据。说到使用容器,不用迭代器(iterator)是不可能的,所有的容器对象都根据容器的特点都提供了类似但不同的iterator,用于访问容器中的数据。
10km
2022-05-07
3480
C++11 为自定义容器实现标准的forward迭代器
当前我的一个项目是基于C++11为基础开发的,在项目中需要用到哈希表来保持数据,C++11本身已经提供了丰富的容器类型(array,list,hashmap….vector),但因为项目的特殊需要不能使用C++11现成的unordered_map容器。无奈所以我只能自己根据项目需要写了一个哈希表的模板类–HashTableAbstract–也就是自定义容器。 然后问题了,为了让这个自定义的容器也能像unordered_map一样使用forward(向前)迭代器进行遍历数据,还要为它实现一个forward迭代器。下面以此为例来简要说明为自定义的容器实现标准的迭代器的办法。
10km
2022-05-07
4590
用scala语言实现并行堆排序(top k)
因为项目需要对大量数据进行排序计算top k,开始了解并行计算框架,接触了spark,spark都是用scala写的,所以为了了解spark,恶补了一阵scala语言。 这是一种非常简练的函数式语言,最让我感觉兴趣的就是它天然支持并行计算,并且因为生成的目标代码是java虚拟上的class,所以与java有着天然的亲和力。可以与java代码之间自由的互相调用。 原本是想通过spark架构来实现大数据的快速排序(实现top k),仔细研究了spark后发现有难度,就暂时放弃了这个方案。但是想到了新的解决方法,就是利用scala(研究spark的副产品)的并行特性来实现大数据的快速排序模块,加入到系统中,供java代码调用。。。 下面的代码就是这个模块的核心排序算法。 总体的流程就是:
10km
2022-05-07
5360
ant脚本中用beanshell实现简单的自定义task
ant的功能非常强大,并且具有非常好的可扩展性,可以直接嵌入脚本(script)来自定义task,并且可以支持多种脚本语言(Javascript ,Apache BSF,Groovy ,Python,beanshell,Ruby,Judoscript等等)
10km
2022-05-07
2590
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档