- 博客(28)
- 收藏
- 关注
原创 阿里云rocketMq集群模式和广播模式实现
阿里云rocketMq支持集群和广播模式两种方式订阅。支持协议包括http和tcp协议,而http协议仅支持集群消费。集群和广播模式区别在于同一个group下,多个实例是否都可以获取消息。广播模式支持,而集群模式不支持。本文主要介绍aliyun-openservices包整合spring系统开发广播模式配置实现 /** * 广播模式配置 * * @return */ public Properties getBroadcastPropertie
2021-02-07 17:32:31 1544
原创 Reflections 使用大坑
项目中使用Reflections扫描自定义注解,根据注解的值做逻辑处理。部分添加注解的类扫描不到,对比扫描到的类发现,代码没有任何问题,项目也没有异常日志打印出来,debug看源码发现Reflections类打印异常信息的日志级别为debug。在org.reflections.Reflections#scan(java.net.URL)方法中追踪源码,在此方法中点击scanner.scan(file, classObject)进入,实现类是org.reflections.scanners.Abstr
2020-08-01 18:57:35 2573
原创 [解决]springboot启动日志卡死,没有异常输出,没有info,debug日志输出
场景描述:springboot项目启动,日志停留在某处,不继续打印。jps看到服务启动, 访问服务接口失败,没有任何日志输出,包括异常日志也没有。解决办法:1.是否是log配置有问题,查看log配置没有问题,修改日志级别为debug,还是没有异常日志输出2.是否项目中存在异常捕捉,未打印异常信息。 经排查,修改代码中的e.printStackTrace() 。 但这不影响异常日志打印出来3.将服务器jar包下载下来,本地启动成功。服务器日志和本地日志 前后差别: 服务器日志卡在 数据库连接池
2020-05-14 20:44:03 2493
原创 redis集群之主从同步
redis是基于AP理论构建,在网络分区发生时,保证集群的可用性,但redis会保证数据的最终一致性,依赖与redis数据同步机制:主从同步,从从同步,增量同步,快照同步,无盘复制。主从同步 主节点接收处理请求,从节点同步主节点发送的数据,当主节点挂掉,从节点代替成为主节点从从同步 一个从节点同步主节点数据,从节点之间互相同步,减轻主节点的压力增量同步 主从同步...
2020-03-14 23:39:58 413
原创 zookeeper如何保证数据一致性和数据消费顺序
分布式概念基础分布式CAP理论就好比分布式领域的牛顿定律,是分布式存储的理论基石。C:一致性,A:可用性,P:分区容错性。分布式系统往往需要部署在不同的服务器,也就存在网络断开的危险,这种网络断开即是网络分区。当网络分区发生时候,两个分布式节点无法正常通信,如果要保证数据一致性,则需要牺牲可用性来同步数据。若保证可用性,则需要牺牲一致性来确保分布式系统可用。所以,当网络分区发生时,一致性和可用...
2020-03-14 22:57:36 546
原创 三元表达式踩坑记录
三元表达式大家会经常用,格式:expression1 ? expression2 : expression3 ,准确利用三元表达式可以写出漂亮高效的代码,最近笔者用三元表达式踩了个深坑 场景1:三元表达式运用在if的复合判断中public static void main(String[] args) { Param param = getParam(); ...
2019-12-21 18:31:59 386 1
原创 记录一次支付业务cpu爆满导致系统崩溃
场景:业务流程:支付系统接受外部代理公司订单请求,系统内部处理订单流程并向银联网联发送支付请求,收到银网联响应,并处理响应信息给外部代理公司。突然某天生产服务cpu告警,达到100%。 排查问题逻辑1.top -c 查找耗cpu最多的进程和进程id2.java服务cpu占用率高 top -Hp pid 查找进程里cpu占用高的线程 jstack pid > /home/...
2019-12-20 14:25:28 249
原创 linux添加快捷命令
vim ~/.bashrc添加 alias logm='cd /home/app/fengyantao/logs' source ~/.bashrc 即完成添加快捷命令
2019-12-12 15:18:44 235
原创 linux安装jdk
1.官网下载jdk版本https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.上传至linux,将jdk移动并解压至/usr/local/jdk/mkdir /usr/local/jdkmv jdk-8u231-linux-x64.tar.gz /usr/lo...
2019-12-12 15:15:51 155
原创 [解决] linux中ls卡死的问题
linux操作部分目录出现ls 卡死的情况 产生原因该文件夹中有一个服务挂载在该文件夹某一目录下,因突然关机等异常情况导致该服务无限制等待,机器重启后也不能正常连接 解决办法:#查看与该文件夹相应的服务挂载情况mount -l#找到挂载的目录,取消挂载文件夹sudo umount -l 文件夹#取消挂载后,看下nfs的服务器是否启动成功。#查看NFS服务的...
2019-12-07 18:59:20 8993
原创 Linux查询服务器配置信息及阿里云服务器漏洞修复
查看内存信息free -mSUSE:~ # free -m total used free shared buffers cachedMem: 7875 904 6971 0 199 390-/+ buffers/cache: ...
2019-12-07 18:56:00 348
原创 高效删除十万数据redis的set集合
应用场景:redis中存储了set集合,数据是万级别,最高2万数据,现在需要删除这个set集合,并且防止删除过程中,cpu突然增加,影响其他服务。解决办法有三种:1.为set集合设置过期时间,依赖redis定时器删除2.重置set集合并设置过期时间,依赖redis定时器删除3.直接删除set集合笔者使用的是jedis作为开发工具。/** * redis操作set集合测试...
2019-12-06 17:12:43 2364
原创 配置jfaster.mango输出sql日志的两种方式
在大部分项目系统中,日志有两种配置方式:*.xml和*.properties 。 本篇文件基于这两种日志配置文件,结合jfaster.mango配置输出sql日志1. 基于properties配置jfaster.mango输出sqllog4j.logger.org.jfaster.mango=DEBUG,mangolog4j.appender.mango=org.apache.log4...
2019-12-02 16:18:32 431
原创 设计模式(1):策略模式原理及实践
策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。策略模式的结构组成: —抽象策略角色: 策略类,通常由一个接口或者抽象类实现。 —具体策略角色:包装了相关的算法和行为。 —环境角色:持有一个策略类的引用...
2019-11-14 19:21:41 217
原创 两个月学习springcloud(7):使用openfeign+eureka优雅的发送请求
openfeign作为springcloud框架子项目之一,是一种声明式、模板化的HTTP客户端,openfeign为为服务架构中服务间的调用提供了解决方案。openfeign是如何工作的呢?Feign通过将注释处理为模板化请求来工作。在输出之前,参数以简单的方式应用于这些模板。尽管Feign仅限于支持基于文本的API,但它极大地简化了系统方面,例如重播请求。官方解释:How do...
2019-11-12 20:56:18 395
原创 两个月学习springcloud(6):搭建ribbon消费者
ribbon是netflix开源的一款用于客户端负载均衡的框架。现在市面上流行的负载的方案为两种:一种是服务端负载均衡,比如硬件的F5,软件nginx。另一种是客户端负载均衡,就比如ribbon,根据自己的请求情况做负载均衡。搭建ribbon消费者需要用到eureka高可用的注册中心,搭建eureka高可用注册中心,请看两个月学习springcloud(4):搭建高可用的eureka注册中心...
2019-11-10 15:04:30 228
原创 两个月学习springcloud(5):eureka详细配置介绍
通过前四篇文章,大家已经可以成功搭建eureka服务模块了。众所周知,spring cloud eureka基于netflix eureka做了二次封装,主要负责实现微服务架构中的服务治理功能。dubbo也是一款不错的服务治理框架,服务治理必须要有一个注册中心,注册中心选型有很多种:redis,zookeeper,consul,etcd等。当前使用最多的是zookeeper,那么为什么eur...
2019-11-09 18:33:18 428
原创 两个月学习springcloud(4):搭建高可用的eureka注册中心
高可用指设计系统减少服务不能工作的时间,在分布式系统里面是必须考虑设计的。前面搭建的是一台eureka注册中心,要保证eureka注册中心高可用,最少需要两台eureka注册中心,且这两台的数据需要保持一致,才能保障当其中一台出现故障时,整个系统可以正常运行。话不多说,下面上代码1.新建eureka-register-high-available模块,pom文件和eureka-register...
2019-11-08 14:00:29 236
原创 两个月学习springcloud(3):搭建eureka消费者
上一篇搭建的是eureka服务提供者,当然要有消费者。话不多说,上代码1.新建eureka-consumer模块,pom文件如下<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/200...
2019-11-07 19:18:01 177
原创 两个月学习springcloud(2):搭建eureka服务提供者
前面已经搭建好eureka注册中心了,这次搭建eureka服务提供者,提供自身实例服务供其他eureka客户端调用。笔者数据库选用的是h2,原因是无需搭建数据库,方便快捷。1.新建eureka-producer模块,pom文件如下<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apa...
2019-11-07 19:03:11 829
原创 两个月学习springcloud(1):搭建eureka注册中心
Eureka是Netflix开发的服务发现框架,springcloud对netflix进行整合,有spring-cloud-starter-netflix-eureka-client,spring-cloud-netflix-eureka-client,spring-cloud-netflix-eureka-server,spring-cloud-starter-netflix-eureka-se...
2019-11-07 13:32:42 218
原创 [解决]org.h2.jdbc.JdbcSQLException: Table XXX not found
springboot+h2整合的项目中,启动项目访问h2的数据,报错org.h2.jdbc.JdbcSQLException: Table XXX not found;开始遇到这个问题,从网上找资源进行查找,但最终没有找到解决办法。因为我是对项目进行了二次开发,报错的项目的springboot和h2版本较低,springboot版本2.0.6.RELEASE,h2版本1.4.197。 我重新调...
2019-11-06 17:59:29 15403 2
原创 idea 删除模块,新建同名的模块,新模块不能集成到项目中
idea 删除模块,又重新添加新的同名模块,再构建项目的时候,新建模块始终不能被构建且不能加入到项目中,如下图:原因是.idea文件记录了同名的模块已经被删除了解决办法: 重新添加模块的pom文件,构建即可...
2019-10-24 16:48:03 1411
原创 Content type 'multipart/form-data;boundary=----WebKitF;charset=UTF-8' not supported
springboot后台接收文件和对象的时候,会报Content type 'multipart/form-data;boundary=----WebKitF;charset=UTF-8' not supported错误。 代码如下: @PostMapping("/test") public void test( @RequestBody User user, ...
2019-10-12 14:24:34 32543 19
原创 复写springframework下的BeanUtils.copyProperties方法
场景: 编码过程中经常遇到,实体类中参数名转换其他参数名,以做后续业务逻辑处理。 同一个功能,可能不同的人接手后,不知道之前转换的方法在哪里,又重新写了一个方法,或者不同的实体,需要转换成同一个实体,这样就造成重复工作浪费。为解决这个问题,对参数名转换进行封装,提高工作效率, 参考BeanUtils.copyProperties方法,结合注解的使用,重写了一套方法。新建注解...
2019-06-17 15:40:31 377
原创 volatile关键字使用
volatile作用:1.在多线程中使用,修改被修饰的变量的操作对其他线程可见。即一个线程对变量进行修改,其他线程可以获取最新的修改后的值2.禁止指令重排序int num=1; //语句1String name="小明"; //语句2boolean flag=true; //语句3num=6; //语句4...
2019-03-08 17:28:49 194
原创 InputStream.available()使用大坑
问题场景:文件下载功能,需要对原来的文件进行读取再输出到文件或浏览器中,会常用到InputStream.available()方法。经历过一次系统功能变更升级,需要将文件先下载到本地再响应出去,发现下载的文件不全百思不得其解,搜索好久资料,查找得知,以备忘记这个方法可以在读写操作前先得知数据流里有多少个字节可以读取。 需要注意的是,如果这个方法用在从本地文件读取数据时,一般不会遇到...
2019-03-06 17:07:44 8343
原创 记Validator.validate造成的重大问题
问题场景: 类A继承类B,类A,B有相同的字段,并且都用了@NotBlank注解。在参数都设置正确的情况下,使用Validator.validate校验类A参数是否符合规则时,报错参数不符合规则代码如下//实体类@Datapublic class A extends B { @NotBlank private String name; private...
2019-03-06 16:54:06 4861
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人