java
专注分享Java方面相关技术资料以及内容
搬砖的小子
专注IT技术干货分享(视频+代码+项目+面试题)
展开
-
常用的5个分布式缓存框架
在Java培训机构学习Java技术的时候,我们都会学到缓存框架,那么我们为什么要在Java培训中学习缓存框架呢,它最主要的一个原因就是可以加快响应速度。今天,我们通过本文主要是分享了 5 个常用的Java分布式缓存框架,这些缓存框架支持多台服务器的缓存读写功能,可以让你的缓存系统更容易扩展。对于参加Java培训学习,首先我们主要的中心就是围绕着学习的,而在学习中要有目的有方法的去学习,最主要的是要把Java课程内容中的核心知识必须掌握,像分布式缓存框架这样的在实际开发中常用到的知识,我们就有必要熟练掌握。原创 2023-05-05 21:39:19 · 626 阅读 · 0 评论 -
表结构的操作TABLE
alter table 表名 modify 【column】 列名 数据类型 after 某一列;alter table 表名 add 【column】 列名 数据类型 after 某一列;alter table 表名 add 【column】 列名 数据类型;alter table 表名 change 【column】 列名 新列名 数据类型;alter table 表名 add 【column】 列名 数据类型 first;alter table 表名 modify 【column】 列名 数据类型;原创 2023-04-17 21:28:57 · 73 阅读 · 0 评论 -
SE基础之多态的应用场景
在设计方法时, 有的方法内部需要用到另外的类的对象, 但是在设计方法时, 又不需要关心究竟是哪个对象, 只关心这些实参对象都是某个类型的, 此时, 方法的参数的类型就可以写成父类类型的参数,这样的方法的参数就是多态参数.test(new Chinese());// 在实际调用多态参数方法时, 可以传入任意本类或子类类型的对象。如 float f=(float)12.0;public void test(Person p) { // 这个方法的参数p的具体类型未知。原创 2023-04-17 21:25:16 · 52 阅读 · 0 评论 -
SSM框架整合注意事项
在web.xml中配置: Springmvc的前端控制器 实例化Spring容器的监听器 字符编码过滤器 REST 过滤器。创建Spring的配置文件: applicationContext.xml:组件扫描、 连接池、 事务……创建Springmvc的配置文件: springmvc.xml : 组件扫描、 视图解析器;查看不同MyBatis版本整合Spring时使用的适配包。MyBatis的 SqlSession的创建 .MyBatis的 Mapper接口的代理实现类。导入SSM需要使用的jar包。原创 2023-04-15 22:22:05 · 84 阅读 · 0 评论 -
ETL工具之Talend简介与安装
Talend Open Studio是Talend(拓蓝)公司开发的一个数据集成的数据ETL软件,可以简化数据处理流程,降低入门门槛,不需要掌握专业的ETL知识,仅仅通过web界面和简单的组件拖拽就可实现数据处理。BI工具Talend Open Studio功能强大,可以同步多种数据库,可以清洗、筛选、java代码处理数据、数据导入导出,内联查询多种数据库,以下简称talend。在实际企业开发中,都是在本地环境下进行Talend的project开发的,可以在本地运行,也可以连接远程机器运行。原创 2023-04-15 22:20:17 · 4087 阅读 · 0 评论 -
Spring事务管理
①(atomicity):“原子”的本意是“”,事务的原子性表现为一个事务中涉及到的多个操作在逻辑上缺一不可。事务的原子性要求事务中的所有操作要么都执行,要么都不执行。②(consistency):“一致”指的是数据的一致,具体是指:所有数据都处于。一致性原则要求:一个事务中不管涉及到多少个操作,都必须保证事务执行之前数据是正确的,事务执行之后数据仍然是正确的。如果一个事务在执行的过程中,其中某一个或某几个操作失败了,则必须将其他所有操作撤销,将数据恢复到事务执行之前的状态,这就是。③。原创 2023-04-15 22:14:09 · 49 阅读 · 0 评论 -
Mybatis映射文件之参数传递
会被MyBatis封装成一个map传入, Collection对应的key是collection,Array对应的key是array. 如果确定是List集合,key还可以是list.任意多个参数,都会被MyBatis重新包装成一个Map传入。Map的key是param1,param2,或者0,1…为参数使用@Param起一个名字,MyBatis就会将这些参数封装进map中,key就是我们自己指定的名字。${key}:获取参数的值,拼接到SQL中。#{key}:获取参数的值,预编译到SQL中。原创 2023-04-13 21:46:12 · 106 阅读 · 0 评论 -
SpringBoot实现监控管理
actuator/mappings 显示所有@RequestMapping的url整理列表。/actuator/health 显示应用程序运行状况信息 up表示成功 down失败。/actuator/beans 显示应用程序中所有Spring bean的完整列表。/actuator/configprops 显示所有配置信息。通过actuator/+端点名就可以获取相应的信息。/actuator/env 陈列所有的环境变量。/actuator/info 查看自定义应用信息。Actuator监控应用。原创 2023-04-13 21:37:14 · 236 阅读 · 0 评论 -
SpringBoot实现热部署
这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间(5秒以内)1. devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的。所谓的热部署:比如项目的热部署,就是在应用程序在不停止的情况下,实现新的部署。1.5 Devtools原理。1.1 什么是热部署。1.2 项目演示案例。原创 2023-04-13 21:33:22 · 195 阅读 · 0 评论 -
Javaweb内容js\java中json的使用
所以我们以后的ajax请求获取到的数据多为json格式,我们要熟练掌握js中json的解析操作。在Java中可以从文件中读取JSON字符串,也可以是客户端发送的JSON字符串,所以第一个问题,我们先来看如何将一个JSON字符串转换成一个Java对象。//[{“name”:”八戒”,”age”:18},{“name”:”沙僧”,”age”:28},{“name”:”唐僧”,”age”:38}]String json = “{\”name\”:\”张三\”,\”age\”:18}”;原创 2023-04-10 21:19:37 · 91 阅读 · 0 评论 -
SQL语句之DML
而且TRUNCATE删除的记录是无法回滚的,但DELETE删除的记录是可以回滚的.UPDATE 表1 【inner】 john 表2 on 表 SET 列名1= 新值1,列名2 =新值2 【where 筛选条件】INSERT INTO 表名(列名1,列名2, …) VALUES(值1, 值2,…DELETE 别名1 FROM 表1 别名1 [INNER] JOIN 表2 别名2。UPDATE 表名 SET 列名1=值1, …INSERT INTO 表名 VALUES(值1,值2,…【AND 筛选条件】原创 2023-04-10 21:16:00 · 63 阅读 · 0 评论 -
java学习中cookie原理
2)如图Set-Cookie这个响应头就是服务器在向服务器发“会员卡”,这个响应头的名字是Set-Cookie,后边JSESSIONID=95A92EC1D7CCB4ADFC24584CB316382E和 Path=/Test_cookie,是两组键值对的结构就是服务器为这个“会员卡”设置的信息。1)总的来看Cookie像是服务器发给浏览器的一张“会员卡”,浏览器每次向服务器发 送请求时都会带着这张“会员卡”,当服务器看到这张“会员卡”时就可以识别浏览器的身份。1.cookie原理。原创 2023-04-10 21:16:49 · 47 阅读 · 0 评论 -
进程和线程的区别
动态性:进程与程序的区别在于,程序是静态的,进程是动态的。程序只是一个静态的指令集合,而进程是一个正在系统中运行的指令集合。独立性:进程是系统中独立存在的实体,它可以拥有自己独立的资源,每个进程都拥有自己私有的地址空间。(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行。原创 2023-02-28 21:04:15 · 33 阅读 · 0 评论 -
Mybatis优缺点都有哪些
MyBatis 可以对配置和原生Map使用简单的 XML 或注解(实体和数据库的映射可以在XML中间中,也可以使用注解),将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。3. MyBatis灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,可重用。对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是不错的选择。原创 2023-02-28 21:01:56 · 3132 阅读 · 0 评论 -
Hibernate和MyBatis的区别
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。MyBatis的二级缓存配置都是在每个具体的表对象映射中进行详细配置,这样针对不同的表可以自定义不同的缓冲机制,并且MyBatis可以在命名空间中共享相同的缓存配置和实例,通过Cache-ref来实现。**SQL优化方面**原创 2023-02-28 20:58:14 · 45 阅读 · 0 评论 -
静态代理和动态代理的区别是什么?
相比于静态代理,动态代理在创建代理对象上更加的灵活,动态代理类的字节码在程序运行时,由Java反射机制动态产生。3、动态代理是实现JDK里的InvocationHandler接口的invoke方法,但注意的是代理的是接口,也就是你的业务类必须要实现接口,通过Proxy里的newProxyInstance得到代理对象。4、还有一种动态代理CGLIB,代理的是类,不需要业务类继承接口,通过派生的子类来实现代理。1、静态代理通常只代理一个类,动态代理是代理一个接口下的多个实现类。**动态代理的特点**原创 2023-02-19 22:13:44 · 764 阅读 · 0 评论 -
MyBatis框架适用场景
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。3.MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,并可重用。1.SQL语句的编写工作量较大,尤其是字段多、关联表多时,更是如此,对开发人员编写SQL语句的功底有一定要求。对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis 将是不错的选择。2.MyBatis是最简单的持久化框架,小巧并且简单易学。原创 2023-02-19 22:08:27 · 516 阅读 · 0 评论 -
redis 持久化有几种方式
Redis被称为是内存数据库,那是因为它会将其所有数据存储在内存里,因此Redis具有强劲的速度性能,但是,也正因为数据存储在内存中,当Redis重启后,所有存储在内存的数据就会丢失。“快照”,就类似于拍照,摁下快门那一刻,所定格的照片,就称为“快照”。Redis 的读写都是在内存中,所以它的性能较高,但在内存中的数据会随着服务器的重启而丢失,为了保证数据不丢失,我们需要将内存中的数据存储到磁盘,以便 Redis 重启时能够从磁盘中恢复原有的数据,而整个过程就叫做 Redis 持久化。原创 2023-02-19 22:02:21 · 210 阅读 · 0 评论 -
如何提高java反射效率
查看API可以了解到,jdk在设置获取字段,调用方法的时候会执行安全访问检查,而此类操作会比较耗时,所以通过setAccessible(true)的方式可以关闭安全检查,从而提升反射效率。在上面这两个测试方法中,笔者各自测了5次,把他们消耗的时间取了一个平均值,在输出结果中可以看到一个是10ms,一个是926ms,在创建100W个对象的情况下,反射居然慢了90倍左右。难道反射真的这么慢?System.out.println(“通过缓存反射创建对象耗时:”+(end - start ) + “ms”);原创 2022-12-28 21:05:07 · 477 阅读 · 0 评论 -
redis 分布式锁有什么缺陷
Correctness(正确性):多个Client保证严格的互斥性,不允许出现同时持有锁或者对同时操作同一资源,这种场景下需要在锁的选择和使用上更加严格,同时在业务代码上尽量做到幂等。近两年来微服务变得越来越热门,越来越多的应用部署在分布式环境中,在分布式环境中,数据一致性是一直以来需要关注并且去解决的问题,分布式锁也就成为了一种广泛使用的技术。在Redis分布式锁的实现上还有很多问题等待解决,我们需要认识到这些问题并清楚如何正确实现一个Redis 分布式锁,然后在工作中合理的选择和正确的使用分布式锁。原创 2022-12-28 21:02:42 · 574 阅读 · 0 评论 -
Flink的内存管理是如何做的
2、减少垃圾收集压力 因为所有长生命周期的数据都是在 Flink 的管理内存中以二进制表示的,所以所有数据对象都是短暂的,甚至是可变的,并且可以重用。Flink 并不是将大量对象存在堆上,而是将对象都序列化到一个预分配的内存块上,这个内存块叫做 MemorySegment,它代表了一段固定长度的内存(默认大小为 32KB),也是 Flink 中最小的内存分配单元,并且提供了非常高效的读写方法。1、内存安全执行和高效的核外算法 由于分配的内存段的数量是固定的,因此监控剩余的内存资源是非常简单的。原创 2022-12-28 21:01:24 · 115 阅读 · 0 评论 -
Mybatis如何执行批量操作?
foreach元素的属性主要有 item,index,collection,open,separator,close。它是批量操作的核心标签,下面都是foreach在不同场景的应用和写法。Mybatis常会出现批量操作,如批量查询,批量插入,批量修改(replace into)。批量操作要比循环执行效率提升很多,这里对mybatis的批量操作做一个总结讲解。replace:会根据主键和唯一索引判断该记录是否存在,存在就删除在插入(修改),不存在就插入(insert)。这是一个批量保存(插入或修改)的例子。原创 2022-12-09 18:24:14 · 1736 阅读 · 0 评论 -
java程序初始化顺序是怎样的
在java程序中,当实例化对象时,对象的所在类的所有成员变量首先要进行初始化,只有当所有类成员完成初始化后,才会调用对象所在类的构造函数创建对象。> System.out.println("父类非静态代码块");> System.out.println("子类非静态代码块");> System.out.println("父类静态代码块");> System.out.println("子类静态块");变量优先于块、静态优先于非静态。原创 2022-12-09 18:21:06 · 95 阅读 · 0 评论 -
MyBaTIs框架的优缺点
**MyBaTIs框架的优点**1.与JDBC相比,减少了50%以上的代码量。2.MyBatis是最简单的持久化框架,小巧并且简单易学。3.MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,并可重用。4.提供XML标签,支持编写动态SQL语句。5.提供映射标签,支持对象与数据库的ORM字段关系映射。![在这里插入图片描述](https://img-blog.csdnimg.cn/ab9c0052b0b4487e9原创 2022-12-07 21:55:28 · 119 阅读 · 0 评论 -
Spring的优缺点是什么?为什么要用Spring?
spring 是一个开源的轻量级 JavaBean 容器框架。使用 JavaBean 代替 EJB ,并提供了丰富的企业应用功能,降低应用开发的复杂性。**Spring的优缺点是什么?**1.方便解耦,便于开发(Spring就是一个大工厂,可以将所有对象的创建和依赖关系维护都交给spring管理)2.spring支持aop编程(spring提供面向切面编程,可以很方便的实现对程序进行权限拦截和运行监控等功能)3.声明式事务的支持(通过配置就完成对事务的支持,不需要手动编程)4.方便程序的测试,spring原创 2022-12-07 21:53:36 · 220 阅读 · 0 评论 -
重载和重写的区别有哪些方法
重载发生在本类,方法名相同,参数列表不同,与返回值无关,只和方法名,参数列表,参数的类型有关.**重载(Overload)**首先是位于一个类之中或者其子类中,具有相同的方法名,但是方法的参数不同,返回值类型可以相同也可以不同。(1):方法名必须相同(2):方法的参数列表一定不一样。(3):访问修饰符和返回值类型可以相同也可以不同。其实简单而言:重载就是对于不同的情况写不同的方法。 比如,同一个类中,写不同的构造函数用于初始化不同的参数。**重写(Overriding)**重写发生在父类子类之间,比如所有类原创 2022-12-05 22:01:46 · 54 阅读 · 0 评论 -
什么是多态?java 中实现多态的机制是什么?
Java允许父类或接口定义的引用变量指向子类或具体实现类的实例对象,而程序调用的方法在运行时才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。 多态性是面向对象程序设计代码重用的一个重要机制,我们曾不只一次的提到Java多态性。在Java运行时多态性:继承和接口的实现一文中,我们曾详细介绍了Java实现运行时多态性的动态方法调度;今天我们再次深入Java核心,一起学习Java中多态性的实现。“polymorphism(多态)”一词来自原创 2022-12-05 21:59:33 · 898 阅读 · 1 评论 -
rabbitmq 怎么保证消息的稳定性
1.保证消息不会丢失消息持久化;ACK确认机制;设置集群镜像模式;消息补偿机制第一种:消息持久化RabbitMQ的消息是默认放在内存的,如果不特别声明消息持久到磁盘,当节点关掉或者crash(碰撞)掉,消息就会丢失。那么要把数据持久到磁盘就要满足三个条件,缺一不可:Exchange(互换) 设置持久化Queue(队列)() 设置持久化Message(信息)持久化发送:发送消息设置发送模式deliveryMode=2,代表持久化消息第二种:ACK确认机制就是多个消费者收到消息,收到一半就没了,消费者就死原创 2022-12-05 21:57:32 · 616 阅读 · 0 评论 -
rabbitmq 怎么实现延迟消息队列?
RabbitMQ的Queue可以配置x-dead-letter-exchange 和x-dead-letter-routing-key(可选)两个参数,如果队列内出现了dead letter,则按照这两个参数重新路由。RabbitMQ可以针对Queue和Message设置 x-message-tt,来控制消息的生存时间,如果超时,则消息变为dead letter。AMQP协议,以及RabbitMQ本身没有直接支持延迟队列的功能,但是可以通过TTL和DLX模拟出延迟队列的功能。消息或者队列的TTL过期。原创 2022-11-26 18:26:36 · 1773 阅读 · 0 评论 -
如何自定义注解?
所以使用这种修饰具有一定的“延续性”:如果我们在代码中通过继承或者覆盖的方式使用了这个过时的类型或者成员,虽然继承或者覆盖后的类型或者成员并不是被声明为@Deprecated,但编译器仍然要报警。@Inherited 元注解是一个标记注解,@Inherited 阐述了某个被标注的类型是被继承的。使用注解的好处:1、帮助代码编译检查,2、提高代码的识别度,比如 @override @Deprecated , 3、减少重复代码,简化代码、4、根据注解生成帮助文档,如 @Decument 等.原创 2022-11-26 18:15:22 · 99 阅读 · 0 评论 -
java中有没有引用传递
但是不要被这个假象所蒙蔽,实际上这个传入函数的值是对象引用的拷贝,即传递的是引用的地址值,所以还是按值传递。引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。要搞清楚 java 中的方法调用,到底是值传递,还是引用传递之前,先来看看 值传递和引用传递分别是什么。原创 2022-11-25 20:42:21 · 1346 阅读 · 0 评论 -
MyBatis编程步骤是什么样的
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。Hibernate 是重量级框架,学习使用门槛高,适合于需求相对稳定,中小型的项目,比如:办公自动化系统。MyBatis 是轻量级框架,学习使用门槛低,适合于需求变化频繁,大型的项目,比如:互联网电子商务系统。对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是不错的选择。4、调用session.commit()提交事务。5、调用session.close()关闭会话。原创 2022-11-25 20:39:26 · 471 阅读 · 0 评论 -
Lock简介与初识AQS
同步器是实现锁(也可以是任意同步组件)的关键,在锁的实现中聚合同步器,利用同步器实现锁的语义。同步器是面向锁的实现者,它简化了锁的实现方式,屏蔽了同步状态的管理,线程的排队,等待和唤醒等底层操作。子类被推荐定义为自定义同步组件的静态内部类,同步器自身没有实现任何同步接口,它仅仅是定义了若干同步状态的获取和释放方法来供自定义同步组件的使用,同步器既支持独占式获取同步状态,也可以支持共享式获取同步状态,这样就可以方便的实现不同类型的同步组件。//超时获取锁,在超时内或者未中断的情况下能够获取锁。原创 2022-11-25 20:35:29 · 86 阅读 · 0 评论 -
MyBatis的功能架构是怎样的
配置文件来源于两个地方,一个是配置文件(主配置文件conf.xml,mapper文件*.xml),一个是java代码中的注释,将sql的配置信息加载成为一个mappedstatement对象,存储在内存之中(包括传入参数的映射配置,结果映射配置,执行的sql语句)。调用mybatis提供的api,传入的参数为sql的id(有namespase和具体sql的id组成)和sql语句的参数对象,mybatis将调用请求交给请求处理层。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。原创 2022-11-22 20:24:47 · 127 阅读 · 0 评论 -
什么是AOP-面向切面编程
这个是AOP切面缓存,它的功能是将包含CachingAttribute特性的方法的返回值缓存到Redis里,下次在访问这个方法,会先去缓存中查询如果有则直接跳过这个方法,直接从Redis里获取之前缓存的结果集,如果没有则会执行方法获取返回值在缓存到Redis里。AOP 的全称是“Aspect Oriented Programming”,即面向切面编程,它将业务逻辑的各个部分进行隔离,使开发人员在编写业务逻辑时可以专心于核心业务,从而提高了开发效率。AOP切面有点像拦截器,不过跟拦截器有点区别。原创 2022-11-22 20:21:15 · 335 阅读 · 0 评论 -
线程如何实现保持同步
在任意时刻只允许一个线程对共享资源进行访问, 如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。4)事 件: 通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作。接下来就是保持关键 代码的 原子性,只要有访问时,同时只有一个关键代码可以使用,这样就同步了。原创 2022-11-22 20:15:56 · 811 阅读 · 0 评论 -
java 中 IO 流分为几种?它们的区别是什么?
5、理论上任何文件都能够用字节流读取,但当读取的是文本数据时,为了能还原成文本你必须再经过一个转换的工序,相对来说字符流就省了这个麻烦,可以有方法直接读取。Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个),Java中其他多种多样变化的流均是由它们派生出来的.2、字节流按照8位传输,字节流是最基本的,所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。原创 2022-11-22 20:11:23 · 2521 阅读 · 0 评论 -
重载和重写的区别有哪些?
2、覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。1、重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。重载是同一个类中方法之间的关系,是水平关系。②返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。④重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。①参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。③访问修饰符的限制一定要大于被重写方法的访问修饰符。原创 2022-11-21 21:34:45 · 3545 阅读 · 0 评论 -
常用的集合类有哪些?它们的区别是什么?
Hashtable是同步的,这个类中的一些方法保证了Hashtable中的对象是线程安全的,而HashMap则是异步的,因此HashMap中的对象并不是线程安全的,因为同步的要求会影响执行的效率,所以如果你不需要线程安全的结合那么使用HashMap是一个很好的选择,这样可以避免由于同步带来的不必要的性能开销,从而提高效率,我们一般所编写的程序都是异步的,但如果是服务器端的代码除外。ArrayList与Vector都是java的集合类,都是用来存放java对象,这是他们的相同点,原创 2022-11-21 21:13:06 · 161 阅读 · 0 评论