自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hilite的博客

步履不停。

  • 博客(25)
  • 收藏
  • 关注

原创 mysql编码 charset 跟 characterEncoding 的区别

2021-03-12 10:18:08 784

原创 关于WebFlux不支持application/x-www-form-urlencoded

最近在实现gateway网关自动刷新功能碰到的一个坑,在使用RestTemplate调用refresh端点时,会调用WebFlux的方法org.springframework.web.reactive.result.method.annotation.AbstractMessageReaderArgumentResolver#readBody方法中,如果Content-Type是application/x-www-form-urlencoded类型,就会抛出异常:...

2020-07-14 19:32:31 1304

原创 dockerfile-maven-plugin buildArgs参数踩坑

近期项目开发过程中使用到这个插件,同组小伙伴使用-Ddockerfile.buildArgs=JAR_FILE.hamster-server/target/hamster-server-1.1.0.jar直接指定jar,未通过pom的形式,发现报错,查看源码得知buildArgs类型为Map:参数读取的时候org.apache.maven.plugin.PluginParameterExpressionEvaluator#evaluate(java.lang.String, java.lang.Clas

2020-07-07 15:10:43 3098

原创 ZooKeeper领导者选举源码分析

前言: 大家都知道领导者选举有四种算法,其中三种已经被弃用了,所以本文只针对快速领导者选举算法进行讲解,通过阐述ZooKeeper(下文简称zk)领导者选举原理及源码阅读,带大家由浅入深的了解zk领导者选举原理。正文:一、领导者选举原理 大家在平时生活中肯定碰到过不少关于投票选举的事情,能对于你选择造成影响的主要因素无外乎两个: 1:你跟别人的人际关系。...

2020-03-06 17:11:57 1609 9

原创 关于ConcurrentSkipListMap的几点见解

之前看了ConcurrentSkipListMap的源码,未做总结,今天做个总结,关于ConcurrentSkipListMap其实网上有很多文章,博主今天就不通篇大论,挑些精简的来说。 首先跳表中维护一层时,即值存在level1时的底层数据结构为:当添加第二个元素时,通过抛硬币算法算出!=0时,这里我们只考虑加了一层level,底层数据结构的演化为:其实这张...

2019-12-04 00:21:47 466

原创 git原理及git对象详解

首先,要理解git底层原理必须知道git的三个对象:blob、tree以及commit,所有对象存储在.git\objects路径下blob对象,在add操作后生成,记录的是文件的内容,文件名为文件内容的hash值,需要注意的是如果文件内容一样只会有一个blob文件显示,如果文件没内容也不会生成blob对象。 tree对象,在commit操作后生成,tree对象包含blob对象,如果文件...

2019-10-16 16:58:37 482

原创 java实现简单的本地缓存

/** * @author : hilite * @version : 1.0 * @Title : LocalCache * @Description : * @date : 2019/9/18 * @CopyRight : Copyright (c) 2015-2019 All Rights Reserved. * @Compony : hilite.cn Inc. */p...

2019-09-18 18:37:12 3109

原创 基于redis实现的BloomFilter

众所周知,google的guava框架实现了BloomFilter,guava的BloomFilter和redis的bitMap都是基于位图算法的,所以redis也可以实现BloomFilter,并且相对于BloomFilter,redis的数据存在三方redis服务器上的,并不像guava的BloomFilter是存在本地的,这对于内存损耗及分布式系统来说显然是不适合的,所以今天分享一个基于...

2019-09-09 17:33:16 3550

原创 Redis缓存三大问题解析

1.缓存粒度控制通俗来讲,缓存粒度问题就是我们在使用缓存时,是将所有数据缓存还是缓存部分数据?缓存粒度问题是一个容易被忽视的问题,如果使用不当,可能会造成很多无用空间的浪费,可能会造成网络带宽的浪费,可能会造成代码通用性较差等情况,必须学会综合数据通用性、空间占用比、代码维护性 三点评估取舍因素权衡使用。2.缓存穿透问题缓存穿透是指查询一个一定不存在的数据,由于缓存不命中,并且...

2019-09-09 16:49:36 340

原创 记一次配置nginx反向代理遇到的坑

过程描述:前端在测试环境部署了node.js,为了满足node.js的跨域名请求,把所有请求前缀加上了/api,并通过nginx反向代理路由到我们项目的地址。由于需要部署多个不同端口的应用,所以反向代理需要满足不同的请求路径,代理到不同端口的应用上。 于是,配置了两个upstream:然后配置了一个server:发现第二个代理的地址请求不到,报404,网上查了半天资料也...

2019-08-20 19:41:39 1405

原创 mysql MVCC随笔

MVCC(Multi-Version Concurrency Control ,多版本并发控制)指的就是在使用READ COMMITTD、 REPEATABLE READ这两种隔离级别的事务在执行普通的SEELCT操作时访问记录的版本链的过程。这里必须引入两个概念:版本链和ReadView。 版本链:对于使用InnoDB存储引擎的表来说,它的聚簇索引记录中都包含两个必要的隐藏列(...

2019-08-09 10:18:54 228

原创 你们不了解的spring注入方式及mybatis对其的使用

前言     在看博主这篇文章之前,请大家思考一个问题:spring@Autowired和@Resource这两个注解是干嘛用的?很多人会回答,@Autowired是通过byType注入属性的,@Resource默认使用byName注入,也可以使用byType方式注入,在你们眼里可能觉得这两个注解就是Spring开启不同注入方式的方法,不使用这两个注解或者不在xml中配置的话就不能注入,但...

2019-01-08 16:52:42 313

原创 Mybatis一级缓存失效原因详解

前言 1、mybatis整合spring,一级缓存会失效,mybatis会在每次查询之后自动关闭sqlSession。2、二级缓存多线程共享,开启方式(注解)@CacheNamespace或者在xml文件中开启,开启方式为<settingname='cacheEnabled'value='true'/>3、二级缓存有一个很大的坑,缓存是针对命名空间而言的,也就是说如果你...

2019-01-03 16:37:19 6227

原创 Mybatis打印sql(不使用xml)

前言    博主在刚开始做开发的,对于mybatis如何打印sql完全不理解,看到网上全是通过xml来配置打印sql,因为之前博主全是使用javaConfig配置mybatis信息,所以觉得为了打印sql加单独加一个配置文件十分的麻烦,网上大部分又是千篇一律的推荐使用xml,所以博主就在官网找不依赖配置文件打印sql的方法,现在分享给大家。  正文 我们直接看mybatis官...

2019-01-02 15:20:54 1486 1

原创 spring5日志新特性详解

前言 大家都知道spring一直使用jcl作为日志框架,但是spring5在jcl的基础上自己做了优化,整理成了spring-jcl,接下来我就跟大家详细说一下spring5跟spring4的日志框架到底有何不同。 正文 首先在项目中引入spring4和log4j的依赖,发现打印出来的日志是log4j的日志。 <dependency> ...

2018-12-29 17:33:27 2254

原创 带你轻松掌握Java混乱日志体系

前言 在漫长的进化史中,java日志组件由刚开始的jul衍生出各式各样的日志框架,首先先列举一些常用的日志组件:jul、jcl、log4j、slf4j....接下来我们着重对这几个日志框架使用进行分析,先po这些框架的工作流程图: 正文。 1.JUL(java.util.logging) 总所周知,Java自带了一套日志组件--JUL,可不引入J...

2018-12-29 16:29:51 212

原创 关于几种单例模式的介绍

关于单例模式,需要解决三个方面的问题(1)线程安全问题。(2)性能问题。(3)懒加载(资源占有问题)。关于下面几种方式的缺点,除了DCL,HOLDER和枚举单例模式其他只做简单描述,具体可自行了解。懒汉式:锁粒度过大,影响性能,串行执行影响效率,会引起阻塞。饿汉式:无懒加载DCL(double-check-locking)由于懒汉式锁粒...

2018-11-06 15:56:49 212

原创 关于两次序列化,json字符串多出\的问题

 遇到很多次这种问题了,做个记录。  当你调dubbo服务或者给前端返回json字符串时,需要序列化,再进行传递,如果json字符串经过两次序列化,会在各个属性前多出\,特别要注意的是@ResponseBody这个标签,会在你给前端返回json字符串时自动序列化,从而出现上述问题,解决办法当然可以让你调用的服务直接给你返回一个对象而不是json字符串,另外一种是自己动手用JSON.pars...

2018-10-23 16:36:41 7516

原创 java二进制数原码补码反码,运算符 与(&)、非(~)、或(|)、异或(^)及位运算总结

看过博主另一篇文章--Java集合--HashMap,对里面使用的运算符及位运算不是很清楚的童鞋可以看下这篇文章,对理解hashMap源码很有帮助,自己也可以在程序中写写,逼格绝对满分!!! 大家都知道一个字节是8个二进制数,一个int是四个字节,所以一个int数据为32个二进制数(原码),本文所有运算都是基于二进制,十进制转二进制不清楚的可以自行百度,废话不多说,我们一个个来...

2018-10-09 18:10:03 337

原创 HashMap源码剖析

本文分析HashMap中的put()以及resize()方法,首先看一下它的属性:/** * The default initial capacity - MUST be a power of two. */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 /...

2018-09-30 18:00:24 123

原创 关于SpringBatch的一个大坑(step id重名)

      博主今天碰到springbatch的一个大坑,记录下来与大家分享。      前几天博主的同事离职了,离职前写了一个springbatch还款的跑批,然后公司还款日,用户账户余额异常,看了好几次日志,发现没问题,这是springbatch的第一个坑,看日志不能直接看,要通过内置表自己查!!!!关于springbatch持久化表结构大家可以自行百度。      大家都知道,如果注...

2018-09-29 15:48:53 3991

原创 关于xxl-job两台机器时间或者时区不同的问题解决。

把xxl-job的admin跟执行任务的程序通过分布式部署的话,两台机器时间差必须在三分钟之内。如果超过三分钟会导致执行器无法调用任务,但是执行器地址还是会注册到的。另一个坑也是关于两台机器时间的问题,如果两台机器是跨时区的,要保持机器时区和db时区保持一致,要不然也会有问题。...

2018-09-05 11:52:05 4267

原创 SpringBatch的封装配置及其运用(结合spring scheduler进行调度)

Spring Batch官网介绍:A lightweight, comprehensive batch framework designed to enable the development of robust batch applications vital for the daily operations of enterprise systems.(一款轻量的、全面的批处理框架,用于开发强...

2018-08-29 18:07:03 2494

转载 java的几种对象(PO,VO,DAO,BO,POJO,DTO)解释

一、PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。 二、VO:value object值对象。通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DT...

2018-08-01 10:14:16 1627

原创 redis分布式锁的实现方式

前言:分布式锁的实现方式一般有三种,1:基于数据库的乐观锁。2:基于redis的分布式锁。3:基于zk的分布式锁,本文主要介绍第二种实现,由于以前一直是单机写笔记,所以第一次写有写的不好的地方欢迎大家指正。 网上对于redis分布式锁的实现各有不同,今天分享的这种,不确定是不是最好的,但是个人觉得最易懂,好了废话不多说,贴公司的例子跟改造后的写法。//错误例子public...

2018-07-13 11:55:19 2278 1

空空如也

空空如也

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

TA关注的人

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