- 博客(41)
- 资源 (3)
- 收藏
- 关注
原创 SpringMVC组件
DisPatcherServlet 前端控制器 相当于MVC中的C(Controller),dispatcherservlet是整个流程的控制中心,由它调用其他组件处理用户请求。 HandlerMapping 处理器映射器 HandlerMapping负责根据用户请求url找到Handler处理器,springmvc提供了不同的映射器实现不同的映射方式,HandlerMapping会把...
2019-01-31 14:02:31 119
原创 快速排序及改进
import java.util.Arrays; public class QuickSort { /** *partition的处理 * 当前数<p 当前数和小于区的后一个数交换 <区向右扩 当前数跳下一个 * * 当前数>p 当前数和大于区的前一个数交换 >大于区左扩 当期当前数不变 ...
2019-01-19 20:10:13 129
原创 spring 事务的传播行为
什么是传播行为? 在一个业务方法中,调用另一个业务方法 例如:方法B中调用了方法A Spring中提供了7种事务的传播行为 保证多个操作在同一个事务中 PROPAGATION_REQUIRED (常用) 默认值,如果A中有事务,则使用A中的事务,如果A没有,创建一个,将操作包含进来 PROPAGATION_SUPPORTS 支持事务,如果A中有事务,则使用A中的事务,...
2019-01-18 19:34:33 98
原创 spring AOP注解开发
第一步:在配置文件中开启AOP注解 <!--配置开启aop注解--> <aop:aspectj-autoproxy/> 第二步,在切面类上配置切面标签, 并在切面类中的方法上贴上通知标签 注解AOP通知类型 (1)@Before 前置通知 @Before(value = "execution(* com.itlike.demo...
2019-01-18 15:55:46 134
原创 spring AOP通知类型 及 切入点表达式
通知类型 前置通知 在目标方法执行之前进行操作 实现类: public class GoodsDaoImpl implements GoodsDao { @Override public void save() { System.out.println("保存操作"); } @Override public void updat...
2019-01-18 15:12:08 319
原创 spring AOP
AOP采用横向抽取机制代替了传统的纵向继承 可以在不破坏原有类的基础上,生成一个代理类,在原来的类上进行增强 可以随时添加和取消功能 JDK动态代理原理(必须得要有接口) 接口: public interface GoodsDao { public void save(); public void update(); } 实现类: public cl...
2019-01-18 12:15:42 95
原创 spring IOC注解开发
1.引入aop包 2.xml文件中引入约束: http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd" 3.要在配置文件中配置包扫描 <context:component-scan base-package="xxx...
2019-01-17 19:28:00 117
原创 spring属性注入
set方法属性注入 给类中的属性提供set方法 实体类: 提供set方法 public class Student { public String name; public Integer age; public void setName(String name) { this.name = name; } public void...
2019-01-17 17:28:28 244
原创 spring Bean相关配置及对象的生命周期
名称与表示: id 使用了约束中的唯一约束,里面不能出现特殊字符 name 没有使用唯一约束,可以出现特殊字符(一般不使用) 设置对象生命周期的方法: init-method Bean被初始化时执行的方法 即加载配置文件时创建管理的所有的对象并调用所有的init方法(以前的版本是在调用getBean()时,对象才会被创建) destroy-met...
2019-01-17 16:24:24 233 1
原创 并发编程(2)
volatile关键字 作用: private volatile int a =0; 强制线程到共享内存中读取数据,而不是从线程工作中读取,从而使变量在多个线程间可见。 volatile无法保证原子性,volatile是轻量级的同步,性能比Synchronized强很多,但是只是保证了性能的可见性,并不能替代Synchronized的同步功能。 volatile和static的区别 ...
2019-01-17 14:49:50 79
原创 并发编程(1)
当若干个线程共享主存区的资源时,将主存区的资源复制到自己的线程中使用,使用完毕后放回主内存,这时会产生线程安全问题。 如果是各个线程用自己的资源,则不会。 JVM内存模型:可见性,原子性。 1.线程安全额概念:当多个线程访问某一个类、对象或方法时,这个类、对象或方法都能表现出与单线程执行时一致的行为,那么就是线程安全的。 2.线程安全问题都是由全局变量及静态变量引起的。 3....
2019-01-17 14:20:02 99
原创 Java 剑指offer 面试题10:斐波那契数列
求斐波那契数列的第n项 递归: 递归法实现起来简单,但是因为会计算重复的节点,这就意味着计算量会随着n的增大急剧增大。当计算n=50,第50项的时候已经相当耗时 非递归: 可以采用循环,先得到f(0) f(1) 相加得到f(2) 再相加得到f(3) 再得到f(4) 依次得到f(n) //写一个函数,输入n,求斐波那契数列的第n项 public class Fibon...
2019-01-16 12:08:38 221
原创 MyBatis 输出类型
MyBatis的输出类型类型有三种 ,分别是:输出简单类型、Map、resultMap 输出简单类型: 相应的Mapper接口 public Integer getAccountCustomer(); 对应的xml中的SQL: <select id="getAccountCustomer" resultType="Integer"> select...
2019-01-14 11:28:09 496
原创 MyBatis 核心配置文件及属性
properties: 定义并读取属性文件 <properties resource="db.properties"/> settings: 这是MyBatis中极为重要的调整设置,它会改变MyBatis的运行行为 <!--配置sql打印--> <settings> <setting name="logImpl" ...
2019-01-09 17:35:55 572
原创 MyBatis Mapper动态代理规则及动态代理的调用
1.对应的书写SQL语句的xml文件中的nameapsce必须为接口的全路径 2.接口中的方法名称必须和xml中对应的ID相同 3.xml中的parameterType必须和接口中的参数类型一致 当传递多个参数时parameterType可以省略不写 4.xml中的ResultType必须和接口中的返回值类型一致 例如:对于一个客户表 实现其CRUD 其Custom...
2019-01-09 15:45:44 452
原创 MyBatis 获取最后插入的ID
需求:当向表中插入一条数据后,获得该条数据的id keyColmun 要获取哪一列的数据(哪一列的数据是id) keyProperty 要把该属性(id)赋值给哪个字段 resultType 返回类型 order 是在插入前获得还是插入后获得 <insert id="insertCustomer" parameterType="com.bullet.domain...
2019-01-09 14:40:47 2580
原创 MyBatis #{} ${}
#{} 表示一个占位符号 自动进行java类型和jdbc类型转换 可以有效防止SQL注入 可以接受简单类型或者pojo属性值 如果parameterType传输单个数据类型,#{}括号中可以是value或其他名称 SELECT * FROM `customer` where cust_name like '%#{value}%'; SELECT * FROM `custom...
2019-01-09 11:28:50 1381
原创 MyBatis 配置文件及创建session工厂
1.数据库的配置文件 全局配置文件 SqlMappingConfig.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org...
2019-01-09 10:38:05 1164
原创 Hibernate查询方式 QBC
QBC普遍使用于条件查询 是一种更加面向对象的查询方式 基本使用 public void test1(){ Session session = HibernateUtil.openSession(); Criteria criteria = session.createCriteria(User.class); //添加排序 ...
2019-01-08 17:51:51 118
原创 MySQL 多对多条件查询
两个表 user和role 中间表是user_role 查询用户和角色的对应关系 select res.user_name,r.role_name from(select u.user_name,ur.role_id from user as u INNER JOIN user_role as ur where u.user_id=ur.user_id) as res INNE...
2019-01-08 17:13:19 5723
原创 Hibernate 查询方式 OID 对象导航查询 HQL
OID查询 OID查询是根据对象的OID主键进行查询 OID的查询方式分为两种:get和load get:(1)当get()方法被调用时,会立即发出SQL语句 (2)返回的对象是实际对象 (3)使用get()和普通的单条查询差别不大 (4)当查询不到时返回的是null load:(1)当load()被调用时,返回的是目标对象的代理...
2019-01-08 17:09:29 210
原创 Hibernate多对多关系配置
需求:一个用户可以有多个角色,一个角色也可以被多个用户选择 POJO: public class User { private Long user_id; private String user_code; private String user_name; private String user_password; private String us...
2019-01-08 15:36:11 233
原创 Hibernate 一对多关系配置、增删改查、级联操作等
需求:有两个表,分别是客户表和联系人表,一个客户有多个联系人,一个联系人只有一个客户 两个POJO类 public class Customer { private Long cust_id; private String cust_name; private String cust_source; private String cust_industry; ...
2019-01-07 21:32:44 207
原创 数据库 事务管理
事务:逻辑上的一组操作,要么全部成功,要么全部失败。 事务的特性: 1.原子性:事务不能分离 2.隔离性:执行一个事务的时候,不能受到其他事务的干扰 3.持久性:事务完成后,事务便持久到数据库当中 4.一致性:事务执行前后,数据的完整性要保持一致 如果不考虑隔离性,会引发安全问题 读问题: (1)脏读:一个事务读到另一个事务未提交的数据 (2)不可重复读:一个事务读到另一个...
2019-01-07 16:18:14 142
原创 配置Hibernate常见问题及解决
在引入第三方连接池时,报错:连接数据库出现java.sql.SQLException: Unknown system variable 'tx_isolation' 原因:mysql-connector-java版本过低,换用高版本即可 在引入第三方连接池时,报错:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrec 原因:数据库时区设置...
2019-01-07 15:14:14 216
原创 Hibernate 常用API
hibernate保存操作 记得开启事务 public void test1(){ Session session = HibernateUtil.openSession(); //获取session Transaction transaction = session.beginTransaction(); Customer ...
2019-01-07 15:07:59 168
原创 Hibernate基础配置
在使用Hibernate框架进行基础的配置 1.导入jar包 2.引入配置文件Hibernate.cfg.xml 该配置文件配置了连接数据库的基本配置 可选配置: hibernate.hbm2ddl.auto none:不使用hibernate自动建表 create:如果数据库中已有表,删除原表,重新创建,如果没有表,创建新表 create-drop 如果已经有表,删除原表,执...
2019-01-07 11:33:16 215
原创 Java 剑指offer 面试题9:两个栈实现队列
题目:用两个栈实现一个队列,请实现它的两个函数appendTail和DeleteHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。 思路:两个栈,记为stack1和stack2,把元素入栈到stack1,再出栈压入到stack2,这样stacks中的元素由栈顶到栈底的顺序就和队列相同了,然后stack2依次出栈,相当于DeleteHead,那该如何实现appendTail,就是想s...
2019-01-06 21:44:33 647
原创 Java 剑指offer 面试题7:重建二叉树
给出二叉树的中序和前序遍历,重建该二叉树,或者给出中序和后序遍历,重建二叉树。 思路: 对于无论是前序+中序重建二叉树,还是后序+中序 中序都是来提供左右子树的划分,而前序和后序是来判断根节点 先定义树的结构体 public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode...
2019-01-06 19:57:49 1165
原创 二叉树的构建及递归遍历
定义结构体 public class Node { int value; Node left; Node right; public Node(int value, Node left, Node right) { this.value = value; this.left = left; this.right ...
2019-01-06 18:50:47 228 2
原创 Java 剑指offer 面试题6:从尾到头打印链表
定义链表 class ListNode{ //定义节点 int data; ListNode next; } 将链表先入栈,再出栈 import java.util.Stack; public class demo { public void printReverse(ListNode listNode) { Stack<ListNode...
2019-01-03 10:48:00 123
原创 Java 剑指offer 面试题5:替换空格
题目:实现一个函数,把字符串中的每个空格替换成”%20“ public class demo { public String replace(String str){ if (str == null){ return null; } StringBuffer stringBuffer = new StringBu...
2019-01-02 20:54:16 106
原创 Java 剑指offer 面试题4:二维数组中的查找
题目:在一个二维数组中,每一行都是从左往右依次增大,每一列都是从上往下依次增大,请完成一个函数,输入二维数组和整数,判断该数组是包含该整数 分析: 可以从坐下角查起,记需要查找的数字为M,若左下角的数字等于M,则查到。若左下角的数字小于M,则删除所在行,如果左下角的数字大于M,则删除所在列。同理,也可以从右上角查起 public class Demo1 { public bo...
2019-01-02 20:23:58 122
原创 SpringMVC 拦截器
springmvc的拦截器是对对应的请求进行拦截 拦截器必须实现一个 HandlerInterceptor接口 public class MyInterceptor implements HandlerInterceptor { @Override //当处理器执行方法之前调用 public boolean preHandle(HttpServletRequest r...
2019-01-02 17:08:54 75
原创 SpringMVC 上传文件
在SpringMVC中,为文件上传提供了直接的支持,是通过接口MultipartResolver提供的 springmvc默认是没有配置MultipartResolver的 因此需要手动下载相关jar包,自己到配置文件中进行相关配置 文件上传 上传文件的form表单 <form action="${pageContext.request.contextPath}/upload"...
2019-01-02 15:45:09 96
原创 SpringMVC 文件下载
需求:对download文件夹下的文件下载 两个下载链接: <a href="${pageContext.request.contextPath}/download/logo.png">下载logo.png</a> <a href="${pageContext.request.contextPath}/download/框架.jpg">下载框架.jp...
2019-01-02 15:10:13 109
原创 SpringMVC 视图解析器及配置
视图解析器 在springmvc中,请求处理执行完成后,最终返回一个ModelAndView对象,即使返回的是Model或者String等类型的处理方法,springm内部也会将他们装配成一个ModelAndView对象,springmvc借助视图解析器(ViewReslover),得到最终的视图对象 视图 视图的作用是渲染模型数据,将模型里的数据以某种形式呈现 视图对象有视图解析器实例化...
2019-01-02 12:10:43 1386
原创 SpringMVC @ResponseBody与@RequestBody 及表单序列化
ResponseBody 当前端使用Ajax发送请求时,服务器要将数据以JSON的格式响应给浏览器 第一步:添加相关jar包 第二步:在spring的配置文件中写上<mvc:annotation-driven/> 第三步:映射方法的返回值为@ResponseBody 发送Ajax请求 <%@ page contentType="text/html;charset=U...
2019-01-02 11:29:35 1347
原创 SpringMVC 静态资源访问
首先要谈在使用web层框架时,都会配置一个拦截器,而拦截器的url-pattern有以下几种: 1. /* 拦截所有 jsp js png 全拦截 不建议使用 2. *.action *.do 拦截以 .action 或者以 .do 结尾的请求 3. / 拦截所有,不包含jsp 包含js png css 建议使用 因此,一般情况下都会使用...
2019-01-01 17:17:57 99
原创 SpringMVC form标签、服务器表单验证、错误信息回显
form标签 应用场景:方便服务器数据在form表单上的展示 使用方式:1.引入标签库 2.创建表单 例如:创建两个实体类 @Setter@Getter@ToString public class User { private String username; private Integer age; private Integer gender; ...
2019-01-01 16:10:57 1498 3
springmvc服务器表单校验所需jar包
2019-01-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人