Java基础
- java属于面向对象编程,对象就是人对各种具体事物抽象之后的概念。
- java三大特性:
1. 封装(遵循开闭原则,封装内部信息,提供对外访问方法)
1. 继承(子类继承父类属性方法,代码复用)
1. 多态(引用多态和方法多态,表现在运行时,重载为编译时,重写运行时) - Object类一切类的超类
- 消除代码复制(将公共行为提取出来,父类和函数)
- 可扩展性(面向接口编程,继承)
Java web开发
- Tomcat Apache基金会
- tomcat线程池配置:
- Connector配置线程池:指定依赖的线程池配置,直接指定线程池配置参数 - JDBC基础
- JavaApplication–>JDBC Manager–>mysql/oracle驱动jar包
- 构建步骤:
- 装载驱动程序:class.forName(“com.mysql.jdbc.driver”)
- 建立数据库链接:DriverManager.getConnection(“jdbc:mysql://localhost:3306/test”,user,password)
- 执行sql语句:statement = conn.createStatemetn();resultSet = statement.executeQuery(“sql”)
- 获取执行结果:while(resultSet.next()){resultSet.getString(“username”)}
- 清理环境:conn.close() - JDBC进阶(Preparedstatement)
- 当一次性读取大量数据到内存时,会导致内存溢出;使用游标:useCursorFetch=true,设置每次可以读取几条数
- 当读取到过大字段时;使用流处理
- 海量数据插入(批处理);addBatch(),executeBatch(),clearBatch() - 数据池连接(建立连接性能开销大)
- DBCP(Commons-pool,Commons-log) - 数据库死锁分析与解决
- 互斥:事务相互持有对方锁
- 请求与保持:已经持有一个资源锁,等待另外一个资源锁
- 不剥夺
- 环路等待:获取锁顺序不一致 - 数据库排他锁和共享锁
- 外部加共享锁:lock in share mode
- 排他锁:for update
- 分析死锁方法:show engine innodb status - Mybatis
- sqlSessionFactory
- useGenerateKeys=true获取主键ID值
- 一对多关系配置ResultMap–>Collection–>association - Spring JDBC
- DAO–>jdbc/mybatis
- ORM(Object relation map)
- JdbcTemplate
- DataAccessException - 数据访问-事务管理
- 统一的事务编程模型
- 编程式事务及声明式事务
- platformTransactionManager事务管理器
- TransactionDefinition
- 事务传播行为propagation
- @Transactional(propagation=,rollbackFor)
- TransactionTemplate
框架封装核心基础
- 注解:核心作用是对类、方法、变量、参数和包进行标注,通过反射来访问这些标注信息,以此在运行时改变注解对象的行为。
- 注解核心要素:
- @Retention(source,class,runtime)
- @Documented
- @Inherited
- @Target(Method) - 反射:在运行状态中,动态获取信息以及动态调用对象的方法的功能
- 获取类元信息
- 实例化类
- 动态获取类中属性
- 动态获取类中方法
- 动态获取注解aclass.getAnnotation()类上注解/属性上注解/方法上注解 - 注解之框架封装实战(代理+反射+注解)
- 代理模式:为其他对象提供一种代理,以控制对这个对象的访问。代理对象在客户端和目标对象之间起到桥梁的作用。
- 静态代理:在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同父类。
- 动态代理