![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Docker
文章平均质量分 79
javarrr
分享者java菜
展开
-
比Hive快800倍!大数据实时分析领域黑马开源ClickHouse
一. 概述随着物联网 IOT 时代的来临,IOT 设备感知和报警存储的数据越来越大,有用的价值数据需要数据分析师去分析。大数据分析成了非常重要的环节。当然近两年开启的开源大潮,为大数据分析工程师提供了十分富余的工具。但这同时也增加了开发者选择合适的工具的难度,尤其对于新入行的开发者来说。学习成本,框架的多样化和复杂度成了很大的难题。例如 Kafka,Hdfs,Spark,Hive 等等组合才能...原创 2018-12-27 12:36:11 · 864 阅读 · 0 评论 -
下一代的微服务架构基础是ServiceMesh?
今年,ServiceMesh(服务网格) 概念在社区里头非常火,有人提出 2018 年是 ServiceMesh 年,还有人提出 ServiceMesh 是下一代的微服务架构基础。作为架构师,如果你现在还不了解 ServiceMesh 的话,是否感觉有点落伍了?那么到底什么是 ServiceMesh?它的诞生是为了解决什么问题?企业是否适合引入 ServiceMesh?通过这篇文章,将为你一一...原创 2018-12-27 16:54:16 · 215 阅读 · 0 评论 -
JVM之ParNew和CMS日志分析
今天这篇文章主要是对生产环境中(Java7)常用的两种垃圾收集器(ParNew:年轻代,CMS:老年代)从日志信息上进行分析,做一下总结,这样当我们在排查相应的问题时,看到 GC 的日志信息,不会再那么陌生,能清楚地知道这些日志是什么意思,GC 线程当前处在哪个阶段,正在做什么事情等。ParNew 收集器ParNew 收集器是年轻代常用的垃圾收集器,它采用的是复制算法,youngGC 时一...原创 2018-12-28 11:17:51 · 284 阅读 · 0 评论 -
利用Docker容器的不安全部署获取宿主机权限
前言滥用容器( container)及逃逸的方法有多种,本文将讨论最基本的一种,即滥用docker socket来逃逸容器并在宿主机上以root身份执行代码。实验环境设置由于我们将使用容器,因此你必须安装docker。创建网络首先,我们在创建容器的地方创建一个docker网络:docker network create pwnage启动易受攻击的容器在本示例中...原创 2018-12-24 11:04:27 · 568 阅读 · 1 评论 -
你所不知道的库存超限做法
在互联网企业中,限购的做法,多种多样,有的别出心裁,有的因循守旧,但是种种做法皆想达到的目的,无外乎几种,商品卖的完,系统抗的住,库存不超限。虽然短短数语,却有着说不完,道不尽,轻者如释重负,重者涕泪横流的架构体验。 但是,在实际开发过程中,库存超限,作为其中最核心的一员,到底该怎么做,如何做才会是最合适的呢?今天这篇文章,我将会展示给大家库存限购的五种常见的做法,并对其利弊一一探讨,由于这五...原创 2019-01-03 16:17:28 · 391 阅读 · 0 评论 -
像调试java一样来调试Redis lua
高并发的系统中,redis的使用是非常频繁的,而lua脚本则更是锦上添花。因为lua脚本本身执行的时候是一个事务性的操作,不会掺杂其他外部的命令,所以很多关键的系统节点都会用redis+lua来实现一致性的操作请求。但是在实际开发过程中,由于redis lua脚本调试难的问题,导致大量的时间耗费在了这上面。如果有什么方案能够让我们像利用IDEA调试java一样简便去调试redis lua脚本,那该...原创 2018-12-29 11:10:50 · 323 阅读 · 0 评论 -
微服务架构下的监控需要注意哪些方面?
微服务架构在带来灵活性、扩展性、伸缩性以及高可用性等优点的同时,其复杂性也给运维工作中最重要的监控环节带来了很大的挑战,从用户的角度看,微服务架构下的监控应该注意哪些方面?微服务架构虽然诞生的时间并不长,却因为适应现今互联网的高速发展和敏捷、DevOps 等文化而受到很多企业的推崇。微服务架构在带来灵活性、扩展性、伸缩性以及高可用性等优点的同时,其复杂性也给运维工作中最重要的监控环节带来了很大...原创 2018-12-30 11:04:29 · 174 阅读 · 0 评论 -
JVM基础面试题及原理讲解
本文从 JVM 结构入手,介绍了 Java 内存管理、对象创建、常量池等基础知识,对面试中 JVM 相关的基础题目进行了讲解。写在前面(常见面试题)基本问题介绍下 Java 内存区域(运行时数据区) Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么) 对象的访问定位的两种方式(句柄和直接指针两种方式)拓展问题String类和常量池 8种基本类型的...原创 2019-01-04 14:25:34 · 771 阅读 · 0 评论 -
java类实例化内存过程与面向对象特征
在谈到类实例化的内存过程时先说说几个概念:对象:内存上来说是分配在堆上面的一块内存区域类:把一类具体事物相同特征,功能/行为抽象为属性与方法过程。类是对象的模板,对象是类的具体表现。构造函数:与类名同名的函数,用来实例化对象并初始化成员变量。注意:构造器、构造函数不能称为构造方法。类的结构:静态块:当对应的class文件被首次加载到虚拟机时执行。代码块构造函数...原创 2019-01-05 11:45:31 · 306 阅读 · 0 评论 -
Docker Compose 引用环境变量
在项目中,往往需要在 docker-compose.yml 文件中使用环境变量来控制不同的条件和使用场景。本文集中介绍 docker compose 引用环境变量的方式。说明:本文的演示环境为 ubuntu 16.04。Compose CLI 与环境变量Compose CLI(compose command-line 即 docker-compose 程序)能够识别名称为 COMPOSE...原创 2019-01-11 15:21:15 · 2327 阅读 · 0 评论 -
网络传输数据序列化工具Protostuff
一直在物色比较好用的网络传输数据序列化工具,看了诸如marshalling,protobuff等,但是均有一个共同特点,使用起来异常繁杂,有没有比较好用同时性能又不会太差的组件呢?答案当然是有的,那就是基于protobuff改造的protostuff,它拥有良好性能的同时,又免去了生成描述文件的烦恼,可谓是趁手利器。来看看具体的使用方式吧。首先,引入maven依赖如下:<dep...原创 2019-01-02 11:29:41 · 196 阅读 · 0 评论 -
mac上配置java开发环境
项目在mac上跑起来的步骤:1. 访问,https://brew.sh/ 装上这个然后 brew install git brew install maven, settings.xml需要放到目录位置/usr/local/Cellar/maven/<version>/libexec/confbrew install switchhosts (按照提示更改安装目录)...原创 2019-01-02 11:40:08 · 3334 阅读 · 0 评论 -
SpringCache实战遇坑
1. SpringCache实战遇坑1.1. pom主要是以下两个<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></depen...原创 2019-01-17 11:02:17 · 1269 阅读 · 0 评论 -
jvm疯狂吞占内存,罪魁祸首是谁?
导读JVM是Java Virtual Machine的缩写,中文名为Java虚拟机。它是一种用于计算设备的规范,是一个虚构出来的计算机,主要通过在实际的计算机上仿真模拟各种计算机功能来实现的。在实际运用过程中,易观技术人员注意到一台开发机上各个微服务进程占用内存很高,随即便展开了调查...... 现象:前段时间发现某台开发机上各个微服务进程占用内存很高,这里记录下解决思路,仅供参考。...原创 2019-01-07 12:01:26 · 4640 阅读 · 0 评论 -
使用 SpringAOP 获取一次请求流经方法的调用次数和调用耗时
引语作为工程师,不能仅仅满足于实现了现有的功能逻辑,还必须深入认识系统。一次请求,流经了哪些方法,执行了多少次DB操作,访问了多少次文件操作,调用多少次API操作,总共有多少次IO操作,多少CPU操作,各耗时多少 ? 开发者应当知道这些运行时数据,才能对系统的运行有更深入的理解,更好滴提升系统的性能和稳定性。完成一次订单导出任务,实际上是一个比较复杂的过程:需要访问ES 来查询订单,调用批...原创 2019-01-13 14:45:18 · 997 阅读 · 0 评论 -
一文快速了解Java集合框架
1. 简介JDK1.2 引入了 Java 集合框架,包含一组数据结构。与数组不同,这些数据结构的存储空间会随着元素添加动态增加。其中,一些支持添加重复元素另一些不支持,一些支持 null,一些能自动升序打印元素。所有这些数据结构在 java.util 包里,包含了 Collection、List、Set、Map、SortedMap 接口。这些接口的实现类有 LinkedList、TreeS...原创 2019-01-08 14:24:56 · 118 阅读 · 0 评论 -
Medium 架构实践:避免微服务综合症
微服务架构的目标是帮助工程师团队更快、更安全、更高质量地交付产品。解耦服务使团队能够快速迭代,并尽可能降低对系统其余部分的影响。在 Medium,我们的技术栈始于 2012 年的单体 Node.js 应用程序。我们已经构建了几个卫星通讯服务,但还没有系统地制定一个采用微服务架构的策略。随着系统变得越来越复杂并且团队不断发展,我们在 2018 年初转向了微服务架构。在这篇文章中,我们希望分享关于...原创 2019-01-14 10:51:39 · 237 阅读 · 0 评论 -
一文详解微服务架构的数据设计
微服务是一个软件架构模式,对微服务的讨论大多集中在容器或其他技术是否能很好的实施微服务这些方面。 本文将从以下几个角度来和大家分享在微服务架构下进行数据设计需要关注的地方,旨在帮助大家在构建微服务架构时,提供一个数据方面的视角: 什么是微服务 微服务的优势及架构特点 微服务架构下的数据设计 一个适合微服务架构的数据库 什么是微...原创 2019-01-19 11:29:44 · 322 阅读 · 0 评论 -
Java 性能调优的 11 个实用技巧
大多数开发人员认为性能优化是个比较复杂的问题,需要大量的经验和知识。是的,这并不没有错。诚然,优化应用程序以获得最好的性能并不是一件容易的事情,但这并不意味着你在没有获得这些经验和知识之前就不能做任何事。下面有几个很容易遵循的建议和最佳实践能够帮你创建一个性能良好的应用程序。这些建议中的大多数都是基于Java的,但是也不一定,也有一些是可以应用于所有的应用程序和编程语言的。在我们分享基于Jav...原创 2019-01-24 14:14:36 · 92 阅读 · 0 评论 -
深入分析Java I/O的工作机制 (一)
1.Java的I/O类库的基本架构先说一下什么是类库:可以说是类的集合,类库包括接口、抽象类、具体类等。I/O是机器获取和交互信息的主要渠道。 java在I/O上也一直在做持续的优化,在1.4版开始引入了NIO,提升了I/O的性能。java的I/O操作类在包java.io下,大概有80个类左右,这些类大概可以分为如下4组: 基于字节操作的I/O接口:InputStream和Out...原创 2019-01-19 17:03:51 · 145 阅读 · 0 评论 -
Spring IOC核心源码学习
1. 初始化大致单步跟了下Spring IOC的初始化过程,整个脉络很庞大,初始化的过程主要就是读取XML资源,并解析,最终注册到Bean Factory中:在完成初始化的过程后,Bean们就在BeanFactory中蓄势以待地等调用了。下面通过一个具体的例子,来详细地学习一下初始化过程,例如当加载下面一个bean: 1 2 3 4 5 ...原创 2019-01-09 11:31:12 · 229 阅读 · 0 评论 -
Java8内存模型—永久代(PermGen)和元空间(Metaspace)
一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方法出口等信息。栈的大小可以固定也可以动态扩展。当栈调用深度大于JVM所允许的范围,会抛...原创 2019-01-15 10:59:18 · 186 阅读 · 0 评论 -
2019年顶级微服务面试解析
36%的企业目前正在使用微服务,另有26%的企业正在研究如何实施这些服务。1.什么是Spring Cloud? 在微服务中,Spring Cloud是一个提供与外部系统集成的系统。它是一个轻框架,可以快速构建应用程序。与有限数量的数据处理相关联,它在微服务架构中起着非常重要的作用。对于典型用例,Spring Cloud提供了开箱即用的体验以及下面提到的一系列广泛功能: 版本化和...原创 2019-01-25 15:47:18 · 735 阅读 · 0 评论 -
基于 SpringCloud 的微服务治理架构落地实践
一 概述关于微服务的介绍目前已经有很多文章做了介绍,本文不再对微服务的概念再做进一步阐述,重点将介绍微服务架构具体开发运维方面的经验总结,侧重于落地实践。目前业界比较热门的微服务开发框架是SpringCloud和dubbo,由于前期一些项目已经使用了SpringBoot进行快速开发,自然就平滑地升级到SpringCloud进行微服务实践。另外,按照微服务不断演进的思路,我们首先对非核心业务...原创 2019-01-10 11:42:31 · 676 阅读 · 0 评论 -
Kafka是如何解决常见的微服务通信问题的
微服务自成立以来就以不同的方式相互沟通。有些人更喜欢使用HTTP REST API,但这些API有自己的排队问题,而有些则更喜欢较旧的消息队列,比如RabbitMQ,它们带有扩展和操作方面的问题。以Kafka为中心的架构旨在解决这两个问题。在本文中,我将解释Apache Kafka如何改进微服务中使用的历史HTTP REST API /消息队列体系结构以及它如何进一步扩展其功能。两个阵...原创 2019-01-21 19:33:17 · 402 阅读 · 0 评论 -
20 分钟教你搞懂 Git!
尽管每天你都会用到Git,常用的命令可能不到5个,但你可能现在还搞不懂它的工作原理。为什么Git可以管理版本?基本命令git add和git commit到底在干什么? 在这篇文章中,我将用一个例子来解释Git的运行过程,帮助你理解Git的工作原理。 1. 初始化 让我们创建一个项目的目录,然后进入该目录。 $ mkdir git-demo-pr...原创 2019-01-26 16:31:41 · 220 阅读 · 1 评论 -
全面对比 Redis 和 Memcached 的 6 点区别
说到redis就会联想到memcached,反之亦然。了解过两者的同学有那么个大致的印象:redis与memcached相比,比仅支持简单的key-value数据类型,同时还提供list,set,zset,hash等数据结构的存储;redis支持数据的备份,即master-slave模式的数据备份;redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用等等,这似...原创 2019-01-27 14:30:01 · 128 阅读 · 0 评论 -
完了!生产事故!几百万消息在消息队列里积压了几个小时!
一、面试题如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?二、面试官心里分析你看这问法,其实本质针对的场景,都是说,可能你的消费端出了问题,不消费了,或者消费的极其极其慢。接着就坑爹了,可能你的消息队列集群的磁盘都快写满了,都没人消费,这个时候怎么办?或者是整个这就积压了几个小时,你这个时候怎么办?或者是你积压的时间太长了,...原创 2019-02-01 14:47:01 · 1397 阅读 · 0 评论 -
Java异常处理的9个最佳实践
无论你是新手还是资深程序员,复习下异常处理的实践总是一件好事,因为这能确保你与你的团队在遇到问题时能够处理得了它。在 Java 中处理异常并不是一件易事。新手觉得处理异常难以理解,甚至是资深开发者也会花上好几个小时来讨论是应该抛出抛异常还是处理异常。这就是为何大多数开发团队都拥有一套自己的异常处理规范。如果你初进团队,你也许会发现这些规范和你曾使用的规范大相径庭。尽管如此,这里还是有一...原创 2019-01-22 16:48:28 · 132 阅读 · 0 评论 -
如何修复Java中的VirtualMachineError
即使是最好的代码也会抛出错误,对开发人员而言这意味着需要知道如何修复它们。在这篇文章中,Ram Lakshmanan 介绍了许多不同类型的 VirtualMachineError 以及如何解决这些问题,在应用程序不崩溃的前提下回到正常状态。 当 Java 虚拟机遇到内部错误或资源限制无法运行时,就会抛出 Java.lang.VirtualMachineError。它是 JVM 的一种自我防...原创 2019-01-28 19:36:13 · 2318 阅读 · 0 评论 -
避过这8个坑,2019必得心仪offer!
在过去的2018年中,你都犯了哪些错误?本文囊括了大家常见的八大误区: 找工作层面: 时间精力分配错误 求职时间点踏错 面试准备失误 心态变化与侥幸心理:总会有公司招聘的Bar不高,例如startup 不知道哪些公司可以投递 技术层面: 知识面过窄/过宽 工业界的项目开发流程 工业界日常使用的工具 ...原创 2019-02-14 18:45:55 · 361 阅读 · 1 评论 -
Docker使用 linuxserver/letsencrypt 生成SSL证书最全解析及实践
本文使用 HTTP 和 DNS 两种校验方式对 Docker 下 linuxserver/letsencrypt 项目进行了实践。生成SpringBoot可用证书,使用 Nginx 的 htpasswd 来对网站进行密码保护,并测试使用 fail2ban 防止 htpasswd 被暴力破解。全文基于 linuxserver/letsencrypt 文档及其他官方资料,根据作者实践进行详细解析和记录...原创 2019-01-23 15:49:29 · 1285 阅读 · 0 评论 -
当面试官问我Mybatis初始化原理时,我笑了
对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外。本章将通过以下几点详细介绍MyBatis的初始化过程。 MyBatis的初始化做了什么 MyBatis基于XML配置文件创建Configuration对象的过程 手动加载XML配置文件创建Configuration对象完成初始化,创建并使用SqlSessionFactory对象 涉及...原创 2019-01-29 17:58:08 · 185 阅读 · 0 评论 -
鸟瞰 Java 并发框架
1. 为什么要写这篇文章几年前 NoSQL 开始流行的时候,像其他团队一样,我们的团队也热衷于令人兴奋的新东西,并且计划替换一个应用程序的数据库。 但是,当深入实现细节时,我们想起了一位智者曾经说过的话:“细节决定成败”。最终我们意识到 NoSQL 不是解决所有问题的银弹,而 NoSQL vs RDMS 的答案是:“视情况而定”。 类似地,去年RxJava 和 Spring Reactor 这...原创 2019-02-15 16:32:53 · 961 阅读 · 0 评论 -
埋在MySQL数据库应用中的17个关键问题!
MySQL的使用非常普遍,跟MySQL有关的话题也非常多,如性能优化、高可用性、强一致性、安全、备份、集群、横向扩展、纵向扩展、负载均衡、读写分离等。要想掌握其中的精髓,可得花费不少功力,虽然目前流行的MySQL替代方案有很多,可是从最小成本最容易维护的角度而言,MySQL还是首选。下面从应用场景的角度切入,对MySQL的技术点进行组织,写一份知识图谱,方便进行更深入的学习和总结。如下图整理,...原创 2019-01-30 17:55:59 · 164 阅读 · 0 评论 -
你分得清楚Maven的聚合和继承吗?
用了 Maven 好几年了,许多人还是只懂得简单的依赖坐标。对于 Maven 的聚合和继承还是一知半解,甚至很多人以为是同一个东西。但其实聚合是用于快速构建项目,是表示项目与子项目之间的关系。而继承则是为消除重复的配置。下面通过一个例子深入聊聊这两者的关系。聚合Maven 的聚合其实就是项目与子项目的表示,其存在的意义在于快速构建项目。例如我们有一个淘宝商城项目,这个项目有账号子项目和邮件...原创 2019-02-22 11:47:27 · 115 阅读 · 0 评论 -
一文了解 OutOfMemory 及解决方案
1. Java 堆空间发生频率5颗星造成原因无法在 Java 堆中分配对象 吞吐量增加 应用程序无意中保存了对象引用,对象无法被 GC 回收 应用程序过度使用 finalizer。finalizer 对象不能被 GC 立刻回收。finalizer 由结束队列服务的守护线程调用,有时 finalizer 线程的处理能力无法跟上结束队列的增长 解决方案单位对应:GB -...原创 2019-02-17 11:40:46 · 584 阅读 · 0 评论 -
一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事
微服务架构微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物。互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况下,如何从系统架构的角度出发,构建灵活、易扩展的系统,快速应对需求的变化;同时,随着用户的增加,如何保证系统的可伸缩性、高可用性,成为系统架构面临的挑战。如果还按照以前传统开发模式,开发一个大型...原创 2019-02-27 16:33:41 · 292 阅读 · 0 评论 -
最热门的13个Java微服务框架
曾经的服务器领域有许多不同的芯片架构和操作系统,经过长期发展,Java的“一次编译,到处运行”使得它在服务器领域找到一席之地,成为程序员们的最爱 本文,我们将和大家分享13个可靠的Java微服务架构 1、Spring BootJava构建Spring应用程序已经有很长一段时间了,Spring Boot是Spring的一个特定版本,它通过对配置细节的处理,使微服务构建更加简便。创...原创 2019-02-18 11:46:29 · 374 阅读 · 0 评论 -
JVM平台上的响应式流(Reactive Streams)规范
Reactive Streams响应式流是一个倡议,用来为具有非阻塞后压的异步流处理提供一个标准。大家努力的目标集中在运行时环境(JVM和JavaScript)和网络协议上。注:响应式流其实就是一个规范,本文讲解的正是这个规范,且这个规范已经被引入到JDK9里了。 后压:就是下游出现了问题,得不到解决时,这个问题就会逆流而上,继而影响上游。如果一个路口红绿灯坏了造成堵车,如果不...原创 2019-02-23 11:51:05 · 394 阅读 · 0 评论