自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot技术栈搭建个人博客

前言#####最开始的憧憬个人博客这个东西在我大一下学期就想尝试自己写一个了。为什么会有这样的想法呢,那是因为身边有人搭建了一个漂亮的个人博客,那时的我感觉这个东西真是太棒了,既可以锻炼自己的技术,又拥有了一个自己的地盘,你想怎样就怎样,我真的瞬间就被搭建一个自己的个人博客的想法吸引,义无反顾。艰难的开始大二上学期开始尝试做比较大的项目,那时的我还只是有理论知识的小白,写一写小的dem...

2019-07-08 10:32:16 477 1

原创 SpringSecurity自定义登录过滤链分析

前言我用SpringSecurity用的挺多的,但是基本还是只掌握了用法,对它的认证流程其实还是比较懵逼的,借助这个机会,我重新学习了一下SpringSecurity,对它有了更深层次的理解。SpringSecurity认证流程图1 登录过滤链分析1.1 UsernamePasswordAuthenticationFilter/** * 处理提交的认证,首先调用Authenticat...

2020-01-15 19:39:06 1082

原创 Spring Security默认过滤链认识

前言最近重新学习了一下Spring Security,对整个认证流程有了一个自己的认识。但今天写的是一个前置的知识点,Spring Security启动后默认加载的一些过滤器,接着让我们来看看究竟是哪些1 启动后过滤链总览[main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain:org.springfra...

2020-01-15 15:32:35 1171

原创 ConcurrentHashMap源码解析——基于JDK1.8

ConcurrentHashMap源码解析——基于JDK1.8前言这篇博客不知道写了多久,总之就是很久,头都炸了。最开始阅读源码时确实是一脸茫然,找不到下手的地方,真是太难了。下面的都是我自己阅读时的一些理解,由于能力有限,如有错误请指出。先上一张JDK1.7的ConcurrentHashMap结构图在 JDK 1.7 版本及之前的版本中ConcurrentHashMap 为了解决 H...

2019-12-29 15:28:16 279

原创 HashSet源码解析——基于JDK1.8

前言HashSet 是一个不允许存储重复元素的集合,它的实现比较简单,只要理解了 HashMap,HashSet 就水到渠成了。当然了解HashMap可以参考我的这篇文章1 常量介绍 //使用HashMap来实现Set的相关功能 private transient HashMap<E,Object> map; // 将假value与map中的对象关联 // Dumm...

2019-12-14 16:09:37 150

原创 LinkedHashMap源码解析——基于JDK1.8

前言LinkedHashMap继承自HashMap。和HashMap不同的是,它维护一条双向链表,解决了遍历顺序和插入顺序一致的问题。并且还对访问顺序提供了相应的支持。因为LinkedHashMap的很多实现是基于HashMap实现的,所以如果要读懂LinkedHashMap还是需要先了解HashMap。可以参考我的这篇文章 /** * 指向双向链表的头结点(最老的结点) ...

2019-12-13 22:30:12 258

原创 HashMap源码解析——基于JDK1.8

前言HashMap数据结构由数组和链表(超过一定数量转换为红黑树)组成,在进行增删查等操作时,首先要定位到元素的所在表的位置,之后再从链表中定位该元素。具体找到表下标的方法是(n - 1) & hash,其中n代表表的长度。HashMap数据结构如下(确定下标用的是%取余的方式):1 常量介绍 /** * 默认容量16 * The default ini...

2019-12-12 11:47:38 141

原创 LinkedList源码解析——基于JDK1.8

1 前言1.1 常量 //链表的长度 transient int size = 0; /** * Pointer to first node.指向第一个结点 * Invariant(不变的): (first == null && last == null) || * (first.prev == null &amp...

2019-12-06 21:13:40 122

原创 ArrayList源码解析——基于JDK1.8

1 常量介绍1.1 ArrayList常量 /** * 默认初始容量 * Default initial capacity. */ private static final int DEFAULT_CAPACITY = 10; /** * 用于空实例的共享空数组实例 * Shared empty array instan...

2019-12-05 22:02:59 108

原创 Spring Boot缓存Redis&&Jackson2JsonRedisSerializer反序列化

1 需求最近博客的音乐播放器出现了问题,无法获取到音乐的数据了,我才发现原来我以前用的不是网易官方的API(o(╥﹏╥)o),真是打了我一个措手不及啊。因为音乐播放器不是我自己写的(但还好为了适配我的网站我还是看了看它的代码,改了一部分接口),不知道数据格式是什么样的,只能自己看代码探索(也是绝了),所以难度系数增加了不少。2 寻找API首先面临的问题就是找到相关的API,我的需求是能返回我...

2019-11-30 22:12:33 4083

原创 删除链表中重复的结点——Java实现

删除链表中重复的结点——Java实现1 前言刷题也刷了一段时间了,但是总是找不到写的东西,但就在今天,重新做这道JzOffer上的题,发现思路看着很简单,但是其中的细节倒是不少,错了很多次,所以想写下这道题一起学习一下。2 题目2.1 题目描述删除链表中重复的结点在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2-...

2019-11-12 15:28:50 221 1

原创 Linux定时任务,执行shell文件失败问题&&mailed 73 bytes of output but got status 0x004b#012报错解决

Linux定时任务,执行shell文件失败问题1 前言最近一直被别人攻击数据库,ε=(´ο`*)))唉。又不是什么重要数据,怎么一直逮住我不放了。实在没有什么办法了,只能把数据库做做备份,将损失降到最低吧o(╥﹏╥)o2 编写shell脚本2.1 创建shell脚本文件touch xxx.sh2.2 编辑shell脚本文件vim xxx.shMySQL备份基本命令mysqld...

2019-11-08 16:49:40 10849

转载 程序员要搞明白CDN,这篇应该够了

程序员要搞明白CDN,这篇应该够了最近在了解边缘计算,发现我们经常听说的CDN也是边缘计算里的一部分。那么说到CDN,好像只知道它中文叫做内容分发网络。那么具体CDN的原理是什么?能够为用户在浏览网站时带来什么好处呢?解决这两个问题是本文的目的。CDN概念CDN全称叫做Content Delivery Network,中文叫内容分发网络。实际上CDN这个概念是在1996年由美国麻省理工学院...

2019-11-07 13:43:33 243

原创 Java动态代理&&源码分析

Java动态代理&&源码分析要了解动态代理,肯定跳不过静态代理,下面将介绍一下静态代理1 静态代理1.1 继承假设一个系统中有一个Person接口,你需要使用这个接口来实现你自己需要的实体类Person接口public interface Person { void show();}系统中出现了一个警察,那我就定义一个警察类实现Person接口Polic...

2019-10-12 18:00:47 446

原创 Spring IOC——Java反射

Spring IOC——Java反射1 基础spring的技术核心之一是动态代理,而动态代理的核心是java反射。所以如果要学习spring框架,java反射是我们永远也绕不开的一个坎,这是基础。2 反射定义反射被视为动态语言的关键,java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法对于任意一个对象,都能够调用它的任意方法和属性这种动态获取信息以及动态调用...

2019-10-08 20:10:36 460

原创 JVM学习——解析Java虚拟机运行时数据区

JVM学习——解析Java虚拟机运行时数据区1 运行时数据区概览来一张图大概看一下JVM运行时数据区的情况,下面我将仔细的介绍各个区域2 运行时数据区2.1 程序计数器程序计数器是一块较小的内存空间,可以看作是当前线程(每个线程都有自己的程序计数器)所执行的字节码的行号指示器。字节码解释器通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础...

2019-09-28 19:40:36 133

原创 spring-framework-5.1源码编译

spring-framework-5.1源码编译1 前言最近因为需要从零开始接触了spring的源码,最开始的时候是使用IDEA反编译的源码,但是因为是反编译的跟原本的源码确实存在区别,并且还不能写注释。工欲善其事,必先利其器。毅然决然,决定下载spring的源码下来阅读,测试。2 曲折的搭建之旅因为spring5的源码是使用gradle搭建的,但是作为一个只会用maven的人来说,最开始...

2019-09-25 11:34:08 1171

原创 JVM学习——虚拟机类加载机制

JVM学习——虚拟机类加载机制1 概述虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。与那些在编译时需要进行连接工作的语言不同,在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的。2 类加载的时机2.1 类的生命周期从被虚拟机加载到内存开始,到卸载出内存为止,...

2019-09-17 20:02:36 161

原创 Java设计模式——适配器模式

Java设计模式——适配器模式1 类适配器模式1.1 类适配器模式介绍Target(目标抽象类):目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以是具体类。Adapter(适配器类):适配器可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配,适配器类是适配器模式的核心,在对象适配器中,它通过继承Target并关联一个Adaptee对象使二者产生联系。Ad...

2019-09-15 17:21:40 184

原创 MYSQL密码正确,却依然显示拒绝连接

MYSQL密码正确,却依然显示拒绝连接1 前言就是在今天,以前跑的好好的项目突然就停火了,感觉十分懵逼,第一想到的就是不会又被黑了吧(不要问为什么是又)。但是经过一番操作,不是好好的吗?这究竟是为什么呢?在本地打开项目,看了一下日志,MySQL拒绝访问?刚才我不是连上了吗?一脸懵逼+1。java.sql.SQLException: Access denied for user 'root'@...

2019-09-13 20:33:42 8460 4

原创 阿里云ECS服务器CentOS7上安装MYSQL

阿里云ECS服务器CentOS7上安装MYSQL1.确保服务器系统处于最新状态yum -y update如果显示以下内容说明已经更新完成Replaced: grub2.x86_64 1:2.02-0.64.el7.centos grub2-tools.x86_64 1:2.02-0.64.el7.centosComplete!2.重启服务器reboot3.首先检查是否...

2019-09-13 19:52:25 248

原创 Java设计模式——装饰模式(Decorator Pattern)

Java设计模式——装饰模式(Decorator Pattern)1 装饰者模式定义装饰模式是一种常见的模式,其定义如下:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰者模式相比生成的子类更加灵活。装饰者模式的通用类图:Component抽象构件Component是一个接口或者是抽象类,就是最核心的对象。ConcreteComponent具体构件ConcreteC...

2019-08-31 21:36:43 167

原创 SpringMVC接收复杂参数

SpringMVC接收复杂参数1 前言以前后端这边接收的参数都是比较简单的,直接使用@RequestParam或者@PathVariable在或者用一个对象就可以接收到了。但是最近突然遇到了前端需要传递很复杂数据的情况,以前没有想到过的问题和别人的一些操作一下就在脑海中浮现了出来,感觉这个东西还是挺有用和挺有意思的。###2 接收List<String>集合js代码 var...

2019-08-30 19:08:09 695

原创 ElasticsearchTemplate实现高亮搜索

ElasticsearchTemplate实现高亮搜索1 前言搜索关键字高亮显示已经变成搜索不可缺少的一个部分,那当然我的搜索肯定也要有这样的功能塞,这样才能够显示我的高端不是吗(ಥ_ಥ)###2 Elasticsearch高亮基础想要使用elasticsearchTemplate实现高亮搜索,肯定需要了解一下原本elasticsearch怎么高亮搜索,结果又是怎样的。搜索语句结构GE...

2019-08-27 19:23:42 2071 1

原创 SpringData整合ElasticSearch

SpringData整合ElasticSearch###1 前言很早很早以前就听说了ElasticSearch,知道了它对大量数据的强悍搜索功能,当时就想以后一定要用一下这个东西,把它加到我自己的项目中。兜兜转转终于到了使用的这天,虽说有点大材小用,但还是在我的博客项目中使用了它。###2 ElasticSearch与MYSQL类比ElasticSearchMYSQL索...

2019-08-27 15:20:19 1480

原创 Java设计模式——单例模式(Singleton Pattern)

前言单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建(单例模式的构造函数是私有的,保证不会被其他类实例化创建)。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。饿汉模式public ...

2019-07-22 16:38:59 191

原创 JAVA并发编程之volatile

前言今天在学习单例模式的时候发现一种写法使用了volatile,对于它我也只是听说过它的名字,至于怎么使用,它有什么内涵,我确实是不甚了解。经过查阅资料学习,我有了一些自己的见解。基本概念介绍一下JAVA内存模型(JMM)中的原子性、可见性、有序性原子性原子的本意是“不能被进一步分割的最小粒子”。原子性是指一个操作或者多个操作是不可中断的,要么全部执行成功要么全部执行失败。现实中就...

2019-07-22 15:02:18 116

原创 mysql模拟split函数&&实现去重

前言在java代码中实现split分割与去重实现起来不是很难,但是比较繁琐,感觉效率比较低,所以在再次遇到这个需求时,我决定使用mysql来完成这些功能。一、split函数的缺失最开始的想法是像java一样使用split函数分割字符串,再用distinct实现去重,但是很遗憾的是mysql并没有相应的split函数,那只有自己动手了呀。参考网上众多大佬的方法,最后写出符合自己需求的s...

2019-06-21 22:41:22 2057

原创 HTTPS配置--基于nginx

HTTPS配置–基于nginx前言:最近这个自己搭建的博客网站到了最后的上线调试阶段,将HTTPS加入自己的网站刻不容缓,于是就开始了征服星辰大海的旅程。一.领取阿里云免费证书登录阿里云,如果没有账号就注册一个,找到产品分类,安全,ssl证书选择免费型DV SSL购买,付费0元。购买之后会叫你补全信息,填写绑定的域名。绑定成功后会返回一些信息,将这些信息添加到你的域名解析中...

2019-06-13 20:13:17 152

原创 mysql连接查询练习题(一)

mysql连接查询练习题(一)一.数据库的三张表dept(部门表)emp(员工表)salgrade(薪水级别表)二.问题1.取得每个部门最高薪水的人员名称取得每个部门的最高薪水select deptno,max(sal) as maxsal from emp group by deptno;//每部门最高薪水连接这张表进行查询select e.en...

2019-04-03 14:51:10 3254

原创 spring boot整合mybatis使用注解得到自增主键返回值

spring boot整合mybatis获得自增主键的返回值

2019-04-02 21:36:59 5270

原创 如何骗过Spring Security——直接添加Authentication对象

如何骗过Spring Security——直接添加Authentication对象1.需求在最近的项目中,出现了这样的需求。我需要在后台使用spring security,但是android端显然不能使用像web端登录那样的处理方式,所以如何"骗过"spring security直接在它的认证流程中插入我自己的对象,这成为了我急切的问题。2.Spring Security的核心组件...

2019-02-27 21:39:01 6992 10

原创 Mybatis拼接\%作为参数

Mybatis拼接\%作为参数前言:当使用模糊查询时,如果sql语句未做%处理,当在输入框传入%号时会获得查询数据库的所有数据。这是因为%号为sql语句中的特殊字符,代表替代一个或多个字符,sql查询语句拼接成%%%,所以查出了所有的数据。我们很容易想到的解决方案就是使用转义的\来转义%。但你以为这样一切就结束了吗?那还是你太天真了。一般我们想将字符串进行替换,都会想到String对象的r...

2018-12-15 20:18:11 1672 1

原创 Docker镜像下载加速的两种方法

Docker镜像下载加速前言使用docker的程序猿们都会面临着这么一个问题,因为docker官方的镜像都在国外的网站上托管着,而且docker默认拉取镜像时会从国外仓库拉取,所以在使用docker拉取镜像时就会出现连接不上或下载速度龟速的问题,这真的会让人很抓狂。所以如何让docker镜像拉取速度变得更快是每个docker使用者由衷的愿望。一.使用阿里云的镜像加速器用你的淘宝或支...

2018-12-03 20:21:36 4184

原创 Docker下安装Redis镜像&&使用自己的redis.conf文件&&远程连接Redis

Docker下安装Redis镜像&amp;&amp;使用自己的redis.conf文件&amp;&amp;远程连接Redis1.pull下redis的镜像$docker pull redis上述命令等价于:$docker pull redis:latest有版本需求的可以自己在后面添加相应的标签2.根据自己的redis.conf生成redis镜像的容器 $docker r...

2018-11-29 15:06:57 10424 3

原创 Nginx在Linux服务器上安装的那些坑

Nginx在Linux服务器上安装的那些坑1.使用wget在linux服务器上下载在nginx官网上找到稳定版的下载链接。接着使用wget下载。2.在下载的文件夹下解压tar zxvf nginx-1.14.1.tar.gz3.进入解压目录运行configure检测系统配置其中- -prefix=usr/local/nginx指的是安装路径,如果不配置该选项,则安装...

2018-11-24 21:22:54 531

原创 canvas的雨滴特效

canvas的雨滴特效var canvas = document.querySelector(".rain");//获得类(获得id用#rain) ctx = canvas.getContext("2d");//拿到2d画笔var aRain = [];var wh = canvas.height = window.innerHeight;//不用css装饰来改变画布的大小,不能...

2018-11-07 13:55:29 1497

空空如也

空空如也

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

TA关注的人

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