自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

原创 Java 面试 (三)

本文概述了Java并发编程的核心概念。首先介绍了并发的定义,然后详细说明了四种创建线程的方式:继承Thread类、实现Runnable接口、使用Callable接口和线程池。文章指出频繁创建销毁线程会带来显著开销,建议使用线程池复用线程。接着描述了线程的六种生命周期状态。最后解析了AQS设计模式,其通过固化线程排队、阻塞/唤醒等不变部分,开放资源获取/释放等可变部分,成为Java并发包的基础框架。

2025-12-23 19:00:58 302

原创 面试(二)

本文摘要:文章涵盖多个技术主题,包括Java类加载的五个阶段(加载、验证、准备、解析、初始化)、OSI七层模型和TCP/IP四层模型的对比、医院系统开发建议(推荐实体-关系模型和关系型数据库)、AI开发实践方法论(问题分解、人机协同、错误分析)以及Vue2与Vue3的核心区别(v-if/v-for优先级、虚拟DOM优化、响应式系统重构)。重点突出了Vue3在性能和开发体验上的改进。(149字)

2025-09-08 13:33:26 392

原创 面试 (一)

本文摘要涵盖了多个计算机技术要点:1)HashMap采用数组+链表结构,通过链地址法解决冲突;2)多线程核心参数包括线程数配置和拒绝策略;3)JUC工具包提供线程池、锁机制等并发控制组件;4)C++与Java在编译方式和继承机制上存在差异;5)JVM采用双模式执行引擎实现跨平台;6)公平锁与非公平锁的区别及应用场景;7)针对恶意攻击的防护措施包括IP限流、Redis分布式限流和消息队列缓冲。这些知识点涉及数据结构、并发编程、语言特性和系统安全等多个技术领域。

2025-09-03 14:42:25 677

原创 面试 八股文 专栏(一)

Redis作为高性能内存数据库,具有高速读写、丰富数据结构、持久化机制等特点,常用于缓存优化。与MySQL结合使用时,Redis作为缓存层处理高频查询,MySQL负责持久化存储。需注意缓存失效问题如雪崩效应,可通过本地缓存和限流解决。Redis支持多种数据类型,采用单线程+IO多路复用实现高并发。AOP作为面向切面编程,可模块化处理横切关注点。MySQL事务隔离级别包括未提交读、提交读、可重复读和串行化,分别解决不同并发问题。

2025-09-01 16:41:17 782

原创 面试 八股文 经典题目 - HTTPS部分(一)

摘要:本文讲解了TCP四次握手原理及其必要性,详细解析了HTTP 504状态码(网关超时)的触发场景。针对服务器响应过慢问题,分析了操作系统层(CPU竞争)、中间件层(慢查询/连接池耗尽)和网络层(TCP重传/DNS延迟)三大主因,并提供了相应的排查方案:包括操作系统优化、Redis深度调优以及网络质量诊断等。特别强调了HTTP与HTTPS在加密机制(SSL/TLS)和传输层安全性上的核心差异(HTTP端口80明文传输,HTTPS端口443加密传输)。

2025-08-31 20:47:54 828

原创 面试 八股文 经典题目 - Mysql部分(一)

MySQL索引和事务机制解析:1)索引SQL执行通过解析、优化、执行三阶段,利用B+树结构减少磁盘I/O;2)事务提交包含日志缓冲、刷盘、状态更新等步骤;3)三大日志:redolog(物理修改记录)、binlog(逻辑变更)、undolog(回滚数据);4)索引采用B+树结构,优化磁盘存储和查询效率;5)MySQL锁机制包括表级锁(共享/排他)和行级锁(记录/间隙),配合线程池管理并发请求,保障数据一致性和性能。

2025-08-30 19:28:24 1315

原创 Java -- 文件基础知识--Java IO流原理--FileReader

本文介绍了Java文件操作和IO流相关知识。主要内容包括:1)使用File类进行文件基本操作;2)IO流原理及分类,包括字节流/字符流、输入/输出流;3)FileReader和FileWriter的常用方法,如read()、write()等,强调使用后需关闭或刷新。文章通过代码示例展示了如何获取文件信息、处理数据流,并说明了不同流类的继承关系。

2025-08-28 22:23:47 550

原创 Java -- 互斥锁--死锁--释放锁

本文介绍了Java中互斥锁的基本概念和应用。互斥锁通过synchronized关键字实现,确保同一时间只有一个线程访问共享资源,分为实例对象锁和类对象锁。文章详细说明了同步方法的使用注意事项、锁对象的选择规则,并强调了死锁的避免。同时列举了四种会释放锁的情况(正常结束、break/return、异常、wait)和两种不会释放锁的操作(sleep/yield、suspend),特别指出应避免使用suspend/resume方法控制线程。

2025-08-22 00:03:32 339

原创 Java -- 用户线程和守护线程--线程同步机制

本文介绍了Java线程的核心概念:1.线程方法包括yield(不确定的礼让)和join(强制插队执行);2.线程分为用户线程(工作线程)和守护线程(如垃圾回收机制),后者随用户线程结束而终止;3.线程生命周期包含6种状态(NEW、RUNNABLE等);4.线程同步机制通过synchronized实现,包括同步代码块和同步方法两种形式,确保数据完整性。全文系统性地梳理了线程控制、分类、状态管理及同步机制等关键知识点。

2025-08-19 23:54:01 293

原创 Java -- 事件处理机制--线程相关知识

本文介绍了Java线程编程的核心概念,包括:1)Java事件处理机制采用"委派事件模型";2)线程基础知识,区分进程与线程、单线程与多线程、并发与并行;3)创建线程的两种方式(继承Thread类和实现Runnable接口)及其区别;4)线程终止的两种方式;5)线程常用操作方法,如设置名称、优先级、休眠等。重点讲解了线程创建和管理的技术细节,并推荐使用Runnable接口实现多线程以避免单继承限制。

2025-08-19 21:46:23 404

原创 Java -- 坐标体系--绘图方法

本文介绍了Java绘图的基本原理与方法。首先说明计算机屏幕由像素点阵构成,Java坐标系以左上角为原点,x/y轴分别表示水平和垂直方向像素距离。绘图主要通过Component类的paint()和repaint()方法实现,系统会在窗口变化时自动调用paint()重绘。Graphics类提供多种绘图工具:drawLine()画直线,drawRect()画矩形,drawOval()画椭圆,fillRect()填充矩形,以及drawImage()绘制图片和drawString()输出文字。

2025-08-17 17:05:38 262

原创 Java -- 泛型-自定义泛型

本文介绍了Java泛型的概念、优势和使用方法。泛型是JDK5引入的参数化类型,主要解决数据类型安全性问题,其优点包括:编译时类型检查提高安全性、减少类型转换提升效率、消除编译警告等。文章详细说明了泛型类、泛型接口和泛型方法的定义语法,并重点阐述了使用时的注意事项:泛型类型必须是引用类型;数组初始化限制;静态成员不能使用泛型;泛型类型的确定时机;默认Object类型处理等。特别强调了泛型方法与普通方法使用泛型的区别,有助于开发者正确理解和应用泛型特性。

2025-08-16 22:50:40 308

原创 Java -- Collections 工具类-分析HashSet和TreeSet分别如何实现去重

本文摘要: Collections工具类提供了静态方法对集合进行排序、查找和替换操作,包括reverse、shuffle、sort、swap等方法,以及max、min、frequency等查询功能。 HashSet通过hashCode()和equals()方法实现去重,先计算hash值定位存储位置,再比较元素是否相等;TreeSet则通过Comparator或Comparable接口的compare/compareTo方法判断元素是否重复,返回0视为相同元素不予添加。两种Set实现去重的机制不同,分别基于哈

2025-08-15 16:54:16 352

原创 Java -- 总结-开发中如何选择集合实现类

本文总结了Java集合框架的选择原则:首先根据存储类型(单列或双列)选择集合接口。单列集合(Collection)分为允许重复的List(增删多用LinkedList,改查多用ArrayList)和不允许重复的Set(无序用HashSet,排序用TreeSet,保持顺序用LinkedHashSet)。双列集合(Map)包括无序的HashMap、排序的TreeMap、保持顺序的LinkedHashMap,以及读取配置的Properties。选择时应结合业务需求和数据特点,考虑各实现类的底层数据结构和性能特征。

2025-08-15 10:45:06 125

原创 Java -- HashTable的基本介绍-Properties

本文介绍了HashTable和Properties的基本特性及与HashMap的对比。HashTable是线程安全的K-V结构,键值不可为null,初始容量11,扩容机制为(oldCapacity<<1)+1;而HashMap线程不安全但效率高,允许null键值。Properties继承自HashTable,特点类似,并支持从.properties文件读写数据。两者均实现Map接口,但HashTable适用于需要线程安全的场景。(149字)

2025-08-15 10:35:14 163

原创 Java -- HashSet的全面说明-Map接口的常用方法-遍历方法

摘要: 本文详细介绍了Java中HashSet和Map接口的特性及使用方法。HashSet基于HashMap实现,允许null值但不可重复,元素无序。Map接口存储键值对数据,key不可重复但value可重复,支持null键值。文章列举了Map的常用方法如put、get、remove等,并提供了四种遍历方式:通过keySet遍历、values遍历、entrySet增强for循环遍历和entrySet迭代器遍历。每种方法都配有具体代码示例,展示了如何获取和操作Map中的键值对数据。

2025-08-14 19:10:05 703

原创 Java -- Vector底层结构-- ArrayList和LinkedList的比较

本文对比分析了Java集合框架中的Vector、ArrayList和LinkedList。Vector使用数组存储,线程安全但效率较低;LinkedList基于双向链表实现,增删效率高但查询慢;ArrayList采用可变数组,查询快但增删慢。选择建议:频繁查询用ArrayList,频繁增删用LinkedList。此外,文章还介绍了Set接口的无序特性及其遍历方式(迭代器和增强for循环),并演示了HashSet的基本用法。实际项目中应根据业务需求灵活选择集合类型。

2025-08-13 11:14:14 523

原创 Java -- List接口方法--遍历--ArrayList的注意事项

本文介绍了Java中List接口及其实现类ArrayList的核心知识点。List接口特点包括元素有序、可重复、支持索引访问。ArrayList遍历有三种方式:迭代器、增强for循环和普通for循环。注意事项包括允许null值、基于数组实现、线程不安全等。底层结构采用Object数组elementData,无参构造初始容量为0,首次添加扩容至10,后续扩容1.5倍;指定大小构造器则直接初始化为指定容量,扩容同样为1.5倍。

2025-08-12 16:31:45 324

原创 Java -- 集合 --Collection接口和常用的方法

本文摘要:比较了数组与集合的特点及使用场景。数组长度固定且类型单一,操作元素较繁琐;集合可动态存储任意对象,提供add/remove等便捷方法。集合分为单列(Collection)和双列(Map),Collection通过List(有序可重复)和Set(无序不重复)实现。介绍了Collection常用方法如add/remove/contains等,以及Iterator迭代器遍历集合的注意事项。最后说明增强for循环可简化集合和数组的遍历操作。

2025-08-11 23:20:18 275

原创 Java -- 日期类-第一代-第二代-第三代日期

摘要:Java中的日期处理经历了三代演进。第一代Date类精确到毫秒,需配合SimpleDateFormat进行格式化;第二代Calendar类为抽象类,提供丰富日历字段操作方法,但存在可变性、偏移性等问题;第三代LocalDateTime等类解决了前两代的不足,提供不可变、线程安全的日期时间操作,支持DateTimeFormatter格式化,并新增Instant时间戳、MonthDay等实用功能,包含日期加减等便捷方法。

2025-08-09 22:50:27 444

原创 Java -- Arrays类-- System类-- BigInteger和BigDecimal类

Java常用工具类摘要:Arrays类提供数组操作(toString、sort、binarySearch等);System类包含系统级操作(exit、arraycopy、gc等);BigInteger/BigDecimal类处理大数和精确运算(提供add/subtract/multiply/divide方法)。主要方法包括:Arrays.toString()输出数组,System.arraycopy()复制数组,BigDecimal.divide()支持精度控制。这些工具类为开发提供了便捷的数组处理、系统操

2025-08-07 11:19:59 412

原创 Java -- Math类

Java Math类提供了常用的数学运算方法,包括绝对值(abs)、幂运算(pow)、向上取整(ceil)、向下取整(floor)、四舍五入(round)、开平方(sqrt)等。它还支持生成随机数(random)和比较大小(max/min)。这些方法可以处理整数和浮点数运算,如pow(-3,4)计算-3的4次方,ceil(-3.001)向上取整为-3,floor(4.2)向下取整为4。random()方法可生成0-1之间的随机数,通过公式可扩展范围。Math类简化了常见数学运算的实现。

2025-07-29 18:25:06 130

原创 Java -- String类-StringBuffer类-StringBuilder类

摘要:String类是不可变字符序列,常用方法包括equals、substring、replace等。StringBuffer和StringBuilder是可变字符序列,支持增删操作,StringBuffer线程安全但效率较低,StringBuilder非线程安全但效率最高。String适合字符串常量,StringBuffer/StringBuilder适合频繁修改字符串的场景。大量修改字符串时应避免使用String,以免产生过多副本影响性能。

2025-07-29 17:52:18 818

原创 Java -- 自定义异常--Wrapper类--String类

摘要:本文介绍了Java中的异常处理和常用类。自定义异常通过继承Exception或RuntimeException实现,throws用于声明异常而throw用于抛出异常。包装类提供了基本类型的对象表示,支持手动/自动装箱拆箱。String类用于存储字符序列,构造方式包括直接赋值和new实例化,字符采用Unicode编码存储。这些特性构成了Java核心的错误处理和数据类型转换机制。(149字)

2025-07-21 23:13:58 318

原创 Java -- 异常--以及处理

Java异常分为Error和Exception两大类:Error是JVM无法处理的严重问题,Exception是可以处理的程序异常。Exception又分为运行时异常(如空指针、数组越界)和编译时异常。异常处理方式包括try-catch-finally自行处理和throws向上抛出。try-catch需注意异常匹配顺序(子类在前)、finally总会执行;throws需遵循子类异常不能超过父类范围的原则。编译异常必须处理,运行时异常默认throws。

2025-07-09 21:49:54 431

原创 Java --枚举类--Annotation介绍

枚举类要点:1)构造器私有化,内部创建对象并暴露;2)enum关键字自动继承Enum类;3)简化语法:无参构造可省略括号,多个对象用逗号分隔;4)常用方法包括toString、name、values等。注解使用要点:1)@Override确保方法重写;2)@Deprecated标记过时元素;3)@SuppressWarnings抑制警告。注解需用@符号修饰程序元素。

2025-07-08 18:11:34 284

原创 Java --接口--内部类分析

摘要:本文对比了接口与继承的差异,指出继承侧重代码复用和维护(is-a关系),接口更灵活(like-a关系),利于设计和解耦。内部类作为类的第五大成员,包含四种类型:局部内部类(方法/代码块中定义)、匿名内部类(无类名)、成员内部类(可访问外部类私有成员)和静态内部类(仅访问外部类静态成员)。各类内部类在作用域、访问权限和创建方式上存在差异,体现了类间的包含关系。

2025-07-07 21:26:37 490

原创 Java-- 懒汉式--Final关键字--Abstract抽象方法--接口

摘要: 本文比较了懒汉式和饿汉式单例模式的区别:饿汉式在类加载时创建实例(线程安全但可能浪费资源),懒汉式在首次使用时创建(需处理线程安全问题)。final关键字用于限制继承、方法重写和变量修改,常与static搭配优化性能。抽象类(abstract)强调设计,需子类实现抽象方法,不能实例化。接口(interface)定义未实现的方法集合,实现类需完成所有抽象方法,支持多继承,属性默认为public static final。两者都用于代码规范与扩展,但抽象类侧重继承关系,接口侧重行为契约。

2025-07-06 21:46:35 583

原创 Java --代码块--饿汉单例模式

代码块分为静态代码块和普通代码块,用于类初始化和对象实例化。静态代码块随类加载执行一次,用于类初始化;普通代码块在对象实例化时调用。两者调用顺序与定义顺序一致。静态成员优先于普通成员初始化。饿汉式单例模式通过私有构造器、静态实例和公共静态方法实现。

2025-07-05 21:55:34 226

原创 Java --类变量和类方法--main语句

本文介绍了Java中类变量(静态变量)和类方法的基本概念与使用规则。类变量是所有对象共享的变量,在类加载时生成,可通过类名或对象名访问。类方法只能访问静态成员,不能使用this/super关键字,而普通方法可访问所有成员。main方法是虚拟机调用的程序入口,必须是public static,可直接调用静态成员,但访问非静态成员需创建对象实例。文章还详细说明了静态与非静态成员的区别和使用场景,包括访问方式、内存分配等关键细节。

2025-07-05 17:54:22 495

原创 Java -- 第一阶段 房屋出租系统

摘要:这是一个基于Java的房屋出租系统实现,采用分层架构设计。项目包含四个核心模块:domain包定义House类封装房屋属性;service包的HouseService类负责业务逻辑(增删改查);utils包的Utility类提供输入验证工具;view包的HouseView类处理用户交互界面。系统功能包括房屋信息的增删改查、列表展示等,通过菜单驱动用户操作。主类HouseRentApp启动系统并显示主菜单。代码体现了面向对象设计思想,使用数组存储房屋数据,并实现了输入验证、ID自增等细节功能。

2025-07-04 21:03:04 155

原创 == 和 equals 的区别

Java中==和equals的区别:==是运算符,用于基本数据类型和引用类型的比较;而equals是Object类的方法,所有Java类都可以使用。对于基本数据类型,==比较值,equals无法使用。对于引用类型,==比较对象地址,equals默认也是比较地址,但可以重写来比较内容(如String和Integer类)。

2025-07-03 17:22:03 224

原创 Java--多态--向上转型--动态绑定机制--断点调试--向下转型

本文介绍了Java面向对象编程中的转型机制和重要概念。主要内容包括:1)向上转型和向下转型的语法规则及特点;2)Java动态绑定机制的工作原理;3)Object类的常用方法(equals、hashCode等);4)断点调试的使用方法和优势。重点阐述了转型时的类型判断规则、方法调用绑定机制以及调试技巧,帮助开发者更好地理解Java对象操作和调试方法。

2025-07-02 21:47:25 979

原创 Java--继承--Super--方法重写--多态

本文摘要总结了Java继承的核心要点:1)继承语法(extends)及子类与父类关系;2)继承优势(提高复用性、扩展性);3)继承规则(构造器调用、super使用、单继承限制);4)super关键字用法(访问父类成员、构造器);5)方法重写要求(同名同参、返回类型协变、访问权限不缩小);6)多态实现方式(方法重载/重写、对象编译/运行类型分离)。重点强调了继承中构造器调用机制、super使用规范以及重写与重载的本质区别。

2025-07-01 21:34:55 1031

原创 Java-包-访问修饰符-封装

本文摘要: Java编程中的包机制与封装技术详解。包的三大功能包括:区分同名类、管理大量类、控制访问范围,其本质是通过文件夹组织类文件。包的命名遵循特定规则和规范,常用包如java.lang、java.util等。访问修饰符分为四种级别(public、protected、默认、private),控制不同范围的访问权限。封装通过私有化属性和提供公共get/set方法,实现数据隐藏和安全访问,带来隐藏实现细节和保证数据合理性的好处。文章还详细说明了包和访问修饰符的使用注意事项,以及封装的具体实现步骤。

2025-06-30 21:24:40 520

原创 Java--可变参数--作用域--构造器--this

本文介绍了Java面向对象编程中的几个核心概念。方法重载允许同名方法存在,要求参数列表不同;可变参数简化了参数处理,本质是数组;变量作用域区分全局变量和局部变量;构造器用于对象初始化,具有类同名、无返回值等特点;this关键字用于访问本类成员,区分属性和局部变量。这些概念涉及语法规则、使用场景和注意事项,对理解Java面向对象编程至关重要。

2025-06-29 21:58:46 1052

原创 递归经典问题--老鼠迷宫

System.out.println("==========地图情况");//先创建迷宫,二维数组 表示 int[][] map = new int[8][7];System.out.println("=====找路的情况======");}else if (findway(map,i-1,j)) {//向上走。if (map[i][j]==0) {//当前位置为0,说明可以走。//当map[6][5]=2说明找到出路,就可以结束,否则就继续找。if (map[6][5]==2) {//找到路。

2025-06-29 15:27:44 454

原创 Java--方法递归

递归是方法自我调用的编程技巧,通过改变参数解决复杂问题。其核心规则包括:每次调用创建独立空间,局部变量互不影响;引用类型数据则共享;必须设置终止条件避免无限递归;最终结果返回给调用者。递归能让代码更简洁,但需遵循这些规则才能正确实现。

2025-06-29 15:26:41 197

原创 Java--面向对象基础--类与方法

1. 类是抽象的,代表一类事物,比如人类,猫类。2. 对象是具体的,实际的,代表一个具体的事物 即是实例3. 类是对象的模板,对象是类的一个个体,对应一个实例。public 返回数据类型 方法名 (形参列表...){// 方法体语句;return 返回值;1. 形参列表:表示成员方法输入cal(int n)2. 返回数据类型:表示成员方法输出,void表示没有返回值3. 方法主体:表示为了实现某一功能代码块4. return语句不是必须的。

2025-06-28 20:52:45 595

原创 Java--数组

该文摘要了数组的基本概念和操作。主要内容包括:数组的定义和初始化方式(动态初始化和直接赋值),数组的赋值机制(基本数据类型传递值,数组传递地址)。介绍了排序算法分类(内部排序和外部排序)和冒泡排序的实现原理。在查找方面提及顺序查找和二分查找。还讲解了二维数组的结构和访问方式,并以杨辉三角为例展示了二维数组的实际应用代码实现,包括数组空间分配、元素赋值和输出打印等操作。

2025-06-27 22:10:47 344

空空如也

空空如也

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

TA关注的人

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