- 博客(60)
- 收藏
- 关注
原创 centos7安装maven(亲测有效)
0、cd /usr/local 创建目录 mavenmkdirmaven1、安装wget命令如果需要通过使用wget命令,直接通过网络下载maven安装包时,需要在linux系统中安装wget命令。yum -y install wget2、下载maven安装包wgethttp://mirror.bit.edu.cn/apache/maven/maven-3/3.5.2/...
2020-08-16 22:38:21 1891
原创 centos7安装jdk1.8(亲测有效)
1、下载jdk-8u221-linux-x64.rpm下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下载JDK8登陆账号见博客:jdk1.8下载账号分享2、创建目录cd /usr/localmkdir dockercd dockerm...
2020-01-07 10:25:25 438
原创 Docker持续集成(六)jenkins安装
一、背景Jenkins安装方式有多种:1)安装tomcat,下载war包放入tomcat容器中,启动即可2)linux下载rpm包、直接安装(本文采用)3) docker镜像方式安装二、linux下安装jenkins1、安装jdk见博文:centos7安装jdk82、安装jenkins1) 下载jenkinswgethttps://prodjenkins...
2019-12-13 14:13:05 198
原创 Docker持续集成(八)jenkins之自动化打包、部署
上文我们讲述了jenkins插件安装及配置Docker持续集成(七)jenkins之插件安装及配置 本文我们讲解自动化打包、部署一、创建任务二、源码管理,选择Git三、Build注意点:1) 我配置的git路径下面是多个项目,这里配置的jack-discovery-eureka工程,所以Root Pom配置的是"jack-discovery-eureka...
2019-12-13 14:12:30 306
原创 Docker持续集成(七)jenkins之插件安装及配置
上文我们讲述了jenkins的安装Docker持续集成(六)jenkins安装本文我们讲解jenkins插件的安装及配置一、安装maven、git相关插件1.1、点击左侧的 系统管理/Manage Jenkins,然后再点击 管理插件/Manage Plugins1.2、 安装maven插件 选择Installed选项卡,搜索maven,查看是否安装 maven i...
2019-12-13 14:12:27 642
原创 Docker持续集成(五)持续集成之gogs
一、下载镜像docker pull gogs/gogs二、创建容器docker run ‐d ‐‐name=gogs ‐p 10022:22 ‐p 3000:3000--privileged ‐v /usr/local/docker/gogs/data:/data gogs/gogs三、配置1、在地址栏输入http://192.168.1.8:3000会进入首次运行安...
2019-11-13 10:42:48 167
原创 centos7 常用shell 命令整理
1、if elseif elseif [ $1x == "ab"x ]; then echo "you had enter ab"elif [ $1x == "cd"x ]; then echo "you had enter cd"else echo "you had enter unexpected word"fi注意:1) if 和 [ ] 之间必须...
2019-10-24 10:03:30 727
原创 Docker持续集成(四)DockerMaven插件
微服务部署有两种方法:一、手动部署:首先基于源码打包生成jar包(或war包),将jar包(或war包)上传至虚拟机并拷贝至JDK容器。二、通过Maven插件自动部署(重点讲解)Maven插件自动部署步骤:1、修改宿主机的docker配置,让其可以远程访问vi /lib/systemd/system/docker.service其中ExecStart=后添加配置‐H ...
2019-10-24 10:02:05 262
原创 Docker持续集成(三)jdk8镜像上传私有仓库
1、标记此镜像为私有仓库的镜像docker tag jdk1.8 192.168.1.8:5000/jdk1.82、再次启动私服容器docker start registry3、上传标记的镜像docker push 192.168.1.8:5000/jdk1.8...
2019-10-18 15:46:17 269
原创 Docker持续集成(二)搭建私有仓库
1、拉取镜像docker pull registry2、启动镜像docker run -di --name registry -p 5000:5000 docker.io/registry3、查看是否成功打开浏览器 输入地址http://192.168.1.8:5000/v2/_catalog看到 {"repositories":[]} 表示私有仓库搭建成功并且内容为空。...
2019-10-11 11:43:12 206
原创 Docker持续集成(一)Dockerfile创建 jdk8镜像
1、创建jdk目录mkdir –p /usr/local/dockerjdk82、下载jdk安装包下载jdk-8u171-linux-x64.tar.gz并上传到服务器(虚拟机)中的/usr/local/dockerjdk8目录3、创建文件Dockerfile vi Dockerfile#依赖镜像名称和IDFROM centos:7#指定镜像创建者信息MAINT...
2019-10-09 09:23:47 410
原创 contos 7 开放端口常用命令
1、查看开放端口、firewall-cmd --list-ports2、开放端口firewall-cmd --zone=public --add-port=6379/tcp --permanent3、移除端口firewall-cmd --zone=public --remove-port=3000/tcp --permanent4、重启防火墙(不管是添加、删除端...
2019-10-04 15:04:00 191
转载 搞懂限流算法这一篇就够了
TL;DR(too long don’t read)限流算法:计数器、滑动窗口、漏桶、令牌桶。限流方案:Guava的RateLimiter、Alibaba Sentinel大家都知道,对于高并发的业务场景,我们为了保障服务的稳定,经常会祭出三大利器:缓存、熔断降级和服务限流。服务限流作为一个核心的自保护机制,能够在非常高并发的情况下,其他机制都无法保障降级的情况下,保护系统不崩溃,以免产...
2019-08-16 10:07:55 201
转载 11张图步步演进:你一定能看懂的【分布式系统】容错架构设计!
1、TB级数据放在一台机器上:难啊!咱们就用分布式存储系统举例,来聊一下容错架构的设计。首先,我们来瞧瞧,到底啥是分布式存储系统呢?其实特别的简单,咱们就用数据库里的一张表来举例。比如你手头有个数据库,数据库里有一张特别大的表,里面有几十亿,甚至上百亿的数据。更进一步说,假设这一张表的数据量多达几十个TB,甚至上百个TB,这时你觉得咋样?当然是内心感到恐慌和无助了,因为如果你用MySQ...
2019-08-16 10:04:02 138
转载 拜托!面试请不要再问我Spring Cloud底层原理
原文:https://blog.csdn.net/forezp/article/details/83999882本文为转载文章,作者:中华石杉,十余年BAT架构经验,倾囊相授。作者微信公众号:石杉的架构笔记(ID:shishan100)概述毫无疑问,Spring Cloud是目前微服务架构领域的翘楚...
2019-08-16 09:52:00 123
原创 Springboot启动原理解析
SpringBoot原理图@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}从上面代码可以看出,Annotati...
2019-08-16 09:36:52 115
原创 idea中git远程版本回退
1. 在“Show History”中找到当前版本(取名:newVersion)和想要回退到的版本(oldVersion) 2. 选择newVersion和oldVersion点击“Copy Revis...
2019-08-13 09:43:54 321
原创 Centos7 安装/升级gitlab版本及拉取代码
一、安装步骤0、git --version1、yum update2、wget https://github.com/git/git/archive/v2.3.0.zip 3、yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker4、unzi...
2019-05-29 10:02:46 975
原创 Docker下gitlab及内存优化
1、安装及配置# gitlab-ce为稳定版本,后面不填写版本则默认pull最新latest版本$ docker pull gitlab/gitlab-ce2.运行gitlab镜像$ docker run -d -p 443:443 -p 80:80 -p 222:22 --privileged=true --name gitlab --restart always -v /...
2019-05-18 13:11:07 4080
原创 jdk 1.8下载 (登陆账号)分享
目前在官网下载低于jdk1.8的java jdk的时候需要登陆,这边分享一个账号,方便下载2696671285@qq.com密码:Oracle123
2019-05-05 22:18:21 2541 7
原创 分布式事务解决方案之二(可靠消息服务+最终一致性)
4|0最终一致性分布式事务如何保障实际生产中 99.99% 高可用?上面咱们聊了聊 分布式事务解决方案之一(TCC),对于常见的微服务系统,大部分接口调用是同步的,也就是一个服务直接调用另外一个服务的接口。这个时候,用 TCC 分布式事务方案来保证各个接口的调用,要么一起成功,要么一起回滚,是比较合适的。但是在实际系统的开发过程中,可能服务间的调用是异步的。也就是说,一个服务发送一个消...
2019-03-02 21:24:24 836
原创 分布式事务解决方案之一(TCC)
之前网上看到很多写分布式事务的文章,不过大多都是将分布式事务各种技术方案简单介绍一下。很多朋友看了还是不知道分布式事务到底怎么回事,在项目里到底如何使用。所以这篇文章,就用大白话+手工绘图,并结合一个电商系统的案例实践,来给大家讲清楚到底什么是 TCC 分布式事务。1|0业务场景介绍咱们先来看看业务场景,假设你现在有一个电商系统,里面有一个支付订单的场景。那对一个订单支付...
2019-03-02 21:24:18 762
原创 Java集合源码分析之Iterable概述
前言当我们想要遍历集合时,Java为我们提供了多种选择,通常有以下三种写法:写法1:for循环for (int i = 0, len = strings.size(); i < len; i++) { System.out.println(strings.get(i));}写法2:foreach循环for (String var : strings) { ...
2019-01-12 17:48:35 182
原创 Java集合源码分析之Set概述
这篇文章是本系列的完结了,也会是读起来最轻松的文章了。因为这里只有一个概念,那就是Set是什么,其余的则是一些感触与总结。Set概述因为Set的结构及实现都和Map保持高度一致,这里将不再对其进行分析了,感兴趣的朋友可以自行查看源码。但我们还是需要知道什么是Set,Set是一个包含不可重元素的集合,也就是所有的元素都是唯一的。还是看下文档说明吧:A collection that c...
2019-01-12 17:48:25 187
原创 Java集合源码分析之Map(五):HashMap
HashMap可能是我们使用最多的键值对型的集合类了,它的底层基于哈希表,采用数组存储数据,使用链表来解决哈希碰撞。在JDK1.8中还引入了红黑树来解决链表长度过长导致的查询速度下降问题。以下是文档对它的介绍中我们重点关注的部分:Hash table based implementation of the Map interface. This implementation provides...
2019-01-12 17:48:16 135
原创 Java集合源码分析之Map(四):TreeMap
TreeMap是红黑树的java实现,对红黑树不太了解的可以查阅这篇文章Java集合源码分析之基础(六):红黑树(RB Tree)。红黑树能保证增、删、查等基本操作的时间复杂度为O(lgN)。本文将对TreeMap的源码进行分析。Entry定义static final class Entry<K,V> implements Map.Entry<K,V> { ...
2019-01-12 17:48:07 153
原创 Java集合源码分析之Map(二):接口SortedMap
由于乱序的数据对查找不利,例如无法使用二分法等降低算法的时间复杂度,如果数据在插入时就排好顺序,查找的性能就会提升很多。SortedMap接口就是为这种有序数据服务的。SortedMap接口需要数据的key支持Comparable,或者可以被指定的Comparator接受。SortedMap主要提供了以下方法:// 返回排序数据所用的ComparatorComparator<? ...
2019-01-12 17:47:56 180
原创 Java集合源码分析之Map(一):超级接口Map
数组与链表在处理数据时各有优缺点,数组查询速度很快而插入很慢,链表在插入时表现优秀但查询无力。哈希表则整合了数组与链表的优点,能在插入和查找等方面都有不错的速度。我们之后要分析的HashMap就是基于哈希表实现的,不过在JDK1.8中还引入了红黑树,其性能进一步提升了。本文主要分析JDK中关于Map的定义。接口MapMap的定义为:An object that maps keys t...
2019-01-12 17:47:35 135
原创 Java集合源码分析之LinkedList
分析完了List与Queue之后,终于可以看看LinkedList的实现了。LinkedList弥补了ArrayList增删较慢的问题,但在查找方面又逊色于ArrayList,所以在使用时需要根据场景灵活选择。对于这两个频繁使用的集合类,掌握它们的源码并正确使用,可以让我们的代码更高效。LinkedList既实现了List,又实现了Deque,前者使它能够像使用ArrayList一样使用,后者...
2019-01-11 17:53:55 137
原创 Java集合源码分析之Queue(三):ArrayDeque
在介绍了Queue与Deque概念之后,这是要进行分析的第一个实现类。ArrayDeque可能大家用的都比较少,但其实现里有许多亮点还是值得我们关注的。Deque的定义为double ended queue,也就是允许在两侧进行插入和删除等操作的队列。这个定义看起来很简单,那么我们怎么实现它呢?我们最容易想到的就是使用双向链表。我们在前文介绍过单链表,其每个数据单元都包含一个数据元素和一个指向...
2019-01-11 17:53:47 243
原创 Java集合源码分析之Queue(二):接口Deque
Deque全称为double ended queue,即双向队列,它允许在两侧插入或删除元素,同时也建议我们不要向其中插入null值。除此之外,其余特性则和父级Queue类似。Deque大多数情况下不会限制元素的数量,但这不是必须的。Deque中定义的方法主要分为四部分,第一部分就如Deque定义所言,提供两侧插入或删除的方法。第二部分是继承自Queue的实现。第三部分表示如果要基于此实现一个...
2019-01-11 17:53:37 125
原创 Java集合源码分析之Queue(一):超级接口Queue
在日常生活中,排队几乎随处可见,上地铁要排队,买火车票要排队,就连出门吃个大餐,也要排队。。。之前研究的ArrayList就像是一个缺乏管理的排队系统。大家虽然会排队,但一会走个人,大家向前挪一挪,一会插个人,大家向后挪一挪,碰到这样的队伍,一定让人痛苦万分吧?今天要介绍的Queue就不同了,它是一个严格的排队系统。就像许多火车站排队窗口在两侧加了护栏一样,大家只能从队尾进来,从队首离开,我们...
2019-01-11 17:53:28 138
原创 Java集合源码分析之List(二):ArrayList
做了这么多准备,终于到了ArrayList了,ArrayList是我们使用最为频繁的集合类了,我们先看看文档是如何介绍它的:Resizable-array implementation of the List interface. Implements all optional list operations, and permits all elements, including null...
2019-01-11 17:53:18 178
原创 Java集合源码分析之List(一):超级接口List
List是Collection三大直接子接口之一,其中的数据可以通过位置检索,用户可以在指定位置插入数据。List的数据可以为空,可以重复。以下是其文档注释,只看前两段:An ordered collection (also known as a sequence). The user of this interface has precise control over where in t...
2019-01-11 17:53:06 403
原创 Java集合源码分析之超级接口:Collection
CollectionCollection是List、Queue和Set的超集,它直接继承于Iterable,也就是所有的Collection集合类都支持for-each循环。除此之外,Collection也是面向接口编程的典范,通过它可以在多种实现类间转换,这也是面向对象编程的魅力之一。方法定义在阅读源码前,我们可以先自行想象一下,如果我们想封装下数组或链表以方便操作,我们需要封装哪些...
2019-01-11 17:52:53 177
原创 Java集合源码分析之基础(六):红黑树(RB Tree)
红黑树和AVL树的思想是类似的,都是在插入过程中对二叉排序树进行调整,从而提升性能,它的增删改查均可以在O(lg n)内完成。本文会从定义到实现一棵红黑树展开,还会简单介绍其与AVL树的异同。定义红黑树是一棵二叉排序树。且满足以下特点:每个节点或者是黑色,或者是红色。 根节点是黑色。 每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!...
2019-01-07 22:10:28 154
原创 Java集合源码分析之基础(五):平衡二叉树(AVL Tree)
二叉排序树很好的平衡了插入与查找的效率,但不平衡的二叉排序树效率大打折扣。今天介绍的AVL树就是一种解决此问题的方案。定义平衡二叉树(Self-Balancing Binary Search Tree 或Height-Balanced Binary Search Tree),是一种二叉排序树,其中每一个节点的左子树和右子树的高度差至多等于1 。它是一种高度平衡的二叉排序树。意思是说,要么它...
2019-01-07 22:10:17 138
原创 Java集合源码分析之基础(四):二叉排序树
解决查询速度慢的方案除了哈希表外,还可以使用二叉排序树。我们知道,查询慢主要是因为不知道元素的位置,使用hash函数映射虽然解决了问题,但其并不稳定,当出现大量的哈希碰撞后其表现更像一个链表,查询速度大大降低。二叉排序树的方案则是使元素有序,这样便可以使用二分法进行查找了,虽然效率相比hash函数低一些,但可以通过AVL树、红黑树等增加稳定性。HashMap在JDK1.8的实现中,就结合了...
2019-01-07 22:10:07 154
原创 Java集合源码分析之基础(三):树与二叉树
数组和链表都是用来解决一对一问题的,而一对多问题则需要树来解决。这里,我们重点关注二叉排序树,所以只会介绍一些必需了解的概念,关于树的更多知识,大家可以查看相关书籍进行系统的学习。树的定义树(Tree)是n(n≥0) 个结点的有限集。n=0 时称为空树。在任意一棵非空树中:1. 有且仅有一个特定的称为根(Root)的结点;2. 当n>1 时,其余结点可分为m (m>0) 个...
2019-01-07 22:09:53 119
原创 Java集合源码分析之基础(二):哈希表
无论是数组还是链表,其对数据的查询表现都比较无力,要想知道一个元素是否在数组或链表中,只能从前向后挨个对比。出现这个问题的根源在于,我们没有办法直接根据一个元素找到它存储的位置,那有没有办法消除这个对比的过程呢?哈希表就是解决查询问题的一种方案。在后续将会分析的二叉排序树中,还会将数据排序以进行二分查找,将时间复杂度从O(n)降低到O(lg n)。哈希表与Hash函数通俗来讲,哈希表就...
2019-01-07 10:04:50 298 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人