自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 十一、请求响应-请求:简单参数和实体参数(简单实体参数与复杂实体参数)

本文介绍了SpringBoot中不同类型的参数接收方式。主要内容包括:1)使用@RequestParam接收简单参数;2)通过POJO对象接收简单实体参数;3)处理包含嵌套对象的复杂实体参数。文中提供了完整的代码示例,包括RequestController、User和Address类,并通过Postman测试展示了不同参数类型的请求和响应结果。这些方法涵盖了SpringBoot Web开发中常见的数据绑定场景,能够有效处理各种格式的请求参数。

2025-08-03 11:58:00 358

原创 十、SpringBootWeb快速入门-入门案例

本文介绍了SpringBoot快速入门案例的实现步骤。首先需要新建SpringBoot项目(注意不是模块),然后创建请求处理类HelloController.java,添加@RestController注解和@RequestMapping方法。编写简单返回"Hello World~"的控制器方法后,运行启动类即可启动应用。启动成功后,在浏览器访问/hella路径即可看到返回结果,同时在控制台也会输出相应日志。整个过程展示了SpringBoot项目的基本创建流程和简单请求处理实现,帮助开发

2025-08-01 18:04:33 263

原创 九、Maven入门学习记录

本文介绍了Maven的基本概念和使用方法。主要内容包括:Maven的作用(项目构建和依赖管理)、统一项目结构、安装配置(需注意阿里云私服URL更新)、IDEA中创建和导入Maven项目的方法。详细讲解了Maven坐标体系、依赖配置与传递机制(含排除依赖)、不同依赖范围的作用,以及Maven生命周期的三个阶段(clean、default、site)及其具体执行目标。文章通过图文方式全面展示了Maven这一Java项目构建工具的核心功能和使用要点。

2025-08-01 16:50:32 154

原创 八、Vue前端项目案例关键过程记录

本文介绍了Vue.js前端开发的主要实现步骤,包括: 使用Axios实现异步数据加载,通过mounted钩子方法从API获取数据; 配置VueRouter实现左侧菜单栏页面切换功能; 展示部门管理和员工管理两个页面的主要代码结构; 项目打包部署流程,使用npm build生成dist文件夹; 通过Nginx部署前端项目并本地访问验证。 案例中重点演示了Element UI组件库的使用、Vue路由配置以及前后端数据交互的实现方法。

2025-07-31 14:59:22 782

原创 七、Element常见组件

本文展示了Element UI中常见的几种Vue组件实现,包括按钮组、表格组件、分页组件和对话框组件。文章通过ElementView.vue文件演示了这些组件的具体用法:1)按钮组提供了6种不同样式的按钮;2)表格组件展示了带日期、姓名、地址三列的数据表格;3)分页组件实现了带页码跳转的功能;4)对话框组件包含两种形式,分别嵌套表格和表单。组件均采用el-前缀标签,如el-table、el-pagination等,并配合Vue的数据绑定和事件处理方法实现交互功能。最后展示了运行效果的截图。

2025-07-29 17:43:39 533

原创 六、Element-快速入门

【代码】六、Element-快速入门。

2025-07-24 18:08:48 383

原创 五、Vue项目开发流程

2025-07-24 17:21:58 359

原创 四、Vue的生命周期

Vue生命周期是Vue组件从创建到销毁的完整过程,包含多个阶段(如创建、挂载、更新、销毁)。其中mounted阶段尤为重要,表示组件已完成DOM挂载,适合执行初始数据请求等操作。示例代码展示了基本用法:在mounted钩子中发送请求,页面加载时会弹出提示框。通过生命周期图示可以清晰了解各阶段的执行顺序和作用,帮助开发者更好地控制组件行为。(149字)

2025-07-23 15:53:49 195

原创 三、Vue常用指令:v-if、v-show、v-for

本文展示了Vue.js中v-if/v-show和v-for指令的使用示例。第一部分演示了条件渲染指令v-if和v-show的区别:v-if根据条件动态添加/移除DOM元素,而v-show仅切换CSS的display属性。第二部分展示了v-for循环指令的两种写法,可以遍历数组并可选地获取索引值。两个示例都通过简单的数据绑定实现了动态渲染效果,展示了Vue指令的基本用法。代码简洁明了,配有运行结果截图,适合初学者学习Vue条件渲染和列表渲染的基本语法。

2025-07-23 12:05:44 231

原创 二、Vue常用指令:v-bind、v-model、v-on

本文介绍了Vue.js中常用的指令v-bind、v-model和v-on的使用方法。v-bind用于绑定元素属性,可用简写":";v-model实现表单元素与数据的双向绑定;v-on用于事件绑定,简写为"@"。通过两个代码示例展示了这些指令的具体应用:第一个示例演示了v-bind绑定链接和v-model绑定输入框,第二个示例展示了v-on绑定点击事件弹出提示框。这些指令是Vue.js实现数据驱动视图的核心功能。

2025-07-22 20:01:38 408

原创 一、Vue概述以及快速入门

本文介绍了Vue.js框架的基本概念和快速入门方法。通过一个简单的HTML示例展示了Vue的核心功能——数据双向绑定,其中输入框内容与变量message实时同步。代码演示了Vue对象的创建方式,包含el(挂载点)和data(数据)配置项。特别强调了正确引入vue.js文件路径的重要性,否则会导致功能失效。示例运行结果显示,修改输入框内容时,页面显示的内容会即时更新,验证了Vue的数据响应式特性。这个入门示例帮助读者快速理解Vue的基本工作原理。

2025-07-22 19:30:46 178

原创 第十八节:第八部分:java高级:动态代理设计模式介绍、准备工作、代码实现

这篇文章介绍了Java中代理模式的应用,主要包含以下内容: 通过BigStar类实现Star接口,定义了明星的sing和dance方法 使用ProxyUtil工具类为BigStar对象创建代理对象 代理对象通过InvocationHandler回调方法,在执行原始方法前后添加额外逻辑(如收费提示) 测试类演示了代理对象的使用,在调用原方法时自动添加了代理逻辑 代理模式的作用是可以在不修改原始类的情况下,为对象添加额外的功能或控制访问。代码示例展示了如何通过Java动态代理实现这一模式。

2025-07-21 18:14:39 152

原创 第十八节:第七部分:java高级:注解的应用场景:模拟junit框架

本文介绍了Java注解的解析方法及实际应用。首先通过MyTest2注解案例演示了如何解析类和方法上的注解,使用反射API获取并打印注解属性值。然后通过模拟JUnit框架的案例,展示了如何利用注解标记测试方法并自动执行。关键点包括:1)使用isAnnotationPresent检查注解是否存在;2)通过getDeclaredAnnotation获取注解实例;3)利用反射调用带注解的方法。这些技术可用于构建类似JUnit的测试框架,实现基于注解的自动化测试流程。

2025-07-21 17:20:46 292

原创 第十八节:第六部分:java高级:注解、自定义注解、元注解

本文介绍了Java注解的基本概念和应用。主要内容包括:1)认识注解的基本作用;2)如何自定义注解;3)注解的工作原理;4)元注解的概念及其作用。重点展示了两个常用元注解@Target和@Retention的使用方法,通过代码示例MyTest1注解类和AnnotationTest1测试类,演示了如何限制注解只能用于类和方法上,并控制注解保留到运行时。这些内容为理解和使用Java注解提供了基础指导。

2025-07-20 12:59:22 136

原创 第十八节:第五部分:java高级:反射的作用、应用场景

本文介绍了Java反射技术的应用,通过一个简易框架案例演示反射的作用。框架核心功能是将任意对象的字段名和值保存到文件中。关键技术点包括:通过Class对象获取类信息、使用getDeclaredFields()获取所有字段、通过Field对象访问私有字段(setAccessible(true))、动态获取字段值和名称。案例包含Teacher类、ObjectFrame框架类和测试类,最终成功将Teacher对象数据写入文件。该案例展示了反射在动态处理对象属性方面的强大能力。

2025-07-18 10:59:50 202

原创 第十八节:第四部分:java高级:反射-获取成员变量和方法对象并使用

本文介绍了Java反射机制中获取类成员变量和成员方法的方法及其作用。通过Cat类示例,展示了如何使用getDeclaredFields()获取所有成员变量信息,并通过setAccessible(true)突破访问限制进行赋值取值操作;同时演示了getDeclaredMethods()获取方法信息,以及通过invoke()调用私有方法的过程。关键点包括:反射操作需先获取Class对象、通过setAccessible绕过访问控制、成员变量和方法的动态调用等。这些技术为框架开发、动态代理等场景提供了基础支持。

2025-07-18 10:26:27 290

原创 第十八节:第三部分:java高级:反射-获取构造器对象并使用

本文介绍了如何通过反射获取类的构造器并进行操作。代码演示了两种主要方法:1)使用getDeclaredConstructors()获取所有构造器;2)使用getDeclaredConstructor()获取指定参数类型的构造器。通过Cat类示例展示了如何访问私有构造器(需设置setAccessible(true)),并分别调用无参和有参构造器创建对象。测试结果验证了通过反射成功获取构造器信息并实例化对象的过程,为Java反射机制中构造器的操作提供了实用范例。

2025-07-17 21:25:08 193

原创 第十八节:第二部分:java高级:反射-认识反射、获取类

本文介绍了Java反射机制的基本概念和使用方法。主要内容包括反射的基本介绍、获取类字节码的三种方式:通过类名.class获取、Class.forName()动态加载以及对象.getClass()方法。示例代码展示了如何获取Student类的Class对象,并通过比较验证了三种方式获取的是同一个Class对象。文章配有多张示意图辅助理解,适合Java初学者学习反射机制的基础知识。

2025-07-16 21:03:49 178

原创 第十八节:第一部分:java高级:junit单元测试框架详解

本文介绍了Junit单元测试框架的基本使用,通过StringUtil工具类及其测试类StringUtilTest演示了单元测试的实现过程。测试类中展示了Junit的常见注解:@Before、@BeforeClass用于初始化,@After、@AfterClass用于清理,@Test标记测试方法。测试方法testGetMaxIndex中使用了断言Assert.assertEquals验证预期结果。文中的代码示例和运行结果截图完整展示了Junit单元测试从编写到执行的完整流程,适用于Java项目的单元测试实践。

2025-07-16 20:16:41 231

原创 第十七节:第七部分:网络通信:TCP通信实现BS架构,线程池优化BS架构

本文介绍了基于BS架构的TCP通信服务端优化实现。通过使用线程池替代传统的新线程处理方式,解决了频繁创建线程带来的性能问题。服务端Server类创建线程池处理客户端Socket连接,ServerReaderRunnable类实现Runnable接口,完成HTTP响应协议的封装和数据传输。代码展示了如何响应包含"黑马程序员666"红色标题的网页内容给浏览器,实现了高效稳定的TCP通信服务。该方案有效提升了服务器处理并发请求的能力,避免了资源浪费。

2025-07-14 17:23:02 113

原创 第十七节:第六部分:网络通信:TCP通信-群聊

摘要:本文实现了一个基于TCP协议的群聊系统,包含客户端(Client)、服务端(Server)及对应的线程处理类(ClientReaderThread和ServerReaderThread)。服务端维护在线用户列表,接收客户端消息并广播给所有在线用户;客户端通过独立线程接收服务端消息。系统支持用户输入"exit"退出,并实时显示用户上线/下线状态。代码展示了TCP通信、多线程处理、端口转发等核心功能,实现了简单的即时群聊功能。

2025-07-14 16:32:38 210

原创 第十七节:第五部分:网络通信:TCP通信-支持与多个客户端同时通信

这篇文章介绍了如何实现TCP通信的多客户端支持方案。主要内容包括: 服务端(Server类)创建ServerSocket监听端口,通过accept()接收客户端连接,并为每个客户端创建独立线程处理 线程类(ServerReaderThread)负责处理单个客户端的消息接收和断开检测 客户端(Client类)实现持续消息发送功能,支持输入exit退出 采用DataInputStream/DataOutputStream进行数据流包装,实现UTF格式消息传输 系统能够同时处理多个客户端的连接和通信,并实时显示上

2025-07-14 15:25:28 117

原创 第十七节:第四部分:网络通信:TCP通信,一发一收,多发多收

TCP通信开发总结 本文介绍了TCP通信的基本开发流程,包含客户端和服务端的实现方法。主要内容包括: TCP通信框架:展示了客户端与服务端的通信模型 开发步骤详解: 客户端开发:创建Socket、获取输出流、发送数据 服务端开发:创建ServerSocket、监听连接、获取输入流、接收数据 代码实现: 实现了1发1收的简单通信 扩展为支持多发多收的持续通信 客户端通过Scanner输入消息,服务端持续接收并显示 关键方法:使用DataInputStream和DataOutputStream包装流,实现UTF

2025-07-12 10:55:29 261

原创 第十七节:第三部分:网络通信:UDP通信,一发一收,多发多收

本文介绍了UDP通信的基本概念和使用方法。UDP是一种无连接的网络协议,通过DatagramSocket类实现数据传输。文章展示了两个Java示例:第一个实现单次发送接收(1发1收),包含Server和Client类;第二个实现多次发送接收(多发多收),通过循环结构持续通信。关键点包括:创建DatagramSocket对象、构建DatagramPacket数据包、发送/接收数据以及端口管理。UDP适合对实时性要求高但允许少量丢包的场景,如视频会议、在线游戏等。代码示例直观展示了UDP通信的基本流程和实现方法

2025-07-11 17:23:05 429

原创 第十七节:第二部分:网络通信:端口和协议

计算机网络通信基础摘要:端口号是标识应用程序的逻辑地址,分为知名端口(0-1023)、注册端口(1024-49151)和动态端口(49152-65535)。通信协议定义了设备间数据传输规则,OSI七层模型和TCP/IP四层模型是主要网络架构标准。传输层核心协议包括TCP(可靠连接)和UDP(高效无连接)。TCP通过三次握手建立连接(SYN→SYN/ACK→ACK),确保可靠传输;四次挥手断开连接(FIN→ACK→FIN→ACK)则保证有序释放资源。这些机制共同构成了网络通信的基础框架。

2025-07-11 11:07:43 214

原创 第十七节:第一部分:网络通信:概述、IP地址、InetAddress

本文介绍了网络编程的基本概念和关键要素。主要内容包括:CS架构和BS架构两种基本通信架构的区别;网络通信三要素(IP地址、端口号、通信协议)的作用;IPv4和IPv6地址的格式特点;以及域名系统的作用。文章还通过Java代码示例演示了InetAddress类的实际应用,包括获取本机IP、查询域名IP地址以及网络连通性测试等方法。这些知识为理解网络编程和开发网络应用程序提供了基础。

2025-07-10 14:43:50 308

原创 第十六节:第九部分:多线程:悲观锁、乐观锁

本文介绍了悲观锁和乐观锁的实现原理及代码示例。悲观锁采用同步机制,每次只允许一个线程访问共享资源,确保线程安全但性能较差;乐观锁使用原子类实现,允许多线程并发执行,仅在出现冲突时处理,性能较好但需额外控制。两个示例分别展示了100个线程对同一变量各加100次的操作,悲观锁通过synchronized实现,乐观锁通过AtomicInteger实现。结果显示两种方式都能正确完成计数任务,但乐观锁性能更优。

2025-07-09 17:17:09 513

原创 第十六节:第八部分:多线程:并发、并行、生命周期

文章摘要: 本文通过图文结合的方式系统性地介绍了计算机线程相关概念。主要内容包括:进程的定义、并发与并行的区别、多线程执行机制,以及线程的生命周期。重点阐述了线程的6种状态及其转换关系,特别指出sleep与wait操作在锁释放方面的关键差异。通过类比人类生命周期,形象展示了线程从创建到终止的完整过程,并配以状态转换图直观呈现各状态间的切换条件。文末对线程6种状态进行了总结性说明。

2025-07-09 16:35:32 180

原创 第十六节:第七部分:多线程:线程池:使用Executors得到线程池

Executors提供了多种创建线程池的方法,如newFixedThreadPool、newCachedThreadPool等。使用Executors可能存在资源耗尽风险,如newFixedThreadPool任务队列无界可能导致OOM。示例代码展示了通过Executors.newFixedThreadPool创建线程池处理Callable任务的过程,其中MyCallable类实现Callable接口计算1-n的和,主程序提交多个任务并获取返回结果。核心线程数配置建议:计算密集型任务为CPU核数+1,IO密

2025-07-09 16:17:50 507

原创 第十六节:第六部分:多线程:线程池、处理Runnable任务、处理Callable任务

本文介绍了Java线程池的基本概念和使用方法。线程池通过ThreadPoolExecutor创建,可以处理Runnable和Callable任务。示例代码展示了线程池的创建过程、任务提交方式(execute/submit)以及结果获取。线程池参数包括核心线程数、最大线程数、队列容量等,并提供了任务拒绝策略。使用线程池能有效管理线程资源,避免频繁创建销毁线程的开销。最后演示了如何通过Future获取Callable任务的执行结果,以及线程池的关闭方法(shutdown/shutdownNow)。

2025-07-08 18:13:41 237

原创 第十六节:第五部分:多线程:线程通信(了解)

本文介绍了线程通信的基本概念和实现方法。线程通信是指多个线程协调工作,通过共享资源传递信息。文章展示了生产者-消费者模型的实际应用,使用Object类的wait()和notifyAll()方法实现线程间同步。代码示例中,3个生产者线程制作包子,2个消费者线程吃包子,通过共享的Desk类实现线程安全的数据交换。每个线程在操作前后都会唤醒其他线程并等待自己,确保有序执行。这种模式在多线程编程中很常见,可以有效解决线程间的协调问题。

2025-07-07 18:15:35 181

原创 第十六节:第四部分:多线程:线程同步

本文介绍了线程同步的三种常见方案:同步代码块、同步方法和Lock锁。同步代码块通过synchronized(this)锁定共享资源,同步方法直接在方法声明处加synchronized,而Lock锁则使用ReentrantLock实现更灵活的锁机制。三种方式都能有效解决多线程数据竞争问题,其中Lock锁提供了手动加锁解锁的精细控制。代码示例展示了三种实现方式在账户取款场景中的应用,验证了它们都能保证线程安全。不同方案各有特点,开发中可根据需求选择合适方案。

2025-07-07 11:14:22 315

原创 第十六节:第三部分:多线程:线程安全问题、取钱问题的模拟

本文介绍了线程安全问题,通过银行取钱案例展示了多线程环境下可能出现的数据不一致问题。案例中,小明和小红两个线程同时从共享账户取款10万元,由于缺乏同步机制,导致账户余额出现异常。代码部分包含Account账户类、DrawThread线程类和主程序ThreadTest,演示了线程安全问题的具体表现。分析指出线程安全问题出现的原因是多个线程同时访问共享资源且存在修改操作。该案例可作为理解线程安全问题的典型示例,为后续学习线程同步解决方案奠定基础。

2025-07-06 16:58:08 136

原创 第十六节:第二部分:多线程:概述、线程创建方式三Callable、创建的常用方法

本文介绍了Java多线程的第三种创建方式——实现Callable接口,并对比了Thread类的常用方法。主要内容包括: 通过实现Callable接口创建线程的步骤:实现接口、重写call方法、封装FutureTask对象、启动线程并通过get方法获取返回结果 Thread类常用方法:setName/getName设置线程名称、sleep暂停线程、join等待线程执行完毕 代码示例展示了两种线程创建方式:Callable实现计算1-n的和,以及继承Thread类实现简单输出 各种线程操作方法的实际应用场景和效

2025-07-06 12:01:24 250

原创 第十六节:第一部分:多线程:概述、线程创建方式一、创建方式二Runnable

本文介绍了Java多线程编程的两种创建方式。第一种是继承Thread类,通过重写run方法定义线程任务;第二种是实现Runnable接口,将任务对象传递给Thread对象。文章还展示了使用匿名内部类和Lambda表达式简化实现的写法。每种方式都提供了完整代码示例和执行结果,展示了主线程和子线程的并发执行效果。通过比较可以看出,实现Runnable接口的方式更灵活,避免了Java单继承的限制,是更推荐的线程创建方式。

2025-07-06 10:34:11 245

原创 第十五节:第六部分:日志技术:logback的核心配置文件详解、日志级别

日志配置文件logback.xml是Java应用中常用的日志管理工具,它定义了日志的输出格式、级别和存储方式。日志级别(如DEBUG、INFO、WARN、ERROR)决定了日志信息的详细程度,不同级别适用于不同场景:开发时使用DEBUG追踪细节,生产环境使用ERROR监控重大问题。掌握日志级别有助于合理控制日志输出量,既能有效排查问题,又避免日志文件过大影响性能。通过配置不同级别的日志输出,开发者可以灵活调整系统的可观测性。

2025-07-05 20:58:22 205

原创 第十五节:第五部分:日志技术:概述、体系、Logback日志框架介绍、入门

本文介绍了Java日志技术的基本概念和使用方法。首先解释了日志的定义及其重要性,指出了传统日志方案的弊端。然后详细说明了日志技术体系结构,重点介绍了Logback日志框架及其所需模块。最后通过一个除法运算的代码示例,展示了Logback的实际应用:使用Logger对象记录调试信息、运行状态和错误日志,并通过截图展示了日志输出结果。该示例证明了Logback在记录程序运行状态和排查问题方面的实用价值。

2025-07-05 18:27:46 153

原创 第十五节:第四部分:特殊文件:XML的生成、约束(了解即可)

本文介绍了如何通过Java程序将数据写入XML文件,以及XML约束文档的基本概念。主要内容包括:1)使用StringBuilder拼接XML格式数据并写入文件;2)XML约束的作用(DTD和Schema);3)示例代码展示了创建包含书名、作者和价格信息的XML文档。代码通过BufferedWriter将构建好的XML字符串写入book.xml文件,结果成功生成了格式规范的XML文档。对于XML约束部分,文章指出DTD和Schema用于规范XML结构,但仅需了解即可。

2025-07-04 19:07:56 162

原创 第十五节:第三部分:特殊文件:XML概述、解析

本文介绍了XML的基本概念、语法规则和应用场景,并详细讲解了使用Dom4j框架解析XML文件的方法。主要内容包括:XML的结构特点(如根标签唯一性)、创建XML文档的语法规则、XML在数据交换和配置管理中的应用。重点演示了通过Dom4j读取XML文件的步骤:创建解析器对象、获取Document文档对象、解析根元素及子元素、获取元素属性和文本内容等。附带的Java代码示例展示了如何解析包含用户信息的XML文件,并获取元素名称、属性值及文本内容。文章配有相关流程图和运行结果截图,帮助读者理解XML解析过程。

2025-07-04 18:35:37 662

原创 第十五节:第二部分:特殊文件:Properties属性文件、案例

本文介绍了Java中Properties类的使用方法。第一部分展示了如何读取属性文件中的键值对信息,包括加载文件、获取特定键值以及遍历所有键值对。第二部分演示了将Properties对象中的键值对数据写入到属性文件中。第三部分提供了一个实际应用示例:读取属性文件并修改指定键的值。通过这些示例代码,可以掌握Properties类在Java中的基本操作,包括读取、写入和修改属性文件中的数据。每个示例都配有运行结果的截图,直观展示了操作效果。

2025-07-03 17:42:07 387

空空如也

空空如也

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

TA关注的人

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