黑马程序员技术交流社区

标题: 【石家庄校区】知识点总结 [打印本页]

作者: 逐野    时间: 2018-1-11 15:21
标题: 【石家庄校区】知识点总结
本帖最后由 逐野 于 2018-1-11 15:24 编辑

【石家庄校区】知识点总结



XML
文档声明:
        XML第一行为文档声明,如:<?xml version="1.0" encoding="GB2312"?>编码默认为UTF-8
        standalone属性说明文档是否独立,即是否依赖其他文档,属性为yes或者no
元素:
        XML元素指XML文件中出现的标签.
                包含标签体:<age>18</age>
                不含标签体:<Student name="zhangsan" age="18"/>
                注意:XML中只能有一个根标签
注释:
        只能写在文档声明的下面
        注释不能嵌套注释
CDATA区
        格式:<![CDATA[文本]]>
特殊字符
        &        &
        <        <
        >        >
        "        "
        '        '
处理指令
        以<?作为开关,?>作为结尾.
        <?XML-stylesheet type="text/css" href="some.css"?>
约束:
        XML文件使用<!DOCTYPE 根标签名 SYSTEM "路径文件名">引用本地约束
                           <!DOCTYPE 根标签名 public "DTD名称" "DTD文档的URL">引用网络约束
DTD约束:
                编码只能是UTF-8
                使用<!ELEMENT 标签名(子标签+(+表示一次或多次)) )约束
                        (#PCDATA)定义的标签的内容格式为普通字符串
                        EMPTY:用于指示元素的主体为空.比如<br/>
                        ANY:用于指示元素的主体内容为任意类型
                        (子元素):指示元素中包含的子元素
                元素个数
                        (子标签1,子标签2...(必须按顺序写))
                        (子标签1|子标签2...(任选其一))
                        如果元素后面没有+*?  表示必须且只能出现一次
                        +表示至少一次,或者多次
                        *表示可有可无
                        ?也表示可有可无,有的话只能有一次
                属性值类型:
                        CDATA:表示属性的取值为普通的文本字符串
                        ENUMERATED (DTD没有此关键字):表示枚举,只能从枚举列表中任选其一,如(鸡肉|牛肉|猪肉|鱼肉)
                        ID:表示属性的取值不能重复
                设置说明
                        #REQUIRED:表示该属性必须出现
                        #IMPLIED:表示该属性可有可无
                        #FIXED:表示属性的取值为一个固定值。语法:#FIXED "固定值"
                        直接值:表示属性的取值为该默认值        
Schema约束:
        引用方式:
                <根标签名
                        xmlns:itheima="http://www.itheima.com"
                        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                        xsi:schemaLocation="http://www.itheima.com book.xsd0"
                >
                </根标签名>
JDBC
SQL分类
        数据定义语言:简称DDL,用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等
        数据操作语言:简称DML,用来对数据库中表的记录进行更新。关键字:insert,delete,update等
        数据控制语言:简称DCL,用来定义数据库的访问权限和安全级别,及创建用户。
        数据查询语言:简称DQL,用来查询数据库中表的记录。关键字:select,from,where等


SQL语法特点:
        SQL语句可以单行或多行书写,以;结尾
        可使用空格和缩进来增强语句的可读性
        MySQL数据库的SQL语句不区分大小写,建议使用大写,例如:SELECT * FROM user。
        同样可以使用/**/的方式多行注释
        #单行注释
        -- 单选注释(空格不能少)
        字符串和日期要使用''单引号或""双引号包裹,推荐单引号


SQL数据类型
        int                        整型
        double                浮点型
        varchar                字符串型(可变字符型)
        date                日期类型,只有年月日,没有时分秒
        time                时间类型
        datetime        日期时间类型


SQL语句
        CREATE DATABASE 数据库名 (CHARACTER SET 字符集);
        SHOW DATABASES; 显示所有数据库
        SHOW CREATE DATABASE 库名;查看该库的信息
        DROP DATABASE 数据库名;删除数据库
        USE 库名;使用库
        SELECT DATABASE();查看当前正在使用的数据库
        创建数据表
        CREATE TABLE 表名(
                列名1 数据类型(长度) 约束,
                列名2 数据类型(长度) 约束,
                ...
        )
                约束:
                        主键:PRIMARY KEY,限制该列的记录值不能为空且唯一,相当于同时设定了NOT NULL和UNIQUE
                        非空:NOT NULL
                        自增:AUTO_INCREMENT,设置该列的记录值可以自动增加(只能用于数据类型)
                        唯一:UNIQUE:不能重复
                        外键:FOREIGN KEY,主要是连接加一个表的主键
                        检查:CHECK(条件),限制该列插入的记录值是否符合要求
                        默认值:DEFAULT,限制该列记录如果没有插入值,则使用默认值
        SHOW TABLES:查看库中的所有表
        DESC 表名:查看表结构
        DROP TABLE 表名:删除表


DOS命令行乱码
        临时:set name 'gbk';(将数据库数据修改为Windows的GBK)
               
        
增删改
        修改表名:
                RENAME TABLE 表名 TO 新名;
        修改表的字符集:
                ALTER TABLE 表名 CHARACTER SET 字符集;
        列
                添加列,添加字段:
                        ALTER TABLE 表名 ADD 列名 数据类型 约束;
                修改列:
                        ALTER TABLE 表名 MODIFY 列名 数据类型 约束;
                修改列名:
                        ALTER TABLE 表名 CHAGE 旧列名 新列名 数据类型 约束;
                删除列:
                        ALTER TABLE 表名 DROP 列名;
        添加数据
                一次添加单条:
                        INSERT INTO 表名(列名1,列名2,列名3....) VALUES (值1,值2,值3)
                添加数据格式,所有值全给出
                        INSERT INTO 表名 VALUES (全列值)
                一次添加多条:
                        INSERT INTO 表名(列名1,列名2,列名3...) VALUES(值1,值2,值3),(值1,值2,值3),...
                注意:
                        列名,表名问题
                        对应问题,个数,数据类型
        更新(修改)数据
                UPDATE 表名 SET 列1=值1,列2=值2....WHERE 条件;
        删除数据
                DELETE FROM 表名 WHERE 条件;
                清空数据:
                        DELETE FROM 表名;
                                逐条删除记录,不会重置自增计数器
                        TRUNCATE TABLE 表名;
                                全部删除记录,重置自增计数器
                        
查询数据
        普通查询:
                查询指定列的数据
                        SELECT 列名1,列名2 ... FROM 表名;
                查询所有列的数据
                        SELECT * FROM 表名;
                去重查询
                        SELECT DISTINCT 列名 FROM 表名;
                        #如果多个列,则按照多个列组合去重
                查询重新命名列
                        SELECT 列名 AS 临时列名 FROM 表名 AS 临时表名;
                在查询数据中,可以直接进行数学计算
        条件查询:
                即按指定条件查询记录返回符合条件的结果集, 使用SELECT和WHERE组合
                作用: 条件子句, 过滤符合条件的结果
                运算符
                        比较运算符
                                =: 相等
                                <>或!=: 不等
                                >: 大于
                                <: 小于
                                >=: 大于等于
                                <=: 小于等于
                                BETWEEN...AND...: 在一个范围内(包含头和尾), BETWEEN 0 AND 10; 0~10
                                IN (): 在列表中, 满足列表中一个即可
                                        如: IN (1, 3, 5)
                                IS NULL: 是空
                                LIKE 通配符`: 模糊查询
                                        通配符种类
                                                %: 一个百分号可以表示任意个字符. 比如王%, 王大锤, 王五
                                                _: 一个下划线可以表示一个字符. 比如王_, 只能匹配王五
                        逻辑运算符
                                AND: 与. 两边条件同时成立才成立
                                OR: 或. 两边条件只要有一个成立就成立
                                NOT: 非, 取相反结果
                                        NOT BETWEEN ... AND ...: 不在范围内
                                        NOT IN: 不在列表中
                                        NOT LIKE: 不匹配
                                        IS NOT NULL: 非空
                        日期也是可以比较的
        对结果集进行排序
                ORDER BY 列名 [DESC][ASC],列名 [DESC][ASC]
                先过滤条件WHERE查询再排序
        分组
                GROUP BY 列名 [HAVING] 条件
                分组必须跟随聚合函数
                SELECT查询的时候,被分组的列,要出现在SELECT选择列的后面
聚合函数:
        count:统计个数
        sum:求和
        avg:平均值,如果列中有空值,则忽略不算
        max:求最大值
        min:求最小值


DBUtils
可以操作事务,回滚
QuerRunner
        update(Connection con,String sql,Object...param),用来完成表数据的增加,删除,更新操作
        query(Connection con,String sql,ResultSetHandler r,Object...parm),查询数据
                注意:query方法返回值,返回的值是泛型,具体返回值类型,跟随结果集处理方式变化
ResultSetHandler
        ArrayHandler        将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值
        ArrayListHandler        将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。
        BeanHandler        将结果集中第一条记录封装到一个指定的javaBean中。
        BeanListHandler        将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中
                注意:JavaBean必须要有空参构造
        ColumnListHandler        将结果集中指定的列的字段值,封装到一个List集合中
        ScalarHandler        它是用于单数据。例如select count(*) from 表操作。
        MapHandler        将结果集第一行封装到Map集合中,Key 列名, Value 该列数据
        MapListHandler        将结果集第一行封装到Map集合中,Key 列名, Value 该列数据,Map集合存储到List集合



DBCP连接池

BasicDataSource:
                实现了数据源的规范接口javax.sql.DataSource
        设置连接的数据,必须设置
                setDriverClassName
                setUrl
                setUsername
                setPassword
        Connection getConnection:获取连接对象
        void setInitialSize(int size):初始连接数,连接池中最初的连接数
        void setMaxActive(int n):最大连接数量,程序能够连接数据库的最大连接数量
        void setMinIdle(int n):最小空闲连接,连接池中允许存在的最小空闲数量,如果小于该数量,则会创建新的连接,直到满足该最小空闲连接数
        void setMaxIdle(int n):最大空闲连接,连接池中允许存在的最大空闲数量,如果超出该数量,则超出的空闲连接会被真实关闭
        

设计模式
设计模式:
        实际的软件开发,对问题的处理总结经验,设计模式.
        在JAVA中,一共有23种设计模式
        分类
                创建型
                关系型
                功能型
        单例模式:
                保证一个类的对象唯一性
                饿汉式:
                        私有构造方法
                        在本类的成员位置,创建出自己类的对象
                        提供一个静态的方法getXXX(getInstance),获取单例对象               
                        在多线程下安全
                懒汉式(安全的,高效的应用):
                        私有构造方法
                        在本类的成员位置,定义自己类的变量赋值为空
                        提供一个静态的方法getXXX(getInstance),如果变量为空则创建自己类的对象,返回单例对象
                        在多线程并发下不安全
                        解决方式:
                                加锁:snychronizeda        
                                在锁的外面加上非空判断,如果不为非空则不需要拿锁,这样可以提高运行的效率
        
        工厂模式:
                将所有的创建对象的任务,交给一个工厂实现
                找工厂获取即可
               
                简单工厂:
                        优点:方便创建对象
                        缺点:如果传入的对象没有找到,会出现空指针异常
                工厂方法:
                        将每个对象,交给了各自工厂去创建
                        缺点:如果对象太多,那么工厂也太多
               
               
               










欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2