有时,需要将int这样的基本类型转换为对象。所有的基本类型都有一个与之对应的类。例如,Integer类对应基本类型int。通常,这些类被称为包装器(wrapper)。这些对象包装器类拥有很明显的名字:Integer、Long、Float、Double、Short、Byte、Character、Void和Boolean(前6个类派生于公共的父类Number)。对象包装器类是不可变的,即一旦构造了包装器,就不允许更改包装在其中的值。同时,对象包装器类还是final,因此不能定义它们的子类。 有一个很有用的特性,从而更加便于添加int类型的元素到ArrayList 中。下面这个调用list.add...

  Bz0ZyyO9yuaJ   2023年11月01日   41   0   0 Java

介绍反射机制 Java的反射机制允许在程序运行期间,借助反射API获取类的内部信息,并能直接操作对象的内部属性及方法。 Java反射机制提供的功能: 在运行时,使用反射分析类的能力,获取有关类的一切信息(类所在的包、类实现的接口、标注的注解、类的数据域、类的构造器、类的方法等) 在运行时,使用反射分析对象,设置实例域的值,查看实例域的值。 反射机制允许你调用任意方法(类的构造器方法、类的成员方法等) 反射是一种功能强大且复杂的机制。使用反射机制的主要人员是工具构造者,而不是应用程序员。 Class类 在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识。这个...

  Bz0ZyyO9yuaJ   2023年11月01日   19   0   0 Java

抽象类 如果自下而上在类的继承层次结构中上移,位于上层的类更具有通用性,甚至可能更加抽象。从某种角度看,祖先类更加通用,人们只将它作为派生其他类的基类,而不作为想使用的特定的实例类。例如,考虑一下对Employee类层次的扩展。一名雇员是一个人,一名学生也是一个人。下面将Person类和Student类添加到类的层次结构中。下图是这三个类之间的关系层次图。 为什么要花费精力进行这样高层次的抽象呢?每个人都有一些诸如姓名这样的属性。学生与雇员都有姓名属性,因此可以将getName()方法放置在位于继承关系较高层次的通用基类中。现在,再增加一个getDescription()方法,它可以返回对...

  Bz0ZyyO9yuaJ   2023年11月01日   142   0   0 Java

如果类的对象的数量只有有限个,并且可以确定对象的属性,那么考虑使用枚举类。例如: 性别:Man(男)、Woman(女) 订单状态:Nonpayment(未付款)、Paid(已付款)、Delivered(已发货)、Checked(已确认收货) 定义枚举类型 publicenumUserType{ //1.提供枚举类的对象(枚举常量) common("普通用户",0), sectionAdmin("板块管理员",1), superAdmin("超级管理员",2); //2.对象的属性 privateStringtypeName; privateIntegertypeId; //3.私有化...

  Bz0ZyyO9yuaJ   2023年11月01日   40   0   0 Java

介绍线程 线程是系统调度的最小单元,一个进程可以包含多个线程,线程是负责执行二进制指令的。 每个线程有自己的程序计数器、栈(Stack)、寄存器(Register)、本地存储(ThreadLocal)等,但是会和进程内其他线程共享文件描述符、虚拟地址空间等。 对于任何一个进程来讲,即便我们没有主动去创建线程,进程也是默认有一个主线程的。 守护线程(DaemonThread) 有的时候应用中需要一个长期驻留的服务程序,但是不希望这个服务程序影响应用退出,那么我们就可以将这个服务程序设置为守护线程,如果Java虚拟机发现只有守护线程存在时,将结束进程。 在Java中将线程设置为守护线程,具体的实...

  Bz0ZyyO9yuaJ   2023年11月01日   36   0   0 Java

本文介绍为了实现高效并发,虚拟机对synchronized做的一系列的锁优化措施 高效并发是从JDK5升级到JDK6后一项重要的改进项,HotSpot虚拟机开发团队在JDK6这个版本上花费了大量的资源去实现各种锁优化技术,如适应性自旋(AdaptiveSpinning)、锁消除(LockElimination)、锁膨胀(LockCoarsening)、轻量级锁(LightweightLocking)、偏向锁(BiasedLocking)等,这些技术都是为了在线程之间更高效地共享数据及解决竞争问题,从而提高程序的执行效率。 自旋锁&自适应自旋 在许多应用上,共享数据的锁定状态只会持...

  Bz0ZyyO9yuaJ   2023年11月01日   88   0   0 Java

介绍CAS 技术是为了解决问题而生的,通过CAS我们可以以无锁的方式,保证对共享数据进行“读取修改写回”操作序列的正确性。 CAS是乐观锁设计思想的实现。CAS的思想是:在“读取修改写回”操作序列中,先读取并修改数据,写回数据前先判断读取数据后的这段时间内数据是否发生变化(共享变量的当前值是否是我们的期望值): 如果在此期间数据没有发生变化(共享资源的当前值是我们的期望值),那么就把修改后的值写回 如果在此期间其他的线程修改了数据,数据发生了变化(共享资源的当前值不是我们的期望值),那么就放弃本次写回操作,再基于最新的数据进行修改然后重试,避免发生数据更新丢失 CAS更加底层的实现依赖于C...

  Bz0ZyyO9yuaJ   2023年11月01日   180   0   0 Java

JavaSDK并发包里提供了丰富的原子类,我们可以将其分为五个类别,这五个类别提供的方法基本上是相似的,并且每个类别都有若干原子类。 对基本数据类型的变量值进行原子更新; 对对象变量的指向进行原子更新; 对数组里面的的元素进行原子更新; 原子化的对象属性更新器; 原子化的累加器。 基本数据类型 AtomicBoolean、AtomicLong、AtomicInteger这三个类提供了一些对基本数据类型的变量值进行原子更新的方法。 这些类提供的方法是相似的,主要有(以AtomicLong为例): //原子化的i longgetAndIncrement() //原子化的i-- longget...

  Bz0ZyyO9yuaJ   2023年11月01日   42   0   0 Java

先行发生原则(Happens-Before)是Java内存模型定义的一个等效判断原则。依赖这个原则,我们可以通过几条简单规则判断数据是否存在竞争,线程是否安全,而不需要陷入Java内存模型苦涩难懂的定义之中。 “先行发生”原则指的是什么。比如说操作A先行发生于操作B,其实就是说在操作B发生之前,操作A产生的影响能被操作B观察到,“影响”包括修改了内存中共享变量的值、发送了消息、调用了方法等。 下面是Java内存模型下一些“天然的”先行发生关系,这些先行发生关系无须任何同步器协助就已经存在,可以在编码中直接使用。如果两个操作之间的关系不在此列,并且无法从下列规则推导出来,则这两个操作就没有顺序...

  Bz0ZyyO9yuaJ   2023年11月01日   77   0   0 Java

泛型是我们需要的程序设计手段。使用泛型机制编写的程序代码要比那些杂乱地使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性。 至少在表面上看来,泛型很像C中的模板。与Java—样,在C中,模板也是最先被添加到语言中支持强类型集合的。但是,多年之后人们发现模板还有其他的用武之地。学习完本章的内容可以发现Java中的泛型在程序中也有新的用途。 为什么要使用泛型程序设计 泛型程序设计(Genericprogramming)意味着编写的代码可以被很多不同类型的对象所重用。例如,我们并不希望为聚集String和File对象分别设计不同的类。实际上,也不需要这样做,因为一个Array...

  Bz0ZyyO9yuaJ   2023年11月01日   59   0   0 Java

介绍Kafka Kafka是一款基于发布与订阅的消息系统。 用生产者客户端API向Kafka生产消息,用消费者客户端API从Kafka读取这些消息。 Kafka使用Zookeeper保存元数据信息。 Kafka0.9版本之前,除了broker之外,消费者也会使用Zookeeper保存一些信息,比如消费者群组的信息、主题信息、消费分区的偏移量(在消费者群组里发生失效转移时会用到)。 到了0.9.0.0版本,Kafka引入了一个新的消费者接口,允许broker直接维护这些信息。 Kafka中的概念 消息&批次 Kafka的数据单元被称为消息。消息就好比数据库里的一个“数据行”或一条“记...

  Bz0ZyyO9yuaJ   2023年11月01日   315   0   0 大数据

生产者创建消息。在其他基于发布与订阅的消息系统中,生产者可能被称为发布者或写入者。 一般情况下,一个消息会被发布到一个特定的主题上。生产者在默认情况下把消息均衡地分布到主题的所有分区上,而并不关心特定消息会被写到哪个分区。不过,在某些情况下,生产者会把消息直接写到指定的分区。这通常是通过消息键和分区器来实现的,分区器为键生成一个散列值,并将其映射到指定的分区上。这样可以保证包含同一个键的消息会被写到同一个分区上。生产者也可以使用自定义的分区器,根据不同的业务规则将消息映射到分区。 生产者发送消息的方式 生产者发送消息主要有2种方式:同步发送消息、异步发送消息 同步发送消息 同步发送消息:我们调...

  Bz0ZyyO9yuaJ   2023年11月01日   51   0   0 大数据
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~