java
牧夫
这个作者很懒,什么都没留下…
展开
-
clickhouse中数组字段的读写
clickhouse中数组类型的字段,怎么用JDBC对这种字段读写原创 2022-07-11 16:14:11 · 934 阅读 · 0 评论 -
fastjson1.2.83时间处理的bug
fastjson1.2.83发现一个bug:如果一个JSONObject有一个Date值,经过toJSONString()后会变成一个long值,再经过JSONObject.parseArray后得到的时间就不对了。原创 2022-07-11 16:03:47 · 2822 阅读 · 3 评论 -
pom中运行ant命令
有时候我们需要在pom中运行ant命令,比如jar生成后做些什么等,可以像下面这样实现:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <原创 2022-04-19 18:08:34 · 408 阅读 · 0 评论 -
pom中创建额外的jar
在maven项目build时,有时候我们需要额外创建一个jar。这个需求可以用assembly功能实现。<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.6</version> <configuration>原创 2022-04-19 18:01:54 · 258 阅读 · 0 评论 -
SpringBoot打包时将lib放外面
SpringBoot打包时缺省情况下是生成一个完整的jar。但是这个jar会比较大,一般会有几百兆大小。因为这样把所有用到的其他jar都放进这个jar中了。那有没有办法将其他jar放到jar包外面呢?有的!只需要在pom文件中加入<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <v原创 2022-04-14 16:44:09 · 1340 阅读 · 0 评论 -
jps 出现main class information unavailable
jps时出现main class information unavailable。 百度了一番,仍然没解决。忽然灵机一动,想到启动脚本中设置了远程调试,且是等待模式。-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=18769估计就是这个原因。将suspend改为n,问题解决。...原创 2021-04-21 14:13:24 · 2105 阅读 · 2 评论 -
java调用1.5.1版本PMML
PMML版本1.5和1.4的API发生了变化。网上搜到的都是1.4版本的例子。所以这里提供一个1.5版本的例子。public class PredictTest { public static void main(String[] args) throws Exception { String pathxml = "xgb_ip.pmml"; Map<String, Double> map = new HashMap<String, Double>();原创 2020-07-23 18:13:02 · 687 阅读 · 1 评论 -
一个java版本的复杂spark例子
首先说一下这个spark程序的目的。这个程序是要求对网站收到的http请求数据计算一些特征值,要求每10秒钟计算一次最近2小时的数据的特征值。这就需要用到spark的滑动窗口运算了。数据是从topic为app的kafka中读取,计算出来的特征值发往topic为app_FEATURE的kafka中。代码如下:public class FeatureAccumulator { public static void main(String[] args) { if (args.lengt原创 2020-07-17 16:24:02 · 266 阅读 · 0 评论 -
spark中变量名重用要小心
在spark程序中,重用变量名要特别小心。比如下面的程序JavaPairDStream<String, Serializable> result1 = data.mapToPair(...);result1 = result1.filter(...);result1 = result1.union(other);结果极有可能是错的。估计和DAG的构造方法有关,DAG有可能是用变量名来构造计算图的,同样的变量名在不同的地方含义不一样,但是DAG区分不了。当然这只是我猜的,没得到证原创 2020-07-17 15:50:07 · 181 阅读 · 0 评论 -
Integer.getInteger()的坑
程序中用到了Integer.getInteger("123")。以为是把一个字符串格式的数字包裹为一个Integer。 结果总是返回null。看了java源代码,才发现这个方法是取系统变量中的值。感觉这个方法设计得不好。很难看得出来这个方法和系统变量有什么关系。应该为System.getInteger()更好些。...原创 2020-07-17 15:40:30 · 4938 阅读 · 3 评论 -
Oracle批量插入时出ArrayIndexOutOfBoundsException
Mysql在批量插入时,无法获得生成的id值,为了解决这个问题,给prepareStatement加了Statement.RETURN_GENERATED_KEYS参数。conn.prepareStatement(rawSQL, Statement.RETURN_GENERATED_KEYS) 但是Oracle批量插入时,出现ArrayIndexOutOfBoundsException:...原创 2018-08-16 18:16:51 · 2012 阅读 · 0 评论 -
dubbo转Spring Cloud
一个系统原来是使用dubbo的,现在想把微服务架构转为Spring Cloud。但是这个系统已经在使用中了,希望一步步的把dubbo服务一个个的转为Spring Cloud,转换一个使用一个,转换的过程中尽量少影响原系统。比如现在要转换dubbo服务D1成Spring Cloud服务C1,D1又需要调用dubbo服务D2。怎么办呢?如果同时转换D1,D2的话,D2可能又会调用D3,这样可能引用一大...原创 2018-05-30 20:30:17 · 5060 阅读 · 0 评论 -
java动态编译
有时候需要在运行时动态生成源程序,然后编译。于是写了下面这个动态编译类(参考了网上的代码)public class CompilerUtil { public static boolean compile(String binPath, String clsName, String source) { JavaCompiler cmp = ToolProvider.getSystemJa原创 2017-05-14 21:04:53 · 258 阅读 · 0 评论 -
快速反射调用
java的反射调用比起直接调用要慢很多倍。而反射调用又是被广泛使用的。如何才能提高反射调用的速度呢?一种想法就是对于每一个bean动态生成一个类,由这个类根据不同的方法名进行直接的方法调用。这样就把反射调用转换成了直接调用,速度应该有很大提高。而动态生成类虽然比较慢,但是在服务器运行期间只运行一次,这个代价还是值得的。首先需要定义一个IBeanWrapper。这个wrapper负责原创 2017-05-14 19:40:22 · 469 阅读 · 0 评论 -
ThreadLocal引起的问题
我们曾经做过一个多租户的项目,每个租户用一个唯一的平台号。程序中有的地方把当前用户的平台号放在一个ThreadLocal变量中。部署到tomcat上后发现一个很奇怪的现象:有时候用户的平台号会出现错乱,即一个人的平台号会出现在另一个登录用户的身上。最后原创 2017-05-06 20:45:53 · 1776 阅读 · 0 评论 -
jackson JSON 支持转义
jackson缺省并不支持特殊字符转义。这样如果字符串中含有引号等字符,生成的JSON就不对了。可以如下设置让jackson支持转义:mapper.configure(JsonGenerator.Feature.ESCAPE_NON_ASCII, true);原创 2017-08-22 16:06:46 · 7822 阅读 · 2 评论 -
java日期格式中MMM的问题
在一次处理美国的网站时,时期格式为Dec 8, 2016。我们知道Dec这种表示月份的需要用MMM表示,于是我用一下代码解析这个时间new SimpleDateFormat("MMM d, yyyy").parse(s)谁知运行居然出错。为什么会出错呢?在确认格式没写错后,最后我意识到应该是Locale导致的问题,我的Locale是zh_CN。于是我改成这样:new SimpleDateF原创 2017-11-08 15:56:51 · 6837 阅读 · 2 评论 -
Java并发编程:volatile关键字解析 by 海子
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来转载 2017-11-30 16:44:46 · 263 阅读 · 0 评论 -
nginx反向代理设置
项目需要将服务器http://localhost:8080/ccc/反向代理为http://www.xxx.com/。nginx配置如下:server { listen 80; server_name www.xxx.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_head原创 2017-12-26 17:35:35 · 515 阅读 · 0 评论 -
Mysql事务隔离导致的问题
这个功能是要产生一个顺序增长的流水号。简化的代码如下: @Transactional(readOnly=false, propagation=Propagation.REQUIRED) public RunningNumber getNextNumber(String runningType){ RunningNumberType type = config.g原创 2017-08-21 15:23:38 · 294 阅读 · 0 评论 -
判断两组IP是否包含相同的IP值
有这么一个需求:判断两组IP是否包含相同的IP值。IP组表示为单个IP和IP段的组合,比如 10.1.1.3,10.1.2.4-10.1.2.10,10.1.2.20-10.1.2.30现在需要判断这种格式的两组IP是否包含了相同的IP值,只要有一个相同的IP值就行。比如1.1.1.3和1.1.1.1-1.1.1.4就包含了一个相同的IP 1.1.1.3。为了比较的方便,首先我们要把IP格式化...原创 2018-05-30 19:36:47 · 977 阅读 · 0 评论 -
java中如何知道当前方法
C语言中可以用代码__FUNCTION__获取当前方法名。java中是否也能获取当前方法名呢?答案是肯定的。比如下面代码 public User findByLoginName(String username) { class C {}; Method method = C.class.getEnclosingMethod(); ... }这原创 2017-05-24 15:44:28 · 377 阅读 · 0 评论