关于方法区的变化 1、 java7之前,方法区位于永久代(PermGen),永久代和堆相互隔离,永久代的大小在启动JVM时可以设置一个固定值,不可变; 2、 java7中,static变量从永久代移到堆中...元空间并不在虚拟机中,而是使用本地内存 jdk1.8新特性知识点: Lambda表达式 函数式接口 方法引用和构造器调用 Stream API 接口中的默认方法和静态方法 新时间日期API 另外: 在...jdk1.8中对hashMap等map集合的数据结构优化。...hashMap数据结构的优化 原来的hashMap采用的数据结构是哈希表(数组+链表),hashMap默认大小是16,一个0-15索引的数组,如何往里面存储元素,首先调用元素的hashcode 方法...(锁分段机制),concurrentLevel,jdk1.8采用CAS算法(无锁算法,不再使用锁分段),数组+链表中也引入了红黑树的使用 详情请见---https://blog.csdn.net/qq
JDK 9引入了一种新的编译模式AOT(Ahead of Time Compilation),它是直接将字节码编译成机器码,这样就避免了JIT预热等各方面的开销。JDK支持分层编译和AOT协作使用。...JVM有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。...字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在。 JDK 和 JRE JDK是Java Development Kit,它是功能齐全的Java SDK。...例如,如果要使用JSP部署Web应用程序,那么从技术上讲,您只是在应用程序服务器中运行Java程序。那你为什么需要JDK呢?...因为应用程序服务器会将 JSP 转换为 Java servlet,并且需要使用 JDK 来编译 servlet。
步骤 1:定义一个可重复的注解类型。 ---- 1.2. 步骤 2:定义容器注解类型 ---- 1.3. 检索注解 ---- 有一些可用的反射的 API 可以用来检索注解。...可以返回单个注解的方法,比如 AnnotatedElement.getAnnotation(Class) ,由于请求的类型只有一个注解的时候才会返回单一注解。...如果有多个注解,你可以通过获取到他们的容器注解来得到他们。使用这种方法,之前的代码还是可以继续运行的。...注解可以被使用 0 次、1次,假如注解类型被添加了 @Repeatable 注解,则可以使用多次。可以使用源注解 @Target 限制注解可以使用的地方。...例如,你可以创建一个只能被用在方法和字段上的可重复的注解。仔细地设计你的注解类型,让使用注解的开发者感觉到它的灵活和强大。 2.
关于jdk环境安装的一些问题 jdk在自己电脑上安装完成之后,会有一个安装的目录,默认是放在C盘目录下,但最后放在其他盘符上,因为有的时候电脑要重装系统C盘中的文件会被清掉。...其实如果已经安装在C盘下,重装系统或换台电脑也没关系,也不用重新下载JDK去安装了,直接把安装好的JDK安装目录给移除来,放在重装系统的电脑或新电脑上就可以直接用了,然后再配置下环境变量 一般配置环境变量时...安装JDK的时候其实JDK中就自带了jre,但也可以默认安装例外的jre,默认情况下是自动安装的,例外的jre一般是跟JDK在同一目录下。如: ? ?...重新在电脑上安装JDK和直接从例外一台电脑上拷贝来的JDK的区别就是:重装的JDK会有注册表在电脑上,在联网的情况下回更新JDK。但移植过来的JDK不会更新。两者都是可以使用的。...当jdk目录改变时,只要改变JAVA_HOME对应的值即可!
可以在 .travis.yml 文件中定义使用的 JDK 版本。 在文件中: jdk: - openjdk8 在上面中定义了 JDK 的版本。...如希望使用 JDK 11 的版本的话,你可以定义为: jdk: - openjdk11 下面的代码,然后再提交代码到 CI 中进行编译。...然后通过 CI 的界面中进行查看,你可以看到 CI 已经使用更新后的版本。 然后你可以从构建 CI 的日志中查看编译的情况。...https://www.ossez.com/t/travis-jdk/781
文章目录 前言 一、池的概念 二、线程池是什么 三、JDK中线程池的使用 3.1 线程池的核心父接口 ExecutorService接口 3.2 Executors =》 线程池的工具类 3.3 ThreadPoolExector...方法终止后,表示当前用户不再使用此连接,就回收连接到连接池中,而不是直接销毁(同一个连接可以被多个用户使用多次,减少了每次创建连接和销毁连接的系统开销) 同样的,不同线程只是run方法的内容不同,线程的大致流程都是一样的...三、JDK中线程池的使用 描述线程池的核心类,最常用的一个子类- ThreadPoolExecutor,这个类的构造方法就是创建一个线程池的所有核心参数 3.1 线程池的核心父接口 ExecutorService...3.2 Executors =》 线程池的工具类 使用这个类就可以创建JDK内置的四大线程池 Java中类的命名规律 凡是类s =》 工具类 Arrays(数组工具类,copyOf,sort等等) Executors...(排队时间最长的任务) DisCardPolicy:丢弃新来的任务 四、线程池的工作流程: 如图所示: 拓展 阿里编码规约:尽量不要使用内置线程池,最好根据实际的业务需求,定制线程池自己的new ThreadPoolExecutor
最近在读《深入理解java虚拟机》第二版,在JDK1.8环境下遇到一个关于MethodHandle使用上的问题,在这里记录下。...https://github.com/floor07/essential-jvm (github jvm的读书笔记) 本文目录如下: 引子 java.lang.invoke简介 关于引子书上的解法 JDK1.8...简单使用方式 创建目标方法的MethodType对象,MethodType.methodType方法的第一个参数是返回值 ,之后是按目标方法接收的参数的顺序填写参数类型。 ...但是 **该解法在JDK1.8下不行**,运行结果是I’m father ? JDK1.8为什么跟预想的不一致? 为什么1.8跟预想的不一致?...当该工厂对象被查找类创建后,查找类的标识,安全信息将存储在其中。 查找类(或它的委托)将使用工厂方法在被查找对象上依据查找类的访问限制,创建method handles。
* 他代表list被修改的次数(一般指 add,remove 次数。...* 这个变量,一般在是 iterator , list iterator 实现时用到的,并且在他们的 next,remove,add,previous 等方法中,会利用它决定是否抛出ConcurrentModificationException...具体在像add,remove方法中,增加modCount的值,每次调用加1。...return (E) elementData[lastRet = i];//lastRet 赋值本次的坐标。...由于 Iterator 对象不是线程安全的,在多线程中用it.remove()删除元素,同样可以抛出 ConcurrentModificationException异常 !
目前JDK出现的情况如下: 这里JavaJDK是有问题的,因为只有jre而没有JDK。正确做法是重新安装新的JDK。 正常的JDK下的目录是这样的: 选择jdk开头的文件夹就可以了。
下面我们通过案例来看一下TreeSet的使用. 1、使用TreeSet)对String类型的数据进行存储,存储顺序默认按字母升序排序。...最后使用floor()方法获得集合中最大的元素小于或等于给定元素的值,并输出。...运行效果 说明: 1)关于floor()方法,对于intSet.floor(10),集合中有等于10的元素,所以输出结果为10;对于对于intSet.floor(2),集合中没有2,那么小于2的最大元素就是...运行效果 说明: 1)注意创建TreeSet)对象时,要指定Comparator接口的实现类作为参数 2)这里使用了pollFirst()方法,该方法比较特殊,可以返回元素,但是又把这个元素删除了,...该方法的使用方式与pollFirst()类似,小伙伴可以尝试使用 4)如果对age进行降序排序,可以将PersonComparator类的如下选中代码改为:o2.getAge()-o1.getAge()
一般来说,我们会用time做这些事情,一个是,获取日期,一个是计算某段代码的运行时间。额,这是vs2008的。C++11有更好的精度。...clock_t单位是(ms),转为s 要/CLOCKS_PER_SEC(1000) #include #include #include 接着,使用的话
本文主要介绍的是如何是Linux环境下安装JDK的,因为Linux环境下,很多时候也离不开Java的,下面笔者就和大家一起分享如何jdk1.8的过程吧。...]# 9、测试jdk是否安装成功 输入javac命令如果出现以下的文字就说明编译成功了(如果你之前安装centos7时使用的语言是英文,那出现的就是类似这样排版的英文) [root@itheima... -deprecation 输出使用已过时的 API 的源位置 -classpath 指定查找用户类文件和注释处理程序的位置 -cp...指定放置生成的本机标头文件的位置 -implicit:{none,class} 指定是否为隐式引用文件生成类文件 -encoding 指定源文件使用的字符编码...> 请确保使用的 API 在指定的配置文件中可用 -version 版本信息 -help 输出标准选项的提要
(使用浏览器监视网络请求验证): 1、只能为 input、textarea、select三种类型的标签。...2、只有三种标签的value属性的值(select是选中项的value)才会提交给服务器。标签必须设定name属性(道理:没有name怎么拼网址i=5)。...如果要将标签的value属性值提交到服务器,则必须为标签设定name属性,提交到服务器的时候将会以“name=value”的键值对的方式提交给服务器。name是给服务器用的,id是给Dom用的。...4、当input=submit的时候,只有被点击的按钮(要有name)的value才会被提交(道理:否则我知道谁被点了?)。 5、放到form标签内。...id不能重复,name可以重复,重复的name的值都会被提交给服务器。 4、服务器端用context.Request["username"]来根据表单项的name来获得提交的属性值。
在iOS开发中,对于多线程,大多数开发者使用苹果提供的简单的GCD, 频繁的使用GCD,并发队列并不会去管理最大并发数,无限制提交任务给并发队列,会给性能带来问题。...for循环中使用block,并且需要block执行完成后继续执行后续代码 dispatch_group_t group = dispatch_group_create(); for (UIImage *
大家好,又见面了,我是你们的朋友全栈君。...当输入框被键盘挡住时,可以使用scrollIntoView让输入框回到视野 //一定要设置高度才会有效果 <
在ARC项目中使用 performSelector: 函数出现“performSelector may cause a leak because its selector is unknown”这样的警告...而使用 performSelector: 时ARC并不知道该方法的返回值是什么,以及该如何处理?该忽略?...: SuppressPerformSelectorLeakWarning([self performSelector:selector]) 这是对#pragma 一个作用的展现,想了解更多关于 #...pragma 在OC中的使用,请移步到我的这篇文章: 方法二: SEL selector = NSSelectorFromString([NSString stringWithFormat:@"forDrow...,算是比较底层的使用方法了。
在当前使用的 IntelliJ 中的 JDK 版本为 1.8,如何修改 IntelliJ 使用的 JDK 版本为 1.11 呢? 你可以在 IntelliJ 中进行修改。...选择 File 后,然后选择 Project Structure 然后需要在你的项目结构中首先安装不同的 JDK 版本。 选择项目(Project)后选择不同的 JDK 和不同的编译级别。...然后刷新你的项目在进行编译的时候,你会发现你的 IntelliJ 已经使用设置的新 JDK 版本进行编译项目了。 请参考链接有关具体的问答内容:IntelliJ 更改项目使用的 JDK 版本
在当前使用的 IntelliJ 中的 JDK 版本为 1.8,如何修改 IntelliJ 使用的 JDK 版本为 1.11 呢? 你可以在 IntelliJ 中进行修改。...然后需要在你的项目结构中首先安装不同的 JDK 版本。 ? 选择项目(Project)后选择不同的 JDK 和不同的编译级别。...然后刷新你的项目在进行编译的时候,你会发现你的 IntelliJ 已经使用设置的新 JDK 版本进行编译项目了。 ? 请参考链接有关具体的问答内容:IntelliJ 更改项目使用的 JDK 版本
一、WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1、 使用JDK开发(1.6及以上版本) 2、使用CXF框架开发(工作中) 二、...使用JDK开发WebService 2.1、开发WebService服务器端 1、定义一个interface,使用@WebService注解标注接口,使用@WebMethod注解标注接口中定义的所有方法...关于发布WebService主要就是通过javax.xml.ws.Endpoint类提供的静态方法publish进行发布,如果是普通的java项目,那么可以专门写一个类用于发布WebService,如果是...2.2、开发WebService客户端 1、借助jdk的wsimort.exe工具生成客户端代码,wsimort.exe工具位于Jdk的bin目录下,如下图所示: ? ...以上就是使用JDK开发WebService的相关内容。
Vuex.Store({ modules: { user, permission, money, menu } }); 单个文件中的代码实例
领取专属 10元无门槛券
手把手带您无忧上云