目录
本周主题:琐碎时间中的觉醒。
周一
周二
周三
周四
周五
周六
周日
总结
本周主题:琐碎时间中的觉醒。
总结这一周:效率有待提高,本周学的最多的是框架。因为前几周把javaweb看完后就去学一些计算机基础学科,计算机网络、mysql进阶、机组(操作系统还没咋接触)。所以框架迟迟拖延,现在刚刚开始补。不负自己的梦想把。加油。继续冲
记录时间:2022 5.9——5.13
周一
刷了2道题:剑指offer的11和32题 都是层序遍历想在复习一下,因为忘得有点多。刚刚开始不会写,然后就去b站找了题解看讲解视频,用广度优先和深度优先进行解题。
在下午和中午的时候看了左程云的b站视频,他的解题思路和想法我还有点跟不上,加油加油,努力跟吧,数据结构不能拉下。算法就是长远的事。
这周主要在学树,图的话,听他说在考查其他算法时会夹带考查图,我就先放了放。
在5.9日给maven的学习开了个头。
看的是硅谷的老师封捷老师和动力节点王鹤老师的maven视频。hhh怕听漏了所以都听了。发现很多东西重叠 了,虽然有点浪费时间,不过听两遍好理解了。写出maven的人确实厉害呀。
附上硅谷的笔记链接以后好复习:http://heavy_code_industry.gitee.io/code_heavy_industry/pro002-maven/
层序遍历题解如下:
class Solution {
public List> levelOrder(TreeNode root) {
List> res=new ArrayList<>();
if (root == null) {
return res;
}
Queue que=new LinkedList<>();
que.offer(root);
while(!que.isEmpty()){
List level=new ArrayList<>();
int currentsize=que.size();
for(int i=1;i<=currentsize;i++){
TreeNode node=que.poll();
level.add(node.val);
if(node.left!=null)
que.offer(node.left);
if(node.right!=null)
que.offer(node.right);
}
res.add(level);
}
return res;
}
}
周二
周二它莱莱的满课,不得不说。我们学校的课挺水,还必须到,服了。不过晚上上了py高级学习了python numpy库和属于numpy的pandas
方便数组集合的操作。
今天忙里偷闲的怼了一点点硅谷的spring5 他没有用maven了解些注解。
周三
学了好多spring5的注解,真的挺方便的。hhhh下面是笔记。
1、什么是 IOC
(1)控制反转,把对象创建和对象之间的调用过程,交给 Spring 进行管理
(2)使用 IOC 目的:为了耦合度降低
(3)做入门案例就是 IOC 实现
2、IOC 底层原理
(1)xml 解析、工厂模式、反射
3、画图讲解 IOC 底层原理
IOC (BeanFactory 接口)
1、IOC 思想基于 IOC 容器完成,IOC 容器底层就是对象工厂
2、Spring 提供 IOC 容器实现两种方式:(两个接口)
(1)BeanFactory:IOC 容器基本实现,是 Spring 内部的使用接口,不提供开发人员进行使用
* 加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象
(2)ApplicationContext:BeanFactory 接口的子接口,提供更多更强大的功能,一般由开发人
员进行使用
* 加载配置文件时候就会把在配置文件对象进行创建
3、ApplicationContext 接口有实现类
IOC 操作 Bean 管理(概念)
1 、什么是 Bean 管理
(0)Bean 管理指的是两个操作
(1)Spring 创建对象
(2)Spirng 注入属性
2、Bean 管理操作有两种方式
(1)基于 xml 配置文件方式实现
(2)基于注解方式实现
IOC 操作 Bean 管理(基于 xml 方式)
1 、基于 xml 方式创建对象
(1)在 spring 配置文件中,使用 bean 标签,标签里面添加对应属性,就可以实现对象创建
(2)在 bean 标签有很多属性,介绍常用的属性
* id 属性:唯一标识
* class 属性:类全路径(包类路径)
(3)创建对象时候,默认也是执行无参数构造方法完成对象创建
2 、基于 xml 方式注入属性
( (1 )DI :依赖注入,就是注入属性
3、 、第一种注入方式:使用 第一种注入方式:使用 set 方法进行注入
(1)创建类,定义属性和对应的 set 方法
public class Book {
//创建属性
private String bname;
private String bauthor;
//创建属性对应的 set 方法
public void setBname(String bname) {
this. bname = bname;
}
public void setBauthor(String bauthor) {
this. bauthor = bauthor;
}
}
(2)在 spring 配置文件配置对象创建,配置属性注入
< bean id= "book" class= "com.atguigu.spring5.Book"> < property name= "bname" value=" " 易筋经" "> property> < property name= "bauthor" value=" " 达摩老祖" "> property> bean>
4、 、第二种注入方式:使用有参数构造进行注入 第二种注入方式:使用有参数构造进行注入
(1)创建类,定义属性,创建属性对应有参数构造方法
public class Orders {
//属性
private String oname;
private String address;
//有参数构造
public Orders(String oname,String address) {
this. oname = oname;
this. ad dress = address;
}
}
(2)在 spring 配置文件中进行配置
< bean id= "orders" class= "com.atguigu.spring5.Orders"> < constructor- - arg name= "oname" value=" " 电脑" "> constructor- - arg> < constructor- - arg name= "address" value= "China"> constructor- - arg> bean>
5 、p 名称空间注入(了解)
(1)使用 p 名称空间注入,可以简化基于 xml 配置方式
第一步 添加 p 名称空间在配置文件中
第二步 进行属性注入,在 bean 标签里面进行操作
< bean id= "book" class= "com.atguigu.spring5.Book" p p :bname=" " 九阳神功 "
p p :bauthor=" " 无名氏" "> bean>
IOC 操作 Bean 管理(xml 注入其他类型属性)
1 、字面量
(1)null 值
< property name= "address">
< null/>
property>
(2)属性值包含特殊符号
< property name= "address">
< value>>]]> value>
property>
2 、注入属性- 外部 bean
(1)创建两个类 service 类和 dao 类
(2)在 service 调用 dao 里面的方法
(3)在 spring 配置文件中进行配置
public class UserService {
//创建 UserDao 类型属性,生成 set 方法
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this. userDao = userDao;
}
public void add() {
System. out .println( "service add...............");
userDao.update();
}
}
< bean id= "userService" class= "com.atguigu.spring5.service.UserService">
< property name= "userDao" ref= "userDaoImpl"> property>
bean>
< bean id= "userDaoImpl" class= "com.atguigu.spring5.dao.UserDaoImpl"> bean>
3 、注入属性- 内部 bean
(1)一对多关系:部门和员工
一个部门有多个员工,一个员工属于一个部门
部门是一,员工是多
(2)在实体类之间表示一对多关系,员工表示所属部门,使用对象类型属性进行表示
//部门类
public class Dept {
private String dname;
public void setDname(String dname) {
this. dname = dname;
}
}
//员工类
public class Emp {
private String ename;
private String gender;
//员工属于某一个部门,使用对象形式表示
private Dept dept;
public void setDept(Dept dept) {
this. dept = dept;
}
public void setEname(String ename) {
this. ename = ename;
}
public void setGender(String gender) {
this. gender = gender;
}
}
(3)在 spring 配置文件中进行配置
< bean id= "emp" class= "com.atguigu.spring5.bean.Emp"> < property name= "ename" value= "lucy"> property> < property name= "gender" value=" " 女" "> property> < property name= "dept"> < bean id= "dept" class= "com.atguigu.spring5.bean.Dept"> < property name= "dname" value=" " 安保部" "> property> bean> property> bean>
4 4 、注入属性- - 级联赋值
(1 )第一种写法
< bean id= "emp" class= "com.atguigu.spring5.bean.Emp"> < property name= "ename" value= "lucy"> property> < property name= "gender" value=" " 女" "> property> < property name= "dept" ref= "dept"> property> bean> < bean id= "dept" class= "com.atguigu.spring5.bean.Dept"> < property name= "dname" value=" " 财务部" "> property> bean> (2)第二种写法 < bean id= "emp" class= "com.atguigu.spring5.bean.Emp"> < property name= "ename" value= "lucy"> property> < property name= "gender" value=" " 女" "> property> < property name= "dept" ref= "dept"> property> < property name= "dept.dname" value=" " 技术部" "> property> bean> < bean id= "dept" class= "com.atguigu.spring5.bean.Dept"> < property name= "dname" value=" " 财务部" "> property> bean>
IOC 操作 Bean 管理(xml 注入集合属性)
1 、注入数组类型属性
2 、注入 List 集合类型属性
3 、注入 Map 集合类型属性
(1)创建类,定义数组、list、map、set 类型属性,生成对应 set 方法
public class Stu {
//1 数组类型属性
private String[] courses;
//2 list 集合类型属性
private List list;
//3 map 集合类型属性
private Map maps;
//4 set 集合类型属性
private Set sets;
public void setSets(Set sets) {
this. sets = sets;
}
publ ic void setCourses(String[] courses) {
this. courses = courses;
}
public void setList(List list) {
this. list = list;
}
public void setMaps(Map maps) {
this. maps = maps;
}
}
(2)在 spring 配置文件进行配置
< bean id= "stu" class= "com.atguigu.spring5.collectiontype.Stu"> < property name= "courses"> < array> < value>java 课程 value> < value>数据库课程 value> array> property> < property name= "list"> < list> < value>张三 value> < value>小三 value> list> property> < property name= "maps"> < map> < entry key= "JAVA" value= "java"> entry> < entry key= "PHP" value= "php"> entry> map> property> < property name= "sets"> < set> < value>MySQL value> < value>Redis value> set> property> bean>
4 、在集合里面设置对象类型值
< bean id= "course1" class= "com.atguigu.spring5.collectiontype.Course"> < property name= "cname" value=5 "Spring5 框架" "> property> bean> < bean id= "course2" class= "com.atguigu.spring5.collectiontype.Course"> < property name= "cname" value=s "MyBatis 框架" "> property> bean> < property name= "courseList"> < list> < ref bean= "course1"> ref> < ref bean= "course2"> ref> list> property>
5 、把集合注入部分提取出来
(1)在 spring 配置文件中引入名称空间 util
xml version="1.0" encoding="UTF-8" ?>
(2)使用 util 标签完成 list 集合注入提取
< util :list id= "bookList">
< value>易筋经 value>
< value>九阴真经 value>
< value>九阳神功 value>
util :list>
< bean id= "book" class= "com.atguigu.spring5.collectiontype.Book">
< property name= "list" ref= "bookList"> property>
bean>
1 、Spring 有两种类型 bean ,一种普通 bean ,另外一种工厂 bean (FactoryBean )
2 、普通 bean :在配置文件中定义 bean 类型就是返回类型
3 、工厂 bean :在配置文件定义 bean 类型可以和返回类型不一样
第一步 创建类,让这个类作为工厂 bean,实现接口 FactoryBean
第二步 实现接口里面的方法,在实现的方法中定义返回的 bean 类型
public class MyBean implements FactoryBean{ //定义返回 bean @Override public Course getObject() throws Exception { Course course = new Course(); course.setCname( "abc"); return course; } @Override public Class> getObjectType() { return null; } @Override public boolean isSingleton() { return false; } } < bean id= "myBean" class= "com.atguigu.spring5.factorybean.MyBean"> bean> @Test public void test3() { ApplicationContext context = new ClassPathXmlApplicationContext( "bean3.xml"); Course course = context.getBean( "myBean", Course. class); System. out .println(course); }
周四
学完了maven的入门和mybatis的动态代理模式,对工厂模式有了解啦。
跟着动力节点的蓉姐学的mybatis ,很喜欢这个老师的风格。
leetcode刷了2个:
周五
上午一上午课,服了 上了Javaweb的实验课。下午去机房把mybatis的跟着敲了一下 看到了72。
关于占位符#{}和¥{}的笔记
#{}占位符
传参大部分使用#{}传参,它的底层使用的是PreparedStatement对象,是安全的数据库访问 ,防止sql注入.
#{}里如何写,看parameterType参数的类型
1)如果parameterType的类型是简单类型(8种基本(封装)+String),则#{}里随便写.
2)字符串替换
需求:模糊地址或用户名查询
select * from users where username like '%小%';
select * from users where address like '%市%'
select id,username,birthday,sex,address
from users
where ${columnName} like concat('%',#{columnValue},'%') ==>此处使用的是@Param注解里的名称
周五的刷题:这是个递归的题
周六
昨天熬夜了,9点多才到机房。
然后补英语课,听了听力,为了六级
今天看了mybais到90多了
刷的题:还是递归的,hhhh
室友老早把我拉走了,想着周日确实也可以歇歇。明天一定冲。多学点。
周日
周日上午买了个云服务器,因为想做一个个人博客,用springboot 以及一些前端技术做一个更优秀的项目,在暑假实习前尽力做好,哈哈。今天找到了个前端页面 codepen在线编辑的代码网站,感觉很好呀。里面有大佬写的很不错的页面和背景,以后可以参考。
然后下午刷了一个力扣之后就准备做做概率论了,之前翘过几次课,而且快要考试了,要准备准备啦。
总结
这个周总体来说,我的感觉是刷题太少啦,根本不够呀,不过快考试周了,等考试周结束,就赶快搞搞算法。投投简历。在暑假时,好好安排暑假,弯道超车大佬们。(doge) 开始好好准备秋招早点有实习经历,争取实现自己梦吧。希望下周自己好好复习旧课程。
还有csdn更新的话,我喜欢记录自己每天发生的事,会在中间写一些感觉有用的东西。尽力不写水文。欢迎私信一起学习。一起秋招找个好offer。



