自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 收藏
  • 关注

原创 Elastic-Job-Lite

1.1:前言当我们开发定时任务一般都是使用 quartz 或者 spring-task,无论使用quartz 还是 spring-task ,都会遇到以下两个痛点:不敢轻易跟着应用服务器多节点部署,因为可能会重复多次执行而引发系统逻辑错误 quartz 集群仅仅只是用来做 HA,节点数量的增加并不能给我们每次执行效率带来提升,不能实现水平扩展但是:elastic-job 分布式任务调度...

2021-01-28 16:47:56 1072

转载 2020-10-27Python变量于内置数据类型

变量于内置数据类型1.1 变量(Variable)基本概念变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组成,且不能用数字开头。在Python中,变量就是变量,它没有类型,我们所说的“类型”是变量所指的内存中对象的类型等号(=)用来给变量赋值等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值#!/usr/bin/pytho

2020-10-28 12:47:47 387

原创 2020-10-26Python简明教程

Python简明教程1:Python 安装Unix & Linux 平台安装 Python3:以下为在 Unix & Linux 平台上安装 Python 的简单步骤:打开WEB浏览器访问https://www.python.org/downloads/source/ 选择适用于 Unix/Linux 的源码压缩包。 下载及解压压缩包Python-3.x.x.tgz,3.x.x为你下载的对应版本号。 如果你需要自定义一些选项修改Modules/Setup以P...

2020-10-26 12:17:30 452

转载 2020-10-21Activiti会签以及会签驳回

工作流会签NONE:非会签 PARALLEL:会签模式,并行触发,同时生成多个任务,即普通会签 SEQUENTIAL:会签模式,顺序触发,依次生成任务,即顺序会签如下图选择Sequential(串行)或者Parallel(并行):Sequential(串行)或者Parallel(并行): ${assigneeList} 传入的会签人的ID集合会根据 “变量(Multi-instance)” 设置的Key值到 “集合(Multi-instance)” 的集合中通过 “任务” 的表达式获取

2020-10-21 17:04:16 5421

转载 2020-10-16Go语言异常和异常处理

异常和错误处理在保证程序的健壮性方面起到了至关重要的作用,C++、Java、Python中的异常和错误处理都是比较类似的,可以用try-catch逻辑操作,但是Go中的异常处理却有别与以上三种语言。异常处理在异常处理方面,Go语言不像其他语言,使用try..catch.. finall..., 而使用defer, panic, recover,将异常和控制流程区分开。即通过panic抛出异常,然后在defer中,通过recover捕获这个异常,最后处理。先来看一个案例:func main(

2020-10-19 19:43:39 292

转载 2020-10-19Go语言中文件和目录操作

文件的读取通过os.Open方法读取文件func main() { // 读取文件 方法1 file, err := os.Open("./main/test.txt") // 关闭文件流 defer file.Close(); if err != nil { fmt.Println("打开文件出错") } // 读取文件里面的内容 var tempSlice = make([]byte, 1024) var strSlice []byte for { n, err :

2020-10-19 18:28:03 227

转载 2020-10-19Go语言反射

Go语言基础之反射反射有时我们需要写一个函数,这个函数有能力统一处理各种值类型,而这些类型可能无法共享同一个接口,也可能布局未知,也有可能这个类型在我们设计函数时不存在,这个时候我们就可以用到反射。空接口可以存储任意类型的变量,那我们如何知道这个空接口保存的类型是什么?值是什么?可以使用类型断言 也可以使用反射实现,也就是在程序运行时动态的获取一个变量的类型信息和值信息把结构体序列化成 json 字符串,自定义结构体 Tab 标签的时候就用到了反射后面说的ORM框架,底层就是用到了反

2020-10-19 18:19:47 254

转载 2020-10-19Go语言goroutine和channel

Golang 协程 goroutine 介绍多线程知识点了解进程进程是(Process)就是程序在操作系统的一次执行过程。是系统进行资源分配和调度的基本单位,进程是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间。一个进程至少有五种状态:初始态,执行态,等待状态,就绪状态,终止状态。线程线程是进程的一个执行路径,一个进程中至少有一个线程,它是比进程更小的能独立运行的基本单位,因为真正占用CPU运行的是线程,所以也说线程是CPU分配的基本单位。

2020-10-19 12:04:11 289

转载 2020-10-18Go语言接口

接口定义在Golang中接口(interface)是一种类型,一种抽象的类型。接口(interface)是一组函数method的集合,Golang中的接口不能包含任何变量。任何其他类型只要实现了这些method方法就是实现了这个接口。在Golang中接口的所有方法都没有方法体,接口定义了一个对象的行为规范,只定义规范不实现。接口体现了程序设计的多态和高内聚低耦合的思想。Golang中每个接口由数个方法组成,接口的定义格式如下:type 接口名 interface { 方法名1 (参

2020-10-18 21:58:20 488

转载 2020-10-16Go语言结构体(2)

结构体嵌套当结构体中的属性比较复杂和繁多时,我们可以通过结构体嵌套的方式进行梳理。示例:// 用户结构体type User struct { userName string password string sex string age int address Address // User结构体嵌套Address结构体}// 收货地址结构体type Address struct { name string phone string city string}fun

2020-10-16 16:49:48 273

转载 2020-10-16Go语言结构体(1)

Golang 结构体结构体Golang 中没有"类"的概念,Golang中的结构体和Java语言中的类有点相似,Golang结构体具有更高的扩展性和灵活性Golang 中的基本数据类型可以装饰一些事物的基本属性,但是当我们想表达一个事物的全部或部分属性时,这时候单一基本属性就无法满足需求了,所有Golang 提供了一种自定义数据类型,可以封装多个基本数据类型,这种数据类型就叫结构体,英文struct。type关键字Golang中通过type关键词定义了一个结构体,需要注意的是,数组和结.

2020-10-16 15:51:10 308

转载 2020-10-16Go语言指针

Golang 指针我们知道变量是用来存储数据的,变量的本质是给存储数据的内存地址起了一个好记的别名。比如我们定义了一个变量a:=10,这个时候可以直接通过a这个变量来读取内存中保存的10这个值。在计算机底层a这个变量其实对应了一个内存地址。指针也是一个变量,但它是一种特殊的变量,它存储的数据不是一个普通的值,而是另一个变量的内存地址。要搞明白Go语言中的指针需要先知道三个概念指针地址 指针类型 指针取值Go语言中的指针操作非常简单,我们只需要记住两个符号:&:取地址,*:根

2020-10-16 12:06:55 333

转载 2020-10-16Go语言日期函数

Time 包时间和日期是我们变成中经常使用到的,在golang中time包提供了时间的显示和测量相关函数方法格式化时间时间类型有一个自带的方法 Format 进行格式化需要注意的是 Golang中格式化时间不是长久的 Y-m-d H:M:S而是使用 Golang 的诞生时间 2006年1月2日 15点04分 (记忆口诀 2006 1 2 3 4 )获取当前时间戳时间戳是自1070年1月1日(08:00:00GMT)至当前时间的总毫秒数。它也被称为Unix时间戳 //获取当前

2020-10-16 10:54:28 366

转载 2020-10-16Go语言map介绍

map介绍map 是一种无序的基于key-value的数据结构,Golan中的map是引用类型,必须初始化才能使用。定义语法如下: map[key数据类型] value数据类型map类型的默认初始化值是 nil ,需要使用make()函数来分配内存初始化Mappackage mainimport "fmt"func main() { //第一种方式 var map1 = make(map[string]string) map1["name"] = "weizho

2020-10-16 10:06:30 237

转载 2020-10-15Go语言切片

为什么使用切片Go 语言切片是对数组的抽象。Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。声明切片类型的基本语法如下:var 切片名称 [] 元素类型示例:package mainimport "fmt"func main() { //声明切片只需要将数组的长度去掉即可 var slice = []int{1,2,3

2020-10-15 18:43:04 252

转载 2020-10-15Go语言数组

数组是具有相同唯一类型的一组已编号,且长度固定的数据项序列。这种类型可以使任意的原始类型例如 int float string以及自定义类型等等。Golang中数组的另一个特点是占用内存的连续性,也就是说数组中的元素是被分配进一个连续的内存地址中,因此通过索引获取数组元素的速度会非常快。和数组相对应的类型是Slice切片,Slice是可以增长和收缩的动态序列,功能也更加灵活。数组定义var 数组变量名 [元素数量] T示例package mainimport "fmt"fun

2020-10-15 17:01:48 215

转载 2020-10-15Go语言之函数

函数定义:函数式组织好的、可重复使用、用于执行指定任务的基本代码块Go语言支持:函数、匿名函数和闭包Go语言中定义函数使用 func 关键字,具体格式如下func 函数名(参数)(返回值类型){ 函数体}函数名:由字母、数字、下划线组成,但函数名第一个字母不能是数字。同一个包内,函数名不能重复package mainimport "fmt"func main() { fmt.Printf("1+2 = %v \n",sum(1,2)) fmt.Prin..

2020-10-15 12:19:15 226

转载 2020-10-15Go语言的流程控制

Go语言流程控制流程控制是每种编程语言控制逻辑走向和执行次序的重要部分Go语言中最常用的流程控制有 if 和 for ,而 switch 和 goto 主要是为了简化代码,降低重复的作用条件语句:if else条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为true来决定是否执行指定语句推荐 if 后面不适用括号,当前也可以使用括号括起来 案例:package mainimport "fmt"func main() { num := 10 if num .

2020-10-15 11:03:00 230

转载 2020-10-14Go语言基本类型:整型、浮点型、字符串

之前介绍过Golang数据类型主要分为基本类型和复杂类型,这里我们详细介绍常用的几个基本数据类型整型整型的类型有很多中,包括 int8,int16,int32,int64。我们可以根据具体的情况来进行定义可以通过 unsafe.Sizeof 查看不同长度的整型,在内存里面的存储空间//Golang 基本类型之整型package mainimport ( "fmt" "unsafe")func main() { var num1 int8 = 12 fmt.Prin

2020-10-14 18:55:06 283

转载 2020-10-14Go语言数据类型和变量常量

Go语言数据类型在Go编程语言中,数据类型用于声明函数和变量数据类型的出现就是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用有限的的计算机内存数据类型 布尔类型 布尔类型的值只可以是常亮true或false.例子:var b bool = true 数字类型 整型int和浮点型float32、float64,Go支持整型和浮点型,并且支持复数 字符串类型 字符串就是一串固定长度的字符连接起来的字符序..

2020-10-14 16:47:05 247

转载 2020-10-14Go语言发展简史

开发文档https://studygolang.com/pkgdocGo语言核心开发团队Ken Thompson (肯·汤普森) :1983年图灵奖获得者,Unix原创者之一,C语言主要发明人 Rob Pike (罗布·派克) : 贝尔实验室Unix、Plan 9操作系统成员,创出广泛使用的 UTF-8 编码 Robert Griesemer :曾协助制作Java HotSpot编译器,和Chrome浏览器的JavaScript引擎V8Google为什么创建Go计算机硬件技术...

2020-10-14 13:58:12 624

原创 mybatis-plus雪花算法实现

/** * 基于Twitter的Snowflake算法实现分布式高效有序ID生产黑科技(sequence)——升级版Snowflake * * <br> * SnowFlake的结构如下(每部分用-分开):<br> * <br> * 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000 <br> * <br> * 1位标识,.

2020-09-07 18:06:53 1137

原创 一致性哈希算法

目的:通过一致性哈希将数据库待处理的数据,通过主键,分配到对应的节点处理public class ConsistentHashCode { /** * 真实节点数 */ private Integer realNodesTotal; /** * 虚拟节点数量,一个真实节点对应500个虚拟节点 */ privat...

2020-04-28 00:01:00 275

原创 GoF 的 23 种设计模式的分类和功能

1、根据目的来分根据模式是用来完成什么工作的来划分,这种方式可分为创建型模式、结构型模式和行为型模式3种。创建型模式:用于描述怎样创建对象,他的主要特点是 “将对象的创建于使用分离”,GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等5种模式。结构型模式:用于描述如何将类或对象按某种布局组成更大的结构,GoF 中提供了代理、适配器、桥接、装饰、外观、享元、组合等 7 种结...

2020-04-20 01:31:47 319

转载 指导原则-六大规则

来自:后端知识点梳理出处:博客园左潇龙的技术博客–原文地址:http://www.cnblogs.com/zuoxiaolong什么是设计模式​​设计模式(Designpattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。为何学习设计模式​ 设计模式可以帮助我们改善系统的设计,增强系统的健壮性、可扩展性,为以后铺平道路。有的时候,一个...

2020-04-14 05:06:31 969

原创 Quartz-ClusterManager集群管理

转载请注明出处:https://www.cnblogs.com/Dorae/p/9357180.html本文出自:后端知识点梳理-定时任务Quartz篇章ClusterManager集群管理线程每个服务器会定时(org.quartz.jobStore.clusterCheckinInterval这个时间)更新SCHEDULER_STATE表的LAST_CHECKIN_TIME,若这...

2020-04-12 23:44:17 1509

原创 Quartz-MisFireHandler执行逻辑

转载请注明出处:https://www.cnblogs.com/Dorae/p/9357180.html本文出自:后端知识点梳理-定时任务Quartz篇章MisfireHandler线程Quartz任务错过执行时间的处理机制。下面这些原因可能造成 misfired job:系统因为某些原因被重启。在系统关闭到重新启动之间的一段时间里,可能有些任务会被 misfire; T...

2020-04-12 23:39:00 2021

原创 Quartz-SchedulerThread调度逻辑

转载请注明出处:https://www.cnblogs.com/Dorae/p/9357180.html本文出自:后端知识点梳理-定时任务Quartz篇章先看一遍整理过的时序图,有个基本印象:QuartzSchedulerThread线程是实际执行任务调度的线程,其中主要代码如下。public class QuartzSchedulerThread extends ...

2020-04-12 23:29:34 742 1

原创 Quartz-start启动流程

转载请注明出处:https://www.cnblogs.com/Dorae/p/9357180.html本文出自:后端知识点梳理-定时任务Quartz篇章Quartz 启动流程解析若Quartz是配置在spring中,当服务器启动时,就会装载相关的bean。SchedulerFactoryBean实现了InitializingBean接口,因此在初始化Bean的时候会执行af...

2020-04-12 17:56:37 1450

原创 Quartz基本原理

转载请注明出处:https://www.cnblogs.com/Dorae/p/9357180.html1. 核心元素Quartz核心要素有Scheduler、Trigger、Job、JobDetail,其中trigger和job、jobDetail为元数据,而Scheduler为实际进行调度的控制器。TriggerTrigger用于定义调度任务的时间规则,在Quartz中...

2020-04-12 14:10:11 551

原创 ​​​​​​​1.1、Quartz入门介绍

转载请标明出处:https://blog.csdn.net/cms18374672699/article/details/87906910

2020-04-11 23:26:38 291

原创 散列表(Hash Table)

散列表(Hash table,也叫哈希表)是一种查找算法,与链表、树等算法不同的是,散列表算法 在查找时不需要进行一系列和关键字(关键字是数据元素中某个数据项的值,用以标识一个数据 元素)的比较操作。 散列表算法希望能尽量做到不经过任何比较,通过一次存取就能得到所查找的数据元素,因而必 须要在数据元素的存储位置和它的关键字(可用 key 表示)之间建立一个确定的对应关系,使每个 关键字和散列表...

2020-04-07 00:39:44 283

原创 链表(Link)

链表是一种数据结构,和数组同级。比如,Java 中我们使用的 ArrayList,其实现原理是数组。而 LinkedList 的实现原理就是链表了。链表在进行循环遍历时效率不高,但是插入和删除时优势明显。...

2020-04-07 00:36:47 532

原创 队列(queue)

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的 后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为 队尾,进行删除操作的端称为队头。...

2020-04-07 00:34:29 277

原创 RabbitMQ:消息确保机制下(消费端)

和生产者的消息确认机制不同,因为消息接收本来就是在监听消息,符合条件的消息就会消费下来。所以,消息接收的确认机制主要存在三种模式:①自动确认, 这也是默认的消息确认情况。AcknowledgeMode.NONERabbitMQ成功将消息发出(即将消息成功写入TCP Socket)中立即认为本次投递已经被正确处理,不管消费者端是否成功处理本次投递。所以这种情况如果消费端消费逻辑抛出异常...

2020-04-07 00:07:56 381

原创 RabbitMQ:消息确认机制上(生产端)

1、application.yml文件上,加上消息确认的配置项server: port: 8600spring: application: name: rabbitmq-provider rabbitmq: host: 192.168.189.131 port: 5673 username: admin password: admin...

2020-04-07 00:01:30 392

原创 数据实时分析:日志监控告警系统(一)

1、背景知识一个优秀的软件需要具备的特点:1: 软件的实用性软件的诞生就是为了解决特定的问题,比如现在流行的 MVC 框架,早期没有 MVC 开发的时候,耦合度很大,后期维护更新成本搞,难度大,这样 MVC 框架就孕育而生;比如 OA 系统为了解决公司协同的问题 ;比如 微信 QQ 等,即时聊天 为了解决人们远程沟通的问题。2:软件的稳定性软件的实用性问题解决后,急需要解决的...

2020-04-06 23:59:41 2891

原创 RabbitMq三种主流的Exchange交换机

首先:本文基于 Spring2.1.12 + Rabbit 整合的代码rabbit:pom <!-- rabbitmq --> <dependency> <groupId>org.springframework.boot</groupId> <artifac...

2020-04-06 17:48:09 323

原创 docker-compose搭建RabbitMQ

version: '2'services: rabbitmq: hostname: myrabbitmq image: rabbitmq:management ports: - 15673:15672 - 5673:5672 restart: always volumes: - ./data:/var/lib/ra...

2020-04-06 01:31:53 274

原创 RabbitMQ 简介

1、RabbitMQ是什么RabbitMQ 是一个开源的消息代理和队列服务器,用来通过普通协议在不同应用之间共享数据。RabbitMQ是基于Erlang雨来编写的,并且基于AMQP协议。2、为什么使用RabbitMQ开源、性能优秀、稳定性保障 提供可靠性消息投递模式(confirm)、返回模式(return) 于SpringAMQP完美的整合、API丰富 集群模式丰富...

2020-04-06 01:26:24 235

空空如也

空空如也

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

TA关注的人

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