8 cmlbeliever

尚未进行身份认证

改变世界需要你,行动吧!骚年!先改变自己...

等级
TA的排名 8k+

Mockito单元测试自定义mock返回

在上篇博客https://blog.csdn.net/cml_blog/article/details/82820753介绍了SpringBoot中进行单元测试各种小技巧后,发现还有个遗漏的case,那就是在使用的mock的时候,可能需要根据不同的参数返回不同的数据。比如传入aa返回true,传入bb返回false等情况,这里再补充一篇进行说明。首先还是在AService中新增doSmthing...

2019-04-17 22:39:13

一个好用的分布式锁框架

介绍一个非常好用的分布式锁项目,支持ZK和Redis分布式锁实现,可以使用注解和代码的方式获取分布式锁,保证资源的互斥访问。支持功能:Redis分布式锁实现ZK分布式锁实现自定义实现一键开关分布式锁功能支持Spring支持SpringBoot背景在分布式项目中,有时需要使用分布式锁对资源进行唯一的访问,项目中常用的实现方案如Redis和ZK,如果直接使用,对项目侵入性大,...

2019-03-12 17:12:58

Trojan/Android.GDownload.jw[exp,gen] 病毒报警解决方案

去年12月份开始,我的个人app记忆空间就被华为应用市场报病毒了,而且非常突然,之前都是好好的,突然报毒打得我猝不及防。华为市场提供的信息如下:你好,你的应用审核复测应用经手机管家检测为风险软件,存在中等风险;无法上架;是不是很坑,在使用华为手机进行验证才得知是病毒Trojan/Android.GDownload.jw[exp,gen],看得我一脸懵逼,因为对病毒处理这块没有太多的...

2019-03-05 13:02:05

图解常用的互联网架构体系

如上图,个人整理出的通用架构层次图,每一层次都可以使用集群的形式增加稳定性与可用性。从上到下层次鲜明,通常在高并发场景中,数据库是宝贵的资源,而且单个数据库实例是扛不住的,所以通常是mysql进行分库分表,这样的话问题就来了:问题1:分布式事务如何解决?常见的有XA,TCC,LCN,LTC解决方式,本篇这个不是重点问题2:数据如何查询?分库分表后,面临的一大问题就是如何查询数据,...

2019-02-28 14:16:35

SLB优雅的滚动发布

又是新的一年了,距离上一次写文章已经过了2个多月了,作为新年的第一篇文章,对最近使用SLB的心得进行总结,作为以后备注,也可以让各位读者少走一点坑。SLB使用的是阿里云的服务,服务A有多个实例部署在不同服务器上的docker容器中。对外通过SLB进行负载,调用方只需要通过访问SLB就可以将请求均匀的分布到不同服务器的A服务中。阿里云同时还提供接口的方式操作SLB,可以动态的上下线服务,官方文档...

2019-01-24 21:09:07

Docker 中安装VIM

docker容器中有许多默认是没有安装vim的,如果需要编辑配置文件的话,那么就需要手动安装vim了。如果直接使用:apt-getinstallvim;则会出现如下错误:Readingpackagelists...DoneBuildingdependencytreeReadingstateinformation...DoneSomepackagescouldn...

2018-11-26 21:37:25

Redisson lua脚本执行踩坑之神秘的引号

最近项目需求,在redis中需要执行批量删除指定key,并且要支持原子操作,那么当然只有自己写lua脚本了。项目中使用的是redisson作为redis连接工具,首先先定义好lua脚本:privatestaticfinalStringBATCH_DEL_SCRIPT="fork,vinpairs(ARGV)do\n"+"redis.c...

2018-11-20 21:15:07

SpringBoot 优雅的进行单元测试

随着项目的功能不断增多启动项目需要的时间就越来越长,如果每个功能都从Controller入口进行测试,不仅费时而且费力。那么这时候单元测试就体现出非常大的优势了,对所有的接口进行测试,可以非常快速的发现问题,而且方便调试。而且通过编写单元测试来发现代码结构的不合理性,通常来说代码结构越合理,单元测试写的越方便。假设有这个场景,我们的项目启动需要30s,共有A、B、C、D这四个service,A...

2018-09-23 11:05:40

SpringCloud2.0.1--Ribbon 重试监听

在SpringCloud中,通常使用的是客服端发现作为负载均衡。SpringCloud全家桶中提供了Ribbon作为客户端负载的优秀框架。服务器之间的调用直接使用Feign进行调用。Feign默认使用了Ribbon作为负载的实现。通常来说,进行服务拆分后,每个服务之间都需要支持幂等性,因为可能由于网络的原因,一个接口可能会被重试多次,如果没有做好幂等性控制的话,容易出现数据重复等异常情况。...

2018-08-19 16:06:40

Eureka 优雅下线,上线

项目中使用SpringCloud时,Eureka作为注册中心基本是标配了,作为AP的一个实现策略,基本能够满足项目的需要。在微服务的世界中,每个模块发布是常有的事,那么如何安全地发布呢?直接关闭服务这种方式简单粗暴,直接造成的影响就是部分模块调用时出错,如果有多台服务器的话,一台一台地重启还是可以的,前提是调用端得有自己的重试策略,比如使用Feign作为客户端调用接口的话可以配置rib...

2018-08-04 14:58:17

一次线上JVM调优实践,FullGC40次/天到10天一次的优化过程

对于JVM垃圾回收,之前一直都是处于理论阶段,就知道新生代,老年代的晋升关系,这些知识仅够应付面试使用的。前一段时间,线上服务器的FullGC非常频繁,平均一天40多次,而且隔几天就有服务器自动重启了,这表明的服务器的状态已经非常不正常了,得到这么好的机会,当然要主动请求进行调优了。未调优前的服务器GC数据,FullGC非常频繁。首先服务器的配置非常一般(2核4G),总共4台服务器集群。每...

2018-07-15 22:28:35

SpringCloud Finchley.RELEASE 踩坑 -- java.lang.NoSuchFieldError: logger

最近在做SpringCloud项目升级,升级到最新的版本Finchley.RELEASE,启动后就报错:java.lang.NoSuchFieldError:loggeratorg.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:248)...

2018-07-03 10:20:32

Spring Async不得不知的用法

在Spring中使用需要对方法进行异步操作的时候,只需要在对应的方法上加上@Async注解就好了,如果想要获取返回值或者进行监听呢?首先,整合异步框架需要在SpringBoot入口类中添加@EnableAsync注解,表明开启异步框架。从@Async类的注释上得知Intermsoftargetmethodsignatures,anyparameterty...

2018-06-28 22:10:24

Docker nginx安装与文件挂载

在高并发访问的时候,一台tomcat完成是撑不住的,这时就需要做个tomcat集群了,使用nginx进行LB处理。那么先安装好nginx进行测试。在win10中,下载好nginx,并进入解压好的目录,执行startnginx即可以启动nginx了,只要在访问localhost页面上出现“Welcometonginx!”等字样表示nginx安装成功了。这时可以使用jmeter进行压力测试...

2018-04-30 11:16:55

Android Ble notify功能踩坑

最近在研究Ble蓝牙相关的开发,在和蓝牙通信的时候,主动读取消息是ok的,但是就是无法收到蓝牙主动发送出来的消息,而且IOS是可以接收到消息的。这个就比较尴尬了。通过查阅文档和网上他人的博客找到开启notify功能的代码:privatevoidsetAutoReceiveData(BluetoothGattgatt){try{...

2018-02-12 17:43:33

SpringMVC中一个超好用的参数缓存框架

在上篇博客(http://blog.csdn.net/cml_blog/article/details/78928693)已经分析了页面参数保存的方法以及各种方法。但是是基于AOP的实现方式,既然使用SpringMVC,那么就应该使用框架提供的接口进行使用。现在将SpringMVC的实现方式抽取出来,封装成一个支持自定义拓展的参数缓存框架。已经提交到了maven仓库。下面对框架进行简单的介绍:...

2018-02-11 09:57:53

关于页面查询条件保持的思考(一)

在项目中,查询条件保持是经常使用到的,特别是管理后台。对于前台页面来说,通常为了访问的方便会使用get的方式进行表单提交,这样进行页面分享或者发送给好友时可以直接打开对于的页面。但是对于管理后台来说,地址栏上的一大串url参数是不允许的,不美观也不安全。比如在用户查询页面,可以根据用户的年龄,姓名,昵称,等等参数进行查询,而且可能客户已经翻到了第n页上,此时点击某个用户详细,页面跳转到用户详细...

2017-12-29 10:15:00

Spring-Data-Jpa projection用法

进行数据查询时,有时候并不需要把全部字段查询出来,只要查询部分的字段即可。那么就需要使用到Sping-Data-Jpa中的projection功能了。前提:有用户表和订单表,用户与订单的关系是1对多关系。订单表的模型bean:@Entity@Table(name="t_order")publicclassOrder{@Id@GeneratedValue(strate

2017-11-13 10:40:21

SpringMvc在SpringBoot环境和Web环境中上下文的关系

之前有人在我的项目中提出issue,咨询在SpringBoot中的bean是不是由谁来管理的问题(SpringMvc还是Spring)来管理(https://github.com/cmlbeliever/SpringBootLearning/issues/2)其实一开始我也是挺懵逼的,之前没有怎么了解过这些细节,既然提出问题了,当然要找出个所以然。在Web环境中,是分为SpringMvc管理的子容器

2017-11-06 16:45:52

SpringCloud 详解配置刷新的原理

首先先介绍下实现后的效果:1、在需要动态配置属性的类上添加注解@RefreshScope表示此类Scope为refresh类型的2、启动工程,修改config-server对应的配置文件,这里修改的是system.order.serverName3、以post的方式调用refresh接口,返回修改后的key值4、访问infoTest接口,可以看到修改后的值详细流程:依次启动confi

2017-11-01 10:29:53

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。