自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 prometheus HelloWorld

Prometheus简介 Prometheus是一套开源的系统监控报警框架。Prometheus作为新一代的云原生监控系统,相比传统监控监控系统(Nagios或者Zabbix)拥有如下优点。 易管理性 Prometheus: Prometheus核心部分只有一个单独的二进制文件,可直接在本地工作,...

2020-01-17 16:35:53

阅读数 297

评论数 0

原创 Scala中的分支和循环

分支 Scala 通过if else 语法实现程序分支示例如下: object IfElseDemo01 { def main(args: Array[String]): Unit = { testif } def testif(): Unit ={ var age =...

2019-12-29 21:35:57

阅读数 108

评论数 0

原创 Scala变量类型及类型转换

Scala中的变量类型: 1、Scala中有一个根类Any,它是所有类的父类 2、Scala中一切皆对象,分为AnyVal (值类型)和 AnyRef(引用类型)都是Any的子类 3、Null是Scala的特别类型 只有一个值 null ,他是所有引用类型(AnyRef及其子类)的的子类。 4、N...

2019-12-26 00:40:45

阅读数 117

评论数 0

原创 scala开发工具及入门程序

工具安装: 1、安装 IDEA 2、打开IDEA Ctrl+Shift+A 搜索plugins 3、搜索scala开发插件并安装 4、安装完成重启IDE Scala开发入门 1、新建maven输入groupId 及ArtifactId next 2、选择工程保存位置 next 3、右键...

2019-12-24 22:54:06

阅读数 117

评论数 0

原创 Scala简介及环境安装

Scala简介及环境安装 ##为什么学习scala Spark 新一代内存级大数据计算框架,是大数据的重要内容 Spark 使用Scala编写,为了更好的学习Spark 需要掌握Scala语言 Spark 的兴起带动了Scala的发展 ##scala的特点 Scala是一门多范式编程语言,支...

2019-12-24 22:15:07

阅读数 115

评论数 0

原创 docker镜像推送阿里云

由容器生成镜像文件 将正在运行的容器 fee23161ee91 生成镜像文件。生成后本地多了test/mycentos:1.0.1 镜像 docker@default:~$ docker commit -m="testcreatimagesbak" -a="zxm0...

2019-11-17 18:40:43

阅读数 24

评论数 0

原创 Docker数据卷

什么是docker数据卷 Docker容器产生的数据,如果不通过docker commit生成新的镜像,使数据做为镜像的一部分保存下来,那么当容器删除后,数据也就没有了。为了能保存数据我们必须使用数据卷。数据卷就像是给容器外接了一个硬盘,数据保存在硬盘中,即使容器删除数据也不会丢失。 可以做什么 ...

2019-11-17 16:28:18

阅读数 26

评论数 0

原创 tomcat 配置 cronolog

1、将文件复制到制定目录下,解压文件 tar xf cronolog-1.6.2.tar.gz 2、进入目录 cd cronolog-1.6.2 运行配置 ./configure &>/dev/null 3、执行 make &>/dev/null make instal...

2019-10-23 21:08:10

阅读数 9

评论数 0

原创 Tomcat Session复制配置

Session 共享 Web.xml 增加如下标签 配置 server.xml 问题: 用户登录时报错 SEVERE: Manager [localhost#/menubuilder]: Unable to receive message through TCP ch...

2019-10-23 20:58:46

阅读数 24

评论数 0

原创 gradle与idea的集成使用及项目创建

1、打开IDEA File -new -Project 选择gradle .选择jar工程 下一步 输入groupId 和 artifactId ,下一步,选择 use auto-import 和 local gradle distribution 打开idea file -&...

2019-10-22 11:51:49

阅读数 169

评论数 0

原创 gradle环境安装

1、下载gradle安装包 并解压到 H:\greenpro\gradle-4.5 参考下载地址:https://gradle.org/next-steps/?version=5.6.3&format=all 2、配置环境变量 GRADLE_HOME 为 H:\greenpro\gra...

2019-10-20 23:32:59

阅读数 11

评论数 0

原创 JAVA并发编程(13)-Condition接口

java的基类,Object类提供了 wait 和 notify notifyAll方法。这些方法和Synchronized关键字一起使用可以实现等待/通知木模式。Condition接口也提供了和 wait notify 相似的方法用于和Lock配合实现等待/通知模式。二者比较如下: Condi...

2019-06-02 12:39:54

阅读数 38

评论数 0

原创 JAVA并发编程(12)-读写锁ReentrantReadWriteLock的实现分析

读写所 读写锁分为读锁和写锁两个部分。读的部分是共享的,可以多个线程同时使用。写锁时互斥的。同一时刻只有一个线程可以写。并且写的时候不允许读。 我们知道AQS维护了一个 int类型的同步状态变量state。那如何用一个变量来实现读写的复杂控制呢?使用按位分段保存。一个int类型变量有32位二进制组...

2019-06-02 11:17:44

阅读数 39

评论数 0

原创 JAVA并发编程(11)-JAVA重入锁的实现

重入锁 重入锁就是当线程A已经获取到了锁A,当再次需要获取锁A时,可以正常获取,不会被阻塞。就是一个线程可以多次获取同一个锁。synchronized 锁就是可重入的。java 1.5以后提供了ReentrantLock 实现重入锁功能。ReentrantLock 支持公平锁和非公平锁。 重进入的...

2019-06-02 10:20:18

阅读数 45

评论数 0

原创 JAVA并发编程(10)-队列同步器(AQS)的实现原理

上一篇中,我们说到了AQS封装了一些列的底层操作,包括通过阻塞队列实现阻塞的获取锁、超时获取锁、获取共享锁等。那么AQS是如何实现这些操作的呢? 阻塞队列-实现同步的关键 AQS中维护了FIFO的一个阻塞队列,在属性中保存了队列的head节点和 tail节点引用,如下: 当一个线程获取同步状态失...

2019-06-02 00:23:33

阅读数 49

评论数 0

转载 在docker容器中vi指令找不到

在docker容器中vi指令找不到 在使用docker容器时,有时候里边没有安装vi,敲vi命令时提示说:vi: command not found,这个时候就需要安装vi,可是当你敲apt-get install vi命令时,提示: Reading package lists… Done ...

2019-05-28 19:03:56

阅读数 94

评论数 0

原创 JAVA并发编程(9)-JAVA中的锁及实现方式(AQS)

Lock接口 锁是用来控制多个线程访问共享资源的。在java1.5之前主要依靠synchronized 关键字来实现锁的功能。1.5之后java并发包中引入了Lock接口来实现锁功能。 Lock接口常用方法: void lock() 阻塞式获取锁 获取成功才能返回 void lockI...

2019-05-26 18:44:11

阅读数 43

评论数 0

原创 JAVA并发编程(8)-线程基础看这一篇就够啦

CPU最小的执行单元就是线程 为什么使用多线程? 1)多核心CPU时代单线程浪费cpu,多线程可以充分利用cpu计算能力 2)提高执行效率减少程序的响应时间 线程优先级 可以通过setPriority 来设置优先级 1-10 优先级一次递增。 一般高优先级的线程获得执行的几率比低优先级的...

2019-05-24 13:16:25

阅读数 58

评论数 0

原创 java并发编程(7)-final属性的内存语义

JMM 规定的final属性的重排序规则 1)在构造函数内对一个final属性的写入,与随后把这个执行构造方法构造的对象的引用赋值给一个变量 这两个操作不能重排序。就是说一定是限制性 final属性的写入,然后才能通过引用访问构造(new)的对象。 2)第一次读去一个包含final属性的实例的...

2019-05-24 12:13:56

阅读数 34

评论数 0

原创 并发编程(6)-锁的内存语义及实现

锁的内存语义 锁的释放:JMM会把该线程对应的内地内存中的共享变量刷新到主内存中。 同volatile写 锁的获取:JMM会把该线程对应的本地内存置为无效,从而使得被监视器保护的临界区代码必须从主内存读取共享变量。 同volatile读 锁内存语义的实现 这里以ReentrantLoc...

2019-05-21 23:49:23

阅读数 39

评论数 0

原创 并发编程(5)-volatile内存语义及JMM实现方式

volatile特性 1)可见性 对一个 volatile 变量的读总恩能够看到之前对这个变量的写 2)原子性 对任意单个volatile变量的读写具有原子性,但是对于复合操作 volatile++没有原子性。 疑问: 读为啥能有原子性? 因为缓存一致性协议如果读了一半被修改了,就...

2019-05-21 23:03:24

阅读数 37

评论数 0

原创 java并发编程(4)-指令重排序 以及java如何保证执行结果的正确性

指令成功排序 java 在编译程序以及CPU执行指令时为了提高执行效率,可能会对程序指令进行重排序。其中包括三种情况 1)java编译器在编译过程中,在不改变单线程语义(执行结果)的前提下,会对程序指令进行重排序。比如 程序里写了 int a=1;int b=2; 这两行在编译的过程中,由于改...

2019-05-15 23:23:20

阅读数 78

评论数 0

原创 java并发编程(3)-CPU及JAVA原子操作的实现原

CPU原子操作实现方式 cpu一般用锁总线或锁缓存的方式实现原子操作。 首先每个cpu可以保证从系统中读取或写入一个字节是原子的。当一个cpu访问内存中一个字节时其他cpu不能访问这个字节。P6以及最新的处理器同一个缓存行里16/32/64位的操作是原子的,但是对于跨总线跨缓存行的数据无法保证...

2019-05-14 18:30:22

阅读数 78

评论数 0

原创 java并发编程(2)-volatile作用和实现原理

volatile作用 volatile用于保证量在并发环境中的可见性。它不需要切换线程状态所以一般情况下效率比synchronized要高很多。一般情况下在多核CPU环境中 为了提高计算效率,每个核心都会缓存变量到cpu核心本地的缓存中,cpu 计算过程会只更新本地缓存中的变量的值,待cpu比较...

2019-05-14 09:51:52

阅读数 154

评论数 0

原创 java并发编程(1)

什么是并发编程? 并发编程就是多个线程一起执行某个任务或逻辑。如果把一个线程比作一个工人的话,就是多个工人同时做某项工作。以提高效率。 并发一定快吗? 按照正常工人干活的例子来说,在每个工人效率相同的情况下,多个工人的速度很定大于一个工人的速度。但是在计算机并发处理时并一定比单线程处理快,原因如下...

2019-05-08 18:59:36

阅读数 56

评论数 0

原创 Dockerfile-编译自己的tomcat镜像

docker 体系架构 什么是镜像 文件和元数据的集合,镜像是分层的,不同的image 会共享相同的层,镜像本身是只读的。 Dockerfile dockerfile 是用来构建 docker镜像的构建文件 docker镜像 docker容器 dockerfile 的关系如下: 用docke...

2019-04-22 13:20:39

阅读数 124

评论数 0

原创 docker入门-环境安装及实战

Docker是什么 一种容器技术,基于Go语言实现 目标:“Build,Ship and Run Any App ,Anywhere” 一次封装到处运行 Docker为什么出现 开发与运维的鸿沟 避免由于环境不同而产生的矛盾 减少运维的工作量 Docker解决了什么问题 ...

2019-04-19 16:55:28

阅读数 148

评论数 0

原创 ELK环境安装 windows

1、单节点安装 1)下载并解压 下载并解压 ElasticSearch6.5.1 下载地址; https://www.elastic.co/cn/downloads/past-releases/elasticsearch-6-5-1 2)直接运行 elasticsearch.bat 接口启动(可以...

2019-04-03 15:11:41

阅读数 133

评论数 0

原创 zookeeper集群搭建及基本操作

安装前需要先安装jdk 否则启动会报错 1、下载安装包 移动到制定目录并解压 # tar -zvxf zookeeper-3.4.12.tar.gz 2、解压后 到conf目录下将zoo_sample.cfg 更名为 zoo.cfg,因为zookeeper默认使用zoo.cfg 配置文件 如果没...

2019-04-02 09:24:51

阅读数 50

评论数 0

转载 错误: 编码GBK的不可映射字符 idea

注:本人用方案二中的红色部分解决了问题。 直接将项目改为UTF-8编码,无效! 要通过修改pom.xml文件,告诉maven这个项目使用UTF-8来编译。 方案一: 在pom.xml的/project/build/plugins/下的编译插件声明中加入下面的配置:UTF-8 即: [html] v...

2019-04-01 11:48:54

阅读数 159

评论数 0

原创 MybatisPlugin实现及原理

Plugins 简单理解为拦截器,既然是拦截器说白了一般都是动态代理来实现对目标方法的拦截,在前后做一些操作。 在mybatis将这种东西,称之为plugin,配置在mybatis-config.xml配置文件中,通过 标签配置。在mybatis中,可以被拦截的目标主要是: 1. State...

2019-03-28 12:39:48

阅读数 215

评论数 0

原创 Mybatis关联查询

一对一关联 创建评论表 posts 和 博客表 blog ,一个blog下有多个评论,每条评论都说针对一条博客。所以每一条评论和博客的关系是一对一。每个博客和评论的关系是 一对多,建表语句如下: CREATE TABLE posts ( pid int(11) NOT NULL AUTO_INCR...

2019-03-25 16:56:07

阅读数 40

评论数 0

原创 Mybatis-笔记2缓存验证

缓存 一级缓存: 默认开启,将查询的记录缓存在 SqlSession 中,同一个session 下次再查询时直接命中。 好处:减轻数据库压力 问题:会有脏数据 当session1 中查询过一次数据之后,session2 更新数据并提交事务,session1再次查询数据,数据还是原来的状态...

2019-03-25 10:24:54

阅读数 53

评论数 0

原创 Mybatis-笔记1

什么是MyBatis MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates a...

2019-03-20 18:38:21

阅读数 47

评论数 0

原创 设计模式-观察者模式

观察者模式的应用场景 观察者模式(Observer Pattern)定义了对象之间的一对多依赖,让多个观察者对象同时监听一个主体对象,当主体对象发生变化时,它的所有依赖者(观察者)都会收到通知并更新,属于行为型模式。观察者模式有时也叫做发布订阅模式。观察者模式主要用于在关联行为之间建立一套触发机...

2019-03-19 18:50:13

阅读数 32

评论数 0

原创 设计模式-装饰器模式

装饰者模式的应用场景 装饰者模式(Decorator Pattern)是指在不改变原有对象的基础之上,将功能附加到对象上,提供了比继承更有弹性的替代方案(扩展原有对象的功能),属于结构型模式。装饰者模式在我们生活中应用也比较多如给煎饼加鸡蛋;给蛋糕加上一些水果;给房子装修等,为对象扩展一些额外的职...

2019-03-19 18:26:09

阅读数 42

评论数 0

原创 设计模式-适配器模式

适配器模式的应用场景 适配器模式(Adapter Pattern)是指将一个类的接口转换成客户期望的另一个接口,使原本的接口不兼容的类可以一起工作,属于结构型设计模式。 适配器适用于以下几种业务场景: 1、已经存在的类,它的方法和需求不匹配(方法结果相同或相似)的情况。 2、适配器模式不是软件设计...

2019-03-19 17:40:17

阅读数 48

评论数 0

原创 设计模式-模板模式

模板模式 通常又叫模板方法模式(Template Method Pattern)是指定义一个算法的骨架,并允许子类为一个或者多个步骤提供实现。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤,属于行为性设计模式。模板方法适用于以下应用场景: 1、一次性实现一个算法的不变的部分,...

2019-03-19 17:17:51

阅读数 26

评论数 0

转载 JVM监控工具jconsole

Jconsole,Java Monitoring and Management Console。 Jconsole是JDK自带的监控工具,在JDK/bin目录下可以找到。它用于连接正在运行的本地或者远程的JVM,对运行在java应用程序的资源消耗和性能进行监控,并画出大量的图表,提供强大的可视化界...

2019-03-18 16:56:38

阅读数 26

评论数 0

转载 JVM调优--jstack 工具

一、介绍 jstack是java虚拟机自带的一种堆栈跟踪工具。jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式: jst...

2019-03-18 15:29:41

阅读数 59

评论数 0

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