自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Aubergines的专栏

工作生活点滴记载

  • 博客(73)
  • 资源 (3)
  • 收藏
  • 关注

原创 使用PDFBOX提取PDF中的文字

使用PDFBOX提取PDF中的文字

2022-06-21 12:32:16 1977 1

原创 线上OOM问题排查

今天上线了一个优化,上完线后测试验证没有问题,本来以为这个事情就告一段落,没有想到四五个小时以后运维就@我说服务的CPU占用过高,不一会就OOM了,赶紧让运维把堆栈dump文件给我,我用的是JProfiler来分析dump文件。比较幸运的是我很容易就找到了自己熟悉的一个类点击最后的show more,可以看到对应的方法堆栈,就可以知道是那块方法的问题或者从Biggest Objects入手也可以...

2021-08-05 22:25:13 212

转载 GIT遇到REMOTE HOST IDENTIFICATION HAS CHANGED怎么办

今日遇到如下问题:警告的大概意思就是,主机密钥发生变更,并提示安全风险(可能存在中间人攻击)但是事实是,这是因为我重装系统之后遇到的问题。重装系统后,指纹当然会发生变化了。。。在Xshell实验中,密钥发生变化,会进行交互式提示保存,但是linux里默认是没有这个配置的。思路明白了,我们的目的就是要更新并保存密钥。还好,linux的ssh也提供了对应的指令。使用ssh-keygen -R [your server’s IP] 这条指令,然后回车,提示known_hosts已经更新,即可。更新完

2021-08-03 18:20:27 882

原创 微信授权回调区分环境

目前公司有四套环境DEV、TEST、PRE、ONLINE,所以我们的代码能让用户使用了,就和升级打怪一样要经过这四关。这两天又处理了个微信授权回调需要到不同环境的问题,记录下给大家提供一个思路。我们都知道微信公众号或者微信开放平台的网站应用的回调域名只能配置一个,下面是微信开放平台的网站应用的回调域名配置但是我们有多套环境,需要在同步的时候方便的切换到不同的环境方式一:所有的回调授权都在线上处理这种方式是回调都在线上的服务里,在回调的路径上加上环境参数,通过业务逻辑调用对应环境的接口处理对应的逻辑

2021-07-28 15:30:18 661 2

原创 Feign.builder执行GET方法

我的服务是一部分业务场景的统一的出口,为了方便,我定义了我调用业务方的入参和出参,于是写了一个通用的Feign的方法: @Headers({"Content-Type: application/json", "Accept: application/json"}) @RequestLine("GET /") Response<PromptResult> getPromatData(@Param("cid") Long cid);针对不同的业务场景,我定义了个枚举@G

2021-07-28 14:58:57 809

原创 Maven打包-上传源码包

公司内部业务之间的相互调用是用Feign,由业务方提供的Feign Client包,虽然有接口wiki,但是有的时候真不如直接看代码上的注释来的方便快捷.<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.0.0</version> <execu

2021-05-06 19:50:23 603

原创 SpringBoot打包排除指定的包

使用spring-boot-maven-plugin排除指定的包<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>

2020-11-21 18:43:53 1949

原创 @JsonInclude之NON_NULL不生效问题

今天在使用JsonInclude的NON_NULL定义对象属性返回的情况时,开始出现的结果不是自己预期的,查询原因发现和继承有关定义父级对象:@Datapublic class BaseEntity implements Serializable { private static final long serialVersionUID = 1L; /** * 搜索值 */ private String searchValue; /**

2020-11-07 18:07:23 3621

翻译 Jackson - @JsonInclude之USE_DEFAULTS

指定了JsonInclude.Include#value的USE_DEFAULTS,以便可以使用更高级别的默认值。如果在属性上使用此选项@JsonInclude,则将使用类的设置(如果存在),否则将使用全局序列化包含规则(通过设置ObjectMapper)。例子Java对象@JsonInclude(JsonInclude.Include.NON_EMPTY)public class Employee { private String name; private String dept;

2020-11-04 00:33:46 1391

翻译 Jackson - @JsonInclude之NON_DEFAULT

@JsonInclude(JsonInclude.Include.NON_DEFAULT)可用于排除具有POJO默认值的属性。这有不同的用法,如下所示:如果在类级别使用@JsonInclude(JsonInclude.Include.NON_DEFAULT),则将排除字段的默认值。这是通过使用零参数构造函数创建POJO实例并比较属性值(不包括默认值,例如,默认int值为0,默认String值为null等)来完成的。如果在属性级别使用@JsonInclude(JsonInclude.Include.NO

2020-11-04 00:25:12 2301

翻译 Jackson - @JsonInclude之NON_EMPTY

@JsonInclude(NON_EMPTY)可用于排除空值。以下值被认为是空的:JsonInclude.Include NON_NULL。由JsonInclude定义的’Absent’值.Include NON_ABSENT(教程)。对于Collections和Maps,如果methodisEmpty()返回true。对于Java数组,如果length = 0。对于String,如果Strings.length()返回0。例子Java对象@JsonInclude(JsonInclude

2020-11-04 00:12:20 2177 1

翻译 Jackson - @JsonInclude之NON_ABSENT

@JsonInclude(NON_ABSENT)可用于排除空值和“不存在”的值。此处的不存在值表示引用空值的非空引用类型值(例如java.utl.concurrent.atomic.AtomicReference)。例子对象@JsonInclude(JsonInclude.Include.NON_ABSENT)public class Employee { private String name; private String dept; private AtomicReference&

2020-11-04 00:02:59 1537

翻译 Jackson - 浅析@JsonInclude

@JsonInclude注解可用于指示何时可以对添加注解的属性进行序列化。通常会包含属性值,但是通过使用这个注解,我们可以基于属性值指定简单的排除规则。这个注解可用于字段,方法或构造函数参数。它也可以在类上使用,这样对应的规则将应用于类的所有属性。以下是@JsonInclude定义代码段:@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.TYPE, ElementTy

2020-11-03 23:52:29 303

原创 Jackson - @JsonInclude之NON_NULL

对于属性值为NULL要不返回对应的属性,在Model添加@JsonInclude(JsonInclude.Include.NON_NULL)如果有为NULL的属性,则不会返回使用前效果:使用后的效果:

2020-11-03 23:27:00 1249

原创 Feign 路径问题

引入三方包后项目启动报java.lang.IllegalStateException: template has not been resolved,发现是Feign包中RequestTemplate中类报出来的,但是自己还没有执行调用的逻辑,启动阶段只算是初始化,怀疑是Feign Client 包有问题,最终通过仔细观察发现是接口中方法上的方法路径RequestMapping的value缺少/导致的。...

2020-11-03 00:20:25 1486

转载 Hystrix原理与实战

背景分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务。如下图,对于同步调用,当库存服务不可用时,商品服务请求线程被阻塞,当有大批量请求调用库存服务时,最终可能导致整个商品服务资源耗尽,无法继续对外提供服务。并且这种不可用可能沿请求调用链向上传递,这种现象被称为雪崩效应。雪崩效应常见场景硬件故障:如服务器宕机,机房断电,光纤被挖断等。流量激增:如异常流量,重试加大流量等。缓存穿透:一般发生在应用重启,所有缓存失效时,以及短时间内大量缓存失效时。大量的缓存不命中,使请求直

2020-10-21 21:53:20 171

原创 Java好用的合成图片工具

前言:互联网本质还是流量的生意,谁收割的流量最多,谁便是下一个赢家。“自古流量出社交”也就可以解释为什么每个APP都有一个社交梦,每个PM都有一颗想做社交的心。无论是B端产品还是C端产品,能够讲好一个“社交故事”,就很有可能给资本市场带来无穷的想象空间。公司一直有分享合成图片的场景,之前自己写起来比较费劲,最近找了一个比较好用的工具分享给大家码云地址,感谢opensourcechen的分享。话不多说,直接上例子看效果public void testCombineTopicImage() throws

2020-10-01 00:35:14 442

原创 记一次压测问题排查过程

今天进行服务压测的时候,A服务的接口会根据传参调用下游的B服务或C服务,压测发现调用B服务的时候吞吐量在4K TPS,但是调用C服务的时候TPS却只有几十。1、排查业务代码调用C服务的逻辑发现并不复杂2、排查C服务的服务器的负载,数据库的负载发现都处于极低的水平,没有慢SQL3、排查打印C服务的堆栈,发现大量的线程处于TIMED_WAITING的状态,怀疑线程池的配置问题4、排查数据库线程池的配置,发现没有问题。打开Druid的监控,发现池中连接数、池中连接数峰值 、活跃连接数峰值正常,与预期一致

2020-09-26 00:22:10 300

原创 一步一步Spring Cloud Config配置中心

pom文件 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.4.RELEASE</version> &lt...

2019-08-08 00:14:58 192

原创 给图片添加满屏的图文水印

####### 前言:为了防止网站的图片资源被盗用,需要给图片打上图文的水印,之前做了一版只是在图片的右下角打上图文水印,这次升级了,要求在整个屏幕上都打上水印。话不多说,直接上代码。 /** * 水印图片的大小 */ public static final double BASE_SIZE = 200d; /** * 图片的宽高倍数 */ public static fi...

2019-07-31 18:19:46 1874

原创 Nexus私服上传文件

前言:Nuxus从3.0以后上传Jar、POM就不能通过网页手动上传了,只能通过Maven、Ant、Gradle、Docker CLI等命令的方式上传对应的文件,如下是使用Maven上传文件的几种操作没有pom文件的示例mvn deploy:deploy-file -DgroupId=com.somecompany -DartifactId=project -Dversion=1.0.0 ...

2019-02-22 17:50:13 2250

原创 那些年我租过的房

租房对于北漂来说是一个撇不开的话题,每一年总有那么半个月甚至一个月的时间为选择一个交通方便、房东善良、房屋硬件配置可以、周围环境还行…的窝奔波,其实我的要求并不高,奈何人生不如意十有八九,不知道为什么我最多。2018年四月份经过半个月的纠结,我选择离开自己住了两年的窝,毅然决然的踏上新找一个窝的征途。当时是和别人合租的一个二居室,我刚去到那个小区的时候,周边生活的基本设施不是多好,不过我上班非常...

2019-02-17 20:59:52 222

原创 Java并发之Thread.join()

前言:刚刚开始学习多线程的Thread的时候就知道了join这个方法,一直对它只是懵懂的认知。Waits for this thread to die是这个方法的作用。看一个例子public class SynchronizedClassClass implements Runnable{ static SynchronizedClassClass synchr...

2019-02-17 16:30:13 228

原创 Java并发之Synchronized

前言:Synchronized的作用是能够保证在同一时刻最多只有一个线程执行该段代码,以达到保证并发安全的效果,是Java的关键字,被Java语言原生支持,是最基本的互斥同步手段,是并发编程总的元老级角色,是并发编程的必学内容。Synchronized的两个用法对象锁:包括方法锁(默认锁对象为this当前实例对象)和同步代码块锁(自己指定锁对象)类锁:指定Synchronized修饰静...

2019-02-15 11:53:11 179 1

原创 使用thumbnailator处理图片

按比例进行缩放保存到文件中,其中scale是浮点类型的参数,值不能小于0,否则会报IllegalArgumentException异常.包含两种用法,一个参数的时候是根据原图片进行等比例的缩放,两个参数的时候第一个参数宽的,第二个是高的缩放比例Thumbnails.of(&quot;c:\\a.jpg&quot;).scale(0.3f).toFile(&quot;c:\\a1.jpg&quot;);Thumbnails.of(...

2019-02-13 16:37:27 755

原创 使用Java连接Shell输出日志

前言:自己的搭建了一个平台,为了方便查看日志,使用Java自研了一个查看日志的界面如下登录Shell的工具类public class SessionUtil { private static final Logger infoLogger = LoggerFactory.getLogger(&quot;infoLogger&quot;); private Session session; @Value(...

2019-01-31 23:59:45 1975

原创 Spring Cloud注解的使用

前言:编程规范的重要性不言而喻,之前我们接口的传参都是使用Map的形式,随着公司的发展,以及慢慢的规范的建立,我们要求传参的时候尽量使用对象作为入参。Spring boot强制返回的的数据是JSON形式的RequestParam与RequestBody:RequestParam注解接收的参数是来自于request header中,即请求头,也就是在url中,格式为xxx?username=12...

2019-01-30 17:05:01 618

原创 七牛视频

前言:七牛视频处理的时候、需要把视频转码为固定的格式,同时要对视频进行打水印,并且水印的显示的时间可以灵活的调整,测试了半天。需要视频的水印从第11秒开始,一直到视频的最后,水印的位置,在视频的右上角,相对于X、Y轴有一定的偏移,使用的命令如下:{ "code": 0, "desc": "The fop was completed successfully", "id"...

2019-01-21 15:23:12 504

原创 微信静默授权登录

前言:公司的产品一个比较重要的场景是分享到微信中,在微信打开页面后,我们会通过打开微信的用户的信息,进行权限的判断,其中包括游客的,这样我们就没有办法弹窗强制让用户登录,最终选用了微信的静默授权登录1. 微信授权登录前端调用:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&amp;redirect_uri=http...

2019-01-17 09:42:11 5316

原创 JVM杂记

JVM的参数类型标准参数: -help、-versionx参数:非标准化参数 -Xint、-Xcomp、Xmixedxx参数:Boolean类型: 格式:-XX[±] 表示启用或者禁用name属性,比如:-XX:+UseConcMarkSweepGC(CMS垃圾收集器) 或者 -XX:+UseG1GC非Boolean类型: 格式:-XX:= 表示name属性的值是value,比如:...

2019-01-17 09:17:45 238

原创 Spring-Cloud集成Redisson

前言:目前官方罗列的连接redis的Java客户端虽然有六种最近六个月在更新,不过推荐的只有Jedis,lettuce,Redisson,一般用的比较多的是Jedis,不过相对来说Redisson的功能更强大一些,今天尝试了基于spring-cloud集成Redissonpom文件,我使用的是redisson的spring boot的starterredisson-spring-boot-st...

2019-01-02 18:23:22 9195 1

原创 Redis-cluster集群搭建

自从redis升级到5.0版本以后,还没有尝试过,听说新的数据类型stream非常的不错,特别适合目前的大数据的情况,因为公司目前的集群是3.0版本的,想尝试新特性,只能自己搭建一个玩玩了,下面是我的搭建的步骤下载稳定的源码包wget http://download.redis.io/releases/redis-5.0.3.tar.gz解压包到/usr/local/src下面ta...

2019-01-02 10:46:13 1227

原创 push项目到GitHub失败

这两天使用Mac新建立的项目Push到GitHub上得时候报了一个403的异常,如下是我的解决的方法2:39 PM Can't finish GitHub sharing process Successfully created project 'spring-cloud' on GitHub, but initial push failed: unable to access ...

2018-12-25 22:45:23 814

原创 Java基础-值传递

前言:今天帮同事处理了一个问题,这是一个关于值传递和引用传递的问题,自己刚好回顾记录一下整体的逻辑大概类似于如下的代码public void test() { Map&amp;amp;lt;String,String&amp;amp;gt; tempMap = new HashMap&amp;amp;lt;&amp;amp;gt;(8); List&amp;amp;lt;Map&amp;amp;gt; resultList = new ArrayL

2018-12-25 14:37:36 228

原创 Redis应用之SortedSet的使用

前言:相对来说我们是比较深度使用redis的,在推荐瀑布流和排行榜等好多的场景我们主要是用的是SortedSet,今天来说一说SortedSet一、基本的用法插入数据,常用的有ZADD和ZINCRBY使用方法Long zadd(byte[] key, double score, byte[] member)插入数据,比我们的推荐场景中,根据用户的行为数据,推荐出来的数据会存放到red...

2018-12-24 13:11:38 1272

原创 Spring-Cloud搭建Eureka高可用集群

最近开始系统的学习spring boot 2.0的相关的知识,今天来看搭建eureka的搭建pom.xml文件的配置,之前使用的是spring-cloud-starter-eureka-server,在启动项目的时候提示这个的状态是deprecated的,建议使用spring-cloud-starter-netflix-eureka-server,这里我使用的是最新版的2.0.1.RELEAS...

2018-12-23 22:25:51 391

原创 个人IDEA配置调整

在使用IDEA的时候,修改一些默认的配置,能大大提高我们的开发效率,下面总结一下我自己修改的配置,供大家参考自动导包,粘贴一段代码后还需要一个个导包是一个让你很抓狂的事情,你可以做如下的修改,按照下图的路径修改insert imports on paste为All,自动导包的快捷键是Ctrl+Alt+OAll:有需要导入的包名时,会自动导入,不会弹提示框ASK:有需要导入的包名时,会弹...

2018-12-23 16:33:16 278

原创 IDEA显示Reading

升级完IDEA后打开之前的项目,加入一个新的JAR包,然后引入JAR包的时候,IDEA的下部的提示去显示reading ...../pom.xml,而且Mac电脑的风扇疯狂的转动,不到两分钟IDEA就卡死了,处理办法hosts增加配置127.0.0.1 localhost...

2018-12-17 23:29:04 1109

原创 数据迁移

前言:基于公司的战略的考虑,最近负责公司的两个产品线的相似的数据的整合与迁移的工作,中间碰到很多的坑,不得不说对于这种属于底层数据的迁移的工作,要做到万分的小心与谨慎迁移的内容A产品是我们的顶梁柱的产品,B产品是为了打造公司的战略的闭环孵化的产品,最开始的定位两个产品是没有交汇的可能,随着公司战略的调整,目前我们要求把B产品上的一些资源,主要是视频和文库迁移到A产品上,原来A产品上也有视频...

2018-12-17 12:31:37 345

原创 Spring Boot学习笔记

根据每个公司的不同习惯,有的时候需要切换spring boot的默认的Servlet 容器,比如我就比较青睐于Jetty,下面是我的替换的pom中d的配置&lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-w...

2018-12-09 22:13:57 206

mongodb-linux-x86_64-3.4.10.tgz

centos安装MongoDB使用的安装包,大概83MB,国内下载的速度比较慢,我将近用了半个小时。

2017-11-06

linux下的mysql连接驱动

这个是linux下JAVA连接mysql所需要的驱动

2014-05-31

jquery 帮助文档

jquery 很好的帮助文档,能够帮助你更快的进入jquery的殿堂

2013-08-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除