JDK

IDEA使用中文api鼠标提示的设置

本秂侑毒 提交于 2020-08-19 11:11:37
最近都在用IDEA来练习,发现有的方面确实比eclipse好用,eclipse里面可添加中文的API 提示,对初期的我帮助很大,但是IDEA却没有找到添加的地方,一直以来还以为不支持这个功能,比较遗憾,今天无意间尽然找到了,虽然用中文API不是一个好的习惯,但是对于初学者来说,还是很有帮助的. 效果如图,方便英语不太好的同学,在初期查看API文档,最终的解决方法还是要学好英语,我也要加油!!!! 首先下载中文API: http://pan.baidu.com/s/1bp4wy3X 解压 ,我解压到JDK的安装目录下的 打开IDEA File--Project Stucture --SDKs--Doucumentation Paths--+号添加路径: 定位到api这一层就OK了 英文才是最终的目标哦,加油!!! 来源: oschina 链接: https://my.oschina.net/u/4372568/blog/4510641

JDK JRE JVM的关系

爱⌒轻易说出口 提交于 2020-08-19 09:37:13
JDK JDK是(Java Development Kit)的缩写,指的是JAVA软件开发工具包(SDK)。 JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+JAVA系统类库)和JAVA工具。 在目录下面有四个文件夹、一个src类库源码压缩包和几个声明文件。 其他四个文件夹分别是:bin、include、lib、 jre以及一些版本信息文件。 JDK目录介绍 bin:包含一些用于开发Java程序的工具,例如:编译工具(javac.exe)、运行工具 (java.exe) 、打包工具 (jar.exe)等,最主要的是编译器(javac.exe)。 include:C语言的头文件,用于支持Java程序设计。 jre:Java运行时环境的根目录(注意:这里的bin、lib文件夹和jre里的bin、lib是不同的)。 lib:包含开发Java程序所使用的类库文件。 javafx-src.zip:包含 JavaFX 平台源代码的压缩包。 src.zip:包含 Java 平台源代码的压缩包。 其他:COPYRIGHT和LICENSE为版权和签证的说明性文档,以及一些引用许可证。 JRE JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及JAVA核心类库。 JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib。

01.Java基础语法

ぃ、小莉子 提交于 2020-08-19 09:36:11
目录 01.Java基础语法 一,环境搭建 1,Java体系与特点 2,Java跨平台原理 2.1 Java虚拟机(JVM) 2.2 垃圾回收器(GC) 2.3 Java SE组成概念图 2.4 JDK与JRE 2.5 环境变量 3,Java程序开发的三个步骤 4,语法 注释 Java代码的位置 语法规则 二,基础语法 1,变量与基本数据类型 1.1 变量 1.2 数据类型 1.3 标识符 1.4 数据类型的转换 1.5 部分变量的使用 1.6 ASCII码表 2,方法 2.1 概述 2.2 格式 2.3 权限修饰符详解 2.4 返回值 2.5 参数列表详解 2.6 方法实例 3,运算符 3.1 算数运算符 3.2 赋值运算符 3.3 关系运算符 3.4 逻辑运算符 3.5 字符串连接运算符 3.6 三目运算符 4,命名规范 5,转义字符 三,流程控制 1,接收用户输入 2,程序的执行结构 3,分支执行结构 3.1 if条件语句 3.2 switch语句 4,循环执行结构 4.1 while循环 4.2 do-while 循环 4.3 for循环 4.4 break、continue与多重循环的跳出 4.5 判断用户输入类型 四,数组 1,数组 1.1 数组概念 1.2 数组创建格式 1.3 数组相关操作 2,数组常见问题 2.1 下标越界 2.2 空指针问题 3,数组应用 3.1

Java历史[详细的阐述了Java发展的历史过程]

﹥>﹥吖頭↗ 提交于 2020-08-19 05:40:16
   Java历史   学习Java语言之前,我觉得大家应该是从头开始,对吧?不管你之前是学过还是没学过,都和学习某一个知识一样,从头开始去了解它,然后到这个深入的掌握,到最后你可能理解并且灵活的运用。所以它肯定是这样的一个过程,所以不管你们之前有没有学过,反正建议大家都认真地看一看。那么,这“头”,哪里是“头”呢?在学习Java语言之前呢,我们得先了解它的历史背景,我觉得这应该是一个“头”,因为你学习任何一个东西的话得先了解它。是这样的把?也许你会觉得这个东西对于你来讲会无所谓,只要我会写程序就可以了,那关键的问题是,你在以后去工作当中,跟别人谈论的时候,你做什么的呀?你得跟人解释啊,解释我是做软件开发的,得跟家人解释我是做Java的,回头家里人就搞不清楚了。所以我觉得历史背景应该算作一个知识点的完整度吧,所以大家需要了解一下。但是这个东西也可以在网上查得到哈,去网上一查,百度一搜,随便都有,或许大家之前也了解过相关的信息。作为知识点的完整度,就当听故事吧,好吧。   咱们的第一堂课,就从Java的“头”(历史)开始说一说。那么我们想要了解它的这个背景呢,我们应该是从这个Java的创始人开始说起,对吧。讲故事嘛,总得有个头,所以一定得从这个创始人来说起。   创始人是谁呢?首先,创始人他是一个男人,其次,这个创始人他不是中国人,哈!你觉得我这是在废话,是吧,都知道,所以不闹了

你必须掌握的 21 个 Java 核心技术!

 ̄綄美尐妖づ 提交于 2020-08-19 04:25:52
经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。 1. JVM相关 对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。 不过对于一个有着3年以上Java经验的资深开发者来说,不会JVM几乎是不可接受的。 JVM作为java运行的基础,很难相信对于JVM一点都不了解的人可以把java语言吃得很透。 我在面试有超过3年Java经验的开发者的时候, JVM几乎就是一个必问的问题了。 当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证java开发能力的高低。 在JVM这个大类中,我认为需要掌握的知识有: JVM内存模型和结构 GC原理,性能调优 调优:Thread Dump, 分析内存结构 class 二进制字节码结构, class loader 体系 , class加载过程 , 实例创建过程 方法执行过程 Java各个大版本更新提供的新特性(需要简单了解) 2. Java的运行 这条可能出看很简单,java程序的运行谁不会呢? 不过很多时候, 我们只是单纯通过IDE去执行java程序,底层IDE又是如何执行java程序呢?很多人并不了解。 这个知识点是最最基本的java开发者需要掌握的,第一个肯定是教你如何在命令行中执行java程序

精美图文讲解Java AQS 共享式获取同步状态以及Semaphore的应用

巧了我就是萌 提交于 2020-08-19 04:13:48
| 好看请赞,养成习惯 你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it well enough 现陆续将Demo代码和技术文章整理在一起 Github实践精选 ,方便大家阅读查看,本文同样收录在此,觉得不错,还请Star🌟 看到本期内容这么少,是不是心动了呢? 前言 上一篇万字长文 Java AQS队列同步器以及ReentrantLock的应用 为我们读 JUC 源码以及其设计思想做了足够多的铺垫,接下来的内容我将重点说明差异化,如果有些童鞋不是能很好的理解文中的一些内容,强烈建议回看上一篇文章,搞懂基础内容,接下来的阅读真会轻松加愉快 AQS 中我们介绍了独占式获取同步状态的多种情形: 独占式获取锁 可响应中断的独占式获取锁 有超时限制的独占式获取锁 AQS 提供的模版方法里面还差共享式获取同步状态没有介绍,所以我们今天来揭开这个看似神秘的面纱 AQS 中的共享式获取同步状态 独占式是你中没我,我中没你的的一种互斥形式,共享式显然就不是这样了,所以他们的唯一区别就是: 同一时刻能否有多个线程同时获取到同步状态 简单来说,就是这样滴: 我们知道同步状态 state 是维护在 AQS 中的,抛开可重入锁的概念,我在上篇文章中也提到了

Java 字符串常量池到底是在PermGen方法区、是在heap堆里面、还是在Metaspace 元空间里面呢?

ⅰ亾dé卋堺 提交于 2020-08-19 04:13:19
要是没有实践过别人书本上的理论的话,就还是会说常量池在方法区里面,要是知道方法区已经随jdk升级,被逐步干掉的话,就会看到有的文章说移动到heap堆里面了,还有极少的说移动到Metaspace里面了,产生了分歧。这个时候就需要实践出真知了。 /** * 测试 常量池在分区的位置 * * @author LiXuekai on 2020/6/9 */ public class StringConstantPoolTest { public static void main(String[] args) { List<String> list = Lists.newArrayList(); while (true) { list.add(String.valueOf(System.currentTimeMillis()).intern()); } } } 代码很简单,那本书上也大致是这个样子。String.intern()会将字符串丢到字符串常量池里面。以此来不断增加常量池的使用部分。 jdk1.6的测试 他当时测试的时候,出的异常是方法区OOM. 当时的jdk还是1.6,我这就不测试1.6的了。 执行结果说明常量池在方法区。 jdk1.7的测试 下面是jdk1.7的测试情况,还是这个代码,就是启动参数设置的不一样。 使用的jvm参数设置: -XX:+PrintGCDetails

JVM 总结

喜你入骨 提交于 2020-08-18 21:49:06
JVM GC 总结。 周志明大大的《深入理解Java虚拟机》出第三版了,早早的买了这本书,却一直没有花时间看。近来抽空温习了一下,感觉又有了新的收获。这里简单总结下。 GC的由来 由于 堆 的动态性,操作系统将堆交由给了开发者自己管理,手动申请,手动释放。对于 C++ ,则是将这个权限继续交给了开发者,而对于 Java ,则是将这个过程自动化了。为什么要释放内存呢?最简单的原因就是操作系统一共给你了4G的内存空间,你需要的时候,就去借用。有借有还,再借不难,只借不还,最后4G内存空间被用完了,你就无法再申请新的内存了。内存泄漏,就是只借不还。 JVM 在操作系统与开发者之间又封装了一层,间接的接管了内存的划分。同时也将堆统一管理起来,使得开发者只管借用内存,由 JVM 负责回收,了解 JVM 的回收机制,明白它的原理,能让开发者在不同的场景下,定制不同的回收规则,提高回收效率。 关于GC的思考 如果让我设计一个能自动回收垃圾的虚拟机,我会怎么设计呢? 什么时候开始回收? 怎么判断这部分内存可以回收? 怎么回收这部分的垃圾? 这3个问题,也是 JVM 开发者一直在思考的问题。之前简单了解过 JVM ,就知道 JVM 会有 Stop The World 的问题,这对于用户体验来说非常不好,其根本原因便是因为在回收垃圾的时候,用户线程可能会修改这部分内存,如果不暂停用户线程

mybatis之foreach用法

核能气质少年 提交于 2020-08-18 21:27:05
在做mybatis的mapper.xml文件的时候,我们时常用到这样的情况:动态生成sql语句的查询条件,这个时候我们就可以用mybatis的foreach了 foreach元素的属性主要有item,index,collection,open,separator,close。 item: 集合中元素迭代时的别名,该参数为必选。 index :在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选 open :foreach代码的开始符号,一般是(和close=")"合用。常用在in(),values()时。该参数可选 separator :元素之间的分隔符,例如在in()的时候,separator=","会自动在元素中间用“,“隔开,避免手动输入逗号导致sql错误,如in(1,2,)这样。该参数可选。 close: foreach代码的关闭符号,一般是)和open="("合用。常用在in(),values()时。该参数可选。 collection: 要做foreach的对象,作为入参时,List对象默认用"list"代替作为键,数组对象有"array"代替作为键,Map对象没有默认的键。当然在作为入参时可以使用@Param("keyName")来设置键,设置keyName后,list,array将会失效。 除了入参这种情况外

Spring AOP 原理

落爺英雄遲暮 提交于 2020-08-18 21:17:22
一、AOP是什么? AOP的全称是Aspect Orient Programming,即面向切面编程。是对OOP(Object Orient Programming)的一种补充,战门用于处理一些具有横切性质的服务。常常用于日志输出、安全控制等。 上面说到是对OOP的一种补充,具体补充的是什么呢?考虑一种情况,如果我们需要在所有方法执行前打印一句日志,按照OOP的处理思想,我们需要在每个业务方法开始时加入一些语句,但是我们辛辛苦苦加完之后,如果又要求在这句日志打印后再打印一句,那是不是又要加一遍?这时候你一定会想到,在某个类中编写一个日志打印方法,该方法执行这些日志打印操作,然后在每个业务方法之前加入这句方法调用,这就是面向对象编程思想。但是如果要求我们在业务方法结束时再打印一些日志呢,是不是还要去每个业务方法结束时加一遍?这样始终不是办法,而且我们总是在改业务方法,在业务方法里面掺杂了太多的其他操作,侵入性太高。 这时候AOP就起到作用了,我们可以编写一个切面类(Aspect),在其中的方法中来编写横切逻辑(如打印日志),然后通过配置或者注解的方式来声明该横切逻辑起作用的位置。 二、实现技术? AOP(这里的AOP指的是面向切面编程思想,而不是Spring AOP)主要的的实现技术主要有Spring AOP和AspectJ。 1、AspectJ的底层技术。