Hcy Blog

保持激情,只有激情,才有动力

mybatis-generator多个数据库存在相同的表

mybatis-generator多个数据库存在相同的表​问题现象使用mybatis时难免会使用其提供的mybatis-generator生成默认的xml和实体类,今天我发现如果本地安装一个mysql,里面创建两个不同的数据库,而他们有相同的表,生成的实体类中可能是随机的。比如我有一个数据库 ‘a’ 里面有一张表 ‘user’,我现在在建一个库‘b’,里面也有一张表‘user’,这样我生成代码时,虽然jdbcUrl配置的是a库,但生成的User实体类可能是b库里面的。源码...

groovy闭包 list传参

groovy闭包 list传参​问题现象如下代码,定义一个闭包接受两个参数,传递参数时可以传递 size = 2 的 List 作为参数, 使用 length = 2 的数组不可以,使用 size = 2 的 Set 也不可以。111213 @Test void test2() { def closure = { a, b -> a == '1' ? b.toUpperCase() : b.to...

spock测试零基础教程

spock测试零基础教程​ 昨天研究了一下spock单元测试,确实特别好用,这也是我第一次接触spock,作为一个新手,网上很多教程讲的太深了,折腾了好几个小时才搞明白。​ 所以我想写一个从0开始的简单教程,一步一步做把Demo跑起来,再去看其他人的教程,这样更有效率。下面我将基于spock2.x版本进行演示。可以新建一个空SpringBoot项目进行测试,防止项目内的其他依赖冲突,Demo跑不起来。1.引入依赖这里引入了spock2.x的包,默认情况下spock会自...

mysql使用updatetime作为乐观锁

mysql使用updatetime作为乐观锁本文记录一下,我是用mysql的updatetime字段作为乐观锁版本号遇到的问题。乐观锁首先标准的乐观锁,应该存在一个version字段,每次更新时人工自增此字段,但是这样每次更新时都要多维护一个字段很麻烦。所以我使用数据库中的update_time字段作为乐观锁的version使用,将update_time字段设为每次有更新时自动刷新,使用此字段当作version使用,免去了每次自己维度版本号的问题。如下面sql:1`up...

spring项目,外部文件读取

spring,文件读取spring内置了不错的文件读取工具类,下面讲一下其用法1.读取classpath下文件文件路径以classpath:开头,这种方式可以读取resources文件夹下的资源 public static void main(String[] args) throws IOException { String filePath = "classpath:aa.properties"; ...

spring非单例模式

spring非单例模式​ 一般情况下,使用spring的bean都是单例模式的,默认情况下就是如此。单例模式的bean都是无状态的,但是面对复杂场景下,希望bean内能存储状态,这种情况下就不能够使用单例模式了。spring提供了 @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) 注解,可以选择是单例模式还是每次使用都创建一个,用法如下。下面提供的AService作用域是prototype的,其会在每次使用时创建一个新的,Cont...

prometheus函数的理解

prometheus函数的理解最近在研究prometheus,花了一天时间理解了几个主要函数的原理,现在记录以下,给以后的自己看rate()函数这个函数接受一个范围counter序列,他能返回每秒钟的qps,因为counter是单调递增的,我才他是将最后一个记录的值减去第一个记录的值,再除以时间段的总秒数得到一个浮点型数字,表示每秒增长的数量。这个函数只能返回每秒的数量,如果需要每分钟的可以自己乘以60,因为是浮点类型的,所以精度应该还可以接受。与之对应的还有一个incre...

git同步远程已删除的分支

git同步远程已删除的分支现状我们使用git协作工作时,可能同事会创建一些临时分支,会将这些临时分支push到远程防止本地丢失。这些分支我们使用git fetch/pull时会拉到我们本地,存储在我们本地的远程副本区域。 当同事使用完这些分支后,他们会直接将远程分支删除,我们再次使用git fetch/pull时,并不会因为远程分支被删除了就同时将本地副本删除,而是一直保留着,这些分支对我们是没用的,如何找到并删除他们呢。解决办法使用命令git remote sho...

spring-dubbo启动过程

spring-dubbo启动过程 首先@EnableDubbo注解将DubboComponentScanRegistrar引入进来 2. DubboComponentScanRegistrar类会注册一个ServiceAnnotationBeanPostProcessor,这是一个BeanDefinitionRegistry的后置处理器。 3. 后置处理器对BeanDefinitionRegistry进行后置处理,他会使用scan扫描EnableDubbo注解上...

springboot jackson默认配置

​springboot jackson默认配置​ springboot是约定大约配置,默认就会进行比较合理的配置,自动配置jackson也是如此。下面看一下springboot是如何配置jackson的反序列化特性的。配置jackson的方法​ 想要自定义配置jackson,只需实现Jackson2ObjectMapperBuilderCustomizer接口,并注册到spring容器里即可。平时我们主要关注下面两个配置,一个是序列化时不返回值为null的字段,二是...