java
文章平均质量分 74
java的艺术
苦逼的程序猿
展开
-
Spring源码(七):自定义标签
一. Spring源码(六):深入自定义标签解析—1介绍了Spring对自定义标签的解析,这篇文件主要介绍如何自定义标签来完成复杂的业务需求。二. 先简单回顾一下上篇文件介绍的自定义标签的解析。 1. 获取所有的NamespaceHandler:通过Spring的SPI加载所有jar包META-INF/spring.handlers下的文件,经过反射创建实例化并调用init初始化方法初始化BeanDefinitionParser解析器存入属性par...原创 2021-11-23 15:38:01 · 573 阅读 · 0 评论 -
Spring源码(六):深入自定义标签解析
一. spring在解析xml标签时分为默认标签和自定义标签两种。默认标签如bean标签,自定义标签如:aop、tx(关于事物的)、context等。二. 1.xml解析是通过BeanDefinitionDocumentReader接口实现的,它只有registerBeanDefinitions一个方法。 2. BeanDefinitionDocumentReader的实现类是DefaultBeanDefinitionDocumentReader...原创 2021-11-23 11:58:54 · 591 阅读 · 0 评论 -
Spring源码(五):深入Spring事务
作者未下笔。。。。。原创 2021-11-23 11:57:11 · 285 阅读 · 0 评论 -
Spring源码(四):深入Spring事件监听器
protected List getEventListenerFactories() { Map beans = getApplicationContext().getBeansOfType(EventListenerFactory.class); List factories = new ArrayList(beans.values());原创 2021-09-02 11:15:49 · 253 阅读 · 0 评论 -
Spring源码(三):深入Spring Bean的生命周期
Spring作为当前Java最流行、最强大的轻量级框架。深入的了解Spring Bean的生命周期是非常必要的。我们通常把ApplicationContext作为Spring容器。所以,我们讲的也是ApplicationContext容器中Bean的生命周期。 在Spring中,其实有一个类完完整整的描述了Spring Bean的生命周期。让我们来看这个类 一:Spring Bean的生命周期流程图。 二:Spring Bean的生命周期主要有这四个阶段: ...原创 2021-09-01 15:36:49 · 163 阅读 · 0 评论 -
Spring源码(二):深入BeanPostProcessor源码—2
上一篇文章讲了BeanPostProcessor对象的扫描、实例化、注册、调用以及BeanPostProcessor的使用场景。那么这篇文章主要讲的是BeanPostProcessor子类的使用场景。1.查看构造器上是否有@Autowired注解:主要确定bean对象实例化构造方法。类型:SmartInstantiationAwareBeanPostProcessor处理类:AutowiredAnnotationBeanPostProcessor...原创 2021-08-24 15:52:16 · 175 阅读 · 0 评论 -
Spring源码(一):深入BeanPostProcessor源码—1
1.什么是BeanPostProcessor? BeanPostProcessor是一个接口,作用在Bean对象实例化和依赖注入完成后、在调用初始化方法前后添加我们自己的逻辑。源码如下:public interface BeanPostProcessor { /** * 初始化方法调用前执行 */ @Nullable default Object postProcessBeforeInitialization(Object bean, Stri...原创 2021-08-24 14:24:19 · 215 阅读 · 0 评论 -
Spring Boot(十):邮件服务
博主还没下笔呢。。。原创 2019-10-30 11:32:36 · 98 阅读 · 0 评论 -
Spring Boot(八):MQ集成
博主还没开始呢。。。原创 2019-10-30 11:19:32 · 132 阅读 · 0 评论 -
Spring Boot(七):Redis缓存
Redis介绍redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各...原创 2019-10-18 17:00:26 · 1569 阅读 · 0 评论 -
Spring Boot(六):PageHelper使用
1. 添加PageHelper相关依赖<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.0</version></dependency...原创 2019-10-18 15:25:52 · 263 阅读 · 0 评论 -
Spring Boot(五):如何优雅的使用Mybatis
简单 xml 模式 Mapper只需要定义接口,系统会自动根据方法名在映射文件中找对应的 Sql。 1. 添加相关依赖文件<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter&l...原创 2019-10-18 14:28:11 · 156 阅读 · 0 评论 -
Spring Boot(四):功能
本节将深入介绍Spring Boot。Spring应用 本SpringApplication类提供了一个方便的方式来引导该从开始Spring应用程序main()的方法。在许多情况下,您可以委派给静态SpringApplication.run方法,如以下示例所示:public static void main(String[] args) { Sp...原创 2019-10-18 13:37:19 · 945 阅读 · 0 评论 -
Spring Boot(三):Web开发
上篇文章介绍了在 Spring Boot中如何使用拦截器、过滤器、监听器以及事件监听。本篇文章将简单、大概的介绍spring boot的其他特性。Web 开发1. json 接口开发 1). 在Spring环境中开发项目,需要提供 json 接口时需要做哪些配置呢?添加 jackjson 等相关 jar 包 配置 Spring Controller 扫描...原创 2019-10-17 17:53:25 · 197 阅读 · 0 评论 -
Spring Boot(二):拦截器、过滤器、监听器、事件监听
1. 过滤器 我们常常在项目中会使用 filters 用于录调用日志、排除有 XSS 威胁的字符、执行权限验证等等。Spring Boot 自动添加了 OrderedCharacterEncodingFilter 和 HiddenHttpMethodFilter,并且我们可以自定义 Filter。 1). 注解式实现 三个步骤:自定...原创 2019-10-17 16:54:07 · 415 阅读 · 0 评论 -
Spring Boot(一):入门篇
1. 什么是spring boot? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。...原创 2019-10-17 11:40:37 · 100 阅读 · 0 评论 -
maven的安装与配置
通过tar.gz压缩包安装 1,确保安装了jdk,如果没有安装可以参看我的另一篇文章 Linux 环境下jdk的安装与配置 2,下载maven安装包 到官网(http://maven.apache.org/);进入官网,左边菜单栏找到Download单击,根据需求选择具体版本 的maven; 3,解压安装 小编的maven包保存在 /u...原创 2018-11-29 17:04:12 · 185 阅读 · 0 评论 -
同步容器
1,解决并发情况下的容器线程安全问题的。给多线程环境准备一个线程安全的容器对象。线程安全的容器对象: Vector, Hashtable。线程安全容器对象,都是使用 synchronized 方法实现的。concurrent 包中的同步容器,大多数是使用系统底层技术实现的线程安全。2,Map/Set 类型: 1),ConcurrentHashMap/Concurr...原创 2018-12-30 04:39:49 · 111 阅读 · 0 评论 -
java操作VSFTPD入门
废话不多说,直接上代码1,ftpClient的jar <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.3</version>&原创 2019-01-12 03:48:37 · 807 阅读 · 0 评论 -
dubbo入门
一:dubbo简介Dubbo:一个分布式、高性能、透明化的RPC服务框架. 作用:提供服务自动注册、自动发现等高效服务治理方案. Dubbo架构图 3.1 Provider :提供者,服务发布方. 3.2 Consumer:消费者, 调用服务方 3.3 Container:Dubbo容器.依赖于Spri...原创 2019-01-10 00:02:19 · 114 阅读 · 0 评论 -
ssm整合dubbo
1,分布式聚合项目架构: dubbo-account-parent (父项目 pom类型) dubbo-account-domain (实体类 jar类型) dubbo-account-service ...原创 2019-01-10 02:54:43 · 1059 阅读 · 0 评论 -
连接池原理
Configuration.java/* * 配置信息 */public class Configuration { private String mysqlDriver; private String mysqlURL; private String mysqlUser; private String mysqlPwd; private Integer poolMaxSi...原创 2019-03-26 04:47:22 · 142 阅读 · 0 评论 -
基于MQ消息中间件的分布式事务解决方案
1,模拟支付宝转账到余额宝的整个操作流程图如下 2,直接上代码 Alipay---支付宝 xml配置 AccountMapper.xml <mapper namespace="com.reyco.core.dao.Ac...原创 2019-05-28 17:37:17 · 869 阅读 · 1 评论 -
对接第三方登录
一:对接QQ前准备工作: 1,有已备案的域名; 2,https://connect.qq.com/登录QQ互联; 3,创建应用; 进入应用管理页面创建应用,根据实际需要是创建网站应用还是移动应用,我这里是网站应用: ...原创 2019-07-25 15:18:41 · 1597 阅读 · 0 评论 -
网络编程基础BIO、NIO、AIO
1,网络编程基础 1),网络编程(Socket)概念 : 首先注意, Socket不是Java中独有的概念,而是一个语言无关标准。 任何可以实现网络编程的编程语言都有Socket 。 2),什么是 Socket : 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个 ...原创 2018-12-30 04:02:03 · 206 阅读 · 0 评论 -
spring整合Shiro实现用户登录和菜单权限
1,添加shiro相关jar包2,在web.xml配置文件中配置shiroFilter过滤器: <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContex...原创 2018-12-26 01:07:50 · 4427 阅读 · 0 评论 -
简单获取Spring管理的bean
废话少说,直接上代码: 1,编辑 SpringContextHolder.javapublic class SpringContextHolder implements ApplicationContextAware { private static ApplicationContext applicationContext; /** * 实现Applicatio...原创 2018-12-03 21:52:09 · 480 阅读 · 0 评论 -
java通过poi上传excel表格并简单使用生产者、消费者模式批量插入数据到数据库
废话少说,直接上代码。BaseMapper.xml<!-- batchInsert --> <insert id="batchInsert" parameterType="java.util.List"> insert into base (name,password) values <foreach collection="list" ...原创 2018-12-03 21:22:01 · 816 阅读 · 0 评论 -
java通过poi上传excel表格并多线程批量插入数据到数据库
废话少说,直接上代码。BaseMapper.xml <!-- batchInsert --> <insert id="batchInsert" parameterType="java.util.List"> insert into base (name,password) values <foreach collection="lis...原创 2018-12-03 20:57:16 · 3043 阅读 · 10 评论 -
ssm全局日志两种实现方式
1,通过拦截器拦截所有请求日志废话少说,直接上代码! SessionHandlerInterceptor.java/** * 全局请求日志拦截器 * @author reyco */public class SessionHandlerInterceptor implements HandlerInterceptor { protected Lo...原创 2018-12-04 16:07:06 · 731 阅读 · 0 评论 -
java简单使用poi导入、导出数据
废话少说,直接上代码。1,导出数据:从数据库读取数据封装到Workbook中,并通过流输出到客户端浏览器。 AccountMapper.xml <!-- 导出用户使用 --> <select id="searchList" resultType="Account" useCache="true"> select a.phone,a.name,v...原创 2018-12-04 15:25:42 · 473 阅读 · 0 评论 -
Linux环境中拉取svn服务器代码并通过编译部署发布过程指导
Linux环境中拉取svn服务器代码并通过maven编译部署发布过程指导1,客户端需要检出代码 1) 创建一个作为检出代码目录,专门存放检出代码(目录自定义):小编这里存放在 /usr/local/svn-maven目录下: mkdir /usr/local/svn-maven 2) ...原创 2018-11-28 22:13:59 · 5342 阅读 · 1 评论 -
SVN服务的安装与配置
1,安装svn服务 yum install subversion (点击y即可)安装结尾显示complete,即代表安装完成。 点击y即可 2,查看安装位置 rpm -ql subversion ...原创 2018-11-10 20:12:26 · 321 阅读 · 0 评论 -
nginx的安装
root环境下安装 1,准备下载4个程序: wget http://nginx.org/download/nginx-1.10.2.tar.gz ...原创 2018-11-10 19:01:56 · 213 阅读 · 0 评论 -
MySQL的安装与配置
1,下载mysql源安装包 wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 2,安装mysql源 yum localinstall mysql57-community-release-el7-8.noarch.rpm 然...原创 2018-11-10 17:44:51 · 361 阅读 · 0 评论 -
JDK的安装与配置
通过tar.gz压缩包安装 1、下载JDK,到官网(https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)下载具体版本的jdk, 小编选择的是jdk-8u191-linux-x64.tar.gz ...原创 2018-10-25 01:43:45 · 261 阅读 · 1 评论 -
svnadmin服务安装
1,svn服务器有2种运行方式:独立服务器和借助apache运行。svnadmin就是借助apache运行,所以在安装svnadmin之前,需要安装httpd;而svnadmin运行在web服务器,还要安装tomcat服务器;svnadmin的用户数据保存在数据库,因此还需要数据库。2,首先安装httpd服务: (1),安装apache: ...原创 2018-12-28 22:41:59 · 9486 阅读 · 7 评论 -
maven私服搭建
1,构建maven私服,小编这里用的是nexus,而nexus运行需要jdk。所以在搭建maven私服前,需要先安装jdk,小编已经提前安装 了jdk,如果你不知道怎么安装jdk,可以参考小编的另一篇文章: Linux 环境下jdk的安装与配置2,下载nexus压缩包:https://www.sonatype.com/nexus-repository-oss3,解压nexus...原创 2018-12-29 05:08:52 · 282 阅读 · 0 评论 -
shiro的授权及自定义Realm实现授权
授权:给身份认证通过的人,授予他可以访问某些资源的权限。 权限粒度:分为粗粒度和细粒度。粗粒度:对user的crud。也就是对表的操作。细粒度:是对记录的操作。如:只允许查询id为1的user的工资。Shiro一般管理的时粗粒度的权限。比如:菜单、按钮、url。一般细粒度的权限是通过业务来控制的。 3. 权限表示规则:资源:操作:实例。可以用通配符表示。 ...原创 2018-12-26 01:07:35 · 708 阅读 · 0 评论 -
shiro的散列算法(加密)
1,在身份认证过程往往会涉及加密,如果不加密那么数据信息不安全。Shiro内容实现了比较多的散列算法。如MD5、SHA等/而且提供了加盐功能。比如”123456”的md5码为: e10adc3949ba59abbe56e057f20f883e,这个MD5码很多网站可以找到相应的原密码。但是如果MD5+姓名,那么找到原密码的难道会增加。2,在自定义Realm中使用散列 /**...原创 2018-12-25 03:37:47 · 461 阅读 · 0 评论