12月第四周总结(知识点)
1.动态代理和静态代理的区别:
1.是什么:明星(对象)的经纪人(对象的代理),给这个明星接外面的广告商(控制对这个对象的访问)
2.jdk静态代理是通过直接编码创建的,而jdk动态代理是利用反射机制在运行时创建代理类的
3.静态代理只能一次代理一个类,而动态代理可以一次代理一个接口下的多个实现类
4.cglib动态代理:代理的是类,不需要业务类继承接口,通过派生的子类来实现代理,修改字节码达到修改类的目的
2.jvm的结构
1.是什么:java虚拟机,是java程序运行的地方
2.jvm可分为:方法区(静态变量,字节码,方法的模板),java栈(对象的调用,基本的数据类型存放),java堆(new出来的对象)
3 工厂模式
1.是什么?根据提供的数据生成一组类中某一个类的一个实例
2.简单工厂---工厂可以加工同一类型的不同的实例对象
3.抽象工厂--工厂可以加工多个类型的实例对象
4 同源是?
http、https相同,域名相同
代理可以解决跨域问题
做项目的流程:网页-前段-后段,增删改查盲写都写不出,怎么办?你,张浩龙啊
5 六大设计原则
开闭原则:对扩展开发,对修改关闭
1.单一职责原则:一个类只承担一个职责
2.依赖倒置原则:面向接口编程,依赖于抽象而不依赖于具体类,与具体类的上层接口交互
3.里式替换原则:父类可被子类替换,但反之不一定成立。也就是说,代码中可以将父类全部替换为子类,程序不会出现异常,但反过来就不一定了。
4.合成复用原则:
5.迪米特原则:尽量减少对象之间的交互,从而减小类之间的耦合,低耦合、高内聚
6.接口隔离原则:不要对外暴露没有实际意义的接口
7 面向对象特性
1.抽象:把一类对象的共同特征构造成一个类的过程
2.继承:从已有类得到继承信息创建新类的过程
3.多态:使用同样的对象引用调用同样的方法但是做了不同的事情
4.封装:隐藏一切可以隐藏的东西,对外提供最简单的接口来调用这个方法
向上造型:子类的对象指向父类的引用(我的儿子对爷爷和好奇)
向下造型 :父类new对象(我生一个崽子)
8 导入
导入导出SQL联表 查询的数据(这个就是业务逻辑,不同表的数据连接起来)
- mapper.xml文件里有一个插入一条数据的SQL,和把每Excel每一行都进行插入的list对象集合的SQL
2.service层实现这两个SQL
3.实体类需要 implements Serializable
4.Excel工具类util获取表单中的行数,插入的内容都是表中的数据,联动表展示,返回list
5.controller实现这两个SQL,一个是添加一条数据的SQL,一个是添加Excel里面每一行的SQL
导出
- 把显示的数据做成一个Excel表
2.实体类需要 implements Serializable
3.插件导出,插件类util选择要导出的列名,设置列的宽度 创建标题行 处理日期格式
4.controller层调用插件方法
就是查询
9 设置展示日期类的格式设置:不用使用日期转换工具类
1.改成string类型,不推荐
2.@JsonFormat(pattern = "yyyy-MM-dd",timezone = "Asia/Shanghai")
private Date traindate;推荐
10 实现导入导出数据,实体类要序列化
public class Employeetrain2 implements Serializable {}
11 @Param

12 多个数据就使用list集合存放
13 索引的优化
1.避免使用全表扫描首先考虑在where和order by 涉及的列上建立索引
2.避免在where字句中对字段进行null值判断,避免在where字句中使用!=或<>操作符,避免在where字句中使用or来连接条件,where字句中使用参数,where子句中对字段进行表达式操作,避免在where子句中对字段进行函数操作,不要在where子句中的 ‘=’左边进行函数,算术运算或其他表达式运算
3.不使用in和not in
4.尽力让字段顺序和索引顺序相一致
5.不要写一些无意义的查询
6.使用exists代替in
14 SQL语句执行顺序和书写顺序
-
执行顺序:from where groupby having select orderby
-
书写顺序:select from groupby having where orrderby
15 SQL聚合函数:avg(),count(),max(),min(),sum(),group by()
16 Tomcat 默认配置
最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大
17 架构发展
单体架构(一个Tomcat)-集群架构(多个Tomcat,所有业务都在一起)-垂直架构(基于集群架构,将业务分开)-soa架构(面向服务架构,基于垂直架构,可以跨服务)-微服务架构(基于soa架构,单独任务或小块业务逻辑)
闭眼写代码,不然什么多做不了
进公司第一道坎,maven和git,跑项目
18 eureka模块 注册中心的使用
- 编写 maveneureka模块 + 依赖

2.配置文件中配置
3.效果
19 其他模块 注册到eureka中
1.建一个新模块不 + 导入对应依赖

2.编写配置文件,设置注册名称

3.浏览器访问效果

4.启动报错 解决

负载局衡器

20 eureka的集群
1.拷贝一份

2.修改名称,配置端口

3.结果

21 外键的创建
- 创建表的同时添加外键
create table score(
score int(3),
st_id int(16),
cs_id int(16),
primary key(st_id,cs_id),
FOREIGN KEY (st_id) REFERENCES student(id),
FOREIGN KEY (cs_id) REFERENCES classes(id)
);
- 已经创建表了怎么办:在表的定义外进行添加外键约束
alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);
3.直接在属性值后面添加
create table score(
cscore int(11),
st_id int(50) references student(id),
cs_id int(30) references classes(id),
primary key(st_id,cs_id)
);
4.添加外键约束
create table score(
cscore int(11),
st_id int(50),
cs_id int(30),
primary key(st_id,cs_id),
CONSTRAINT `FK_ID_ST` FOREIGN KEY (st_id) REFERENCES student(id),
CONSTRAINT `FK_ID_CS` FOREIGN KEY (cs_id) REFERENCES classes(id)
);
22 innodb和myisum引擎的区别
1.MyISAM是非事务安全型的,而InnoDB是事务安全型的。
2.MyISAM锁的粒度是表级,而InnoDB支持行级锁定。
3.MyISAM支持全文类型索引,而InnoDB不支持全文索引
4.MyISAM相对简单,所以在效率上要优于InnoDB,小型应用可以考虑使用MyISAM
5.MyISAM表是保存成文件的形式
6.InnoDB表比MyISAM表更安全,可以在保证数据不会丢失的情况下,切换非事务表到事务表
7.MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择。
InnoDB用于事务处理应用程序,具有众多特性,包括ACID事务支持。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能
23 git和svn的区别
1.git分布式版本控制工具,本地一份,仓库一份
2.svn集中式版本控制工具,只有仓库一份
24 Ribbon负载均衡
-
代码方式:在order-service中的OrderApplication类中,定义一个新的IRule:
@Bean public IRule randomRule(){ return new RandomRule(); }2 配置文件方式:在order-service的application.yml文件中,添加新的配置也可以修改规则
userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则
25 git操作
1.第一步,建立文件夹和文件,在该目录打开Git Bash Here
2.第一个命名必须是:git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令
3.工作区红色字体,Untracked状态,
git add 111.txt 暂存区绿色字体,staged状态
git rm --cached 111.txt 暂存区(staged) 回滚到 工作区(Untracked)
git commit -m "111.txt提交"暂存区(Unmodify)-本地仓库(modified)
git checkout modified回到Unmodify状态
git add modified 回到staged状态
4.显示提交的细节 git reflog
26 git分支
李姐的话:copy一个总分枝考一份出来 给2个人分被开发两个任务 开发成功之后合并到总分支 开闭原则一样(提前拷贝)

注意:
1.只能在主分支合并
2.分支冲突

浙公网安备 33010602011771号