Java基础常识

简介: 本文简要介绍了Java中String、StringBuilder与StringBuffer的区别,阐述了序列化与反序列化的基本概念,并概述了Java异常体系及常用数据结构,如动态数组、链表、栈、队列、哈希表、红黑树、跳表、B+树等,同时提及IO流的使用与注意事项。

String,StringBuilder 和 StringBuffer 的区别

string 是不可变的内部是final修饰,不适合大量字符的拼接

stringbuilder,StringBuffer动态数组

stringbuilder 不适合多线程,未加锁

StringBuffer已经加锁

什么是序列化与反序列化

  • 序列化 = 对象 → 字节流(用于存储或传输)
  • 反序列化 = 字节流 → 对象(用于重建状态)

序列化是对象状态的“冷冻干燥”,反序列化是“加水复活”。

序列化:动变静,

反序列化:静变动

说说 Java 中的异常

throwable父类,子类由error和exception,error jvm问题,无法处理,exception分为运行时runtimeexception和其他。运行时异常常见的由空指针异常,除数为0,,处理可以使用throw或者trycatch处理

你知道的数据结构有哪些

线性结构

动态数组:可以扩容,连续存储( ArrayList)

链表:不连续存储,有当前节点,才能找到相邻节点(linkedlist)

:先进后出,常用方法pop(出栈) push(入栈)peek(栈顶获取)linkedlist

队列:先进先出, linkedlist实现的是双端队列,常用方法:addfirst,addlast,标准队列off队尾添加。poll队头移除

非线性结构:

优先级队列: 保证优先级高的先出队,实现方式小顶堆(优先级小的都是根节点),或者大顶堆(优先级高的都是根节点)适合流式数据的处理(流式数据:无结束点,持续性)

hash表 key-value结构,根据key生成hash码存储数据value,适合数据的快速查找,实现有 HashMap(初始链表+数组,链表长度大于8数组长度大于64转化为红黑树,单线程首选),Hashtable(线程安全,效率低下)

红黑树:自平衡的二叉查找树,相对线性结构性能较好, TreeMap 属于红黑树

跳表:多级链表结构,链表上有多层索引,层级随机,比红黑树实现简单,性能差不多 。java 中的 ConcurrentSkipListMap 用跳表结构实现,redis 中的 SortedSet 也是用跳表实现

B+ 树:可以自平衡的 N 叉查找树。关系型数据库的索引常用 B+ 树实现

io流

要注意流的关闭

相关文章
|
JavaScript
【JS用法】js判断字符串是否包含某个字符串
【JS用法】js判断字符串是否包含某个字符串
459 0
|
24天前
|
安全 Java 应用服务中间件
spring基础
本文介绍了 Spring 与 SpringMVC 常用注解、RESTful 风格、IOC/DI 原理、Bean 作用域、自动装配流程及事务失效场景,帮助开发者深入理解 Spring 框架核心机制与常见问题。
spring基础
|
24天前
|
存储 算法 Sentinel
熔断降级
本内容介绍了微服务中熔断降级的实现原理及Sentinel的底层机制。通过OpenFeign集成Sentinel,利用断路器统计异常和慢请求比例,触发熔断并降级,提升系统稳定性。还讲解了Sentinel使用的限流算法,如滑动窗口、令牌桶和漏桶算法,以应对不同场景下的流量控制需求。
|
24天前
|
存储 SQL 关系型数据库
mysql理解
本文介绍了MySQL查询语句的书写顺序与执行顺序的区别,多表查询的实现方式,包括内连接、外连接的使用与差异,以及CHAR与VARCHAR字段类型的异同点,帮助开发者更好地理解和优化SQL查询。
|
24天前
|
存储 关系型数据库 MySQL
杂项9
行锁在数据库中用于并发控制,当更新操作能通过索引精确定位到具体行时生效,如 MySQL InnoDB。若未使用索引,可能升级为表锁,影响并发性能。更新操作优先使用行锁以保证数据一致性和高效并发。
|
24天前
|
负载均衡 网络性能优化
了解EMQ
EMQ通过MQTT协议的QoS机制保障消息可靠传输,支持QoS 0、1、2三个等级,分别实现消息最多一次、至少一次和恰好一次传递。对于延迟消息,EMQ X支持通过特殊主题前缀`$delayed/{DelayInterval}`实现延迟发布。点对点通信可通过不带群组的共享订阅(如`$queue/t/1`)实现,结合负载均衡策略如随机、轮询等,确保消息仅由一个订阅者接收;发布订阅模式则通过带群组的共享订阅(如`$share/组名称/t/1`)实现,确保每组一个订阅者收取消息。
|
24天前
|
存储 算法 安全
对象内存分配机制与垃圾回收
本内容介绍了对象内存分配机制与垃圾回收(GC)原理,涵盖对象在堆与栈中的存储、新生代与老年代的GC策略、常见回收算法及回收器特点,适用于Java等语言的内存管理优化。
|
25天前
|
前端开发 JavaScript Java
MVVM 状态管理
MVVM 实现数据驱动视图,通过 ViewModel 自动更新 View,支持双向绑定,生命周期管理控制流程。async/await 使异步代码更接近同步结构,提升可读性与调试效率。
|
25天前
|
JavaScript 前端开发 Go
web-2
CSS 样式通过选择器定义元素外观,属静态样式;JS 样式通过操作 DOM 实现动态修改。两者在语法、作用方式及应用场景上存在差异,CSS 侧重布局与视觉表现,JS 则用于交互与动态逻辑控制。