- 博客(58)
- 收藏
- 关注
原创 了解继承(大白话版)
文章生动比较了Java中继承与接口的异同。继承如"血缘关系",子类自动获得父类能力并可拓展(如老鼠儿子会打洞还能偷奶酪),但仅支持单继承。接口则似"技能证书",要求实现特定方法(如会开车),允许多接口实现。两者都支持多态,但继承侧重代码复用,接口强调行为规范。关键区别在于:继承确定"是什么"(is-a),接口声明"能做什么"(can-do),共同构成了Java面向对象的核心设计理念。
2025-08-02 11:03:20
363
原创 了解SSM(各个结构)
本文以图书管理系统为例,解析 SSM 框架:Spring 管对象与事务,SpringMVC 处理请求响应,MyBatis 负责 Java 与 SQL 转换。用户查图书时,请求经 SpringMVC 到 Controller,调用 Spring 管理的 Service,通过 MyBatis 查库返回结果。三者分工解决对象耦合、请求处理、数据库操作问题,形成完整方案。
2025-08-02 10:30:37
525
原创 了解Springboot注解(更方便背记版!!)
Spring常用注解可分为五大类:Bean管理(@Component、@Service等)、依赖注入(@Autowired、@Resource等)、AOP相关(@Aspect、@Before等)、事务管理(@Transactional)和Web开发。这些注解分别用于类注册(告诉Spring管理哪些类)、自动装配(自动注入依赖对象)、切面编程(实现日志等横切关注点)、事务控制(保证数据一致性)等场景,通过简洁的注解配置替代传统XML配置,大大简化了Spring应用的开发。
2025-08-02 10:09:52
227
原创 了解数据库连接池
数据库连接池是管理数据库连接的缓冲池,用于解决频繁创建/关闭连接的性能问题。MyBatis作为SQL映射工具,依赖连接池获取数据库连接,两者分工明确但紧密协作。在Spring Boot项目中,通过自动配置功能,仅需在application.yml中配置数据库信息和连接池参数(如Druid),MyBatis即可直接使用连接池,无需手动编写配置文件。这种设计避免了重复配置,简化了开发流程,提升了整体性能。
2025-08-02 10:06:21
628
原创 讲一讲Spring核心三大组件IOC、Bean、AOP
Spring框架的三大核心组件是IOC(控制反转)、Bean和AOP(面向切面编程)。Bean是被Spring容器管理的Java对象,通过注解如@Controller、@Service等声明。IOC将对象创建和管理的控制权交给Spring容器,DI(依赖注入)则实现对象间的自动装配。AOP允许在不修改原有代码的情况下动态添加功能,如日志记录和权限校验,通过切面类实现。三者协同工作,构建了Spring的轻量级、灵活的开发框架。
2025-08-02 09:34:20
722
原创 了解Java代理
代理模式是一种设计模式,通过"中间人"代理对象代替真实对象执行任务,常用于在不修改原代码的情况下添加额外功能。文章通过代购、租房中介等生活实例解释代理概念,并用Java代码演示静态代理和动态代理的实现。静态代理需手动编写代理类,而JDK动态代理通过反射机制自动生成代理类,要求被代理类实现接口。CGLIB动态代理则通过继承被代理类实现,无需接口支持。两种动态代理方式都能灵活扩展功能,但适用场景不同:JDK代理基于接口,CGLIB基于继承。
2025-08-02 09:21:12
861
原创 网络体系结构的划分
摘要:网络体系结构的划分反映了不同时期的技术需求。OSI七层模型是1980年代提出的理想化国际标准,强调分层细致但过于复杂;TCP/IP四层模型源于196年代ARPANET实践,因简单灵活成为互联网事实标准;五层协议是教学折中方案,保留关键分层便于理解。三者本质是对"网络分层标准化"的不同探索:OSI重理论、TCP/IP重实践、五层协议重教学,共同构成了现代网络技术的基础框架。(149字)
2025-07-24 09:04:04
925
原创 Http证书体系及证书加密流程(通信流程)
HTTPS证书体系是网络通信安全的核心机制,通过PKI实现身份验证和数据加密。证书包含公钥、域名、有效期等信息,由CA机构颁发并形成"根证书→中间证书→用户证书"的信任链。HTTPS通信通过TLS协议完成握手:客户端验证服务器证书有效性后,双方协商生成会话密钥进行加密通信。证书类型分为DV、OV、EV三种,验证严格度依次提高。整个过程确保数据传输的机密性、完整性和真实性。
2025-07-23 21:24:39
693
原创 域名解析(DNS 解析)
域名解析(DNS 解析)是将用户输入的可读域名转换为对应 IP 地址的过程,保证浏览器能够定位并访问目标服务器。解析过程依次经过本地浏览器缓存、操作系统缓存、本地 DNS 服务器,以及根域名服务器、顶级域名服务器和权威域名服务器,最终返回 IP 并缓存,提升后续解析效率。整个流程依赖分布式的 DNS 系统,通过多层缓存和分级查询,实现全球范围内的高效域名解析。
2025-07-23 16:56:15
1105
原创 路由器与交换机的区别
并将二者的对应关系存入 MAC 地址表(若已存在则刷新超时时间,默认 300 秒)。通过此过程,交换机能逐步 “记住” 局域网内设备的位置。交换机的每个端口对应一个独立的冲突域(设备间发送数据不会冲突),而集线器(Hub)所有端口共享一个冲突域,因此交换机比集线器效率更高。选择从源网络到目的网络的最佳路径,核心算法包括 “路由表构建” 和 “路径选择”。实现数据帧的高效转发,核心算法包括 “MAC 地址学习” 和 “帧转发逻辑”。当收到一个数据帧时,会提取帧中的。当收到数据帧时,提取帧中的。
2025-07-23 16:31:10
404
原创 乐观锁与悲观锁
悲观锁假设最坏情况,每次操作数据都认为别人会修改,必须先锁住资源,保证在自己使用期间别人不能动,等用完再释放。乐观锁假设最好的情况,每次操作都觉得别人不会改,不上锁;但在更新时会检查别人是不是偷偷改了数据,如果改了,就重试。悲观锁:先锁再干,别人等着;强一致,适合写多、冲突多。乐观锁:先干后验,冲突重试;提高并发度,适合读多、冲突少。CAS:典型乐观锁实现,轻量、无阻塞,但要留心 ABA、自旋时间和单变量局限。
2025-07-23 09:35:25
909
原创 Java什么是原子性
原子性(Atomicity)就是指一个操作要么一次性做完,要么什么都不做,中间不允许被打断、分割,像“原子”一样嘛!一句话来说比如你去银行取钱,银行从卡里扣100块钱,同时把这100块交给你,这两个步骤必须是“原子的”,要么一起成功要么什么都不发生,如果中间突然被打断(只扣钱没给你现金),那指定不行呀。
2025-07-20 19:56:56
184
原创 EXPLAIN 用法详解(表格)
SQL性能优化必备:EXPLAIN命令详解 EXPLAIN是分析SQL执行计划的关键工具,能帮助开发者了解优化器如何处理SQL。基础用法包括EXPLAIN、EXTENDED(显示SQL改写)、FORMAT=JSON(详细JSON格式)和ANALYZE(实际执行分析)。重点分析列涵盖执行顺序(id)、查询类型(select_type)、访问方式(type)和索引使用(key)等关键指标。Extra字段尤为重要,常见值如Using index(覆盖索引)、Using filesort(额外排序)和Using t
2025-07-20 19:48:19
705
原创 Java-ThreadLocal
ThreadLocal是Java中实现线程私有数据的机制,每个线程拥有独立的ThreadLocalMap存储数据,以ThreadLocal实例为key。其核心作用是通过线程隔离解决共享变量冲突,适用于用户上下文、数据库连接等场景。ThreadLocalMap采用弱引用避免内存泄漏,但建议使用后手动remove()。示例展示了多线程环境下数据隔离特性,同一ThreadLocal在不同线程中存取互不干扰。使用时需注意静态变量holder虽共享,但因ThreadLocal机制,各线程数据完全隔离,体现了线程安全的
2025-07-14 22:58:46
266
原创 Java进程
Java 本身跑起来就是个进程(JVM),所以用 Java 在自己(父进程)里启动一个系统命令(子进程),再把子进程的输出读出来看看。JVM(父进程)先打了个招呼,告诉你自己当前的 PID 是 22964。并把结果一行行打印回来了,证明父进程和子进程之间成功通过流通信。命令(子进程),子进程去 ping 了。子进程正常执行完了,没报错,退出码是 0。--本人使用的是JDK21版本。
2025-07-14 15:48:49
185
原创 Java小白-大白话了解线程、进程、协程(虚拟进程)
最外层的“壳”,(如内存、文件句柄、网络连接),,互相不直接访问内存。比如你打开了微信、开了QQ、开了IDEA、开了浏览器,每个就是一个进程。好似有一个小吃街,麻辣烫摊、有烤串摊、有奶茶摊,互相不会把锅端走,也不能随便去别人锅里加菜。
2025-07-14 15:28:21
270
原创 Java小白-设计模式
简单点说,设计模式(Design Pattern)就是前人踩坑总结出来的、能反复用的、解决常见软件设计问题的套路。它就是一套被验证过很多次的“万能方案”,有了它你写程序就不会瞎写,而是用一套聪明的、优雅的思路去组织代码,让程序更好写、更好维护、更容易扩展。
2025-07-13 23:08:13
1009
原创 Java小白-线程 vs 虚拟线程,Java并发的新旧对决
虚拟线程(Java 21 正式引入,源自 Project Loom),是由 JVM 自己调度的轻量线程,不再直接绑定一个 OS 线程。而它的特点是:由 JVM 的调度器托管,切换更轻;可以创建海量线程(百万级别);IO 阻塞自动挂起,节省内核线程。
2025-07-13 22:13:35
222
原创 Java小白-String
为什么不可变?设计者认为可变字符串带来的灵活性<不可变带来的好处好处:安全(网络传参、URL、HashMap key)、线程安全(多线程共用没风险)、可缓存(字符串常量池复用)Java中的字符串是不可变的,但是你说oi,咋可能,我这不是变了吗,但这并不是字符串不变性的含义,它并没有改变内存中的字符串对象,而是在内存中的指向变为了not_ikun。
2025-07-11 18:15:40
728
原创 HashMap的get和put方法
一、HashMap的基本结构在JDK8中,HashMap的底层数据结构是数组+链表+红黑树,当链表长度超过8且数组长度大于64时,链表会转换为红黑树,以提高查找效率。二、put方法源码分析对key的shashCode()进行扰动处理,减少哈希冲突,将高16位与低16为异或,增加散列性。put流程可以总结为:计算key的hash值-->如果table为空,初始化-->根据hash找到桶位置-->如果桶为空,直接插入-->如果桶不为空:(key已存在覆盖value;如果是树节点插入树中;
2025-07-10 08:57:53
277
原创 Java小白-异常
这类异常通过是由程序逻辑引起的,如数组越界异常、空指针异常、算数异常(如除零)等。受查异常:是Exception的其他子类,表示程序运行过程中可能出现的、需要显式处理的异常。如果不管三七二十一去写try-catch-finally 语句,这样的性能会下降非常多,相当于跳出这个层级再跳回来,在高并发的情况会非常明显这是因为异常的抛出和捕获会涉及堆栈操作、异常对象那个的创建和销毁等开销。try catch块:将可能出现的异常放在try块中,catch块用于捕获兵处理try块中抛出的异常。
2025-07-09 16:41:52
141
原创 128陷阱
valueOf这个方法在Integer创建时,其实就是走的Integer.valueOf()返回了一个对象,返回一个 Integer 实例,该实例表示指定的 int 值。由于Integer的缓存机制和自动装箱特性导致的,当值在-128~127时,会返回缓存中的同一个对象,因此==比较会返回true,如果超过此范围,会创建新的对象,此时==则会返回false,这个时候需要用equals()方法进行值的比较。当包装类进行比较时,如果在[-128,127]区间,数字相同的两者==判断返回true;
2025-07-08 18:24:30
192
原创 from tensorflow.keras.models import Model中Model报红;以及动态链接库(DLL)初始化例程失败
用了前四个方法Model不能正确引入,还会出现动态链接库(DLL)初始化例程失败的问题,因为博主下节课要换教室,就直接关机了,等第二节课开机接着写作业打开pycharm就能运行了!4、使用阿里云使tensorflow降低到2.8.0(低版本)3、卸载重装tensorflow。博主也是网上搜索资料又问的kimi。1、用这句话导入Model。5、最后缓存问题就用。
2025-04-21 10:03:41
376
原创 Java实体类 @Data@NoArgsConstructor@AllArgsConstructor@ToString注解
Data作用:这是一个组合注解,相当于同时添加了以下注解:@Getter:为所有字段生成 getter 方法@Setter:为所有非 final 字段生成 setter 方法@ToString:生成 toString() 方法:生成 equals() 和 hashCode() 方法:为所有 final 字段或标记为@NonNull的字段生成构造方法注解作用适用场景生成无参构造方法ORM框架(Hibernate/MyBatis)、反序列化(JSON/XML)生成全参构造方法。
2025-04-18 11:07:36
2985
原创 Java小白-管理项目工具Maven(3)Ma
pom.xml文件是 Maven(Apache Maven)项目的核心配置文件,它定义了项目的构建、依赖管理和项目元数据等信息。Maven 是一个流行的 Java 项目管理和构建自动化工具,而pom.xml是 Maven 项目中不可或缺的一部分。pom.xml文件中定义了项目所需的依赖库。Maven 会根据这些依赖配置自动下载并管理这些依赖库。依赖管理是 Maven 的核心功能之一,它使得开发者能够轻松地管理项目所需的外部库,而无需手动下载和配置。
2025-04-02 15:25:34
1107
原创 Spring / Spring Boot 的@MapperScan 和 @Repository
和是两个与数据访问层相关的注解,它们在功能上有一定的联系,但也有明显的区别。
2025-04-02 14:41:22
866
原创 SpringBoot中application.yml--不同版本的Mysql,不同的url
不同版本的 MySQL 驱动与数据库版本之间存在兼容性问题。例如,使用 MySQL 8.x 的驱动连接 MySQL 5.x 数据库可能会报错,反之亦然。所以要根据实际使用的 MySQL 数据库版本选择合适的驱动版本和配置哦~这些参数的添加主要是为了解决 MySQL 8.x 中引入的一些新特性,例如默认启用 SSL 连接以及对时区的严格要求。这是 MySQL 8.x 的官方推荐驱动类,它提供了更好的性能和对新特性的支持。:MySQL 8.x 对时区的处理更加严格,需要明确指定时区,例如。
2025-04-02 14:37:48
585
原创 Java小白-管理项目工具Maven(2)初识Maven
①安装jdk1.8或以上版本③安装Maven到无中文路径即可bin:含有mvn运行的脚本boot:含有plexus-classworlds类加载器框架conf:含有settings.xml配置文件可以在这里设置自己的maven 本地仓库,如果不写的话默认是在C:\Users\<你的用户名>\.m2\repository如果有需要可以写阿里云的镜像,这样配置东西的时候就会快一些lib:含有Maven运行时所需要的java类库。
2025-03-11 21:33:25
866
原创 Java小白-管理项目工具Maven(1)什么是maven
定义:Maven 是一个跨平台的项目管理和理解工具,主要服务于基于 Java 平台的项目构建、依赖管理和项目信息管理。理想项目构建的特征高度自动化跨平台兼容可重用的组件标准化的流程依赖定义:项目中需要用到的外部库或模块。依赖管理的目的:自动下载和统一管理项目依赖,确保依赖的一致性和版本控制。依赖关系示例:项目 A 依赖于 B 1.0 版本,B 又依赖于 C 3.0 版本。项目信息包括项目名称、描述、开发人员信息、许可证信息等。管理第三方依赖包,能够连接互联网下载项目所需的第三方 JAR 包。
2025-03-11 16:54:42
340
原创 正则表达式(2)匹配规则
字符类匹配允许你指定一个字符集合,并匹配该集合中的任意单个字符。匹配 "a"、"b"、"c"、"1"、"2" 或 "3" 中的任意一个字符。元字符是正则表达式中具有特殊含义的字符,用于指定复杂的匹配模式。匹配 "a"、"b" 或 "c" 中的任意一个字符。匹配除了 "a"、"b"、"c" 之外的任意字符。:匹配前面的字符恰好 m 次(m 为任意正整数)。:匹配前面的字符零次或多次(n 为任意正整数)。:匹配前面的字符一次或多次(n 为任意正整数)。:匹配前面的字符零次或一次(n 为任意正整数)。
2025-03-07 18:14:03
1182
原创 正则表达式(1)
正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。正则表达式类似于JSON,是一种通用的标准,被各种开发语言所支持,包括但不限于:Java,JavaScript,C,C++,C#,Python,SQL等等;因为在Javaweb项目中正则一般用于前端验证,故此我们使用JavaScript来进行正则表达式的学习;
2025-03-07 18:10:46
484
原创 Java小白-Ajax
定义Ajax(Asynchronous JavaScript And XML)是一种用于创建快速动态网页的技术,通过在后台与服务器进行少量数据交换,实现网页的异步更新,无需重新加载整个页面。核心目标提升用户体验,减少网络数据传输量;通过异步通信机制,允许客户端与服务器部分交互。原理基于对象实现异步请求;客户端发送请求后继续执行其他操作,待服务器响应返回后再处理结果。
2025-03-01 11:13:41
288
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人