笔记未整理

MySql数据库应用基础
服务器,数据库和表关系图
表中一条记录和对象数据的对应
Java中的类对应一张表
Java中的对象对应一行
Java中的属性对应列
Oracal中定义过程性语言多
控制语言在oracle来学属于过程性语言
删除数据库
创建数据库

数据库中的数据类型
Blob 二进制存图片
Text 存小说等
数据库计算的时候比较少
Bit 布尔类型
Date:年月日
Time:时分秒
Datetime:年月日时分秒
Timestamp:年月日时分秒毫秒
字符串:
一个中文占一个西文两个位置
长度固定用char
长度不固定用varchar
定义时类型在后名字在前
区分关键字用··波浪线下边的符号
后边定义类型时指定长度
INT,DATE没有长度
圈起来哪儿执行哪儿
建在哪个数据库可以选定也可以最上方下拉框来选
表建好了不出现点最上边的root@localhost右键reflash刷新
添加进去自动保存reflash
删除表只要代码在都删了都不可惜 drop
主键:不能为空不会随意修改不重复
每张表只能有一个主键
和建表语句一起先删表再建就成主键

主键设置自增,可以不用填自己加
自增列像卒子不会回头
删除填写记录选定后点框上箭头-
设置某些列必须有值设置非空
加 NOT NULL,
Unique可以为空 不重复
电话不经常更改设置成字符串
不重复但可以为空
创建表套用语法,
1全是()
2先列名,在类型
3字符串需要长度
4除最后一列外,每列定义结束需要写"," 按住table实现随笔提示 做完操作都要刷新
先写元素名称,后边点缀属性 不过数据类型一定要写在第一位

通常错误显示所在行号
表已经建好刷新就好
最后一行不写逗号结束否则报错
对表添加列和删除列添加属性删除属性
列修改,先有元素才行,一定先修改数据类型列属性修改
改表名错了才去修改表名
有时候也是将错就错,
改列名
各种修改规范
练习:
图像和视频放到数据库里的话安全性一定是非常高的(军工类图纸等私人信息)
Image存的是图片的路径不是图片本身
********************************************以上都是DDL *******************************************************
数据定义语言
DML数据操纵语言
增 (注册)



指定列名的增加语句
字符串一定用单引号设置增加
要从第一列开始增到最后一列
也可以用DEFAULT或者null写入
日期也要单引号引起来
INSERT 语言插入数据
作业
修改列属性value值
没有选择语句选择列否则选择语句选择特定
把改什么写在前边位置写在后边
后边不加分号的时候不能同时执行两个增加 ,加分号才行
女性角色工资涨500
两个条件用and相连
同一个位置修改两种元素值用逗号隔开
删除数据
自增列重新编号
举例说明
Delete删除 行数据
查 :数据查询语言
不属于DDL用的最常见
登录也属于查询 DQL语句
导出选中表选中结构和数据

导入面板不可控
可复制代码粘贴
导入可控:
在新标签下打开
选中数据库选右边按钮快进 –>
导入成功

0到50改成0到100.
刷新下方出现87row
查询结构
关键字as 起别名 别名可以加单引号也可以不加
另外可以用空格代替as来简化
*号先查列看看有哪些列再查询,效率低
查询不重复的列信息加关键字distinct
Select查询语句基本用法:
显示中是可以进行计算的但是不更改表内容
运算符
不等于用<>号标准的,不标准的有但是不一定实现
or用法 满足一个条件即可

另一个or的用法不过只适用于一列可以实现多个or条件效果
查空元素用is null
不为空的元素用
is not null
模糊查询:是在条件不能完全确定(知道条件的某一部分时执行的查询)
模糊查询:一定用Like
下划线和百分号的应用:
左右都有%只要有北就出
排序
降序 aesc升序或者默认
Where在排序前边
第一个排序条件执行后再执行第二条排序条件(多列排)
Limit关键字:
从第几个开始查 , 查几个人
可以产生分页效果设置一页几人
第一页是零第二页是1>>>>>>>>
按姓名排序是按ASC码值来排
误区:
多行插入必须每行都一个insert into
修改元素value值用update 选择都放在最后


用过程性语言的语法对其进行属性加的操作
删除表元素内容delete from
输出最大课时数的第二阶段的课程信息select结合聚合函数使用
分页查询显示第6页查询结果意思是直接出来第6页
Count()函数计算变量个数实现背景地区 学生人数的计算
聚合函数 count
聚合函数
特性:随便一个属性都行如果输入1会返回行数个1,所以就能这么做用count(1).
出现聚合函数聚合结果就出一行如果是分组的话就不一定是一行了
聚合结果配合列名显示没有意义 其他数据库平台会报错
Sum累加和
先写选择再加聚合 写选择时用显示全部信息*
平均值avg
聚合函数除了count()外都是要在里边加列名称
可以把聚合函数并列写,不能把列并列写
子查询
子查询:
小括号里边的先运行不同的表相同的属性建立联系
先写where ,where 什么查什么 后边小括号里边不能写星※
返回结果是一条可以用等号否则用IN关键字
In关键字缺点:在子查询中有Limit关键字只能用等号
三重子查询:三个表结构之间的关系
属性未知查属性
分组:
相同学号的学生合并成一行
按那个分组查哪个查其他列没有意义
按哪个分组查哪个
查询所有学生的总成绩
Where是分组前的筛选
把where放在group语句前
Where后边不支持聚合函数筛选用having
对聚合对分组筛选用having
HAVING
外键和外键的设置特征
数据完整性
出箭头的表是外键表
被指的是主键表
行业标准写出
学生表的成绩id肯定依赖于成绩表的成绩id 所以给学生表加约束

使得gradeid作为grade的外键写法 约束名称自己起 FK_表名_有外键的属性名
设置外键表的主键表 foreign key (属性名) reference|引用逐渐表| + 表名(表中属性名与前边属性相同)
外键设置约束后要看着主键表来填了
add constraint
foreign key
外键 references 依赖
外键约束

代表两种表之间的一种约束
学生表里加一列老师ID使得老师表和学生表联系
常见关系:
1:1
1:N
N:N 作业:QQ数据库项目
表连接inner join
多对多项目:用中间表

中间表写对应关系
笛卡尔积:
两个表相乘
笛卡尔积是进行早期表连接早期用法把几个表连成大表不过有无意义的表项目 需要设计有意义项目出现的条件
表连接和笛卡尔连接的语法不同:
1,把逗号换成
inner join
2,把条件选择换成on
表名+空格+别名
和一个表连接后属性就都继承了能直接在下次属性连接时使用


内连接如果有些表没有对应值的话是不会被查询出来的
4的就业期是新加的在student表中没有对应值不会被查出来
外链接分左连接和右连接
左连接就是左边表为主表
右连接就是右边表为主表
4的就业期能显示出来对应属性值全部是空
表连接中的主表就是无论是否有对应的信息都会出现一次
如果没有对应信息会出现一个对应空的行
主表和从表对应关系时使用左连接和右连接才有意义


连表查询也能进行AND叠加
连表查和外键约束没有关系连表是连表外键是外键功能不一样不能混淆了
表连接之后查询结果是个大表可以在后边实现之前的各种方法选择的条件也和平常不一样
不知道是哪个表的前边加点指明哪个表 ambiguous模糊的不明确的
连表查也能设置单列属性查询选择条件没有限制随便选择只是按左右选择查询的话出现在左或右的可以为空
以前选择不出来是因为自己对表连接的理解理解错了我想的太复杂实际就那么简单,还是因为练习 的少只有练习才能多理解
左右连接表作用:能出现空的,可以筛选没有参加考试 的人
JDBC
JDBC Java 数据库 连接
JDBC必须会 前台界面会发过来给服务器 Java能获得java提交过来的东西
以前使用数组代替数据库 数据库可以对数据做限制不会像那么麻烦 全部变成对数据库进行操作
JDBC:实际上主要由
JDBC API(应用程序接口)来组成
也就是说JDBC是由很多接口组成的
这些接口实际上是由数据库厂商实现的
驱动是个类库是由相应的厂商实现的接口
JDBC DriverManager:
驱动管理器 :用来管理数据库厂商提供的实现的接口的管理器
数据库有对这种语言规则的实现。
管理器实现对接和管理
执行过程:1,2两步大框架下进行3,4
全部对象化 1,安装JDBC驱动 JDBC才能用
2,
静态块和普通块:静态块在java虚拟机下只运行一次除非虚拟机停了重新开始才能再运行;普通块只有实例化才运行 静态块java虚拟机加载一次的时候触发
直接让java虚拟机加载这个类要抛出异常
这行代码是加载驱动
这个jar包是mysql的
.jar是java文件压缩格式
引用出现才算成功
引入式导入:引用的环境导入到文件
点击如图 找到文件就行


红毯好是不存在 remove了引用就行了
复制式导入


没有输出只要不报错就加载成功了
导包一定是java包


: 是到的意思

Localhost是本地可以写成别人的ip地址


Using password yes是密码错了






增删改都是这个思路

发生异常的时候就不能继续try后边的语句了
所以就不能回收了




声明一定要赋值



先写加载驱动再加引号
先写再导包Connection.java.sql



声明一个连接接口 用管理类进行实例化
都要有抛出异常并且是重复设置好看

连接实例化之后定义哨兵
sql语句作为string 值传入
实例化一个传值哨兵
执行

执行后返回几行受影响 execuUpdate方法返回int型数据
专门应用于数据库增删改 不能进行查


产生的声明一定放在try之前才可以在catch语句中使用不产生错误 完成连接

查询
声明的时候要导包

Try 选择多重catch

查询时返回的是表格和增删改不同,所以用resultset来接收

可以用resultset的里的方法实现表格的操作


一行数据都没有或者到最后一行后都会返回flase

后边写几从几开始或者写列名
用while控制循环

列数是从1 开始数的

Res的回收:
只要不是空行就不会返回false




.next 用while循环实现多输出



Mysql中表列数字
靠右的是数字靠左的是字符串
对象取到集合里边去
查询结果的处理

New 后边直接ALT +/ 可以找到有参构造 然后用tab建控制书写 new之后直接alt + / 出现有参
Sql语句的拼接
用查询如果有一行就不返回fault 来实现登录操作



不用上边那种获取name方法的缺点:是sql注入攻击 有机会镶嵌sql代码

防止sql注入攻击

出现可嵌入式代码 sql漏洞出现处
这个是漏洞
换哨兵避免漏洞 PreparedStatement
用两个占位符去除等号避免sql攻把占位符填充name pwd 给设置好的占位符添加
Resultset用来接收查询到的结果所以用执行进行实例化
查询结果的反馈地方接收方法
最后一定要有finally类进行释放空间和资源进行控制
增删改需要两个定义声明一个是连接一个是哨兵
查需要三个连接,哨兵另一个是接收表的
连接下才能派出哨兵才能接受
关于DVD管理的数据库连接操作和应用水准
DVD 主menu中default用法



最后调用自己是递归就不用那么麻烦了

初始化放到manager构造函数里进行处理
新建父类用多态实现两种状态 抽象类做父类 子类继承
在实现时传入类实现多态可用选择语句进行选择

抽象方法没有写报错,点黄×,然后选第一个自动写进行复写
数据库中直接用unique就能设置不重名,用数组的话就要手动设置
Break一定要在后边加不然就后边一直这样了

记录下标,定义标志位为 -1
Return 作用 终止方法继续下边的mainmenu
把大的menu全包了抛出全部异常只要一个方法出错都有这种异常
多重条件用连接符
用私有类型和布朗型定义一个方法判断日期是否输入有误、
然后调入
最后return:
Return 是跳回相当于调试里边的返回 下边不执行
返回-1最后好接收
对数据库的DVD排行榜
实现对数据库的操作ORDER BY就完事了
更改原则:不要去更改事前做好的东西 扩展修改原则
冒泡排序算法的for循环
数据库新增一列属性设置默认值为0

先写了finally的close()可以防止自己忘了加比较方便
做的时候都用preparestatement实现避免sql注入攻击
标准写法交给集合实现输出的方法
封装声明和关闭声明封装在一个类中叫做BaseDao
Com.Mysql.jdbc.driver 包名称mysql的jdbc的驱动driver前边加上包的默认标识
Jdbc:mysql, jdbc连接mysql的地址 用分号表示
首先还是要先导入包
封装的关闭方法
方法中应用判断是否空:因为可能用查询可能不用查询节省时间
静态方法可以直接使用不用声明

Pt重新赋值不会出现错误和异常昨天的什么不能连续执行两次就是因为这个所以一定要再次使用哨兵的时候一定把指令初始化都改了
从0000年到1997-10-07得到日期差 sql中的算法
两个日期差想减就是中间间隔就是日期差


判断日期有误的方法封装
先写sql语句然后进行粘贴到java中进行更改
已查询返回列选择第一列就是自己所要
怎么看错误在哪里边:
Com.mysql.jdbc的都不是错后边的才是你的错 按照Java错误行数判断
下午任务用上baseon
Basedao 里只是两个进行了封装
Class.forName和conn进行了封装别的都没有封装
JDBC操作步骤
数据库连接操作
Connect(连接接口用java的驱动管理获得实例)
Statement(声明)对象需要connection接口进行实例化
Executeupdate()可以直接在update中写代码 主要进行更新操作删除啊插入什么的
可以直接操作
数据库查询操作
查询中需要注意的点
各项声明:查询中不要写星
对结果的取出操作按列名称进行操作
最后一定要关闭数据库
也可以用数字来做
直接引用查到的属性名也可完成访问
scanner的另外用法
预处理的方式praparedstatement先占着座位 最后再填回去就不怕sql了(预编译)
因为要进行预处理所以和statement不一样括号内需要加参数
先写问号然后进行预编译占位
Java.c下的date强制转化成java.util的date父子类关系会报错 注意包
重点
Preparestatement查询操作
执行模糊查询占位符的添加
有关批处理
在批处理的最后加入addBatch() (加入批处理)操作之后,用executeBatch()执行执行批处理
执行语句是循环执行多个语句时
方法不能用找不到原因,是传入参数产错了显示无效替换(中英文占位符‘?’不同产生错误)英文的?和中文的?不一样
可以使用同一个变量不过要先释放再使用、
对于价格输出用res指针的特性来输出
增加列属性的用法
更改列名称 用change 更改列名称用modify更改列属性
对于一个表外键是其他表的主键而且这个表不能有主键才行
有约束的表先删除根约束
才能在删除表
都用drop进行删除 建立约束外键时也可以都有主键
设置的是主表的外键明白哪个是主表哪个是从表

关联的那张表的主键设为主表的外键
主表和从表一定是一对多的关系

找翻译和找字典的区别
有些功能windows不支持逐渐被淘汰
不需要找jar包可以直接连库可以访问windows的所有数据库
一般用纯的java驱动百分之百java
纯的缺点需要导入jar包
业务代码和连裤逻辑代码的分离 由控制台业务逻辑连裤逻辑业务逻辑控制台
三个规范的包


Final定义常量全都大写
下划线分开单词(行业规范)
DAO模式专类专用
DAO专属模式 10:11开始

菜单 和 界面实现流程图

Main函数不在这三层中单独做一个包用作测试
按F3也可转到代码段alt +鼠标点击
控制台
进入业务逻辑

每一个箭头都是一个实例化按照实例化可以增加理解的程度
到达数据访问层
return返回到业务逻辑
return 返回到控制台
设计分层的好处互相调用,分离性能好,可以分工合作非常方便。
增加查询是否有重复,不用数据库用来做加密,
起到检查约束的作用 主要是后台做有关这方面的工作就是纠察检

DAO模式 完成 设计体制
查询再业务层返回集合

透明调用的意义:为了实现三层模式
把对上一层的声明放到最前
Eclipse小技巧:打开大写字母用alt+/实现
返回一定用数组接收
输入一定放在最顶层写(view)
最后递归写在主方法体制中最后结束实现
该给的给你了自己想办法,写过的就别写直接实例
容易理解的话就全部写new不用中间过渡
方法名长的话注释都不用写了
设计逻辑有问题时宁可再增加方法做一点儿修改也不改原来做好的
检查商品是否存在再主面板使用
增商品架子一样
存在先设置再添加两个方法
有主键约束id会自己加
根据主键表增加
先增加类别再增样式
难点:连表查询处理方式
显示商品的三种方式
1新建实体类

优点
理解简单
使用简单可以在查询确实比较复杂的时候使用

缺点会造成很多实体类实体类只能用一次代码臃肿,运行的效率低


DAO过程:先主面板然后是数据连接查询DAO最后写中间过渡 最底层
中层
上层
2使用map来解决问题
优点:使用灵活不使用实体类

缺点:在需要运算和比较时不能有特别灵活的类型分辨

模拟一个java对象 把map放到集合里,查找方便

放到map里

透明调用

List里边放了map
3使用实体类持有方式解决:(最常用)
Entity实体类
不实例化容易空指针
优点:既不用新建实体类也没有类型不明确问题最好用
缺点:有点儿难理解

笨方法和只写的方法都是把查询的结果赋值给集合 笨方法给对象赋值之后用集合添加

构造函数里又构造了一个输出也要 用构造
持有方式,实例化goods的时候就实例化了一个GoodsType +一个类型可以有多个商品一对多的关系
所有对Goods表做的增删减差都在GoodsDaol里
同理所有对GoodsType
专类专用不混搭
写方法的一般步骤:
1先写数据库操作再写相应的对象操作,缺少什么对象就传入什么对象
2返回值类型:返回表或标志位
实现数据库操作

对实例对象提供数据库操作连接
使得对象加到数据库中
数据库和对象分开向数据库中添加东西只不过添加的是对象罢了这就是这三层关系
Finally只要是对数据库进行操作了到最后都要用到这个方法。。close()
List取出的是一个实例化的对象也就是表中的一行
输入端控制台完成输入任务完成下边都是类的各种调用了
方法中加入对象
像debug一样去写语言一层一层的不报错就继续先写最主要的 然后通过思想确立最后去修改和优化这是主要途径 只是传入参数没有写方法
因为有外键约束所以一定要动态取到类别值所以不存在此类和存在此类都要进行获得类别id
连表查询
新建实体类的方法把查询结果安次扔到实体类中
While(res.next)之后获取相对应列实例化,然后把对象加入集合中
返回值一定用集合来接
把查到的东西放到map中把map放到list中
查不出的 构造方法属性值都写做0或者null对结果没有影响
要取得设置的属性值在本类中没有,所以用包含
此属性的类实现属性赋值,因为是这个类所包含的所以属性值这两个类都可以用
所以这么写也对
取到的东西放到实例化的对象中传入集合实现输出
用的是另一个已经在本类中实例化过的对象设置本类中没有但是在他类中实例化过的类中有,实现调用
都是set属性方法只是本类中不含有此属性可以把包含本属性set方法的类实例化在此类中实现查找到值的传入对象
然后传入集合实现输出
不实例化容易出空值空指针异常所以要实例化以下
如果values输入0属于默认值按主键自增
问号写错出现异常时占位符不存在
删除一列和增加一行
Delete inset into DELETE FROM goodstype WHERE typename = '电器'

INSERT INTO goodstype VALUES (0,'电器')
从表加外键限制指向主表
外键作用只不过是限制输入和输出和连表查询没什么关系
先new Biz然后调用里边的关于bao的数据库连接方法里边进行实例化操作完成DAO模型
文件操作
一个流可以理解为一个数据的序列
对于流的理解
file类的对象就是文件本身
编译出bug了,改个空格直接保存就能解决
文件流


上传:电子邮箱附件有空间概念支持上传
想打个双引号用转义字符
打印单引号也用转义字符,同理想打印一个转义符也用转移符
不存在会被创建,.exists是判断是否存在此文件

也可以指向文件夹
相对路径和绝对路径:从该文件夹下开始找的这个文件
当前文件不存在才能创建存在了就会报错
listFiles放在文件夹里的文件
遍历文件夹里所有内容如果文件夹里还有文件夹就不能这么做要用递归 new Object [] { } 是对象集
数组

遍历递归的二叉树操作

用for循环做成二叉树递归操作 可以看出级别的修改

文件操作的一般方法
相对文件的状态进行更改 不能更改内容
通过流来读写文件

读文件的内容或者写文件内容流相当于管道
inputStream输入流 按内容分:字符流字节流
使用方式分节点流,过滤流
队列数据结构先进先出
outStream输出流
都是相对于硬盘的
Java一定是运行在内存上
对于你来说读文件是输入 写文件是输出 你是内存



文件流使用 的一般流程
用对象声明一个文建的实例化
查看所调用函数的返回值类型来看出是属于 何种文档形式
创建文件流
(输入)相当于建立了和这个文件的通道 入是进入到内存的 用抛出异常
小写字母97大写字母65
Available表示读取文件长度
Read()本身返回int功能:read一次返回一个字节再次read返回之后的字节
返回的是字节数

Read是继续读所以说注重顺序性
效果如图
如果到内存每次读进一个就向屏幕输出一个
读一次设置循环实现输出不缺失的行业做法
最后一定关闭流
缓存
普通读取方式
省内存效率低
字节流输入
1设置缓存长度
2读入缓存
3用缓存来 进行输出
效率高占内存
文件io操作大法
后边加true是续写
不然的话会先清空原内容再写入
输出的顺序是从内存到硬盘的操作
Str是一个字符串,提供有getbytes方法利用缓存
读取文件字符内容
将读到的字符内容写到新建文建中

字符流输出不关闭没有内容
关闭回收资源
Flush是缓存关闭缓存也可以关闭
字符流加true 也是续写的意思
Java到文件都是节点流
实例化一个过滤流都是在节点流的基础上对接点流的辅助功能的附加
过滤流是节点流的辅助附加方法比较多使用过滤流读取
Bw.newline附加功能,能直接写和换行
重定向,把system.in进行重定向本来应该输出的位置定义到了文件

System.out进行重定向本来应给给系统(java控制台)的给了文件
序列化
While作为主方法里的选择可以通过递归调用while(true)好用
文件保存功能进行序列化
起名的原则大写字母变小写

Serializable不可序列化异常
解决异常,实现一个序列化接口(只是个标识表示可序列化)
反序列化完成重启

存档的原理就是序列化

最后一定关闭通道
使用一个文件对象来创建一个输入流对象来读取文件。首先得使用File()方法来创建一个文件对象:



文件流的复制
读入文件发生异常选择io异常
过滤流里边传入的是一个节点流
方便理解

文件流的入和出都是相对于内存来说的
显示过程:
输入流把文件内容进入内存输出流输出到指定地点
最后肯定都是都关上 用输出流输出输入流对象
文件输出copy 用int型write()进行接收
DateinputStream和DataOutputStream用来比表示二进制文件的输出控制,例如音频等文件
线程
进程概念
线程特点
线程分类
线程创建
线程创建:
继承thread类重写run方法
把创建的线程实例化并调用start方法线程新生可以运行产生一个和主程序同时运行的线程
第二种创建线程的方法实现runnable接口即可实现复写同样复写run方法
Thread的构造函数可以放置接口类型所以用thread加接口进行实例化
线程创建的两种方式比较
继承的访问当前对象直接用this关键字就可以
接口的需要使用currentthread()方法
一条线程接口可以同时为多个去使用
Thread.sleep()的意思是这条线成每隔2000毫秒运行一次
Thread.currentthread(),setpriority(n)
设置当前线程的优先级线程类是静态可直接使用为当前主方法设置线程优先级1到10越来越高
Mt.join先和主线程并行一段时间突然join之后要等待别人进行完在运行
系统上系统线程对优先级处理比较弱
线程的setdeamon方法是设置后台,宿主线程死了后台也立即死,不过宿主运行完还要执行一部分消耗空间代码所以线程也要在运行(一般立即死)

线程run方法里同样可以调用别的函数完成一部分操作
前边的绿实体中用小表是线程安全的线程锁住的方法可以实现对象锁

Stringbuild 可以看出是线程不安全的
Stringbuffer可以看出是线程安全的有小表
调用同步方法就会获得对象的锁
有小表的叫同步的
同步方法:获得方法后获得对象的锁
同步块运行到同步块的位置获得其中对象的锁
同步块使用的两种方式:
直接在方法名上用关键字
Synchronized进行标识
第二种方式:在方法里直接用关键字创建代码包传入对象为要锁住的对象
Acct为操作


不过加锁同样会出现两个锁等待彼此释放这样的死锁问题

练习项目经验
实现这个接口:意思是可序列化
网络上走的基本上都是对象而不是字符串
这些代码都是基于TCP协议来运行的
运行起来比较安全不会丢信息实时互动,但是费资源还有用于基于UDP协议的代码容易丢失没有返回效果像快递容易丢失信息优点效率高节省资源 感兴趣的话自己查


正则表达式 注册的时候用的多
用正则表达式设置限制任何语言都可以去使用

6个数字返回TRUE
中括号是可选 大括号表示前边的可匹配几次
月份的正则表达式
正则使用时一定要加转义字符 是静态类可以直接调用方法
同样要加转义字符
正则表达式最好用别人的意思就是百度
单例模式
私有构造不能new 了只能在类内进行new了设置界限使得单例模式成功实现
1建立一个私有构造函数目的:防止实例化防止产生新的对象(用条件语句控制对象的实例化非空就不重新实例化了实现单例)
2,创建一个私有静态的自己类型的对象
3,创建一个公有的静态的返回实例的方法
成功 的使用了单例模式两个对象 的实例化地址一样

单例模式用控制语句实现单例是主要思想

设计模式
1设计模式不是新的 知识而是知识的特殊用法
2设计模式 其实是像孙子兵法或者36计,遇到某种问题解决这个问题的固定的前人经验的总结
3学习设计模式之后并不是立即能用到只是遇到了问题如果可以采用设计模式的再套用 单例模式:如果程序中需要某个类只能出现一个对象就可以使用单例模式

工厂模式:

适配器模式
条件选择,string放在前
Main函数控制函数实现多态
工厂模式:如果程序中遇到了输入信息返回不同子类对象为了扩展方便使用工厂模式把选择写在类里面板层基本只有输入而已
修改的和主要的分离了,功能分的比较独立
适配器模式:像咱们变压器一样帮我们实现比较复杂接口中的个别方法
用适配器类实现接口中全部方法,用另外的类去继承,实现复杂接口中个别方法的实现
策略模式
复写方法可以直接alt+/进行选择不用写字母也行
用思维去理解代码不仅仅看代码应该有思维运营在里边
改成接口不用重写利用多继承但是逻辑思维还是代码冗余
策略模式模型
接口包含类,然后让类实现接口
Duck继承两个接口,而这两个接口里又分别实现两个类从而达到大范围的冗余的减少



好处是容易扩展
后台开发用的不多是游戏用的多
JDBC文档一定要做完
Final定义变量要在定以后赋值初始化块或者别的地方都行
文件必须是这个后缀名.properties
把密码什么的东西写在启动文档里
用输入流完成启动 getClass获得当前环境 .getresourceasstream引入里边是文件地址:或者用输入流去new 文件
位置,名字别写错
这么做的好处,当需要改的时候不用重新编译写到文档里
Ps是用来读取后缀名为properties的文件 把文件放到他的函数里就行了
在Dao里边都是先声明然后写Dao
真正工作的时候:实现类写在包的包里表明是自己接口的实现类

计算机主要靠思维和逻辑运维
代码过长调试困难一定建立测试类
模拟赋值进行测试函数方法实现块内功能
怎么通过序号传入参数,通过序号由集合获得对象的相关参数然后进行传入
rs.get(selectNum1).getPetType;实现
改变属性值的方法
Update+table+set++where
这种dao设计模式最重要的还是sql语句然后就是在编纂过程中独立设计缺什么补什么结构

你可能感兴趣的:(离散式笔记(不带案例图片),java,ee,流程式学习笔记)