- 博客(98)
- 资源 (12)
- 收藏
- 关注
原创 数据库中间件
1、现在常用的有两种,第一个是当当网开源的client端的sharding-jdbc,第二个就是阿里的proxy端的mycat,两者对比如下:
2020-02-18 21:19:23
217
转载 mysql 中索引的问题
1、mysql使用索引口诀(demo示例)全值匹配我最爱,最左前缀要遵守;带头大哥不能死,中间兄弟不能断;索引列上少计算,范围之后全失效;like百分写最后,覆盖索引不写星;join连接类型同,order条件非表达式;不等空值or和'0/1',索引失效要少用。2、可以使用mysql的explain来检查自己的sql语句是否使用了索引 explain用法和结果的含义如下:...
2020-02-17 15:41:35
273
原创 测试RocketMQ的延迟队列
概述:RocketMQ 支持发送延迟消息,但不支持任意时间的延迟消息的设置,仅支持内置预设值的延迟时间间隔的延迟消息;预设值的延迟时间间隔为:1s、 5s、 10s、 30s、 1m、 2m、 3m、 4m、 5m、 6m、 7m、 8m、 9m、 10m、 20m、 30m、 1h、 2h;发送延迟消息只需在Producer待发送消息( org.apache.rocketmq.com...
2020-02-14 11:40:59
1114
原创 ES知识点总结
1、es搜索引擎的架构是怎么设计的?为什么是分布式的?答:es的核心思想就是在多台机器上部署启动多个es的进程实例,这样就组成了一个es集群,接着当你新建一个索引时(es7.0之后一个索引相当于一个表),这个索引可以被拆分成多个分片shard,每个分片存储这个索引下的一部分数据。接着就是每个分片shard都有多个备份,就是说每个分片都有一个备份分片,主分片负责写入数据,之后会将数据同步到其他机...
2020-02-13 16:51:01
1391
原创 分布式事物的解决方案
一:理论依据(讨论的前提)本地事务、分布式事务(如果说本地事务是解决单个数据源上的数据操作的一致性问题的话,那么分布式事务则是为了解决跨越多个数据源上数据操作的一致性问题。) 强一致性、弱一致性、最终一致性(对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。如果能容忍后续的部分或者全部访问不到,则是弱一致性。如果经过一段时间后要求能访问到更新后的数据,则是最终一致性...
2019-12-19 12:12:30
256
原创 JVM优化工具及jvm参数配置
1、堆设置-Xms:堆内存的最小值 -Xmx:堆内存的最大值 -Xmn:堆内存中新生代的初始化大小 -XX:newSize:表示堆内存中新生代初始化的最小值,应该小于-Xms的值;-XX:MaxnewSize:表示堆内存中新生代初始化的最大值;当然这个值应该小于-Xmx的值;-Xmn:至于这个参数则是相当于对 -XX:newSize、-XX:MaxnewSize两个参数的同时配...
2019-12-12 13:47:24
386
原创 JVM中那些类可以作为GCRoot对象
一:jvm内存回收算法一般有两种1、引用计数法:如果有地方引用该对象,该对象的引用计数就+1,如果引用失效的话就减一。计数器为0的对象不可以被使用。2、可达性分析法:如果我们将一些GC Roots对象作为起始点,从这些节点向下搜索,搜索到的路径为引用链,如果有一些对象没有任何引用链相连,那么这个对象对于GC Roots是不可达的,即使它们之间可能相互产生关联,所以将其判定为可回收对象...
2019-12-11 15:35:01
16597
7
原创 springcloud网关源码分析及总结
一:网关路由配置方式分为两种:静态路由配置、动态路由配置静态:路由信息可以从配置文件、数据库DB、redis等其他地方获取,这种方式没有使用eureka的注册发现,熔断等功能,如需要则可以自己实现 动态:路由配置信息从Eureka中通过Discover发现,默认使用sc的熔断等功能二:网关注册路由地址、路由转发等流程1、注册路由地址: 首先看RouteLocator这个家...
2019-12-02 11:21:05
567
原创 高并发应对策略
策略1、在开发高并发系统时,有很多手段用来保护系统如:缓存、限流、降级2、缓存的目的是提升系统访问速度和增大系统处理能力,可谓是抗高并发流量的银弹3、而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰过去或者问题解决后再打开的场景,例如Histrix服务熔断也是一种服务降级的策略4、但有些场景或者核心业务并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)...
2019-10-25 17:13:02
1091
原创 zookeeper知识点总结
zk特性顺序一致性:从同一个客户端发起的事务请求,最终会严格按照顺序被应用到zookeeper中原子性:所有的事务请求的处理结果在整个集群中的所有机器上的应用情况是一致的,也就是说,要么整个集群中的所有机器都成功应用了某一事务、 要么全都不应用 对应每一个事务请求,ZooKeeper 都会为其分配一个全局唯一的事务ID,用 ZXID 表示,通常是一个64位的数字。每一个 ZXID 对应...
2019-10-25 17:04:16
780
原创 java中对象的copy与clone
1、对象的copy(属于浅拷贝)对象的copy有两种方法BeanUtils与PropertyUtils 相同的:都是浅拷贝,都提供了copyProperties()方法,只要属性名相同就可以从源bean中拷贝值到目标bean中,而不用管两个对象是不是相同类型的对象 不同点: BeanUtils.copyProperties提供类型转换功能,BeanUtils会调用默认的转换器(Conv...
2019-09-18 20:16:28
2527
原创 elastic-job的elastic-job-lite-console部署
环境准备:jdk,maven,elastic-job源码elastic-job官网地址http://elasticjob.io/index_zh.html源码github地址:https://github.com/elasticjob/elastic-job想要安装运行elastic控制台你要做的有以下几步:1.首先在github上拉取源代码到你本地2.然后运行cmd命令,切换...
2019-09-18 20:12:13
372
转载 Spring的IOC原理
1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。图1:软件系统中耦合的对象如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针、分针和秒针顺时针旋转,从而在表盘上产生正确的时间。图1中描述的就是这样的一个齿轮组,它拥有多个独立的齿轮...
2019-09-18 20:11:23
161
原创 Linux下查看文件内容的常见命令
1、根据时间段查询1、精确查询,查询的结果就是开始时间到最后的全部日志sed -n '/2019-10-24 22:16:22/,/2019-10-24 22:16:59/p' java-8080.log2、按分钟模糊查询sed -n '/2019-10-24 22:14:*/,/2019-10-24 22:16:*/p' all.log3、按小时模糊查询sed -n '/2...
2019-09-18 19:24:28
376
原创 java线程池之ThreadPoolExecutor介绍
1 、线程池的优势总体来说,线程池有如下的优势: (1)降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 (2)提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 (3)提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线...
2019-09-16 19:59:45
768
原创 JVM知识点梳理
1、JVM总体概述JVM总体上是由类装载子系统(ClassLoader)、运行时数据区、执行引擎(Execution Engine)、垃圾收集(GC)这四个部分组成。 其中我们最为关注的运行时数据区,也就是JVM的内存部分则是由方法区(Method Area也成非堆)、JAVA堆(Java Heap)、虚拟机栈(JVM Stack)、程序计数器、本地方法栈(Native Metho...
2019-09-14 17:56:51
198
转载 Redis持久化机制
1.由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了2.于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据3.redis提供两种方式进行持久化,一种是RDB持久化另外一种是AOF(append only file)持久化4.RDB持久化(不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”))R...
2019-09-10 20:50:19
183
原创 springboot与cloud版本对应关系
1.查看官网版本对应关系2.cloud官方文档上的对应关系(对应关系不是很细)3.创建springboot项目地址4.spring-cloud-config可视化界面管理系统
2019-09-09 10:07:43
3773
原创 redis集成springboot使用
1.要使用redisson需要先引入需要的jar包例: <!--redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifact...
2019-09-05 15:05:28
317
原创 redis知识点学习总结
1.redis实现分布式锁2.redis实现唯一id3.操作redis的客户端实现 Jedis Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持 Jedis中的方法调用是比较底层的暴露的Redis的API Jedis使用阻塞的I/O,且其方法调用都是同步的,程序流需要等到sockets处理完I/O才能执行,不支持异步。Jedis客户端...
2019-09-05 14:09:27
236
转载 分布式全局唯一ID生成策略
“唯一ID”在应用程序中是一个很常见的需求,它用于唯一标识一个业务对象、一个资源、或者一个消息等等。在数据库中,唯一ID一般是用来作为一个数据的主键。看过前面介绍MySQL索引原理的文章的朋友应该知道,主键对于数据库的重要性不言而喻。在单机场景下,要得到一个全局唯一的ID是非常容易的,你可以使用数据库的自增功能。但是如果在分布式的场景下,想要构建构建一个全局唯一的ID就有些不一样。因为分布...
2019-09-05 14:07:59
289
原创 mysql的优化策略有哪些
1.数据库层面主从备份,读写分离 垂直分库分表或者水平分库分表 必要时可以编写存储过程 搭建数据库集群服务,增加服务器物理内存 给数据库增加缓存系统,把热数据缓存到内存中,如果内存缓存中有要请求的数据就不再去数据库中返回结果,提高读性能。缓存实现有本地缓存和分布式缓存,本地缓存是将数据缓存到本地服务器内存中或者文件中,速度快。分布式可以缓存海量数据,扩展容易,主流的分布式缓存系统有me...
2019-09-04 15:42:01
724
原创 数据库索引原理以及BTree,B+Tree
1.索引的种类众所周知,索引类似于字典的目录,可以提高查询的效率。 索引从物理上可以分为:聚集索引也叫聚簇索引。,非聚集索引也叫非聚簇索引。 从逻辑上可以分为:普通索引,唯一索引,主键索引,联合索引,全文索引 如果不创建索引,系统会自动创建一个隐含列作为表的聚集索引。(用户不可见)而MySQL里主键就是聚集索引 除了聚集索引以外的索引都是非聚集索引 如上面的普通索引,唯一索引,全文索...
2019-09-04 11:51:29
845
原创 重写对象的hashcode和equals方法实现对List对象集合中对象元素的去重复
1.我们大家都知道,set集合的特点就是没有重复的元素。如果集合中的数据类型是基本数据类型,可以直接将list集合转换成set,就会自动去除重复的元素,这个就相对比较简单。public class Test { public static void main(String[] args) { List list = new ArrayList(); ...
2019-09-02 20:13:20
1220
原创 java中的集合分析
Java中的集合包括三大类,它们是Set(集)、List(列表)和Map(映射),它们都处于java.util包中,Set、List和Map都是接口,它们有各自的实现类。Set的实现类主要有HashSet和TreeSet,List的实现类主要有ArrayList,Map的实现类主要有HashMap和TreeMap。Collection是最基本的集合接口,声明了适用于JAVA集合...
2019-08-28 17:36:00
210
原创 mysql编写存储过程
1.使用navicat查看所用的存储过程命令SHOW procedure STATUS查看存储过程详情SHOW CREATE PROCEDURE test_procedure12.编写无参存储过程CREATE PROCEDURE `test_procedure1`()BEGIN #接受一个参数的存储过程 DECLARE uid INTEGER; SET uid=5;...
2019-08-17 17:34:18
1445
原创 关于rocketmq安装以及使用
1.rocketMq官网下载地址:http://rocketmq.apache.org/dowloading/releases/一:在写博客是rocket的最新版本已经更新到了4.5.1了2.官网上有另个版本Source(源码包liunx版本)和Binary(二进制包windows版本),不过Source源码包想要使用必须先经过maven打包编译之后才可以使用,可以在本地编译之后再把编...
2019-08-12 20:30:55
892
1
原创 Linux在线安装jdk1.8和配置环境变量
第一种方式:在线下载压缩包解压之后再进行安装,配置环境变量linux 下安装jdk和windows下的安装是一样的,之前在windows安装的时候是先下载压缩包,然后再配置环境变量。其实在linux下也是一样的。 第一步:创建jdk安装目录(例如我的是/usr/java) 第二步:查看安装程序 命令:rpm -qa | grep -i jdk ...
2019-07-15 10:15:00
2346
2
原创 spring中的jdk动态代理和cglib动态代理
1.jdk动态代理和cglib动态代理的区别是什么呢?首先jdk动态代理是jdk默认实现的代理模式,而cglib是在之上进行的补充,两者的区别是:使用jdk动态代理那么被代理的类必须要实现一个接口,这样使用jdk动态代理会实现跟被代理类相同的接口然后进行代理,但如果一个类没有实现接口那么他就不能被jdk进行动态代理!所以cglib模式代理变产生了,Cglib动态代理是针对代理的类, 动态...
2019-07-14 00:04:24
182
转载 统一异常处理介绍及实战
原文出处:https://mp.weixin.qq.com/s/aUfrgU-qBrQ5KrI_r1iz7g背景软件开发过程中,不可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try {...} catch {...} finally {...}代码块,不仅有大量的冗余代码,而且还影响代码的可读性。比较下面两张图,看看您现在...
2019-07-04 15:37:14
1100
1
转载 Maven依赖中的scope总结
scope是限制Dependency的作用范围的, 影响maven项目在各个生命周期时导入的package的状态。自2.0.9版本发布后,新增了一种:import,现在已经有了6种scope。下面分别来说明:compile:不声明scope元素的情况下的默认值。compile表示被依赖包需要参与当前项目的编译,包括后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包...
2019-07-04 14:34:59
1481
原创 SpringBoot 自定义线程池
1.我们都知道spring只是为我们简单的处理线程池,每次用到线程总会new 一个新的线程,效率不高,所以我们需要自定义一个线程池。2.自定义线程池有两种方法,第一种自定义线程池然后使用自己的自定义的,第二种重写spring默认的线程池,然后使用自己重写过的线程池一:自定义线程池1.1 修改application.yml#线程池配置参数task: pool: cor...
2019-07-03 21:10:16
11101
3
原创 关于数据库mysql连接超时以及连接池超时的一些问题
1.本文主要整理关于mysql的一些问题2.首先mysql服务器默认的连接超时和数据库连接超时是两码事,不能混为一谈3.什么是数据库连接超时呢? 答:数据库连接超时是指当服务连接到数据库但不对其做任何操作时等待到一定时间之后 这个链接就会与数据库断开,当再次对数据库进行操作时会报数据库连接超时或者连接关闭异常 mysql的连接默认最长等待时间为28800s也...
2019-06-12 21:23:57
9988
原创 liunx编写启动,kill进程脚本
1.启动java项目的脚本内容:nohup java -jar ./xxx.jar -Dspring.profiles.active=dev >>/data/logs/xxxx.log 2>&1 &2.kill掉某一个java进程的脚本内容:kill -9 `ps -ef|grep java|awk 'NR==1{print $2}'`或者直接精确项...
2019-06-11 17:12:38
738
1
原创 JAVA异常分类和自定义异常定义
异常概念:1、如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下 会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用 这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。2、Throwable 是 Java 语言中所有错误或异常的超类。下一层分为 Error 和 ExceptionError1....
2019-06-10 11:16:59
11674
原创 多线程环境下SimpleDateFormat线程不安全问题
1.单线程环境下SimpleDateFormat去解析时间并没有什么问题。2.但是在多线程情况下,会出现异常。下面我们就来分析分析SimpleDateFormat为什么不安全?是怎么引发的?以及多线程下有那些SimpleDateFormat的解决方案?3.问题场景复现一般我们使用SimpleDateFormat的时候会把它定义为一个静态变量,避免频繁创建它的对象实例,如下代码: ...
2019-06-04 11:18:00
405
原创 spring中的切面和异步执行
1、首先理解异步和多线程的概念,怎么实现接口的异步调用呢?多线程,这是很多人第一眼想到的关键词,没错,多线程就是一种实现异步调用的方式!2、下面介绍怎么实现异步调用方式3、首先如果你的项目是springboot项目那么只需要在想要调用的方法上加上异步注解@Async就可以了(前提启动类上要加上启用异步注解的注解@EnableAsync如果不开启那么@Async是无效的)还有一点需要注意:那...
2019-06-02 16:38:17
7538
1
原创 redis分布式锁的使用
首先了解一下单机版redis和集群版redis的存储机制原理:1.使用单节点时的redis时只有一个表,所有的key都放在这个表里;2.改用Redis Cluster以后会自动为你生成16384个分区表2.只有了解了redis的存储原理才能更好的理解使用redis充当分布式锁的原因redis存储机制:https://blog.csdn.net/qq_38545713/article/d...
2019-05-14 14:43:36
263
原创 WebService 简单入门教程(Java)
项目目的: 程序A调用程序B中的方法C 首先申明:本次需要采用的JDK版本为jdk1.6+,也就是要java6+才能看到效果,java5没试过...我认为,升级一下JDK版本比起安装什么 Axis以及导入一堆jar包和配置N多配置文件来说,java6的webservice无疑是简单的不能再简单! 1.首先先创建两个java项目,可以使web项目也可以是普通项...
2018-12-14 14:53:08
545
solr+IK分词集成tomcat实现电商项目的全文检索
2017-06-30
使用递归循环读取省市区json文件数据,并保存到数据库中
2017-12-01
钉钉生成用户名默认头像01
2019-04-28
solr+IK分词集成tomcat实现全文检索
2017-06-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅