SpringMVC学习
一、SpringMVC简介1、什么是MVC?MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分
M:Model,模型层,指工程中的JavaBean,作用是处理数据
一类称为实体类Bean:专门存储业务数据的,如 Student、User 等
一类称为业务处理 Bean:指 Service 或 Dao 对象,专门用于处理业务逻辑和数据访问。
V:View,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据
C:Controller,控制层,指工程中的servlet,作用是接收请求和响应浏览器
MVC的工作流程:用户通过视图层发送请求到服务器,在服务器中请求被Controller接收,Controller调用相应的Model层处理请求,处理完毕将结果返回到Controller,Controller再根据请求处理的结果找到相应的View视图,渲染数据后最终响应给浏览器
2、什么是SpringMVCSpringMVC是Spring的一个后续产品,是Spring的一个子项目
SpringMVC 是 Spring 为表述层开发提供的一整套完备的解决方 ...
Spring学习
什么是Spring?
Spring 是轻量级的开源的 JavaEE 框架
Spring 可以解决企业应用开发的复杂性
Spring 有两个核心部分:IOC 和 Aop
IOC:控制反转,把创建对象过程交给 Spring 进行管理
Aop:面向切面,不修改源代码进行功能增强
Spring 特点:
方便解耦,简化开发
Aop 编程支持
方便程序测试
方便和其他框架进行整合
方便进行事务操作
降低 API 开发难度
Spring架构图:
Spring 总共大约有 20 个模块, 由 1300 多个不同的文件构成。 而这些组件被分别整合在核心容器(Core Container) 、 AOP(Aspect Oriented Programming)和设备支持(Instrmentation) 、数据访问与集成(Data Access/Integeration) 、 Web、 消息(Messaging) 、 Test等 6 个模块中。
入门案例1.导入基础的包
还需要junit及其依赖hamcrest-core
2.创建java实体类12345678pac ...
LeetCode百题【移动零】
题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
示例 1:
12输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]
示例 2:
12输入: nums = [0]输出: [0]
提示 :
1 <= nums.length <= 10^4
-2^31 <= nums[i] <= 2^31 - 1
进阶:你能尽量减少完成的操作次数吗?
解法
双指针
左右指针从0开始
当遇到0时左右指针会岔开,左指针停下来维护数组最后一个元素
右指针去遍历后边的元素,寻找合适的元素给左指针进行维护(交换)
left指针负责维护当前[0->left]数组的最后一个元素,保证不存在0
right指针负责遍历
1234567891011121314151617class Solution { public void moveZeroes(int[] nums) { int left ...
Mybatis学习
简介1.什么是mybatis
MyBatis 是一款优秀的持久层框架
它支持自定义 SQL、存储过程以及高级映射。
MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
MyBatis 可以通过简单的XML或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis
2013年11月迁移到Github
2.持久化
持久化就是将程序的数据在持久状态和瞬时状态转化的过程
内存:断电即失
数据库(Jdbc),io文件持久化。
为什么需要Mybatis
帮助程序猿将数据存入到数据库中。
传统的JDBC代码太复杂了。简化。框架。自动化。
更容易上手。
优点:
简单易学。灵活
sql和代码的分离,提高了可维护性。
提供映射标签,支持对象与数据库的orm字段关系映射。提供对象关系映射标 ...
LeetCode百题【电话号码的字母组合】
题目描述
解法
回溯,深度优先搜索
题目要求给出所有的组合结果,使用回溯,进行结果的遍历
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455class Solution { public List<String> letterCombinations(String digits) { //1.创建返回的结果集 List<String> combinations=new ArrayList<>(); //2.特殊情况处理 if (digits.length()==0){ return combinations; } //3.创建数字与字母的映射关系 Map<Character,String> phoneMap=new Hash ...
LeetCode百题【括号生成】
题目描述数字n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1:
12输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
12输入:n = 1输出:["()"]
提示:
1 <= n <= 8
解法
回溯,深度优先搜索
如果左括号数量不大于 n,我们可以放一个左括号。
如果右括号数量小于左括号的数量,我们可以放一个右括号。
12345678910111213141516171819202122232425262728293031323334353637383940414243import java.util.ArrayList;import java.util.List;class Solution { public List<String> generateParenthesis( ...
LeetCode百题【 二叉树的所有路径】
题目描述给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
叶子节点 是指没有子节点的节点。
示例 1:
12输入:root = [1,2,3,null,5]输出:["1->2->5","1->3"]
示例 2:
12输入:root = [1]输出:["1"]
提示:
树中节点的数目在范围 [1, 100] 内
-100 <= Node.val <= 100
解法
深度优先搜索
如果当前节点不是叶子节点,则在当前的路径末尾添加该节点,并继续递归遍历该节点的每一个孩子节点。
如果当前节点是叶子节点,则在当前路径末尾添加该节点后我们就得到了一条从根节点到叶子节点的路径,将该路径加入到答案即可。
1234567891011121314151617181920212223242526272829303132333435363738394041/** * Definition for a binary tree node. * public ...
JavaWeb学习
JavaWeb概述什么是javaweb?
JavaWeb是指,通过java语言编写可以通过浏览器访问的程序的总称,叫做javaweb。
javaweb是基于请求和响应来开发的
什么是请求?
请求是指客户端给服务器发送数据,叫做Request
什么是响应?
响应实质服务器给客户端传回数据,叫做响应Response
请求和响应的关系?
请求和响应是成对出现的,有请求就有响应
Web资源的分类
web资源按照实现的技术和呈现的效果不同,分为静态资源和动态资源
静态资源:html,css,js,txt,mp4,jpg图片等
动态资源:jsp页面,servlet程序
Servlet技术1.什么是ServletServlet是一种运行在服务器端(一般指的是 Web 服务器)的 Java 应用程序,可以生成动态的 Web 页面,它是属于客户与服务器响应的中间层。因此,可以说,JSP就是Servlet。两者可以实现同样的页面效果,不过,编写 JSP 和编写 Servlet 相比,前者成本低得多
Servlet是JavaEE规范之一,规范就是接口
Servlet就是JavaWeb的三 ...
LeetCode百题【合并两个有序链表】
题目描述
合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
123输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]
示例 2:
123输入:l1 = [], l2 = []输出:[]
示例 3:
123输入:l1 = [], l2 = [0]输出:[0]
解法
简单迭代
每次在个链表之间寻找最小的值,将其加入新的链表中,最后返回链表
123456789101112131415161718192021222324252627282930313233343536/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * L ...
LeetCode百题【有效的括号】
题目描述有效的括号
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
123输入:s = "()"输出:true
示例 2:
123输入:s = "()[]{}"输出:true
示例 3:
123输入:s = "(]"输出:false
示例 4:
123输入:s = "([)]"输出:false
示例 5:
12输入:s = "{[]}"输出:true
解法
栈,模式匹配
每次遇到左括号我们就存入栈
遇到右括号就与栈顶元素相互匹配,看是否符合规则
最后查看栈的元素是否为空
12345678910111213141516171819202122232425262728class Solution { public boolean isValid(Stri ...