- 博客(27)
- 资源 (2)
- 收藏
- 关注

原创 「深入源码」Spring拦截器的实现原理和执行机制
我一直以为Spring的拦截器是基于AOP原理实现的,仔细阅读完源码,才知道自己的认知是错误的。今天我们就从源码的角度剖析下Spring拦截器。一.创建一个自己的拦截器实现一个自己的拦截器,需要实现HandlerInterceptor接口。接口内的三个核心方法如下:1.preHandle():该方法在业务处理器处理请求之前调用。2.postHandle():这个方法在当前请求进行处理之后,也就是Controller方法调用之后执行,但是它会在DispatcherServlet 进行视图返
2022-03-06 11:10:19
3251
2
原创 序列化
1.什么时候需要进行序列化 1.1需要使用套接字在网络传输的时候 1.2需要进行数据存储的时候 1.3通过RMI传输对象的时候2.如何实现 需要实现Serializable接口,无需实现什么方法...
2019-01-11 15:09:52
190
原创 迭代器模式
一.迭代器模式的作用 用来遍历或者删除容器中元素二.迭代器的特点 迭代器的实现类是容器类的内部类,容器类提供了 public Iterator<E> iterator() { return new Itr(); } 方法供用户获取迭代器 这种模式在实现上主要特点是使用了内部类三.内部类的相关特点 1.每个内部类都能独立的继承一个接口...
2018-12-06 11:16:02
206
原创 python编程练习
1.求101到201之间的素数总数 h=0loop =1total=0for m in range(101,201): print('%-4d' % m) h= int(sqrt(m+1)) for i in range(2,h+1): if m%i==0: loop=0 break if loop==1: total...
2018-12-03 17:14:24
267
转载 java的两种文件拷贝方式
一.基础三种IO方式1.传统IO方式,基于流模型实现,提供了File抽象,输入输出流等,交互方式是同步,阻塞的方式,也就是说在读写动作完成之前,线程一直阻塞在那里。2.NIO 引入了Channel,Selector,Buffer等新的抽象,可以构建多路复用的,同步非阻塞的IO程序3.AIO 异步非阻塞 二.实现1.利用java.io.类库,直接为源文件构建一个Fil...
2018-12-03 16:21:59
277
原创 异构系统间的调用
一.需求背景 算法团队使用python作为开发语言,web系统的开发人员使用java,web系统提供了一些页面操作,用户点击 按钮之后,java调用python脚本进行处理。二.错误的选择 这个项目之前,笔者并没有过java系统调用python的经验,并且项目时间紧张,使用了最直接的调用方式,就是本地环境调用java脚本。代码如下:public stat...
2018-12-03 12:05:06
1159
原创 玩转elastic_search
玩转elastic_search1. 使用elastic_search的初衷 由于数据量挺大(500w以上),使用mysql查询速度有些慢,虽然创建了索引依然有些慢开始研究使用elastic_search。发现上手非常容易,网上资料也挺多资料,一个小的需求研究下两天就搞定了。至于其中的原理让人无限向往。2.搭建es环境 搭建环境超级简单,下载代码打包,下载...
2018-09-27 16:18:26
163
原创 哈夫曼编码(java)
public class BinaryTree implements Comparable{ int key; char data; //左子树 BinaryTree left; //右子树 BinaryTree right; public BinaryTree(){ } public Bina
2014-07-23 09:50:00
586
原创 多源最短路径弗洛伊德算法(java)不含具体路径
package hg;import java.util.Arrays;public class Florid { public int n =5; public static void main(String[] args){ double a[][] = {{0.0,3.0,8.0,Double.MAX_VALUE,-4.0}, {
2014-07-22 09:35:36
826
原创 寻找汉密尔顿回路(java版)
package hg;public class Hanmierdun { //结点的个数 public int n =5; public int b[] = new int[5]; //是否已经经过该结点 public boolean used[] = new boolean[5]; //是否已经全部走过 public bo
2014-07-15 14:36:57
2535
原创 求二进制包含的1的个数(位操作)
public class Qiu { int count(byte a){ int num =0; while(a!=0){ num = num + (a&0x01); System.out.println( num); a=(byte) (a>>1); } return num;
2014-07-02 09:33:44
542
原创 使用概率的思想求圆周率
public class Mengtekaluo { public static void main(String[] args){ Mengtekaluo mengte = new Mengtekaluo(); System.out.println(mengte.pai()); } public doubl
2014-06-25 18:01:06
749
原创 马踏棋盘(有问题的且不成熟的程序)
//将棋盘上的每个位置都走一遍public class Mataqipan { public int zou(int position[][],int m,int n,int count){ position[m][n]=count; System.out.println(count); if(count==64){
2014-06-24 17:37:08
501
原创 使用递归的方法求数组的最小值
public class MixReCursion { public int getMin(int arr[],int pos,int n){ int n1,n2,n3; if(n==1){ return arr[pos]; } else{ if
2014-06-24 09:34:25
1137
原创 四皇后问题的代码实现(java)
package hg;/*** * 求解四皇后问题(回溯法) * @author user * */public class hjk { private int[][] s = new int[4][4]; private int[] arr = new int[4]; public void Queen(int i){ if(
2014-06-20 11:41:22
3071
原创 判断是否是回文数字(java版)
public class Huiwenshuzi { public boolean isHui(int j){ if(reverse(j)==j) { return true; } return false; } public int reverse(int j){
2014-06-20 11:22:37
869
原创 ExtJs
整了一天的extjs框架,老是报错这样一个错误events 找不到或者不是一个对象这个错误,在IE6,8经常见到。加上这个就好了if(Ext.isIE){ Ext.enableGarbageCollector=false; }
2014-03-18 18:38:05
447
原创 工厂方法模式和抽象工厂模式的区别
如果产品单一,最合适用工厂模式。 但是如果有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。再通俗深化理解下:工厂模式针对的是一个产品等级结构 ,抽象工厂模式针对的是面向多个产品等级结构的。
2014-03-11 22:25:50
481
原创 面试回顾
1.事物死锁以及解除死锁的方法事物1锁定了数据库对象a,需要使用对象b;事物2锁定了数据库对象b,需要使用a,两不相让就出现了死锁一、预防死锁预防死锁的方法有以下几种:1.一次锁定法该方法要求每个事务一次就将要操作的数据库对象全部锁定,否则就不继续执行。在前面的例子中如果事务T1一次就将数据库对象A1和A2全部锁定,事务T1就会执行下去。事务T2开始是等待的,在事务T1执行
2014-03-09 09:25:22
710
原创 BigInteger转化为Long
今天出的Bug在以往调试这个部分时并没有出现数据库id为bigint类型的,取出之后转化为Long型报错id并是很大5000多原因不明,但问题已经解决了解决的方式为BigInteger a = BigInteger(map.get("id").toString);Long value = a.getLongValue;
2014-03-04 22:44:47
5070
原创 方法和成员变量在内存中的位置
一:在方法中声明的变,即该变量是局部变量,每当程序调用方法时,系统都会为该方法建立一个方法栈,其所在方法中声明的变量就放在方法栈中,当方法结束系统会释放方法栈,其对应在该方法中声明的变量随着栈的销毁而结束,这就局部变量只能在方法中有效的原因在方法中生明的变量可以是基本类型的变量,也可以是引用类型的变量,(1)当声明是基本类型的变量的时,其变量名及值(变量名及值是两个概念)是放在方法栈中(2)当声明
2014-03-04 22:37:50
3476
原创 多线程同步的前提
多线程同步的前提是多个线程使用同一个锁:主类public class Main { public static void main(String args[]){ TreadAdd t = new TreadAdd(); Thread a = new Thread(t); Thread b = new Thread(t); Thread c = ne
2014-03-04 22:26:45
554
原创 多线程同步调试1
主类public class Main { public static void main(String args[]){ Thread a = new Thread(new TreadAdd()); Thread b = new Thread(new TreadAdd()); Thread c = new Thread(new TreadAdd());
2014-03-04 21:59:16
597
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人