自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (1)
  • 问答 (3)
  • 收藏
  • 关注

原创 Spring Cloud Ribbon(一):入门使用

Spring Cloud Ribbon 是基于HTTP和TCP的客户端负载均衡工具,可以轻松的将对服务的REST请求,自动转换成负载均衡的服务调用。

2022-09-13 09:35:51 214 1

原创 【问题分析】打开的文件过多

【问题分析】open too many files,打开的文件过多

2022-05-31 11:38:15 2747

原创 Canal同步MYSQL到ES

Canal同步MYSQL到ES

2022-04-20 15:46:44 1662

原创 Spring Cloud Eureka(三):Server源码

Spring Cloud Eureka(二):Server源码

2022-04-15 14:25:49 425

原创 Spring Cloud Eureka(二):Client源码

Spring Cloud Eureka(二):Client源码

2022-03-02 17:05:36 278

原创 Spring Cloud Eureka(一):入门使用

Spring Cloud 是基于 SpringBoot 的微服务框架,Spring Cloud Eureka 是 Spring Cloud 中最基本的一个组件,使用 Netflix Eureka 来实现服务注册和发现,既包含服务端也包含客户端。且均采用 JAVA 编写。

2022-02-22 20:17:37 405

原创 electron-vue+serialport实现串口通信

electron-vue+serialport实现串口通信

2022-02-13 11:25:00 5028 10

原创 Spring IOC启动过程(三):初始化Bean

Spring IOC启动过程(三)前言源码跟踪PostProcessorRegistrationDelegate#registerBeanPostProcessorsAbstractApplicationContext#finishBeanFactoryInitializationDefaultListableBeanFactory#preInstantiateSingletonsAbstractBeanFactory#getBean前言在上一篇对IOC启动过程的探究中,看完了AbstractAppli

2021-08-19 18:10:55 87

原创 Spring IOC启动过程(二)

`Spring IOC启动过程(二)前言源码跟踪AbstractApplicationContext#invokeBeanFactoryPostProcessorsConfigurationClassPostProcessor#postProcessBeanDefinitionRegistryConfigurationClassParser#parseConfigurationClassBeanDefinitionReader#loadBeanDefinitions前言在上一篇对IOC启动过程的探究中,

2021-08-17 13:48:03 55

原创 Spring IOC启动过程(一)

Spring IOC启动过程准备工作源码跟踪启动IOC容器AbstractApplicationContext#obtainFreshBeanFactoryAbstractXmlApplicationContext#loadBeanDefinitionsXmlBeanDefinitionReader#doLoadBeanDefinitions准备工作新建一个MAVEN项目spring配置文件源码跟踪启动IOC容器package com.study;import org.springfra

2021-08-13 12:02:26 196

原创 MYSQL主备搭建

MYSQL主备搭建环境准备主库配置备库配置开始同步环境准备服务器: CENTOS7数据库: MYSQL 5.7主库配置先给数据库添加一个专门用于同步的用户, 这里repl是用户名,123456是密码, 且只限于同一网段GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repl@'192.168.0.%' IDENTIFIED BY '123456';找到MYSQL的配置文件并添加以下配置。 我的是在/etc/my.cnf, 如果你

2021-08-09 18:15:31 6367 2

原创 MYSQL锁对UPDATE及INSERT的影响

MYSQL锁对UPDATE及INSERT的影响前言我们知道,MYSQL的InnoDB引擎是有行锁和表锁的。行锁,即锁住特定的记录行,对该特定行的更新操作会进行阻塞;表锁,即锁住整张表,对这张表的更新操作会阻塞;下面进行一个测试来看看,行锁和表锁会在什么情况下被使用。

2021-08-05 23:10:19 1911 3

原创 ActiveMQ安全权限设置

目录login.configusers.propertiesgroups.propertiesactivemq.xmlqueue/topicread/write/admin在使用ActiveMQ的时候,一般会对其分配用户和角色来做基本的权限验证,本博文选择自带的JAAS Plugin来完成。本文中ActiveMQ版本选择5.16.0在LINUX上下载解压完ActiveMQ之后进入到conf目录下,其中有四个文件需要特别关注:login.config - 登录配置 us.

2021-04-09 09:43:48 1177

原创 Mybatis执行流程解析

目录启动MybatisResources.getResourceAsStreamSqlSessionFactoryBuilder.buildXMLConfigBuilder.parseDefaultSqlSessionFactory.openSessionConfiguration.newExecutorDefaultSqlSession.getMapper启动Mybatis在了解mybatis的原理之前,一定得知道它是如何运行起来的,它运行的入口在哪里?回到最原始的时期

2021-03-21 22:29:42 491

原创 SpringMVC工作原理(二)

在上一篇中,一步步走到了HandleAdapter的处理,看到了关键方法RequestMappingHandleAdapter的invokeHandleMethod方法,这一篇接着往下看~invokeHandleMethod这个方法比较复杂,简单讲就是根据request中的参数,映射到对应@RequestMapping注解的方法的参数中,然后执行业务代码逻辑,最后封装ModelAndView对象返回。private ModelAndView invokeHandleMethod(HttpSer

2021-03-11 21:25:48 182

原创 SpringMVC工作原理(一)

想了解SpringMVC的工作原理,DispatchServlet无疑是最重要的研究对象。因为所有的请求都要经过它,它是接受请求的入口。WEB.XML在稍早一点的工程中,经常会出现web.xml这个文件,这个文件是web容器用来加载Servlet和Filter,使用SpringMVC时,会把DispatchServlet配置在这里,让它来接受所有请求。一般是这样配置的。 <servlet> <servlet-name>springServlet</ser

2021-03-06 14:47:54 123 2

原创 static能保证可见性吗?

static能保证可见性吗?当然不能!!!我们知道在JAVA中想要保证可见性,要么使用volatile,要么使用synchronized,从来没有听说使用static来保证可见性的。那么既然大家都知道static无法保证可见性,为什么还是有很多人和我一样会发出这样的疑问呢?我想,大概率是在学习多线程的时候发现,某些时候static似乎是保证了可见性,但是大家又都不承认它能保证可见性。那么问题就来了,static真的不能保证可见性吗?当然,事实也确实如此。空说无凭,实践是检验真理的唯一标准。我

2020-06-17 11:43:17 2230 5

原创 JAVA集合框架源码之LinkedList(二)

之前看完了LinkedList中的一些基本方法,这一篇再看看稍微复杂一点的方法。首先放一张LinkedList的继承关系图。对于List来说,使用最多的操作估计就是遍历了,遍历操作一般都是使用循环。当然在1.8之后 Iterable 接口新增了一个 forEach 方法,由于LinkedList及其父类都没有实现这个方法,所以调用 LinkedList·的forEach方法就是默认的实现,使用增强FOR循环来遍历,然后对每一个元素执行一个action操作。// 省略其他方法public in

2020-06-17 10:37:53 106

原创 JAVA集合框架源码之LinkedList

在JAVA中用的最多的集合就是ArrayList了,除了ArrayList之外呢,当然要数LinkedList了,现在咱们就来读一下LinkedList的源码。打开LinkedList类,先看一下顶部的注释。大致意思是说,这是一个使用双向链表实现 List 和 Deque 接口的实现类,可以当操作双向链表来操作它,由于是链表实现而非数组,所以对于索引的操作会从头到尾进行遍历,直到找到一个最接近的索引。可以看出和ArrayList相比,由于实现方式的不同,LinkedList更适合增删操作,ArrayLi

2020-06-16 20:06:19 93

原创 JAVA集合框架源码之ArrayList(二)

对于遍历操作,一般使用for循环就可以了,为了简便操作,从1.8开始多了一个forEach方法 public void forEach(Consumer<? super E> action) { Objects.requireNonNull(action); final int expectedModCount = modCount; @SuppressWarnings("unchecked") final E[] el

2020-05-27 16:07:35 126

原创 JAVA集合框架源码之ArrayList

ArrayList是JAVA里可以说是使用的最多的集合了,一直都是直接拿来用还没怎么研究过他的内部构造,所以一直想找个机会把他好好研究研究。一般来说,我们要使用某个对象的话,都要去new一下他。所以我们先来看他的构造方法是怎样的。 // 数组默认容量 private static final int DEFAULT_CAPACITY = 10; // 默认空数组 private static final Object[] EMPTY_ELEMENTDATA = {

2020-05-26 18:45:36 93

原创 JUC之synchronized的使用

在JAVA多线程里面,为了保证线程对某个资源的排队访问,通常会使用synchronized关键字来加锁保证。那么对synchronized不同的使用方式,也会产生不同的效果。现列举一些场景来理解synchronized关键字使用方式。首先新建一个测试类public class SynTest { // 普通方法 public void normal(String name) {...

2020-03-08 19:02:44 251

原创 JAVA设计模式之适配器模式

适配器(adpater)也称为包装器(wrapper)。适用于某种类型(A)需要使用其他类型(B)的一些功能,但由于类型的不同导致无法在接口上直接使用,那么就需要从A派生出一个类(C)把B类型作为C的属性包装到C中,对C的方法调用会转调B的方法。而C是A类型派生出来的,所以使用A的地方就可以使用C,C又调用了B,其实相当于使用了B。UML图如下说了一大堆绕来绕去,不如举个例子理解一下。...

2020-03-07 19:51:43 114

原创 JAVA设计模式之迭代器模式

迭代器模式主要作用就是给容器做遍历,顺带提供一些增删改的操作,一般不需要自己去实现,因为JAVA已经封装好了,我们可以直接查看JAVA的集合框架来理解这种模式的应用。UML图如下首先通过一张图来简要了解JAVA集合框架的继承体系。可以看到整个Collection接口的最上层还有一个接口叫Iterable,意为可迭代,源码也很简单只有一个抽象方法(默认方法隐藏)。处于最上层意味着...

2020-03-06 21:03:00 65 1

原创 JAVA设计模式之代理模式

静态代理模式在设计模式中还是用的比较少的,比较常用的是动态代理。代理模式简单理解就是,外部对象不去访问实际执行的类对象,而去访问他的代理,让代理去访问。例如,超市想要批发某种食品,超市老板不需要去到该食品的工厂商量购买,只需找到该食品的代理商,代理商会去完成这些事,而工厂只需要生产食品就好,这样就消除了超市老板和工厂之间的耦合度,只需要各自关心自己的事情就可以。UML图如下从程序的角度...

2020-03-06 14:54:09 84

原创 JAVA设计模式之观察者模式

观察者模式在实际工作中其实经常会遇到,凡是和事件相关的,基本上都与观察者模式沾边。观察者模式主要用于解决某个对象触发了一个事件,需要其他的对象来协同处理。UML图如下举个简单的例子,小孩半夜醒来开始哭,那么他的父母就会立马过来照看他,例如爸爸给他讲笑话,妈妈给他喂奶,这时候小孩就是父母的观察对象。从程序的角度来说,小孩是被观察着,父母是观察者,同时也可能有其他的观察者。首先先将观察...

2020-03-05 21:27:59 87

原创 JAVA设计模式之责任链模式

责任链模式在设计模式里边属于比较难的设计模式,主要用于对一个对象进行一系列的操作,每个操作相互独立。这一系列的操作组成了一个操作链,每个操作都有其具体的职责,即是一个责任链。UML图如下先用一个简单的例子来体验一下责任链模式,假设有个程序需要接收一个消息,但是这个消息需要进行过滤,比如HTML,JS的转义,敏感字符的替换等。定义一个消息类,只有消息这一个属性;定义一个过滤器,只有过...

2020-03-05 20:01:00 133

原创 JAVA设计模式之装饰器模式

装饰器模式主要用于对原有的类的某些方法进行增强,而不需要改动原有类,使得可以灵活的扩展。UML图如下现假设有一辆玩具车,本身可以跑,但是速度不快,我们可以给他装个马达让他跑的更快。首先,先把玩具抽象出来。玩具车这一类可以抽象为可移动的玩具,他们可以跑,有一定的速度。// 可移动的玩具public interface MovableToy { double speed()...

2020-03-05 14:40:23 100

原创 JAVA设计模式之抽象工厂模式

抽象工厂设计模式在我自身实际工作中,其实用的并不多。主要用于创建一系列的产品族,产品族包含一系列(大于等于1)的产品(对象)。将族内的产品都抽象出来作为一个个抽象产品,再将工厂要生产这些产品的行为抽象出来作为抽象工厂,具体的产品和具体的产品族工厂都去继承这些抽象出来的产品和工厂,利用多态的特性,将未来可能发生的改动降到最低。UML图如下举个例子,现假设有现代人和魔法师,他们都需要食物,...

2020-03-04 21:36:16 135

原创 JAVA设计模式之策略模式

策略模式其实在设计模式里面也是属于比较常用的设计模式,主要是为了应对将来可能发生的变化,而做出的一种灵活的编码方式。一、从Comparable接口讲起Comparable 接口位于 java.lang 包下,实现该接口的类必须实现其 compareTo接口,使得该类具备可比较的能力。public interface Comparable<T> { publ...

2020-03-04 20:05:08 120

原创 JAVA设计模式之单例模式

单例模式本身在设计模式里属于比较简单的设计模式,但又是平时用到的比较多比较重要的设计模式,关于单例模式本身也有很多种写法,每种写法也有各自的优缺点,在此一一记录下来。一、懒汉式懒汉式本身比较简单...

2020-03-03 21:38:17 57

原创 JASIG CAS学习(六): 服务端返回自定义信息

在上一篇中,CasRealm的roleAttributeName和permissionAttributeName属性,用于解析服务端传递的角色和权限,并将其赋给当前登录的用户。目前,服务端默认的是仅仅将用户名返回,不带其他的信息,现在就在服务端完成返回自定义信息这一功能。服务端返回的用户信息都存在Principal中,其中id为用户名,attributes就是一些其他额外的信息了。因此自定义的...

2019-04-04 09:48:36 1184

原创 JASIG CAS学习(五): 客户端集成SHIRO

shiro作为一个安全框架,在它的 1.2 版本开始就已经有了对 cas 的支持,所以用shiro来做客户端的安全框架对于我们的cas来说是非常方便的。准备工作做好,首先新建一个Springboot 工程添加以下依赖项。<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.o...

2019-04-03 15:41:12 627

原创 JASIG CAS学习(四): 服务端使用JDBC认证

在之前的认证中,都是以CAS默认的用户名/密码 :casuser/Mellon 来登录,这样肯定是不能满足要求的,用户的信息一般都是会存在数据库中。所以,现在就开始探索一下CAS的JDBC认证方式。关于CAS的JDBC的认证方式,具体信息可以去CAS官网上查看,依照官网上给出的几种handler及其配置进行选择,我这里选择是QueryAndEncodeDatabaseAuthe...

2019-03-31 21:53:20 743

原创 JASIG CAS学习(三): SpringBoot客户端完成单点登出

本文基于CAS 4.2.7服务端,以及Spingboot搭建的客户端完成单点登出功能。对于服务端和客户端的搭建,可以参考之前的文章,本文主要参考https://blog.csdn.net/qq_34021712/article/details/81486699 之前依赖Springboot搭建的客户端是直接使用这个依赖的 , 我刚开始以为他自动实现了单点登...

2019-03-29 11:28:29 3406

原创 JASIG CAS学习(二): 使用SpringBoot搭建客户端完成单点登录

从上一篇中,CAS 服务端已经搭建完成,并且实现了自定义的页面,现在来开发客户端。其实对于客户端的开发比较简单,只需要简单添加一个依赖即可,这里可以使用传统的Spring的方式开发,而我这里图方便直接使用SpringBoot的方式。 首先明确本次的目的 : 两个客户端接入CAS,达到只需要登录其中一个另外一个就可以直接访问。 首先做好准备工作 , 先在h...

2019-03-29 11:02:15 1838 3

原创 JASIG CAS学习(一): 服务端的搭建与开发(4.2.7版本)

最近项目中有个单点登录的需求 , 所以先研究一下JASIG CAS , 在此做个记录,主要内容仅仅包括CAS服务端的搭建。 CAS 服务端可以直接在官网上下载,打成war包丢到tomcat中就可以跑了,但是并不是我们真正能用的,所以还是需要开发属于我们自己的服务端。我采用的官网上的MAVEN Overlays(把多个项目的war包合并成一个)的方式来构建工...

2019-03-29 09:34:29 6959 1

原创 SpringBoot+MyBatis 配置多数据源 (两种方式实现)

在项目的开发中 , 有时候会涉及到多个数据库的访问 , 也就是多个数据源; 下面记录一下如何使用SpringBoot + MyBatis配置多数据源.首先使用IDEA搭建一个SpringBoot项目 , 我使用的是JDK1.8 ,SpringBoot版本为1.5.12.RELEASE , 另外添加一些起步依赖&lt;dependency&gt; &lt;groupId&gt;org...

2019-01-19 22:05:39 25063 16

原创 MyBatis使用 resultMap的association 标签实现懒加载

首先 , 做好初始化工作 ,  建立三张表 , sys_user ,sys_role ,sys_user_role , 建表语句如下CREATE TABLE `sys_user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id', `user_name` varchar(64) DEFAULT NULL COMMENT '用户...

2018-07-18 00:05:34 1108

原创 MyBatis 自动生成主键 , 返回自增主键 insert语句

     对于表的主键自动生成的 insert语句 , 在不需要返回自增主键时 , 就和普通的insert语句没有区别 , 在需要的返回的时候 , 情况稍微有点不一样 , 故在此记录一下 . 在MyBatis中 ,  有两种方式编写SQL , 一种XML方式 , 一种是注解方式 . 首先在MYSQL中新建一张表 , 建表语句如下CREATE TABLE `sys_user` ( `id` in...

2018-07-15 13:42:17 11371

jdk1.8.0_201 源码包

jdk1.8.0_201 版本的源码 ,可以在eclipse中attachsource , 用以查看源码

2019-04-16

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

TA关注的人

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