- 博客(60)
- 收藏
- 关注
原创 Shiro安全框架
一、Shiro概述 Shiro是apache旗下一个开源安全框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架。使用shiro就可以非常快速的完成认证、授权等功能的开发,降低系统成本。 用户在进行资源访问时,要求系统要对用户进行权限控制。二、Shiro概要架构在概念层面,Shiro 架构包含三个主要的理念...
2020-01-16 23:11:40 277
原创 Spring AOP事务处理
一、Spring 中事务简介1.事务特性回顾事务具备ACID特性,分别是:原子性(Atomicity):一个事务中的多个操作要么都成功要么都失败。一致性(Consistency):(例如存钱操作,存之前和存之后的总钱数应该是一致的。隔离性(Isolation):事务与事务应该是相互隔离的。持久性(Durability):事务一旦提交,数据要持久保存。说明:目前市场上在事务一致性方...
2020-01-13 23:21:22 243
原创 Spring AOP(3)
一、切入点表达式Spring中通过切入点表达式定义具体切入点,其常用AOP切入点表达式定义及说明:指示符作用bean用于匹配指定bean对象的所有方法within用于匹配指定包下所有类内的所有方法execution用于按指定语法规则匹配到具体方法@annotation用于匹配指定注解修饰的方法1.bean表达式(重点)bean表达式一般应用...
2020-01-11 23:19:28 188
原创 Spring AOP(2)
一、AOP 应用原理Spring AOP底层基于代理机制实现功能扩展:1)假如目标对象(被代理对象)实现接口,则底层可以采用JDK动态代理机制为目标对象创建代理对象(目标类和代理类会实现共同接口)。2)假如目标对象(被代理对象)没有实现接口,则底层可以采用CGLIB代理机制为目标对象创建代理对象(默认创建的代理类会继承目标对象类型)。二、AOP 两种代理方式1.JDK动态接口代理JD...
2020-01-10 21:13:12 134
原创 Spring AOP(1)
一、AOP 是什么? AOP(Aspect Orient Programming)是一种设计思想,是软件设计领域中的面向切面编程,它是面向对象编程(OOP)的一种补充和完善。实际项目中我们通常将面向对象理解为一个静态过程(例如一个系统有多少个模块,一个模块有哪些对象,对象有哪些属性),面向切面理解为一个动态过程(在对象运行时动态织入一些扩展功能或控制对象执行)。二、AOP 应用场景 实...
2020-01-09 23:16:30 150
原创 Spring Boot
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭 建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的 配置。通过这种方式Spring Boot 致力于在蓬勃发展的快速应用开发领域成为领导者。其特点如下:创建独立的 Spring 应用程序嵌入的 Tomcat,无需部署 WAR 文件简化 ...
2020-01-08 22:13:04 195
原创 JAVA 四种引用类型
1. 强引用在 Java 中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于不可达状态,它是不可能被垃圾回收机制回收的,即使该对象以后永远都不会被用到,JVM也不会回收。因此强引用是造成Java内存泄漏的主要原因之一。2. 软引用软引用需要用 SoftReference 类来实现,对于只有软引用的对象来说,当系统内存足够时它 ...
2020-01-07 22:19:22 135
原创 Ajax简介
一、什么是Ajax Ajax 是一种Web应用技术,可以借助客户端脚本(javascript)与服务端应用进行异步通讯,获取服务端数据以后,可以进行局部刷新。进而提高数据的响应和渲染速度。二、应用场景 Ajax技术最大的优势就是底层异步,然后局部刷新,进而提高用户体验,这种技术现在在很多项目中都有很好的应用,例如:商品系统。评价系统。地图系统。说明:Ajax最大劣势是不能直接...
2020-01-01 22:53:00 122
原创 缓存淘汰策略
常见的缓存淘汰策略有三种:1.FIFO(First In First out):先见先出,淘汰最先近来的页面,新进来的页面最迟被淘汰(队列)。2.LRU(Least recently used):最近最少使用,淘汰最近不使用的页面。3.LFU(Least frequently used): 最近使用次数最少, 淘汰使用次数最少的页面。下面进行详细介绍:一、FIFO按照“先进先出(Fir...
2019-12-30 00:19:28 469
原创 OO设计原则
概述 今天利用午休的时间,简单介绍一下面向对象设计(OOD)中的一些原则,可能不全面,后续会进行补充。1.OCP OCP(Open Close Principle)开闭原则,官方介绍为’'Closedfor Modification;Open for Extension",意思是"对变更关闭;对扩展开放"。也就是说在进行软件设计时,要保证设计的每个模块不会被修改,而且留出对外的扩展。在不...
2019-12-27 22:41:16 410
原创 springmvc参数绑定
当项目中引入springmvc框架后,所有的请求流转将由springmvc进行控制,当客户端发送的请求中包含数据(也就是请求参数)时,那么该如何在controller层获取这些参数呢? springmvc会自动的将请求中包含的参数和方法的参数进行匹配,也就是说只要保证,请求中的参数名称和方法中的参数名称相对应(另,参数的格式也要正确),在方法中就可以使用这些参数—即请求中的参数。一、基本...
2019-12-26 21:44:21 102
原创 初识SpringMVC
一、Servlet的缺点 1. 通常情况下,一个Servlet类只负责处理一个请求,若项目中有成百上千个请求需要处理,就需要有成百上千个Servlet类,这样会使得项目中Servlet类的个数暴增; 2. 在Servlet3.0版本之前,每一个Servlet都需要在web.xml文件中至少做八行配置信息,配置内容多且繁琐。当Servlet特别多时,web.xml配置量太多,不利于团队开发; ...
2019-12-25 22:37:08 183
原创 Lambda表达式
一、概念 Lambda表达式,是Java8中最重要的新特性。它是一种匿名函数,有声明的方法,也即没有访问修饰符、返回值声明和名字。允许把函数作为一个方法的参数(函数作为参数传递进方法中),可以使代码变的更加简洁紧凑。二、语法格式Lambda表达式有两种语法结构:方法体为表达式,该表达式的值作为返回值返回。(parameters) -> expression方法体为代码块...
2019-12-24 23:22:53 341
原创 MVC设计模式
1.什么是设计模式设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。设计模式就是一种模子,经过多年实践锤炼形成一套行之有效的完成某个特定任务的步骤和方式。2.MVC设计模式M...
2019-12-23 22:22:43 654
原创 Spring DI依赖注入
一、两种注入方式介绍 DI(Dependency Injection),依赖注入,即组件之间的依赖关系由容器在应用系统运行期来决定,也就是由容器动态地将某种依赖关系的目标对象实例注入到应用系统中的各个关联的组件之中。简单来说,所谓的依赖注入其实就是,在创建对象的同时或之后,如何给对象的属性赋值。如果对象由我们自己创建,这一切都变得很简单,例如:User user = new User();...
2019-12-22 23:19:58 118
原创 3Bean对象的单例和多例
一、Bean对象的单例和多例概述 在Spring容器中管理的Bean对象的作用域,可以通过scope属性或用相关注解指定其作用域。最常用是singleton(单例)或prototype(多例)。其含义如下: 1.singleton:单实例,是默认值。这个作用域标识的对象具备全局唯一性。当把一个 bean 定义设置scope为singleton作用域时,那么Spring IOC容器只会创建该...
2019-12-21 23:24:28 337
原创 Spring IOC
一、什么是控制反转 所谓的IOC(Inversion of Control),控制反转,就是指将对象的创建,对象的存储(map),对象的管理(依赖查找,依赖注入)交给了spring容器。 在此之前,当需要对象时,通常是利用new关键字创建一个对象://1.创建一个Hello对象Hello hello = new Hello();//2.调用hello对象的方法hello.sayHi...
2019-12-20 22:51:51 83
原创 初识Spring框架
一、spring简介 1、Spring是一个开源的轻量级的应用开发框架,其目的是用于简化企业级应用程序开发,降低开发者的开发难度;(简化开发:spring对常用的api,比如对JDBC做了封装,使用spring封装的jdbc访问数据库,就不用考虑获取连接、关闭连接等,极大的简化了代码) 2、Spring提供的IoC和AOP应用,可以将组件的耦合度降至最低(即解耦),便于系统日后的维护和升...
2019-12-19 22:22:24 147
原创 mybatis框架
一、什么是MyBatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。 MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处...
2019-12-18 22:18:51 179
原创 数据库事务
一、什么是事务 数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 简单的说:事务就是将一堆SQL(通常是增删改操作)的执行绑在一起,要么都执行成功,要么都执行失败,即都执行成功才算成功,否则就会恢复到这堆SQL执行之前的状态。二、事务的四大特性事务的四大特性(ACID)是: (1)原子性(Atomi...
2019-12-16 21:21:10 104
原创 将Maven配置到Eclipse中
将Maven工具配置到Eclipse中,就可以通过Eclipse和自己安装的Maven创建Maven项目了。1、window右键–> Preferences:2、点击Maven选项,在右侧选项中勾选 “Download Artifact Sources”:3、点击add将自己安装的Maven添加进来:4、添加自己安装的Maven:一定要注意: 自己安装的Maven不要放在桌...
2019-12-15 22:09:22 208
原创 项目管理工具-Maven
一、Maven是什么? Maven: 翻译为"专家"、“内行”,是Apache下的一个纯Java开发的一个开源项目。Maven是一个项目管理工具,使用Maven可以来管理企业级的Java项目开发及依赖的管理。使用Maven开发,可以简化项目配置,统一项目结构。总之,Maven可以让开发者的工作变得更简单。二、为什么要使用Maven? 传统的项目(工程)中管理项目所依赖的jar包完全靠人工...
2019-12-14 23:59:41 180
原创 request和response简介
文章目录一、request和response介绍二、request对象1. 获取请求参数2.请求转发3.域对象三、response对象1.向客户端发送数据2.实现重定向一、request和response介绍 request是代表Http请求信息的对象,其中封装了浏览器向服务器发送的请求信息,将request传递给service方法,在处理请求的过程中,可以通过request对象获取请求相关...
2019-12-12 22:30:55 1393
原创 HTTP协议详解
文章目录一、HTTP请求1、请求行2、若干请求头3、请求实体内容二、HTTP响应1、状态行2、若干响应头3、响应实体内容三、总结常见问题一、HTTP请求1、请求行GET /news/hello.html HTTP/1.1GET: 提交方式,在HTTP协议中一共规定了7种提交方式,其中5种都不常用,只用GET和POST。/news/hello.html: 请求的资源路径,用于通知服务器浏...
2019-12-11 21:58:15 223
原创 TOMCAT
一、服务器概述1. 什么是服务器服务器分为硬件服务器和软件服务器。硬件服务器: 通常是运行在互联网上的一台配置比较高的计算机软件服务器: 是运行在硬件服务器上的一个程序(软件)需要将软件安装在硬件服务器上, 才能对外提供服务。软件服务器也分为很多的种类, 比如: 数据库服务器、ftp服务器、邮件服务器、web服务器。2.什么是Web服务器 Web服务器是指,运行在互联网上的计算机...
2019-12-10 23:22:28 177
原创 jQuery
文章目录一、什么是jQuery二、jQuery的优势三、jQuery引入四、文档就绪事件五、jQuery选择器1. 基本选择器2. 层级选择器3.基本过滤选择器一、什么是jQueryjQuery是一门轻量的、免费开源的JS函数库,可以极大的简化JS代码。jQuery的核心思想:“写得更少,但做得更多”。二、jQuery的优势(1)可以极大的简化JS代码(2)可以像css选择器一样获取元素...
2019-12-09 22:43:55 65
原创 JavaScript
文章目录一、 什么是JavaScript二、特点和优势1.特点2.优势三、在HTML引入JS的方式1.添加一个script标签2.通过script标签引入外部的JS文件四、JavaScript语法1.数据类型2.变量和运算符3.JS语句4.JS数组5.JS函数五、DOM操作1.获取元素2.增删改元素一、 什么是JavaScript 全称JavaScript,简称JS。是由NetScape(网...
2019-12-08 21:08:03 185
原创 CSS基础
文章目录一、 什么是CSS二、在HTML中引入CSS1.通过style属性引入css(不推荐)2. 通过style标签引入css(推荐)3.通过link链接引入外部的css文件(推荐)三、CSS选择器1.元素名、标签名选择器2.类(class)选择器3.id选择器4.后代选择器5.属性选择器四、常用属性总结1.文本属性2.字体属性3. 背景属性4.其他属性一、 什么是CSS CSS: 层...
2019-12-07 22:54:31 198
原创 HTML表单
一、向服务器提交数据的两种方式:1.通过表单向服务器提交数据 例如,在注册时或者登录时,用户名密码所在的就是一个表单,在表单中可以填写数据,填写完后通过提交表单可以向服务器提交数据。2.通过超链接向服务器提交数据 可以在超链接后面通过问号拼接参数。问号后面都是参数,参数分为参数名(比如user和age)和参数值(zhangsan和18),多个参数中间用&分隔。当我们点击超链接...
2019-12-06 22:41:56 592
原创 HTML概述
文章目录一、什么是HTML二、HTML的结构三、HTML语法1.html标签2.html属性3.html注释4.空格和换行四、HTML标签1.图像标签2.超链接3.表格标签五、最后一、什么是HTML HTML( Hyper Text Markup Language)是由由W3C组织提供的,一门用于开放网页,组织网页结构的语言。HTML要求:(1)用html开发的网页文件是以.htm或者.h...
2019-12-05 22:59:35 243
原创 数据库连接池
一、 什么是连接池 在JAVA中,我们经常会用到池的概念,比如常量池、线程池、连接池等等。那么池是什么呢,其实就是一个容器,例如数组或者集合。 连接池就是将连接对象(Connection)放在一个容器中,供整个程序共享,可以减少连接创建和关闭的次数,实现连接的复用,提高程序执行的效率。二、为什么要使用数据库连接池1.传统方式(不使用连接池): 存在的问题:当通过Java程序连接数...
2019-12-04 22:14:10 213
原创 线程锁
一、线程锁1. Synchronized 采用synchronized修饰符实现的同步机制叫做互斥锁机制,它所获得的锁叫做互斥锁。每个对象都有一个monitor(锁标记),当线程拥有这个锁标记时才能访问这个资源,没有锁标记便进入锁池。任何一个对象系统都会为其创建一个互斥锁,这个锁是为了分配给线程的,防止打断原子操作。每个对象的锁只能分配给一个线程,因此叫做互斥锁。2.Lock Loc...
2019-12-03 22:48:55 790
原创 ThreadLocal和Volatile
一、ThreadLocal 线程绑定,辅助一个线程持有自己的数据,这个数据与其他线程不共享。把数据绑定到线程,线程当做一条流水线,来传递数据。多线程并行时,数据是安全的。例:public class Test { static ThreadLocal<Double> threadLocal = new ThreadLocal<>(); public sta...
2019-12-02 22:56:46 1843
原创 线程辅助工具
一、线程池1. ExecutorServiceexecute(Runnable任务对象)把任务丢到线程池2.Executors辅助创建线程池的工具类newFixedThreadPool(5)最多5个线程的线程池 newCachedThreadPool()足够多的线程,使任务不必等待 newSingleThreadExecutor()只有一个线程的线程池3.例:pu...
2019-12-02 22:32:42 153
原创 反射和注解
一、反射Reflect1.定义 反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能。2.获取类对象(1)Class.forName(全类名)(2)类名.class(3)对象.getClass()3.获得包名、类名c1.getPackage().getName(...
2019-12-01 21:19:19 83
原创 线程间通信
一、生产者消费者模型生产者产生数据,放入一个数据容器消费者从容器来获取数据线程间解耦import java.util.Queue;import java.util.Random; /*生产者存放数据*/public class Producer extends Thread{ private Queue<Character> queue; pub...
2019-11-30 22:41:31 117
原创 JAVA多线程
文章目录一、进程1.什么是进程2.进程的特征3.并发二、线程1.什么是线程2.线程状态3.单线程四、多线程并发编程1. 并发编程三要素2.创建多线程的两种方式一、进程1.什么是进程 进程简单来说就是正在执行的程序。一般由程序,数据集合和进程控制块三部分组成,运行于操作系统之上。2.进程的特征(1)动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的(2)并发...
2019-11-29 23:49:19 74
原创 NIO
一、NIO NIO,也叫New IO,对比传统的同步阻塞IO操作,实际上NIO是同步非阻塞IO。读写磁盘文件,利用操作系统的底层代码来执行数据块操作…允许直接在操作系统的内存空间中分配内存,利用系统内存空间来交换数据NIO的优势主要体现在网络数据传输上。利用”信道”,进行多路复用。比传统IO要快。二、NIO的基本概念Channel:通道,类似于流Buffer:缓冲,用缓冲内存空间,临时...
2019-11-28 21:18:34 101
原创 IO简介
文章目录一、继承结构二、流的概念三、File文件流四、字节流1. InputStream抽象类2.FileInputStream子类3.BufferedInputStream子类4.OutputStream抽象类5.FileOutputStream子类6.BufferedOutputStream子类/高级流五、字符流1.Reader抽象类2.InputStreamReader子类3.Buffere...
2019-11-27 23:26:13 176
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人