自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 Spring AOP拦截器调用的实现

摘要前文Spring AOP概述中提到spring AOP 通过ProxyFactroyBean的getObject为入口实现了通知器链的初始化和代理获得了代理对象。本文简介通过分析jdk动态代理来看拦截器是怎么发挥作用的 关键代码入口Proxy.newProxyInstance(classLoader, proxiedInterfaces, this)回顾下jdk动态代理的实现,可以发现第三个参

2018-04-09 21:38:50 337

原创 Spring AOP 概述

摘要AOP(Aspect Oriented Programming),面向切面变成,如果说OOP面向对象是定义了程序了纵向的功能实现,那么AOP则是对OOP做了补充和完善,将公共行为的代码(横切关注点)横切织入到核心关注点中,从而降低重复代码,降低模块的耦合度。本文概述本博客将纵观aop,对常用到的名词做出解释及工作原理中获取代理对象做介绍。名词介绍一:Advice通知 拦截到方法后围绕方法调用而

2018-04-07 19:59:28 181

原创 spring IOC 依赖注入 下

摘要上一篇博客 spring IOC 依赖注入,看到了整个实例化Bean的过程,通过反射或者cglib增强实例化Bean。但此时对bean之间的依赖关系,属性的处理还未发生。这些将在populateBean中实现。本文概述依赖关系处理处理的依据是BeanDefinition正文 protected void populateBean(String beanName...

2018-04-06 18:03:48 198

原创 spring IOC 依赖注入 上

摘要上一篇博客IOC的BeanDefinition的注册,从BeanDefinitionHolder获得beanName和BeanDefinition存放在map中。此时还未进行依赖关系的注入。 本文概述依赖注入的发生通常在用户第一次向spring容器索取Bean时,即getBean()发生的时候。当然也有例外,我们可以设置lazy-init属性来使依赖注入发生的时间提前。本文将着...

2018-04-06 12:39:54 241

原创 spring IOC 的BeanDefinition的注册

摘要:上一篇博客IOC的载入与解析将xml文件通过io流加载成Document对象,再解析成BeanDefinition存放在BeanDefinitionHolder中。此时还不能在IOC中使用,需要IOC容器对Beandefinition数据进行注册。本文简介注册的过程就是把Beandefinition对象作为value,将beanName名或者别名作为key准出在map的过程。...

2018-03-30 08:36:07 144

原创 spring IOC 的载入解析

摘要:上一篇博客 spring IOC 的资源定位 对Resource的资源定位,这篇博客解释下对spring IOC的载入解析,其实就是把BeanDefinition在ioc容器中转化成spring内部定义的数据结构的过程。在上一篇博客,就存在部分载入的过程前文回顾:protected void loadBeanDefinitions(DefaultListableBeanFactory bean

2018-03-29 20:44:00 308

原创 Spring IOC 的资源定位

摘要:上一篇博客对spring ioc做了大致概述,大方向上了解了spring ioc的原理,清晰了ioc的设计思路,这篇博客的定位主要是了解ioc如何进行资源定位的加载。前文回顾:实现了refresh()方法,这个方法非常重要,是ioc的初始化方法,其包含了,获得BeanDefinition的Resource定位,载入和注册。接下来来分析refresh()方法,并重点了解BeanDe...

2018-03-26 22:27:07 351

原创 spring IOC

前言:离开许久,决心重新拾起博客,用了spring许久,从最开始的会用,到了解原理及看源码,对spring有了一些理解,总结一番,写博客之前翻看了百度上其他人对spring的理解,发现了解spring的大有人在,那么为什么还要写文章呢?一来对自己阶段性的学习总结,二来,当时间过去,回首这篇博客时应该会感觉到新的理解吧!一、对ioc下个定义 spring核心由IOC和AOP组成,其AO...

2018-03-25 17:12:14 258 2

原创 JDK动态代理

JDK动态代理动态代理分为jdk的动态代理和cglib动态代理。所谓AOP的拦截功能就是动态代理实现的。即在目标类的基础上增加业务逻辑,生成新的目标类。这里介绍jdk的动态代理1.首先目标类要有一个接口,生成的增强类也实现这个接口,是目标类的兄弟类。2.需要一个实现InvocationHandler接口的类,来告诉通知方法需要加在目标方法的什么地方。3.最后使用Proxy生成实

2018-01-03 21:06:55 113

原创 设计模式-观察者模式

设计模式一、简述观察者模式又叫发布订阅模式,即通过订阅的方式告诉被观察者,当你状态改变时通知我(观察者)。二、实现被观察者的父类:Subject.javapublic class Subject{private List observers = new ArrayList();public void attach(Observer observer){

2018-01-02 22:35:35 164

原创 java爬虫

一.什么是爬虫:用程序代替手动输入url,获取信息,进行数据分析的过程。二.爬虫步骤1.httpClient获取html的字符串和jsoup解析1.1. 使用httpClient获取html字符串的流程创建HttpClient对象。创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。

2017-12-25 20:56:00 201

原创 集合框架的线程安全问题

在常用到的集合框架的实现类中,ArrayList、LinkedList、HashMap都是线程不安全的。在有多个线程访问并修改他们的时候就会出现线程安全问题。解决办法:Collections类提供了多个方法将他们包装为线程安全的集合,通过api可以得到static ListsynchronizedList(List li

2017-08-17 15:52:22 477

原创 spring的配置

一、导入相关jar包二、IoC控制反转   2.1、在applicationContext.xml中   2.2、ApplicationContext context = new ClassPathXmlApplicationContext("包名+applicationContext.xml");A a = (A)context.getBean("A");   //这就得到了

2017-07-18 19:20:32 159

原创 Hibernate的配置及保存操作

Hibernate的配置及保存操作一、导入jar包二、在实体类包中新建实体类和数据库表关联的映射文件xxx.hbm.xml  其中xxx和实体类的类名一致                         三、新建hibernate.xml文件,并指定实体类和数据库的映射文件      "-//Hibernate/Hi

2017-07-18 18:43:21 196

原创 git的简单操作

一、将项目上传到码云中1、在码云中创建项目2、在本地操作:cd       //本地文件的地址的\要用\\或者/git init                    //初始化git remote add origin    //远程的地址为码云克隆按钮的https或者ssh的地址git pull origin master   //下载git add . gi

2017-07-18 17:00:14 222

原创 struts配置

1、导入包2、通过表单或ajax方式提交请求到action文件的对应方法中:   2.1 、struts和ajax结合的提交方式请查看我之前的博客:http://blog.csdn.net/without_realization/article/details/75208080   2.2 、通过表单方式:在jsp页面中:3、在action的方法中返回特定的字符串,通过stru

2017-07-18 16:44:45 287

原创 struts文件的上传与下载

一、struts文件的上传1.在表单中添加属性2.在实体类中定义用于文件上传的属性并生成get、set方法:private String path; //存到数据库的文件路径名private String fileName;//存到数据库的文件名private File upload;   //临时文件private String uploadContextType; //

2017-07-16 17:03:43 201

原创 Ajax在struts2环境下的使用

1、导入json-lib-2.1.jar、struts2-json-plugin-2.1.8.1.jar、 struts2-junit-plugin-2.1.8.1.jar包和struts-plugin.xml配置2、在js文件下使用$post或$ajax中设置要提交的url:如userJSONAction_checkUsername.do。3、struts.xml配置

2017-07-16 16:59:31 250

原创 struts2-令牌拦截器防止表单重复提交

1、在表单中增加隐藏域:2、在struts.xml中增加结果集:/user/error.jsp3、在error.jsp中增加错误提示: 4、由于默认的拦截器中没有令牌拦截器,需要手动增加add并将新定义的拦截器设置为默认的拦截器:由于错误提示是英文版,用加载资源文件的方式将之替换成中文5、在src下定义token.property

2017-06-23 16:44:56 254

原创 设计模式-单例模式

单例模式,只提供一个实例,不能通过构造方法创建对象。1、懒汉模式public class TestDemo{privata static TestDemo test;/**将构造方法私有化,外部不能通过其创建对象*/private TestDemo(){}/**用static修饰可以通过类名直接调用*/public static TestDemo

2017-06-23 16:13:54 156

原创 struts2的值栈存入和获取

一、获得值栈的方式:1.ServletActionContext.getContext().getValueStack();2.ActionContext.getContext().getValueStack();二、值栈的使用1. set键值对存入:ServletActionContext.getContext().getValueStack().set("c",

2017-06-21 16:45:02 434

原创 安卓跳转与参数传递

1.     //跳转传递数据   Intent intent = new Intent();   intent.setClass(this, GoActivity.class);   intent.putExtra("string", "hello");   this.startActivity(intent);   //接收数据   Intent intent =

2017-04-16 12:06:49 338

原创 链表列表

一、链表列表在存储方式上和数组列表的不同  链表列表的存储空间不连续。更有效利用了碎片化的存储空间。  二、什么是链表列表  链表列表由节点组成,每个节点上有存储的数据和下一个节点的地址,最后一个节点的指向下一个节点为null三、定义链表列表  1.定义一个节点类,有数据和下一个节点两个属性public class Node {private E data;

2017-04-12 11:18:41 3214

原创 安卓存储本地文件

一、SharedPreferences:通过本方式存储的文件会保存在文件管理器data/data/包名/shared_prefs下的xml文件中存入数据SharedPreferences sp = getSharedPreferences("user",Context.MODE_PRIVATE);Editor editor=sp.edit();           //用editor让

2017-04-12 10:38:02 497

原创 安卓传感器-重力传感器

1、SensorManager mSensorManager = (SensorManager)this.getSystemService(Context.SENSOR_SERVICE);   //获取传感器管理对象    2、Sensor mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);   //获得传

2017-04-08 11:33:01 477

原创 Handler、SurfaceHolder

一、何时需要使用安卓线程Handler、SurfaceHolder在安卓中主界面activity就是一个线程,在使用线程的图像需要改变主线程界面时,需要通过Handler或SurfaceHolder传递改变的图像二、Handler的使用1.定义MyHandler继承Handler类,并且重写handleMessage(Message msg)方法。在方法体内对改变的图像进行操作

2017-04-08 11:12:08 426

原创 安卓对音频视频、gif的处理

一、如何在安卓中加入横屏1、在res文件夹下新建名为:layout-land 的文件夹,其中存放需要横屏显示的布局文件。2、在AndroidManifest.xml文件中对应的中添加 android:screenOrientation="sensor"语句。二、如何在安卓中加入音乐在res文件夹下新建名为:raw 的文件夹,其中存放音频与视频文件。1、加入音效:So

2017-04-08 11:09:50 295

原创 笔记

温故而知新一. 基础标识符:以字母下划线美元符开头关键字:数据类型:基本数据类型、引用数据类型    基本数据类型:数值类型(整型、浮点型)、字符类型、布尔类型    引用数据类型:类、接口、数组输出控制符:%d(整型)、%f(浮点型)、%c(字符型)、%s(字符串)、%x(long int)数据类型转换:低精度可以转为高精度。高精度转为低精度需要强制类型转

2017-04-02 22:42:54 154

原创 io流基础认知

一、流是什么:    流:程序与设备数据传输的管道二、流的分类:      1、   分类:四大基本抽象流、文件流、缓冲流、转换流、数据流、print流、object流         四大基本抽象流:         字节流              字符流                 输入流         InputStream           Rea

2017-03-20 16:08:07 224

原创 线程游戏-飞机大战

线程游戏-飞机大战1.运用ArrayList或者数组存放对象,在此用到了ArrayList存放对象。开辟新线程用于定时生成新的对象存放在ArrayList中,在主线程中循环取出ArrayList中的元素,达到并发效果    private ArrayList mybulletlist = new ArrayList();            用于存放我方飞机的子弹private Ar

2017-03-09 11:09:44 476

原创 浅触数组列表

一、数组列表相对于数组而言具有以下特点:  1.大小不固定,数组列表长度可以根据元素的个数动态变化,节约存储空间。  2.存储类型可以不同,使用更灵活。  3.可以定义多种方法,如添加元素、 删除元素、获取元素、获取大小、插入元素、修改元素、是否包含某个元素、列表合并。二、泛型:定义数组列表,对于某个数据类型不确定,可以用泛型表示,等到创建对象的时候确定具体的对象。 

2017-03-07 19:05:00 248

原创 关于构造函数传递参数的理解

一、什么是构造方法?    构造方法是一个方法名和类名一致、没有返回值的方法。一个类中没有写构造方法,其默认为无参数的构造方法。在创建类对象后,自动调用该方法。如果一个类写了有参数的构造方法,默认无参数的构造方法将不存在,一个类可以有多个构造方法,但是创建对象只能使用一个构造方法,具体看创建对象的参数而定。创建对象时,自动调用一个构造方法,因此可以将常用的属性放入构造方法中定义。

2017-03-02 11:18:34 10314

转载 线程

线程:CPU的基本使用单位,在java中main方法称为主线程,在没有创建多线程之前程序只有一个main方法启动,称为单线程。        在单个程序中同时运行朵儿线程完成不同的工作,称为多线程,系统给不同线程执行的时间是有限cpu时间,称为时间片轮转,由于cpu时间片运转速度快,所以感觉多个线程是同时执行的。         创建现成的两种方式:               

2017-03-02 11:13:36 170

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除