- 博客(41)
- 收藏
- 关注
原创 jdbc基础(连接篇)
JDBC 是 Java 访问数据库的标准接口,本质是用一套统一代码,连接 MySQL、Oracle 等不同数据库,避免重复开发。程序员无需学习基础语法,只需换数据库驱动,就能连接不同数据库。这得益于jdbc的统一接口格式。
2025-11-09 23:12:47
398
原创 JavaWeb 全栈学习路径:从工具到项目的实战蜕变指南
这套学习路径,从工具使用的细节打磨,到技术原理的深度拆解,再到项目实战的场景化落地,全方位覆盖 JavaWeb 开发的核心要点,助你从入门到精通,成长为能独立承接企业级开发任务的 Java 工程师。除了基础的依赖管理,要掌握依赖排除,比如排除某个依赖传递过来的低版本日志包,避免版本冲突;结合声明式事务与编程式事务,应对复杂业务中的事务嵌套。高级映射中,一对一、一对多、多对多 关联查询要结合实际业务,如订单与订单详情的一对多查询,用户与角色的多对多查询,通过 resultMap 实现对象的嵌套映射。
2025-10-23 14:08:07
554
1
原创 JAVAEE阶段学习指南
完成MySQL的安装、卸载与测试,掌握数据库的CRUD操作,以及多表外键约束、聚合函数(count、sum、avg、max、min)的应用,熟练进行多表查询(内连接、外连接、子查询)与表设计(一对多、多对多、一对一、多对一);学习SQL语言分类(DDL、DML、DQL、DCL),掌握数据库及表的CRUD操作,理解字符串、数值、逻辑、日期等数据类型,以及主键、唯一、非空等约束的使用;认识数据库的定义、作用,了解关系型数据库的特点,熟悉MySQL、Oracle等常见数据库;
2025-10-22 13:21:11
374
原创 JAVASE核心知识体系规划(从0到1)
集合体系:Collection集合的通用方法,List(ArrayList、LinkedList、Vector)、Set(HashSet、LinkedHashSet、TreeSet)、Queue队列的实现差异与选型,Map(HashMap、TreeMap)的键值对存储机制,以及集合的遍历(普通for、增强for、迭代器)、泛型、可变参数等进阶知识,还有Arrays、Collections工具类的便捷操作;- 类与接口:内部类、匿名内部类的使用场景,抽象类与接口的设计原则,以及父子类之间的类型转换规则。
2025-10-22 13:14:58
456
原创 SpringAOP面向切面编程
Spring AOP是一种通过动态代理在不修改源码的情况下为程序添加统一功能的技术。它通过配置方式(XML或注解)在指定方法前后执行增强逻辑,解决了批量方法增强的问题。核心概念包括连接点、切入点、通知和切面,支持五种通知类型:前置、后置、环绕、最终和异常通知。实现机制基于动态代理,将增强方法与目标方法结合。配置方式分为XML(需定义切面和切入点)和注解(使用@Aspect等注解并开启自动代理)两种,后者更简洁。Spring AOP显著降低了代码耦合度,提高了可维护性。
2025-09-27 21:07:28
999
1
原创 Web中GET和POST请求的区别
GET:参数暴露在URL中,易被窃取(如浏览器历史记录、网络嗅探),安全性较低,不适合传递敏感信息(如密码、银行卡号)。GET:受浏览器和服务器对URL长度的限制(不同浏览器和服务器限制不同,一般建议不超过2048个字符)。GET:是幂等的(多次请求同一URL,结果一致),且可被浏览器缓存(利于资源复用,如静态页面、图片)。POST:用于提交资源(如创建、修改数据),例如“用户注册”“提交表单”“上传文件”。POST:不是幂等的(多次提交可能产生不同结果,如重复下单),默认不可缓存。
2025-09-21 22:17:49
199
原创 java:以BufferedReader为例分析为什么要使用包装流输入输出
Reader 是所有字符输入流的顶层抽象,定义了字符读取的核心方法(如 read() 、 read(char[]) 、 close() 等),BufferedReader需重写这些方法以实现“缓冲读取”的增强逻辑,同时保证与其他字符流(如FileReader)的接口一致性。适用于所有需要读取字符的场景,尤其是大文件读取、频繁读取、需按行读取的场景(如日志解析、配置文件读取),是实际开发中的首选方式。3. 按需“取用”:之后每次调用 read() ,都直接从这个“容器”里取1个字符,直到容器里的字符被取完。
2025-09-09 21:48:38
590
原创 java:io流相关类的继承关系梳理
BufferedInputStream :为其他字节输入流提供缓冲功能,提高读取效率,继承自 FilterInputStream ,而 FilterInputStream 继承自 InputStream。- RandomAccessFile :既不是 InputStream 的子类,也不是 OutputStream 的子类,它独立于标准的IO继承体系,用于随机访问文件,可以在文件的任意位置进行读写操作。
2025-09-08 20:31:59
1332
原创 JAVA:IO流之字节输入流InputStream基础
本文介绍了Java中的字节输入流操作,重点讲解了FileInputStream的使用方法。
2025-09-07 11:36:04
720
原创 JAVA基本文件操作
本文介绍了Java文件操作的基本方法。首先讲解了三种创建文件的方式:直接路径创建、父目录+子路径创建和组合路径创建,并指出createNewFile()才是实际创建文件的方法。其次列举了常用文件操作方法,包括获取文件名、路径、大小、判断文件类型等。最后演示了单级目录和多级目录的创建方法,使用mkdir()和mkdirs()分别实现。文章强调在Java中文件和目录的调用形式相同,需要注意区分。
2025-09-06 16:03:03
498
原创 JAVA线程同步基础(下)
本文通过一个老板与员工涨薪僵局的类比,解释了多线程中的死锁现象。当两个线程互相持有对方需要的锁资源时,就会出现互相等待的僵局。作者用Java代码模拟了这一场景:两个线程分别持有两个对象锁,并尝试获取对方持有的锁,导致程序陷入死锁状态。通过jconsole工具可以看到两个线程都处于"已锁定"状态而无法继续执行。文章最后强调在实际开发中要避免死锁情况的发生。
2025-09-05 17:57:04
401
原创 JAVA线程同步基础(中)
摘要:本文探讨了Java中静态与非静态同步代码块/方法的区别。通过创建两个Runnable线程类对象实现并发计数,当共同输出20次后停止。实验发现:1)非静态同步代码块使用this时,不同线程对象会各自独立加锁;2)解决方案包括使用静态同步代码块(类名.class)或创建静态共享锁对象。关键在于理解静态属性属于类级别,而非静态属性属于实例级别,这决定了多线程环境下的锁竞争机制。同步代码块比同步方法更高效,因其可精准锁定特定代码段。
2025-09-05 14:08:41
1128
原创 JAVA线程同步基础(上)
本文通过一个多线程卖水果的示例,演示了多线程并发访问共享资源时出现的资源抢占问题。当三个线程同时执行卖水果操作时,会出现资源竞争导致的程序拥堵。为了解决这个问题,作者使用synchronized关键字对sell()方法进行同步锁控制,确保同一时间只有一个线程能执行售卖操作,从而避免了并发问题。这种同步机制类似于"厕所关门"的比喻,通过互斥访问保证线程安全。文章还解释了为何不直接同步run()方法,指出这样做会导致其他线程完全被阻塞,而同步sell()方法能实现循环锁定,确保所有线程都能轮
2025-09-04 23:54:59
397
原创 JAVA泛型基础
本文介绍了Java泛型的基本概念和用法。泛型通过类型参数实现代码复用,支持类型安全检测,常用类型参数包括T、E、K、V、N等。文章通过Gen类示例演示了泛型类的创建和使用,强调泛型只支持引用类型。还介绍了三种通配符:无界通配符<?>、上界通配符<? extends A>和下界通配符<? super A>,并通过继承关系示例展示了它们的适用场景。最后通过ArrayList测试验证了不同通配符的使用限制,说明上界通配符不能调用父类,下界通配符不能调用子类,而无界通配符可接受所
2025-09-02 18:44:00
935
原创 JAVA控制台读取数据(学习笔记)
我们很多时候在力扣上刷题时题目中所给的输入条件都被弄成参数传过来用,而且在实际项目开发中也很少会用到从控制台读取数据。读取下一个字符串,遇到空格、换行符等分隔符时停止,返回String类型。读取一整行字符串,包含空格,返回字符串形式。关闭scanner对象释放资源:scanner.close();
2025-09-01 22:27:25
347
原创 eclipse包的作用及概念(学习笔记)
一、包的本质:包其实就是一个文件夹,我们在项目中创建一个包后,在eclipse的src文件下查看时会发现只不过多了一个文件夹。2.导报:import 包名.类名;(导入包中所有类,建议使用第一种方法)。1.规则:只能包含数字字母但不能用数字开头,下划线,小圆点,不能是关键字或保留字。1.打包:package 包名;(必须放在文件的第一行)。2.规范:com.公司名.项目名.业务模块名。2.类很多时,可以有效的管理类。刚听完hsp老师讲解的包的概念,我做一个总结。1.区分相同名的类。
2025-09-01 21:52:23
415
原创 JAVA中ArrayList基本语法(小白)
导入Arrays包。注意:java中的泛型不支持基本数据类型,只能接收引用数据类型,因此必须用包装类作为参数传递。4.查找元素首次出现的索引:indexOf(元素);//存在返回索引,不存在返回-1。3.判断元素是否存在:contains(元素);4.通过索引修改元素的值:set(索引,新的值);3.删除对应索引的元素:remove(索引);2.在List末尾添加元素:add(元素);1.通过索引获取元素:get(索引);6.清空所有元素:clean();将大整数加 1,并返回结果的数字数组。
2025-08-31 14:29:18
465
原创 JAVA中HashMap基本使用方法(小白)
如果我们将t中字符串的每个字符设置成HashMap,然后逐个减去s中的字符,最后判断哪个字符对应的值不为0就行了。1.创建名为map的映射(字符类型对应整形):HashMap<Character,Integer>map = new HashMap<>();4.通过键操作值(如+-...,核心是先获取值->操作->从新载入):map.put(key,newValue);10.删除指定的键值对(返回被删除的值):map.remove(key);5.获取键的集合(数组来接收):map.keySet();
2025-08-30 15:56:58
438
原创 JAVA反射(下)
本文介绍了Java反射中通过配置文件灵活读取类对象的方法。首先创建refconfig.properties配置文件,配置类名和方法名。然后使用Properties对象加载配置文件,通过类加载器获取配置信息。接着演示了如何通过反射获取类属性、执行无参方法(getName)和有参方法(setName),并特别指出获取有参方法时需要指定参数类型。这种配置化的反射方式提高了代码的灵活性。
2025-08-29 23:53:50
653
原创 JAVA反射(上)
Java反射机制允许程序在运行时动态获取类的内部信息并操作。文章通过实例演示了三种获取类对象的方式,重点介绍了第一种通过Class.forName()的方法。详细讲解了如何通过反射操作属性、方法和构造方法,包括获取私有成员、暴力反射、动态调用方法等。特别说明了构造方法的反射调用和类型转换问题。内容涵盖了反射的核心应用场景,为后续深入探讨反射的实际应用奠定了基础。
2025-08-28 21:42:08
805
原创 Sublime及基本DOS操作
本文介绍了Windows系统下基本的DOS操作命令,主要包括:1)路径操作(切换盘符、目录操作);2)增删移动(创建/删除目录);3)文件操作(查看、创建、删除、复制文件);4)辅助操作(清屏、退出)。文章特别说明了文件名大小写和空格的处理方法,并通过Java文件编译实例演示了路径切换和编码调整技巧(使用javac -encoding UTF-8解决编码错误)。这些基础命令帮助用户掌握DOS环境下的基本文件管理操作。
2025-08-27 16:56:07
544
原创 JAVA中String及StringBuilder常用语法
5.replace(int 索引开始,int 索引结束,String 新字符串):替换[开始,结束)区间内字符串为新字符串(要前不要后)。11.substring(int 索引开始,int 索引结束):截取索引开始到索引结束区间内容,返回String类型数据(要前不要后)。3.delete(int 索引开始,int 索引结束):删除区间[开始,结束)里的字符(要前不要后)。10.substring(int 索引开始):从索引开始截取到末尾,返回String类型数据。6.reverse():反转整个字符串。
2025-08-26 16:05:42
385
原创 JAVA字符串常量池
而变量的拼接会在程序运行时执行,所以说无法在编译时对其进行优化,只能在堆中新建一个变量来储存。java为了节省空间,会在方法区的字符串常量池中缓存“stringbuilder”变量,如果发现另外变量与字符串常量池中某一个值的字面量相同时,程序会自动将原变量所指向的地址赋给另外变量。我们知道,对string类型进行的操作都会生成新的string类型变量,所以结果是“两者不相等”。字符串常量池是为了减少内存开销,在方法区中单独开辟了一段空间,用于存储字符串字面量(代码中表示固定值的符号)。
2025-08-26 14:47:56
287
原创 构造方法及引用类型(基础)
分别有四种方法,其中子类的第二种方法是对父类方法2的重写。如果此时我创建一个引用类型为father,构造方法也为father的对象,那么我能调用的方法有那些呢?很简单,只能调用父类的方法。我再创建一个引用类型为son,构造方法也为son的对象,我能够调用那些方法呢?因此,我们不难猜出当引用类型为father构造方法为son时,可以执行的方法一共有两个。一个是父类的方法一,另一个是子类重写父类的方法二。那么我想问一问,如果引用类型为father构造方法为son的对象,他能调用的方法有那些呢?
2025-08-26 00:53:39
250
原创 JAVA继承(基础篇)
本文介绍了Java继承的基本概念和应用。通过创建Father父类和Son子类,演示了如何使用extends实现继承关系。文章重点讲解了继承的注意事项:private修饰的成员不能继承、单继承原则、构造方法的调用规则等。同时详细说明了super关键字的使用场景,包括访问父类成员、调用父类方法及构造方法。通过具体代码示例展示了如何利用super实现方法调用和方法重写,并强调了重写方法时的参数、返回值类型等要求。最后简要提及了方法重写与多态的关系。
2025-08-25 19:48:17
521
原创 Java 内存布局
当调用 toString() 方法时,新的栈帧会被创建,用于执行该方法逻辑,方法执行完毕,栈帧则会弹出,释放空间,保证线程执行流程清晰有序。通过对以 Cat 类为例的 Java 内存布局剖析,我们清晰看到程序运行时,类信息在方法区就绪、线程在栈中执行方法、对象在堆中承载数据、字符串常量池优化存储,程序计数器和本地方法栈协同辅助,各内存区域相互配合,共同支撑 Java 程序的运行。程序计数器是线程私有的“小管家”,记录线程下一条要执行的指令地址,保证线程执行流程精准接续,在多线程切换后能正确恢复执行位置。
2025-08-04 20:00:59
347
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅