JDK

Docker系列-第六篇DockerFile解析

吃可爱长大的小学妹 提交于 2021-02-12 18:54:22
1.手动编写一个dockerfile文件,当然必须要符合file的规则 2.有了这个文件,直接docker build命令执行,获得一个自定义的镜像 3.run 1.是什么 Dockerfle 是一个文本格式的配置文件, 用户可以使用 Dockerfle 来快速创建自定义的镜像。 Dockerfile是用来<font color='red'>构建Docker镜像的构建文件</font>,是由一系列命令和参数构成的脚本。 1.1三步骤 编写Dockerfile文件 docker build docker run 2.DockerFile构建过程解析 2.1Dockerfile内容基础知识 1:每条保留字指令都必须为大写字母且后面要跟随至少一个参数 2:指令按照从上到下,顺序执行 3:#表示注释 4:每条指令都会创建一个新的镜像层,并对镜像进行提交 2.2Docker执行Dockerfile的大致流程 (1)docker从基础镜像运行一个容器 (2)执行一条指令并对容器作出修改 (3)<font color='blue'>执行类似docker commit的操作提交一个新的镜像层</font> (4)<font color='blue'>docker再基于刚提交的镜像运行一个新容器</font> (5)<font color='blue'

Eclipse中文语言包安装和设置中文

怎甘沉沦 提交于 2021-02-12 18:49:49
对于英语水平不好或者初学者来说使用中文开发环境可以有效提高学习效率,便于快速的学习和上手,不过对于当前的技术环境学习英语还是非常有必要的,当对Eclipse掌握到一定程度还是应该多使用英语环境来开发,以便更进一步的深入学习和了解。下面让我们来学习如何为Eclipse安装语言包和设置中文的文档。 准备   在开始所有的工作前请提前安装好Eclipse,下载地址: http://www.eclipse.org/downloads/ 。    语言包(和自己使用的Eclipse版本对应)下载地址: http://www.eclipse.org/babel/downloads.php    中文Doc下载地址: http://dlc.sun.com.edgesuite.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html_zh_CN.zip 1.安装中文语言包   Eclipse所有的扩展功能都是以插件的形式添加上去的,安装插件时有多种形式,下面是比较常用的两种: 直接将插件中的文件复制到Eclipse对于的目录中。优点是安装时很方便,缺点是插件增多,卸载和更新的时候会比较麻烦。 一种使用使用Link的方式。优点是对插件的管理会比较方便,缺点是操作起来比第一种方式要麻烦。 使用dropins的插件安装方式

并发基础

巧了我就是萌 提交于 2021-02-12 13:54:40
基础知识模块 很长时间没有写笔记了,把最近看的一点知识分享给大家,主要是并发编程相关的基础知识,准备年前把这一部分都更新了,还请各位大佬多多关照,多多指点。 主要内容的鱼骨图如下: 1、同步容器类 同步容器类包括Vector和Hashtable,二者是早期JDK的一部分,此外还包括1.2版本中添加的一些相似功能的类,这些同步类的封装是由Collections.synchronizedXxx等工厂方法创建的。这些类实现线程安全的方式为: 将它们的状态封装起来,并对每个公有方法都进行同步,使得每次只有一个线程能够访问容器的状态 1.1、同步容器类的问题 同步容器类都是线程安全的,但在某些情况下可能需要额外的客户端加锁来保护复合操作,常见的复合操作有:迭代,跳转,以及条件运算。在同步容器类中,这些复合操作在没有客户端加锁的情况下是线程安全的,但当其他线程并发的修改容器时,他们可能会表现出意料之外的问题。 “先检查再运行” public static Object getLast(Vector list){ int lastIndex = list.size() - 1; return list.get(lastIndex); } public static void deleteLast(Vector list){ int lastIndex = list.size() - 1;

JVM的性能优化(上)

允我心安 提交于 2021-02-12 11:51:11
(一) 概述: 全称:java virtual machine(java 虚拟机) 是一个进程 用来模拟计算单元 将.class文件转成计算机能够识别的指令 注:jvm是 java 语言跨平台性(一次编译到处运行)的基础 (二) JVM虚拟机运行的流程: 1.读取字节码文件所在的路径 //类加载机制 获取字节码文件中的内容 //方法区(元数据区)用来存放类的描述信息 3.获取该类的实例(对象) //堆 用来存储对象 4.通过对象名.的方式调用方法 //栈 用来存放局部变量及所有代码执行的 (三) JVM虚拟机的类加载机制 JVM 底层加载类依靠三大组件: BootStrapClassLoader 启动类加载器 负责加载 : jre /lib/ rt.jar ExtClassLoader 扩展类加载器 负责加载: jre/lib/ext/* 文件夹下所有的jar 包 注:这俩个加载器执行完毕后,JVM虚拟机基本上就初始化完毕了 APPClassLoader 应用程序加载器 负责加载用户自定义的类的 // UserClassLoader //自定义加载器 //自定义加载器就是自定义一个类继承classloader 然后重写 findclass(),loadclass()俩个方法即可 加载顺序: BootStrap --> ExtClassLoader -->

Guava集合工具

偶尔善良 提交于 2021-02-12 11:31:12
JDK提供了一系列集合类,如下所示,极大的方便了开发工作,并针对这些类提供了一个工具类java.util.Collections,Guava在此基础上添加了一些常用工具类方法,相比于java.util.Collections集合类,Guava使用起来更方便快捷。本文主要介绍Guava集合工具类中Lists、Sets、Maps的常规使用。 Lists S.N. 方法及说明 1 List<E> asList(@Nullable E first, E[] rest) List<E> asList(@Nullable E first, @Nullable E second, E[] rest) 将array转化为List,并在list头部插入值,不支持基本类型array 2 List<List<B>> cartesianProduct(List… lists) List<List<B>> cartesianProduct(List<? extends List<? extends B>> lists) 计算多个list笛卡尔乘积 3 ImmutableList<Character> charactersOf(String string) List<Character> charactersOf(CharSequence sequence) Stirng或CharSequence转List

推荐:Java性能优化系列集锦

不打扰是莪最后的温柔 提交于 2021-02-12 11:20:12
Java性能问题一直困扰着广大程序员,由于平台复杂性,要定位问题,找出其根源确实很难。随着10多年Java平台的改进以及新出现的多核多处理器,Java软件的性能和扩展性已经今非昔比了。现代JVM持续演进,内建了更为成熟的优化技术、运行时技术和垃圾收集器。与此同时,底层的硬件平台和操作系统也在演化。 目录: 一、Java性能优化系列之一--设计优化 二、Java性能优化系列之二--程序优化 三、Java性能优化系列之三--并发程序设计详解 四、Java性能优化系列之四--Java内存管理与垃圾回收机制详解 五、Java性能优化系列之五--JavaIO 现代大规模关键性系统中的Java性能调优,是一项富有挑战的任务。你需要关注各种问题,包括算法结构、内存分配模式以及磁盘和文件I/O的使用方式。性能调优最困难的通常是找到问题所在,即便是经验丰富的人也会被他们的直觉所误导。性能杀手总是隐藏在最意想不到的地方。 这一次,我将在本文中着重介绍Java性能优化的一系列举措,希望能够对现在的你有所帮助。觉得有帮助的朋友也可以转发、收藏一下。 一、Java性能优化系列之一--设计优化 1、善于利用 Java 中的设计模式:享元模式、代理模式、装饰器模式等。详见我的博客文章“大话”设计模式 文章链接:https://blog.csdn.net/person_limit/article/details

性能优化系列三:JVM优化

断了今生、忘了曾经 提交于 2021-02-12 11:16:56
一、几个基本概念 GCRoots对象都有哪些 所有正在运行的线程的栈上的引用变量。所有的全局变量。所有ClassLoader。。。 1.System Class .2.JNI Local 3.JNI Global 4.Thread Block 5.Busy Monitor 6.Java Local 7.Native Stack 8.Unfinalized 9.Unreachable 10.Java Stack Frame 11.Unknown 栈帧的解释 Java虚拟机栈(Java Virtual Machine Stacks)是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。 简单地说,栈帧就是一个方法,里面有输入输出参数,局部变量表,返回值等信息,第一个参数一定是this 方法区说明 与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。 举例:有一个HelloWorld的类如下 import java.text.SimpleDateFormat; import java

JVM性能优化系列-(5) 早期编译优化

早过忘川 提交于 2021-02-12 11:06:24
目前已经更新完《Java并发编程》和《Docker教程》,欢迎关注【后端精进之路】,轻松阅读全部文章。 <div align=center><img src="http://ww1.sinaimg.cn/large/a18449c6gy1gazysez0b1j20ni0n6afy.jpg" width = "200" height = "200"></div> Java并发编程: Java并发编程系列-(1) 并发编程基础 Java并发编程系列-(2) 线程的并发工具类 Java并发编程系列-(3) 原子操作与CAS Java并发编程系列-(4) 显式锁与AQS Java并发编程系列-(5) Java并发容器 Java并发编程系列-(6) Java线程池 Java并发编程系列-(7) Java线程安全 Java并发编程系列-(8) JMM和底层实现原理 Java并发编程系列-(9) JDK 8/9/10中的并发 Docker教程: Docker系列-(1) 原理与基本操作 Docker系列-(2) 镜像制作与发布 Docker系列-(3) Docker-compose使用与负载均衡 JVM性能优化: JVM性能优化系列-(1) Java内存区域 JVM性能优化系列-(2) 垃圾收集器与内存分配策略 JVM性能优化系列-(3) 虚拟机执行子系统 JVM性能优化系列-(4)

问:为什么很多公司不升级JDK版本,仍然使用JDK8?

浪子不回头ぞ 提交于 2021-02-12 07:13:56
首先小编给大家打个预防针,这是一个很有趣且有争议的问题,小编也是在逛知乎时发现了这个有趣的问题。其下面的回答有一百多个,被关注有两百多个,被浏览了三十多万次,所以足以说明这个问题还是蛮有趣的。 小编寄语: 不能为了技术而技术,技术是服务于业务的。 小编对知乎上面的答案和答案下面的讨论简单浏览了一遍,然后总结的主要观点大约如下: 技术债务角度 老项目技术栈的的升级要么是遇到了需求瓶颈,要么是技术工作比较空闲才会进行,一般追求稳定的情况下是不会轻易升级的。新项目可以直接考虑使用新版本 JDK 更香。 技术生态角度 三方框架及开源圈对于新版本的适配还不是很积极,如果你使用了最新 JDK 就会在一定程度上缩小你对三方框架的选择空间。 JDK 特性角度 从 JDK4 升到 JDK5,从 JDK5 升到 JDK6、JDK7、JDK8 都挺平滑的,但是从 JDK8 升到 JDK9+ 一点都不平滑,由于官方的新特性和大幅调整导致一些 jar 依赖的改变,模块化特性带来的反射问题,ClassLoader 变化导致的某些问题等,每个都能把开发搞得欲死欲仙。 商业角度 因为 Oracle JDK8 的某一个版本之后的新版本 JDK 不再能被商业公司免费使用了,商业使用需要付费(这才是最大的阻力)。这很关键,所以有些大厂开始搞基于 OpenJDK 的自己 JDK(当然也有因为业务需要这么干的)。

JVM的垃圾回收机制 总结(垃圾收集、回收算法、垃圾回收器)

谁说胖子不能爱 提交于 2021-02-12 07:12:22
如果想了解Java内存模型参考: jvm内存模型-和内存分配以及jdk、jre、jvm是什么关系(阿里,美团,京东) 相信和小编一样的程序猿们在日常工作或面试当中经常会遇到JVM的垃圾回收问题,有没有在夜深人静的时候详细捋一捋JVM垃圾回收机制中的知识点呢?没时间捋也没关系,因为小编接下来会给你捋一捋。 一、 技术背景你要了解吧 二、 哪些内存需要回收? 2.1 引用计数算法 2.1.1 算法分析 2.1.2 优缺点 2.1.3 是不是很无趣,来段代码压压惊 2.2 可达性分析算法 2.3 Java中的引用你了解多少 2.4 对象死亡(被回收)前的最后一次挣扎 2.5 方法区如何判断是否需要回收 三、常用的垃圾收集算法 3.1 标记-清除算法 3.2 复制算法 3.3 标记-整理算法 3.4 分代收集算法 3.4.1 年轻代(Young Generation)的回收算法 3.4.2 年老代(Old Generation)的回收算法 3.4.3 持久代(Permanent Generation)的回收算法 四、常见的垃圾收集器 五、GC是什么时候触发的(面试最常见的问题之一) 5.1 Scavenge GC 5.2 Full GC 结束语 一、 技术背景你要了解吧   按照套路是要先装装X,谈谈JVM垃圾回收的前世今生的。说起垃圾回收(GC)