- 博客(42)
- 收藏
- 关注
原创 Spring Cache源码分析
一、Cache介绍Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。它只是对缓存使用的抽象,通过它我们可以在不侵入业务代码的基础上让现有代码即刻支持缓存,具体的实现还要看去结合什么缓存,比如用redis来作缓存。CacheManager是Spring定义的一个用来管理Cache的接口。Spring自身已经为我们提供了两种CacheManager的实...
2020-03-11 00:52:31 462
原创 Mybatis源码分析(二)
3、解析注解的sql前面我们描述的是XML的形式,这次我们来看注解的形式,跟前面一样先会去解析mybatis的配置文件,然后再解析mapper文件。我们这里采用的是注解形式也就不在看mapper文件的解析。前面解析也讲述过解析mybatis的配置文件这里不在重复,直接跳转到解析sql语句这里private void mapperElement(XNode parent) throws E...
2020-03-06 17:09:39 264
原创 Mybatis源码分析(一)
1、Mybatis简介在JDBC底层没有用连接池、操作数据库需要频繁的创建和关联链接。消耗很大的资源;写原生的JDBC代码在java中,一旦我们要修改sql的话,java需要整体编译,不利于系统维护;返回result结果集也需要硬编码。所以就出现了,一些优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。而Mybatis就是这样的框架,避免了几乎所有的JDBC代码和手动设置参数以...
2020-03-06 14:29:58 305
原创 Spring源码分析---springMVC
六、SpringMVC源码分析1、DispatchServlet前端控制器,请求处理逻辑的实现2、HandlerMapping处理器映射,为mvc中url路径与Controller对象的映射,DispatcherServlet就是基于此组件来寻找对应的Control。 目前主流的三种mapping: ...
2020-03-05 20:44:48 208
原创 Spring源码分析--AOP
与OOP对比,AOP是处理一些横切性问题,这些横切性问题不会影响到主逻辑实现的,但是会散落到代 码的各个部分,难以维护。AOP就是把这些问题和主业务逻辑分开,达到与主业务逻辑解耦的目的。一般用于日志记录、权限验证、效率检查、事务管理。五、AOP实现实现AOP方式有两种,Aspectj和spring aop。我们这里主要了解spring aop,而spring aop的实现也有两种,借鉴a...
2020-03-05 16:53:22 171
原创 Spring源码分析--注解方式启动容器
四、注解方式前面我们了解了通过XML方式启动容器,这次我们看看注解是怎么启动容器的。ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);HelloService helloService = (HelloService) beanFactory.g...
2020-03-05 12:36:07 480
原创 Spring源码分析--Bean的实例化
三、Bean实例化public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // Prepare this context for refreshing. prepareRefresh(); // ...
2020-03-04 18:49:01 566
原创 Spring源码分析--Bean的注册
Spring中共有两种bean,一种为普通bean,另一种则为工厂bean:BeanFactory 用于管理Bean的一个工厂,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的FactoryBean 是一个能生产或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似,省去xml配置工厂模式出现的。通过FactoryBean创建一个代理类来增强目...
2020-03-04 17:32:14 203
原创 Spring源码分析--容器初始化
Spring框架是一个开源的容器性质的轻量级框架。主要有三大特点:容器、IOC(控制反转)、AOP(面向切面编程)。一、容器的创建Spring工厂容器有BeanFactory和ApplicationContext,BeanFactory接口是Spring框架的顶层接口,ApplicationContext是对BeanFactory扩展,BeanFactory在第一次getBean时才会初始...
2020-03-04 16:15:45 203
原创 1024程序猿节
2010年10月12日,我们“擅自”定下了一个节日——把每年的10月24日定为程序员节(详见程序员节,10月24日)今年是第九个程序猿节!祝大家节日快乐!码到成功!...
2019-10-24 19:18:17 165
原创 设计模式(四)
行为型模式用于描述类或对象怎样交互以及怎样分配职责,主要特点就是处理的是对象之间的通信方式,控制类与类之间的通讯与相互控制,解决类之间的复杂的交互项操作。1、责任链模式避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。一个请求沿着一条链在传递,这条链就称为职责链,职责链可以是一条直线、一个环或者一个树形结...
2019-08-05 18:37:35 352
原创 设计模式(三)
结构型模式用于描述如何实现类或对象的组合,主要特点是结构的壮大,将类或对象按某种布局组成更大的结构。1、适配器模式将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作。适配器模式可分为对象适配器和类适配器两种,在对象适配器模式中,适配器与适配者之间是关联关系;在类适配器模式中,适配器与适配者之间是继承。对象适配器的使用频率更高,因为适配器类还需要对目标类进行实现接口或...
2019-08-04 15:24:11 137
原创 设计模式(二)
创建性模式用于描述如何创建对象,主要特点将对象的创建与使用分离。创建对象时,不再由我们直接实例化对象,而是根据特定的场景,由程序来确定创建对象的方式,从而保证更大的性能,更好的架构优势。与一个对象相关的职责通常有三类:对象本身所具有的职责、创建对象的职责和使用对象的职责。两个类A和B之间的关系应该仅仅是A创建B或是A使用B,而不能两种关系都有。将对象的创建和使用分离,也使得系统更加符合...
2019-08-03 21:01:07 131
原创 设计模式(一)
一、简介1、模式由来与很多软件工程技术一样,模式起源于建筑领域,毕竟与只有几十年历史的软件工程相比,已经拥有几千年沉淀的建筑工程有太多值得学习和借鉴的地方。每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,我们可以无数次地重用那些已有的成功的解决方案,无须再重复相同的工作,在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。软...
2019-08-03 17:17:10 167
原创 RPC框架(二)
一、Hessianhessian是一种高效简洁的远程调用框架,它采用的是二进制Binary-RPC协议,基于Http协议进行传输,具有轻量、传输量小、平台无关的特点,Hessian通常通过Web应用来提供服务,通过接口暴露,特别适合于目前网络带宽比较小的手机网络应用项目。采用Binary RPC协议,相比webservice而言更简单、快捷,可与spring集成,配置简单,使用HessianS...
2019-07-24 17:11:05 226
原创 RPC框架(一)
一、背景早期经常会在单机上跑我们所有的程序和软件,把所有软件和应用都部署在一台机器上。单机的处理能力主要依靠 CPU、内存、磁盘。通过更换硬件做垂直扩展的方式来提升性能,成本会越来越高,单机处理能力存在瓶颈,CPU、内存都会有自己的性能瓶颈,单机系统存在可用性和稳定性的问题。随着网站的上线,访问量逐步上升,服务器的负载慢慢提高,假如代码层面的优化已经没办法继续提高,在不能提高单台机器的性能...
2019-07-23 17:37:03 224
原创 NIO框架
一、简介流行基于Java NIO通信框架有Mina、Netty、Grizzly等。1、Mina来自于开源界的大牛Apache组织,是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架,支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序。2、Netty来自于商业开源大亨Jboss,是一款异步的事件驱动的网络应...
2019-07-19 16:17:55 1056
原创 IO流知识总结(二)
当程序阻塞时,会降低程序的效率,于是人们就希望能引入非阻塞的操作方法,也就有了同步非阻塞,但是对于同步状态中是需要等到有返回结果才能继续执行下一步,又希望在等待IO操作的时候还能去做别的事情,等IO操作完通知它,所以又引入了异步,也就有了各种IO模型。一、IO模型对于I/O,可以分成阻塞I/O与非阻塞I/O两大类型。阻塞I/O在做I/O读写操作时会使当前线程进入阻塞状态,而非阻塞I/O则不...
2019-07-18 21:13:24 347
原创 IO流知识总结(一)
一、IO硬件原理1、IO系统I/O 设备及其接口线路、控制部件、通道和管理软件。2、设备类型根据输入输出特性划分:输入型外围设备、输出型外围设备和存储型外围设备。按照输入输出信息交换的单位划分:字符设备:输入型外围设备和输出型外围设备一般为字符设备,它与内存进行信息交换的单位是字节,即一次交换 1 个或多个字节块设备:块设备一次与内存交换的一个或几个块的信息,存储型外围设...
2019-06-27 19:39:41 1125
原创 多线程知识总结
一、多线程主要是为了解决单线程因阻塞而带来的效率问题,同时也充分利用多核CPU的优势。1、拷贝主内存成员变量线程工作内存是cpu寄存器和高速缓存的抽象描述,使用频率高的数据从主存拷贝到高速缓存中,每个线程在cpu高速缓存中对拷贝的数据进行读取、计算、赋值,再在合适的时候同步更新到主存的该数据。这样比一直去主内存访问要快的多。2、产生安全问题我们应该知道了在运行时数据内存区...
2019-06-21 19:30:10 355
原创 JVM知识总结
一.什么是JVM它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。JRE:Java运行环境,也就是Java平台。所有的Java 程序都要在JRE下才能运行。JDK:程序开发者用来来编译、调试java程序用的开发工具包,在JDK的安装目录下有一个名为jre的目录JVM...
2019-06-20 14:53:37 252
原创 Mysql知识总结
Mysql语句1.查询1.简单查询SELECT * FROM 表名2.避免重复DISTINCTSELECT DISTINCT post FROM 表名3.通过四则运算查询SELECT id*12 FROM 表名4.定义显示格式CONCAT() 函数用于连接字符串SELECT CONCAT('姓名: ',name,' 年薪: ', salary*12)...
2019-06-01 16:02:26 236
原创 SSM知识总结
一.Spring1.创建容器spring有两个父子容器Servlet WebApplicationContext:控制器(controller)、视图解析器(view resolvers)等相关的bean。通过spring mvc中提供的DispatchServlet来加载配置Root WebApplicationContext:service层、dao层进行配置,如业务be...
2019-05-12 21:44:51 1111 1
原创 Tomcat运行过程和简单模拟
一.什么是tomcatTomcat是一个JSP/Servlet容器。Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户下被普遍使用,是开发和调试JSP 程序的首选。负责处理客户请求,把请求传送给Servlet并把结果返回给客户。二.tomcat文件tomcat根目录在tomcat中叫<CATALIN...
2018-07-18 10:48:27 6667 1
原创 Servlet运行过程和简单模拟
一.什么是ServletServlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容,它工作在客户端请求与服务器响应的中间层,处理请求和发送响应的过程都是由Servlet的程序来完成的。 二.tomact和servlet的关系Tomcat 是Web应用服...
2018-07-17 21:16:37 818
原创 Spring入门
一.什么是SpringSpring主要两个有功能为我们的业务对象管理提供了非常便捷的方法:DI(Dependency Injection,依赖注入)AOP(Aspect Oriented Programming,面向切面编程) 依赖注入(DI或者IOC): 简单来说,一个系统中可能会有成千上万个对象。如果要手工维护它们之间的关系,这是不可想象的。我们可以在Spring的XML文件描...
2018-06-29 20:26:41 408
原创 SSM与android端数据交互
一.前言最近第一次用ssm与安卓端实现了数据交互,我这里数据交互通过传送接受JSON数据来实现的。实现了登录注册和对某些实体类数据的增删改查。 二.后端的具体实现我们实体类的数据和安卓端的实体数据名字要是相同的,不然获取不到后端发送的JSON数据,作为后端我们不用去了解安卓端是怎么实现发送和接受JSON数据,我们只要保证实体类属性名相同,并给他们一个后端接口(一个URL地址),也就...
2018-05-27 20:50:01 10268 3
原创 SSM框架
一.SSM框架简单介绍SSM(Spring+SpringMVC+MyBatis)框架集由Spring、SpringMVC、MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架。其中spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,它可以装载bean(也就是我们java中的类,当然也包括service dao里面的),有了这个我们就不用去new来...
2018-05-27 19:00:17 15067 7
原创 json在前后端数据交互中的应用
一.什么是Json?json本来是javascript里的内容,有时后端要传各种各样的数据格式来适应前端,所以需要用到json来转换,用它来表示各种各样复杂的数据,如对象,数组,集合,以及集合的集合等数据。 先来了解json是什么,json是一种轻量级的前端后端以及网络传输的数据交换格式,就是一串字符串,只不过元素会使用特定的符号标注。 {} 双括号表示对象,[] 中括号表示数组,”” 双引号内是
2017-12-26 18:29:05 24867 7
原创 Struts2实现文件上传和下载
一.简述我这里实现网页上的文件上传和下载是用struts2框架来实现的,具体是对java.io数据流的操作。过程是先在网页将文件上传到服务器里,并且这些文件在网页上可以显示出来,可以供别人下载。二.上传下载演示1.文件上传 2.点击浏览,选择文件上传 3.下载文件界面 4.选择坦克大战项目下载 三.文件上传首先看文件上传,通过jsp文件上传文件到服务器,你可以保存在该项目的相对路径下的web
2017-12-25 18:21:34 427
原创 struts2和hibernate整合
一.struts2和hibernate框架分别作用struts2是MVC框架,而会hibernate是持久层框架。struts2框架是用来接受客户端请求,与数据库打交道,取数据,并响应客户端,而hibernate框架封装数据库,操作数据库。二.简单流程在jsp页面中提交数据,struts2里的action里的相关get,set方法获得数据,在该action里定义一个方法传到数据库中,hibernat
2017-11-30 22:22:37 2540
原创 Hibernate的事务
一.什么是事物?数据库事务是指由一个或多个SQL语句组成的工作单元,这个工作单元中的SQL语句相互依赖,如果有一个SQL语句执行失败,就必须撤销整个工作单元,在并发环境中,多个事务同时访问相同的数据资源时,可能会造成各种并发问题。 通俗的说的话,事务就是一件事情,要么成功执行到底,要么回到起点,什么都不做。二.事物的特性原子性:正如原子时自然界最小颗粒,具有不可再分的特征一样。意思就是说,咱的事务
2017-11-27 21:19:04 540
原创 Hibernate的关联关系
一.什么是hibernate的关联关系hibernate框架是与数据库打交道的,而数据库是存储数据的,有些数据之间有些内在联系,hibernate将对象之间通过某种方式联系起来,世界万物都有联系的,如用户和身份证,你创建了一个用户的一个数据库表,而每个用户要有身份证,所以你还要创建一个装身份证的一个数据库表,但你怎么把它们联系起来,或者说怎么分清楚哪个用户是哪个身份证,这就是我们要学的hiberna
2017-11-23 22:15:54 520
原创 hibernate的CRUD
一.CRUD操作简述既然hibernate这个框架是对数据库的访问,也就应该有对数据库的CRUD操作,即对数据的增加,删除,修改,查找。二.回想下java的jdbc操作流程我们以前用过jdbc来访问数据库,简单回想下以前的过程。 1. 加载驱动2.建立连接3.定义sql,发生sql语句4.执行sql语句获得执行结果5.处理返回结果6.关闭资源简单来说,也差不多是这几步骤,那hibernate框架是
2017-11-22 21:20:53 384
原创 hibernate入门
一.什么是hibernate?定义:通俗的讲就是用来操作数据库的。它把数据库中的表,转换成java类,通过xml文件来实现类和表之间的映射。这样的好处在于,可以面向对象的思想来操作数据库。二.与jdbc的区别可能有些人会觉得这个框架没什么用,认为已经有了jdbc连接数据库了,为什么还要用这个框架去连接数据库。当然有这个框架自然有用处的。jdbc也是有缺点的,比如效率就低,每一次请求,打开连接、发送s
2017-11-20 21:11:18 383 2
原创 struts2入门
一.什么是struts21.定义: 上面是我百度得来的,感觉没太明白,简单来说就是接受网页中表单提交的数据,然后通过 Action 进行处理,再返回到对应的网页。2.具体流程: 1、客户端浏览器发出HTTP请求.2、根据web.xml配置,该请求被FilterDispatcher(struts2核心)接收3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC(控制反
2017-11-19 17:32:18 354
原创 struts2的OGNL表达式
ognl表达式: OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,他是一个开源项目。Struts框架使用OGNL作为默认的表达式语言,必须配置Struts标签用,不能离开Struts标签直接使用,就是说Ognl必须在Struts中使用。 当Struts2接受一个请求时,会迅速创建ActionContext,然后创建ValueStack,再创
2017-10-25 21:10:57 344
原创 struts2常用标签
首先struts2的标签共分为五大类:逻辑控制标签,数据输出标签,HTML表单标签,HTML非表单标签,AJAX标签。 每一个大类里面又有很多标签,而有些并不是用的很多,我现在只展现一些常见的标签。 要使用Struts2的标签,只需要在JSP页面添加如下一行定义即可:<%@ taglib prefix=”s” uri=”/struts-tags”%> 1. property标签: pro
2017-10-24 21:40:38 467
原创 struts2拦截器
struts2内置了许多现成的拦截器,struts2的某些功能如数据转换,数据校检等也是拦截器实现的。这些拦截器配置在struts2-core-2.0.1.jar中的struts-default.xml文件中,如果需要这些功能,直接使用。 这是从struts-default.xml截取的一小段的内容:< interceptor name ="alias" class ="com.opensymph
2017-10-22 20:52:23 258
原创 struts2的命名规则
原则:能简单就不要复杂。 数据库命名: 项目名称 _ 所属级别 _ 对应中文单词,如:BBS _ DI _TOPIC BBS项目名称,DI表示数据库存储表,TOPIC表示该表的真正的名称。 类及文件命名规则: 1.包全限定名:com.xxx.service 2.所有的类都分层放入对应的包中,如dao放入com.xxx.dao包中 3.所有类命名规则如:模块名+功能名称(usedao.j
2017-10-15 19:30:01 522
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人