java 基础


java 基础

class 文件内容

class 文件包含java 程序执行的字节码,数据严格按照格式紧凑排列在class文件中的二进制流,中间无任何分隔符; 文件开头有一个0xcafebabe(16进制) 特殊的一个标志。

jvm 运行时数据区

.java源代码->.class 字节码->线程共享部分(方法区,堆内存)线程独占部分(虚拟机栈,本地方法栈,程序计数器) ->执行引擎->本地库接口->本地方法库

线程独占:

每个线程都会有它独立的空间,随线程生命周期而创建和销毁

线程共享:

所有线程能访问这块内存数据,随虚拟机或者GC而创建和销毁

方法区:

jvm

Read more

IOC


Spring

分层java SE/EE 应用全栈轻量级框架 web: springmvc service: spring 核心,完成事务控制,对象管理 dao: spring jdbcTemplate

两大核心IOC 和AOP

IOC :控制反转,将对象的创建权交给spring

控制: 在java 中部指的是对象的控制权限(创建 销毁) 反转: 对象的控制权从原来开发者在类中手动控制反转到由Spring容器控制

AOP: 面向切面编程,在不修改源代码的情况下,对方法进行增强,动态代理

解耦:去掉new 关键字,new 存在编译器依赖,耦合重的体现。

  1. 准备一个

Read more

mybatis 查询


mybati查询

建立对象关系映射

resultType
    如果实体的属性名与表中字段名一致,将查询结果自动封装到实体类中
ResultMap
    如果实体的属性名与表中字段名不一致,可以使用ResultMap实现手动封装到实体类中

多条件查询

  1. 使用#{arg0} -#{argn} 或者#{parm1}-#{parmn}获取参数-
  2. 使用参数注解@param("id") int id 在xml中使用 #{id}
  3. 使用pojo对象传递参数 paramterType="com.xx.User" resultType="com.xx.User"
  4. 模糊查询 “%参数%”,原因 #{}是占

Read more

mybatis


Mybatis

三层架构

  1. 持久层 主要完成与数据库相关的操作,对数据库进行增删改查
  2. 业务层 主要根据功能需求完成业务逻辑的定义和实现
  3. 表现层 主要完成于最终软件使用用户交互,需要有交互界面

三层架构之间调用关系:表现层调用业务层,业务层调用持久层

原始jdbc操作

public void testJDBC() throw ClassNotFoundException,SQLException{
    Class.forName("com.mysql.jdbc.Driver");
    Connection connection = Dri

Read more

Filter Listener


web 的三大组件

servlet(控制器)
filter(过滤器)
listener(监听器)

拦截器的应用场景

登录校验
统一网站编码
非法字符过滤器

拦截用户请求方法

servletRequest 请求对象,servletResponse 响应对象,filterChain 过滤器链是否放行

生命周期

初始化方法 
    private void init(FilterConfig config)
执行拦截方法
    public void doFilter(ServletRequest request,ServletResponse response,FilterChai

Read more