- 博客(26)
- 收藏
- 关注
原创 C++中自增自减运算符的重载
运算符可以通过成员函数或友元函数重载。这两个运算符分为前置(prefix)和后置(postfix)两种形式,重载时需要区分它们的语法。参数(无实际意义)与前置运算符区分,返回类型通常是对象的副本而非引用,以符合后置操作的行为(返回原值)。前置运算符的返回类型通常是对象的引用,以便支持链式操作(如。若需支持左操作数为非类类型(如。后置运算符通过一个额外的。
2025-11-16 17:47:34
165
原创 C++中的虚基类
虚基类(Virtual Base Class)用于解决多重继承中的菱形继承问题(即一个派生类通过多条路径继承同一个基类)。通过虚基类,C++实现了对菱形继承的优雅处理,避免数据冗余和成员访问冲突。关键字声明基类,确保派生类中只保留一份基类子对象,避免数据冗余和二义性。
2025-11-03 11:35:08
224
原创 C++中的赋值兼容规则
在C++中,赋值兼容规则指的是派生类对象可以赋值给基类对象,但反之则不成立。这一规则基于继承和多态的特性,确保类型安全的同时允许基类指针或引用指向派生类对象。以下是三条核心规则及其详细说明。
2025-10-27 10:37:08
379
原创 C++中基类成员名的限定访问和名字覆盖
虚函数覆盖(override)不适用名字隐藏规则。在派生类中访问基类成员时,若存在名字冲突(如派生类定义了同名成员),可通过作用域解析运算符。
2025-10-27 10:28:57
108
原创 静态、普通、常数据成员和函数成员小结
静态函数访问静态变量可以,静态函数只能访问静态成员(数据/函数)。常函数访问常数据成员可以,常函数可读取常数据成员(但不可修改,除非是mutable访问方式静态成员:通过类名或对象访问。非静态成员:必须通过对象访问。
2025-10-23 10:52:25
556
原创 JavaWeb中的Session
Session是JavaWeb中用于跟踪用户会话状态的机制,服务器为每个用户创建唯一的Session对象,存储在服务器内存中。客户端通过Cookie或URL重写携带SessionID来标识身份,通常用于保存登录状态、购物车等数据。
2025-10-20 00:11:38
389
原创 分页查询的实现(Java Web)
起始索引 = (当前页-1) * 每页条数三层架构分工明确:DAO:纯数据库操作Service:业务逻辑处理Servlet:请求响应控制分页对象(PageBean)封装了所有分页相关数据前端需处理分页导航的边界条件(第一页/最后一页)
2025-10-19 10:44:43
269
原创 C++对象成员
对象成员是指一个类的成员变量本身是另一个类的对象。例如,汽车类可能包含发动机类的对象作为其成员。当包含对象成员的类被实例化时,成员对象会先被构造。析构时顺序相反,先析构包含类,再析构成员对象。定义包含对象成员的类时,需要在声明中直接包含其他类的对象作为成员变量。构造这类对象时,需要注意成员对象的初始化顺序。使用对象成员时,成员对象的类必须完整定义。对象成员的初始化需要通过构造函数的初始化列表来完成,这是保证成员对象被正确构造的关键。对象成员的初始化必须在构造函数初始化列表中进行,不能在构造函数体内赋值。
2025-10-16 10:33:37
259
原创 多表关系与键约束
特性物理外键逻辑外键实现位置数据库层面应用层面数据一致性强一致性(数据库保证)最终一致性(需代码维护)性能影响可能影响写入性能无数据库额外开销适用场景单体应用、强一致性要求微服务、分库分表在Java Web开发中,MyBatis或JPA等ORM框架通常通过@ManyToOne@OneToMany等注解实现逻辑外键的映射。
2025-10-15 18:49:42
453
原创 C++里的友元函数
普通函数其他类的成员函数整个类均可声明为友元。友元关系是单向的(如A是B的友元,不代表B是A的友元)。友元破坏了封装性,应谨慎使用。
2025-10-13 11:50:33
484
原创 C++中的静态成员
静态数据成员属于类本身,而非类的某个对象。所有对象共享同一个静态数据成员,通常在类外初始化。静态成员函数属于类本身,只能访问静态成员,不能访问非静态成员。
2025-10-13 11:41:38
497
原创 MyBatis XML映射配置
用于定义SQL语句、结果映射、缓存规则等,实现Java方法与数据库操作的解耦。解决数据库字段名与Java属性名不一致问题,支持嵌套对象映射(如关联查询)。MyBatis的XML映射文件(通常为。
2025-10-10 23:37:30
583
原创 MyBatis的增删改操作
MyBatis 的增删改操作通常在 Mapper 接口中定义方法,通过注解或 XML 映射文件实现 SQL 绑定。// 插入用户// 更新用户// 删除用户。
2025-10-10 00:39:42
467
原创 MyBatis入门
MyBatis 是一个开源的 Java 持久层框架,用于简化数据库操作。它将 Java 对象与数据库表记录通过 XML 或注解方式映射(ORM,Object-Relational Mapping),避免了手动编写 JDBC 代码的繁琐过程。
2025-10-08 00:29:29
497
原创 JDBC入门
JDBC(Java Database Connectivity)是 Java 提供的用于连接和操作数据库的标准 API。它允许 Java 程序通过统一的接口访问多种关系型数据库(如 MySQL、Oracle、PostgreSQL 等),执行 SQL 语句并处理结果。连接数据库执行 SQL 语句(增删改查)处理查询结果管理事务。
2025-10-07 21:47:19
505
原创 线程还不会!?
线程池是一种多线程处理形式,通过预先创建一组线程并管理它们的生命周期,避免频繁创建和销毁线程的开销。任务提交到线程池后,由池中的空闲线程执行,执行完毕后线程不销毁而是等待下一个任务。线程是操作系统能够进行运算调度的最小单位,被包含在进程之中,是进程中的实际运作单位。一个进程可以包含多个线程,线程共享进程的内存空间和系统资源,但拥有独立的执行栈和程序计数器。通过代码和理论结合,可以更清晰地理解线程的核心概念和应用场景。:减少线程创建和销毁的性能开销,复用已存在的线程。:维护一组工作线程,执行队列中的任务。
2025-10-06 23:29:04
570
原创 Spring Boot入门
Spring Boot 是基于 Spring 框架的快速开发脚手架,简化了 Spring 应用的初始搭建和配置过程。它通过自动配置、内嵌服务器(如 Tomcat)和约定优于配置的原则,让开发者快速构建独立运行的、生产级别的应用。核心作用简化配置:无需手动配置 XML 或繁琐的依赖管理。快速启动:内嵌服务器,直接运行main方法即可启动项目。生态整合:默认集成 Spring 生态(如 Spring MVC、Spring Data)和第三方库(如 Redis、MyBatis)。企业应用场景。
2025-10-06 22:08:26
732
原创 来look look SQL DDL与表结构设计
DDL(Data Definition Language)是用于定义和管理数据库结构的SQL子集,包括创建、修改、删除表等操作。表结构设计需考虑数据类型、约束、关系等要素。
2025-10-05 22:35:50
565
原创 SQL里的DDL DML DQL
DDL用于定义和管理数据库对象(如表、索引、视图等)的结构。CREATE:创建数据库对象ALTER:修改数据库对象DROP:删除数据库对象TRUNCATE:清空表数据但保留结构-- 创建表-- 修改表结构-- 删除表在企业中,DDL通常由DBA或架构师执行,用于初始化数据库结构或进行Schema变更。例如创建新业务模块对应的表结构。
2025-10-05 12:04:50
649
原创 web分层解耦与三层架构
分层解耦是软件开发中一种设计思想,通过将系统划分为多个层次,每层专注于特定职责,降低模块间的直接依赖。接收顾客点单(请求),但不负责烹饪,将订单传递给后厨(Service)。根据订单制作菜品(业务逻辑),但不需要知道食材如何采购(DAO)。负责从市场获取食材(数据库操作),不关心菜品如何烹饪。
2025-10-04 12:28:08
700
原创 是UDP和TCP?
UDP(User Datagram Protocol)是一种无连接的传输层协议,提供不可靠的数据传输服务。UDP不建立连接,直接发送数据包,不保证数据包的顺序、完整性或到达性。它适用于对实时性要求高但允许少量数据丢失的场景,如视频流、在线游戏等。TCP(Transmission Control Protocol)是一种面向连接的传输层协议,提供可靠的数据传输服务。TCP通过三次握手建立连接,确保数据包的顺序、完整性和重传机制。UDP是无连接的,直接发送数据包;TCP是面向连接的,需先建立连接。
2025-10-03 22:48:57
348
原创 TCP通信实现一发一收的详细代码与思路
TCP通信需要服务端和客户端建立连接后进行数据传输。服务端通过监听端口,客户端通过Socket连接服务端。双方通过输入输出流实现数据交换,通信完成后需关闭连接。这种一发一收模式是TCP通信的基础,可扩展为持续通信或多客户端处理。
2025-10-03 22:42:36
458
原创 oh no!拷贝 移动 委托构造,析构函数还是傻傻分不清!?
移动赋值函数用于将右值对象的资源赋给已存在的对象。委托构造函数允许一个构造函数调用同类其他构造函数。移动构造函数用于“窃取”临时对象(右值)的资源。拷贝构造函数用于通过已有对象创建新对象。构造函数用于初始化对象的内存空间。析构函数用于释放对象占用的资源。
2025-09-29 23:45:55
622
原创 IDM插件开发挑战:技术解析与实战指南
IDM(Internet Download Manager)的插件生态及其作用挑战赛的目标与参赛要求技术栈与开发环境概述(如C++、COM组件、IDM SDK等)评审标准解读(创新性、实用性、代码质量)往届优秀作品的技术亮点开发时间规划与团队协作技巧。
2025-09-29 10:47:19
170
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅