写了 Spring AOP 实现自定义注解,打印日志之后,感觉在调用第三方 dubbo 接口的时候,依然会有同样的问题,然后看了一下 dubbo 的官方文档,决定下一个 filter,实现 dubbo 接口的日志拦截,以下是自己完的一个小例子,同样也是供需要的同学参考。
1. filter 具体实现如下:
package cn.bridgeli.demo.filter;
import com.alibaba.dubbo.rpc.Filter;
import com.alibaba.dubbo.rpc.Invocation;
import com.alibaba.d[......]
Read more
自工作后,除了一些小项目配置事务使用过 AOP,真正自己写 AOP 机会很少,另一方面在工作后还没有写过自定义注解,一直很好奇注解是怎么实现他想要的功能的,刚好做项目的时候,经常有人日志打得不够全,经常出现问题了,查日志的才发现忘记打了,所以趁此机会,搜了一些资料,用 AOP + 自定义注解,实现请求拦截,自定义打日志,玩一下这两个东西,以下是自己完的一个小例子,也供需要的同学参考。
1. 注解如下:
package cn.bridgeli.demo.annotation;
import java.lang.annotation.ElementType;
impor[......]
Read more
Java 使用 FFmpeg 处理视频文件示例
目前在公司做一个小东西,里面用到了 FFmpeg 简单处理音视频,感觉功能特别强大,在做之前我写了一个小例子,现在记录一下。
首先说明,我是在 https://ffmpeg.zeranoe.com/builds/ 这个地方下载的软件,Windows 和 Mac 解压之后即可使用。具体代码如下:
package cn.bridgeli.demo;
import org.junit.Test;
import java.io.BufferedReader;
import java.io.IOException;[......]
Read more
今年春节真是打破了 N 多传统,很多人都是在家连门都没出过,从今天开始也要开始在家远程办公了,因为和小伙伴合作开发一个功能,但是接口目前还没给到,然后记得今年元旦前后,关于 YYYY 报错的问题,突然火了,据说有 N 多程序员被火速召回公司改 bug,所以决定写篇小文章说说这个问题:YYYY 一定会报错吗?
首先需要说明的是:我用的 JDK 版本为:jdk-8u131-macosx-x64,所以具体表现为应该显示:2019-12-31,结果确是:2020-12-31,另外经过我的测试其实不仅 format 的时候报错,parse 的时候同样也会报错,我写了一段示例代码如下:
[......]
Read more
当一个 Java 程序员工作一段时间之后,不可避免的要去了解 JVM,而了解 JVM 的时候,自然就会看到 Java 的内存模型,但是个人看过有太多的人概念不清不楚,有太多的人把 Java 内存结构,记得曾经看过一篇文章,一个同学去面试,面试官问他:简单聊聊 Java 的内存模型,他说完之后,面试官说:你说的不对啊,内存模型应该是堆、栈、常量池、方法区、程序计数器等等,然后他瞬间就不想去这家公司了,这不是让一个半吊子去当面试官吗,自己概念都没搞清楚就去说别人,个人也看过太多文章把这个搞错,所以今天就写了一篇小文章,说说自己对 JMM 的理解,当然我说的可能也不对,也不可能说透。
1. 主[……]
Read more
公司项目目前用的 JDK 版本还是 1.7,前一段时间同事想把本地的开发环境生成 1.8 想玩玩,结果发现两个小问题,特此记录一下:
1. jar deploy 到 nexus,生成 javadoc 的时候报的有个错,一些注释不认识:
错误: 未知标记: date
* @date:2019/8/27 18:40
这个很简单,maven plugin 修改一下就好:
<plugin>
<groupId>org.apache.maven.plugins</groupId>[......]
Read more
前一段时间在公司做一个小功能的时候,统计一下某种情况下有多少条数据,然后修改的问题,当时感觉很简单,写了一个如下的 SQL:
SELECT COUNT(*) FROM t1 where tl.c1 not IN (SELECT t2.c1 FROM t2);
预期的结果是:有多少条数据在 t1 中,同时不在 t2 中,结果为:0,也就是 t1 中数据都在 t2 中,但是很容易就发现某些数据在 t1 中不在 t2 中,所以就感觉很奇怪,这个 SQL 看着也没问题啊。经过一番查询原来是因为 t2 的 c1 字段包含了 null 值,修改如下两种形式都可以得到预期的结果:[……]
Read more
前一段时间,公司某个项目组某个项目因为失误,出现了一个严重 bug,动态 SQL 导致没有 where 条件,就把数据库某张表里面的数据全部更新了,虽然事后 DBA 同学很给力的恢复了,但是运维的同学讨论,让所有的项目都不许写动态 SQL,必须根据 ID 更新,并写了一个 sonar 插件,扫描代码,发现有动态 SQL 就报 bug,不过还好暂时没有强制要求改,个人认为如果强制要求,这不就是典型的因噎废食吗?没有动态 SQL,这代码量得增加多少?我们研发要不要按照代码量算钱?前一段时间,看《即刻时间》丁奇(原名林晓斌)的 《MySQL 实战 45 讲》里面有一句话关于 sql_safe_upd[……]
Read more
明天就是十一假期了,公司也没多大事,刷知乎,看到有人吐槽曾经的一个合作伙伴连 md5 都写不对,告诉对方写错了,对方顾头不顾腚的修,还是没修对,然后测了一下自己写的想亏写对了,不然又遗留 bug 了,不过看下面评论,有人提到 Apache Commons Codec 里面都已经写好了,看了一下确实,反正也无聊,也写不了大文章,写着玩玩。
1. 先看自己手写的 md5 // 今后大家不要这么写了,太傻了
package cn.bridgeli.demo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;[......]
Read more
1. json 转 JavaBean 大小写不敏感
在工作中,我个人经常使用的 json 的工具类是 Google 的 gson,前几天做一个需求的也自然而然的使用这个,但是在和其他部门联调的时候,发现他的属性全是小写,而不是刚开始约定的小驼峰,所以导致他传过来的字符串,我这边转不成 Java bean,在和他讨论的时候,他说他一直就这么写,而且别人使用的时候是没有问题的,然后就找到其他的使用的同学,他竟然说他没在意过这个问题,线上测试了一下,确实没有问题,然后就看一下怎么实现的,然后突然发现,他使用的是 alibaba 的 fastjson 转 Java bean,然后测试了一下,发现[……]
Read more
近期评论