学习笔记4.25

目录

        • 1、OOP
        • 2、面向对象四大特性
          • 1.封装
          • 2.继承
          • 3.多态
          • 4.抽象
        • 3、Java语音特点
        • 4、异常有哪些
          • 异常处理机制:
          • Error和Exception区别
        • 5、数据库事务
        • 6、SQL优化
        • 7、序列化
        • 8、反射
        • 9、如何防止SQL注入
        • 10、#{}和${}的区别
        • 11、Mybatis动态查询,模糊查询
        • 12、Spring IOC容器
        • 13、ajax同步和异步区别

1、OOP

面向对象,站在对象的角度,把多个功能合理放到不同对象里,强调具备某些功能的对象。对象是具有某些方法的实体。面向对象稳定性好、可重用性强,有良好的维护性,实现更低的耦合度和更高的内聚。

2、面向对象四大特性

封装、继承、多态、抽象

1.封装

把数据和操作数据的方法绑定起来,对数据的访问只能通过定义好的接口。

作用:

①保证数据安全,复制调用者随意更改数据

②提高代码复用性(把公用方法放到一个类中,需要时直接调用)

2.继承

子类继承父类,重写父类方法,父类中存放多个子类共同的字段和方法,子类存放特有字段和方法。java中是单继承,

作用:

①减少重复代码

②让代码具有延续性

③继承是封装程序中可变因素的重要手段

3.多态

允许不同子类型的对象对同一消息作出不同响应,方法重载实现编译时的多态性,方法重写实现运行时的多态性。

实现方式:

①操作继承关系

// 父类
public class People {
 
}
================================
// 子类
public class Girl extends People{
 
}
================================
public class Test {
	
	People p = new Girl();  // 继承关系
}

②操作实现关系

// 接口
public interface Man {
	
}
================================
// 实现类
public class BadMan implements Man{
 
}
================================
public class Test {
 
	Man m = new BadMan(); // 接口和实现类关系
 
}
4.抽象

将同一类对象的共同特征总结出来,然后构造成类的过程(包括数据抽象和行为抽象)。抽象值关注对象的属性和行为,不关注行为的细节。

public class People{
    private String name;//名字
    private int age;    //年龄
}

3、Java语音特点

1.相对于其他语言,简单易学

2.面向对象,具有更低的耦合度和更高的内聚性

3.与平台无关(JVM是java跨平台的根本)

4.安全可靠,因为java不再支持强大的指针功能

5.支持多线程

4、异常有哪些

编译时异常和运行时异常

异常处理机制:

异常捕获:try…catch…finally(如果在finally执行前程序突然强行停止,比如停电,那finally也不会运行)

异常抛出:throws

Error和Exception区别

error是系统错误,无法通过程序进行处理(内存溢出)

exception表示异常,可以通过程序来捕获或优化程序来避免

5、数据库事务

事务是作为单个逻辑工作单元执行的一系列操作,一起想系统提交,要么都执行,要么都不执行。

四大特性:

①原子性:不可分,要么都执行,要么都不执行

②一致性:事务完成时,数据必须处于一致状态

③隔离性:当一个用户对数据操作时,其他用户会被隔离

④永久性:事务完成后,它对数据库的修改被永久保持

6、SQL优化

1.不要使用select *

2.使用索引

3.减少子查询使用关联查询(left join、right join、inner join)代替

4.减少使用IN或者NOT IN,用exists,not exists或关联查询(带有EXISTS的子查询不返回任何记录的数据,只返回逻辑值“True”或“False”)

5.避免在where字句中用!=或<>,否则将引起放弃使用索引而进行全盘扫描

6.尽量避免在where中进行null值判断,否则将引起放弃使用索引而进行全盘扫描

7.or的查询尽量用union或union all代替

7、序列化

处理对象流的机制,对象流是将对象内容流化。

作用:解决对对象流进行读写操作时所引发的问题。

实现:实现serializable接口,标记该对象可被序列化

8、反射

实现方式:

//Class.forName("类路径");[最常用]
Class cla=class.forName("com.syq.Demo");
===========================
//类名.class
class cla=Demo.class;
===========================
//对象名.getClass()
Demo d=new Demo();
Class cla=d.getClass();
===========================
//获取类的所有方法信息
Method method=d.getDeclareMethods();
//获取类的所有成员属性信息
Field field=d.getDeclaredFields();
//获取类的所有成员属性信息
Constructor constructor=d.getDeclaredConstructors();

9、如何防止SQL注入

mybatis中使用#{},JDBC中PrepareStatement

10、#{}和${}的区别

#{}是预编译处理,是安全的;${}是字符串代替,仅仅取值,非安全,存在SQL注入

#{}:相当于JDBC中的PrepareStatement

${}:是输出变量的值

11、Mybatis动态查询,模糊查询

常用的动态SQL元素包括if、choose、when、otherwise、where、set、foreach、bind等用标签来代替

//接口中的方法
public List<Branches> finDongTai(@Param("name")String name,@Param("add")String address);//动态
public List<Branches> findLike(@Param("name")String name,@Param("add")String address);//模糊
=====================================
//动态查询
<select id="finDongTai" resultType="com.wj.entity.Branches" > 
    SELECT * FROM Branches where 1=1
    <if test="name!=''and name!=null">
     and name =#{name}
    </if>
    <if test="add!=''and add!=null">
     and address =#{add}
    </if>
</select>
//模糊查询
<select id="findLike" resultType="com.wj.entity.Branches" > 
   SELECT * FROM Branches where name like "%"#{name}"%" and address like "%"#{add}"%"
</select>

12、Spring IOC容器

Ioc—Inversion of Control,即“控制反转”

Spring框架的核心是Spring容器。容器创建对象,将它们装配在一起,配置它们并管理它们的完整生命周期。Spring容器使用依赖注入来 管理组成应用程序的组件。容器通过读取提供的配置元数据来接收对象进行实例化,配置和组装的指令。该元数据可以通过XML,Java注解或 Java代码提供。

实现机制:

interface Fruit{
    public abstract void eat();
}

class Apple implements Fruit{
    public void eat(){
        System.out.println("Apple");
    }
}

class Orange implements Fruit{
    public void eat(){
        System.out.println("Orange");
    }
}

class Factory{
    //getInstance,使用这种方式使用单例模式创建类的实例,所谓单例模式就是一个类有且只有一个实例,不像object ob=new object();的这种方式去实例化后去使用。
    public static Fruit  getInstance(String ClassName) {
        Fruit f=null;
        try {
            //实例化对象
            f=(Fruit)Class.forName(ClassName).newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return f;
    }
}
class Client {
    public static void main(String[] a) {
        Fruit f=Factory.getInstance("io.github.dunwu.spring.Apple");
        if(f!=null){
            f.eat();
        }
    }
}

13、ajax同步和异步区别

异步:通过事件触发ajax,请求服务器,在此期间无论服务器有没有响应,客户端的其他代码一样课运行;默认异步。

同步:通过事件触发ajax,请求服务器,在此期间等待服务器处理请求,客户端不能做任何处理,在ajax执行完毕后才会执行其他代码。提交请求->等待服务器处理->处理完毕返回

你可能感兴趣的:(学习笔记4.25)