- 博客(35)
- 收藏
- 关注
原创 鸿蒙 Ability Kit 之 UIAbility 组件生命周期深度解析与实战
在鸿蒙(HarmonyOS)应用开发中,是核心基石,而UIAbility作为与用户交互的核心组件,其生命周期管理直接决定了应用的行为逻辑。本文将从UIAbility的生命周期流程、关键回调方法、实战场景(如 Want 参数传递与清空)等维度,结合完整代码案例,深入剖析鸿蒙应用的生命周期管理。
2025-10-24 01:15:35
959
原创 SpringBoot + MyBatis 注解开发入门实践
通过本篇博客的实践,我们完成了一个简单的 SpringBoot + MyBatis 注解开发的项目。整个过程充分体现了 SpringBoot 简化配置、快速开发的优势,以及 MyBatis 注解开发在数据访问层的便捷性。依赖管理:借助 Maven 高效管理项目依赖。配置简化集中配置数据库和 MyBatis 相关信息。注解驱动:MyBatis 的@Mapper@Select等注解,让 DAO 层开发无需编写 XML 映射文件;Spring 的@Autowired等注解,简化了 Web 层和组件注入的开发。
2025-10-13 15:16:17
1421
原创 SpringBoot + Vue + 模板引擎整合实践
SpringBoot 作为后端框架,能灵活整合 Thymeleaf、Freemarker 等服务端视图技术,也能与 Vue 这类前端框架结合,发挥各自优势。Thymeleaf 和 Freemarker适合服务端渲染场景,而Vue 结合 MVVM 思想和 axios,能实现更灵活的前后端分离开发。同时,JavaScript 中this指向在不同函数类型(普通匿名函数、箭头函数)下的差异,也是前端开发中需要重点关注的知识点,需要合理利用箭头函数能简化代码,避免this指向问题带来的困扰。
2025-10-08 02:29:20
1562
原创 Solon 微服务框架与多视图技术实践
Solon 是一款轻量、高效的,在保持简洁的同时,也支持多视图技术,能灵活对接,满足不同场景下的页面渲染需求。本篇博客将结合示例项目,讲解 Solon 框架及多视图技术的应用。
2025-10-06 01:42:31
1157
原创 Java注解详解:从基础使用到自动装配实现
注解是一种特殊的 "标记",可以标注在类、方法、字段等元素上,用于存储额外信息。通过反射机制,程序可以在运行时读取这些信息,实现灵活的逻辑控制。// @Target()表示这个注解的作用点 1.类 2.变量 3.方法 4.构造函数 5.包@Retention(RetentionPolicy.RUNTIME) // 指定注解在运行时可见(反射可读取)// 注解属性,没有默认值,使用时必须指定// 注解属性,有默认值,使用时可选自动装配注解,用于字段注入。
2025-10-05 17:30:14
760
原创 Java 反射与 MyBatis:ORM 框架的 “灵魂基石”
ORM 的核心是 “对象 - 表映射”:将 Java 对象的属性与数据库表的字段一一对应,从而让开发者可以通过操作对象,间接完成对数据库的增删改查。将Java对象映射成数据库中的表Java 对象Emps→ 对应数据库表t_emps将对象属性映射成数据库表的字段对象属性ename→ 对应表字段ename将对象操作映射成SQL语句调用emp.setEname("张三")→ 等价于执行UPDATE t_emps SET ename='张三'...
2025-09-26 21:20:02
1030
原创 Java 反射机制
包中的 API,程序可以在运行时动态地获取类的信息、创建对象、调用方法和访问字段。反射机制打破了Java的封装性,同时提供了极大的灵活性。通过 XML 配置类的全限定名,动态创建对象,实现 “新增类无需修改代码,只需修改配置文件里的内容”。Java反射(Reflection)是Java语言的一个重要特性,是 Java 的一种。通过反射实现 “构造器注入”,动态为对象注入依赖。不会触发类的初始化(静态代码块、构造函数不执行)。Class.forName("类的全路径”)的静态代码块、构造函数会执行)。
2025-09-18 02:18:17
2309
原创 Java 分布式缓存实现:结合 RMI 与本地文件缓存
继承Remote接口标识为远程服务方法必须声明抛出RemoteException接口需要在客户端和服务端保持一致。
2025-09-14 20:35:32
1338
原创 Java分布式编程:RMI机制
RMI(Remote Method Invocation)是Java提供的远程方法调用机制,允许在不同Java虚拟机(JVM)之间进行对象方法调用,是实现Java分布式应用的核心技术。但其仅适用于 Java 环境,无法实现与其他编程语言(如 Python、C++ 等)的跨语言分布式通信,限制了其在异构系统中的应用。RMI 的核心组件。
2025-09-14 20:34:38
994
原创 Java多线程分块下载文件
目录技术原理完整代码实现 主程序类(Test.java)下载线程类(DownThread.java)关键代码解析1. 分块算法解析2. HTTP Range请求头 3. RandomAccessFile的使用运行结果 多线程下载的核心思想是:将一个大文件分成若干块,每个线程负责下载其中一块,最后将所有块合并成完整文件。其关键技术点包括:文件分割算法:将文件总大小平均分配给每个线程,计算每个线程负责下载的起始和结束位置。HTTP Range 请求:通过 HTTP 协议的头字段,告知服务器只返回文
2025-09-12 21:17:32
783
原创 Java IO流(字节流和字符流)
IO流是Java中用于处理输入输出操作的抽象概念。可以将流想象成一条"数据管道",数据从一个源(如文件、网络连接)通过这条管道流向目标位置。:输入流(InputStream/Reader)只能读数据,输出流(OutputStream/Writer)只能写数据。:数据按顺序传输,不能随机访问(除非使用随机读写流)。:通过缓冲区(字节数组)减少 I/O 次数,提高读写性能(类比 “用瓢舀米比一粒粒拿起米更快”)。
2025-09-12 21:16:30
1522
原创 Java创建对象的5种方式
这是最基本也是最常见的创建对象方式,通过调用类的构造函数来实例化对象。工厂模式是一种设计模式,通过工厂类来创建对象,隐藏对象创建的具体细节。因此,原始对象和克隆对象中的引用字段(引用类型属性也会被克隆,原始对象和克隆对象不共享引用类型实例。对象,它包含了类的所有元信息(构造函数、方法、字段等)。下面是一个简单的支付系统,支持支付宝和微信支付两种方式。引用类型属性在原始对象和克隆对象之间共享。(如果是基本类型),原始对象不会受影响。去访问,看到的都是同一个已经被修改了的。:先进行默认的浅拷贝,创建一个新的。
2025-09-08 22:20:24
2406
原创 Java字符串处理:String、StringBuilder与StringBuffer
append()是StringBuffer类中最核心和常用的方法,是线程安全的,用于向字符串缓冲区追加内容。String对象一旦创建就不能被修改,所有看似修改的操作实际上都是创建新的String对象。设计为final类是为了不希望子类去重写父类的方法。StringBuilder也是。StringBuffer是。String类被设计为。来优化字符串内存使用。
2025-09-08 22:20:19
553
原创 Java集合---Collection接口和Map接口
Java集合框架主要分为三大类:Collection接口 - 存储单个元素的集合Map接口 - 存储键值对的集合队列 - 特殊的集合类型。
2025-09-04 23:43:21
1098
原创 JUC的安全并发包机制
无锁编程通过CAS(Compare And Swap)操作实现线程安全,避免了锁的开销。Java中的Atomic类就是无锁机制的典型实现。与synchronized隐式锁不同,Lock需要显式地调用lock()和unlock()方法。,然后所有线程才会继续执行。CyclicBarrier可以重复使用,适用于分阶段的任务处理。Lock接口提供了比synchronized更灵活的锁机制,属于。使用的同步辅助工具,允许一个或多个线程等待其他线程完成操作。,通过许可证机制实现资源池的访问控制。
2025-09-04 23:43:09
454
原创 多线程顺序打印ABC的两种实现方式:synchronized与Lock机制
在多线程编程中,线程间的通信和同步是核心问题之一。本文将通过一个经典案例:三个线程分别打印3次A、5次B、6次C,并且按照A→B→C→A的顺序循环执行,来详细介绍Java中两种线程同步机制的实现方式。
2025-09-04 23:42:48
496
原创 线程通信机制
子线程将计算结果存储在成员变量中,主线程通过getter方法获取。:主线程通过UserThread的构造函数将数据a传递给子线程。输出结果:主线程创建子线程后,子线程输出接收到的参数值。sleep等待:主线程通过sleep等待子线程完成计算。的线程通信机制,属于JUC包中的高级同步机制。:主线程等待,子线程完成后通知主线程。的锁,如果是当前线程类对象的自己。:子线程获取锁,执行计算任务。(1)当主线程持有的是当前。的锁,子线程持有的也只能是。:将锁和条件传递给子线程。:子线程完成任务后调用。
2025-09-03 23:26:13
891
原创 多线程同步安全机制
1.Thread两个线程使用,没有竞争关系,所以无法实现同步机制。synchronized(),()里面一定是引用类型对象,必须是同一个对象。1. Bank 类(共享资源)2. 支付线程类3.Test类运行结果:2.JUC并发包JUC 是 java.util.concurrent 包及其子包(如 java.util.concurrent.atomic 和 java.util.concurrent.locks)的非官方但广为流传的缩写,全称是 Java Util Concurrent。
2025-09-03 23:25:53
880
原创 Java多线程
Runnable接口是Thread类的父类,所以对于实现Runnable和继承Thread类来创建线程,实现Runnable比继承Thread更好,可以更好的扩展。线程的优先级取值1..10,但是不能够绝对保证优先级高的线程最先启动,只是在一段时候内,最先运行的概率高一点。让当前正在运行的线程睡眠,当睡眠时间到,线程再次进入可运行状态,再次执行还是由JVM调度。一个线程启动以后,这个线程就不能再次启动了,这个线程已死亡。4. 对线程的调度(沉睡,让步,合并,线程同步机制,线程通信机制,JUC线程机制)
2025-09-03 23:25:17
2521
原创 使用Java定时爬取优快云博客并自动邮件推送
本篇博客将介绍如何使用Java实现一个自动化系统,定时爬取优快云博客内容,并通过QQ邮箱自动发送到指定邮箱。这个系统结合了多线程、定时任务、网络爬虫和邮件发送等技术。
2025-09-03 23:24:43
607
原创 Jsoup的Java爬虫技术全量爬取一篇博客
在网络数据采集领域,Jsoup是一款强大的Java HTML解析库,特别适合处理真实世界的HTML文档。本文将详细介绍如何使用Jsoup全量爬取优快云博客内容,并将数据存储到MySQL数据库中。
2025-09-02 23:17:52
996
原创 将 MySQL 表数据导出为 CSV 文件
使用Hutool工具库将数据写入CSV文件。需要替换数据库URL、用户名和密码为实际值。获取表的列名作为CSV文件的表头。后续每一行对应数据库中的一条记录。文件使用GBK编码,支持中文显示。查询目标表的数据总量和具体数据。第一行为表头(数据库表的列名)将查询结果转换为二维数组格式。加载MySQL JDBC驱动。
2025-09-02 23:16:02
734
原创 实现数据库模糊查询与ajax前后端数据交互
本篇博客将介绍如何通过Java实现数据库模糊查询,将查询结果转换为JSON格式,并通过原生ajax技术实现前后端数据交互。
2025-09-02 00:57:36
741
原创 JDBC(Java操作数据库)
(1)因为在抽象方法/接口方法定义时无法预知所有可能的子类类型,先把参数设置成Object类型,即顶级父类,后续通过动态绑定可以灵活地调用子类的方法。,Class.forName(“数据库驱动的字符串”)-----调用的方法上声明了异常:throws ClassNotFoundException。,connection.close()-----自动回收由Java虚拟机决定,顺序/时间不一定,是不确定的,不是靠代码决定的。(2)接口主要是定义可变的数据操作,如子类重写接口中的方法,实现不同的SQL语句。
2025-08-30 11:16:37
1048
原创 Java设计模式---代理模式
代理模式代理模式是切面编程的核心模式。切面: 执行这个方法之前和之后做的业务逻辑。描述:代理类代理真实的业务类形成切面类对真实的业务类的拦截。前置拦截:鉴权,反爬虫机制, 设备的类型。后置拦截:一个方法的性能的数据采集。
2025-08-27 21:12:38
201
原创 Java设计模式---模版模式
在抽象类中定义一个模板方法(执行流程不希望被改变,用final关键字修饰,该方法不被子类继承)。//定义一个模板方法,用final关键字修饰,该方法不被子类继承System.out.println("工作到点下班");//回家的交通工具不一样,抽象方法,由子类实现System.out.println("到家了");
2025-08-27 21:12:22
414
原创 Java设计模式---工厂模式
体现点定义了创建"产品族"的接口(动物和食物)不关心具体实现,只声明能创建哪些类型的产品符合"抽象工厂"中"抽象"的概念。
2025-08-27 21:12:09
523
原创 Java设计模式---单例模式
体现点定义了创建"产品族"的接口(动物和食物)不关心具体实现,只声明能创建哪些类型的产品符合"抽象工厂"中"抽象"的概念在抽象类中定义一个模板方法(执行流程不希望被改变,用final关键字修饰,该方法不被子类继承)。//定义一个模板方法,用final关键字修饰,该方法不被子类继承System.out.println("工作到点下班");//回家的交通工具不一样,抽象方法,由子类实现System.out.println("到家了");
2025-08-11 15:32:06
1077
原创 Java异常处理
总的父类是 Throwable(Java.Lang.Throwable)。异常有和两种。其中,Error表示内存泄漏(这个程序直接挂了),Exception有(编译时异常)和(运行时异常)两种。Error表示内存泄漏,简单来说就是这个程序直接挂了。软件工程师要前置规避,避免出现内存泄漏 ,主要考虑内存的使用。池化技术避免内存泄漏(Error场景):假设有一个即时聊天服务器,需要支持 1000 万用户同时在线。(1)错误实现:如果为每个用户连接都创建一个独立的对象(如 Socket 或。
2025-08-08 15:20:42
1382
原创 Java和JavaScript的对比
如下面的代码,在 function Outer()里面再嵌套一个函数 function Inner() ,可以正常执行,且可以把函数赋值给函数类型的变量,如下图中fun1的类型是function。把.java源文件通过jdk的javac命令编译成.class文件(字节码文件),.class文件是java虚拟机jvm可执行的文件,执行效率高。Java的设计理念是“一次编写,到处运行”(Write Once, Run Anywhere),这得益于Java虚拟机(JVM)的跨平台性。linux jdk;
2025-08-03 19:14:20
996
原创 Java面向对象
对类中的全局变量进行私有(访问修饰符private)的设置, 作用是在其他类中不能直接访问。提供数据访问的安全性。如何提高?通过set/get方法。
2025-08-03 01:12:59
956
原创 Java一个类的组成和访问
main是一个入口函数,是个特殊的函数:1. 是不能够由开发者自行定义2. static 静态3. Java是一个纯面向对象的语言,同时它的面向函数式编程能力是不够的。main函数中可以定义的是变量和表达式,如果定义的是变量,就是局部变量4.不能在内部声明或定义函数//Stu的类名:首字母一定要大写,同时类名和文件名的名字要求一致。//Java的入口函数,即程序从哪个位置开始执行//Java已经完全定义好了,不能够自定义//这是一个普通正常的写法// {//// }
2025-07-30 11:27:12
801
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅