JDK

Java中注解学习系列教程-3

六月ゝ 毕业季﹏ 提交于 2021-01-10 08:30:46
Java中注解学习系列教程-3 凯哥java 凯哥java 本文是《Java中注解学习系列教程》第三篇文章 在前两篇中我们学习了注解的定义、JDK内置注解、注解分类及自定义注解的写法。 本文咱们将学习: 1:自定义注解一些说明 2:自定义注解怎么使用 3:怎么解析自定义注解 一:自定义注解一些说明: 自定义注解的时候,内部成员可被允许的类型又有哪些呢? 1:基本类型(Java中8中基本类型) 2:stirng类型 3:class 4:其他注解 5:枚举类 6:以上五类的数组 如下图: Java官方文档( https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.6.1)原文如下 : 类型举例: 需要说明的: 1:如果注解只有一个成员时候,成员名称必须为value 2:注解类可以没有成员,没有成员的注解为:标识注解 二:自定义注解的使用 说明:自定义注解根据其使用范围使用。 如MyAnnotation1这个自定义注解 使用范围是是method和field上。 我们就在method的使用该注解: 语法是: 注解名称(成员名称 = 成员值,成员名称2 = 成员值2) 如下图: 三:注解解析 在使用注解的时候,使用的反射处理的。 public class MyAnnotation1Test { public

spark集群搭建(spark版本2.3.2)

心不动则不痛 提交于 2021-01-10 07:48:42
1.前置软件:   JDK1.8 2.修改配置文件: cp slaves.template slaves vi slaves   添加从节点:     slave1     slave2 cp spark-env.sh.template spark-env.sh vi spark-env.sh   添加环境变量:     export SPARK_MASTER_HOST=master     export SPARK_MASTER_PORT=7077     export SPARK_WORKER_CORES=2     export SPARK_WORKER_MEMORY=3g     export JAVA_HOME=/opt/module/jdk1.8.0_171 3.基于yarn 提交任务有可能报错虚拟内存不足 在每台节点中的yarn-site.xml中配值关闭虚拟内存检查 <property>   <name>yarn.nodemanager.vmem-check-enabled</name>   <value>false</value> </property> 4.Standalone 提交命令: ./bin/spark-submit --master spark://master:7077 --class org.apache.spark.examples

关乎DevOps成败的三个火枪手

流过昼夜 提交于 2021-01-10 03:45:16
本文翻译并节选自《 DevOps2.0的工具集(DevOps黑宝书)——打造自动化的持续交付流程》一书 ,转自译者CSDN博客,转载请注明出处。 本文梗概: 刚开始接触持续部署、微服务(MS)和容器,你可能觉得这三个东西毫无关联。因为DevOps并没有规定持续部署中需要使用微服务,也没有要求微服务必须打包集成到容器中。但是,当我们发现这三样东西相互结合的时候,新世界的大门就这样打开了。容器领域的发展以及不可变部署的理念指导我们克服了很多以前微服务出现的问题。同时使系统变得更加灵活,部署变得更加快捷,进而实现持续部署并提高成本效率。 原著作者介绍: Viktor Farcic CloudBees资深顾问,熟悉多种编程语言,从最早的Pascal,Basic,ASP,C,C++,Perl,Python,ASP,NET,Visual Basic,C#,JavaScript等等。热衷于微服务、持续部署和测试驱动开发(TDD)。著有《Test-Driven Java Development》一书,该书由Packt出版。 持续集成 想要了解持续部署,我们必须先了解它的前身,也就是持续集成(CI)和持续交付(CD)。 在软件研发生命周期中,集成阶段往往是最让人煎熬的。每个不同的小组可能负责不同的应用和服务,耗费数周、数月甚至是数年时间进行开发。每个小组的需求各不相同,开发人员也尽力实现需求

java 深入理解jvm内存模型 jvm学习笔记

蹲街弑〆低调 提交于 2021-01-10 00:38:40
jvm内存模型 这是java堆和方法区内存模型 参考: https://www.cnblogs.com/honey01/p/9475726.html Java 中的堆也是 GC 收集垃圾的主要区域。GC 分为两种:Minor GC、FullGC ( 或称为 Major GC )。 Minor GC 是 发生在新生代中 的垃圾收集动作, 所采用的是复制算法 。 新生代几乎是所有 Java 对象出生的地方,即 Java 对象申请的内存以及存放都是在这个地方。Java 中的大部 分对象通常不需长久存活,具有朝生夕灭的性质。 当一个对象被判定为 "死亡" 的时候,GC 就有责任来回收掉这部分对象的内存空间。新生代是 GC 收集垃圾的 频繁区域。 当对象在 Eden ( 包括一个 Survivor 区域,这里假设是 from 区域 ) 出生后, 在经过一次 Minor GC 后,如 果对象还存活,并且能够被另外一块 Survivor 区域所容纳 ( 上面已经假设为 from 区域,这里应为 to 区域, 即 to 区域有足够的内存空间来存储 Eden 和 from 区域中存活的对象 ), 则使用复制算法将这些仍然还存活的对 象复制到另外一块 Survivor 区域 ( 即 to 区域 ) 中 ,然后清理所使用过的 Eden 以及 Survivor 区域 ( 即 from 区域 ),

Java之JVM的深入探究(五)--垃圾回收器

萝らか妹 提交于 2021-01-09 21:48:34
预计阅读时间: 9 分钟 我们在上一篇中已经详细的探究了关于JVM的垃圾回收的几种算法,从中我们知道了不同的算法有这不同的优缺点的,然而实际在Java的JVM的并不是单纯的使用其中的某一种算法来实现垃圾回收的,而是将不同的垃圾回收算法包装在不同的垃圾回收器当中,这样用户就可以根据自身的需求,有选择性的使用不同的垃圾回收器,以便让自己的java程序性能到达最佳。 垃圾回收器概述: 垃圾收集器是垃圾回收算法(标记-清除算法、复制算法、标记-整理算法、分代收集算法等)的具体实现,不同商家、不同版本的JVM所提供的垃圾收集器可能会有很在差别,本文主要介绍HotSpot虚拟机中的垃圾收集器。 在探究垃圾回收器之前我们先来回忆下之前探究过的关于JVM内存模型中的Java堆的知识,先来看一下Java堆的结构图如下: java堆内存结构包括:新生代和老年代,其中新生代由一个伊甸区和2个幸存区组成,2个幸存区是大小相同,完全对称的,没有任何差别。我们把它们称为S0区和S1区,也可以称为from区和to区。 JVM的垃圾回收主要是针对以上堆空间的垃圾回收,当然其实也会针对元数据区(永久区)进行垃圾回收,在此我们主要针对堆内存空间的垃圾回收进行探究。 垃圾收集器组合: 下面我们介绍几种常见的垃圾回收器: 1、>>串行收集器: (1)特点:   –它仅仅使用单线程进行垃圾回收   –它是独占式的垃圾回收

为什么阿里Java规约要求谨慎使用SimpleDateFormat

こ雲淡風輕ζ 提交于 2021-01-09 20:54:10
前言 在阿里Java开发规约中,有强制性的提到SimpleDateFormat 是线程不安全的类 ,在使用的时候应当注意线程安全问题,如下: 其实之前已经介绍过使用JDK1.8的DateTimeFormatter 和LocalDateTime来处理时间了,<a href='<https://www.toutiao.com/i6687925831928381966/>'>还在用SimpleDateFormat?Java8都发布N年了,转LocalDateTime吧</a>。今天,就来说说SimpleDateFormat的线程安全问题。 SimpleDateFormat是非线程安全的 时间处理,基本所有项目上都是需要使用到的,往往很多初学者会把SimpleDateFormat定义为static类型,然后在进行时间转化的时候没有做加锁处理。如下: public class Main { private final static SimpleDateFormat SDFT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static void main(String[] args) throws ParseException { System.out.println(SDFT.parse("2019-05-29 12:12:12"

Java之JVM的深入探究(一)

给你一囗甜甜゛ 提交于 2021-01-09 20:42:23
阅读本文需要6分钟 作为一名想要在Java邻域深入的猿猿们,光知道怎么使用JavaAPI是远远不够的,JVM一直是Java进阶知识体系中的重要的部分,并且是不可避免的话题。下面通过接地气的描述与插图带你理解JVM底层是如何进行工作的: 我想只要是学过Java的一定听过这句话吧:“Write Once,Run Anywhere ”(编译一次,随处运行),那么它是如何实现随处运行的呢?带着疑问我们一起看看下面这张图吧: 由上图可知:java程序经过一次编译之后,将java代码编译为字节码也就是class文件,然后在不同的操作系统上依靠不同的java虚拟机进行解释,最后再转换为不同平台的机器码,最终得到执行。这就是Java代码运行的基本原理,那么了解了这个基本原理后,我们尝试着去做更深的探究,那么一个普通的java程序它的执行流程到底是怎样的呢?例如我们写了一段这样的代码: public class HelloWorld { public static void main(String[] args) { System.out.print("Hello world"); } } 这段程序从编译到运行,最终打印出“Hello world”中间经过了哪些步骤呢?我们直接上图 : java代码通过编译之后生成字节码文件(class文件),通过:java HelloWorld执行

Spring/SpringMVC

我的梦境 提交于 2021-01-09 17:03:17
<div class="output_wrapper" id="output_wrapper_id" style="font-size: 15px; color: rgb(62, 62, 62); line-height: 1.8; word-spacing: 2px; letter-spacing: 2px; font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', 'Microsoft YaHei', Arial, sans-serif; background-image: linear-gradient(90deg, rgba(50, 0, 0, 0.05) 3%, rgba(0, 0, 0, 0) 3%), linear-gradient(360deg, rgba(50, 0, 0, 0.05) 3%, rgba(0, 0, 0, 0) 3%); background-size: 20px 20px; background-position: center center;"><h3 id="h1spring" style="color: inherit; line-height: inherit; padding: 0px; margin: 1.6em 0px; font-weight: bold;

已解决No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

依然范特西╮ 提交于 2021-01-09 11:03:12
文章目录 报错问题 解决步骤 报错问题 运行Maven install,却报错: [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Reactor Build Order: [INFO] [INFO] Maven_Total [INFO] Maven_Dao [INFO] Maven_Service [INFO] Maven_Web Maven Webapp [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Maven_Total 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-install-plugin:2.4:install (default-install) @ Maven_Total --- [INFO] Installing D:

校园宿舍管理系统

冷暖自知 提交于 2021-01-09 10:31:57
本实例为一个校园宿舍管理系统, 系统用户分为三个角色,系统管理员 , 楼宇管理员, 学生, 系统管理员可以应用对楼宇管理员的管理工作(增删改查), 学生的管理(增删改查), 楼宇管理(增删改查), 学生入住登记, 学生寝室调换, 学生迁出登记, 学生缺寝记录和迁出记录等的管理 【点击下载实例】 项目对应的实例代码可以通过右侧【下载实例】按钮获取 开发工具: MyEclipse10, JDK1.7, Tomcat7, MySql5.5.53 【项目包含内容】(见下图): 【sushe】 项目源码 【sushe.sql】 数据库脚本 【项目配置】 1. 将类DBHelper中的连接数据库信息修改为本地的数据库信息 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public class DBHelper { private String dbUrl= "jdbc:mysql://localhost:3306/sushe" ; private String dbUser= "root" ; private String dbPassword= "root" ; private String jdbcName= "com.mysql.jdbc.Driver" ; //连接数据库 public Connection getConn(){