隐藏页面特效

04 2019 档案

摘要:之前说的都是通过注释的方式配置,接下来说说如何使用配置文件配置AOP 还是原来的代码,去掉所有注释,接下来配置最基本的几个bean。 然后使用<aop:config>标签进行配置,然后配切面<aop:aspect>,用ref指定是哪个bean,用 order指定优先级,然后使用各个通知子标签,进行通 阅读全文 »
posted @ 2019-04-29 16:54 FigSprite 阅读(249) 评论(0) 推荐(0) 编辑
摘要:这部分主要针对众多相同切面表达式进行提取重用,方便编码。 这里用到了@Pointcut(),首先定义一个方法,用于声明切入点表达式,一般这个方法里不再需要填入其他代码。 然后其他通知注释中使用value=""的方式使用这个切点表达式 至于其他类,如果也想使用这个切点表达式,和引用其他函数方法的方法一 阅读全文 »
posted @ 2019-04-29 16:37 FigSprite 阅读(190) 评论(0) 推荐(0) 编辑
摘要:顾名思义,就是切面的优先级,比如当两个切面都是前置通知时,先执行哪一个。 创建一个新类VlidationAspect.java 看看结果: 如果此时我想更改顺序,就需要在类名上使用@Order()注释,括号里的数值越小,优先级越高 看看结果: 阅读全文 »
posted @ 2019-04-29 16:23 FigSprite 阅读(218) 评论(0) 推荐(0) 编辑
摘要:返回通知:是在方法正常结束之后执行的通知,可以访问方法返回值。 使用@AfterReturning注释,我们还可以在注释里面指定一个返回值的名字,然后再方法中使用它。 当方法出异常,就不会有这个通知了 异常通知:是在方法出现异常后执行的通知,可以访问异常对象 使用@AfterThrowing注释,我 阅读全文 »
posted @ 2019-04-28 17:51 FigSprite 阅读(3174) 评论(0) 推荐(0) 编辑
摘要:后置通知指的是,在目标方法执行后(无论是否发生异常),执行的通知 我们使用@After()注释 我们写一个除数为0的操作让它异常,看看情况: 还是把提示语句打印出来了。 注意一点,后置通知还不能读取返回结果,需要在返回通知里才可以得到返回结果。 阅读全文 »
posted @ 2019-04-28 14:24 FigSprite 阅读(358) 评论(0) 推荐(0) 编辑
摘要:我们使用AspectJ对Spring进行AOP操作,有两种方式,注解和XML配置方式,先在pom.xml中声明jar包 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <versi 阅读全文 »
posted @ 2019-04-28 14:07 FigSprite 阅读(1063) 评论(0) 推荐(0) 编辑
摘要:我们先聊聊一个经典面试题:i=i++; 我们知道在虚拟机底层它实际上做了三步: int temp =i; i = i + 1; i = temp; i++实际上的操作分为三个部分:读、改、写 我们看看下面的例子: public class TestAtomicDemo { public static 阅读全文 »
posted @ 2019-04-27 20:41 FigSprite 阅读(171) 评论(0) 推荐(0) 编辑
摘要:先来看一个例子: public class VolatileTest { public static void main(String[] args) { ThreadDemo td = new ThreadDemo(); new Thread(td).start(); while (true) { 阅读全文 »
posted @ 2019-04-27 19:40 FigSprite 阅读(2109) 评论(2) 推荐(0) 编辑
摘要:CPU多级缓存 缓存一致性(MESI) Cache的四种数据状态M(被修改)E(独享)S(共享)I(无效) M:与主存的数据不一致,在将来的某一个时间内需要写进主存,这个动作要在CPU读取内存之前完成,当这个数据放回主存后,就会进入E状态 E:只被自己的CPU访问,当其他CPU访问时,变成S状态,当 阅读全文 »
posted @ 2019-04-27 16:27 FigSprite 阅读(176) 评论(0) 推荐(0) 编辑
摘要:接着我们讲讲关联关系的配置,我们耳熟能详的MVC结构,Controller关联着Service,Service关联着UserRepository,接着上一节的代码,完成上诉功能 在Main方法里,我们希望调用Controller的execute()方法能打印出三条信息,接下来我们直接运行一下 不出所 阅读全文 »
posted @ 2019-04-27 11:16 FigSprite 阅读(232) 评论(0) 推荐(0) 编辑
摘要:之前说的三种配置方式,都是使用XML配置,现在我们说说使用注解配置Bean。 这部分内容主要分为两个部分:使用注解配置Bean,使用注解配置Bean属性。 在classpath中扫描组件 组件扫描:Spring能够从ClassPath下自动扫描,侦测和实例化具有特定注释的组件 特定组件包括: @Co 阅读全文 »
posted @ 2019-04-27 09:56 FigSprite 阅读(532) 评论(0) 推荐(0) 编辑
摘要:这是配置Bean的第三种方式,FactoryBean是Spring为我们提供的,我们先来看看源码: 第一个方法:public abstract T getObject() throws Exception; 返回Bean本身, 第二个方法:public abstract Class<?> getOb 阅读全文 »
posted @ 2019-04-26 20:16 FigSprite 阅读(329) 评论(0) 推荐(0) 编辑
摘要:前面几节,我们配过了好多Bean,通过反射机制,在class属性里填写全类名,现在我们来讲讲其他方式,通过工厂方法,还有通过FactoryBean,这个在我们整合第三方框架时会用到。 工厂方法可以分为静态工厂方法和实例工厂方法。 静态工厂方法 调用静态工厂方法创建Bean是将对象创建的过程封装到静态 阅读全文 »
posted @ 2019-04-26 19:40 FigSprite 阅读(256) 评论(0) 推荐(0) 编辑
摘要:先来看看下面的代码: public class test { public static void main(String[] args) { int i = 1; i = i++; int j = i++; int k = i + ++i * i++; System.out.println(i); 阅读全文 »
posted @ 2019-04-26 18:05 FigSprite 阅读(491) 评论(0) 推荐(0) 编辑
摘要:SpringIOC容器可以管理Bean的生命周期,Spring允许在Bean生命周期的特定点执行定制的任务。 我们先来看看Bean的生命周期: 通过构造器或工厂创建Bean实例 为Bean的属性设置值和其他Bean的引用, 调用Bean的初始化方法 Bean可以使用了 当容器关闭时,调用Bean的销 阅读全文 »
posted @ 2019-04-26 16:19 FigSprite 阅读(236) 评论(0) 推荐(0) 编辑
摘要:Spring表达式语言,简称SpEL,是一个支持运行时查询和操作对象图的强大的表达式语言。语法类似于EL:SpEL使用#{…}作为定界符,所有在大括号中的字符都将被认为是SpEL SpEL为bean属性进行动态赋值提供了便利 通过SpEL可以实现: 通过bean的id对bean进行引用 调用方法及引 阅读全文 »
posted @ 2019-04-26 15:05 FigSprite 阅读(4212) 评论(0) 推荐(0) 编辑
摘要:= =由于很智障的写完忘记发布,还没保存= =,emmmmmm这里就不详细再写一遍了 Maven配置: <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.3 阅读全文 »
posted @ 2019-04-24 16:33 FigSprite 阅读(171) 评论(0) 推荐(0) 编辑
摘要:默认我们bean的作用域是单例,也就是说每次使用同一个id的对象时,操作的都是同一个对象。 scope="singleton" 这是默认情况下的值,因此我们可写可不写,在新的配置文件中新建一个<bean> <bean id="car" class="com.figsprite.bean.autowi 阅读全文 »
posted @ 2019-04-24 15:29 FigSprite 阅读(163) 评论(0) 推荐(0) 编辑
摘要:Bean之间主要有继承和依赖的关系,这里的继承并不是我们面向对象里面所提到的继承。 继承 我们先来创建一个新的配置文件beans-relation.xml <bean id="address" class="com.figsprite.bean.autowire.Address" p:city="福 阅读全文 »
posted @ 2019-04-24 15:05 FigSprite 阅读(267) 评论(0) 推荐(0) 编辑
摘要:再说自动装配之前,我们先聊一聊什么是手动装配。 手动装配就是我们在先前讲的那些,要自己给定属性,然后赋值 Spring IOC容器可以自动装配Bean,需要做的仅仅实在<bean>的autowire属性里指定自动装配的模式 byType(根据类型自动装配):若IOC容器中有多个与目标Bean类型一致 阅读全文 »
posted @ 2019-04-23 21:07 FigSprite 阅读(3977) 评论(0) 推荐(0) 编辑
摘要:又开新坑o(*≧▽≦)ツ讲讲几个Java版本的特性,先开始Java8, HashMap的改进 HashMap采用哈希算法,先使用hashCode()判断哈希值是否相同,如果相同,再使用equals(),如果再相同,则会替换掉原先的值,如不同则形成链表,后来的放前,原先的被挤到后面去,这种情况叫碰撞, 阅读全文 »
posted @ 2019-04-23 20:08 FigSprite 阅读(983) 评论(0) 推荐(0) 编辑
摘要:先说说上一讲的例子,在配置文件中我们value使用的是字符串,如果对应属性是数字类型,Spring可以自动将字符串转成数字类型,这里介绍另外一种使用<value>子节点标签的形式配置。 我们配value的值时如果是基本数据类型或者String都可以采取这两种方法, <bean id="car2" c 阅读全文 »
posted @ 2019-04-23 16:25 FigSprite 阅读(225) 评论(0) 推荐(0) 编辑
摘要:IOC和DI 网上概念很多,感兴趣可以去搜一搜,在这里我就给个比喻: IOC:以前我们买东西都要去商店买,用了IOC之后,我们只要在门口放个箱子, Spring就会给我相应商品,ಠᴗಠ 举个例子 class A{} class B{ private A a; public void setA(A a 阅读全文 »
posted @ 2019-04-23 14:20 FigSprite 阅读(166) 评论(0) 推荐(0) 编辑
摘要:今天开个新坑(づ。◕ᴗ◕。)づ介绍一下Spring框架🍃🍃🍃 最底层核心容器分为四块:Beans,Core,Context,SpEL 具体细节,之后章节再一一讲解 配置Maven 大家创建好项目之后,可以去https://mvnrepository.com/ 找我们需要的jar包,我们需要四个 阅读全文 »
posted @ 2019-04-22 15:53 FigSprite 阅读(624) 评论(0) 推荐(0) 编辑
摘要:Oracle的批量操作 Oracle不支持VALUES(),(),()这种方式,所以不能用上一节所讲的方法。 有时候业务会包含很多次数据库操作,为了减少数据库连接,我们会选择一次提交大量sql, 这时我们会用到begin end,使用begin end需要注意的是,每个sql语句都要确保以";"结尾 阅读全文 »
posted @ 2019-04-22 14:25 FigSprite 阅读(281) 评论(0) 推荐(0) 编辑
摘要:set标签 存放修改方法,我们之前写的更新方法是全字段的更新,或者是指定字段的更新,现在我想实现一个新功能,传入的Employee包含什么字段,数据库就更新相对应的列值: 如果我们啥也不做直接上<if>标签看看会发生什么 <update id="updateEmp"> update tb_emplo 阅读全文 »
posted @ 2019-04-21 20:48 FigSprite 阅读(216) 评论(0) 推荐(0) 编辑
摘要:题目描述:给出m个字符串S1,S2,...,Sm和一个单独的字符串T。请在T中选出尽可能多的子串同时满足: 1)这些子串在T中互不相交。 2)这些子串都是S1,S2,...,Sm中的某个串。 问最多能选出多少个子串。 输入第一行一个数m(1≤m≤10),接下来m行,每行一个串。最后一行输入一个串T。 阅读全文 »
posted @ 2019-04-21 19:22 FigSprite 阅读(674) 评论(0) 推荐(0) 编辑
摘要:If标签 动态SQL可以说是MyBatis最强大之处了,这块的应用主要有四个方面if,choose,trim和foreach,接下来先说说if。 顾名思义,if是用来判断条件的,现在假设我们有个需求,原先我们查询员工是靠id查询的,现在提出新的要求,要求用户输入携带了哪个字段查询条件就带上这个字段的 阅读全文 »
posted @ 2019-04-21 14:21 FigSprite 阅读(263) 评论(0) 推荐(0) 编辑
摘要:之前说了由Employee找Department,这一节讲一讲由Department找Employee,显然前者是多对一的关系,而后者是一对多的关系。 Department的JavaBean: private Integer id;private String departmentName;priv 阅读全文 »
posted @ 2019-04-20 16:35 FigSprite 阅读(149) 评论(0) 推荐(0) 编辑
摘要:返回map <select id="getEmpByResMap" resultType="map"> select * from tb_employee where id = #{id}</select> @Testpublic void test9() throws IOException{ S 阅读全文 »
posted @ 2019-04-20 15:07 FigSprite 阅读(160) 评论(0) 推荐(0) 编辑
摘要:参数获取#{}和${}/select标签详解[返回类型为list] 阅读全文 »
posted @ 2019-04-19 16:49 FigSprite 阅读(696) 评论(0) 推荐(0) 编辑
摘要:首先我们拿出之前的代码,在如图位置打上断点,开始调试 我们规定了一个mapper接口,而调用了mapper接口的getEmpByIdAndLastName,我们并没有实现这个接口,这是因为Mybatis会为这个接口创建一个代理对象,最终都是代理对象去调用实现。 在执行这个方法之前,代码会先来到Map 阅读全文 »
posted @ 2019-04-19 15:35 FigSprite 阅读(561) 评论(0) 推荐(0) 编辑
摘要:参数命名 POJO 如果多个参数,正好是业务逻辑的数据模型,那么我们就可以直接传入POJO,这样#{}中就可以直接使用属性名 Map 如果多个参数不是业务逻辑的数据模型,没有对应的POJO,为了方便,我们可以传入一个map,此时#{key}就是取出map的值 在接口中创建一个新方法: Employe 阅读全文 »
posted @ 2019-04-19 12:27 FigSprite 阅读(1061) 评论(0) 推荐(0) 编辑
摘要:针对Oracle不支持自增的解决方案 Oracle不支持自增,但是它使用序列来模拟自增,每次插入数据的主键是从序列中拿到的值,那么如何获取这个值呢? <insert id="addEmp" databaseId="oracle"> <selectKey keyProperty="id" order= 阅读全文 »
posted @ 2019-04-19 09:28 FigSprite 阅读(203) 评论(0) 推荐(0) 编辑
摘要:增删改 Mybatis为我们提供了<insert>、<update>、<delete>标签来对应增删改操作 在接口中写增删改的抽象方法 void addEmp(Employee e); void updateEmp(Employee e); void deleteEmp(Employee e); 在 阅读全文 »
posted @ 2019-04-18 22:55 FigSprite 阅读(458) 评论(0) 推荐(0) 编辑
摘要:mapper 将sql映射注册到全局配置中,这个我们在上一章已经使用过了, resource 这个属性是用来引用类路径下的sql映射文件 url 这个属性是用来引用网络路径或磁盘路径下的sql映射文件 class 直接引用接口(注册接口),这里需要把接口和映射文件放在同一文件夹下,而且要保证,两者同 阅读全文 »
posted @ 2019-04-18 20:18 FigSprite 阅读(327) 评论(0) 推荐(0) 编辑
摘要:■dtd约束 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> 为了编写简单,在我们写标签时会有代码提示,所以这个约束很 阅读全文 »
posted @ 2019-04-18 18:25 FigSprite 阅读(171) 评论(0) 推荐(0) 编辑
摘要:▲typeHandlers 类型处理器,它架起数据库和JavaBean一一映射的桥梁,这里需要注意一下,java在JDK1.8之前,日期处理函数并不丰富,但在JDK1.8之后引入JSR-310标准,这些处理在mybatis 1版本是没有的,需要自己手动引入= =当然现在也不用担心这个,因为我们不大可 阅读全文 »
posted @ 2019-04-18 17:28 FigSprite 阅读(117) 评论(0) 推荐(0) 编辑
摘要:这一部分我们将从三方面对MyBatis进行一个初步的认识。 MyBatis概述 我们在之前做JSP+Servlet+Dao的Web项目时,使用的是Apache提供的Dbutils对数据库进行各项操作,其主要步骤如下: JDBCàDbutils(QueryRunner)àjdbcTemplet: 缺点 阅读全文 »
posted @ 2019-04-18 16:40 FigSprite 阅读(149) 评论(0) 推荐(0) 编辑
摘要:log4j log4j 1.2.17 阅读全文 »
posted @ 2019-04-17 20:38 FigSprite 阅读(91) 评论(0) 推荐(0) 编辑
摘要:时隔多日,终于找到为什么javap -v .class文件没有LocalVariableTable出现 因为默认的javac编译没有生成相关的调试信息,这里我们可以通过javac -help查看指令帮助 然后我们就按照这个表上的信息,重新编译.java文件就能看到LocalVaribleTable了 阅读全文 »
posted @ 2019-04-17 19:02 FigSprite 阅读(560) 评论(0) 推荐(0) 编辑
摘要:给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 示例 1: 示例 2: 说明: 你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。 你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。 阅读全文 »
posted @ 2019-04-15 11:51 FigSprite 阅读(265) 评论(0) 推荐(0) 编辑
摘要:import java.util.ArrayList; import java.util.Deque; import java.util.LinkedList; class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.v... 阅读全文 »
posted @ 2019-04-11 20:51 FigSprite 阅读(189) 评论(0) 推荐(0) 编辑
摘要:网上一大堆都说,没写@Test,或者是,导包错误,= =然而我并没有发现我有这个毛病 = =最后终于找到罪魁祸首 Junit版本太低!!! Junit版本太低!!! Junit版本太低!!! = =因为是maven项目,所以在pom.xml改一下版本号即可 阅读全文 »
posted @ 2019-04-09 19:49 FigSprite 阅读(327) 评论(0) 推荐(0) 编辑
摘要:import java.util.LinkedList; import java.util.Queue; public class Solution { String Serialize(TreeNode root) { StringBuilder sb = new StringBuilder(); if(root==null) { sb.append(... 阅读全文 »
posted @ 2019-04-09 13:36 FigSprite 阅读(273) 评论(0) 推荐(0) 编辑
摘要:给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。 = =一看就想到中序遍历 阅读全文 »
posted @ 2019-04-08 20:13 FigSprite 阅读(196) 评论(0) 推荐(0) 编辑
摘要:题目: 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度为O(N),且要求不能用非基于比较的排序 阅读全文 »
posted @ 2019-04-08 19:11 FigSprite 阅读(379) 评论(0) 推荐(0) 编辑
摘要:说到树的层次遍历,就应该提到广度优先搜索算法 广度优先搜索算法(Breadth-First-Search),又译作宽度优先搜索,或横向优先搜索,简称BFS,是一种图形搜索算法。 可以说树层次遍历是广度优先遍历的一种直接应用吧,比较广度优先搜索是图形的一种搜索算法,图形是一种比较大的概念,但这个和深度 阅读全文 »
posted @ 2019-04-07 20:26 FigSprite 阅读(7864) 评论(0) 推荐(1) 编辑
摘要:题目: 有一个源源不断地吐出整数的数据流,假设你有足够的空间来保存吐出的数,请设计一个名叫MedianHolder的结构,使其能随时取得之前吐出所有数的中位数 思路: 创建两个堆,一个大根堆,一个小根堆,大根堆放较小的一半数,小根堆放较大的一半数。 步骤: 1.第一个数放大根堆 2.新出现的数cur 阅读全文 »
posted @ 2019-04-07 19:35 FigSprite 阅读(978) 评论(0) 推荐(0) 编辑
摘要:1 、 PreparedStatement 接口继承 Statement , PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于 Statement 对象。 2 、作为 Statement 的子类, PreparedStatement 继承了 Statement 阅读全文 »
posted @ 2019-04-07 18:23 FigSprite 阅读(239) 评论(0) 推荐(0) 编辑
摘要:步骤一:各模块职责 步骤二:实体类设计 接下来创建数据库 接着按照上面的javabean,添加列 在这里,简单介绍一下MYSQL的两个常用引擎的区别: ( • ̀ω•́ )✧ MyISAM只支持表级锁,什么是表级锁呢?比如如果一个线程要更改第二行记录,那么另外一个线程想更改第三行记录,但是因为MyI 阅读全文 »
posted @ 2019-04-07 16:40 FigSprite 阅读(1123) 评论(0) 推荐(0) 编辑
摘要:第一步:搭好环境 我这里使用Eclipse做本次的项目,tomcat、maven啥的怎么弄就跳过了ヾ(o・ω・)ノ 第二步:创建工程 我们首先创建一个maven项目,选择最后一个,创建完之后发现报错,主要是缺少tomcat的jar包,我们右键项目,打开属性面板,添加运行时的jar包 然后略微有点尴尬 阅读全文 »
posted @ 2019-04-07 15:24 FigSprite 阅读(967) 评论(0) 推荐(0) 编辑
摘要:Maven项目报错:Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clea [ERROR] Failed to execute goal org.apache.maven.p 阅读全文 »
posted @ 2019-04-07 11:23 FigSprite 阅读(327) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示