JDK

小师妹学JVM之:JIT中的PrintCompilation

会有一股神秘感。 提交于 2020-10-21 06:43:35
文章目录 简介 PrintCompilation 分析PrintCompilation的结果 总结 简介 上篇文章我们讲到了JIT中的LogCompilation,将编译的日志都收集起来,存到日志文件里面,并且详细的解释了LogCompilation日志文件中的内容定义。今天我们再和小师妹一起学习LogCompilation的姊妹篇PrintCompilation,看看都有什么妙用吧。 PrintCompilation 小师妹:F师兄,上次你给讲的LogCompilation实在是太复杂了,生成的日志文件又多,完全看不了,我其实只是想知道有哪些方法被编译成了机器码,有没有什么更加简单的办法呢? 真理的大海,让未发现的一切事物躺卧在我的眼前,任我去探寻- 牛顿(英国) 当然有的,那就给你介绍一下LogCompilation的妹妹PrintCompilation,为什么是妹妹呢?因为PrintCompilation输出的日志要比LogCompilation少太多了。 老规矩,上上我们的JMH运行代码,文章中使用的代码链接都会在文末注明,这里使用图片的原因只是为了方便读者阅读代码: 这里和上次的LogCompilation不同的是,我们使用:-XX:+PrintCompilation参数。 其实我们还可以添加更多的参数,例如: - Xbatch - XX : -

Java中的类型推断和lambda表达式

核能气质少年 提交于 2020-10-21 03:43:27
简介 java是强类型的编程语言,每个java中使用到的变量都需要定义它的类型,否则会编译失败。强类型语言的好处就是可以尽可能的在编译期间就发现代码中可能出现的问题,从而减少在运行时出现问题的可能性。 相对的,强类型语言的缺点就是不那么的灵活多变,写起来比较冗余。 JDK8之前,java是不支持类型推断的,在JDK8中,引入了lambda表达式,从此类型推断产生了。 本文将会讲解类型推断在lambda表达式中的最佳实践和在使用中应该注意的事项。 更多精彩内容且看: 区块链从入门到放弃系列教程-涵盖密码学,超级账本,以太坊,Libra,比特币等持续更新 Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新 Spring 5.X系列教程:满足你对Spring5的一切想象-持续更新 java程序员从小工到专家成神之路(2020版)-持续更新中,附详细文章教程 更多内容请访问 www.flydean.com 类型的显示使用 假如我们定义了一个CustUser类,并且其中有age和name两个属性: [@Data](https://my.oschina.net/difrik) @AllArgsConstructor public class CustUser { int age; String name; } 看下我们怎么在Stream中显示使用类型:

泛型的使用及相关知识点

一曲冷凌霜 提交于 2020-10-20 07:57:32
目录 泛型的概念 使用泛型的好处 泛型的使用 泛型的定义 自定义泛型结构 自定义泛型类、泛型接口 自定义泛型方法 泛型在继承上的体现 泛型中通配符的使用 泛型的概念 所谓泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时(例如,继承或实现这个接口,用这个类型声明变量、创建对象时)确定(即传入实际的类型参数,也称为类型实参)。 使用泛型的好处 解决元素存储的安全性问题,好比商品、药品标签,不会弄错。 解决获取数据元素时,需要类型强制转换的问题,好比不用每回拿商品、药品都要辨别。 Java泛型可以保证如果程序在编译时没有发出警告,运行时就不会产生ClassCastException异常。同时,代码更加简洁、健壮。 泛型的使用 泛型的定义 class Person < T > { // 使用T类型定义变量 private T info ; // 使用T类型定义一般方法 public T getInfo ( ) { return info ; } public void setInfo ( T info ) { this . info = info ; } // 使用T类型定义构造器 public Person ( ) { } public Person ( T info ) { this . info = info ;

设计模式系列之建造者模式(Builder Pattern)——复杂对象的组装与创建

霸气de小男生 提交于 2020-10-20 04:12:20
说明:设计模式系列文章是读 刘伟 所著 《设计模式的艺术之道(软件开发人员内功修炼之道)》 一书的阅读笔记。个人感觉这本书讲的不错,有兴趣推荐读一读。详细内容也可以看看此书作者的博客 https://blog.csdn.net/LoveLion/article/details/17517213 模式概述 模式定义 没有人买车会只买一个轮胎或者方向盘,大家买的都是一辆包含轮胎、方向盘和发动机等多个部件的完整汽车。如何将这些部件组装成一辆完整的汽车并返回给用户,这是 建造者模式 需要解决的问题。建造者模式又称为生成器模式,它是一种较为复杂、使用频率也相对较低的创建型模式。建造者模式为客户端返回的不是一个简单的产品,而是一个由多个部件组成的复杂产品。 它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需建造者的类型即可。它关注如何一步一步创建一个的复杂对象,不同的具体建造者定义了不同的创建过程,且具体建造者相互独立,增加新的建造者非常方便,无须修改已有代码,系统具有较好的扩展性。 建造者模式(Builder Pattern) :将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。 建造者模式一步一步创建一个复杂的对象

gradle常见问题

有些话、适合烂在心里 提交于 2020-10-19 18:17:26
gradle常见问题 环境:win10/android studio3.6.3/jdk1.8.0 1.一查 项目使用的gradle版本是否下载完成,否则会提示zip包相关的错误, C:\Users\用户名.gradle\wrapper\dists 下有各种下载的版本,以我的gradle5.6.4-bin版本为例,下载好后bin目录下面有这两个文件,如果没有下载好也可以自己从官网下载然后放在dists目录下面,下载地址:https://downloads.gradle-dn.com/distributions/gradle-6.5-bin.zip 可以手动修改url下载自己需要的版本 all版跟bin版也要区分哦,关于他们的区别,从我这的文件夹来看少了例子和源码 2.两对应 android gradle版本与 项目gradle对应,我的android gradle插件版本3.5.2 gradle支持maven仓库,可以添加阿里云maven镜像仓库 我的项目gradle版本5.6.4,他好像会先从本地检测,没有就通过这个链接下载 对应关系如下,详情: gradle-plugin gradle的环境变量 与 项目gradle版本相同 注意 :最好设置为长期使用的gradle版本,并且确保JAVA_HOME已经配置 配置完可以运行gradle projects(在你的根项目目录下输入

springboot+springcloud+mybatis+微服务+分布式+商业模式构建b2b2c电子商务

*爱你&永不变心* 提交于 2020-10-18 22:25:46
涉及平台:平台管理(包含自营店面)、商家端(PC端、手机端)、买家平台(PC端、H5/公众号、小程序、APP端(IOS/Android)、业务微服务 核心架构:Spring Cloud、Spring Boot、Mybatis Plus、Redis 前端框架:VUE、Bootstrap/H5/CSS3、IOS、Android、小程序 核心思想:分布式、微服务、云架构、模块化、原子化、持续集成、集群部署 开发模式:代码生成工具、驱动式开发模式、提高开发效率 社交模式:VR全景虚拟现实线上线下、直播带货、短视频带货、分销分润、代跑腿配送等 JDK/数据库:JDK 1.8+/MYSQL 5.6+ 了解源码可以加QQ: 1038774626 来源: oschina 链接: https://my.oschina.net/u/3613013/blog/4306153

Hadoop2.7.3在centos7上的单机版安装部署

一个人想着一个人 提交于 2020-10-18 10:52:36
1、使用到的工具版本说明: centos版本:CentOS-7.4-x86_64-DVD-1708.iso JDK版本:jdk-8u231-linux-x64.tar.gz Hadoop版本:hadoop-2.7.3.tar.gz https://archive.apache.org/dist/hadoop/common/ ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201017131939971.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l0YW5nZGlnbA==,size_16,color_FFFFFF,t_70#pic_center) 2、环境准备 2.1 安装centos 参考: 在VirtualBox中安装CentOS7详解(Mac版) 2.2 关闭防火墙 # 停止firewall systemctl stop firewalld.service # 禁止firewall开机启动 systemctl disable firewalld.service 2.3 配置SSH免密码登录 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

告诉你一个 AtomicInteger 的惊天大秘密!

我的未来我决定 提交于 2020-10-18 10:49:16
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者丨cxuan 来源丨Java建设者 (ID:javajianshe) i++ 不是线程安全的操作,因为它不是一个原子性操作。 那么,如果我想要达到类似 i++ 的这种效果,我应该使用哪些集合或者说工具类呢? 在 JDK1.5 之前,为了确保在多线程下对某 基本 数据类型或者 引用 数据类型运算的原子性,必须依赖于外部关键字 synchronized ,但是这种情况在 JDK1.5 之后发生了改观,当然你依然可以使用 synchronized 来保证原子性,我们这里所说的一种线程安全的方式是原子性的工具类,比如 「AtomicInteger、AtomicBoolean」 等。这些原子类都是线程安全的工具类,他们同时也是 Lock-Free 的。下面我们就来一起认识一下这些工具类以及 Lock - Free 是个什么概念。 了解 AtomicInteger AtomicInteger 是 JDK1.5 新添加的工具类,我们首先来看一下它的继承关系 与 int 的包装类 Integer 一样,都是继承于 Number 类的。 这个 Number 类是基本数据类型的包装类,一般和数据类型有关的对象都会继承于 Number 类。

Java刷题常用API整合

我与影子孤独终老i 提交于 2020-10-18 09:12:02
零:输入、输出 远程在线面试的手撕代码环节,通常需要白板上写代码。 如果需要在控制台输入、输出,需要借助Scanner类。 示例如下: import java . util . Scanner ; public class Solution { public static void main ( String [ ] args ) { Scanner scanner = new Scanner ( System . in ) ; //方法1:一般用来接收数组。以空格分界 while ( scanner . hasNext ( ) ) { int num = scanner . nextInt ( ) ; /*或者*/ String next = scanner . next ( ) ; } //方法2:一般用来接受字符串。以换行符分界 while ( scanner . hasNextLine ( ) ) { String str = scanner . nextLine ( ) ; } } 一:Integer 类 1.String -> int: int value = Integer.parseInt(str); 2.将str转换成二进制的int: int binary = Integer.parseInt(str,2); 3.十进制转二进制: String binaryN

2020.09.04 Java学习笔记(一)

自作多情 提交于 2020-10-18 04:40:30
2020.09.04 Java学习笔记(一) 一.CMD打开方式 1.开始+系统+命令提示符 2.Win键+R 输入cmd打开控制台 3.在任意的文件夹下面,按住shift键+鼠标右击点击,在此处打开命令行窗口 4.资源管理器的地址栏前面 cmd 路径 管理员方式运行:选择以管理员方式运行 二.常用的Dos命令 dir ( directory ) :列出当前目录下的文件以及文件夹 md ( make directory ) : 创建目录 rd ( remove directory ) :删除目录 cd ( change directory ) :进入指定目录 cd .. : 退回到上一级目录 cd\ : 退回到根目录 cd > 文件名:创建文件 del:删除文件 exit:退出dos命令行 cls ( clear screen ) : 清屏 ipconfig:查看电脑ip 三.Java特性与优势 简单性,面向对象,可移植性,高性能,分布式,动态性,多线程,安全性,健壮性 四.Java三大版本 JavaSE:标准版(桌面程序,控制台开发等) JavaME:嵌入式开发(手机,小家电) JavaEE:E企业级开发(web端,服务器开发) 五.JDK,JRE,JVM 1.JDK(Java Development Kit) 是 Java 语言的软件开发工具包( SDK )