- 博客(94)
- 资源 (19)
- 问答 (1)
- 收藏
- 关注
原创 ide sonar代码审查问题总结
格式:问题名字+问题出现的次数Resources should be closed2资源未关闭,打开发现有两处用到的IO流没有关闭Conditions should not unconditionally evaluate to "TRUE" or to "FALSE"1if/else判断里出现了重复判断,比如在if(a>10)的执行体里面又判断if(a<0),而后者肯定不会是trueException handlers should preserve the o..
2020-08-07 15:18:15
990
原创 Sonar Java默认扫描规则
规则如下:".equals()" should not be used to test the values of "Atomic" classes:equals()方法不应该用在原子类型的数据上(如:AtomicInteger, AtomicLong, AtomicBoolean). "=+" should not be used instead of "+=":"=+"不可以替代 “+=”. "==" and "!=" should not be used when "equals" is ov
2020-08-07 15:17:10
8811
原创 MySQL删除数据后磁盘空间的释放总览
1、drop table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM ;2、truncate table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM 。truncate table其实有点类似于drop table 然后creat table ,只不过这个create table 的过程做了优化,比如表结构文件之前已经有了等等。所以速度上应该是接近drop table的速度;3、delete from table_name删除表
2020-05-14 16:54:54
518
原创 Return消息机制
Return Listener 用于处理一些不可路由的消息消息生产者通过制定一个Exchane和RoutingKey,把消息送达到某一个队列中去;消费者监听队列进行消费处理。但是在某些情况下,发送消息的时候,当前Exchange不存在或制定的路由key不存在,这时我们需要监听这种不可达的消息。用到的就是Return Listener。1.API中关键项配置Mandatory:tru...
2019-09-29 22:24:44
366
原创 RabbitMQ可靠性消息投递
RabbitMQ可靠性消息投递是通过confirm确认消息机制来实现的Confirm消息确认机制:消息确认,是指生产者投递消息以后,如果MQ服务收到消息,则会给生产者一个应答。生产者接收到应答,用来确认这条消息是否正常发送到MQ服务。Confirm消息确认实现:(1)在Channel上开启确认模式:channel.confirmSelect(); (2)在channel上添加...
2019-09-27 10:48:22
270
原创 同一个类中一个方法(无事务)调用另一个方法(有事务),事务不生效问题
今天同事遇到一事务的问题,pring中同一个service类中方法相互调用事务不生效问题如何解决:此处的this指向目标对象,调用this.b()不会执行b事务的切面(不会执行事物增强aop),因此b方法的事物不会起作用。 在一个Service内部,事务方法之间的嵌套调用,普通方法和事务方法之间的嵌套调用,都不会开启新的事务。 是因为spring采用动态...
2019-09-25 10:51:05
6281
原创 RabbitMQ如何保障100%投递成功解决方案(8)
1、消息百分百投递成功需要注意一下4点(1)生产者消息要发送成功(2)MQ服务器要接收成功(3)发送端(生产者)要接收到MQ确认应答(4)完善的消息补偿机制2、可靠性消息投递的解决方案(1)消息入库,对消息状态进行打标a.业务数据入库的同时,增加一条消息数据记录,状态是未发送;b.启动多线程进行消息投递到MQ,并修改消息记录表数据状态为发送中;c.消费端消费完成...
2019-09-16 22:41:23
276
原创 RabbitMq构件简单的生产者消费者模型(6)
1.在SpringBoot工程引入rabbitmq依赖 <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>3.6.5</version> </dependen...
2019-09-11 23:23:33
244
原创 RabbitMQ基础概念介绍(2)
1.RabbitMQ高性能的原因采用Erlang语言,优点在于有着和原生Socket一样的低延迟。2.什么是AMQP是应用层高级消息队列协议3.AMQP核心概念Server:又称Broker,接收客户端的连接,实现AMQP实体服务。Connection:连接,应用程序和Broker之间网络连接。Channel:网络信道,所有的操作都在Channel中进行,Channe...
2019-09-08 22:49:11
164
原创 事物隔离级别
数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。Read uncommitted 读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据; 会产生脏读。Read ...
2019-09-05 14:57:18
152
原创 RabbitMQ Spring集成
1.pom文件引入依赖 <!--rabbitmq依赖 --> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</a...
2019-08-13 17:43:49
169
原创 Dubbo负载均衡 集群容错 服务降级 服务熔断 限流
一、负载均衡dubbo默认的负载均默认是随机调用法。一共有4种负载均衡策略:RandomLoadBalance 随机调用负载均衡;RoundRobinLoadBlance 轮询调用;LeastActiveLoadBlance 最少活跃数调用法,使慢的提供者收到更少请求;ConsistentHashLoadBalance 一致性Hash算法,相同参数的请求总是发到同一提供...
2019-08-12 14:34:35
1725
原创 RabbitMQ 交换机、绑定、队列、消息和虚拟主机详解(7)
1、Exchange 交换机Exchange:接收消息,并根据路由键转发消息所绑定的队列交换机的属性:Name:交换机名称Type:交换机类型 direct、topic、fanout、headersDurability :是否需要持久化,true为持久化Auto Delete:当前最后一个绑定到Exchange上的队列删除后,自动删除ExchangeInterna...
2019-08-11 23:00:01
914
原创 RabbitMQ基本介绍(1)
1.MQ作用异步、解耦、分布式、错峰限流。2.目前主流的MQ介绍Kafka、RabbitMQ、RocketMQKafka:分布式、高吞吐;不支持事务对重复、错误和丢失没有严格要求。RabbitMQ:纯Java开发,高吞吐量,高可用性,适用于大规模分布式系统。ActiveMQ:丰富的API,多种集群构建模式,但吐量下降一般适用于中小型企业。3.消息中间件的组成...
2019-08-04 23:11:54
200
原创 RabbitMQ在Linux下的安装(3)
1.安装Erlang在usr/local下创建rabbitmq文件夹,运行如下命令:[root@localhost rabbitmq]# wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm[root@localhost rabbitmq]# rpm -Uvh erlang-solutio...
2019-08-04 21:29:51
173
原创 redis主从哨兵搭建
1. 为什么要有哨兵机制 哨兵机制是对Redis系统的运行情况的监控,解决主从复制的缺点的。 原理:当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。 作用: a、 监控主数据库和从数据库是否运行正常; b、 主数据出现故障后自动将从数据库转化为主数据库2.redis S...
2019-07-29 23:12:57
480
原创 redis主从复制
1、Redis主从模式作用(1)、当一个节点损坏时,数据因为有备份,可以方便恢复。(2)、避免所有客户端都访问一个节点,有了主从模式后,查询操作就可以通过查询从节点来完成。2、Redis 主从模式特点(1)、1个Master可以有多个Slave(2)、默认情况下Master节点支持读写操作,Slave只支持读操作写是被禁止的。不要修改配置让Slave支持写,应为写入的数据不会被...
2019-07-23 23:20:46
166
原创 redis-cluster 集群增加节点
1.插槽(slot)1.1 插槽的分配:整个Redis提供了16384个插槽,也就是说集群中的每个节点分得的插槽数总和为16384。./redis-trib.rb 脚本实现了是将16384个插槽平均分配给了N个节点。1.2 数据如何保存到集群中set abc 12345命令时,redis是如何将数据保存到集群中的执行步骤如下:(1)接收命令setabc 12345(2...
2019-07-22 23:45:59
2111
原创 Redis 4.x 集群部署
1.Redis简介redis是基于内存非关系型存储数据库,同时支持持久化操作。2.安装环境Redis使用c语言开发,需要使用gcc编译程序进行编译。gcc安装命令:yum -y install gcc3.安装redis安装 参考该文章https://blog.youkuaiyun.com/yiyijianxian/article/details/944107854.redis集群...
2019-07-21 18:16:18
395
原创 JAVA虚拟机(JVM)介绍
1.什么是JVMjvm是运行在JDK的底层,负责和操作系统交互,用来屏蔽操作系统环境,提供完整的java运行环境。操作系统装入jvm是通过jdk的java.exe来完成的。2.JVM 内存模型(jdk8)线程私有:程序计数器,虚拟机栈,本地方法栈线程共享:元空间,JAVA堆3.JAVA内存模型中堆和栈的区别·栈自动释放,堆需要GC回收·堆比栈的内存空间要大·...
2019-07-20 16:15:01
249
原创 MySql 如何优化慢语句
1.打开慢语句记录查看慢语句是否开启和慢语句设定时长SHOW VARIABLES LIKE 'slow_query%'SHOW VARIABLES LIKE 'long_query_time%'修改设置SET GLOBAL slow_query_log ='ON'SET GLOBAL long_query_time=1;2.explain分析慢查询语句标示logs...
2019-07-19 16:20:11
720
原创 redis 集群之 安装redis-ruby
Redis安装ruby过程中:执行yum -y install zlib ruby rubygems后,执行安装redis-gem的操作gem install redis发现报错(若执行 gem install redis 时报错(不报错的童鞋直接忽略))即安装redis需要ruby版本最低是2.2.2,而centos yum库中ruby版本支持到2.0.0,所以需要手动安装升级rub...
2019-07-08 23:37:40
449
原创 Redis linux安装指南
1、登入Linux系统在usr/local下创建download文件夹2.使用wget 命令下载redis包wget http://download.redis.io/releases/redis-4.0.14.tar.gz3.解压redis-4.0.14.tar.gz使用解压命令 tar -zxvf redis-4.0.14.tar.gz ./usr/local/redis40...
2019-07-01 22:13:30
172
转载 CENTOS 下service network restart失败最全解决方案
经常会有人在centOS 7下更改完静态ip后发现network服务重启不了,翻遍了网络,尝试了各种方法,终于解决了。现把各种解决方法归纳整理,希望能让大家少走点歪路。首先看问题:执行service network restart命令后出现下面的错误: Restarting network (via systemctl): Job for network.service fai...
2019-06-30 11:08:14
13318
5
原创 Linux 通过scp向win传输文件
1.在windows平台安装WinSSHD下载地址:https://bitvise-winsshd-remove-only.updatestar.com/1.1安装运行BvSshServer-Inst_v6.44.exe勾选“I agree……”,可自定义选择安装路径,然后点击Install按钮选择“Personal edition”,点击OK按钮。【注意:“Stand...
2019-06-28 16:42:37
1394
原创 spring声明试或注解事物不会滚问题解决
1.什么是Spring 注解事物:就是直接在Service层的方法上面加上@Transactional注解。 什么是声明试事物:就是使用spring 的AOP配置事物。2.事物不回滚通常是出现在注解事物或声明式事物,编程式事务一般需要手写回滚 通常不会出问题。3.常见的事物不会滚通常有以下几种情况: 3.1声明试事物配置的切入点表达式错误,没有切入service中的方法。...
2019-06-19 10:34:55
314
原创 多数据库数据同步问题的处理方式
对于分库(垂直分割,根据业务分库)数据如何确保数据最终一致性,这里说明一下为什么进行数据同步,而不是通过服务调用获取。这里主要是对应于公共的数据信息,比如(人员,组织等)关联的数据多,查询量大通过本地数据库保存一份的方法来降低全局数据库的压力,提高查询效率。 实现的方法有如下几种: 1.直接查询变动数据同步 写一个定时任务扫描要同步的表数据,当有数据变动...
2019-05-24 09:59:50
2881
原创 Redis和数据库数据一致性的问题,怎么解
缓存存储用的越来越广泛,缓存存储也是数据库冗余的一种方式,既然存在冗余,就存在数据一致性的问题。1.如果你的数据库只有一个,读写操作都在一起 1.1读取数据时先读缓存,缓存没有数据再从数据库读取,并放入缓存。 1.2发生写操作时,先删除缓存数据,再往数据库放数据。 如果此时有读操作,发现缓存没有数据,就会读取数据库,而此时数据库正在进行写...
2019-03-21 11:37:29
1125
原创 Redis 持久化操作
一、Redis 持久化操作: Redis把内部数据以文件形式在硬盘中保存一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)里,数据保存到硬盘的过程就称为“持久化”效果。redis有两种持久化功能: 一种是“快照持久化(RDB)”:默认开启,一次性把redis中全部的数据保存一份存储在硬盘中,如果数据非常多(10-20G)就不合适频繁操作该持久化...
2019-03-20 17:30:17
1392
原创 Linux 添加ssh公钥 实现免密认证
ssh 无密码登录要使用公钥与私钥。linux下可以用用ssh-keygen生成公钥/私钥对1.添加A服务器公钥到B服务器2.到A服务器输入命令ssh-keygen 一路回车 3.找到A服务器的/root/.ssh/id_rsa.pub 打开复制内容4.找到B服务器的/root/.ssh/authorized_keys 将A服务器的id_rsa.pub公钥内容复制进去即可...
2019-02-22 11:26:31
10234
原创 Linux下WebSocket达到一定值之后无法再建立新连接的问题
1.查看当前建立的进程连接数:netstat -ant | grep "ESTABLISHED" | wc -l 2.socket接收的所有连接都是存放在队列类型的数据结构中,关键问题是这种队列有两个,而且其长度都是可以设置的。分别是: tcp_max_syn_backlog 和net.core.somaxconntcp_max_syn_backlog是指定所能接受SYN同步包的最大...
2019-02-15 13:34:07
1254
原创 多线程并发
1.并发就是对共享资源同时进行访问,而产生的现象。2.线程的实现方式:继承Thread或实现runnable 都要重写run方法。3.启动线程是通过Thread的start(用户进程)方法实现的。如果直接调用run(守护进程)方法启动的线程和当前主线生命是同时结束的。4.共享变量:多个线程对同一个变量进行访问时,都是先从jmm主内存读取变量的值到自己的本地内存,等线程运行结束了后再把自...
2019-02-12 09:24:20
315
1
原创 Jenkins
1.管理员账号登录,点击系统管理2.选择系统设置3.添加远程web应用服务器信息4.填写应用服务器配置信息5.录好之后保存 6.新建发布任务7.选择自由风格项目 选完之后拉到最后点击确定 8.配置jenkins基础信息9.我的是通过shell脚本下载源码的10.构建触发器和构建环境都不选11.在构建栏 添加...
2019-01-25 14:37:02
130
转载 23种设计模式全解析
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两...
2019-01-17 13:35:02
158
转载 jvisualvm远程监控tomcat
1、在 $CATALINA_HOME/bin/startup.sh 倒数第二行(也就是exec "$PRGDIR"/"$EXECUTABLE" start "$@"一行上边)加上如下内容:export CATALINA_OPTS="$CATALINA_OPTS-Dcom.sun.management.jmxremote-Djava.rmi.server.hostname=192.168....
2019-01-15 16:11:44
265
1
原创 eclispe远程调试Tomcat服务器代码(Win)
Java虚拟机提供了Java调试的功能 , 调试平台通过调试交互协议向Java虚拟机请求服务以对在虚拟机中运行的程序进行调试 这里我们的eclipse就是那个调试的前台。我们需要将本地的调试平台和服务器运行的项目结合起来。1.在服务端的tomcat\bin 文件夹下复制startup.bat 改名字为startup-debug.bat2.修改startup-debu...
2019-01-08 15:26:21
265
转载 在一个千万级的数据库查寻中,如何提高SQL的查询效率
一、数据库设计方面1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引;2、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: sele...
2019-01-04 17:07:25
2061
原创 Linux安装JDK8后 java -version仍显示1.7的问题
1.查看环境配置如下图是1.8 2.在控制台查看jdk版本发现是1.7,这是应为先安装了1.7之后又升级为1.8的,linux系统文件的软连接没有修改,我们只是吧环境配置的指向地址改成了ldk1.8.3.解决方案3.1 which java ——查看默认的jdk安装路径3.2 通过cd命令进入 /usr/bin ,执行sudo rm -rf java (删除默认的...
2019-01-03 11:18:43
4059
3
原创 Docker 运行SpringCloud统一配置中心Config
1.在config项目下创建Dockerfile文件,如下图2.Dockerfile 文件配置 FROM hub.c.163.com/library/java:8-alpineMAINTAINER lf 815*****6@qq.comADD target/*.jar app.jarEXPOSE 8080ENTRYPOINT ["java","-jar","/app.jar"]...
2019-01-02 11:49:52
1614
原创 Docker 运行SpringCloud注册中心Eureka
1.在erueka项目下创建Dockerfile文件,如下图2.Dockerfile 文件配置FROM hub.c.163.com/library/java:8-alpineADD target/*.jar app.jarEXPOSE 8761ENTRYPOINT ["java","-jar","/app.jar"]3.构建应用 mvn clean package -Dm...
2019-01-02 10:12:56
1636
WebSocket重练机制
2018-11-22
java Post请求接收body里的参数
2017-07-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人