自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (3)
  • 收藏
  • 关注

原创 8.Spring Cloud Alibaba教程:整合Seata分布式事务

概述Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。更多的介绍可以参考官方文档:https://seata.io/zh-cn/docs/overview/what-is-seata.html本篇主要是介绍Spring Cloud Alibaba + JPA 整合 Seata 的过程安装Seata下载Seata,打开 https://github.com/seata/seata/releases,现在最新的是1.3.0,所以选择seata-server-1.

2020-09-30 08:53:46 1672

原创 7.Spring Cloud Alibaba教程:整合Dubbo实现RPC调用

概述

2020-09-28 22:09:36 1662

原创 maven中packaging的三个属性值pom、jar、war

pompom是maven依赖文件。打出来的可以作为其他项目的maven依赖,在工程A中添加工程B的pom,A就可以使用B中的类。用在父级工程或聚合工程中。用来做jar包的版本控制。jarjar是java普通项目打包。通常是开发时要引用通用类,达成jar包便于存放管理。当你使用某些功能时就需要这些jar包的支持,需要导入jar包。warwar是java web项目打包。是做好一个web网站后,打成war包部署到服务器。目的是节省资源,提供效率。...

2020-09-28 16:54:01 2358

原创 踩坑日记:Logstash同步数据库有type字段导致同步失败

通常情况下,我们都会在Logstash为pipeline指定type,用来区分不同管道的同步处理。举个配置的例子:input { stdin { } jdbc { type => "petition" jdbc_driver_library => "/usr/share/logstash/ojdbc6.jar" jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver" jdbc_conn

2020-09-27 18:02:06 1867

原创 6.Spring Cloud Alibaba教程:Sentinel流量防卫兵的介绍与基本使用

官网https://sentinelguard.io/服务雪崩微服务中各个服务之间通过http/rpc互相调用,假设其中1个服务因为网络或自身原因出现问题,调用这个服务就会出现线程堵塞,此时若有大量请求出现,线程资源会因为堵塞而耗尽,导致服务调用方瘫痪,最后引起其他服务也相继瘫痪,这就是服务雪崩。为了解决这个问题,业界提出了熔断器模型。阿里巴巴开源的Sentinel,就实现了熔断器模型。Sentinel是什么随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点

2020-09-27 09:17:03 1152

原创 5.Spring Cloud Alibaba教程:Nacos整合Feign

概述Feign是一个声明式的http客户端。使用Feign只需要创建接口并加上对应的注解,就可以实现类似RestTemplate方式的调用,只是它将底层的http请求代码隐藏起来。另外,Feign默认集成了Ribbon,Nacos也可以很好地兼容Feign,具备负载均衡的功能。注:本文的代码是基于前2篇Nacos的代码基础上,继续添加的功能引入依赖在consumer服务加入以下依赖: <dependencies> <dependency>

2020-09-26 19:29:28 1918

原创 4.Spring Cloud Alibaba教程:Nacos配置管理

概述Nacos作为配置中心,跟传统的配置文件不同。它可以实现线上修改配置,实时生效,中间不需要重启任何应用。引入依赖 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>Con

2020-09-24 22:06:27 1087

原创 3.Spring Cloud Alibaba教程:Nacos服务注册与发现

概要

2020-09-24 20:44:49 1408

原创 2.Spring Cloud Alibaba教程:Linux安装Nacos1.3.1以及配置MySQL持久化

概述官网给了几种方式,这边采用直接解压运行,这个最简单。下载打开下载地址:https://github.com/alibaba/nacos/releases,官方推荐的1.3.1,所以我们就选择这个,下载到 /opt 目录下。注意不要下载Source code版,那个还要自己编译解压unzip nacos-server-1.3.1.tar.gzmv nacos /usr/local运行JDK环境nacos的运行需要jdk1.8以上,还没安装的查看这里:Linux安装JDK1.8

2020-09-24 16:41:14 1682

转载 maven的pom.xml中profiles的作用

1、profiles是什么?有什么作用在maven构建的项目都存在一个pom.xml的项目对象模型配置文件,用于约束项目(如:jar包管理、构建管理等)。profiles是pom.xml中的一个配置项。我们在开发项目时一般都会区分线上环境和测试环境,这两个环境需要切换以适应不同的环境需求正式环境的配置,一般放置于src/main/resources下,而测试环境放置于/src/test/resources下面。profile的主要作用就是区分正式环境和测试环境的配置2、如何配置<prof

2020-09-24 14:51:54 12396

转载 maven的pom.xml中repositories的作用

在maven中pom.xml是Maven进行工作的主要配置文件,它的作用包括:配置Maven项目中需要使用的远程仓库,Maven项目的资源依赖关系等。其中pom是Project Object Model(项目对象模型)的简称。在pom.xml中repositories标签的作用是用来配置maven项目的远程仓库。示例如下:<repository> <id>nexus</id><!--远程仓库唯一标识符 --> <name>Pri

2020-09-24 14:43:46 4125

原创 Logstash配置多个Input、Filter、Output

概要假设现在给Logstash的pipeline配置了2个conf,也就是2个输入源。如果不做任何处理,那么所有的Filter和Output都会同时触发,如下图:这显然跟我们期望的不同,我们希望Logstash按以下的方式来处理,也就是各自区分,独立处理:因此,在处理Filter和Output时,需要用type参数来区分。input配置typeinput - 1input { stdin { } jdbc { # 在这里增加type,名字自定义 type =&gt

2020-09-24 13:51:19 7111

转载 spring-boot-starter-parent 作用

一、你的项目 pom.xml 中有这段代码吗<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.5.RELEASE</version> <relativePath/></parent>

2020-09-24 10:09:45 6261

原创 1.Spring Cloud Alibaba教程:简介

概述2018年10月31日,SpringCloudAlibaba 正式入驻 SpringCloud 官方孵化器,并在 Maven 中央库发布第一个版本。Spring Cloud for Alibaba 0.2.0 releasedThe Spring Cloud Alibaba project, consisting of Alibaba’s open-source components and several Alibaba Cloud products, aims to implement an

2020-09-22 15:55:46 1055

原创 Logstash官方文档地址

官方地址:7.x官方文档其他帮助文档:Logstash最佳实践(中文)

2020-09-22 15:40:50 3762

原创 Oracle分组取出每组的第一笔数据

语法假设现在有个user表,如果名字重复的,就按创建时间取出第1笔数据select t.* from( select u.*, row_number() over (partition by u.name order by u.createdOn asc) rn from sys_user u) twhere t.rn = 1

2020-09-22 14:34:30 2239

原创 Kibana查询ES显示hits.total.value最大值10000的解决方法

问题正常在查询所有数据时,kibana显示的总记录数最多只会有10000GET /jm/_search{ "query":{ "match_all": { } }}解决查询时加上"track_total_hits": true即可,就能正确的显示总记录数了GET /jm/_search{ "track_total_hits": true, "query":{ "match_all": { } }}官方解释如下.

2020-09-22 10:28:25 8889

原创 Docker安装Logstash7.7.0

版本CentOS 7Logstash 7.7.0下载镜像docker pull logstash:7.7.0启动docker run -d --restart=always -p 5044:5044 --name logstash \logstash:7.7.0拷贝配置文件docker mkdir -p /usr/local/docker/logstashdocker cp logstash:/usr/share/logstash/config /usr/local/docker/l

2020-09-21 16:50:57 2163

转载 Elasticsearch Nested类型深入详解

0、概要在Elasticsearch实战场景中,我们或多或少会遇到嵌套文档的组合形式,反映在ES中称为父子文档。父子文档的实现,至少包含以下两种方式:1)父子文档父子文档在5.X版本中通过parent-child父子type实现,即:1个索引对应多个type;6.X+版本已经不再支持一个索引多个type,6.X+的父子索引的实现改成Join。2)Nested嵌套类型本文通过一个例子将Nested类型适合解决的问题、应用场景、使用方法串起来,文中所有的DSL都在Elasticsearch6

2020-09-21 15:25:37 4632

转载 Logstash同步mysql一对多数据到ES(踩坑日记系列)

场景:Logstash 、Kibana、ES版本:6.3.1。使用Logstash从mysql同步用户和用户所有的宠物到ES中。希望的格式:"register_name": "孟林洁", "id": 80469531, "pets": [ { "breed_name": "万能梗", "birthday": null, "pet_id": 999044, "name": "一只狗", "ima

2020-09-21 15:17:23 2794 1

原创 Java进阶:ReentrantLock实现原理解析(公平锁、非公平锁、可重入锁、自旋锁)

概述本篇将介绍公平锁、非公平锁、可重入锁、自旋锁相关理论知识,然后是ReentrantLock源码解析,最后会做几个Demo来进行验证锁的定义公平锁公平锁是指线程按照申请所的顺序来获取锁,跟队列先进先出一样,排队按顺序获取锁非公平锁非公平锁指的是多个线程获取锁的顺序不一定是申请的顺序,有可能后面申请的线程反而比前面的线程优先获取。非公平锁在申请锁资源时,会先尝试占有锁,成功了就独占锁资源,失败了就进入排队队列高并发环境下,可能会造成优先级反转或者饥饿现象可重入锁自旋锁

2020-09-20 19:38:12 1807 1

原创 Java进阶:图文并茂解析HashMap源码

public V put(K key, V value) { return putVal(hash(key), key, value, false, true); } final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] tab; Node<K,V> p; in...

2020-09-19 23:15:22 976

转载 Java中的移位运算符

左移运算符:<<先随便定义一个int类型的数int,十进制的value = 733183670,转换成二进制在计算机中的表示如下:value << 1,左移1位左移1位后换算成十进制的值为:1466367340,刚好是733183670的两倍, 有些人在乘2操作时喜欢用左移运算符来替代。value << 8,左移8位看一下:左移8位后变成了十进制的值为:-1283541504,移动8位后,由于首位变成了1,也就是说成了负数,在使用中要考虑变成负数的情况。

2020-09-19 09:17:20 1116

转载 Java中的二进制

计算机看似能干很多活,其实也很苯,只认识0和1。因为电路的逻辑只有0和1两个状态,这里的0和1并不是数字的0和1,0和1是表示两种不同的状态,0表示低电平,1表示高电平。计算机是由无数个逻辑电路组成的,通过0和1的无限位数和组合来表达信息。也就是说,计算机是采用二进制来表示数据的。为了说清楚二进制,先说一下我们生活中常用的十进制,十进制看起来很简单,那是因为我们从小接受的就是十进制的教育:这是一个普通的十进制数,八十三万七千零五十六,这个数字可以表示如下:再来看看二进制这是一个二进制数10101

2020-09-19 08:55:34 1649

原创 Java进阶:Set、Map线程安全问题

前言前面的博客已经分析了ArrayList线程不安全的原因,以及解决方案,感兴趣的可以参考这里:ArrayList线程安全问题详解。现在这边主要介绍的是Set、Map的线程安全问题SetSet最常用的就是HashSet类型,但是HashSet 是线程不安全的类型,不能用于并发环境。如下这个例子,执行后会抛出java.util.ConcurrentModificationException的异常 public static void main( String[] args ) throw

2020-09-19 07:36:11 1637

原创 算法杂谈:二叉树

二叉树 BST定义:假设当前节点为A,则A的左侧子节点一定比A小,右侧子节点一定比A大二叉树的高度决定了它的查找效率,时间复杂度是O(LogN),最坏的情况是O(N)查找节点如果相等就直接返回当前节点如果比当前节点小,就继续查找当前节点的左侧子节点如果比当前节点大,就继续查找当前节点的右侧子节点直到当前节点为空,或者找到节点,查找才结束添加节点假设当前要添加的节点=20根据查找节点的规则,找到最后一个节点然后判断大小,把节点添加到左侧或者右侧如下图,如果需要添加节点=

2020-09-18 23:05:46 992

原创 Java进阶:ArrayList线程安全问题和解决方案

概述ArrayList 是线程不安全的集合类,当多线程环境下,并发对同一个ArrayList执行add,可能会抛出java.util.ConcurrentModificationException的异常例子这边有个简单的程序,创建30个线程,分别对ArrayList执行add操作public class ListApp{ public static void main( String[] args ) throws InterruptedException { List&l

2020-09-17 22:41:09 2120

原创 Java进阶:CAS原理详解

概述CAS是Compare And Swap的简称,即:比较并交换Java中常见的是Atomic相关类使用了CAS,例如:AtomicInteger、AtomicBoolean等等实现CAS的底层用的是Unsafe操作类先看个小例子public static void main(String[] args) { AtomicInteger atomicInteger = new AtomicInteger(5); atomicInteger.compareAndSet(5,

2020-09-17 16:47:45 1036

原创 Java进阶:AtomicReference详解

前言Atomic家族主要是保证多线程环境下的原子性,相比synchronized而言更加轻量级。比较常用的是AtomicInteger,作用是对Integer类型操作的封装,而AtomicReference作用是对普通对象的封装。先看个例子先简单定义个 User 类@Data@AllArgsConstructorpublic class User { private String name; private Integer age;}使用 AtomicReferenc

2020-09-17 10:52:17 4382

原创 Java进阶:@CallerSensitive详解

前言有一天在看Unsafe.getUnsafe()源码时,发现该方法上有@CallerSensitive注解。类似的比如Class.forName也有该注解。它们的源码分别如下:@CallerSensitivepublic static Unsafe getUnsafe() { Class var0 = Reflection.getCallerClass(); if (!VM.isSystemDomainLoader(var0.getClassLoader())) {

2020-09-17 09:55:54 2077

原创 Java进阶:volatile使用详解

概述volatile是java提供的轻量级的同步机制,保证了可见性,不保证原子性。了解volatile工作机制,首先要对Java内存模型(JMM)有初步的认识:每个线程创建时,JVM会为其创建一份私有的工作内存(栈空间),不同线程的工作内存之间不能直接互相访问JMM规定所有的变量都存在主内存,主内存是共享内存区域,所有线程都可以访问线程对变量进行读写,会从主内存拷贝一份副本到自己的工作内存,操作完毕后刷新到主内存。所以,线程间的通信要通过主内存来实现。volatile的作用是:线程对副本变量进

2020-09-16 17:55:54 3905 4

原创 SpringBoot实现Redis分布式锁

前言当不同的进程,必须以独占资源的方式实现资源共享,就需要用到分布式锁。安全和稳定性分布式锁的实现,必须满足以下2个特性独享互斥:在任意一个时刻,只能有一个客户端持有锁无死锁:既然有加锁,则必须存在解锁。即使持有锁的客户端崩溃宕机,锁仍然允许被其他客户端获取,不能造成无限期的等待例子1@Autowiredprivate StringRedisTemplate stringRedisTemplate;@GetMapping("/lock")public void lock1() th

2020-09-16 14:18:01 1207

原创 Redis RDB、AOF持久化详解

概述

2020-09-15 21:51:26 1060

原创 Linux安装Redis完整步骤

安装cd /opt/software#下载5.0.8版本wget http://download.redis.io/releases/redis-5.0.8.tar.gz#解压到/usr/localtar -zxvf redis-5.0.8.tar.gz -C /usr/local/cd /usr/local/redis-5.0.8/#编译make运行redis服务#运行redis-server./src/redis-server运行客户端./src/redis-cli测试

2020-09-15 17:23:32 1059

原创 vue教程4:自定义组件的使用

概述vue组件是一个可复用的

2020-09-15 15:52:42 1272

原创 SpringBoot操作Kafka创建Topic、Producer、Consumer

环境sbt编译安装sbt下载地址:https://www.scala-sbt.org/download.html# 解压tar -zxvf sbt-1.2.8.tgz -C /usr/localcd /usr/local/sbt/# 修改环境变量vim /etc/profile#尾部加上这部分export SBT=/usr/local/sbtexport PATH=$SBT/bin:$PATH#保存退出,使配置生效source /etc/profile修改仓库地址s

2020-09-15 11:39:42 5471 1

原创 Linux安装Kafka-manager可视化

环境kafka-manager 3.0.0.5下载地址:https://github.com/yahoo/CMAK/releases/tag/3.0.0.5选择cmak-3.0.0.5.zip下载,注意不要下载到SourceCode了配置cd /usr/local/kafkamanager-3.0.0.5/confvim application.conf#修改zkhostscmak.zkhosts="192.168.25.132:2181"#保存退出,启动zookeeper和kafka,然

2020-09-14 21:20:20 1971

原创 vue教程3:vue常用指令

v-text作用:渲染文本到标签上,跟JQuery的text()方法类似直接上例子:<script> var app = new Vue({ el: "#app", data:{ name:"张三先生", age: 30 } });</script><div id="app"> <h4>{{name}}</h4>

2020-09-13 15:06:39 1117

原创 vue教程2:vue基础

el挂载点el用来设置vue实例作用范围的元素通常使用id选择器,例如el: “#app”。另外,还支持class、css等其他选择器,不过一般建议使用id选择器不能挂载到html、body标签上data数据对象vue中用到的数据定义在data对象中(json对象)data支持嵌入字符串、json子对象、数组<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><scrip

2020-09-13 10:53:23 962

原创 vue教程1:第一个页面HelloVue快速搭建

环境准备VSCode开发工具新建第一个页面打开VSCode,点击File -> New File新建了个空白文件,保存为HelloVue.html然后在刚才新建的页面,先输入感叹号"!",再按下TAB键,就会自动生成HTML代码编写HTML代码<div id="app"> {{ message }}</div>编写JS代码<!-- 开发环境版本,包含了有帮助的命令行警告 --><script src="https://cd

2020-09-13 09:21:38 1778

jodconverter-2.2.2.zip

jodconverter-2.2.2.zip

2021-01-26

jdk1.8中文版文档

JDK1.8中文版本

2020-10-21

spring boot操作kafka例子

spring boot操作kafka例子 创建主题、生产者、消费者 发送消息、消费消息 application.properties配置

2020-10-21

空空如也

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

TA关注的人

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