自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

believer123的专栏

奔跑吧,架构师!新博客地址:www.atomicdevelop.com

  • 博客(165)
  • 资源 (13)
  • 收藏
  • 关注

原创 分布式数据一致性思考3-流程引擎实现

https://blog.csdn.net/cml_blog/article/details/107434967https://blog.csdn.net/cml_blog/article/details/120856707之前两篇文章讲解了如何处理分布式一致性实现原理,都是在理论上对一致性的保障进行说明,本篇将基于之前的介绍完成流程引擎具体的实现,真正落地到代码上。这里将基于saga分布式事务实现原理,基于实际业务场景进行适配设计。在实际场景中,总会有对多个系统交互的场景,这里将业务组件定义为一个最

2022-06-12 19:49:56 572

原创 B端大数据量查询优化方案

文章目录背景解决方案方案1:分库分表+搜索能力方案2:分区+搜索能力分区搜索整体方案总结背景在一些业务场景中,一开始业务量并不大,可见性的几年内不会突破非常大的数量,所以一开始设计方案的时候就没有考虑分库分表的实现方案,杀鸡焉用牛刀。随着业务的不断增长,DB中的数据也会不断的增长,单表数据量很快就突破的到了几千万上亿级别了,此时查询性能会开始下降,特别是范围查询的时候db耗时会越来越长,此时性能已经不能满足正常业务活动了,于是优化就开始了。之前遇到的场景是在某个业务A下,用户会不断的产生交易数据,数

2022-04-10 16:05:35 2957

原创 业务架构师职责

什么是业务架构师通常来说业务想清楚了需要什么能力,就会提需求给产品开始设计整个产品能力,产品同时也会找到对应的技术owner 协助进行,如提供技术角度的支持与意见。 这里的技术owner就可以理解为我们的业务架构师。 从项目立项到项目交付,贯穿整个项目生命周期。不仅要规划好整体项目能力,而且要熟悉其他依赖的业务模块逻辑,可以给出串联整个项目的架构方案。并不是所有的项目都是几百人日的,通常一个产品初期会有大量的投入,后期会进行迭代,每次迭代都需要技术owner进行业务拆解,这里的技术owner做的事情和产

2021-06-13 10:49:01 6784

原创 一个好用的分布式锁框架

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

2019-03-12 17:12:58 3827

原创 SpringBoot 优雅的进行单元测试

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

2018-09-23 11:05:40 43936 7

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

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

2018-07-15 22:28:35 32572 28

原创 Docker nginx安装与文件挂载

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

2018-04-30 11:16:55 4445

原创 SpringCloud 项目基础搭建与使用

微服务已经渐渐火起来了,现在到哪里都能听到这个词。在微服务方面SpringCloud算是很成熟的开源项目了。虽然项目中还没具体使用到,但是作为个人的学习拓展还是可以深入的学习的。 我眼中的微服务概念:将系统拆分成独立的多个模块,通过网关对外提供服务,模块之间可以互相调用。通过这样拆分就可以根据每个模块的访问情况进行动态配置服务数量,而不需要像之前的项目一样部署整个项目。工程地址:https://g

2017-10-25 16:46:44 17234 3

原创 SpringBoot 为MapperScan添加动态扫描(占位符)功能

SpringBootLean 是对springboot学习与研究项目,是根据实际项目的形式对进行配置与处理,欢迎star与fork。 [oschina 地址] http://git.oschina.net/cmlbeliever/SpringBootLearning [github 地址] https://github.com/cmlbeliever/SpringBootLearning在对

2017-03-24 21:54:43 85606 5

原创 Springboot Mybatis 打包jar扫描bean与mapper问题研究与解决

SpringBootLean 是对springboot学习与研究项目,是根据实际项目的形式对进行配置与处理,欢迎star与fork。 地址:点我进入项目地址最近在项目中集成以全注解的方式Mybatis,配置了自动bean包与mapper所在包db.mybatis.mapperLocations=classpath*:com/cml/springboot/sample/db/resource/*d

2016-11-12 11:24:55 36057 6

原创 Groovy安全高效的执行(死循环,休眠,危险方法)

在很多场景下有需要执行异步任务,或者执行用户的自定义任务时,通常我们会使用Groovy脚本能力来完成任务。通过groovy动态脚本能力,在业务执行过程中动态执行不同业务线或者用户的脚本,来满足不同需求。这样可以非常方便的进行业务拓展,但是也会带来一系列安全问题,1 比如在脚本中调用了系统危险的方法,如System.exit 会导致整个服务停止2 触发了死循环等场景,会导致任务卡死,使用多线程的话线程也很块就被占完。3 使用Thread.sleep 将线程进行休眠。

2022-12-26 17:13:24 2912 1

原创 2021-先用后付总结

背景2021已经结束,回顾下这两年一直在做的先用后付项目,这是个需要不断的用户积累和用户心智的培养的项目,这里总结下这个模式的玩法,算是给自己一个好的年终收尾吧。对于使用先用后付的支付方式 后面统称为信用付。可能有的人还不知道信用付是啥,可以先通过下面各大平台玩法去了解一下。各大平台玩法以下是收集到的各大平台玩法,名称基本大同小异,都是要突出0元先用,后面再付款。通过底层能力的区分,底层是通过支付宝的芝麻信用和微信信用分提供能力支持。口碑淘宝拼多多有赞整体设计先用后付可以带

2022-01-09 17:05:59 2719

原创 分布式数据一致性思考2-业务系统架构

背景上一篇文章分布式数据一致性思考-B端系统一致性 阐述了分布式系统一致性的做法,那么对应业务系统该如何设计呢? 本篇讲解基于上一篇思路下的系统架构设计架构图根据DDD架构的分层思路,层级分别为接口适配层系统对外提供的rpc服务层,提供最基础的服务监听其他系统消息,消息作为驱动入口还有各种定时任务等入口,适配层会将请求信息转换成应用层需要的模型信息应用层负责具体业务实现与业务流程编排,更多的是作为编排者,通过领域服务层来实现业务逻辑同时这里也会做最先的业务逻辑校验,业务校验需要快

2021-10-19 23:50:31 670

原创 分布式数据一致性思考-B端系统一致性

目录背景什么是一致性?B端业务场景重试幂等并发小结总结背景已经好久没写博客了,看了下最近的一篇已经是去年的了,由于工作一直忙,没有抽时间来写(其实就是懒)。加上也没有觉得非常有收获的事情,所以就干脆没写了。最近在思考分布式一致性的理论与实现时,感觉自己有所收获,这里分享分享一下自己的经验。什么是一致性?至于原理什么的,这里就不赘述了,总的来说目前的分布式系统实现起来基本上都是基于BASE理论的,业务需要保持最终的一致性,说白了了是可以允许 中间过程的短暂不一致,只需要最后一致就好。一说到这个,很

2020-07-18 22:17:06 3782 5

原创 Emoji表情插入DB问题调查总结

最近项目开发的时候发现插入emoji表情的时,会报如下错误:Caused by; com. ibatis。common. j dbc。except ion .NestedSQLExcept ion:The error occurred while applying a parameter map. Check the MS -RESERVATION RECORD UPDATE- Inline...

2019-11-24 20:56:16 502

原创 【课程免费分享】6-Spring中Bean扫描实战

6、Spring中Bean扫描实战当需要扫描bean可以使用@ComponentScan(basePackages="")对指定包下添加的Spring支持的注解的类。SpringBoot是默认会扫描@SpringBootApplication注解所在包和所有子包的类。这样使用的话对于单纯的业务逻辑实现是没有问题的,但是如果想要把共通实现抽取出来作为公共项目,或者自定义拓展自己的注解,这时该如何扫...

2019-10-06 16:11:33 348

原创 【课程免费分享】5-@EnableAutoConfiguration原理实战

5、@EnableAutoConfiguration原理实战在SpringBoot项目中集成其他框架是非常简单的,如果需要添加WebMvc,只需要引入对应的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-...

2019-10-06 16:10:48 322

原创 【课程免费分享】4 Spring各种Aware注入的原理与实战

4、Spring各种Aware注入的原理与实战Spring通过接口回调的方式提供了多个非常方便的XXAware接口,方便在开发过程中获取到Spring上下文核心组件,而且这些XXAware都有一个共同的父接口Aware。Aware都是在bean初始化回调前就进行回调的。在官方文档中列出了常用的Aware:举个例子:当我们需要获取Application和BeanFactory时,只需要实现对应...

2019-10-06 16:09:45 389

原创 【课程免费分享】3-@ConfigurationProperties实现原理与实战

3、@ConfigurationProperties实现原理与实战在SpringBoot中,当需要获取到配置文件数据时,除了可以用Spring自带的@Value注解外,SpringBoot提供了一种更加方便的方式:@ConfigurationProperties。只要在bean上添加上这个注解,指定好配置文件的前缀,那么对应的配置文件数据就会自动填充到bean中。举个栗子,现在有如下配置:my...

2019-10-06 16:08:23 1024

原创 【课程免费分享】2-如何在Bean初始化回调前后进行自定义操作

2、如何在Bean初始化回调前后进行自定义操作在Spring环境中,如果需要在bean自动装配(属性都注入ok)完成后进行自定义操作,通常只需要实现接口InitializingBean,在afterPropertiesSet方法中执行操作即可。在这个接口回调时,bean中所有的属性已经注入完成了。比如在bean初始化完成后添加一段log:@Componentpublic class MyBe...

2019-10-06 16:07:18 562

原创 【课程免费分享】1-SpringBoot入门导读

SpringBoot入门导读目前Spring与SpringBoot在Java项目中基本是标配了,极大简化了开发的时间和难度。尤其是SpringBoot,各种框架整合SpringBoot都非常方便。在享受完方便的开发后,是时候来学习下背后的机制了。对于框架的学习,学会使用只是入门的第一步,掌握其工作原理这才是需要更加深入学习的,技术类框架都是大同小异的,只要掌握了一种框架,这样即使再多类似的框架...

2019-10-06 16:06:03 271

原创 系统迁移必知会(多年总结)

非常幸运,这几年系统迁移的事情基本被我赶上了,从外部系统迁移到内部系统迁移,从小项目到大项目都实践过。迁移中踩过的坑和自我的总结,在这里给大家分享分享。随着业务的发展,原有系统支撑当前业务就显得力不从心了,这时就考虑进行系统拆分或者内部升级了,拆分成另外一个微服务或者内部模型升级,这里将拆分的过程或者升级的过程统称为迁移,那么新老系统业务过度期间如何保证系统平稳的对接呢?根据数据特点迁移可分为...

2019-09-22 10:28:11 3708

原创 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 6735 2

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

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

2019-03-05 13:02:05 29466 3

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

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

2019-02-28 14:16:35 3920

原创 SLB优雅的滚动发布

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

2019-01-24 21:09:07 1561 1

原创 Docker 中安装VIM

docker容器中有许多默认是没有安装vim的,如果需要编辑配置文件的话,那么就需要手动安装vim了。如果直接使用:apt-get install vim;则会出现如下错误:Reading package lists... DoneBuilding dependency treeReading state information... DoneSome packages could n...

2018-11-26 21:37:25 1906

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

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

2018-11-20 21:15:07 8659 3

原创 SpringCloud2.0.1--Ribbon 重试监听

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

2018-08-19 16:06:40 1207

原创 Eureka 优雅下线,上线

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

2018-08-04 14:58:17 10141 2

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

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

2018-07-03 10:20:32 8165 4

原创 Spring Async不得不知的用法

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

2018-06-28 22:10:24 3235

原创 Android Ble notify功能踩坑

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

2018-02-12 17:43:33 12511 3

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

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

2018-02-11 09:57:53 1520 1

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

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

2017-12-29 10:15:00 3955

原创 Spring-Data-Jpa projection用法

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

2017-11-13 10:40:21 3815

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

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

2017-11-06 16:45:52 6186 4

原创 SpringCloud 详解配置刷新的原理

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

2017-11-01 10:29:53 22494 6

原创 SpringCloud Zuul修改请求参数信息

Zuul作为网关服务,是其他各服务对外中转站,通过Zuul进行请求转发。这就涉及到部分数据是不能原封返回的,比如服务之间通信的凭证,用户的加密信息等等。 对返回的信息加密后,客户端请求其他服务时,网关就需要将原来加密的信息解密后转发到对应的服务中。 解密的功能其实可以理解成是权限认证的过程,将合法的请求转发到对应的服务,将非法的请求直接拦截在网关层。这一部分其实也是可以使用权限框架Shiro和S

2017-10-27 09:50:11 20998 1

原创 SpringCloud Zuul过滤器返回值拦截

Zuul作为网关服务,是其他各服务对外中转站,通过Zuul进行请求转发。这就涉及到部分数据是不能原封返回的,比如服务之间通信的凭证,用户的加密信息等等。本文中的代码已提交至: https://gitee.com/cmlbeliever/springcloud 欢迎Star 实现类在:api-getway工程下的com.cml.springcloud.api.filter.AuthResponseF

2017-10-26 09:54:34 30287 10

Android 仿百度手机助手首页滑动效果 demo代码

http://blog.csdn.net/cml_blog/article/details/46708625

2015-07-02

fileuploadly资源

http://blog.csdn.net/cml_blog/article/details/22943301#4090709 的资源文件

2014-07-29

poi excel转换成bean

将excel数据转换成javabean对象,支持二级javabean转换! 内包含测试代码和测试文件以及所需要的jar包!

2014-05-08

点击添加标签

点击ext中的treepanel,在右边显示不同的tabpanel,就像浏览器点击标签后打开一个新的标签页一样!第一次点击添加一个新的tabpanel,如果tab已经存在则自动跳转到该tab!

2013-09-05

spring mvc 校验

springmvc 校验时所需要的三个包validation-api.jar hibernate-validator-4.1final.jar jbosslogin.jar !解决了tomcat启动的时候报错: classnotfound:javax.validation.constraint的错误!

2013-08-24

spring mvc常用包

终于解决了!搞了一天了,解决了springmvc 使用ajax技术返回json不能返回一个对象的问题!如网页上出现406的提示!

2013-08-23

android 时钟

平时看到的那种带有分针 时针 秒针的时钟!

2013-05-27

个人聊天程序

使用tcp/ip实现类似qq的聊天程序, 分为客户端和服务器端 服务器启动用户才能登入。 实现一对一 多对多聊天 服务器可以踢出用户

2013-04-04

javase 7.0

最新jdk7.0 api,需要的可以下下试试 全英文版的

2013-03-29

JList动态改变图片

使用JList 显示图片并动态改变显示的图片!

2013-03-26

利用值栈求表达式 java

实现简单的四则运算 支持带括号的 运算!

2012-12-04

java JMF拓展包 找了好久啊。

java JMF拓展包!网上找了好久的。 每次去sun公司下载看不懂英语啊,有点纠结吧。

2012-05-15

java音乐播放器

实现显示歌词, 自动播放到下一首。 暂停 开始 下一首 上一首! 添加一个文件夹的文件(支持MP3 mid wav)

2012-05-03

空空如也

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

TA关注的人

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