自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 问答 (6)
  • 收藏
  • 关注

原创 Java加密简单了解

最近需要用到AES和rsa加密,学了下Java加密,写了点东西,记录下。这是简单的字符串加密,文件加密等后面再发。Java如何加密一、先上代码简单的加解密1.加密2.解密3.代码解释二、Java的Cipher类1.Cipher类提供了加密和解密的功能2.Cipher对象需要初始化3.加密或解密3.1转换为base643.2转换为16进制一、先上代码简单的加解密1.加密 /** * base 64 encodes * @param bytes 待编码的byte[] *

2021-07-06 18:07:45 277 2

原创 阿里云oss入门学习(Java)

oss入门学习什么是ossoss中重要的对象(Bucket、Object、Region、Endpoint和AccessKey)bucket(存储空间)Object(存储对象)Region(存储地域)Endpoint(访问域名)AccessKey(密钥)代码演示流程安装创建oss对象创建存储空间文件上传文件下载最近学习oss,顺便整理了一下java sdk相关的随笔,看看就行。什么是oss阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,提

2021-07-06 14:13:10 920

原创 JavaWeb相关知识点小结

JavaWeb知识点总结一、jsp和servlet有什么区别二、jsp有哪些内置对象?作用分别是什么?三、Jsp的四种作用域四、session和cookie有什么区别五、session的工作原理1.什么是session2.session比cookie更安全3.session的生命周期4.注意事项五、客户端禁止cookie,session还能用吗六、forward和redirect的区别七、get和post请求区别八、如何实现跨域?1.如何实现跨域请求九、什么是JSONP十、HTML、CSS、Javascri

2020-11-18 21:25:22 387

原创 简单了解RabbitMQ的基本使用

RabbitMQ的基本使用一概述二、RabbitMQ的优势三、RabbitMQ后台管理系统四、消息模型1.基本消息模型2.work消息模型3.订阅模式(三种)一概述什么是MQ?MQ(Message Queue)消息队列,是基础数据结构中“先进先出”的一种数据结构。一般用来解决应用解耦,异步消息,流量削峰等问题,实现高性能,高可用,可伸缩和最终一致性架构。MQ就是把要传输的数据(消息)放在队列中,用队列机制来实现消息传递–生产者产生消息并把消息放入队列,然后由消费者去处理。消费者可以到指定队列拉取消

2020-11-16 16:23:07 276

原创 HashMap常见问题详解(put,扩容等)

HashMap常见问题详解一、HashMap的插入过程二、HashMap的扩容过程1.创建新数组2.数据迁移三、HashMap的负载因子为啥是0.75四、HashMap中在计算key的hash值时为什么不知用他的hashcode的值而要和key.hashCode做高十六位异或运算五、HashMap中的数组长度为什么一定要是2的整次幂的数七、jdk1.7和1.8中hashmap有什么不同八、扩容的时候为什么1.8不用重新hash就可以直接定位到源节点再新数组的位置九、HashMap和HashTable的区别

2020-11-05 21:19:08 1575

原创 八种排序算法--Java实现

八种排序算法--Java实现一、插入排序1.直接插入排序2.二分插入排序3.希尔排序二、选择排序1.简单选择排序一、插入排序思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的子序列的合适位置,直到全部插入排序完为止。方法:1.直接插入法;2.二分插入排序;3.希尔排序;1.直接插入排序基本思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的子序列的合适位置(从后向前找到合适位置后),直到全部插入排序完成。算法实现:int a[] = {5,2,4,1,8,3,

2020-11-05 19:05:42 164

原创 Redis和MySQL中数据一致性的问题

Redis和MySQL中数据一致性的问题一、数据为什么会不一致?1.单库情况下发生不一致的情况2.主从同步、读写分离的情况下,读从库而产生数据不一致二、解决办法?1.单库情况下的解决方案2.读写分离下的解决方案。一、数据为什么会不一致?1.单库情况下发生不一致的情况同一时刻发生了并发读写请求,例如A是写,B是读。1.A请求发送一个写操作到服务端,第一步先淘汰缓存,因为一些原因卡住了。2.B请求发送一个读操作,读取缓存,因为缓存淘汰,所以B会请求数据库,但是因为A还没有更新,读取的是脏数据。3.

2020-11-04 15:34:57 260

原创 Redis的过期策略以及内存淘汰机制

Redis的过期策略以及内存淘汰机制一、Redis的过期策略1.过期策略二、内存淘汰机制三、Redis为什么是单线程的?四、单线程的redis为什么这么快五、为什么Redis的操作是原子性的,怎么保证原子性的?1.redis事务一、Redis的过期策略1.过期策略redis采用的是定期删除和惰性删除的策略为什么不用定时删除策略?定时删除:用一个定时器来负责监视key,过期则自动删除,虽然内存及时释放,但是十分消耗CPU资源。在大并发请求下,CPU要将时间应用在处理请求,而不是删除key,因此没有

2020-11-04 15:15:39 186

原创 redis下分布式锁的简单实现

redis下分布式锁的简单实现一、微服务和分布式的概念1.什么是微服务2.什么是分布式3.什么是集群二、微服务架构需要解决的四大问题1.客户端如何访问这么多的服务?2.服务与服务之间如何通信3.这么多服务,如何管理4.服务挂了,怎么办三、分布式锁1.什么是分布式协调技术2.什么是分布式锁3.分布式锁应该具备哪些条件4.分布式锁实现的几种方式四、redis分布式锁的实现1.实现原则2.分布式锁实现的三个核心要素3.存在的问题以及解决办法?1.setnx和expire这两条命令,不具有原子性一、微服务和分布式

2020-11-04 14:36:56 157 1

原创 redis--主从复制,哨兵模式,缓存穿透,缓存雪崩

redis--主从复制,哨兵模式,缓存穿透,缓存雪崩一、主从复制1.为什么会有主从复制2.主从复制的作用3.复制原理二、哨兵模式1.概述:2.单哨兵模式3.多哨兵模式4.优缺点5.哨兵模式的全部配置三、缓存穿透1.什么是缓存穿透2.解决方案四、缓存击穿1.概述2.解决方案五、缓存雪崩1.概述2解决方案一、主从复制1.为什么会有主从复制通过持久化功能,redis保证了即使在服务器重启的情况下数据也不会丢失,但是如果由于数据存储在一台服务器上的,如果这台服务器出现故障,比如硬盘坏了,也会导致数据的丢失。

2020-11-03 20:40:25 154

原创 redis入门级理解--基础

redis入门级理解--基础一、什么是redis二、redis的应用场景三、五种数据结构即使用场景1.字符串2.哈希3.列表4.集合5.有序集合四、redis的发布与订阅一、什么是redisreids是一种支持Key-Value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。该数据库使用ANSI C语言编写,支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可以持久化。二、redis的应用场景1.会话缓存(最常用)2.消息队列,比如支付3.活动排行榜或计数

2020-11-03 18:40:13 296

原创 RabbitMQ介绍以及如何保证消息不丢失

RabbitMQ介绍以及如何保证消息不丢失一、介绍二、什么是AMQP三、JMS是什么四、应用场景1.任务异步处理2.应用程序解耦合3.消峰五、RabbitMQ的工作原理1.组成部分说明如下2.消息发布接受流程六、如何保证消息不丢失1.消息持久化2.ACK确认机制(异步)3.设置集群镜像模式4.消息补偿机制5.路由保障(解决交换机消息丢失的问题)5.生产者生产消息到RabbitMQ Server可靠性保证一、介绍MQ全称为Message Queue,即消息队列,RabbitMQ是由Erlang语言开发,基

2020-11-02 19:46:24 367

原创 计算机网络

计算机网络一、三次握手和四次挥手1.TCP报文格式简介:1.序号(sequence number)2.确认号(acknowledgement)3.标志位2.三次握手3.四次挥手二、TCP/IP四层模型和OSI七层模型1.TCP/IP四层模型2.OSI七层模型三、从输入URL到详细页面的展示的详细过程。1.输入地址2.DNS解析IP地址3.浏览器向web服务器发送一个HTTP请求4.服务器处理请求5.服务器返回一个HTTP响应6.浏览器显示HTML四、GET和POST的区别五、HTTP请求报文格式1.请求行2

2020-11-02 16:39:59 1024 2

原创 操作系统

操作系统一、进程与线程的概念,以及为什么要有进程线程,它们有什么区别1.基本概念:2.区别二、进程和线程间通信1.进程1.管道2.系统IPC1.消息队列2.信号量3.信号4.共享内存3.套接字socket2.线程1.临界区2.互斥量3.信号量4.事件三、虚拟内存1.为什么会有虚拟内存2.什么是虚拟地址空间?3.虚拟内存的好处4.虚拟内存和物理内存的区别1.作用不同2.特点不同3.主体不同四、程序的内存结构1.堆2.栈3.数据段4.代码段5.BBS未初始化的数据区五、缺页中断1.什么是缺页中断2.缺页中断的处

2020-10-27 15:55:42 809

原创 网络编程IO多路复用(系统中断、BIO、NIO、select、poll、epoll)

网络编程IO多路复用(系统中断、BIO、NIO、select、poll、epoll)一、Linux操作系统中断1.什么是中断?2.软中断和硬中断二、同步异步1.同步2.异步三、阻塞和非阻塞1.阻塞方式2.非阻塞方式四、BIO(同步阻塞)一、Linux操作系统中断1.什么是中断?我们知道现代计算机CPU在执行任务都是将CPU的时间划分为很细粒度的时间片,一个任务每次只能执行这么多的时间,时间到了必须要交出使用权,那么时间到了之后系统做了什么?这就要用到中断了,时间片到了会有定时器触发一个软中断,然后进入

2020-10-27 10:25:30 237

原创 事务(ACID特性,读问题,隔离级别)

事务(ACID特性,读问题,隔离级别)一、事务的基本概念二、事务的ACID特性1.原子性(Atomicity)2.一致性(Consistency)3.隔离性(Isolation)4.持久性(Durability)三、隔离级别1.为什么会有隔离级别?2.读问题3.隔离级别一、事务的基本概念事务是指一组最小的逻辑操作单元,里面有多个操作组成。组成事务的每一部分必须要同时提交成功,如果有一个操作失败,整个操作回滚。二、事务的ACID特性1.原子性(Atomicity)原子性是指事务是一个不可分割的工作单

2020-10-26 16:19:40 137

原创 MySQL索引底层

MySQL索引底层一、聚簇索引和非聚簇索引是什么?他们在索引树的叶子节点上存储数据有什么区别?二、覆盖索引三、索引失效的底层原理一、聚簇索引和非聚簇索引是什么?他们在索引树的叶子节点上存储数据有什么区别?**聚簇索引:**并不是一种单独的索引类型,而是一种存储数据方式,聚簇的意思就是数据行和相邻的键值紧凑的存储在一起,因为无法同时把数据行放在两个不同的地方,所以一个表只能有一个聚簇索引。**聚簇索引的优点:**数据访问的更快,因为聚簇索引将索引和数据保存在同一个索引树中,因此从聚簇索引中获取数据通常比

2020-10-26 15:43:52 295

原创 MySQL高级(五)--数据库中的各种锁,主从复制

MySQL高级(五)--数据库中的各种锁,主从复制一、不可重复读和幻读的区别二、MySQL数据库中的各种锁1.锁按使用方式划分-悲观锁和乐观锁2.锁按级别划分--共享锁(读锁)和排他锁(写锁)3.锁按粒度分为--表锁和行锁4.数据库中的死锁问题5.死锁问题的解决和排查6.平时使用时如何避免死锁的发生一、不可重复读和幻读的区别不可重复读的重点是修改:比如:在事务1中,A读取了自己的工资是1000;在事务2中,财务人员修改A工资为2000,并提交事务;在事务1中,A再次读取到自己的工资时,变为了2000.

2020-10-26 15:09:20 299 1

原创 MySQL高级(四)---(in和exists,order by优化,慢查询日志,show profile,数据库锁)

MySQL高级(四)---(in和exists,order by优化,慢查询日志,show profile,数据库锁一、MySQL中in和exists二、order by优化1.尽量使用index方式排序,避免使用filesort方式排序。2.尽可能在索引列上完成排序,遵照索引的最左前缀原则一、MySQL中in和existsin和exists常用于where表达式中,其作用是查询某个范围内的数据。#用法1select * from A where in id(1,2);#就等同于select *

2020-10-26 11:25:13 292 1

原创 MySQL高级(三)--索引优化,索引失效

MySQL高级(三)--索引优化,索引失效一、单表、两表、三表优化1.单表索引优化2.两表索引优化3.三表索引优化二、索引失效1.全职匹配我最爱2.最佳左前缀法则3.不要在索引列上做任何操作(计算,函数,自动或手动的类型转换),会导致索引失效而转向全表扫描。4.范围查询后面的索引会失效5.尽量使用覆盖索引(索引和查询列一致),减少select*6.在使用(!=或者<>)无法使用索引,会导致索引失效7.is null, Is not null 也无法使用索引8.模糊查询以通配符开头的语句,索引会失

2020-10-25 21:13:00 102

原创 MySQL高级(二)--索引(什么是索引,分类,结构,什么时候建立,Explain使用)

MySQL高级(二)--索引(什么是索引,分类,结构,什么时候建立,Explain使用)一、索引概述二、索引的分类三、索引的结构四、建立索引的条件五、性能分析---explain一、索引概述1.索引就是帮助MySQL高效获取数据的数据结构。可以简单理解为排好序的快速查找数据结构。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据节后,就是索引。下图就是一种可能的索引方式示例:解释下:左边是数据表,一共

2020-10-25 18:59:13 164

原创 MySQL高级(一)(逻辑架构,SQL执行顺序,常见的JOIN查询)

MySQL高级(一)(逻辑架构,SQL执行顺序,常见的JOIN查询)一、MySQL逻辑架构介绍二、SQL的执行顺序三、常见的JOIN查询一、MySQL逻辑架构介绍MySQL的逻辑架构分四层1.连接层:主要完成一些类似连接处理,授权认证及相关的安全方案,在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。2.服务层:这是MySQL的核心部分,通常叫做SQLLayer,在MySQL数据库系统处理底层各种数据之前的所有工作都是在这一层完成的,包括权限判断,SQL接口,SQL解析,SQL分析

2020-10-25 16:00:42 180

原创 JDBC进阶

JDBC进阶一、如何提升读取数据的性能,以及更新数据的性能?二、Statement和PreparedStatement的区别?哪个性能更好三、Jdo以及作用四、JDBC反射及作用一、如何提升读取数据的性能,以及更新数据的性能?要提升读取数据的性能,可以指定通过结果集(ResultSet)对象的setFetchSize()方法指定每次抓取的记录数(空间换时间的策略);要提升更新数据的性能可以使用PrepareStatement语句构建批处理,将若干SQL语句置于一个批处理中执行。二、Statement和

2020-10-25 12:21:22 104 1

原创 JDBC基础

JDBC基础一、数据连接池的工作机制二、继承映射三、数据库优化方法四、left join和right join的区别五、MySql的主从复制六、数据库ACID的特性七、数据库的三个范式八、数据库乐观锁和悲观锁九、数据库的隔离级别十、数据库索引底层的实现,哪些情况下索引会失效十一、MySQL数据库的两种引擎区别十二、什么是数据库索引,什么时候用InnoDB引擎,什么时候用MylSAM?十三、数据库的水平切分与垂直切分十四、JDBC中如何进行事务处理总结一、数据连接池的工作机制J2EE服务器启动时会建立一定

2020-10-25 11:47:15 222

原创 Mybatis和SpringMVC相关问题

Mybatis和SpringMVC的相关问题一、什么是SpringMVC?二、SpringMVC的工作原理三、SpringMVC常用的注解有哪些四、@Controller和@RestController的区别?五、Mybatis中的#和$区别六、当实体类中的属性名和表中的字段名不一样怎么办?七、模糊查询的like语句怎么写八、Mybatis实现一对一有几种方式?具体怎么操作?九、Mybatis实现一对多有几种方式,怎么操作的的?十、Mybatis是否支持延迟加载?如果支持,它的实现原理是什么十一、什么是My

2020-10-25 09:32:32 144

原创 Struts

Struts概念及应用场景Struts是采用Java Serlvlet/JavaServerPages技术,开发web应用程序的开放源码的Framework。采用Struts能开发出基于MVC(model-View-Controller)设计模式的应用架构。有如下功能:包含一个controller servlet,能将用户的请求发送到相应的Action对象。JSP自由tag库,并且再controller servlet中提供关联支持,帮助开发人员创建交互式表单应用。提供了一系列适用对象:XML处理、

2020-10-23 16:26:24 56

原创 Hibernate

Hibernate概念Hibernate是一种ORM框架,全称为 Object_Relative DateBase-Mapping,在Java对象与关系数据库之间建立某种映射,以实现直接存取Java对象!也就是我们MVC中的数据持久层->在编写程序中的DAO层…Hibernate可以帮我们自动生成sql语句。实体对象的三种状态,对应的转换关系最新的Hibernate文档中为Hibernate对象定义了四种(原来是三种,以前没有移除态,以前把移除态视为瞬时态):瞬时态(new,or trans

2020-10-23 16:18:15 97

原创 Spring(二)

IOC和AOP是什么依赖注入的三种方式:1.接口注入。2.Construct注入。3.Setter注入。控制反转(IOC)与依赖注入(DI)是同一个概念,引入IOC的目的:1.脱开、降低类之间的耦合;2.倡导面向接口编程,实施依赖倒换的原则;3.提高系统可插入、可测试、可修改等特性。具体做法:1.将Bean之间的依赖关系尽可能的转换为关联关系;2.将对具体类的关联尽可能的转换为对Java interface的关联,而不是与具体的服务对象相关联;3.Bean实例具体关联Java interface的哪个

2020-10-23 14:34:35 126

原创 Spring(一)

Spring中的自动装配方式1.no:不进行自动装配,手动配置Bean的依赖关系。2.byName:根据Bean的名字进行自动装配。3.byType:根据Bean的类型进行自动装配。4.constructor:类似于byType,不过是应用于构造器的参数,如果正好有一个Bean与构造器的参数类型相同则可以自动装配,否则会导致错误。5.autodetect:如果有默认的构造器,则通过constructor的方式进行自动装配,否则使用byType的方式进行自动装配。自动装配没有自定义装配方式那么精确

2020-10-23 12:12:57 140

原创 IO和NIOAIO

运行时异常与受检异常区别异常是表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见的运行错误,只要程序设计的没有问题通常就不会发生。受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发。Java编译器要求方法必须声明抛出可能发生的受检异常,但是并不要求必须声明抛出未被捕捉的运行时异常。异常和继承一样,是面向对象程序设计中经常被滥用的东西,在Effective Java中对异常的使用给出了以下原则:1.不要将异常处理用于正常的控制流

2020-10-22 20:50:19 128

原创 GC

请简单描述一下垃圾回收器的基本原理?它是马上回收内存吗?怎么去通知虚拟机进行垃圾回收?对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆中的所有对象。通过这种方式确定哪些对象是可达的,哪些是不可达的。当GC确定确定一些对象为不可达的时候,GC就有责任回收这些内存空间。可以马上回收内存。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。Java中内存泄漏通俗一点说就是不在会被使用的

2020-10-22 20:19:34 107

原创 JVM

JVM加载class文件的原理JVM中类的装载是由Classloader和它的子类来实现的,Java ClassLoader是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。Java中所有类,都需要由类加载器装载到JVM中才能运行。类加载器本身也是一个类,而它的工作就是把class文件从硬盘读取到内存中。在写程序的时候,几乎不关系类的加载,因为这些都是隐式装载的,除非有特殊的用法,像反射,就需要显式的加载所需要的类。类装载方式,有两种1.隐式装载,程序在运行过程中当碰到通过ne

2020-10-22 16:33:23 567

原创 反射

Java中反射的实现过程和作用Java语言编译之后会生成一个.class文件,反射就是通过字节码文件找到某一个类、类中的方法以及属性等。反射的实现主要借助四个类:Class:类的对象;Constructor:类的构造方法;Field:类中的属性对象;Method:类中的方法对象。作用:反射机制是指程序在运行的时候能够获取自身的信息。在JAVA中,只要给定类的名字,那么就可以通过反射来获取类的所有信息。...

2020-10-22 09:33:29 102

原创 JDK

JDK和JRE的区别Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。他同时也包含执行applet需要的浏览器插件。Java开发工具包(JDK)是具有完整的Java软件开发包,包含了JRE,编译器和其他的工具(Javadoc、Java调试器),可以让开发者开发、编译、执行Java应用程序。LongAdder和AtomicLong有什么区别JDK1.8引入了Long Adder类。CAS机制,就是,在一个死循环内,不断尝试修改目标值,直到修改成功。如果竞争不激烈,那么修改成功的概率就

2020-10-22 09:28:23 994

原创

synchronized与java.util.concurrent.locks.Lock的相同和不同相同点:Lock能完成synchronized所实现的所有功能。不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一点要求人工释放,而且必须再finally语句中释放。Java中如何确保N个线程可以访问N个资源,但同时又不导致死锁使用多线程的时候,一种非常简单的避免死锁的方式就是:指定获取锁的顺序,并强制线程按照指定的顺序获取锁

2020-10-21 23:51:28 248

原创 线程(二)

创建线程有几种方式?哪种受欢迎 为什么?有三种方式可以创建线程:继承Thread类、实现Runnable接口、应用程序可以使用Executor框架来创建线程池实现Runnable接口这种方式更受欢迎,因为这个不需要继承Thread类。在应用设计中已经继承了别的对象的情况下,这需要多继承,但Java不支持多继承,所以只能实现接口。同时线程池也是非常高效的,很容易实现和使用Java多线程回调是什么意思?所谓回调,就是客户程序C调用服务程序S中的某个方法A,然后S又在某个时候反过来调用C中的某个方法B,对

2020-10-21 20:53:25 394

原创 线程(一)

如何保证线程安全通过合理的时间调度,避开共享资源的存取冲突。另外,在并行任务设计上可以通过适当的策略,保证任务与任务之间不存在共享资源,设计一个规则来保护一个客户的计算工作和数据访问只会被一个线程或一台机器完成,而不是把一个客户的计算工作分配给多个线程去完成线程的基本状态以及状态之间的关系其中Running表示运行状态,Runable表示就绪状态(万事俱备,只欠CPU),Blocked表示阻塞状态,阻塞状态又有多种情况,可能是因为调用wait()方法进入等待池,也可能执行同步方法或同步代码块进入等锁池

2020-10-21 17:09:23 208

原创 集合(二)

为什么集合类没有实现Cloneable和Serializable接口克隆(cloning)或者是序列化(serialization)的语义和含义是跟具体的实现相关的。因此,应该由集合类的具体实现来决定如何被克隆或者是序列化。实现serialization序列化的作用:将对象的状态保存在存储媒体中以便可以在以后重写创建出完全相同的副本;按值将对象从一个应用程序域发向另一个应用程序域。实现Serialization接口的作用就是可以把对象存到字节流,然后可以恢复。要网络传输就得转为字节流,所以在分布式应用

2020-10-21 14:50:11 350

原创 集合(一)

List Map Set三个接口存储元素时,各有什么特点?List以特定的索引来存取元素,可以有重复元素。Set不能存放重复元素(用对象equals()方法来区分元素是否重复)。Map保存键值对映射,映射关系可以是一对一,多对一。Set和Map容器都有基于哈希存储和排序树的两种实现版本,基于哈希存储的版本理论存取时间复杂度是O(1),而基于排序树版本的实现在插入或删除元素时会按照元素或元素的键构成排序树从而达到排序和去重的目的ArrayList Vector LinkedList的存储性能和特性Ar

2020-10-21 11:16:35 302

原创 面向对象(三)

静态变量存放在什么位置方法区类加载机制和双亲委派模型的好处某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,一次递归,如果父类加载器可以完成类加载任务,就成功返回;只有父类加载器无法完成此加载任务的时候才自己去加载。双亲委派模型的好处在于Java类随着他的类加载器一起具备了一种带有优先级的层次关系,例如java.lang.object,它存在在rt.jar中,无论哪一个类要加载这个类,最终都是委派给处于模型最顶端的bookstarp CLassLoader进行加载,因此OBje

2020-10-21 10:15:55 398

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除