Docker基础
1. Docker简介1.1 是什么问题:为什么会有docker出现
一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案。环境配置如此麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。
之前在服务器配置一个应用的运行环境,要安装各种软件,就拿尚硅谷电商项目的环境来说吧,Java/Tomcat/MySQL/JDBC驱动包等。安装和配置这些东西有多麻烦就不说了,它还不能跨平台。假如我们是在 Windows 上安装的这些环境,到了 Linux 又得重新装。况且就算不跨操作系统,换另一台同样操作系统的服务器,要移植应用也是非常麻烦的。
传统上认为,软件编码开 ...
CompletableFuture异步编程
CompletableFuture组合式异步编程1.1 线程回顾初始化线程的4种方式:
继承Thread
实现Runnable接口
实现Callable接口 + FutureTask (可以拿到返回结果,可以处理异常)
线程池
方式1和方式2:主进程无法获取线程的运算结果。不适合当前场景
方式3:主进程可以获取线程的运算结果,并设置给itemVO,但是不利于控制服务器中的线程资源。可以导致服务器资源耗尽。
方式4:通过如下两种方式初始化线程池:
123Executors.newFiexedThreadPool(3);//或者new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit unit, workQueue, threadFactory, handler);
通过线程池性能稳定,也可以获取执行结果,并捕获异常。但是,在业务复杂情况下,一个异步调用可能会依赖于另一个异步调用的执行结果。
1.2. CompletableFuture介绍Future是Java 5添加的类,用来描述 ...
虚拟内存调整
前言因为这个阿里服务器是购买的学生服务器,所以内存只有2G,项目在运行的时候,占用的内存已经报表,所以有的时候就会出现宕机的情况发生,后面发现可以通过使用增加虚拟内存空间,来增加内存容量。 下面进入正题,讲解下CentOS7下swap分区的创建和删除。
swap分区的创建1、查看磁盘使用情况1free -h
而Mem就表示购买阿里云时候的内存,我们能够看到只有1.8G,并且已经使用了1.7G。(说着说着,眼泪就流了下来)
因为我之前增加了交换空间4G,所以Swap会显示4G,并且已经使用了1G了
2、添加Swap分区使用dd命令创建名为swapfile 的swap交换文件(文件名和目录任意):
1dd if=/dev/zero of=/var/swapfile bs=1024 count=4194304
dev/zero是Linux的一种特殊字符设备(输入设备),可以用来创建一个指定长度用于初始化的空文件,如临时交换文件,该设备无穷尽地提供0,可以提供任何你需要的数目。
bs=1024 :单位数据块(block)同时读入/输出的块字节大 ...
JVM调优工具详解及调优实战
前置启动程序
123456789101112public class HelloGC { byte[] a = new byte[1024 * 100]; //100kb public static void main(String[] args) throws InterruptedException { List list = new ArrayList(); while (true) { list.add(new HelloGC()); Thread.sleep(100); } }}
事先启动一个web应用程序(没有准备好的直接用我上面着代码也行),用jps查看其进程id,接着用各种jdk自带命令优化应用
Jmap此命令可以用来查看内存信息,实例个数以及占用内存大小
12jmap -histo 14660 #查看历史生成的实例jmap -histo:live 14660 #查看当前存活的实例,执行过程中可能 ...
JVM调优第三方
阿里巴巴Arthas详解Arthas 是 Alibaba 在 2018 年 9 月开源的 Java 诊断工具。支持 JDK6+, 采用命令行交互模式,可以方便的定位和诊断线上程序运行问题。Arthas 官方文档十分详细,详见:https://alibaba.github.io/arthas
Arthas使用场景
得益于 Arthas 强大且丰富的功能,让 Arthas 能做的事情超乎想象。下面仅仅列举几项常见的使用情况,更多的使用场景可以在熟悉了 Arthas 之后自行探索。
是否有一个全局视角来查看系统的运行状况?
为什么 CPU 又升高了,到底是哪里占用了 CPU ?
运行的多线程有死锁吗?有阻塞吗?
程序运行耗时很长,是哪里耗时比较长呢?如何监测呢?
这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
有什么办法可以监控到 JVM 的实时运行状态?
Arthas使用
1234# github下载arthaswget ...
JvisualVM安装插件
JvisualVM安装插件给jdk自带的jvisualvm安装Visual GC插件,遇到We’re sorry the java.net site has closed(我们很抱歉java.net网站已经关闭)
1、找到新的更新地址 visualvm新访问地址:https://visualvm.github.io/index.html
进入“Plugins”,找到对应自己JDK版本的更新地址
2、进入jvisualvm的插件管理“工具” - “插件”
在”设置”中修改url地址为刚才我们在github上找到的对应我们JDK版本的地址
修改成功后,可用插件即可刷新出来
3、安装VisualGC插件
4、重启即可看到VisualGC
JVisualVM使用
Visual VM作用: 是到目前为止随JDK发布的功能最强大的运行监视和故障处理程序,并且可以遇见在未来一段时间内都是官方主力发展的虚拟机故障处理工具。官方在VisualVM的软件说明中写上了“All-in-One”的描述字样,预示着他除了运行监视、故障处理外,还提供了很多其他方面的功能。如性能分析,VisualVM的性能分析功能甚至比起很多专业的收费的工具都不会逊色多少,而且VisualVM还有一个很大的优点:不需要被监视的程序基于特殊的运行,因此他对应用程序的实际性能的影响很小,使得他可以直接应用在生产环境中。
VisualVM基于NetBeans平台开发,因此他一开始就具备了插件扩展功能的特性,通过插件扩展支持,VisualVM可以做到:
显示虚拟机进程以及进程的配置、环境信息(jps、jinfo)。
监视应用程序的CPU、GC、堆、方法区以及线程的信息(jstat、jstack)。
dump以及分析堆转储快照(jmap、jhat)。
方法级的程序运行性能分析,找到被调用最多、运行时间最长的方法。
离线程序快照:收集程序的运行时配置、线程dump、内存dump等信息建立一个快 ...
Jconsole使用
Jconsole测试代码
123456789101112131415import java.util.ArrayList;import java.util.List;public class HelloGC { byte[] a = new byte[1024 * 100]; //100kb public static void main(String[] args) throws InterruptedException { List list = new ArrayList(); while (true) { list.add(new HelloGC()); Thread.sleep(100); } }}
双击本地HeoolGC然后选择不安全连接
作用: 查看Java应用程序的运行概况,监视垃圾收集器管理的虚拟机内存(堆和元空间)的变化趋势,以及监控程序内的线程。
启动JConsole,在控制台输入:jcon ...
虚拟机性能分析和故障解决
虚拟机性能分析和故障解决工具1.工具概述作为一个java程序员,最基本的要求就是用java语言编写程序,并能够在jvm虚拟机上正常运行,但是在实际开发过程中,我们所有的程序由于各种各样的原因,并不是总能够正常运行,经常会发生故障或者程序的性能低下等问题,此时我们就需要借助于一些jdk提供的工具来定位问题、分析问题并给出合适的解决方案。
jdk给程序员提供的辅助工具都存放在bin目录下,见下图:
jdk提供的这些工具都是使用java语言编写的,他们都来自于lib/tools.jar,解压tools.jar,然后找到它下面sun/tools,截图如下,我们很清楚的能够看到这些目录的名称和前面看到的工具的名称一致。
需要特别注意说明的是:接下来我们讲解的工具全部基于windows平台下的JDK8版本,如果JDK版本,操心系统不同,工具所支持的功能可能会有较大差别,大部分工具在JDK5中就已经提供了,但是为了避免运行环境带来的差异和兼容性问题,建议使用JDK8来验证我们讲解的内容。
这个模块主要学习虚拟机性能监控与故障处理工具的基本使用与实战,要学习这个模块,需要大家首 ...
阿里云视频服务
一、阿里云视频点播技术能力盘点参考文章:
https://blog.csdn.net/qq_33857573/article/details/79564255
视频点播(ApsaraVideo for VoD)是集音视频采集、编辑、上传、自动化转码处理、媒体资源管理、分发加速于一体的一站式音视频点播解决方案。
1、应用场景
音视频网站:无论是初创视频服务企业,还是已拥有海量视频资源,可定制化的点播服务帮助客户快速搭建拥有极致观看体验、安全可靠的视频点播应用。
短视频:集音视频拍摄、特效编辑、本地转码、高速上传、自动化云端转码、媒体资源管理、分发加速、播放于一体的完整短视频解决方案。目前已帮助1000+APP快速实现手机短视频功能。
直播转点播:将直播流同步录制为点播视频,用于回看。并支持媒资管理、媒体处理(转码及内容审核/智能首图等AI处理)、内容制作(云剪辑)、CDN分发加速等一系列操作。
在线教育:为在线教育客户提供简单易用、安全可靠的视频点播服务。可通过控制台/API等多种方式上传教学视频,强大的转码能力保证视频可以快速发布,覆盖全网的加速节点保证学生观看 ...




