(Java)常用API(四)大数据运算

【BigInteger】


import java.math.BigInteger;

/*
 * 超级大的整数运算
 *   超过long的取值范围整数,需要封装成BigInteger类型对象
 *   它们的四则运算都是通过方法来实现的
 * 
 */
public class BigIntegerDemo1 {
	public static void main(String[] args) {
		function_2();
	}
	/*
	 * BigInteger类的构造方法
	 *     传递字符串,要求数字格式,没有长度限制
	 */
	public static void function_1(){
		BigInteger b = new BigInteger("12345678901234567890123456789");
		System.out.println(b);
	}
	
	/*
	 * 四则运算
	 * 
	 */
	public static void function_2(){
		BigInteger b1 = new BigInteger("12345678901234567890123456789");
		BigInteger b2 = new BigInteger("12345678901234567890123456789");
		
		//1.加法运算,调用方法add
		BigInteger bigadd = b1.add(b2);
		System.out.println(bigadd);
		
		//2.减法运算,调用方法subtract
		BigInteger bigsub = b1.subtract(b2);
		System.out.println(bigsub);
		
		//3.乘法运算,调用方法multiply
		BigInteger bigmul = b1.multiply(b2);
		System.out.println(bigmul);
		
		//4.除法运算,调用方法divide
		BigInteger bigdiv = b1.divide(b2);
		System.out.println(bigdiv);
	}

}

【BigDecimal类】

import java.math.BigDecimal;

public class BigDecimalDemo1 {
	public static void main(String[] args) {
		
		function_2();
		// 造成结果原因:计算机二进制中表示浮点数不精确造成的
		//System.out.println(0.09 + 0.01);  // 0.09999999999999999
		//System.out.println(1.0 - 0.32);   // 0.6799999999999999
		//System.out.println(1.015 * 100);  // 101.49999999999999
		//System.out.println(1.301 / 100);  // 0.013009999999999999
	}
	
	/*
	 * 超大型的浮点数据,提供高精度放入浮点运算  BigDecimal
	 * 
	 * BigDecimal 实现三则运算  + - * 
	 * 
	 */
	public static void function_1(){
		BigDecimal b1 = new BigDecimal("0.09");
		BigDecimal b2 = new BigDecimal("0.01");
		//1.求和,调用add方法
		BigDecimal bigadd = b1.add(b2);
		System.out.println(bigadd);             // 0.10
		
		BigDecimal b3 = new BigDecimal("1.0");
		BigDecimal b4 = new BigDecimal("0.32");
		//2.减法,调用subtract方法
		BigDecimal bigsub = b3.subtract(b4);
		System.out.println(bigsub);             // 0.68
		
		BigDecimal b5 = new BigDecimal("1.015");
		BigDecimal b6 = new BigDecimal("100");
		//3.减法,调用subtract方法
		BigDecimal bigmul = b5.multiply(b6);
		System.out.println(bigmul);             // 101.500
		
	}
	
	/* BigDecimal实现除法运算
	 *   divide(BigDecimal divisor, int scale, int roundingMode)
	 *       int scale: 保留几位小数
	 *       int roundingMode: 保留模式
	 *          static int ROUND_UP   向上+1
	 *          static int ROUND_DOWN     直接舍去
	 *          static int ROUND_HALF_UP   >= 0.5 向上+1
	 *          static int ROUND_HALF_DOWN   >0.5 向上+1,否则舍去 
	 */
	public static void function_2(){
		BigDecimal b1 = new BigDecimal("1.103");
		BigDecimal b2 = new BigDecimal("100");  //0.01303
		
		BigDecimal bigdivi = b1.divide(b2,2,BigDecimal.ROUND_UP);
		System.out.println(bigdivi);
	}

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
⼤数据⼯程师学习计划 申明:本⽂旨在为普通程序员(Java程序员最佳)提供⼀个⼊门级别的⼤数据技术学习路径,不适⽤于⼤数据⼯程师的进阶学习,也不适⽤ 于零编程基础的同学。 前⾔ ⼀、背景介绍 本⼈⽬前是⼀名⼤数据⼯程师,项⽬数据50T,⽇均数据增长20G左右,个⼈是从Java后端开发,经过3个⽉的业余⾃学成功转型⼤数据⼯ 程师。 ⼆、⼤数据介绍 ⼤数据本质也是数据,但是⼜有了新的特征,包括数据来源⼴、数据格式多样化(结构化数据、⾮结构化数据、Excel⽂件、⽂本⽂件 等)、数据量⼤(最少也是TB级别的、甚⾄可能是PB级别)、数据增长速度快等。 如果你对⼤数据开发感兴趣,想系统学习⼤数据的话,可以加⼊⼤数据技术学习交流扣群:数字4583+数字45782,私信管理员即可免费 领取开发⼯具以及⼊门学习资料 针对以上主要的4个特征我们需要考虑以下问题: 数据来源⼴,该如何采集汇总?对应出现了Sqoop,Cammel,Datax等⼯具。 数据采集之后,该如何存储?对应出现了GFS,HDFS,TFS等分布式⽂件存储系统。 由于数据增长速度快,数据存储就必须可以⽔平扩展。 数据存储之后,该如何通过运算快速转化成⼀致的格式,该如何快速运算出⾃⼰想要的结果? 对应的MapReduce这样的分布式运算框架解决了这个问题;但是写MapReduce需要Java代码量很⼤,所以出现了Hive,Pig等将SQL转 化成MapReduce的解析引擎; 普通的MapReduce处理数据只能⼀批⼀批地处理,时间延迟太长,为了实现每输⼊⼀条数据就能得到结果,于是出现了Storm/JStorm这 样的低时延的流式计算框架; 但是如果同时需要批处理和流处理,按照如上就得搭两个集群,Hadoop集群(包括HDFS+MapReduce+Yarn)和Storm集群,不易于 管理,所以出现了Spark这样的⼀站式的计算框架,既可以进⾏批处理,⼜可以进⾏流处理(实质上是微批处理)。 ⽽后Lambda架构,Kappa架构的出现,⼜提供了⼀种业务处理的通⽤架构。 为了提⾼⼯作效率,加快运速度,出现了⼀些辅助⼯具: Ozzie,azkaban:定时任务调度的⼯具。 Hue,Zepplin:图形化任务执⾏管理,结果查看⼯具。 Scala语⾔:编写Spark程序的最佳语⾔,当然也可以选择⽤Python。 Python语⾔:编写⼀些脚本时会⽤到。 Allluxio,Kylin等:通过对存储的数据进⾏预处理,加快运算速度的⼯具。 以上⼤致就把整个⼤数据⽣态⾥⾯⽤到的⼯具所解决的问题列举了⼀遍,知道了他们为什么⽽出现或者说出现是为了解决什么问题,进⾏学 习的时候就有的放⽮了。 正⽂ ⼀、⼤数据相关⼯作介绍 ⼤数据⽅向的⼯作⽬前主要分为三个主要⽅向: ⼤数据⼯程师 数据分析师 ⼤数据科学家 其他(数据挖掘等) ⼆、⼤数据⼯程师的技能要求 附上⼤数据⼯程师技能图: 必须掌握的技能11条 Java⾼级(虚拟机、并发) Linux 基本操作 Hadoop(HDFS+MapReduce+Yarn ) HBase(JavaAPI操作+Phoenix ) Hive(Hql基本操作和原理理解) Kafka Storm/JStorm Scala Python Spark (Core+sparksql+Spark streaming ) 辅助⼩⼯具(Sqoop/Flume/Oozie/Hue等) ⾼阶技能6条 机器学习算法以及mahout库加MLlib R语⾔ Lambda 架构 Kappa架构 Kylin Alluxio 三、学习路径 假设每天可以抽出3个⼩时的有效学习时间,加上周末每天保证10个⼩时的有效学习时间; 3个⽉会有(213+4210)3=423⼩时的学习时间。 第⼀阶段(基础阶段) 1)Linux学习(跟鸟哥学就ok了)-----20⼩时 Linux操作系统介绍与安装。 Linux常⽤命令。 Linux常⽤软件安装。 Linux⽹络。 防⽕墙。 Shell编程等。 2)Java ⾼级学习(《深⼊理解Java虚拟机》、《Java⾼并发实战》)---30⼩时 掌握多线程。 掌握并发包下的队列。 了解JMS。 掌握JVM技术。 掌握反射和动态代理。 3)Zookeeper学习 Zookeeper分布式协调服务介绍。 Zookeeper集群的安装部署。 Zookeeper数据结构、命令。 Zookeeper的原理以及选举机制。 第⼆阶段(攻坚阶段) 4)Hadoop (《Hadoop 权威指南》)---80⼩时 HDFS HDFS的概念和特性。 HDFS的shell操作。 HDFS的⼯作机制。 HDFS的Java应⽤开发。 MapReduce 运⾏WordCount⽰例程序。 了解MapReduce内部
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems公司于1995年5月正式发布。它的设计目标是“一次编写,到处运行(Write Once, Run Anywhere)”,这意味着开发者可以使用Java编写应用程序,并在支持Java的任何平台上无需重新编译即可运行,这得益于其独特的跨平台性,通过Java虚拟机(JVM)实现不同操作系统上的兼容。 Java的特点包括: 面向对象:Java全面支持面向对象的特性,如封装、继承和多态,使得代码更易于维护和扩展。 安全:Java提供了丰富的安全特性,如禁止指针运算、自动内存管理和异常处理机制,以减少程序错误和恶意攻击的可能性。 可移植性:Java字节码可以在所有安装了JVM的设备上执行,从服务器到嵌入式系统,再到移动设备和桌面应用。 健壮性与高性能:Java通过垃圾回收机制确保内存的有效管理,同时也能通过JIT编译器优化来提升运行时性能。 标准库丰富:Java拥有庞大的类库,如Java SE(Java Standard Edition)包含基础API,用于开发通用应用程序;Java EE(Java Enterprise Edition)提供企业级服务,如Web服务、EJB等;而Java ME(Java Micro Edition)则针对小型设备和嵌入式系统。 社区活跃:Java有着全球范围内庞大的开发者社区和开源项目,持续推动技术进步和创新。 多线程支持:Java内建对多线程编程的支持,使并发编程变得更加简单直接。 动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的角色,是现代软件开发不可或缺的重要工具之一。
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems公司于1995年5月正式发布。它的设计目标是“一次编写,到处运行(Write Once, Run Anywhere)”,这意味着开发者可以使用Java编写应用程序,并在支持Java的任何平台上无需重新编译即可运行,这得益于其独特的跨平台性,通过Java虚拟机(JVM)实现不同操作系统上的兼容。 Java的特点包括: 面向对象:Java全面支持面向对象的特性,如封装、继承和多态,使得代码更易于维护和扩展。 安全:Java提供了丰富的安全特性,如禁止指针运算、自动内存管理和异常处理机制,以减少程序错误和恶意攻击的可能性。 可移植性:Java字节码可以在所有安装了JVM的设备上执行,从服务器到嵌入式系统,再到移动设备和桌面应用。 健壮性与高性能:Java通过垃圾回收机制确保内存的有效管理,同时也能通过JIT编译器优化来提升运行时性能。 标准库丰富:Java拥有庞大的类库,如Java SE(Java Standard Edition)包含基础API,用于开发通用应用程序;Java EE(Java Enterprise Edition)提供企业级服务,如Web服务、EJB等;而Java ME(Java Micro Edition)则针对小型设备和嵌入式系统。 社区活跃:Java有着全球范围内庞大的开发者社区和开源项目,持续推动技术进步和创新。 多线程支持:Java内建对多线程编程的支持,使并发编程变得更加简单直接。 动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的角色,是现代软件开发不可或缺的重要工具之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值