记第四天实训

1、先是把vscode中配置了代码格式化的一个工具,保存代码就自动格式化。vscode最皮实的C++格式化的配置方法_vscode如何对c++文件格式化-优快云博客

2、今天讲的是STL库

泛型编程:

哈希冲突的四种解决方案:链地址法,建立公共溢出区,java红黑树

图的深度遍历广度遍历,树的遍历

unordermap是哈希表 没有排序的需求

map是红黑树

绿色是重载的意思

重要的

等号左边的,有实际的

右值,不能被取地址

纯右值,将亡值

右值引用

因为拷贝构造函数的存在,会出现这种情况

函数重载(Function Overloading)可以通过参数的个数来区分调用哪个函数。编译器会根据调用时提供的参数数量参数类型参数顺序来选择最合适的重载版本。

来自 <豆包>

偏特化

C++操作符重载

智能指针

Malloc free

New delete的区别 不能混用

C++11之后,struct上也有公有私有类型了

struct和class的区别 运行的内存空间不同

struct是在栈上速度快,实现简单类

class是在堆上伸缩性好,实现复杂类

希望指针能够自主管理和销毁内存

Raii

独占指针

### 课程安排:第1天 —— Spring框架基础 #### 1. Spring框架概述 Spring是一个轻量级的IoC(控制反转)和AOP(面向切面编程)容器框架,广泛用于Java企业级应用开发。通过Spring框架,可以简化企业级Java应用的开发流程,提高代码的可维护性和解耦能力。Spring的核心功能包括依赖注入(DI)和面向切面编程(AOP)[^3]。 #### 2. Spring IoC容器与Bean管理 IoC(Inversion of Control)是Spring框架的核心机制,它通过容器管理对象的生命周期和依赖关系。Bean是Spring IoC容器中的基本单元,开发者通过配置文件或注解方式定义Bean,并由Spring容器负责实例化、装配和管理。 - **Bean的定义方式**: - XML配置文件定义Bean - 使用注解(如`@Component`, `@Service`, `@Repository`)自动扫描注册Bean - **Bean的作用域**: - `singleton`:默认作用域,整个Spring上下文中只存在一个实例 - `prototype`:每次请求都会创建一个新的Bean实例 #### 3. 依赖注入(DI) 依赖注入是实现控制反转的一种方式,Spring通过DI机制将对象所需的依赖自动注入到目标对象中。常见的注入方式包括构造器注入和Setter注入。 **Setter注入示例**: ```java public class UserService { private UserRepository userRepo; public void setUserRepo(UserRepository userRepo) { this.userRepo = userRepo; } } ``` **XML配置**: ```xml <bean id="userService" class="com.example.UserService"> <property name="userRepo" ref="userRepository"/> </bean> <bean id="userRepository" class="com.example.UserRepository"/> ``` #### 4. Spring AOP原理与应用 AOP(Aspect-Oriented Programming)是一种编程范式,用于将横切关注点(如日志录、事务管理、权限控制等)与业务逻辑分离。Spring AOP通过代理机制实现对目标对象的功能增强。 - **AOP核心概念**: - **切面(Aspect)**:横切关注点的模块化,如日志录 - **连接点(Joinpoint)**:程序执行过程中的某个点,如方法调用 - **通知(Advice)**:切面在某个连接点执行的动作,如前置通知、后置通知、异常通知等 - **切入点(Pointcut)**:定义哪些连接点需要被增强 **AOP示例**: ```java @Aspect @Component public class LoggingAspect { @Before("execution(* com.example.service.*.*(..))") public void logBefore(JoinPoint joinPoint) { System.out.println("Method called: " + joinPoint.getSignature().getName()); } } ``` #### 5. Spring整合JDBC Spring提供了对JDBC的封装,简化了数据库操作,避免了手动关闭资源和处理异常的繁琐过程。通过`JdbcTemplate`类可以快速实现数据库的增删改查操作。 **JdbcTemplate使用示例**: ```java @Repository public class UserDAO { @Autowired private JdbcTemplate jdbcTemplate; public List<User> getAllUsers() { return jdbcTemplate.query("SELECT * FROM users", new BeanPropertyRowMapper<>(User.class)); } } ``` #### 6. 案例:使用Spring实现用户登录功能 结合IoC、DI和JDBC整合,实现一个简单的用户登录功能。 **核心代码示例**: - **User实体类**: ```java public class User { private int id; private String username; private String password; // Getter and Setter } ``` - **UserService业务层**: ```java @Service public class UserService { @Autowired private UserDAO userDAO; public boolean login(String username, String password) { List<User> users = userDAO.findByUsernameAndPassword(username, password); return !users.isEmpty(); } } ``` - **UserDAO数据访问层**: ```java @Repository public class UserDAO { @Autowired private JdbcTemplate jdbcTemplate; public List<User> findByUsernameAndPassword(String username, String password) { String sql = "SELECT * FROM users WHERE username = ? AND password = ?"; return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class), username, password); } } ``` - **配置类或XML配置**: ```xml <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mydb"/> <property name="username" value="root"/> <property name="password" value="123456"/> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"/> </bean> ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值